// @bun var __create = Object.create; var __getProtoOf = Object.getPrototypeOf; var __defProp = Object.defineProperty; var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __hasOwnProp = Object.prototype.hasOwnProperty; var __reExport = (target, mod, secondTarget) => { for (let key of __getOwnPropNames(mod)) if (!__hasOwnProp.call(target, key) && key !== "default") __defProp(target, key, { get: () => mod[key], enumerable: true }); if (secondTarget) { for (let key of __getOwnPropNames(mod)) if (!__hasOwnProp.call(secondTarget, key) && key !== "default") __defProp(secondTarget, key, { get: () => mod[key], enumerable: true }); return secondTarget; } }; var __toESM = (mod, isNodeMode, target) => { target = mod != null ? __create(__getProtoOf(mod)) : {}; const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target; for (let key of __getOwnPropNames(mod)) if (!__hasOwnProp.call(to, key)) __defProp(to, key, { get: () => mod[key], enumerable: true }); return to; }; var __moduleCache = /* @__PURE__ */ new WeakMap; var __toCommonJS = (from) => { var entry = __moduleCache.get(from), desc; if (entry) return entry; entry = __defProp({}, "__esModule", { value: true }); if (from && typeof from === "object" || typeof from === "function") __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable })); __moduleCache.set(from, entry); return entry; }; var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports); var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res); // node_modules/@discordjs/collection/dist/index.js var require_dist = __commonJS((exports, module) => { var __defProp2 = Object.defineProperty; var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; var __getOwnPropNames2 = Object.getOwnPropertyNames; var __hasOwnProp2 = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp2(target, "name", { value, configurable: true }); var __export = (target, all) => { for (var name in all) __defProp2(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 __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 __toCommonJS2 = (mod) => __copyProps(__defProp2({}, "__esModule", { value: true }), mod); var src_exports = {}; __export(src_exports, { Collection: () => Collection, version: () => version }); module.exports = __toCommonJS2(src_exports); var Collection = class _Collection extends Map { static { __name(this, "Collection"); } ensure(key, defaultValueGenerator) { if (this.has(key)) return this.get(key); if (typeof defaultValueGenerator !== "function") throw new TypeError(`${defaultValueGenerator} is not a function`); const defaultValue = defaultValueGenerator(key, this); this.set(key, defaultValue); return defaultValue; } hasAll(...keys) { return keys.every((key) => super.has(key)); } hasAny(...keys) { return keys.some((key) => super.has(key)); } first(amount) { if (amount === undefined) return this.values().next().value; if (amount < 0) return this.last(amount * -1); amount = Math.min(this.size, amount); const iter = this.values(); return Array.from({ length: amount }, () => iter.next().value); } firstKey(amount) { if (amount === undefined) return this.keys().next().value; if (amount < 0) return this.lastKey(amount * -1); amount = Math.min(this.size, amount); const iter = this.keys(); return Array.from({ length: amount }, () => iter.next().value); } last(amount) { const arr = [...this.values()]; if (amount === undefined) return arr[arr.length - 1]; if (amount < 0) return this.first(amount * -1); if (!amount) return []; return arr.slice(-amount); } lastKey(amount) { const arr = [...this.keys()]; if (amount === undefined) return arr[arr.length - 1]; if (amount < 0) return this.firstKey(amount * -1); if (!amount) return []; return arr.slice(-amount); } at(index) { index = Math.floor(index); const arr = [...this.values()]; return arr.at(index); } keyAt(index) { index = Math.floor(index); const arr = [...this.keys()]; return arr.at(index); } random(amount) { const arr = [...this.values()]; if (amount === undefined) return arr[Math.floor(Math.random() * arr.length)]; if (!arr.length || !amount) return []; return Array.from({ length: Math.min(amount, arr.length) }, () => arr.splice(Math.floor(Math.random() * arr.length), 1)[0]); } randomKey(amount) { const arr = [...this.keys()]; if (amount === undefined) return arr[Math.floor(Math.random() * arr.length)]; if (!arr.length || !amount) return []; return Array.from({ length: Math.min(amount, arr.length) }, () => arr.splice(Math.floor(Math.random() * arr.length), 1)[0]); } reverse() { const entries = [...this.entries()].reverse(); this.clear(); for (const [key, value] of entries) this.set(key, value); return this; } find(fn, thisArg) { if (typeof fn !== "function") throw new TypeError(`${fn} is not a function`); if (thisArg !== undefined) fn = fn.bind(thisArg); for (const [key, val] of this) { if (fn(val, key, this)) return val; } return; } findKey(fn, thisArg) { if (typeof fn !== "function") throw new TypeError(`${fn} is not a function`); if (thisArg !== undefined) fn = fn.bind(thisArg); for (const [key, val] of this) { if (fn(val, key, this)) return key; } return; } findLast(fn, thisArg) { if (typeof fn !== "function") throw new TypeError(`${fn} is not a function`); if (thisArg !== undefined) fn = fn.bind(thisArg); const entries = [...this.entries()]; for (let index = entries.length - 1;index >= 0; index--) { const val = entries[index][1]; const key = entries[index][0]; if (fn(val, key, this)) return val; } return; } findLastKey(fn, thisArg) { if (typeof fn !== "function") throw new TypeError(`${fn} is not a function`); if (thisArg !== undefined) fn = fn.bind(thisArg); const entries = [...this.entries()]; for (let index = entries.length - 1;index >= 0; index--) { const key = entries[index][0]; const val = entries[index][1]; if (fn(val, key, this)) return key; } return; } sweep(fn, thisArg) { if (typeof fn !== "function") throw new TypeError(`${fn} is not a function`); if (thisArg !== undefined) fn = fn.bind(thisArg); const previousSize = this.size; for (const [key, val] of this) { if (fn(val, key, this)) this.delete(key); } return previousSize - this.size; } filter(fn, thisArg) { if (typeof fn !== "function") throw new TypeError(`${fn} is not a function`); if (thisArg !== undefined) fn = fn.bind(thisArg); const results = new this.constructor[Symbol.species]; for (const [key, val] of this) { if (fn(val, key, this)) results.set(key, val); } return results; } partition(fn, thisArg) { if (typeof fn !== "function") throw new TypeError(`${fn} is not a function`); if (thisArg !== undefined) fn = fn.bind(thisArg); const results = [ new this.constructor[Symbol.species], new this.constructor[Symbol.species] ]; for (const [key, val] of this) { if (fn(val, key, this)) { results[0].set(key, val); } else { results[1].set(key, val); } } return results; } flatMap(fn, thisArg) { const collections = this.map(fn, thisArg); return new this.constructor[Symbol.species]().concat(...collections); } map(fn, thisArg) { if (typeof fn !== "function") throw new TypeError(`${fn} is not a function`); if (thisArg !== undefined) fn = fn.bind(thisArg); const iter = this.entries(); return Array.from({ length: this.size }, () => { const [key, value] = iter.next().value; return fn(value, key, this); }); } mapValues(fn, thisArg) { if (typeof fn !== "function") throw new TypeError(`${fn} is not a function`); if (thisArg !== undefined) fn = fn.bind(thisArg); const coll = new this.constructor[Symbol.species]; for (const [key, val] of this) coll.set(key, fn(val, key, this)); return coll; } some(fn, thisArg) { if (typeof fn !== "function") throw new TypeError(`${fn} is not a function`); if (thisArg !== undefined) fn = fn.bind(thisArg); for (const [key, val] of this) { if (fn(val, key, this)) return true; } return false; } every(fn, thisArg) { if (typeof fn !== "function") throw new TypeError(`${fn} is not a function`); if (thisArg !== undefined) fn = fn.bind(thisArg); for (const [key, val] of this) { if (!fn(val, key, this)) return false; } return true; } reduce(fn, initialValue) { if (typeof fn !== "function") throw new TypeError(`${fn} is not a function`); let accumulator; const iterator = this.entries(); if (initialValue === undefined) { if (this.size === 0) throw new TypeError("Reduce of empty collection with no initial value"); accumulator = iterator.next().value[1]; } else { accumulator = initialValue; } for (const [key, value] of iterator) { accumulator = fn(accumulator, value, key, this); } return accumulator; } reduceRight(fn, initialValue) { if (typeof fn !== "function") throw new TypeError(`${fn} is not a function`); const entries = [...this.entries()]; let accumulator; let index; if (initialValue === undefined) { if (entries.length === 0) throw new TypeError("Reduce of empty collection with no initial value"); accumulator = entries[entries.length - 1][1]; index = entries.length - 1; } else { accumulator = initialValue; index = entries.length; } while (--index >= 0) { const key = entries[index][0]; const val = entries[index][1]; accumulator = fn(accumulator, val, key, this); } return accumulator; } each(fn, thisArg) { if (typeof fn !== "function") throw new TypeError(`${fn} is not a function`); if (thisArg !== undefined) fn = fn.bind(thisArg); for (const [key, value] of this) { fn(value, key, this); } return this; } tap(fn, thisArg) { if (typeof fn !== "function") throw new TypeError(`${fn} is not a function`); if (thisArg !== undefined) fn = fn.bind(thisArg); fn(this); return this; } clone() { return new this.constructor[Symbol.species](this); } concat(...collections) { const newColl = this.clone(); for (const coll of collections) { for (const [key, val] of coll) newColl.set(key, val); } return newColl; } equals(collection) { if (!collection) return false; if (this === collection) return true; if (this.size !== collection.size) return false; for (const [key, value] of this) { if (!collection.has(key) || value !== collection.get(key)) { return false; } } return true; } sort(compareFunction = _Collection.defaultSort) { const entries = [...this.entries()]; entries.sort((a, b) => compareFunction(a[1], b[1], a[0], b[0])); super.clear(); for (const [key, value] of entries) { super.set(key, value); } return this; } intersection(other) { const coll = new this.constructor[Symbol.species]; for (const [key, value] of this) { if (other.has(key)) coll.set(key, value); } return coll; } union(other) { const coll = new this.constructor[Symbol.species](this); for (const [key, value] of other) { if (!coll.has(key)) coll.set(key, value); } return coll; } difference(other) { const coll = new this.constructor[Symbol.species]; for (const [key, value] of this) { if (!other.has(key)) coll.set(key, value); } return coll; } symmetricDifference(other) { const coll = new this.constructor[Symbol.species]; for (const [key, value] of this) { if (!other.has(key)) coll.set(key, value); } for (const [key, value] of other) { if (!this.has(key)) coll.set(key, value); } return coll; } merge(other, whenInSelf, whenInOther, whenInBoth) { const coll = new this.constructor[Symbol.species]; const keys = /* @__PURE__ */ new Set([...this.keys(), ...other.keys()]); for (const key of keys) { const hasInSelf = this.has(key); const hasInOther = other.has(key); if (hasInSelf && hasInOther) { const result = whenInBoth(this.get(key), other.get(key), key); if (result.keep) coll.set(key, result.value); } else if (hasInSelf) { const result = whenInSelf(this.get(key), key); if (result.keep) coll.set(key, result.value); } else if (hasInOther) { const result = whenInOther(other.get(key), key); if (result.keep) coll.set(key, result.value); } } return coll; } toReversed() { return new this.constructor[Symbol.species](this).reverse(); } toSorted(compareFunction = _Collection.defaultSort) { return new this.constructor[Symbol.species](this).sort((av, bv, ak, bk) => compareFunction(av, bv, ak, bk)); } toJSON() { return [...this.entries()]; } static defaultSort(firstValue, secondValue) { return Number(firstValue > secondValue) || Number(firstValue === secondValue) - 1; } static combineEntries(entries, combine) { const coll = new _Collection; for (const [key, value] of entries) { if (coll.has(key)) { coll.set(key, combine(coll.get(key), value, key)); } else { coll.set(key, value); } } return coll; } }; var version = "2.1.1"; }); // node_modules/fetch-cookie/node_modules/tough-cookie/node_modules/tldts/dist/cjs/index.js var require_cjs = __commonJS((exports) => { function shareSameDomainSuffix(hostname, vhost) { if (hostname.endsWith(vhost)) { return hostname.length === vhost.length || hostname[hostname.length - vhost.length - 1] === "."; } return false; } function extractDomainWithSuffix(hostname, publicSuffix) { const publicSuffixIndex = hostname.length - publicSuffix.length - 2; const lastDotBeforeSuffixIndex = hostname.lastIndexOf(".", publicSuffixIndex); if (lastDotBeforeSuffixIndex === -1) { return hostname; } return hostname.slice(lastDotBeforeSuffixIndex + 1); } function getDomain$1(suffix, hostname, options) { if (options.validHosts !== null) { const validHosts = options.validHosts; for (const vhost of validHosts) { if (shareSameDomainSuffix(hostname, vhost)) { return vhost; } } } let numberOfLeadingDots = 0; if (hostname.startsWith(".")) { while (numberOfLeadingDots < hostname.length && hostname[numberOfLeadingDots] === ".") { numberOfLeadingDots += 1; } } if (suffix.length === hostname.length - numberOfLeadingDots) { return null; } return extractDomainWithSuffix(hostname, suffix); } function getDomainWithoutSuffix$1(domain, suffix) { return domain.slice(0, -suffix.length - 1); } function extractHostname(url, urlIsValidHostname) { let start = 0; let end = url.length; let hasUpper = false; if (!urlIsValidHostname) { if (url.startsWith("data:")) { return null; } while (start < url.length && url.charCodeAt(start) <= 32) { start += 1; } while (end > start + 1 && url.charCodeAt(end - 1) <= 32) { end -= 1; } if (url.charCodeAt(start) === 47 && url.charCodeAt(start + 1) === 47) { start += 2; } else { const indexOfProtocol = url.indexOf(":/", start); if (indexOfProtocol !== -1) { const protocolSize = indexOfProtocol - start; const c0 = url.charCodeAt(start); const c1 = url.charCodeAt(start + 1); const c2 = url.charCodeAt(start + 2); const c3 = url.charCodeAt(start + 3); const c4 = url.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 = url.charCodeAt(i) | 32; if (!(lowerCaseCode >= 97 && lowerCaseCode <= 122 || lowerCaseCode >= 48 && lowerCaseCode <= 57 || lowerCaseCode === 46 || lowerCaseCode === 45 || lowerCaseCode === 43)) { return null; } } } start = indexOfProtocol + 2; while (url.charCodeAt(start) === 47) { start += 1; } } } let indexOfIdentifier = -1; let indexOfClosingBracket = -1; let indexOfPort = -1; for (let i = start;i < end; i += 1) { const code = url.charCodeAt(i); if (code === 35 || code === 47 || code === 63) { end = i; break; } else if (code === 64) { indexOfIdentifier = i; } else if (code === 93) { indexOfClosingBracket = i; } else if (code === 58) { indexOfPort = i; } else if (code >= 65 && code <= 90) { hasUpper = true; } } if (indexOfIdentifier !== -1 && indexOfIdentifier > start && indexOfIdentifier < end) { start = indexOfIdentifier + 1; } if (url.charCodeAt(start) === 91) { if (indexOfClosingBracket !== -1) { return url.slice(start + 1, indexOfClosingBracket).toLowerCase(); } return null; } else if (indexOfPort !== -1 && indexOfPort > start && indexOfPort < end) { end = indexOfPort; } } while (end > start + 1 && url.charCodeAt(end - 1) === 46) { end -= 1; } const hostname = start !== 0 || end !== url.length ? url.slice(start, end) : url; if (hasUpper) { return hostname.toLowerCase(); } return hostname; } function isProbablyIpv4(hostname) { if (hostname.length < 7) { return false; } if (hostname.length > 15) { return false; } let numberOfDots = 0; for (let i = 0;i < hostname.length; i += 1) { const code = hostname.charCodeAt(i); if (code === 46) { numberOfDots += 1; } else if (code < 48 || code > 57) { return false; } } return numberOfDots === 3 && hostname.charCodeAt(0) !== 46 && hostname.charCodeAt(hostname.length - 1) !== 46; } function isProbablyIpv6(hostname) { if (hostname.length < 3) { return false; } let start = hostname.startsWith("[") ? 1 : 0; let end = hostname.length; if (hostname[end - 1] === "]") { end -= 1; } if (end - start > 39) { return false; } let hasColon = false; for (;start < end; start += 1) { const code = hostname.charCodeAt(start); if (code === 58) { hasColon = true; } else if (!(code >= 48 && code <= 57 || code >= 97 && code <= 102 || code >= 65 && code <= 90)) { return false; } } return hasColon; } function isIp(hostname) { return isProbablyIpv6(hostname) || isProbablyIpv4(hostname); } function isValidAscii(code) { return code >= 97 && code <= 122 || code >= 48 && code <= 57 || code > 127; } function isValidHostname(hostname) { if (hostname.length > 255) { return false; } if (hostname.length === 0) { return false; } if (!isValidAscii(hostname.charCodeAt(0)) && hostname.charCodeAt(0) !== 46 && hostname.charCodeAt(0) !== 95) { return false; } let lastDotIndex = -1; let lastCharCode = -1; const len = hostname.length; for (let i = 0;i < len; i += 1) { const code = hostname.charCodeAt(i); if (code === 46) { if (i - lastDotIndex > 64 || lastCharCode === 46 || lastCharCode === 45 || lastCharCode === 95) { return false; } lastDotIndex = i; } else if (!(isValidAscii(code) || code === 45 || code === 95)) { return false; } lastCharCode = code; } return len - lastDotIndex - 1 <= 63 && 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 }; } function setDefaults(options) { if (options === undefined) { return DEFAULT_OPTIONS; } return setDefaultsImpl(options); } function getSubdomain$1(hostname, domain) { if (domain.length === hostname.length) { return ""; } return hostname.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(url, step, suffixLookup2, partialOptions, result) { const options = setDefaults(partialOptions); if (typeof url !== "string") { return result; } if (!options.extractHostname) { result.hostname = url; } else if (options.mixedInputs) { result.hostname = extractHostname(url, isValidHostname(url)); } else { result.hostname = extractHostname(url, false); } if (options.detectIp && result.hostname !== null) { result.isIp = isIp(result.hostname); if (result.isIp) { return result; } } if (options.validateHostname && options.extractHostname && result.hostname !== null && !isValidHostname(result.hostname)) { result.hostname = null; return result; } if (step === 0 || 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(hostname, options, out) { if (!options.allowPrivateDomains && hostname.length > 3) { const last = hostname.length - 1; const c3 = hostname.charCodeAt(last); const c2 = hostname.charCodeAt(last - 1); const c1 = hostname.charCodeAt(last - 2); const c0 = hostname.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; } function lookupInTrie(parts, trie, index, allowedMask) { let result = null; let node = trie; while (node !== undefined) { if ((node[0] & allowedMask) !== 0) { result = { index: index + 1, isIcann: (node[0] & 1) !== 0, isPrivate: (node[0] & 2) !== 0 }; } 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(hostname, options, out) { var _a; if (fastPathLookup(hostname, options, out)) { return; } const hostnameParts = hostname.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 !== undefined ? _a : null; } function parse(url, options = {}) { return parseImpl(url, 5, suffixLookup, options, getEmptyResult()); } function getHostname(url, options = {}) { resetResult(RESULT); return parseImpl(url, 0, suffixLookup, options, RESULT).hostname; } function getPublicSuffix(url, options = {}) { resetResult(RESULT); return parseImpl(url, 2, suffixLookup, options, RESULT).publicSuffix; } function getDomain(url, options = {}) { resetResult(RESULT); return parseImpl(url, 3, suffixLookup, options, RESULT).domain; } function getSubdomain(url, options = {}) { resetResult(RESULT); return parseImpl(url, 4, suffixLookup, options, RESULT).subdomain; } function getDomainWithoutSuffix(url, options = {}) { resetResult(RESULT); return parseImpl(url, 5, suffixLookup, options, RESULT).domainWithoutSuffix; } var DEFAULT_OPTIONS = setDefaultsImpl({}); 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, { com: _2, edu: _2, gov: _2, net: _2, org: _2 }], _5 = [1, { com: _2, edu: _2, gov: _2, mil: _2, net: _2, org: _2 }], _6 = [0, { "*": _3 }], _7 = [2, { s: _6 }], _8 = [0, { relay: _3 }], _9 = [2, { id: _3 }], _10 = [1, { gov: _2 }], _11 = [0, { airflow: _6, "lambda-url": _3, "transfer-webapp": _3 }], _12 = [0, { airflow: _6, "transfer-webapp": _3 }], _13 = [0, { "transfer-webapp": _3 }], _14 = [0, { "transfer-webapp": _3, "transfer-webapp-fips": _3 }], _15 = [0, { notebook: _3, studio: _3 }], _16 = [0, { labeling: _3, notebook: _3, studio: _3 }], _17 = [0, { notebook: _3 }], _18 = [0, { labeling: _3, notebook: _3, "notebook-fips": _3, studio: _3 }], _19 = [0, { notebook: _3, "notebook-fips": _3, studio: _3, "studio-fips": _3 }], _20 = [0, { shop: _3 }], _21 = [0, { "*": _2 }], _22 = [1, { co: _3 }], _23 = [0, { objects: _3 }], _24 = [2, { "eu-west-1": _3, "us-east-1": _3 }], _25 = [2, { nodes: _3 }], _26 = [0, { my: _3 }], _27 = [0, { s3: _3, "s3-accesspoint": _3, "s3-website": _3 }], _28 = [0, { s3: _3, "s3-accesspoint": _3 }], _29 = [0, { direct: _3 }], _30 = [0, { "webview-assets": _3 }], _31 = [0, { vfs: _3, "webview-assets": _3 }], _32 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, dualstack: _27, s3: _3, "s3-accesspoint": _3, "s3-object-lambda": _3, "s3-website": _3, "aws-cloud9": _30, cloud9: _31 }], _33 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, dualstack: _28, s3: _3, "s3-accesspoint": _3, "s3-object-lambda": _3, "s3-website": _3, "aws-cloud9": _30, cloud9: _31 }], _34 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, dualstack: _27, s3: _3, "s3-accesspoint": _3, "s3-object-lambda": _3, "s3-website": _3, "analytics-gateway": _3, "aws-cloud9": _30, cloud9: _31 }], _35 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, dualstack: _27, s3: _3, "s3-accesspoint": _3, "s3-object-lambda": _3, "s3-website": _3 }], _36 = [0, { s3: _3, "s3-accesspoint": _3, "s3-accesspoint-fips": _3, "s3-fips": _3, "s3-website": _3 }], _37 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, dualstack: _36, s3: _3, "s3-accesspoint": _3, "s3-accesspoint-fips": _3, "s3-fips": _3, "s3-object-lambda": _3, "s3-website": _3, "aws-cloud9": _30, cloud9: _31 }], _38 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, dualstack: _36, s3: _3, "s3-accesspoint": _3, "s3-accesspoint-fips": _3, "s3-fips": _3, "s3-object-lambda": _3, "s3-website": _3 }], _39 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, dualstack: _36, 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": _30, cloud9: _31 }], _40 = [0, { auth: _3 }], _41 = [0, { auth: _3, "auth-fips": _3 }], _42 = [0, { "auth-fips": _3 }], _43 = [0, { apps: _3 }], _44 = [0, { paas: _3 }], _45 = [2, { eu: _3 }], _46 = [0, { app: _3 }], _47 = [0, { site: _3 }], _48 = [1, { com: _2, edu: _2, net: _2, org: _2 }], _49 = [0, { j: _3 }], _50 = [0, { dyn: _3 }], _51 = [2, { web: _3 }], _52 = [1, { co: _2, com: _2, edu: _2, gov: _2, net: _2, org: _2 }], _53 = [0, { p: _3 }], _54 = [0, { user: _3 }], _55 = [1, { ms: _3 }], _56 = [0, { cdn: _3 }], _57 = [2, { raw: _6 }], _58 = [0, { cust: _3, reservd: _3 }], _59 = [0, { cust: _3 }], _60 = [0, { s3: _3 }], _61 = [1, { biz: _2, com: _2, edu: _2, gov: _2, info: _2, net: _2, org: _2 }], _62 = [0, { ipfs: _3 }], _63 = [1, { framer: _3 }], _64 = [0, { forgot: _3 }], _65 = [0, { blob: _3, file: _3, web: _3 }], _66 = [0, { core: _65, servicebus: _3 }], _67 = [1, { gs: _2 }], _68 = [0, { nes: _2 }], _69 = [1, { k12: _2, cc: _2, lib: _2 }], _70 = [1, { cc: _2 }], _71 = [1, { cc: _2, lib: _2 }]; const rules2 = [0, { ac: [1, { com: _2, edu: _2, gov: _2, mil: _2, net: _2, org: _2, drr: _3, feedback: _3, forms: _3 }], ad: _2, ae: [1, { ac: _2, co: _2, gov: _2, mil: _2, net: _2, org: _2, sch: _2 }], 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, { co: _2, com: _2, net: _2, nom: _2, org: _2, obj: _3 }], ai: [1, { com: _2, net: _2, off: _2, org: _2, uwu: _3, framer: _3, kiloapps: _3 }], al: _5, am: [1, { co: _2, com: _2, commune: _2, net: _2, org: _2, radio: _3 }], ao: [1, { co: _2, ed: _2, edu: _2, gov: _2, gv: _2, it: _2, og: _2, org: _2, pb: _2 }], aq: _2, ar: [1, { bet: _2, com: _2, coop: _2, edu: _2, gob: _2, gov: _2, int: _2, mil: _2, musica: _2, mutual: _2, net: _2, org: _2, seg: _2, senasa: _2, tur: _2 }], arpa: [1, { e164: _2, home: _2, "in-addr": _2, ip6: _2, iris: _2, uri: _2, urn: _2 }], as: _10, asia: [1, { cloudns: _3, daemon: _3, dix: _3 }], at: [1, { "4": _3, ac: [1, { sth: _2 }], co: _2, gv: _2, or: _2, funkfeuer: [0, { wien: _3 }], futurecms: [0, { "*": _3, ex: _6, in: _6 }], futurehosting: _3, futuremailing: _3, ortsinfo: [0, { ex: _6, kunden: _6 }], biz: _3, info: _3, "123webseite": _3, priv: _3, my: _3, myspreadshop: _3, "12hp": _3, "2ix": _3, "4lima": _3, "lima-city": _3 }], au: [1, { asn: _2, com: [1, { cloudlets: [0, { mel: _3 }], myspreadshop: _3 }], edu: [1, { act: _2, catholic: _2, nsw: _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 }], id: _2, net: _2, org: _2, conf: _2, oz: _2, act: _2, nsw: _2, nt: _2, qld: _2, sa: _2, tas: _2, vic: _2, wa: _2, hrsn: [0, { vps: _3 }] }], aw: [1, { com: _2 }], ax: _2, az: [1, { biz: _2, co: _2, com: _2, edu: _2, gov: _2, info: _2, int: _2, mil: _2, name: _2, net: _2, org: _2, pp: _2, pro: _2 }], ba: [1, { com: _2, edu: _2, gov: _2, mil: _2, net: _2, org: _2, brendly: _20, 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: [1, { ac: _2, ai: _2, co: _2, com: _2, edu: _2, gov: _2, id: _2, info: _2, it: _2, mil: _2, net: _2, org: _2, sch: _2, tv: _2 }], be: [1, { ac: _2, cloudns: _3, webhosting: _3, interhostsolutions: [0, { cloud: _3 }], kuleuven: [0, { ezproxy: _3 }], my: _3, "123website": _3, myspreadshop: _3, transurl: _6 }], bf: _10, 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, barsy: _3 }], bh: _4, bi: [1, { co: _2, com: _2, edu: _2, or: _2, org: _2 }], biz: [1, { activetrail: _3, "cloud-ip": _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, restaurant: _2, resto: _2, tourism: _2, univ: _2 }], 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, mil: _2, net: _2, org: _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, plurinacional: _2, politica: _2, profesional: _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, api: _2, app: _2, arq: _2, art: _2, ato: _2, b: _2, barueri: _2, belem: _2, bet: _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, { 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, ia: _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 }], leilao: _2, 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: _21, 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, social: _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, xyz: _2, zlg: _2, tche: _3 }], bs: [1, { com: _2, edu: _2, gov: _2, net: _2, org: _2, we: _3 }], bt: _4, bv: _2, bw: [1, { ac: _2, co: _2, gov: _2, net: _2, org: _2 }], by: [1, { gov: _2, mil: _2, com: _2, of: _2, mediatech: _3 }], bz: [1, { co: _2, com: _2, edu: _2, gov: _2, net: _2, org: _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: _6, co: _3, "no-ip": _3, onid: _3, myspreadshop: _3, box: _3 }], cat: _2, cc: [1, { cleverapps: _3, "cloud-ip": _3, cloudns: _3, ccwu: _3, ftpaccess: _3, "game-server": _3, myphotos: _3, scrapping: _3, twmail: _3, csx: _3, fantasyleague: _3, spawn: [0, { instances: _3 }], ec: _3, eu: _3, gu: _3, uk: _3, us: _3 }], cd: [1, { gov: _2, cc: _3 }], cf: _2, cg: _2, ch: [1, { square7: _3, cloudns: _3, cloudscale: [0, { cust: _3, lpg: _23, rma: _23 }], objectstorage: [0, { lpg: _3, rma: _3 }], flow: [0, { ae: [0, { alp1: _3 }], appengine: _3 }], "linkyard-cloud": _3, gotdns: _3, dnsking: _3, "123website": _3, myspreadshop: _3, firenet: [0, { "*": _3, svc: _6 }], "12hp": _3, "2ix": _3, "4lima": _3, "lima-city": _3 }], ci: [1, { ac: _2, "xn--aroport-bya": _2, "a\xE9roport": _2, asso: _2, co: _2, com: _2, ed: _2, edu: _2, go: _2, gouv: _2, int: _2, net: _2, or: _2, org: _2, us: _3 }], ck: _21, cl: [1, { co: _2, gob: _2, gov: _2, mil: _2, cloudns: _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, rds: _6, dualstack: _27, s3: _3, "s3-accesspoint": _3, "s3-deprecated": _3, "s3-object-lambda": _3, "s3-website": _3 }], "cn-northwest-1": [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, rds: _6, dualstack: _28, s3: _3, "s3-accesspoint": _3, "s3-object-lambda": _3, "s3-website": _3 }], compute: _6, airflow: [0, { "cn-north-1": _6, "cn-northwest-1": _6 }], eb: [0, { "cn-north-1": _3, "cn-northwest-1": _3 }], elb: _6 }], amazonwebservices: [0, { on: [0, { "cn-north-1": _12, "cn-northwest-1": _12 }] }], sagemaker: [0, { "cn-north-1": _15, "cn-northwest-1": _15 }] }], edu: _2, gov: _2, mil: _2, net: _2, org: _2, "xn--55qx5d": _2, "\u516C\u53F8": _2, "xn--od0alg": _2, "\u7DB2\u7D61": _2, "xn--io0a7i": _2, "\u7F51\u7EDC": _2, ah: _2, bj: _2, cq: _2, fj: _2, gd: _2, gs: _2, gx: _2, gz: _2, ha: _2, hb: _2, he: _2, hi: _2, hk: _2, hl: _2, hn: _2, jl: _2, js: _2, jx: _2, ln: _2, mo: _2, nm: _2, nx: _2, qh: _2, sc: _2, sd: _2, sh: [1, { as: _3 }], sn: _2, sx: _2, tj: _2, tw: _2, xj: _2, xz: _2, yn: _2, zj: _2, "canva-apps": _3, canvasite: _26, myqnapcloud: _3, quickconnect: _29 }], co: [1, { com: _2, edu: _2, gov: _2, mil: _2, net: _2, nom: _2, org: _2, carrd: _3, crd: _3, otap: _6, hidns: _3, leadpages: _3, lpages: _3, mypi: _3, xmit: _6, rdpa: [0, { clusters: _6, srvrless: _6 }], firewalledreplit: _9, repl: _9, supabase: [2, { realtime: _3, storage: _3 }], umso: _3 }], com: [1, { a2hosted: _3, cpserver: _3, adobeaemcloud: [2, { dev: _6 }], africa: _3, auiusercontent: _6, aivencloud: _3, alibabacloudcs: _3, kasserver: _3, amazonaws: [0, { "af-south-1": _32, "ap-east-1": _33, "ap-northeast-1": _34, "ap-northeast-2": _34, "ap-northeast-3": _32, "ap-south-1": _34, "ap-south-2": _35, "ap-southeast-1": _34, "ap-southeast-2": _34, "ap-southeast-3": _35, "ap-southeast-4": _35, "ap-southeast-5": [0, { "execute-api": _3, dualstack: _27, s3: _3, "s3-accesspoint": _3, "s3-deprecated": _3, "s3-object-lambda": _3, "s3-website": _3 }], "ca-central-1": _37, "ca-west-1": _38, "eu-central-1": _34, "eu-central-2": _35, "eu-north-1": _33, "eu-south-1": _32, "eu-south-2": _35, "eu-west-1": [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, dualstack: _27, s3: _3, "s3-accesspoint": _3, "s3-deprecated": _3, "s3-object-lambda": _3, "s3-website": _3, "analytics-gateway": _3, "aws-cloud9": _30, cloud9: _31 }], "eu-west-2": _33, "eu-west-3": _32, "il-central-1": [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, dualstack: _27, s3: _3, "s3-accesspoint": _3, "s3-object-lambda": _3, "s3-website": _3, "aws-cloud9": _30, cloud9: [0, { vfs: _3 }] }], "me-central-1": _35, "me-south-1": _33, "sa-east-1": _32, "us-east-1": [2, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, dualstack: _36, 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": _30, cloud9: _31 }], "us-east-2": _39, "us-gov-east-1": _38, "us-gov-west-1": _38, "us-west-1": _37, "us-west-2": _39, compute: _6, "compute-1": _6, airflow: [0, { "af-south-1": _6, "ap-east-1": _6, "ap-northeast-1": _6, "ap-northeast-2": _6, "ap-northeast-3": _6, "ap-south-1": _6, "ap-south-2": _6, "ap-southeast-1": _6, "ap-southeast-2": _6, "ap-southeast-3": _6, "ap-southeast-4": _6, "ap-southeast-5": _6, "ap-southeast-7": _6, "ca-central-1": _6, "ca-west-1": _6, "eu-central-1": _6, "eu-central-2": _6, "eu-north-1": _6, "eu-south-1": _6, "eu-south-2": _6, "eu-west-1": _6, "eu-west-2": _6, "eu-west-3": _6, "il-central-1": _6, "me-central-1": _6, "me-south-1": _6, "sa-east-1": _6, "us-east-1": _6, "us-east-2": _6, "us-west-1": _6, "us-west-2": _6 }], rds: [0, { "af-south-1": _6, "ap-east-1": _6, "ap-east-2": _6, "ap-northeast-1": _6, "ap-northeast-2": _6, "ap-northeast-3": _6, "ap-south-1": _6, "ap-south-2": _6, "ap-southeast-1": _6, "ap-southeast-2": _6, "ap-southeast-3": _6, "ap-southeast-4": _6, "ap-southeast-5": _6, "ap-southeast-6": _6, "ap-southeast-7": _6, "ca-central-1": _6, "ca-west-1": _6, "eu-central-1": _6, "eu-central-2": _6, "eu-west-1": _6, "eu-west-2": _6, "eu-west-3": _6, "il-central-1": _6, "me-central-1": _6, "me-south-1": _6, "mx-central-1": _6, "sa-east-1": _6, "us-east-1": _6, "us-east-2": _6, "us-gov-east-1": _6, "us-gov-west-1": _6, "us-northeast-1": _6, "us-west-1": _6, "us-west-2": _6 }], 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: _6 }], amazoncognito: [0, { "af-south-1": _40, "ap-east-1": _40, "ap-northeast-1": _40, "ap-northeast-2": _40, "ap-northeast-3": _40, "ap-south-1": _40, "ap-south-2": _40, "ap-southeast-1": _40, "ap-southeast-2": _40, "ap-southeast-3": _40, "ap-southeast-4": _40, "ap-southeast-5": _40, "ap-southeast-7": _40, "ca-central-1": _40, "ca-west-1": _40, "eu-central-1": _40, "eu-central-2": _40, "eu-north-1": _40, "eu-south-1": _40, "eu-south-2": _40, "eu-west-1": _40, "eu-west-2": _40, "eu-west-3": _40, "il-central-1": _40, "me-central-1": _40, "me-south-1": _40, "mx-central-1": _40, "sa-east-1": _40, "us-east-1": _41, "us-east-2": _41, "us-gov-east-1": _42, "us-gov-west-1": _42, "us-west-1": _41, "us-west-2": _41 }], amplifyapp: _3, awsapprunner: _6, 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, "ap-southeast-5": _3, "ap-southeast-7": _3, "ca-central-1": _3, "eu-central-1": _3, "eu-north-1": _3, "eu-south-1": _3, "eu-south-2": _3, "eu-west-1": _3, "eu-west-2": _3, "eu-west-3": _3, "il-central-1": _3, "me-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, boutir: _3, bplaced: _3, cafjs: _3, "canva-apps": _3, "canva-hosted-embed": _3, canvacode: _3, "rice-labs": _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: _6 }], abrdns: _3, dnsabr: _3, "ip-ddns": _3, jdevcloud: _3, wpdevcloud: _3, "cf-ipfs": _3, "cloudflare-ipfs": _3, trycloudflare: _3, co: _3, devinapps: _6, builtwithdark: _3, datadetect: [0, { demo: _3, instance: _3 }], dattolocal: _3, dattorelay: _3, dattoweb: _3, mydatto: _3, digitaloceanspaces: _6, discordsays: _3, discordsez: _3, drayddns: _3, dreamhosters: _3, durumis: _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, "1cooldns": _3, bumbleshrimp: _3, ddnsfree: _3, ddnsgeek: _3, ddnsguru: _3, dynuddns: _3, dynuhosting: _3, giize: _3, gleeze: _3, kozow: _3, loseyourip: _3, ooguy: _3, pivohosting: _3, theworkpc: _3, wiredbladehosting: _3, emergentagent: [0, { preview: _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, framercanvas: _3, "freebox-os": _3, freeboxos: _3, freemyip: _3, aliases121: _3, gentapps: _3, gentlentapis: _3, githubusercontent: _3, "0emm": _6, appspot: [2, { r: _6 }], blogspot: _3, codespot: _3, googleapis: _3, googlecode: _3, pagespeedmobilizer: _3, withgoogle: _3, withyoutube: _3, grayjayleagues: _3, hatenablog: _3, hatenadiary: _3, "hercules-app": _3, "hercules-dev": _3, herokuapp: _3, gr: _3, smushcdn: _3, wphostedmail: _3, wpmucdn: _3, pixolino: _3, "apps-1and1": _3, "live-website": _3, "webspace-host": _3, dopaas: _3, "hosted-by-previder": _44, hosteur: [0, { "rag-cloud": _3, "rag-cloud-ch": _3 }], "ik-server": [0, { jcloud: _3, "jcloud-ver-jpc": _3 }], jelastic: [0, { demo: _3 }], massivegrid: _44, wafaicloud: [0, { jed: _3, ryd: _3 }], "eu1-plenit": _3, "la1-plenit": _3, "us1-plenit": _3, webadorsite: _3, "on-forge": _3, "on-vapor": _3, lpusercontent: _3, linode: [0, { members: _3, nodebalancer: _6 }], linodeobjects: _6, linodeusercontent: [0, { ip: _3 }], localtonet: _3, lovableproject: _3, barsycenter: _3, barsyonline: _3, lutrausercontent: _6, magicpatternsapp: _3, modelscape: _3, mwcloudnonprod: _3, polyspace: _3, mazeplay: _3, miniserver: _3, atmeta: _3, fbsbx: _43, meteorapp: _45, routingthecloud: _3, "same-app": _3, "same-preview": _3, mydbserver: _3, mochausercontent: _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: [0, { cloud: [2, { o365: _3 }] }], "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, myiphost: _3, observableusercontent: [0, { static: _3 }], simplesite: _3, oaiusercontent: _6, orsites: _3, operaunite: _3, "customer-oci": [0, { "*": _3, oci: _6, ocp: _6, ocs: _6 }], oraclecloudapps: _6, oraclegovcloudapps: _6, "authgear-staging": _3, authgearapps: _3, outsystemscloud: _3, ownprovider: _3, pgfog: _3, pagexl: _3, gotpantheon: _3, paywhirl: _6, forgeblocks: _3, upsunapp: _3, "postman-echo": _3, prgmr: [0, { xen: _3 }], "project-study": [0, { dev: _3 }], pythonanywhere: _45, qa2: _3, "alpha-myqnapcloud": _3, "dev-myqnapcloud": _3, mycloudnas: _3, mynascloud: _3, myqnapcloud: _3, qualifioapp: _3, ladesk: _3, qualyhqpartner: _6, qualyhqportal: _6, qbuser: _3, quipelements: _6, rackmaze: _3, "readthedocs-hosted": _3, rhcloud: _3, onrender: _3, render: _46, "subsc-pay": _3, "180r": _3, dojin: _3, sakuratan: _3, sakuraweb: _3, x0: _3, code: [0, { builder: _6, "dev-builder": _6, "stg-builder": _6 }], salesforce: [0, { platform: [0, { "code-builder-stg": [0, { test: [0, { "001": _6 }] }] }] }], logoip: _3, scrysec: _3, "firewall-gateway": _3, myshopblocks: _3, myshopify: _3, shopitsite: _3, "1kapp": _3, appchizi: _3, applinzi: _3, sinaapp: _3, vipsinaapp: _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, taveusercontent: _3, "tb-hosting": _47, reservd: _3, thingdustdata: _3, "townnews-staging": _3, typeform: [0, { pro: _3 }], hk: _3, it: _3, "deus-canvas": _3, vultrobjects: _6, wafflecell: _3, hotelwithflight: _3, "reserve-online": _3, cprapid: _3, pleskns: _3, remotewd: _3, wiardweb: [0, { pages: _3 }], "drive-platform": _3, "base44-sandbox": _3, wixsite: _3, wixstudio: _3, messwithdns: _3, "woltlab-demo": _3, wpenginepowered: [2, { js: _3 }], xnbay: [2, { u2: _3, "u2-local": _3 }], xtooldevice: _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, inf: _2, nat: _2, net: _2, org: _2 }], cv: [1, { com: _2, edu: _2, id: _2, int: _2, net: _2, nome: _2, org: _2, publ: _2 }], cw: _48, 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, { scaleforce: _49 }], ekloges: _2, gov: _2, ltd: _2, mil: _2, net: _2, org: _2, press: _2, pro: _2, tm: _2 }], cz: [1, { gov: _2, contentproxy9: [0, { rsc: _3 }], realm: _3, e4: _3, co: _3, metacentrum: [0, { cloud: _6, custom: _3 }], muni: [0, { cloud: [0, { flt: _3, usr: _3 }] }] }], de: [1, { bplaced: _3, square7: _3, "bwcloud-os-instance": _6, com: _3, cosidns: _50, 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: _6, goip: _3, "xn--gnstigbestellen-zvb": _3, "g\xFCnstigbestellen": _3, "xn--gnstigliefern-wob": _3, "g\xFCnstigliefern": _3, "hs-heilbronn": [0, { it: [0, { pages: _3, "pages-research": _3 }] }], "dyn-berlin": _3, "in-berlin": _3, "in-brb": _3, "in-butter": _3, "in-dsl": _3, "in-vpn": _3, iservschule: _3, "mein-iserv": _3, schuldock: _3, schulplattform: _3, schulserver: _3, "test-iserv": _3, keymachine: _3, co: _3, "git-repos": _3, "lcube-server": _3, "svn-repos": _3, barsy: _3, webspaceconfig: _3, "123webseite": _3, rub: _3, "ruhr-uni-bochum": [2, { noc: [0, { io: _3 }] }], logoip: _3, "firewall-gateway": _3, "my-gateway": _3, "my-router": _3, spdns: _3, my: _3, speedpartner: [0, { customer: _3 }], myspreadshop: _3, "taifun-dns": _3, "12hp": _3, "2ix": _3, "4lima": _3, "lima-city": _3, "virtual-user": _3, virtualuser: _3, "community-pro": _3, diskussionsbereich: _3, xenonconnect: _6 }], dj: _2, dk: [1, { biz: _3, co: _3, firm: _3, reg: _3, store: _3, "123hjemmeside": _3, myspreadshop: _3 }], dm: _52, 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, net: _2, org: _2, pol: _2, soc: _2, tm: _2 }], ec: [1, { abg: _2, adm: _2, agron: _2, arqt: _2, art: _2, bar: _2, chef: _2, com: _2, cont: _2, cpa: _2, cue: _2, dent: _2, dgn: _2, disco: _2, doc: _2, edu: _2, eng: _2, esm: _2, fin: _2, fot: _2, gal: _2, gob: _2, gov: _2, gye: _2, ibr: _2, info: _2, k12: _2, lat: _2, loj: _2, med: _2, mil: _2, mktg: _2, mon: _2, net: _2, ntr: _2, odont: _2, org: _2, pro: _2, prof: _2, psic: _2, psiq: _2, pub: _2, rio: _2, rrpp: _2, sal: _2, tech: _2, tul: _2, tur: _2, uio: _2, vet: _2, xxx: _2, base: _3, official: _3 }], edu: [1, { rit: [0, { "git-pages": _3 }] }], ee: [1, { aip: _2, com: _2, edu: _2, fie: _2, gov: _2, lib: _2, med: _2, org: _2, pri: _2, riik: _2 }], eg: [1, { ac: _2, com: _2, edu: _2, eun: _2, gov: _2, info: _2, me: _2, mil: _2, name: _2, net: _2, org: _2, sci: _2, sport: _2, tv: _2 }], er: _21, es: [1, { com: _2, edu: _2, gob: _2, nom: _2, org: _2, "123miweb": _3, myspreadshop: _3 }], et: [1, { biz: _2, com: _2, edu: _2, gov: _2, info: _2, name: _2, net: _2, org: _2 }], eu: [1, { amazonwebservices: [0, { on: [0, { "eusc-de-east-1": [0, { "cognito-idp": _40 }] }] }], cloudns: _3, prvw: _3, deuxfleurs: _3, dogado: [0, { jelastic: _3 }], barsy: _3, spdns: _3, nxa: _6, directwp: _3, transurl: _6 }], fi: [1, { aland: _2, dy: _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, edu: _2, gov: _2, id: _2, info: _2, mil: _2, name: _2, net: _2, org: _2, pro: _2 }], fk: _21, fm: [1, { com: _2, edu: _2, net: _2, org: _2, radio: _3, user: _6 }], 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, "fbx-os": _3, fbxos: _3, "freebox-os": _3, freeboxos: _3, goupile: _3, kdns: _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, net: _2, org: _2, pvt: _2, school: _2 }], gf: _2, gg: [1, { co: _2, net: _2, org: _2, ply: [0, { at: _6, d6: _3 }], botdash: _3, kaas: _3, stackit: _3, panel: [2, { daemon: _3 }] }], gh: [1, { biz: _2, com: _2, edu: _2, gov: _2, mil: _2, net: _2, org: _2 }], gi: [1, { com: _2, edu: _2, gov: _2, ltd: _2, mod: _2, org: _2 }], gl: [1, { co: _2, com: _2, edu: _2, net: _2, org: _2 }], gm: _2, gn: [1, { ac: _2, com: _2, edu: _2, gov: _2, net: _2, org: _2 }], gov: _2, gp: [1, { asso: _2, com: _2, edu: _2, mobi: _2, net: _2, org: _2 }], gq: _2, gr: [1, { com: _2, edu: _2, gov: _2, net: _2, org: _2, 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: [1, { nx: _3 }], gy: _52, hk: [1, { com: _2, edu: _2, gov: _2, idv: _2, net: _2, org: _2, "xn--ciqpn": _2, "\u4E2A\u4EBA": _2, "xn--gmqw5a": _2, "\u500B\u4EBA": _2, "xn--55qx5d": _2, "\u516C\u53F8": _2, "xn--mxtq1m": _2, "\u653F\u5E9C": _2, "xn--lcvr32d": _2, "\u654E\u80B2": _2, "xn--wcvs22d": _2, "\u6559\u80B2": _2, "xn--gmq050i": _2, "\u7B87\u4EBA": _2, "xn--uc0atv": _2, "\u7D44\u7E54": _2, "xn--uc0ay4a": _2, "\u7D44\u7EC7": _2, "xn--od0alg": _2, "\u7DB2\u7D61": _2, "xn--zf0avx": _2, "\u7DB2\u7EDC": _2, "xn--mk0axi": _2, "\u7EC4\u7E54": _2, "xn--tn0ag": _2, "\u7EC4\u7EC7": _2, "xn--od0aq3b": _2, "\u7F51\u7D61": _2, "xn--io0a7i": _2, "\u7F51\u7EDC": _2, inc: _3, ltd: _3 }], hm: _2, hn: [1, { com: _2, edu: _2, gob: _2, mil: _2, net: _2, org: _2 }], hr: [1, { com: _2, from: _2, iz: _2, name: _2, brendly: _20 }], ht: [1, { adult: _2, art: _2, asso: _2, com: _2, coop: _2, edu: _2, firm: _2, gouv: _2, info: _2, med: _2, net: _2, org: _2, perso: _2, pol: _2, pro: _2, rel: _2, shop: _2, rt: _3 }], hu: [1, { "2000": _2, agrar: _2, bolt: _2, casino: _2, city: _2, co: _2, erotica: _2, erotika: _2, film: _2, forum: _2, games: _2, hotel: _2, info: _2, ingatlan: _2, jogasz: _2, konyvelo: _2, lakas: _2, media: _2, news: _2, org: _2, priv: _2, reklam: _2, sex: _2, shop: _2, sport: _2, suli: _2, szex: _2, tm: _2, tozsde: _2, utazas: _2, video: _2 }], id: [1, { ac: _2, biz: _2, co: _2, desa: _2, go: _2, kop: _2, mil: _2, my: _2, net: _2, or: _2, ponpes: _2, sch: _2, web: _2, "xn--9tfky": _2, "\u1B29\u1B2E\u1B36": _2, e: _3, zone: _3 }], ie: [1, { gov: _2, myspreadshop: _3 }], il: [1, { ac: _2, co: [1, { 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, bank: _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, fin: _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, barsy: _3, web: _3, indevs: _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, mittwald: _3, mittwaldserver: _3, typo3server: _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, co: _2, com: _2, edu: _2, gov: _2, mil: _2, net: _2, nom: _2, org: _2, "on-acorn": _6, myaddr: _3, apigee: _3, "b-data": _3, beagleboard: _3, bitbucket: _3, bluebite: _3, boxfuse: _3, brave: _7, browsersafetymark: _3, bubble: _56, bubbleapps: _3, bigv: [0, { uk0: _3 }], cleverapps: _3, cloudbeesusercontent: _3, dappnode: [0, { dyndns: _3 }], darklang: _3, definima: _3, dedyn: _3, icp0: _57, icp1: _57, qzz: _3, "fh-muenster": _3, gitbook: _3, github: _3, gitlab: _3, lolipop: _3, "hasura-app": _3, hostyhosting: _3, hypernode: _3, moonscale: _6, beebyte: _44, beebyteapp: [0, { sekd1: _3 }], jele: _3, keenetic: _3, kiloapps: _3, webthings: _3, loginline: _3, barsy: _3, azurecontainer: _6, ngrok: [2, { ap: _3, au: _3, eu: _3, in: _3, jp: _3, sa: _3, us: _3 }], nodeart: [0, { stage: _3 }], pantheonsite: _3, forgerock: [0, { id: _3 }], pstmn: [2, { mock: _3 }], protonet: _3, qcx: [2, { sys: _6 }], qoto: _3, vaporcloud: _3, myrdbx: _3, "rb-hosting": _47, "on-k3s": _6, "on-rio": _6, readthedocs: _3, resindevice: _3, resinstaging: [0, { devices: _3 }], hzc: _3, sandcats: _3, scrypted: [0, { client: _3 }], "mo-siemens": _3, lair: _43, stolos: _6, musician: _3, utwente: _3, edugit: _3, telebit: _3, thingdust: [0, { dev: _58, disrec: _58, prod: _59, testing: _58 }], tickets: _3, webflow: _3, webflowtest: _3, "drive-platform": _3, editorx: _3, wixstudio: _3, basicserver: _3, virtualserver: _3 }], iq: _5, 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, arvanedge: _3, vistablog: _3 }], is: _2, it: [1, { edu: _2, gov: _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: _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, "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: _2, "balsan-sudtirol": _2, "xn--balsan-sdtirol-nsb": _2, "balsan-s\xFCdtirol": _2, "balsan-suedtirol": _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: _2, "bolzano-altoadige": _2, bozen: _2, "bozen-sudtirol": _2, "xn--bozen-sdtirol-2ob": _2, "bozen-s\xFCdtirol": _2, "bozen-suedtirol": _2, br: _2, brescia: _2, brindisi: _2, bs: _2, bt: _2, bulsan: _2, "bulsan-sudtirol": _2, "xn--bulsan-sdtirol-nsb": _2, "bulsan-s\xFCdtirol": _2, "bulsan-suedtirol": _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: _2, "monza-brianza": _2, "monza-e-della-brianza": _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, "xn--sdtirol-n2a": _2, "s\xFCdtirol": _2, suedtirol: _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, 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: _21, jo: [1, { agri: _2, ai: _2, com: _2, edu: _2, eng: _2, fm: _2, gov: _2, mil: _2, net: _2, org: _2, per: _2, phd: _2, sch: _2, tv: _2 }], jobs: _2, jp: [1, { ac: _2, ad: _2, co: _2, ed: _2, go: _2, gr: _2, lg: _2, ne: [1, { aseinet: _54, 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--ehqz56n": _2, "\u4E09\u91CD": _2, "xn--1lqs03n": _2, "\u4EAC\u90FD": _2, "xn--qqqt11m": _2, "\u4F50\u8CC0": _2, "xn--f6qx53a": _2, "\u5175\u5EAB": _2, "xn--djrs72d6uy": _2, "\u5317\u6D77\u9053": _2, "xn--mkru45i": _2, "\u5343\u8449": _2, "xn--0trq7p7nn": _2, "\u548C\u6B4C\u5C71": _2, "xn--5js045d": _2, "\u57FC\u7389": _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--nit225k": _2, "\u5C90\u961C": _2, "xn--rht3d": _2, "\u5CA1\u5C71": _2, "xn--djty4k": _2, "\u5CA9\u624B": _2, "xn--klty5x": _2, "\u5CF6\u6839": _2, "xn--kltx9a": _2, "\u5E83\u5CF6": _2, "xn--kltp7d": _2, "\u5FB3\u5CF6": _2, "xn--c3s14m": _2, "\u611B\u5A9B": _2, "xn--vgu402c": _2, "\u611B\u77E5": _2, "xn--efvn9s": _2, "\u65B0\u6F5F": _2, "xn--1lqs71d": _2, "\u6771\u4EAC": _2, "xn--4pvxs": _2, "\u6803\u6728": _2, "xn--uuwu58a": _2, "\u6C96\u7E04": _2, "xn--zbx025d": _2, "\u6ECB\u8CC0": _2, "xn--8pvr4u": _2, "\u718A\u672C": _2, "xn--5rtp49c": _2, "\u77F3\u5DDD": _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--uist22h": _2, "\u8328\u57CE": _2, "xn--8ltr62k": _2, "\u9577\u5D0E": _2, "xn--2m4a15e": _2, "\u9577\u91CE": _2, "xn--32vp30h": _2, "\u9752\u68EE": _2, "xn--4it797k": _2, "\u9759\u5CA1": _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: _21, kitakyushu: _21, kobe: _21, nagoya: _21, sapporo: _21, sendai: _21, yokohama: _21, 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, 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: _60, isk02: _60 }], 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: _2, go: _2, info: _2, me: _2, mobi: _2, ne: _2, or: _2, sc: _2 }], kg: [1, { com: _2, edu: _2, gov: _2, mil: _2, net: _2, org: _2, us: _3, xx: _3, ae: _3 }], kh: _4, ki: _61, km: [1, { ass: _2, com: _2, edu: _2, gov: _2, mil: _2, nom: _2, org: _2, prd: _2, tm: _2, asso: _2, coop: _2, gouv: _2, medecin: _2, notaires: _2, pharmaciens: _2, presse: _2, veterinaire: _2 }], kn: [1, { edu: _2, gov: _2, net: _2, org: _2 }], kp: [1, { com: _2, edu: _2, gov: _2, org: _2, rep: _2, tra: _2 }], kr: [1, { ac: _2, ai: _2, co: _2, es: _2, go: _2, hs: _2, io: _2, it: _2, kg: _2, me: _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, c01: _3, "eliv-api": _3, "eliv-cdn": _3, "eliv-dns": _3, mmv: _3, vki: _3 }], kw: [1, { com: _2, edu: _2, emb: _2, gov: _2, ind: _2, net: _2, org: _2 }], ky: _48, kz: [1, { com: _2, edu: _2, gov: _2, mil: _2, net: _2, org: _2, jcloud: _3 }], la: [1, { com: _2, edu: _2, gov: _2, info: _2, int: _2, net: _2, org: _2, per: _2, bnr: _3 }], lb: _4, lc: [1, { co: _2, com: _2, edu: _2, gov: _2, net: _2, org: _2, oy: _3 }], li: _2, lk: [1, { ac: _2, assn: _2, com: _2, edu: _2, gov: _2, grp: _2, hotel: _2, int: _2, ltd: _2, net: _2, ngo: _2, org: _2, sch: _2, soc: _2, web: _2 }], lr: _4, ls: [1, { ac: _2, biz: _2, co: _2, edu: _2, gov: _2, info: _2, net: _2, org: _2, sc: _2 }], lt: _10, lu: [1, { "123website": _3 }], lv: [1, { asn: _2, com: _2, conf: _2, edu: _2, gov: _2, id: _2, mil: _2, net: _2, org: _2 }], ly: [1, { com: _2, edu: _2, gov: _2, id: _2, med: _2, net: _2, org: _2, plc: _2, sch: _2 }], ma: [1, { ac: _2, co: _2, gov: _2, net: _2, org: _2, press: _2 }], mc: [1, { asso: _2, tm: _2 }], md: [1, { ir: _3 }], me: [1, { ac: _2, co: _2, edu: _2, gov: _2, its: _2, net: _2, org: _2, priv: _2, c66: _3, craft: _3, edgestack: _3, mybox: _3, filegear: _3, "filegear-sg": _3, lohmus: _3, barsy: _3, mcdir: _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: _47, nohost: _3 }], mg: [1, { co: _2, com: _2, edu: _2, gov: _2, mil: _2, nom: _2, org: _2, prd: _2 }], mh: _2, mil: _2, mk: [1, { com: _2, edu: _2, gov: _2, inf: _2, name: _2, net: _2, org: _2 }], ml: [1, { ac: _2, art: _2, asso: _2, com: _2, edu: _2, gouv: _2, gov: _2, info: _2, inst: _2, net: _2, org: _2, pr: _2, presse: _2 }], mm: _21, mn: [1, { edu: _2, gov: _2, org: _2, nyc: _3 }], mo: _4, mobi: [1, { barsy: _3, dscloud: _3 }], mp: [1, { ju: _3 }], mq: _2, mr: _10, ms: [1, { com: _2, edu: _2, gov: _2, net: _2, org: _2, minisite: _3 }], mt: _48, mu: [1, { ac: _2, co: _2, com: _2, gov: _2, net: _2, or: _2, org: _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, net: _2, org: _2 }], mx: [1, { com: _2, edu: _2, gob: _2, net: _2, org: _2 }], my: [1, { biz: _2, com: _2, edu: _2, gov: _2, mil: _2, name: _2, net: _2, org: _2 }], mz: [1, { ac: _2, adv: _2, co: _2, edu: _2, gov: _2, mil: _2, net: _2, org: _2 }], na: [1, { alt: _2, co: _2, com: _2, gov: _2, net: _2, org: _2 }], name: [1, { her: _64, his: _64, ispmanager: _3, keenetic: _3 }], 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: _56 }], myfritz: _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, "ddns-ip": _3, "dns-cloud": _3, "dns-dynamic": _3, cloudaccess: _3, cloudflare: [2, { cdn: _3 }], cloudflareanycast: _56, cloudflarecn: _56, cloudflareglobal: _56, ctfcloud: _3, "feste-ip": _3, "knx-server": _3, "static-access": _3, cryptonomic: _6, dattolocal: _3, mydatto: _3, debian: _3, definima: _3, deno: [2, { sandbox: _3 }], icp: _6, de5: _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, dynuddns: _3, mysynology: _3, opik: _3, spryt: _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 }], "keyword-on": _3, "live-on": _3, "server-on": _3, "cdn-edges": _3, heteml: _3, cloudfunctions: _3, "grafana-dev": _3, iobb: _3, moonscale: _3, "in-dsl": _3, "in-vpn": _3, oninferno: _3, botdash: _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: _49, kinghost: _3, uni5: _3, krellian: _3, ggff: _3, localto: _6, barsy: _3, luyani: _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, usgovcloudapi: _66, usgovcloudapp: _3, usgovtrafficmanager: _3, windows: _66, 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: _6, webpaas: _6 }], rackmaze: _3, myradweb: _3, in: _3, "subsc-pay": _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, ts: [2, { c: _6 }], torproject: [2, { pages: _3 }], tunnelmole: _3, vusercontent: _3, "reserve-online": _3, localcert: _3, "community-pro": _3, meinforum: _3, yandexcloud: [2, { storage: _3, website: _3 }], za: _3, zabc: _3 }], nf: [1, { arts: _2, com: _2, firm: _2, info: _2, net: _2, other: _2, per: _2, rec: _2, store: _2, web: _2 }], ng: [1, { com: _2, 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, gov: _3, khplay: _3, "123website": _3, myspreadshop: _3, transurl: _6, cistron: _3, demon: _3 }], no: [1, { fhs: _2, folkebibl: _2, fylkesbibl: _2, idrett: _2, museum: _2, priv: _2, vgs: _2, dep: _2, herad: _2, kommune: _2, mil: _2, stat: _2, aa: _67, ah: _67, bu: _67, fm: _67, hl: _67, hm: _67, "jan-mayen": _67, mr: _67, nl: _67, nt: _67, of: _67, ol: _67, oslo: _67, rl: _67, sf: _67, st: _67, svalbard: _67, tm: _67, tr: _67, va: _67, vf: _67, akrehamn: _2, "xn--krehamn-dxa": _2, "\xE5krehamn": _2, algard: _2, "xn--lgrd-poac": _2, "\xE5lg\xE5rd": _2, arna: _2, bronnoysund: _2, "xn--brnnysund-m8ac": _2, "br\xF8nn\xF8ysund": _2, brumunddal: _2, bryne: _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, aarborte: _2, aejrie: _2, afjord: _2, "xn--fjord-lra": _2, "\xE5fjord": _2, agdenes: _2, akershus: _68, aknoluokta: _2, "xn--koluokta-7ya57h": _2, "\xE1k\u014Boluokta": _2, al: _2, "xn--l-1fa": _2, "\xE5l": _2, alaheadju: _2, "xn--laheadju-7ya": _2, "\xE1laheadju": _2, alesund: _2, "xn--lesund-hua": _2, "\xE5lesund": _2, alstahaug: _2, alta: _2, "xn--lt-liac": _2, "\xE1lt\xE1": _2, alvdal: _2, amli: _2, "xn--mli-tla": _2, "\xE5mli": _2, amot: _2, "xn--mot-tla": _2, "\xE5mot": _2, andasuolo: _2, andebu: _2, andoy: _2, "xn--andy-ira": _2, "and\xF8y": _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, askoy: _2, "xn--asky-ira": _2, "ask\xF8y": _2, askvoll: _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, badaddja: _2, "xn--bdddj-mrabd": _2, "b\xE5d\xE5ddj\xE5": _2, "xn--brum-voa": _2, "b\xE6rum": _2, bahcavuotna: _2, "xn--bhcavuotna-s4a": _2, "b\xE1hcavuotna": _2, bahccavuotna: _2, "xn--bhccavuotna-k7a": _2, "b\xE1hccavuotna": _2, baidar: _2, "xn--bidr-5nac": _2, "b\xE1id\xE1r": _2, bajddar: _2, "xn--bjddar-pta": _2, "b\xE1jddar": _2, balat: _2, "xn--blt-elab": _2, "b\xE1l\xE1t": _2, balestrand: _2, ballangen: _2, balsfjord: _2, bamble: _2, bardu: _2, barum: _2, batsfjord: _2, "xn--btsfjord-9za": _2, "b\xE5tsfjord": _2, bearalvahki: _2, "xn--bearalvhki-y4a": _2, "bearalv\xE1hki": _2, beardu: _2, beiarn: _2, berg: _2, bergen: _2, berlevag: _2, "xn--berlevg-jxa": _2, "berlev\xE5g": _2, bievat: _2, "xn--bievt-0qa": _2, "biev\xE1t": _2, bindal: _2, birkenes: _2, bjerkreim: _2, bjugn: _2, bodo: _2, "xn--bod-2na": _2, "bod\xF8": _2, bokn: _2, bomlo: _2, "xn--bmlo-gra": _2, "b\xF8mlo": _2, bremanger: _2, bronnoy: _2, "xn--brnny-wuac": _2, "br\xF8nn\xF8y": _2, budejju: _2, buskerud: _68, bygland: _2, bykle: _2, cahcesuolo: _2, "xn--hcesuolo-7ya35b": _2, "\u010D\xE1hcesuolo": _2, davvenjarga: _2, "xn--davvenjrga-y4a": _2, "davvenj\xE1rga": _2, davvesiida: _2, deatnu: _2, dielddanuorri: _2, divtasvuodna: _2, divttasvuotna: _2, donna: _2, "xn--dnna-gra": _2, "d\xF8nna": _2, dovre: _2, drammen: _2, drangedal: _2, dyroy: _2, "xn--dyry-ira": _2, "dyr\xF8y": _2, eid: _2, eidfjord: _2, eidsberg: _2, eidskog: _2, eidsvoll: _2, eigersund: _2, elverum: _2, enebakk: _2, engerdal: _2, etne: _2, etnedal: _2, evenassi: _2, "xn--eveni-0qa01ga": _2, "even\xE1\u0161\u0161i": _2, evenes: _2, "evje-og-hornnes": _2, farsund: _2, fauske: _2, fedje: _2, fet: _2, finnoy: _2, "xn--finny-yua": _2, "finn\xF8y": _2, fitjar: _2, fjaler: _2, fjell: _2, fla: _2, "xn--fl-zia": _2, "fl\xE5": _2, flakstad: _2, flatanger: _2, flekkefjord: _2, flesberg: _2, flora: _2, folldal: _2, forde: _2, "xn--frde-gra": _2, "f\xF8rde": _2, forsand: _2, fosnes: _2, "xn--frna-woa": _2, "fr\xE6na": _2, frana: _2, frei: _2, frogn: _2, froland: _2, frosta: _2, froya: _2, "xn--frya-hra": _2, "fr\xF8ya": _2, fuoisku: _2, fuossko: _2, fusa: _2, fyresdal: _2, gaivuotna: _2, "xn--givuotna-8ya": _2, "g\xE1ivuotna": _2, galsa: _2, "xn--gls-elac": _2, "g\xE1ls\xE1": _2, gamvik: _2, gangaviika: _2, "xn--ggaviika-8ya47h": _2, "g\xE1\u014Bgaviika": _2, gaular: _2, gausdal: _2, giehtavuoatna: _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, grue: _2, gulen: _2, guovdageaidnu: _2, ha: _2, "xn--h-2fa": _2, "h\xE5": _2, habmer: _2, "xn--hbmer-xqa": _2, "h\xE1bmer": _2, hadsel: _2, "xn--hgebostad-g3a": _2, "h\xE6gebostad": _2, hagebostad: _2, halden: _2, halsa: _2, hamar: _2, hamaroy: _2, hammarfeasta: _2, "xn--hmmrfeasta-s4ac": _2, "h\xE1mm\xE1rfeasta": _2, hammerfest: _2, hapmir: _2, "xn--hpmir-xqa": _2, "h\xE1pmir": _2, haram: _2, hareid: _2, harstad: _2, hasvik: _2, hattfjelldal: _2, haugesund: _2, hedmark: [0, { os: _2, valer: _2, "xn--vler-qoa": _2, "v\xE5ler": _2 }], hemne: _2, hemnes: _2, hemsedal: _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, hordaland: [0, { os: _2 }], hornindal: _2, horten: _2, hoyanger: _2, "xn--hyanger-q1a": _2, "h\xF8yanger": _2, hoylandet: _2, "xn--hylandet-54a": _2, "h\xF8ylandet": _2, hurdal: _2, hurum: _2, hvaler: _2, hyllestad: _2, ibestad: _2, inderoy: _2, "xn--indery-fya": _2, "inder\xF8y": _2, iveland: _2, ivgu: _2, jevnaker: _2, jolster: _2, "xn--jlster-bya": _2, "j\xF8lster": _2, jondal: _2, kafjord: _2, "xn--kfjord-iua": _2, "k\xE5fjord": _2, karasjohka: _2, "xn--krjohka-hwab49j": _2, "k\xE1r\xE1\u0161johka": _2, karasjok: _2, karlsoy: _2, karmoy: _2, "xn--karmy-yua": _2, "karm\xF8y": _2, kautokeino: _2, klabu: _2, "xn--klbu-woa": _2, "kl\xE6bu": _2, klepp: _2, kongsberg: _2, kongsvinger: _2, kraanghke: _2, "xn--kranghke-b0a": _2, "kr\xE5anghke": _2, kragero: _2, "xn--krager-gya": _2, "krager\xF8": _2, kristiansand: _2, kristiansund: _2, krodsherad: _2, "xn--krdsherad-m8a": _2, "kr\xF8dsherad": _2, "xn--kvfjord-nxa": _2, "kv\xE6fjord": _2, "xn--kvnangen-k0a": _2, "kv\xE6nangen": _2, kvafjord: _2, kvalsund: _2, kvam: _2, kvanangen: _2, kvinesdal: _2, kvinnherad: _2, kviteseid: _2, kvitsoy: _2, "xn--kvitsy-fya": _2, "kvits\xF8y": _2, laakesvuemie: _2, "xn--lrdal-sra": _2, "l\xE6rdal": _2, lahppi: _2, "xn--lhppi-xqa": _2, "l\xE1hppi": _2, lardal: _2, larvik: _2, lavagis: _2, lavangen: _2, leangaviika: _2, "xn--leagaviika-52b": _2, "lea\u014Bgaviika": _2, lebesby: _2, leikanger: _2, leirfjord: _2, leka: _2, leksvik: _2, lenvik: _2, lerdal: _2, lesja: _2, levanger: _2, lier: _2, lierne: _2, lillehammer: _2, lillesand: _2, lindas: _2, "xn--linds-pra": _2, "lind\xE5s": _2, lindesnes: _2, loabat: _2, "xn--loabt-0qa": _2, "loab\xE1t": _2, lodingen: _2, "xn--ldingen-q1a": _2, "l\xF8dingen": _2, lom: _2, loppa: _2, lorenskog: _2, "xn--lrenskog-54a": _2, "l\xF8renskog": _2, loten: _2, "xn--lten-gra": _2, "l\xF8ten": _2, lund: _2, lunner: _2, luroy: _2, "xn--lury-ira": _2, "lur\xF8y": _2, luster: _2, lyngdal: _2, lyngen: _2, malatvuopmi: _2, "xn--mlatvuopmi-s4a": _2, "m\xE1latvuopmi": _2, malselv: _2, "xn--mlselv-iua": _2, "m\xE5lselv": _2, malvik: _2, mandal: _2, marker: _2, marnardal: _2, masfjorden: _2, masoy: _2, "xn--msy-ula0h": _2, "m\xE5s\xF8y": _2, "matta-varjjat": _2, "xn--mtta-vrjjat-k7af": _2, "m\xE1tta-v\xE1rjjat": _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, midsund: _2, "midtre-gauldal": _2, moareke: _2, "xn--moreke-jua": _2, "mo\xE5reke": _2, modalen: _2, modum: _2, molde: _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 }], moskenes: _2, moss: _2, muosat: _2, "xn--muost-0qa": _2, "muos\xE1t": _2, naamesjevuemie: _2, "xn--nmesjevuemie-tcba": _2, "n\xE5\xE5mesjevuemie": _2, "xn--nry-yla5g": _2, "n\xE6r\xF8y": _2, namdalseid: _2, namsos: _2, namsskogan: _2, nannestad: _2, naroy: _2, narviika: _2, narvik: _2, naustdal: _2, navuotna: _2, "xn--nvuotna-hwa": _2, "n\xE1vuotna": _2, "nedre-eiker": _2, nesna: _2, nesodden: _2, nesseby: _2, nesset: _2, nissedal: _2, nittedal: _2, "nord-aurdal": _2, "nord-fron": _2, "nord-odal": _2, norddal: _2, nordkapp: _2, nordland: [0, { bo: _2, "xn--b-5ga": _2, "b\xF8": _2, heroy: _2, "xn--hery-ira": _2, "her\xF8y": _2 }], "nordre-land": _2, nordreisa: _2, "nore-og-uvdal": _2, notodden: _2, notteroy: _2, "xn--nttery-byae": _2, "n\xF8tter\xF8y": _2, odda: _2, oksnes: _2, "xn--ksnes-uua": _2, "\xF8ksnes": _2, omasvuotna: _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, osen: _2, osteroy: _2, "xn--ostery-fya": _2, "oster\xF8y": _2, ostfold: [0, { valer: _2 }], "xn--stfold-9xa": [0, { "xn--vler-qoa": _2 }], "\xF8stfold": [0, { "v\xE5ler": _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, rade: _2, "xn--rde-ula": _2, "r\xE5de": _2, radoy: _2, "xn--rady-ira": _2, "rad\xF8y": _2, "xn--rlingen-mxa": _2, "r\xE6lingen": _2, rahkkeravju: _2, "xn--rhkkervju-01af": _2, "r\xE1hkker\xE1vju": _2, raisa: _2, "xn--risa-5na": _2, "r\xE1isa": _2, rakkestad: _2, ralingen: _2, rana: _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, risor: _2, "xn--risr-ira": _2, "ris\xF8r": _2, rissa: _2, roan: _2, rodoy: _2, "xn--rdy-0nab": _2, "r\xF8d\xF8y": _2, rollag: _2, romsa: _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, ruovat: _2, rygge: _2, salangen: _2, salat: _2, "xn--slat-5na": _2, "s\xE1lat": _2, "xn--slt-elab": _2, "s\xE1l\xE1t": _2, saltdal: _2, samnanger: _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, siellak: _2, sigdal: _2, siljan: _2, sirdal: _2, skanit: _2, "xn--sknit-yqa": _2, "sk\xE1nit": _2, skanland: _2, "xn--sknland-fxa": _2, "sk\xE5nland": _2, skaun: _2, skedsmo: _2, ski: _2, skien: _2, skierva: _2, "xn--skierv-uta": _2, "skierv\xE1": _2, skiptvet: _2, skjak: _2, "xn--skjk-soa": _2, "skj\xE5k": _2, skjervoy: _2, "xn--skjervy-v1a": _2, "skjerv\xF8y": _2, skodje: _2, smola: _2, "xn--smla-hra": _2, "sm\xF8la": _2, snaase: _2, "xn--snase-nra": _2, "sn\xE5ase": _2, snasa: _2, "xn--snsa-roa": _2, "sn\xE5sa": _2, snillfjord: _2, snoasa: _2, sogndal: _2, sogne: _2, "xn--sgne-gra": _2, "s\xF8gne": _2, sokndal: _2, sola: _2, solund: _2, somna: _2, "xn--smna-gra": _2, "s\xF8mna": _2, "sondre-land": _2, "xn--sndre-land-0cb": _2, "s\xF8ndre-land": _2, songdalen: _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, sorfold: _2, "xn--srfold-bya": _2, "s\xF8rfold": _2, sorreisa: _2, "xn--srreisa-q1a": _2, "s\xF8rreisa": _2, sortland: _2, sorum: _2, "xn--srum-gra": _2, "s\xF8rum": _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, strand: _2, stranda: _2, stryn: _2, sula: _2, suldal: _2, sund: _2, sunndal: _2, surnadal: _2, sveio: _2, svelvik: _2, sykkylven: _2, tana: _2, telemark: [0, { bo: _2, "xn--b-5ga": _2, "b\xF8": _2 }], time: _2, tingvoll: _2, tinn: _2, tjeldsund: _2, tjome: _2, "xn--tjme-hra": _2, "tj\xF8me": _2, tokke: _2, tolga: _2, tonsberg: _2, "xn--tnsberg-q1a": _2, "t\xF8nsberg": _2, torsken: _2, "xn--trna-woa": _2, "tr\xE6na": _2, trana: _2, tranoy: _2, "xn--trany-yua": _2, "tran\xF8y": _2, troandin: _2, trogstad: _2, "xn--trgstad-r1a": _2, "tr\xF8gstad": _2, tromsa: _2, tromso: _2, "xn--troms-zua": _2, "troms\xF8": _2, trondheim: _2, trysil: _2, tvedestrand: _2, tydal: _2, tynset: _2, tysfjord: _2, tysnes: _2, "xn--tysvr-vra": _2, "tysv\xE6r": _2, tysvar: _2, ullensaker: _2, ullensvang: _2, ulvik: _2, unjarga: _2, "xn--unjrga-rta": _2, "unj\xE1rga": _2, utsira: _2, vaapste: _2, vadso: _2, "xn--vads-jra": _2, "vads\xF8": _2, "xn--vry-yla5g": _2, "v\xE6r\xF8y": _2, vaga: _2, "xn--vg-yiab": _2, "v\xE5g\xE5": _2, vagan: _2, "xn--vgan-qoa": _2, "v\xE5gan": _2, vagsoy: _2, "xn--vgsy-qoa0j": _2, "v\xE5gs\xF8y": _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, varoy: _2, vefsn: _2, vega: _2, vegarshei: _2, "xn--vegrshei-c0a": _2, "veg\xE5rshei": _2, vennesla: _2, verdal: _2, verran: _2, vestby: _2, vestfold: [0, { sande: _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, voagat: _2, volda: _2, voss: _2, co: _3, "123hjemmeside": _3, myspreadshop: _3 }], np: _21, nr: _61, nu: [1, { merseine: _3, mine: _3, shacknet: _3, enterprisecloud: _3 }], nz: [1, { ac: _2, co: _2, cri: _2, geek: _2, gen: _2, govt: _2, health: _2, iwi: _2, kiwi: _2, maori: _2, "xn--mori-qsa": _2, "m\u0101ori": _2, mil: _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, cloudns: _3, "ip-dynamic": _3, ddnss: _3, dpdns: _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, roxa: _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, pl: _3, pt: _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: _46, stg: [0, { os: _46 }] }], 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: _60, tuxfamily: _3, hk: _3, us: _3, toolforge: _3, wmcloud: [2, { beta: _3 }], wmflabs: _3, za: _3 }], pa: [1, { abo: _2, ac: _2, com: _2, edu: _2, gob: _2, ing: _2, med: _2, net: _2, nom: _2, org: _2, sld: _2 }], pe: [1, { com: _2, edu: _2, gob: _2, mil: _2, net: _2, nom: _2, org: _2 }], pf: [1, { com: _2, edu: _2, org: _2 }], pg: _21, ph: [1, { com: _2, edu: _2, gov: _2, i: _2, mil: _2, net: _2, ngo: _2, org: _2, cloudns: _3 }], pk: [1, { ac: _2, biz: _2, com: _2, edu: _2, fam: _2, gkp: _2, gob: _2, gog: _2, gok: _2, gop: _2, gos: _2, gov: _2, net: _2, org: _2, web: _2 }], pl: [1, { com: _2, net: _2, org: _2, agro: _2, aid: _2, atm: _2, auto: _2, biz: _2, edu: _2, gmina: _2, gsm: _2, info: _2, mail: _2, media: _2, miasta: _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, karpacz: _2, kartuzy: _2, kaszuby: _2, katowice: _2, "kazimierz-dolny": _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, pomorskie: _2, pomorze: _2, prochowice: _2, pruszkow: _2, przeworsk: _2, pulawy: _2, radom: _2, "rawa-maz": _2, rybnik: _2, rzeszow: _2, sanok: _2, sejny: _2, skoczow: _2, slask: _2, slupsk: _2, sosnowiec: _2, "stalowa-wola": _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, lodz: _3, pabianice: _3, plock: _3, sieradz: _3, skierniewice: _3, zgierz: _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, { co: _2, edu: _2, gov: _2, net: _2, org: _2 }], post: _2, pr: [1, { biz: _2, com: _2, edu: _2, gov: _2, info: _2, isla: _2, name: _2, net: _2, org: _2, pro: _2, ac: _2, est: _2, prof: _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, cloudns: _3, keenetic: _3, barsy: _3, ngrok: _3 }], ps: [1, { com: _2, edu: _2, gov: _2, net: _2, org: _2, plo: _2, sec: _2 }], pt: [1, { com: _2, edu: _2, gov: _2, int: _2, net: _2, nome: _2, org: _2, publ: _2, "123paginaweb": _3 }], pw: [1, { gov: _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 }], re: [1, { asso: _2, com: _2, netlib: _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, barsy: _3 }], rs: [1, { ac: _2, co: _2, edu: _2, gov: _2, in: _2, org: _2, brendly: _20, barsy: _3, ox: _3 }], ru: [1, { ac: _3, edu: _3, gov: _3, int: _3, mil: _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, na4u: _3, mircloud: _3, myjino: [2, { hosting: _6, landing: _6, spectrum: _6, vps: _6 }], cldmail: [0, { hb: _3 }], mcdir: [2, { vps: _3 }], mcpre: _3, net: _3, org: _3, pp: _3, ras: _3 }], rw: [1, { ac: _2, co: _2, coop: _2, gov: _2, mil: _2, net: _2, org: _2 }], sa: [1, { com: _2, edu: _2, gov: _2, med: _2, net: _2, org: _2, pub: _2, sch: _2 }], sb: _4, sc: _4, sd: [1, { com: _2, edu: _2, gov: _2, info: _2, med: _2, net: _2, org: _2, tv: _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, iopsys: _3, "123minsida": _3, itcouldbewor: _3, myspreadshop: _3 }], sg: [1, { com: _2, edu: _2, gov: _2, net: _2, org: _2, enscaled: _3 }], sh: [1, { com: _2, gov: _2, mil: _2, net: _2, org: _2, hashbang: _3, botda: _3, lovable: _3, platform: [0, { ent: _3, eu: _3, us: _3 }], teleport: _3, now: _3 }], si: [1, { f5: _3, gitapp: _3, gitpage: _3 }], sj: _2, sk: [1, { org: _2 }], sl: _4, sm: _2, sn: [1, { art: _2, com: _2, edu: _2, gouv: _2, org: _2, univ: _2 }], so: [1, { com: _2, edu: _2, gov: _2, me: _2, net: _2, org: _2, surveys: _3 }], sr: _2, ss: [1, { biz: _2, co: _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, cn: _6, 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: _10, sy: _5, sz: [1, { ac: _2, co: _2, org: _2 }], tc: _2, td: _2, 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: _10, tm: [1, { co: _2, com: _2, edu: _2, gov: _2, mil: _2, net: _2, nom: _2, org: _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, edu: _2, gov: _2, mil: _2, net: _2, org: _2, oya: _3, x0: _3, quickconnect: _29, vpnplus: _3, nett: _3 }], tr: [1, { av: _2, bbs: _2, bel: _2, biz: _2, com: _2, dr: _2, edu: _2, gen: _2, gov: _2, info: _2, k12: _2, kep: _2, mil: _2, name: _2, net: _2, org: _2, pol: _2, tel: _2, tsk: _2, tv: _2, web: _2, nc: _10 }], tt: [1, { biz: _2, co: _2, com: _2, edu: _2, gov: _2, info: _2, mil: _2, name: _2, net: _2, org: _2, pro: _2 }], tv: [1, { "better-than": _3, dyndns: _3, "on-the-web": _3, "worse-than": _3, from: _3, sakura: _3 }], tw: [1, { club: _2, com: [1, { mymailer: _3 }], ebiz: _2, edu: _2, game: _2, gov: _2, idv: _2, mil: _2, net: _2, org: _2, url: _3, mydns: _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, biz: _3, co: _3, pp: _3, v: _3 }], ug: [1, { ac: _2, co: _2, com: _2, edu: _2, go: _2, gov: _2, mil: _2, ne: _2, or: _2, org: _2, sc: _2, us: _2 }], uk: [1, { ac: _2, co: [1, { bytemark: [0, { dh: _3, vm: _3 }], layershift: _49, barsy: _3, barsyonline: _3, retrosnub: _59, "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: _21, 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: _6 }], us: [1, { dni: _2, isa: _2, nsn: _2, ak: _69, al: _69, ar: _69, as: _69, az: _69, ca: _69, co: _69, ct: _69, dc: _69, de: _70, fl: _69, ga: _69, gu: _69, hi: _71, ia: _69, id: _69, il: _69, in: _69, ks: _69, ky: _69, la: _69, ma: [1, { k12: [1, { chtr: _2, paroch: _2, pvt: _2 }], cc: _2, lib: _2 }], md: _69, me: _69, 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: _69, mo: _69, ms: [1, { k12: _2, cc: _2 }], mt: _69, nc: _69, nd: _71, ne: _69, nh: _69, nj: _69, nm: _69, nv: _69, ny: _69, oh: _69, ok: _69, or: _69, pa: _69, pr: _69, ri: _71, sc: _69, sd: _71, tn: _69, tx: _69, ut: _69, va: _69, vi: _69, vt: _69, wa: _69, wi: _69, wv: _70, wy: _69, cloudns: _3, "is-by": _3, "land-4-sale": _3, "stuff-4-sale": _3, heliohost: _3, enscaled: [0, { phx: _3 }], mircloud: _3, "azure-api": _3, azurewebsites: _3, ngo: _3, golffan: _3, noip: _3, pointto: _3, freeddns: _3, srv: [2, { gh: _3, gl: _3 }], servername: _3 }], uy: [1, { com: _2, edu: _2, gub: _2, mil: _2, net: _2, org: _2, gv: _3 }], uz: [1, { co: _2, com: _2, net: _2, org: _2 }], va: _2, vc: [1, { com: _2, edu: _2, gov: _2, mil: _2, net: _2, org: _2, gv: [2, { d: _3 }], "0e": _6, mydns: _3 }], ve: [1, { arts: _2, bib: _2, co: _2, com: _2, e12: _2, edu: _2, emprende: _2, firm: _2, gob: _2, gov: _2, ia: _2, info: _2, int: _2, mil: _2, net: _2, nom: _2, org: _2, rar: _2, rec: _2, store: _2, tec: _2, web: _2 }], vg: [1, { edu: _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, hue: _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 }], vu: _48, wf: [1, { biz: _3, sch: _3 }], ws: [1, { com: _2, edu: _2, gov: _2, net: _2, org: _2, advisor: _6, 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--gmqw5a": _2, "xn--55qx5d": _2, "xn--mxtq1m": _2, "xn--wcvs22d": _2, "xn--uc0atv": _2, "xn--od0alg": _2 }], "\u9999\u6E2F": [1, { "\u500B\u4EBA": _2, "\u516C\u53F8": _2, "\u653F\u5E9C": _2, "\u6559\u80B2": _2, "\u7D44\u7E54": _2, "\u7DB2\u7D61": _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--80au": _2, "xn--90azh": _2, "xn--d1at": _2, "xn--c1avg": _2, "xn--o1ac": _2, "xn--o1ach": _2 }], "\u0441\u0440\u0431": [1, { "\u0430\u043A": _2, "\u043E\u0431\u0440": _2, "\u043E\u0434": _2, "\u043E\u0440\u0433": _2, "\u043F\u0440": _2, "\u0443\u043F\u0440": _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--o3cyx2a": _2, "xn--12co0c3b4eva": _2, "xn--m3ch0j3a": _2, "xn--h3cuzk1di": _2, "xn--12c1fe0br": _2, "xn--12cfi8ixb8l": _2 }], "\u0E44\u0E17\u0E22": [1, { "\u0E17\u0E2B\u0E32\u0E23": _2, "\u0E18\u0E38\u0E23\u0E01\u0E34\u0E08": _2, "\u0E40\u0E19\u0E47\u0E15": _2, "\u0E23\u0E31\u0E10\u0E1A\u0E32\u0E25": _2, "\u0E28\u0E36\u0E01\u0E29\u0E32": _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: _5, za: [0, { ac: _2, agric: _2, alt: _2, co: _2, 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, aiven: _3, beget: _6, brave: _7, clerk: _3, clerkstage: _3, cloudflare: _3, wnext: _3, csb: [2, { preview: _3 }], convex: _3, corespeed: _3, deta: _3, ondigitalocean: _3, easypanel: _3, encr: [2, { frontend: _3 }], evervault: _8, expo: [2, { staging: _3 }], edgecompute: _3, "on-fleek": _3, flutterflow: _3, sprites: _3, e2b: _3, framer: _3, gadget: _3, github: _3, hosted: _6, run: [0, { "*": _3, mtls: _6 }], web: _3, hackclub: _3, hasura: _3, onhercules: _3, botdash: _3, shiptoday: _3, leapcell: _3, loginline: _3, lovable: _3, luyani: _3, magicpatterns: _3, medusajs: _3, messerli: _3, miren: _3, mocha: _3, netlify: _3, ngrok: _3, "ngrok-free": _3, developer: _6, noop: _3, northflank: _6, upsun: _6, railway: [0, { up: _3 }], replit: _9, nyat: _3, snowflake: [0, { "*": _3, privatelink: _6 }], streamlit: _3, spawnbase: _3, telebit: _3, typedream: _3, vercel: _3, wal: _3, wasmer: _3, bookonline: _3, windsurf: _3, base44: _3, zeabur: _3, zerops: _6 }], apple: [1, { int: [2, { cloud: [0, { "*": _3, r: [0, { "*": _3, "ap-north-1": _6, "ap-south-1": _6, "ap-south-2": _6, "eu-central-1": _6, "eu-north-1": _6, "us-central-1": _6, "us-central-2": _6, "us-east-1": _6, "us-east-2": _6, "us-west-1": _6, "us-west-2": _6, "us-west-3": _6 }] }] }] }], 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, { on: [0, { "af-south-1": _11, "ap-east-1": _11, "ap-northeast-1": _11, "ap-northeast-2": _11, "ap-northeast-3": _11, "ap-south-1": _11, "ap-south-2": _12, "ap-southeast-1": _11, "ap-southeast-2": _11, "ap-southeast-3": _11, "ap-southeast-4": _12, "ap-southeast-5": _12, "ca-central-1": _11, "ca-west-1": _12, "eu-central-1": _11, "eu-central-2": _12, "eu-north-1": _11, "eu-south-1": _11, "eu-south-2": _12, "eu-west-1": _11, "eu-west-2": _11, "eu-west-3": _11, "il-central-1": _12, "me-central-1": _12, "me-south-1": _11, "sa-east-1": _11, "us-east-1": _11, "us-east-2": _11, "us-west-1": _11, "us-west-2": _11, "ap-southeast-7": _13, "mx-central-1": _13, "us-gov-east-1": _14, "us-gov-west-1": _14 }], sagemaker: [0, { "ap-northeast-1": _16, "ap-northeast-2": _16, "ap-south-1": _16, "ap-southeast-1": _16, "ap-southeast-2": _16, "ca-central-1": _18, "eu-central-1": _16, "eu-west-1": _16, "eu-west-2": _16, "us-east-1": _18, "us-east-2": _18, "us-west-2": _18, "af-south-1": _15, "ap-east-1": _15, "ap-northeast-3": _15, "ap-south-2": _17, "ap-southeast-3": _15, "ap-southeast-4": _17, "ca-west-1": [0, { notebook: _3, "notebook-fips": _3 }], "eu-central-2": _15, "eu-north-1": _15, "eu-south-1": _15, "eu-south-2": _15, "eu-west-3": _15, "il-central-1": _15, "me-central-1": _15, "me-south-1": _15, "sa-east-1": _15, "us-gov-east-1": _19, "us-gov-west-1": _19, "us-west-1": [0, { notebook: _3, "notebook-fips": _3, studio: _3 }], experiments: _6 }], repost: [0, { private: _6 }] }], 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, 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, { shiptoday: _3, v0: _3, windsurf: _3 }], builders: [1, { cloudsite: _3 }], business: _22, 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: [1, { sav: _3 }], 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, { antagonist: _3, begetcdn: _6, convex: _24, elementor: _3, emergent: _3, encoway: [0, { eu: _3 }], statics: _6, 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 }], jote: _3, jotelulu: _3, kuleuven: _3, laravel: _3, linkyard: _3, magentosite: _6, matlab: _3, observablehq: _3, perspecta: _3, vapor: _3, "on-rancher": _6, scw: [0, { baremetal: [0, { "fr-par-1": _3, "fr-par-2": _3, "nl-ams-1": _3 }], "fr-par": [0, { cockpit: _3, ddl: _3, dtwh: _3, fnc: [2, { functions: _3 }], ifr: _3, k8s: _25, kafk: _3, mgdb: _3, rdb: _3, s3: _3, "s3-website": _3, scbl: _3, whm: _3 }], instances: [0, { priv: _3, pub: _3 }], k8s: _3, "nl-ams": [0, { cockpit: _3, ddl: _3, dtwh: _3, ifr: _3, k8s: _25, kafk: _3, mgdb: _3, rdb: _3, s3: _3, "s3-website": _3, scbl: _3, whm: _3 }], "pl-waw": [0, { cockpit: _3, ddl: _3, dtwh: _3, ifr: _3, k8s: _25, kafk: _3, mgdb: _3, rdb: _3, s3: _3, "s3-website": _3, scbl: _3 }], scalebook: _3, smartlabeling: _3 }], servebolt: _3, onstackit: [0, { runs: _3 }], 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: _6 }], coffee: _2, college: _2, cologne: _2, commbank: _2, community: [1, { nog: _3, ravendb: _3, myforum: _3 }], company: [1, { mybox: _3 }], 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, 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, { myaddr: _3, panel: _3, bearblog: _3, brave: _7, lcl: _6, lclstage: _6, stg: _6, stgstage: _6, pages: _3, r2: _3, workers: _3, deno: _3, "deno-staging": _3, deta: _3, lp: [2, { api: _3, objects: _3 }], evervault: _8, fly: _3, githubpreview: _3, gateway: _6, grebedoc: _3, botdash: _3, inbrowser: _6, "is-a-good": _3, iserv: _3, leapcell: _3, runcontainers: _3, localcert: [0, { user: _6 }], loginline: _3, barsy: _3, mediatech: _3, "mocha-sandbox": _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, { aa: _6, ab: _6, ac: _6, ad: _6, ae: _6, af: _6, ci: _6, d: _6, pa: _6, pb: _6, pc: _6, pd: _6, pe: _6, pf: _6, w: _6, wa: _6, wb: _6, wc: _6, wd: _6, we: _6, wf: _6 }], erp: _51, vercel: _3, webhare: _6, hrsn: _3, "is-a": _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: [1, { discourse: _3, imagine: _3 }], dnp: _2, docs: _2, doctor: _2, dog: _2, domains: _2, dot: _2, download: _2, drive: _2, dtv: _2, dubai: _2, dupont: _2, durban: _2, dvag: _2, dvr: _2, earth: _2, eat: _2, eco: _2, edeka: _2, education: _22, email: [1, { crisp: [0, { on: _3 }], intouch: _3, tawk: _53, tawkto: _53 }], emerck: _2, energy: _2, engineer: _2, engineering: _2, enterprises: _2, epson: _2, equipment: _2, ericsson: _2, erni: _2, esq: _2, estate: [1, { compute: _6 }], eurovision: _2, eus: [1, { party: _54 }], events: [1, { koobin: _3, co: _3 }], exchange: _2, expert: _2, exposed: _2, express: _2, extraspace: _2, fage: _2, fail: _2, fairwinds: _2, faith: _2, 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: _22, 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: _55, 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: [1, { appwrite: _3 }], globo: _2, gmail: _2, gmbh: _2, gmo: _2, gmx: _2, godaddy: _2, gold: _2, goldpoint: _2, golf: _2, goodyear: _2, goog: [1, { cloud: _3, translate: _3, usercontent: _6 }], 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, emergent: _3, fastvps: _3, myfast: _3, gadget: _3, tempurl: _3, wpmudev: _3, iserv: _3, jele: _3, mircloud: _3, bolt: _3, wp2: _3, half: _3 }], hosting: [1, { opencraft: _3 }], hot: _2, hotel: _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, 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, 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, joinmc: _3, dweb: _6, inbrowser: _6, keenetic: _3, nftstorage: _62, mypep: _3, storacha: _62, w3s: _62 }], live: [1, { aem: _3, hlx: _3, ewp: _6 }], 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: _2, mango: _2, map: _2, market: _2, marketing: _2, markets: _2, marriott: _2, marshalls: _2, mattel: _2, mba: _2, mckinsey: _2, med: _2, media: _63, 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: _2, 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, { aem: _3, alces: _6, appwrite: _3, 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, { kin: _6, service: _3, website: _3 }], ong: _2, onl: _2, online: [1, { eero: _3, "eero-stage": _3, websitebuilder: _3, leapcell: _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, codeberg: _3, deuxfleurs: _3, mybox: _3, heyflow: _3, prvcy: _3, rocky: _3, statichost: _3, pdns: _3, plesk: _3 }], panasonic: _2, paris: _2, pars: _2, partners: _2, parts: _2, party: _2, pay: _2, pccw: _2, pet: _2, pfizer: _2, pharmacy: _2, phd: _2, philips: _2, phone: _2, photo: _2, photography: _2, photos: _63, 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: _22, play: _2, playstation: _2, plumbing: _2, plus: [1, { playit: [2, { at: _6, with: _3 }] }], pnc: _2, pohl: _2, poker: _2, politie: _2, porn: _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: _6, kin: _6, 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, 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: _2, reviews: [1, { aem: _3 }], 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, { appwrite: _6, canva: _3, development: _3, ravendb: _3, liara: [2, { iran: _3 }], lovable: _3, needle: _3, build: _6, code: _6, database: _6, migration: _6, onporter: _3, repl: _3, stackit: _3, val: _51, vercel: _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: _2, scot: [1, { co: _3, me: _3, org: _3, 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, shopware: _3 }], shopping: _2, shouji: _2, show: _55, silk: _2, sina: _2, singles: _2, site: [1, { square: _3, canva: _26, cloudera: _6, convex: _24, cyon: _3, caffeine: _3, fastvps: _3, figma: _3, "figma-gov": _3, preview: _3, heyflow: _3, jele: _3, jouwweb: _3, loginline: _3, barsy: _3, co: _3, notion: _3, omniwe: _3, opensocial: _3, madethis: _3, support: _3, platformsh: _6, tst: _6, byen: _3, sol: _3, srht: _3, novecore: _3, cpanel: _3, wpsquared: _3, sourcecraft: _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: _2, song: _2, sony: _2, soy: _2, spa: _2, space: [1, { myfast: _3, heiyu: _3, hf: [2, { static: _3 }], "app-ionos": _3, project: _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, miren: _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: _22, 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: [1, { addr: _50, myaddr: _3 }], top: [1, { ntdll: _3, wadl: _6 }], toray: _2, toshiba: _2, total: _2, tours: _2, town: _2, toyota: _2, toys: _2, trade: _2, 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: [1, { hidns: _3 }], virgin: _2, visa: _2, vision: _2, viva: _2, vivo: _2, vlaanderen: _2, vodka: _2, 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: _63, wed: _2, wedding: _2, weibo: _2, weir: _2, whoswho: _2, wien: _2, wiki: _63, williamhill: _2, win: _2, windows: _2, wine: _2, winners: _2, wme: _2, woodside: _2, work: [1, { "imagine-proxy": _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, { caffeine: _3, botdash: _3, telebit: _6 }], 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, { triton: _6, stackit: _3, lima: _3 }], zuerich: _2 }]; return rules2; }(); var RESULT = getEmptyResult(); exports.getDomain = getDomain; exports.getDomainWithoutSuffix = getDomainWithoutSuffix; exports.getHostname = getHostname; exports.getPublicSuffix = getPublicSuffix; exports.getSubdomain = getSubdomain; exports.parse = parse; }); // node_modules/fetch-cookie/node_modules/tough-cookie/dist/index.cjs var require_dist2 = __commonJS((exports, module) => { function pathMatch(reqPath, cookiePath) { if (cookiePath === reqPath) { return true; } const idx = reqPath.indexOf(cookiePath); if (idx === 0) { if (cookiePath[cookiePath.length - 1] === "/") { return true; } if (reqPath.startsWith(cookiePath) && reqPath[cookiePath.length] === "/") { return true; } } return false; } function getPublicSuffix(domain, options = {}) { options = { ...defaultGetPublicSuffixOptions, ...options }; const domainParts = domain.split("."); const topLevelDomain = domainParts[domainParts.length - 1]; const allowSpecialUseDomain = !!options.allowSpecialUseDomain; const ignoreError = !!options.ignoreError; if (allowSpecialUseDomain && topLevelDomain !== undefined && SPECIAL_USE_DOMAINS.includes(topLevelDomain)) { if (domainParts.length > 1) { const secondLevelDomain = domainParts[domainParts.length - 2]; return `${secondLevelDomain}.${topLevelDomain}`; } else if (SPECIAL_TREATMENT_DOMAINS.includes(topLevelDomain)) { return topLevelDomain; } } if (!ignoreError && topLevelDomain !== undefined && SPECIAL_USE_DOMAINS.includes(topLevelDomain)) { throw new Error(`Cookie has domain set to the public suffix "${topLevelDomain}" which is a special use domain. To allow this, configure your CookieJar with {allowSpecialUseDomain: true, rejectPublicSuffixes: false}.`); } const publicSuffix = (0, import_tldts.getDomain)(domain, { allowIcannDomains: true, allowPrivateDomains: true }); if (publicSuffix) return publicSuffix; } function permuteDomain(domain, allowSpecialUseDomain) { const pubSuf = getPublicSuffix(domain, { allowSpecialUseDomain }); if (!pubSuf) { return; } if (pubSuf == domain) { return [domain]; } if (domain.slice(-1) == ".") { domain = domain.slice(0, -1); } const prefix = domain.slice(0, -(pubSuf.length + 1)); const parts = prefix.split(".").reverse(); let cur = pubSuf; const permutations = [cur]; while (parts.length) { const part = parts.shift(); cur = `${part}.${cur}`; permutations.push(cur); } return permutations; } function createPromiseCallback(cb) { let callback; let resolve; let reject; const promise = new Promise((_resolve, _reject) => { resolve = _resolve; reject = _reject; }); if (typeof cb === "function") { callback = (err, result) => { try { if (err) cb(err); else cb(null, result); } catch (e) { reject(e instanceof Error ? e : new Error); } }; } else { callback = (err, result) => { try { if (err) reject(err); else resolve(result); } catch (e) { reject(e instanceof Error ? e : new Error); } }; } return { promise, callback, resolve: (value) => { callback(null, value); return promise; }, reject: (error) => { callback(error); return promise; } }; } function inOperator(k, o) { return k in o; } function isNonEmptyString(data) { return isString(data) && data !== ""; } function isEmptyString(data) { return data === "" || data instanceof String && data.toString() === ""; } function isString(data) { return typeof data === "string" || data instanceof String; } function isObject(data) { return objectToString(data) === "[object Object]"; } function validate(bool, cbOrMessage, message) { if (bool) return; const cb = typeof cbOrMessage === "function" ? cbOrMessage : undefined; let options = typeof cbOrMessage === "function" ? message : cbOrMessage; if (!isObject(options)) options = "[object Object]"; const err = new ParameterError(safeToString(options)); if (cb) cb(err); else throw err; } function domainToASCII(domain) { return new URL(`http://${domain}`).hostname; } function canonicalDomain(domainName) { if (domainName == null) { return; } let str = domainName.trim().replace(/^\./, ""); if (IP_V6_REGEX_OBJECT.test(str)) { if (!str.startsWith("[")) { str = "[" + str; } if (!str.endsWith("]")) { str = str + "]"; } return domainToASCII(str).slice(1, -1); } if (/[^\u0001-\u007f]/.test(str)) { return domainToASCII(str); } return str.toLowerCase(); } function formatDate(date) { return date.toUTCString(); } function parseDate(cookieDate) { if (!cookieDate) { return; } const flags = { foundTime: undefined, foundDayOfMonth: undefined, foundMonth: undefined, foundYear: undefined }; const dateTokens = cookieDate.split(DELIMITER).filter((token) => token.length > 0); for (const dateToken of dateTokens) { if (flags.foundTime === undefined) { const [, hours, minutes, seconds] = TIME.exec(dateToken) || []; if (hours != null && minutes != null && seconds != null) { const parsedHours = parseInt(hours, 10); const parsedMinutes = parseInt(minutes, 10); const parsedSeconds = parseInt(seconds, 10); if (!isNaN(parsedHours) && !isNaN(parsedMinutes) && !isNaN(parsedSeconds)) { flags.foundTime = { hours: parsedHours, minutes: parsedMinutes, seconds: parsedSeconds }; continue; } } } if (flags.foundDayOfMonth === undefined && DAY_OF_MONTH.test(dateToken)) { const dayOfMonth = parseInt(dateToken, 10); if (!isNaN(dayOfMonth)) { flags.foundDayOfMonth = dayOfMonth; continue; } } if (flags.foundMonth === undefined && MONTH.test(dateToken)) { const month = months.indexOf(dateToken.substring(0, 3).toLowerCase()); if (month >= 0 && month <= 11) { flags.foundMonth = month; continue; } } if (flags.foundYear === undefined && YEAR.test(dateToken)) { const parsedYear = parseInt(dateToken, 10); if (!isNaN(parsedYear)) { flags.foundYear = parsedYear; continue; } } } if (flags.foundYear !== undefined && flags.foundYear >= 70 && flags.foundYear <= 99) { flags.foundYear += 1900; } if (flags.foundYear !== undefined && flags.foundYear >= 0 && flags.foundYear <= 69) { flags.foundYear += 2000; } if (flags.foundDayOfMonth === undefined || flags.foundMonth === undefined || flags.foundYear === undefined || flags.foundTime === undefined) { return; } if (flags.foundDayOfMonth < 1 || flags.foundDayOfMonth > 31) { return; } if (flags.foundYear < 1601) { return; } if (flags.foundTime.hours > 23) { return; } if (flags.foundTime.minutes > 59) { return; } if (flags.foundTime.seconds > 59) { return; } const date = new Date(Date.UTC(flags.foundYear, flags.foundMonth, flags.foundDayOfMonth, flags.foundTime.hours, flags.foundTime.minutes, flags.foundTime.seconds)); if (date.getUTCFullYear() !== flags.foundYear || date.getUTCMonth() !== flags.foundMonth || date.getUTCDate() !== flags.foundDayOfMonth) { return; } return date; } function trimTerminator(str) { if (isEmptyString(str)) return str; for (let t = 0;t < TERMINATORS.length; t++) { const terminator = TERMINATORS[t]; const terminatorIdx = terminator ? str.indexOf(terminator) : -1; if (terminatorIdx !== -1) { str = str.slice(0, terminatorIdx); } } return str; } function parseCookiePair(cookiePair, looseMode) { cookiePair = trimTerminator(cookiePair); let firstEq = cookiePair.indexOf("="); if (looseMode) { if (firstEq === 0) { cookiePair = cookiePair.substring(1); firstEq = cookiePair.indexOf("="); } } else { if (firstEq <= 0) { return; } } let cookieName, cookieValue; if (firstEq <= 0) { cookieName = ""; cookieValue = cookiePair.trim(); } else { cookieName = cookiePair.slice(0, firstEq).trim(); cookieValue = cookiePair.slice(firstEq + 1).trim(); } if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) { return; } const c = new Cookie; c.key = cookieName; c.value = cookieValue; return c; } function parse(str, options) { if (isEmptyString(str) || !isString(str)) { return; } str = str.trim(); const firstSemi = str.indexOf(";"); const cookiePair = firstSemi === -1 ? str : str.slice(0, firstSemi); const c = parseCookiePair(cookiePair, options?.loose ?? false); if (!c) { return; } if (firstSemi === -1) { return c; } const unparsed = str.slice(firstSemi + 1).trim(); if (unparsed.length === 0) { return c; } const cookie_avs = unparsed.split(";"); while (cookie_avs.length) { const av = (cookie_avs.shift() ?? "").trim(); if (av.length === 0) { continue; } const av_sep = av.indexOf("="); let av_key, av_value; if (av_sep === -1) { av_key = av; av_value = null; } else { av_key = av.slice(0, av_sep); av_value = av.slice(av_sep + 1); } av_key = av_key.trim().toLowerCase(); if (av_value) { av_value = av_value.trim(); } switch (av_key) { case "expires": if (av_value) { const exp = parseDate(av_value); if (exp) { c.expires = exp; } } break; case "max-age": if (av_value) { if (/^-?[0-9]+$/.test(av_value)) { const delta = parseInt(av_value, 10); c.setMaxAge(delta); } } break; case "domain": if (av_value) { const domain = av_value.trim().replace(/^\./, ""); if (domain) { c.domain = domain.toLowerCase(); } } break; case "path": c.path = av_value && av_value[0] === "/" ? av_value : null; break; case "secure": c.secure = true; break; case "httponly": c.httpOnly = true; break; case "samesite": switch (av_value ? av_value.toLowerCase() : "") { case "strict": c.sameSite = "strict"; break; case "lax": c.sameSite = "lax"; break; case "none": c.sameSite = "none"; break; default: c.sameSite = undefined; break; } break; default: c.extensions = c.extensions || []; c.extensions.push(av); break; } } return c; } function fromJSON(str) { if (!str || isEmptyString(str)) { return; } let obj; if (typeof str === "string") { try { obj = JSON.parse(str); } catch { return; } } else { obj = str; } const c = new Cookie; Cookie.serializableProperties.forEach((prop) => { if (obj && typeof obj === "object" && inOperator(prop, obj)) { const val = obj[prop]; if (val === undefined) { return; } if (inOperator(prop, cookieDefaults) && val === cookieDefaults[prop]) { return; } switch (prop) { case "key": case "value": case "sameSite": if (typeof val === "string") { c[prop] = val; } break; case "expires": case "creation": case "lastAccessed": if (typeof val === "number" || typeof val === "string" || val instanceof Date) { c[prop] = obj[prop] == "Infinity" ? "Infinity" : new Date(val); } else if (val === null) { c[prop] = null; } break; case "maxAge": if (typeof val === "number" || val === "Infinity" || val === "-Infinity") { c[prop] = val; } break; case "domain": case "path": if (typeof val === "string" || val === null) { c[prop] = val; } break; case "secure": case "httpOnly": if (typeof val === "boolean") { c[prop] = val; } break; case "extensions": if (Array.isArray(val) && val.every((item) => typeof item === "string")) { c[prop] = val; } break; case "hostOnly": case "pathIsDefault": if (typeof val === "boolean" || val === null) { c[prop] = val; } break; } } }); return c; } function cookieCompare(a, b) { let cmp; const aPathLen = a.path ? a.path.length : 0; const bPathLen = b.path ? b.path.length : 0; cmp = bPathLen - aPathLen; if (cmp !== 0) { return cmp; } const aTime = a.creation && a.creation instanceof Date ? a.creation.getTime() : MAX_TIME; const bTime = b.creation && b.creation instanceof Date ? b.creation.getTime() : MAX_TIME; cmp = aTime - bTime; if (cmp !== 0) { return cmp; } cmp = (a.creationIndex || 0) - (b.creationIndex || 0); return cmp; } function defaultPath(path) { if (!path || path.slice(0, 1) !== "/") { return "/"; } if (path === "/") { return path; } const rightSlash = path.lastIndexOf("/"); if (rightSlash === 0) { return "/"; } return path.slice(0, rightSlash); } function domainMatch(domain, cookieDomain, canonicalize) { if (domain == null || cookieDomain == null) { return; } let _str; let _domStr; if (canonicalize !== false) { _str = canonicalDomain(domain); _domStr = canonicalDomain(cookieDomain); } else { _str = domain; _domStr = cookieDomain; } if (_str == null || _domStr == null) { return; } if (_str == _domStr) { return true; } const idx = _str.lastIndexOf(_domStr); if (idx <= 0) { return false; } if (_str.length !== _domStr.length + idx) { return false; } if (_str.substring(idx - 1, idx) !== ".") { return false; } return !IP_REGEX_LOWERCASE.test(_str); } function isLoopbackV4(address) { const octets = address.split("."); return octets.length === 4 && octets[0] !== undefined && parseInt(octets[0], 10) === 127; } function isLoopbackV6(address) { return address === "::1"; } function isNormalizedLocalhostTLD(lowerHost) { return lowerHost.endsWith(".localhost"); } function isLocalHostname(host) { const lowerHost = host.toLowerCase(); return lowerHost === "localhost" || isNormalizedLocalhostTLD(lowerHost); } function hostNoBrackets(host) { if (host.length >= 2 && host.startsWith("[") && host.endsWith("]")) { return host.substring(1, host.length - 1); } return host; } function isPotentiallyTrustworthy(inputUrl, allowSecureOnLocal = true) { let url; if (typeof inputUrl === "string") { try { url = new URL(inputUrl); } catch { return false; } } else { url = inputUrl; } const scheme = url.protocol.replace(":", "").toLowerCase(); const hostname = hostNoBrackets(url.hostname).replace(/\.+$/, ""); if (scheme === "https" || scheme === "wss") { return true; } if (!allowSecureOnLocal) { return false; } if (IP_V4_REGEX_OBJECT.test(hostname)) { return isLoopbackV4(hostname); } if (IP_V6_REGEX_OBJECT.test(hostname)) { return isLoopbackV6(hostname); } return isLocalHostname(hostname); } function getCookieContext(url) { if (url && typeof url === "object" && "hostname" in url && typeof url.hostname === "string" && "pathname" in url && typeof url.pathname === "string" && "protocol" in url && typeof url.protocol === "string") { return { hostname: url.hostname, pathname: url.pathname, protocol: url.protocol }; } else if (typeof url === "string") { try { return new URL(decodeURI(url)); } catch { return new URL(url); } } else { throw new ParameterError("`url` argument is not a string or URL."); } } function checkSameSiteContext(value) { const context = String(value).toLowerCase(); if (context === "none" || context === "lax" || context === "strict") { return context; } else { return; } } function isSecurePrefixConditionMet(cookie) { const startsWithSecurePrefix = typeof cookie.key === "string" && cookie.key.startsWith("__Secure-"); return !startsWithSecurePrefix || cookie.secure; } function isHostPrefixConditionMet(cookie) { const startsWithHostPrefix = typeof cookie.key === "string" && cookie.key.startsWith("__Host-"); return !startsWithHostPrefix || Boolean(cookie.secure && cookie.hostOnly && cookie.path != null && cookie.path === "/"); } function getNormalizedPrefixSecurity(prefixSecurity) { const normalizedPrefixSecurity = prefixSecurity.toLowerCase(); switch (normalizedPrefixSecurity) { case PrefixSecurityEnum.STRICT: case PrefixSecurityEnum.SILENT: case PrefixSecurityEnum.DISABLED: return normalizedPrefixSecurity; default: return PrefixSecurityEnum.SILENT; } } function permutePath(path) { if (path === "/") { return ["/"]; } const permutations = [path]; while (path.length > 1) { const lindex = path.lastIndexOf("/"); if (lindex === 0) { break; } path = path.slice(0, lindex); permutations.push(path); } permutations.push("/"); return permutations; } function parse2(str, options) { return Cookie.parse(str, options); } function fromJSON2(str) { return Cookie.fromJSON(str); } var __defProp2 = Object.defineProperty; var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; var __getOwnPropNames2 = Object.getOwnPropertyNames; var __hasOwnProp2 = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp2(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 __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 __toCommonJS2 = (mod) => __copyProps(__defProp2({}, "__esModule", { value: true }), mod); var index_exports = {}; __export(index_exports, { Cookie: () => Cookie, CookieJar: () => CookieJar, MemoryCookieStore: () => MemoryCookieStore, ParameterError: () => ParameterError, PrefixSecurityEnum: () => PrefixSecurityEnum, Store: () => Store, canonicalDomain: () => canonicalDomain, cookieCompare: () => cookieCompare, defaultPath: () => defaultPath, domainMatch: () => domainMatch, formatDate: () => formatDate, fromJSON: () => fromJSON2, getPublicSuffix: () => getPublicSuffix, parse: () => parse2, parseDate: () => parseDate, pathMatch: () => pathMatch, permuteDomain: () => permuteDomain, permutePath: () => permutePath, version: () => version }); module.exports = __toCommonJS2(index_exports); var import_tldts = require_cjs(); var SPECIAL_USE_DOMAINS = ["local", "example", "invalid", "localhost", "test"]; var SPECIAL_TREATMENT_DOMAINS = ["localhost", "invalid"]; var defaultGetPublicSuffixOptions = { allowSpecialUseDomain: false, ignoreError: false }; var Store = class { constructor() { this.synchronous = false; } findCookie(_domain, _path, _key, _callback) { throw new Error("findCookie is not implemented"); } findCookies(_domain, _path, _allowSpecialUseDomain = false, _callback) { throw new Error("findCookies is not implemented"); } putCookie(_cookie, _callback) { throw new Error("putCookie is not implemented"); } updateCookie(_oldCookie, _newCookie, _callback) { throw new Error("updateCookie is not implemented"); } removeCookie(_domain, _path, _key, _callback) { throw new Error("removeCookie is not implemented"); } removeCookies(_domain, _path, _callback) { throw new Error("removeCookies is not implemented"); } removeAllCookies(_callback) { throw new Error("removeAllCookies is not implemented"); } getAllCookies(_callback) { throw new Error("getAllCookies is not implemented (therefore jar cannot be serialized)"); } }; var objectToString = (obj) => Object.prototype.toString.call(obj); var safeArrayToString = (arr, seenArrays) => { if (typeof arr.join !== "function") return objectToString(arr); seenArrays.add(arr); const mapped = arr.map((val) => val === null || val === undefined || seenArrays.has(val) ? "" : safeToStringImpl(val, seenArrays)); return mapped.join(); }; var safeToStringImpl = (val, seenArrays = /* @__PURE__ */ new WeakSet) => { if (typeof val !== "object" || val === null) { return String(val); } else if (typeof val.toString === "function") { return Array.isArray(val) ? safeArrayToString(val, seenArrays) : String(val); } else { return objectToString(val); } }; var safeToString = (val) => safeToStringImpl(val); var MemoryCookieStore = class extends Store { constructor() { super(); this.synchronous = true; this.idx = /* @__PURE__ */ Object.create(null); } findCookie(domain, path, key, callback) { const promiseCallback = createPromiseCallback(callback); if (domain == null || path == null || key == null) { return promiseCallback.resolve(undefined); } const result = this.idx[domain]?.[path]?.[key]; return promiseCallback.resolve(result); } findCookies(domain, path, allowSpecialUseDomain = false, callback) { if (typeof allowSpecialUseDomain === "function") { callback = allowSpecialUseDomain; allowSpecialUseDomain = true; } const results = []; const promiseCallback = createPromiseCallback(callback); if (!domain) { return promiseCallback.resolve([]); } let pathMatcher; if (!path) { pathMatcher = function matchAll(domainIndex) { for (const curPath in domainIndex) { const pathIndex = domainIndex[curPath]; for (const key in pathIndex) { const value = pathIndex[key]; if (value) { results.push(value); } } } }; } else { pathMatcher = function matchRFC(domainIndex) { for (const cookiePath in domainIndex) { if (pathMatch(path, cookiePath)) { const pathIndex = domainIndex[cookiePath]; for (const key in pathIndex) { const value = pathIndex[key]; if (value) { results.push(value); } } } } }; } const domains = permuteDomain(domain, allowSpecialUseDomain) || [domain]; const idx = this.idx; domains.forEach((curDomain) => { const domainIndex = idx[curDomain]; if (!domainIndex) { return; } pathMatcher(domainIndex); }); return promiseCallback.resolve(results); } putCookie(cookie, callback) { const promiseCallback = createPromiseCallback(callback); const { domain, path, key } = cookie; if (domain == null || path == null || key == null) { return promiseCallback.resolve(undefined); } const domainEntry = this.idx[domain] ?? /* @__PURE__ */ Object.create(null); this.idx[domain] = domainEntry; const pathEntry = domainEntry[path] ?? /* @__PURE__ */ Object.create(null); domainEntry[path] = pathEntry; pathEntry[key] = cookie; return promiseCallback.resolve(undefined); } updateCookie(_oldCookie, newCookie, callback) { if (callback) this.putCookie(newCookie, callback); else return this.putCookie(newCookie); } removeCookie(domain, path, key, callback) { const promiseCallback = createPromiseCallback(callback); delete this.idx[domain]?.[path]?.[key]; return promiseCallback.resolve(undefined); } removeCookies(domain, path, callback) { const promiseCallback = createPromiseCallback(callback); const domainEntry = this.idx[domain]; if (domainEntry) { if (path) { delete domainEntry[path]; } else { delete this.idx[domain]; } } return promiseCallback.resolve(undefined); } removeAllCookies(callback) { const promiseCallback = createPromiseCallback(callback); this.idx = /* @__PURE__ */ Object.create(null); return promiseCallback.resolve(undefined); } getAllCookies(callback) { const promiseCallback = createPromiseCallback(callback); const cookies = []; const idx = this.idx; const domains = Object.keys(idx); domains.forEach((domain) => { const domainEntry = idx[domain] ?? {}; const paths = Object.keys(domainEntry); paths.forEach((path) => { const pathEntry = domainEntry[path] ?? {}; const keys = Object.keys(pathEntry); keys.forEach((key) => { const keyEntry = pathEntry[key]; if (keyEntry != null) { cookies.push(keyEntry); } }); }); }); cookies.sort((a, b) => { return (a.creationIndex || 0) - (b.creationIndex || 0); }); return promiseCallback.resolve(cookies); } }; var ParameterError = class extends Error { }; var version = "6.0.1"; var PrefixSecurityEnum = { SILENT: "silent", STRICT: "strict", DISABLED: "unsafe-disabled" }; Object.freeze(PrefixSecurityEnum); var IP_V6_REGEX = ` \\[?(?: (?:[a-fA-F\\d]{1,4}:){7}(?:[a-fA-F\\d]{1,4}|:)| (?:[a-fA-F\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-fA-F\\d]{1,4}|:)| (?:[a-fA-F\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,2}|:)| (?:[a-fA-F\\d]{1,4}:){4}(?:(?::[a-fA-F\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,3}|:)| (?:[a-fA-F\\d]{1,4}:){3}(?:(?::[a-fA-F\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,4}|:)| (?:[a-fA-F\\d]{1,4}:){2}(?:(?::[a-fA-F\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,5}|:)| (?:[a-fA-F\\d]{1,4}:){1}(?:(?::[a-fA-F\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,6}|:)| (?::(?:(?::[a-fA-F\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,7}|:)) )(?:%[0-9a-zA-Z]{1,})?\\]? `.replace(/\s*\/\/.*$/gm, "").replace(/\n/g, "").trim(); var IP_V6_REGEX_OBJECT = new RegExp(`^${IP_V6_REGEX}\$`); var IP_V4_REGEX = `(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])`; var IP_V4_REGEX_OBJECT = new RegExp(`^${IP_V4_REGEX}\$`); var months = [ "jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec" ]; var DELIMITER = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/; var TIME = /^(\d{1,2}):(\d{1,2}):(\d{1,2})(?:[\x00-\x2F\x3A-\xFF][\x00-\xFF]*)?$/; var DAY_OF_MONTH = /^[0-9]{1,2}(?:[\x00-\x2F\x3A-\xFF][\x00-\xFF]*)?$/; var MONTH = /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)[\x00-\xFF]*$/i; var YEAR = /^[\x30-\x39]{2,4}(?:[\x00-\x2F\x3A-\xFF][\x00-\xFF]*)?$/; var COOKIE_OCTETS = /^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/; var PATH_VALUE = /[\x20-\x3A\x3C-\x7E]+/; var CONTROL_CHARS = /[\x00-\x1F]/; var TERMINATORS = ["\n", "\r", "\0"]; var cookieDefaults = { key: "", value: "", expires: "Infinity", maxAge: null, domain: null, path: null, secure: false, httpOnly: false, extensions: null, hostOnly: null, pathIsDefault: null, creation: null, lastAccessed: null, sameSite: undefined }; var _Cookie = class _Cookie2 { constructor(options = {}) { this.key = options.key ?? cookieDefaults.key; this.value = options.value ?? cookieDefaults.value; this.expires = options.expires ?? cookieDefaults.expires; this.maxAge = options.maxAge ?? cookieDefaults.maxAge; this.domain = options.domain ?? cookieDefaults.domain; this.path = options.path ?? cookieDefaults.path; this.secure = options.secure ?? cookieDefaults.secure; this.httpOnly = options.httpOnly ?? cookieDefaults.httpOnly; this.extensions = options.extensions ?? cookieDefaults.extensions; this.creation = options.creation ?? cookieDefaults.creation; this.hostOnly = options.hostOnly ?? cookieDefaults.hostOnly; this.pathIsDefault = options.pathIsDefault ?? cookieDefaults.pathIsDefault; this.lastAccessed = options.lastAccessed ?? cookieDefaults.lastAccessed; this.sameSite = options.sameSite ?? cookieDefaults.sameSite; this.creation = options.creation ?? /* @__PURE__ */ new Date; Object.defineProperty(this, "creationIndex", { configurable: false, enumerable: false, writable: true, value: ++_Cookie2.cookiesCreated }); this.creationIndex = _Cookie2.cookiesCreated; } [/* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom")]() { const now = Date.now(); const hostOnly = this.hostOnly != null ? this.hostOnly.toString() : "?"; const createAge = this.creation && this.creation !== "Infinity" ? `${String(now - this.creation.getTime())}ms` : "?"; const accessAge = this.lastAccessed && this.lastAccessed !== "Infinity" ? `${String(now - this.lastAccessed.getTime())}ms` : "?"; return `Cookie="${this.toString()}; hostOnly=${hostOnly}; aAge=${accessAge}; cAge=${createAge}"`; } toJSON() { const obj = {}; for (const prop of _Cookie2.serializableProperties) { const val = this[prop]; if (val === cookieDefaults[prop]) { continue; } switch (prop) { case "key": case "value": case "sameSite": if (typeof val === "string") { obj[prop] = val; } break; case "expires": case "creation": case "lastAccessed": if (typeof val === "number" || typeof val === "string" || val instanceof Date) { obj[prop] = val == "Infinity" ? "Infinity" : new Date(val).toISOString(); } else if (val === null) { obj[prop] = null; } break; case "maxAge": if (typeof val === "number" || val === "Infinity" || val === "-Infinity") { obj[prop] = val; } break; case "domain": case "path": if (typeof val === "string" || val === null) { obj[prop] = val; } break; case "secure": case "httpOnly": if (typeof val === "boolean") { obj[prop] = val; } break; case "extensions": if (Array.isArray(val)) { obj[prop] = val; } break; case "hostOnly": case "pathIsDefault": if (typeof val === "boolean" || val === null) { obj[prop] = val; } break; } } return obj; } clone() { return fromJSON(this.toJSON()); } validate() { if (!this.value || !COOKIE_OCTETS.test(this.value)) { return false; } if (this.expires != "Infinity" && !(this.expires instanceof Date) && !parseDate(this.expires)) { return false; } if (this.maxAge != null && this.maxAge !== "Infinity" && (this.maxAge === "-Infinity" || this.maxAge <= 0)) { return false; } if (this.path != null && !PATH_VALUE.test(this.path)) { return false; } const cdomain = this.cdomain(); if (cdomain) { if (cdomain.match(/\.$/)) { return false; } const suffix = getPublicSuffix(cdomain); if (suffix == null) { return false; } } return true; } setExpires(exp) { if (exp instanceof Date) { this.expires = exp; } else { this.expires = parseDate(exp) || "Infinity"; } } setMaxAge(age) { if (age === Infinity) { this.maxAge = "Infinity"; } else if (age === -Infinity) { this.maxAge = "-Infinity"; } else { this.maxAge = age; } } cookieString() { const val = this.value || ""; if (this.key) { return `${this.key}=${val}`; } return val; } toString() { let str = this.cookieString(); if (this.expires != "Infinity") { if (this.expires instanceof Date) { str += `; Expires=${formatDate(this.expires)}`; } } if (this.maxAge != null && this.maxAge != Infinity) { str += `; Max-Age=${String(this.maxAge)}`; } if (this.domain && !this.hostOnly) { str += `; Domain=${this.domain}`; } if (this.path) { str += `; Path=${this.path}`; } if (this.secure) { str += "; Secure"; } if (this.httpOnly) { str += "; HttpOnly"; } if (this.sameSite && this.sameSite !== "none") { if (this.sameSite.toLowerCase() === _Cookie2.sameSiteCanonical.lax.toLowerCase()) { str += `; SameSite=${_Cookie2.sameSiteCanonical.lax}`; } else if (this.sameSite.toLowerCase() === _Cookie2.sameSiteCanonical.strict.toLowerCase()) { str += `; SameSite=${_Cookie2.sameSiteCanonical.strict}`; } else { str += `; SameSite=${this.sameSite}`; } } if (this.extensions) { this.extensions.forEach((ext) => { str += `; ${ext}`; }); } return str; } TTL(now = Date.now()) { if (this.maxAge != null && typeof this.maxAge === "number") { return this.maxAge <= 0 ? 0 : this.maxAge * 1000; } const expires = this.expires; if (expires === "Infinity") { return Infinity; } return (expires?.getTime() ?? now) - (now || Date.now()); } expiryTime(now) { if (this.maxAge != null) { const relativeTo = now || this.lastAccessed || /* @__PURE__ */ new Date; const maxAge = typeof this.maxAge === "number" ? this.maxAge : -Infinity; const age = maxAge <= 0 ? -Infinity : maxAge * 1000; if (relativeTo === "Infinity") { return Infinity; } return relativeTo.getTime() + age; } if (this.expires == "Infinity") { return Infinity; } return this.expires ? this.expires.getTime() : undefined; } expiryDate(now) { const millisec = this.expiryTime(now); if (millisec == Infinity) { return /* @__PURE__ */ new Date(2147483647000); } else if (millisec == -Infinity) { return /* @__PURE__ */ new Date(0); } else { return millisec == undefined ? undefined : new Date(millisec); } } isPersistent() { return this.maxAge != null || this.expires != "Infinity"; } canonicalizedDomain() { return canonicalDomain(this.domain); } cdomain() { return canonicalDomain(this.domain); } static parse(str, options) { return parse(str, options); } static fromJSON(str) { return fromJSON(str); } }; _Cookie.cookiesCreated = 0; _Cookie.sameSiteLevel = { strict: 3, lax: 2, none: 1 }; _Cookie.sameSiteCanonical = { strict: "Strict", lax: "Lax" }; _Cookie.serializableProperties = [ "key", "value", "expires", "maxAge", "domain", "path", "secure", "httpOnly", "extensions", "hostOnly", "pathIsDefault", "creation", "lastAccessed", "sameSite" ]; var Cookie = _Cookie; var MAX_TIME = 2147483647000; var IP_REGEX_LOWERCASE = /(?:^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$)|(?:^(?:(?:[a-f\d]{1,4}:){7}(?:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,2}|:)|(?:[a-f\d]{1,4}:){4}(?:(?::[a-f\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,3}|:)|(?:[a-f\d]{1,4}:){3}(?:(?::[a-f\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,4}|:)|(?:[a-f\d]{1,4}:){2}(?:(?::[a-f\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,5}|:)|(?:[a-f\d]{1,4}:){1}(?:(?::[a-f\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,6}|:)|(?::(?:(?::[a-f\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,7}|:)))$)/; var defaultSetCookieOptions = { loose: false, sameSiteContext: undefined, ignoreError: false, http: true }; var defaultGetCookieOptions = { http: true, expire: true, allPaths: false, sameSiteContext: undefined, sort: undefined }; var SAME_SITE_CONTEXT_VAL_ERR = 'Invalid sameSiteContext option for getCookies(); expected one of "strict", "lax", or "none"'; var CookieJar = class _CookieJar { constructor(store, options) { if (typeof options === "boolean") { options = { rejectPublicSuffixes: options }; } this.rejectPublicSuffixes = options?.rejectPublicSuffixes ?? true; this.enableLooseMode = options?.looseMode ?? false; this.allowSpecialUseDomain = options?.allowSpecialUseDomain ?? true; this.allowSecureOnLocal = options?.allowSecureOnLocal ?? true; this.prefixSecurity = getNormalizedPrefixSecurity(options?.prefixSecurity ?? "silent"); this.store = store ?? new MemoryCookieStore; } callSync(fn) { if (!this.store.synchronous) { throw new Error("CookieJar store is not synchronous; use async API instead."); } let syncErr = null; let syncResult = undefined; try { fn.call(this, (error, result) => { syncErr = error; syncResult = result; }); } catch (err) { syncErr = err; } if (syncErr) throw syncErr; return syncResult; } setCookie(cookie, url, options, callback) { if (typeof options === "function") { callback = options; options = undefined; } const promiseCallback = createPromiseCallback(callback); const cb = promiseCallback.callback; let context; try { if (typeof url === "string") { validate(isNonEmptyString(url), callback, safeToString(options)); } context = getCookieContext(url); if (typeof url === "function") { return promiseCallback.reject(new Error("No URL was specified")); } if (typeof options === "function") { options = defaultSetCookieOptions; } validate(typeof cb === "function", cb); if (!isNonEmptyString(cookie) && !isObject(cookie) && cookie instanceof String && cookie.length == 0) { return promiseCallback.resolve(undefined); } } catch (err) { return promiseCallback.reject(err); } const host = canonicalDomain(context.hostname) ?? null; const loose = options?.loose || this.enableLooseMode; let sameSiteContext = null; if (options?.sameSiteContext) { sameSiteContext = checkSameSiteContext(options.sameSiteContext); if (!sameSiteContext) { return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR)); } } if (typeof cookie === "string" || cookie instanceof String) { const parsedCookie = Cookie.parse(cookie.toString(), { loose }); if (!parsedCookie) { const err = new Error("Cookie failed to parse"); return options?.ignoreError ? promiseCallback.resolve(undefined) : promiseCallback.reject(err); } cookie = parsedCookie; } else if (!(cookie instanceof Cookie)) { const err = new Error("First argument to setCookie must be a Cookie object or string"); return options?.ignoreError ? promiseCallback.resolve(undefined) : promiseCallback.reject(err); } const now = options?.now || /* @__PURE__ */ new Date; if (this.rejectPublicSuffixes && cookie.domain) { try { const cdomain = cookie.cdomain(); const suffix = typeof cdomain === "string" ? getPublicSuffix(cdomain, { allowSpecialUseDomain: this.allowSpecialUseDomain, ignoreError: options?.ignoreError }) : null; if (suffix == null && !IP_V6_REGEX_OBJECT.test(cookie.domain)) { const err = new Error("Cookie has domain set to a public suffix"); return options?.ignoreError ? promiseCallback.resolve(undefined) : promiseCallback.reject(err); } } catch (err) { return options?.ignoreError ? promiseCallback.resolve(undefined) : promiseCallback.reject(err); } } if (cookie.domain) { if (!domainMatch(host ?? undefined, cookie.cdomain() ?? undefined, false)) { const err = new Error(`Cookie not in this host's domain. Cookie:${cookie.cdomain() ?? "null"} Request:${host ?? "null"}`); return options?.ignoreError ? promiseCallback.resolve(undefined) : promiseCallback.reject(err); } if (cookie.hostOnly == null) { cookie.hostOnly = false; } } else { cookie.hostOnly = true; cookie.domain = host; } if (!cookie.path || cookie.path[0] !== "/") { cookie.path = defaultPath(context.pathname); cookie.pathIsDefault = true; } if (options?.http === false && cookie.httpOnly) { const err = new Error("Cookie is HttpOnly and this isn't an HTTP API"); return options.ignoreError ? promiseCallback.resolve(undefined) : promiseCallback.reject(err); } if (cookie.sameSite !== "none" && cookie.sameSite !== undefined && sameSiteContext) { if (sameSiteContext === "none") { const err = new Error("Cookie is SameSite but this is a cross-origin request"); return options?.ignoreError ? promiseCallback.resolve(undefined) : promiseCallback.reject(err); } } const ignoreErrorForPrefixSecurity = this.prefixSecurity === PrefixSecurityEnum.SILENT; const prefixSecurityDisabled = this.prefixSecurity === PrefixSecurityEnum.DISABLED; if (!prefixSecurityDisabled) { let errorFound = false; let errorMsg; if (!isSecurePrefixConditionMet(cookie)) { errorFound = true; errorMsg = "Cookie has __Secure prefix but Secure attribute is not set"; } else if (!isHostPrefixConditionMet(cookie)) { errorFound = true; errorMsg = "Cookie has __Host prefix but either Secure or HostOnly attribute is not set or Path is not '/'"; } if (errorFound) { return options?.ignoreError || ignoreErrorForPrefixSecurity ? promiseCallback.resolve(undefined) : promiseCallback.reject(new Error(errorMsg)); } } const store = this.store; if (!store.updateCookie) { store.updateCookie = async function(_oldCookie, newCookie, cb2) { return this.putCookie(newCookie).then(() => cb2?.(null), (error) => cb2?.(error)); }; } const withCookie = function withCookie2(err, oldCookie) { if (err) { cb(err); return; } const next = function(err2) { if (err2) { cb(err2); } else if (typeof cookie === "string") { cb(null, undefined); } else { cb(null, cookie); } }; if (oldCookie) { if (options && "http" in options && options.http === false && oldCookie.httpOnly) { err = new Error("old Cookie is HttpOnly and this isn't an HTTP API"); if (options.ignoreError) cb(null, undefined); else cb(err); return; } if (cookie instanceof Cookie) { cookie.creation = oldCookie.creation; cookie.creationIndex = oldCookie.creationIndex; cookie.lastAccessed = now; store.updateCookie(oldCookie, cookie, next); } } else { if (cookie instanceof Cookie) { cookie.creation = cookie.lastAccessed = now; store.putCookie(cookie, next); } } }; store.findCookie(cookie.domain, cookie.path, cookie.key, withCookie); return promiseCallback.promise; } setCookieSync(cookie, url, options) { const setCookieFn = options ? this.setCookie.bind(this, cookie, url, options) : this.setCookie.bind(this, cookie, url); return this.callSync(setCookieFn); } getCookies(url, options, callback) { if (typeof options === "function") { callback = options; options = defaultGetCookieOptions; } else if (options === undefined) { options = defaultGetCookieOptions; } const promiseCallback = createPromiseCallback(callback); const cb = promiseCallback.callback; let context; try { if (typeof url === "string") { validate(isNonEmptyString(url), cb, url); } context = getCookieContext(url); validate(isObject(options), cb, safeToString(options)); validate(typeof cb === "function", cb); } catch (parameterError) { return promiseCallback.reject(parameterError); } const host = canonicalDomain(context.hostname); const path = context.pathname || "/"; const potentiallyTrustworthy = isPotentiallyTrustworthy(url, this.allowSecureOnLocal); let sameSiteLevel = 0; if (options.sameSiteContext) { const sameSiteContext = checkSameSiteContext(options.sameSiteContext); if (sameSiteContext == null) { return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR)); } sameSiteLevel = Cookie.sameSiteLevel[sameSiteContext]; if (!sameSiteLevel) { return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR)); } } const http = options.http ?? true; const now = Date.now(); const expireCheck = options.expire ?? true; const allPaths = options.allPaths ?? false; const store = this.store; function matchingCookie(c) { if (c.hostOnly) { if (c.domain != host) { return false; } } else { if (!domainMatch(host ?? undefined, c.domain ?? undefined, false)) { return false; } } if (!allPaths && typeof c.path === "string" && !pathMatch(path, c.path)) { return false; } if (c.secure && !potentiallyTrustworthy) { return false; } if (c.httpOnly && !http) { return false; } if (sameSiteLevel) { let cookieLevel; if (c.sameSite === "lax") { cookieLevel = Cookie.sameSiteLevel.lax; } else if (c.sameSite === "strict") { cookieLevel = Cookie.sameSiteLevel.strict; } else { cookieLevel = Cookie.sameSiteLevel.none; } if (cookieLevel > sameSiteLevel) { return false; } } const expiryTime = c.expiryTime(); if (expireCheck && expiryTime != null && expiryTime <= now) { store.removeCookie(c.domain, c.path, c.key, () => { }); return false; } return true; } store.findCookies(host, allPaths ? null : path, this.allowSpecialUseDomain, (err, cookies) => { if (err) { cb(err); return; } if (cookies == null) { cb(null, []); return; } cookies = cookies.filter(matchingCookie); if ("sort" in options && options.sort !== false) { cookies = cookies.sort(cookieCompare); } const now2 = /* @__PURE__ */ new Date; for (const cookie of cookies) { cookie.lastAccessed = now2; } cb(null, cookies); }); return promiseCallback.promise; } getCookiesSync(url, options) { return this.callSync(this.getCookies.bind(this, url, options)) ?? []; } getCookieString(url, options, callback) { if (typeof options === "function") { callback = options; options = undefined; } const promiseCallback = createPromiseCallback(callback); const next = function(err, cookies) { if (err) { promiseCallback.callback(err); } else { promiseCallback.callback(null, cookies?.sort(cookieCompare).map((c) => c.cookieString()).join("; ")); } }; this.getCookies(url, options, next); return promiseCallback.promise; } getCookieStringSync(url, options) { return this.callSync(options ? this.getCookieString.bind(this, url, options) : this.getCookieString.bind(this, url)) ?? ""; } getSetCookieStrings(url, options, callback) { if (typeof options === "function") { callback = options; options = undefined; } const promiseCallback = createPromiseCallback(callback); const next = function(err, cookies) { if (err) { promiseCallback.callback(err); } else { promiseCallback.callback(null, cookies?.map((c) => { return c.toString(); })); } }; this.getCookies(url, options, next); return promiseCallback.promise; } getSetCookieStringsSync(url, options = {}) { return this.callSync(this.getSetCookieStrings.bind(this, url, options)) ?? []; } serialize(callback) { const promiseCallback = createPromiseCallback(callback); let type = this.store.constructor.name; if (isObject(type)) { type = null; } const serialized = { version: `tough-cookie@${version}`, storeType: type, rejectPublicSuffixes: this.rejectPublicSuffixes, enableLooseMode: this.enableLooseMode, allowSpecialUseDomain: this.allowSpecialUseDomain, prefixSecurity: getNormalizedPrefixSecurity(this.prefixSecurity), cookies: [] }; if (typeof this.store.getAllCookies !== "function") { return promiseCallback.reject(new Error("store does not support getAllCookies and cannot be serialized")); } this.store.getAllCookies((err, cookies) => { if (err) { promiseCallback.callback(err); return; } if (cookies == null) { promiseCallback.callback(null, serialized); return; } serialized.cookies = cookies.map((cookie) => { const serializedCookie = cookie.toJSON(); delete serializedCookie.creationIndex; return serializedCookie; }); promiseCallback.callback(null, serialized); }); return promiseCallback.promise; } serializeSync() { return this.callSync((callback) => { this.serialize(callback); }); } toJSON() { return this.serializeSync(); } _importCookies(serialized, callback) { let cookies = undefined; if (serialized && typeof serialized === "object" && inOperator("cookies", serialized) && Array.isArray(serialized.cookies)) { cookies = serialized.cookies; } if (!cookies) { callback(new Error("serialized jar has no cookies array"), undefined); return; } cookies = cookies.slice(); const putNext = (err) => { if (err) { callback(err, undefined); return; } if (Array.isArray(cookies)) { if (!cookies.length) { callback(err, this); return; } let cookie; try { cookie = Cookie.fromJSON(cookies.shift()); } catch (e) { callback(e instanceof Error ? e : new Error, undefined); return; } if (cookie === undefined) { putNext(null); return; } this.store.putCookie(cookie, putNext); } }; putNext(null); } _importCookiesSync(serialized) { this.callSync(this._importCookies.bind(this, serialized)); } clone(newStore, callback) { if (typeof newStore === "function") { callback = newStore; newStore = undefined; } const promiseCallback = createPromiseCallback(callback); const cb = promiseCallback.callback; this.serialize((err, serialized) => { if (err) { return promiseCallback.reject(err); } return _CookieJar.deserialize(serialized ?? "", newStore, cb); }); return promiseCallback.promise; } _cloneSync(newStore) { const cloneFn = newStore && typeof newStore !== "function" ? this.clone.bind(this, newStore) : this.clone.bind(this); return this.callSync((callback) => { cloneFn(callback); }); } cloneSync(newStore) { if (!newStore) { return this._cloneSync(); } if (!newStore.synchronous) { throw new Error("CookieJar clone destination store is not synchronous; use async API instead."); } return this._cloneSync(newStore); } removeAllCookies(callback) { const promiseCallback = createPromiseCallback(callback); const cb = promiseCallback.callback; const store = this.store; if (typeof store.removeAllCookies === "function" && store.removeAllCookies !== Store.prototype.removeAllCookies) { store.removeAllCookies(cb); return promiseCallback.promise; } store.getAllCookies((err, cookies) => { if (err) { cb(err); return; } if (!cookies) { cookies = []; } if (cookies.length === 0) { cb(null, undefined); return; } let completedCount = 0; const removeErrors = []; const removeCookieCb = function removeCookieCb2(removeErr) { if (removeErr) { removeErrors.push(removeErr); } completedCount++; if (completedCount === cookies.length) { if (removeErrors[0]) cb(removeErrors[0]); else cb(null, undefined); return; } }; cookies.forEach((cookie) => { store.removeCookie(cookie.domain, cookie.path, cookie.key, removeCookieCb); }); }); return promiseCallback.promise; } removeAllCookiesSync() { this.callSync((callback) => { this.removeAllCookies(callback); }); } static deserialize(strOrObj, store, callback) { if (typeof store === "function") { callback = store; store = undefined; } const promiseCallback = createPromiseCallback(callback); let serialized; if (typeof strOrObj === "string") { try { serialized = JSON.parse(strOrObj); } catch (e) { return promiseCallback.reject(e instanceof Error ? e : new Error); } } else { serialized = strOrObj; } const readSerializedProperty = (property) => { return serialized && typeof serialized === "object" && inOperator(property, serialized) ? serialized[property] : undefined; }; const readSerializedBoolean = (property) => { const value = readSerializedProperty(property); return typeof value === "boolean" ? value : undefined; }; const readSerializedString = (property) => { const value = readSerializedProperty(property); return typeof value === "string" ? value : undefined; }; const jar = new _CookieJar(store, { rejectPublicSuffixes: readSerializedBoolean("rejectPublicSuffixes"), looseMode: readSerializedBoolean("enableLooseMode"), allowSpecialUseDomain: readSerializedBoolean("allowSpecialUseDomain"), prefixSecurity: getNormalizedPrefixSecurity(readSerializedString("prefixSecurity") ?? "silent") }); jar._importCookies(serialized, (err) => { if (err) { promiseCallback.callback(err); return; } promiseCallback.callback(null, jar); }); return promiseCallback.promise; } static deserializeSync(strOrObj, store) { const serialized = typeof strOrObj === "string" ? JSON.parse(strOrObj) : strOrObj; const readSerializedProperty = (property) => { return serialized && typeof serialized === "object" && inOperator(property, serialized) ? serialized[property] : undefined; }; const readSerializedBoolean = (property) => { const value = readSerializedProperty(property); return typeof value === "boolean" ? value : undefined; }; const readSerializedString = (property) => { const value = readSerializedProperty(property); return typeof value === "string" ? value : undefined; }; const jar = new _CookieJar(store, { rejectPublicSuffixes: readSerializedBoolean("rejectPublicSuffixes"), looseMode: readSerializedBoolean("enableLooseMode"), allowSpecialUseDomain: readSerializedBoolean("allowSpecialUseDomain"), prefixSecurity: getNormalizedPrefixSecurity(readSerializedString("prefixSecurity") ?? "silent") }); if (!jar.store.synchronous) { throw new Error("CookieJar store is not synchronous; use async API instead."); } jar._importCookiesSync(serialized); return jar; } static fromJSON(jsonString, store) { return _CookieJar.deserializeSync(jsonString, store); } }; /*! * Copyright (c) 2015-2020, Salesforce.com, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. Neither the name of Salesforce.com nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ }); // node_modules/set-cookie-parser/lib/set-cookie.js var require_set_cookie = __commonJS((exports, module) => { function isForbiddenKey(key) { return typeof key !== "string" || key in {}; } function createNullObj() { return Object.create(null); } function isNonEmptyString(str) { return typeof str === "string" && !!str.trim(); } function parseString(setCookieValue, options) { var parts = setCookieValue.split(";").filter(isNonEmptyString); var nameValuePairStr = parts.shift(); var parsed = parseNameValuePair(nameValuePairStr); var name = parsed.name; var value = parsed.value; options = options ? Object.assign({}, defaultParseOptions, options) : defaultParseOptions; if (isForbiddenKey(name)) { return null; } try { value = options.decodeValues ? decodeURIComponent(value) : value; } catch (e) { console.error("set-cookie-parser: failed to decode cookie value. Set options.decodeValues=false to disable decoding.", e); } var cookie = createNullObj(); cookie.name = name; cookie.value = value; parts.forEach(function(part) { var sides = part.split("="); var key = sides.shift().trimLeft().toLowerCase(); if (isForbiddenKey(key)) { return; } var value2 = sides.join("="); if (key === "expires") { cookie.expires = new Date(value2); } else if (key === "max-age") { var n = parseInt(value2, 10); if (!Number.isNaN(n)) cookie.maxAge = n; } else if (key === "secure") { cookie.secure = true; } else if (key === "httponly") { cookie.httpOnly = true; } else if (key === "samesite") { cookie.sameSite = value2; } else if (key === "partitioned") { cookie.partitioned = true; } else if (key) { cookie[key] = value2; } }); return cookie; } function parseNameValuePair(nameValuePairStr) { var name = ""; var value = ""; var nameValueArr = nameValuePairStr.split("="); if (nameValueArr.length > 1) { name = nameValueArr.shift(); value = nameValueArr.join("="); } else { value = nameValuePairStr; } return { name, value }; } function parse(input, options) { options = options ? Object.assign({}, defaultParseOptions, options) : defaultParseOptions; if (!input) { if (!options.map) { return []; } else { return createNullObj(); } } if (input.headers) { if (typeof input.headers.getSetCookie === "function") { input = input.headers.getSetCookie(); } else if (input.headers["set-cookie"]) { input = input.headers["set-cookie"]; } else { var sch = input.headers[Object.keys(input.headers).find(function(key) { return key.toLowerCase() === "set-cookie"; })]; if (!sch && input.headers.cookie && !options.silent) { console.warn("Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning."); } input = sch; } } if (!Array.isArray(input)) { input = [input]; } if (!options.map) { return input.filter(isNonEmptyString).map(function(str) { return parseString(str, options); }).filter(Boolean); } else { var cookies = createNullObj(); return input.filter(isNonEmptyString).reduce(function(cookies2, str) { var cookie = parseString(str, options); if (cookie && !isForbiddenKey(cookie.name)) { cookies2[cookie.name] = cookie; } return cookies2; }, cookies); } } function splitCookiesString(cookiesString) { if (Array.isArray(cookiesString)) { return cookiesString; } if (typeof cookiesString !== "string") { return []; } var cookiesStrings = []; var pos = 0; var start; var ch; var lastComma; var nextStart; var cookiesSeparatorFound; function skipWhitespace() { while (pos < cookiesString.length && /\s/.test(cookiesString.charAt(pos))) { pos += 1; } return pos < cookiesString.length; } function notSpecialChar() { ch = cookiesString.charAt(pos); return ch !== "=" && ch !== ";" && ch !== ","; } while (pos < cookiesString.length) { start = pos; cookiesSeparatorFound = false; while (skipWhitespace()) { ch = cookiesString.charAt(pos); if (ch === ",") { lastComma = pos; pos += 1; skipWhitespace(); nextStart = pos; while (pos < cookiesString.length && notSpecialChar()) { pos += 1; } if (pos < cookiesString.length && cookiesString.charAt(pos) === "=") { cookiesSeparatorFound = true; pos = nextStart; cookiesStrings.push(cookiesString.substring(start, lastComma)); start = pos; } else { pos = lastComma + 1; } } else { pos += 1; } } if (!cookiesSeparatorFound || pos >= cookiesString.length) { cookiesStrings.push(cookiesString.substring(start, cookiesString.length)); } } return cookiesStrings; } var defaultParseOptions = { decodeValues: true, map: false, silent: false }; module.exports = parse; module.exports.parse = parse; module.exports.parseString = parseString; module.exports.splitCookiesString = splitCookiesString; }); // node_modules/fetch-cookie/cjs/index.js var require_cjs2 = __commonJS((exports, module) => { function isDomainOrSubdomain(destination, original) { const orig = new URL(original).hostname; const dest = new URL(destination).hostname; return orig === dest || orig.endsWith(`.${dest}`); } function parseReferrerPolicy(policyHeader) { const policyTokens = policyHeader.split(/[,\s]+/); let policy = ""; for (const token of policyTokens) { if (token !== "" && referrerPolicy.has(token)) { policy = token; } } return policy; } function doNothing(init, name) { } function callDeleteMethod(init, name) { init.headers.delete(name); } function deleteFromObject(init, name) { const headers = init.headers; for (const key of Object.keys(headers)) { if (key.toLowerCase() === name) { delete headers[key]; } } } function identifyDeleteHeader(init) { if (init.headers == null) { return doNothing; } if (typeof init.headers.delete === "function") { return callDeleteMethod; } return deleteFromObject; } function isRedirect(status) { return redirectStatus.has(status); } async function handleRedirect(fetchImpl, init, response) { switch (init.redirect ?? "follow") { case "error": throw new TypeError(`URI requested responded with a redirect and redirect mode is set to error: ${response.url}`); case "manual": return response; case "follow": break; default: throw new TypeError(`Invalid redirect option: ${init.redirect}`); } const locationUrl = response.headers.get("location"); if (locationUrl === null) { return response; } const requestUrl = response.url; const redirectUrl = new URL(locationUrl, requestUrl).toString(); const redirectCount = init.redirectCount ?? 0; const maxRedirect = init.maxRedirect ?? 20; if (redirectCount >= maxRedirect) { throw new TypeError(`Reached maximum redirect of ${maxRedirect} for URL: ${requestUrl}`); } init = { ...init, redirectCount: redirectCount + 1 }; const deleteHeader = identifyDeleteHeader(init); if (!isDomainOrSubdomain(requestUrl, redirectUrl)) { for (const name of ["authorization", "www-authenticate", "cookie", "cookie2"]) { deleteHeader(init, name); } } const maybeNodeStreamBody = init.body; const maybeStreamBody = init.body; if (response.status !== 303 && init.body != null && (typeof maybeNodeStreamBody.pipe === "function" || typeof maybeStreamBody.pipeTo === "function")) { throw new TypeError("Cannot follow redirect with body being a readable stream"); } if (response.status === 303 || (response.status === 301 || response.status === 302) && init.method === "POST") { init.method = "GET"; init.body = undefined; deleteHeader(init, "content-length"); } if (response.headers.has("referrer-policy")) { init.referrerPolicy = parseReferrerPolicy(response.headers.get("referrer-policy")); } deleteHeader(init, "host"); return await fetchImpl(redirectUrl, init); } function addCookiesToRequest(input, init, cookie) { if (cookie === "") { return init; } const maybeRequest = input; const maybeHeaders = init.headers; if (maybeRequest.headers && typeof maybeRequest.headers.append === "function") { maybeRequest.headers.append("cookie", cookie); } else if (maybeHeaders && typeof maybeHeaders.append === "function") { maybeHeaders.append("cookie", cookie); } else if (Array.isArray(init.headers)) { const headers = [...init.headers]; const cookieHeaderIndex = headers.findIndex((header) => header[0].toLowerCase() === "cookie"); if (cookieHeaderIndex === -1) { headers.push(["cookie", cookie]); } else { headers[cookieHeaderIndex] = ["cookie", cookie]; } init = { ...init, headers }; } else { init = { ...init, headers: { ...init.headers, cookie } }; } return init; } function getCookiesFromResponse(response) { const maybeNodeFetchHeaders = response.headers; if (typeof maybeNodeFetchHeaders.getAll === "function") { return maybeNodeFetchHeaders.getAll("set-cookie"); } if (typeof maybeNodeFetchHeaders.raw === "function") { const headers = maybeNodeFetchHeaders.raw(); if (Array.isArray(headers["set-cookie"])) { return headers["set-cookie"]; } return []; } const cookieString = response.headers.get("set-cookie"); if (cookieString !== null) { return (0, import_set_cookie_parser.splitCookiesString)(cookieString); } return []; } function fetchCookie(fetch, jar, ignoreError = true) { const actualFetch = fetch; const actualJar = jar ?? new tough.CookieJar; async function fetchCookieWrapper(input, init) { const originalInit = init ?? {}; init = { ...init, redirect: "manual" }; const requestUrl = typeof input === "string" ? input : ("href" in input) ? input.href : input.url; const cookie = await actualJar.getCookieString(requestUrl); init = addCookiesToRequest(input, init, cookie); const response = await actualFetch(input, init); const cookies = getCookiesFromResponse(response); await Promise.all(cookies.map(async (cookie2) => await actualJar.setCookie(cookie2, response.url, { ignoreError }))); if ((init.redirectCount ?? 0) > 0) { Object.defineProperty(response, "redirected", { value: true }); } if (!isRedirect(response.status)) { return response; } return await handleRedirect(fetchCookieWrapper, originalInit, response); } fetchCookieWrapper.toughCookie = tough; fetchCookieWrapper.cookieJar = actualJar; return fetchCookieWrapper; } 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 __export = (target, all) => { for (var name in all) __defProp2(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 __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)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { value: mod, enumerable: true }) : target, mod)); var __toCommonJS2 = (mod) => __copyProps(__defProp2({}, "__esModule", { value: true }), mod); var src_exports = {}; __export(src_exports, { default: () => fetchCookie }); module.exports = __toCommonJS2(src_exports); var tough = __toESM2(require_dist2(), 1); var import_set_cookie_parser = require_set_cookie(); var referrerPolicy = /* @__PURE__ */ new Set([ "", "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "strict-origin", "origin-when-cross-origin", "strict-origin-when-cross-origin", "unsafe-url" ]); var redirectStatus = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]); fetchCookie.toughCookie = tough; }); // node_modules/tough-cookie/dist/pathMatch.js var require_pathMatch = __commonJS((exports) => { function pathMatch(reqPath, cookiePath) { if (cookiePath === reqPath) { return true; } const idx = reqPath.indexOf(cookiePath); if (idx === 0) { if (cookiePath[cookiePath.length - 1] === "/") { return true; } if (reqPath.startsWith(cookiePath) && reqPath[cookiePath.length] === "/") { return true; } } return false; } Object.defineProperty(exports, "__esModule", { value: true }); exports.pathMatch = pathMatch; }); // node_modules/tldts/dist/cjs/index.js var require_cjs3 = __commonJS((exports) => { function shareSameDomainSuffix(hostname, vhost) { if (hostname.endsWith(vhost)) { return hostname.length === vhost.length || hostname[hostname.length - vhost.length - 1] === "."; } return false; } function extractDomainWithSuffix(hostname, publicSuffix) { const publicSuffixIndex = hostname.length - publicSuffix.length - 2; const lastDotBeforeSuffixIndex = hostname.lastIndexOf(".", publicSuffixIndex); if (lastDotBeforeSuffixIndex === -1) { return hostname; } return hostname.slice(lastDotBeforeSuffixIndex + 1); } function getDomain$1(suffix, hostname, options) { if (options.validHosts !== null) { const validHosts = options.validHosts; for (const vhost of validHosts) { if (shareSameDomainSuffix(hostname, vhost)) { return vhost; } } } let numberOfLeadingDots = 0; if (hostname.startsWith(".")) { while (numberOfLeadingDots < hostname.length && hostname[numberOfLeadingDots] === ".") { numberOfLeadingDots += 1; } } if (suffix.length === hostname.length - numberOfLeadingDots) { return null; } return extractDomainWithSuffix(hostname, suffix); } function getDomainWithoutSuffix$1(domain, suffix) { return domain.slice(0, -suffix.length - 1); } function extractHostname(url, urlIsValidHostname) { let start = 0; let end = url.length; let hasUpper = false; if (!urlIsValidHostname) { if (url.startsWith("data:")) { return null; } while (start < url.length && url.charCodeAt(start) <= 32) { start += 1; } while (end > start + 1 && url.charCodeAt(end - 1) <= 32) { end -= 1; } if (url.charCodeAt(start) === 47 && url.charCodeAt(start + 1) === 47) { start += 2; } else { const indexOfProtocol = url.indexOf(":/", start); if (indexOfProtocol !== -1) { const protocolSize = indexOfProtocol - start; const c0 = url.charCodeAt(start); const c1 = url.charCodeAt(start + 1); const c2 = url.charCodeAt(start + 2); const c3 = url.charCodeAt(start + 3); const c4 = url.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 = url.charCodeAt(i) | 32; if (!(lowerCaseCode >= 97 && lowerCaseCode <= 122 || lowerCaseCode >= 48 && lowerCaseCode <= 57 || lowerCaseCode === 46 || lowerCaseCode === 45 || lowerCaseCode === 43)) { return null; } } } start = indexOfProtocol + 2; while (url.charCodeAt(start) === 47) { start += 1; } } } let indexOfIdentifier = -1; let indexOfClosingBracket = -1; let indexOfPort = -1; for (let i = start;i < end; i += 1) { const code = url.charCodeAt(i); if (code === 35 || code === 47 || code === 63) { end = i; break; } else if (code === 64) { indexOfIdentifier = i; } else if (code === 93) { indexOfClosingBracket = i; } else if (code === 58) { indexOfPort = i; } else if (code >= 65 && code <= 90) { hasUpper = true; } } if (indexOfIdentifier !== -1 && indexOfIdentifier > start && indexOfIdentifier < end) { start = indexOfIdentifier + 1; } if (url.charCodeAt(start) === 91) { if (indexOfClosingBracket !== -1) { return url.slice(start + 1, indexOfClosingBracket).toLowerCase(); } return null; } else if (indexOfPort !== -1 && indexOfPort > start && indexOfPort < end) { end = indexOfPort; } } while (end > start + 1 && url.charCodeAt(end - 1) === 46) { end -= 1; } const hostname = start !== 0 || end !== url.length ? url.slice(start, end) : url; if (hasUpper) { return hostname.toLowerCase(); } return hostname; } function isProbablyIpv4(hostname) { if (hostname.length < 7) { return false; } if (hostname.length > 15) { return false; } let numberOfDots = 0; for (let i = 0;i < hostname.length; i += 1) { const code = hostname.charCodeAt(i); if (code === 46) { numberOfDots += 1; } else if (code < 48 || code > 57) { return false; } } return numberOfDots === 3 && hostname.charCodeAt(0) !== 46 && hostname.charCodeAt(hostname.length - 1) !== 46; } function isProbablyIpv6(hostname) { if (hostname.length < 3) { return false; } let start = hostname.startsWith("[") ? 1 : 0; let end = hostname.length; if (hostname[end - 1] === "]") { end -= 1; } if (end - start > 39) { return false; } let hasColon = false; for (;start < end; start += 1) { const code = hostname.charCodeAt(start); if (code === 58) { hasColon = true; } else if (!(code >= 48 && code <= 57 || code >= 97 && code <= 102 || code >= 65 && code <= 90)) { return false; } } return hasColon; } function isIp(hostname) { return isProbablyIpv6(hostname) || isProbablyIpv4(hostname); } function isValidAscii(code) { return code >= 97 && code <= 122 || code >= 48 && code <= 57 || code > 127; } function isValidHostname(hostname) { if (hostname.length > 255) { return false; } if (hostname.length === 0) { return false; } if (!isValidAscii(hostname.charCodeAt(0)) && hostname.charCodeAt(0) !== 46 && hostname.charCodeAt(0) !== 95) { return false; } let lastDotIndex = -1; let lastCharCode = -1; const len = hostname.length; for (let i = 0;i < len; i += 1) { const code = hostname.charCodeAt(i); if (code === 46) { if (i - lastDotIndex > 64 || lastCharCode === 46 || lastCharCode === 45 || lastCharCode === 95) { return false; } lastDotIndex = i; } else if (!(isValidAscii(code) || code === 45 || code === 95)) { return false; } lastCharCode = code; } return len - lastDotIndex - 1 <= 63 && 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 }; } function setDefaults(options) { if (options === undefined) { return DEFAULT_OPTIONS; } return setDefaultsImpl(options); } function getSubdomain$1(hostname, domain) { if (domain.length === hostname.length) { return ""; } return hostname.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(url, step, suffixLookup2, partialOptions, result) { const options = setDefaults(partialOptions); if (typeof url !== "string") { return result; } if (!options.extractHostname) { result.hostname = url; } else if (options.mixedInputs) { result.hostname = extractHostname(url, isValidHostname(url)); } else { result.hostname = extractHostname(url, 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(hostname, options, out) { if (!options.allowPrivateDomains && hostname.length > 3) { const last = hostname.length - 1; const c3 = hostname.charCodeAt(last); const c2 = hostname.charCodeAt(last - 1); const c1 = hostname.charCodeAt(last - 2); const c0 = hostname.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; } function lookupInTrie(parts, trie, index, allowedMask) { let result = null; let node = trie; while (node !== undefined) { 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(hostname, options, out) { var _a; if (fastPathLookup(hostname, options, out)) { return; } const hostnameParts = hostname.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 !== undefined ? _a : null; } function parse(url, options = {}) { return parseImpl(url, 5, suffixLookup, options, getEmptyResult()); } function getHostname(url, options = {}) { resetResult(RESULT); return parseImpl(url, 0, suffixLookup, options, RESULT).hostname; } function getPublicSuffix(url, options = {}) { resetResult(RESULT); return parseImpl(url, 2, suffixLookup, options, RESULT).publicSuffix; } function getDomain(url, options = {}) { resetResult(RESULT); return parseImpl(url, 3, suffixLookup, options, RESULT).domain; } function getSubdomain(url, options = {}) { resetResult(RESULT); return parseImpl(url, 4, suffixLookup, options, RESULT).subdomain; } function getDomainWithoutSuffix(url, options = {}) { resetResult(RESULT); return parseImpl(url, 5, suffixLookup, options, RESULT).domainWithoutSuffix; } var DEFAULT_OPTIONS = setDefaultsImpl({}); var exceptions = function() { const _0 = [1, {}], _1 = [2, {}], _2 = [0, { city: _0 }]; const exceptions2 = [0, { ck: [0, { www: _0 }], jp: [0, { kawasaki: _2, kitakyushu: _2, kobe: _2, nagoya: _2, sapporo: _2, sendai: _2, yokohama: _2 }], dev: [0, { hrsn: [0, { psl: [0, { wc: [0, { ignored: _1, sub: [0, { ignored: _1 }] }] }] }] }] }]; return exceptions2; }(); var rules = function() { const _3 = [1, {}], _4 = [2, {}], _5 = [1, { com: _3, edu: _3, gov: _3, net: _3, org: _3 }], _6 = [1, { com: _3, edu: _3, gov: _3, mil: _3, net: _3, org: _3 }], _7 = [0, { "*": _4 }], _8 = [2, { s: _7 }], _9 = [0, { relay: _4 }], _10 = [2, { id: _4 }], _11 = [1, { gov: _3 }], _12 = [0, { "transfer-webapp": _4 }], _13 = [0, { notebook: _4, studio: _4 }], _14 = [0, { labeling: _4, notebook: _4, studio: _4 }], _15 = [0, { notebook: _4 }], _16 = [0, { labeling: _4, notebook: _4, "notebook-fips": _4, studio: _4 }], _17 = [0, { notebook: _4, "notebook-fips": _4, studio: _4, "studio-fips": _4 }], _18 = [0, { "*": _3 }], _19 = [1, { co: _4 }], _20 = [0, { objects: _4 }], _21 = [2, { nodes: _4 }], _22 = [0, { my: _7 }], _23 = [0, { s3: _4, "s3-accesspoint": _4, "s3-website": _4 }], _24 = [0, { s3: _4, "s3-accesspoint": _4 }], _25 = [0, { direct: _4 }], _26 = [0, { "webview-assets": _4 }], _27 = [0, { vfs: _4, "webview-assets": _4 }], _28 = [0, { "execute-api": _4, "emrappui-prod": _4, "emrnotebooks-prod": _4, "emrstudio-prod": _4, dualstack: _23, s3: _4, "s3-accesspoint": _4, "s3-object-lambda": _4, "s3-website": _4, "aws-cloud9": _26, cloud9: _27 }], _29 = [0, { "execute-api": _4, "emrappui-prod": _4, "emrnotebooks-prod": _4, "emrstudio-prod": _4, dualstack: _24, s3: _4, "s3-accesspoint": _4, "s3-object-lambda": _4, "s3-website": _4, "aws-cloud9": _26, cloud9: _27 }], _30 = [0, { "execute-api": _4, "emrappui-prod": _4, "emrnotebooks-prod": _4, "emrstudio-prod": _4, dualstack: _23, s3: _4, "s3-accesspoint": _4, "s3-object-lambda": _4, "s3-website": _4, "analytics-gateway": _4, "aws-cloud9": _26, cloud9: _27 }], _31 = [0, { "execute-api": _4, "emrappui-prod": _4, "emrnotebooks-prod": _4, "emrstudio-prod": _4, dualstack: _23, s3: _4, "s3-accesspoint": _4, "s3-object-lambda": _4, "s3-website": _4 }], _32 = [0, { s3: _4, "s3-accesspoint": _4, "s3-accesspoint-fips": _4, "s3-fips": _4, "s3-website": _4 }], _33 = [0, { "execute-api": _4, "emrappui-prod": _4, "emrnotebooks-prod": _4, "emrstudio-prod": _4, dualstack: _32, s3: _4, "s3-accesspoint": _4, "s3-accesspoint-fips": _4, "s3-fips": _4, "s3-object-lambda": _4, "s3-website": _4, "aws-cloud9": _26, cloud9: _27 }], _34 = [0, { "execute-api": _4, "emrappui-prod": _4, "emrnotebooks-prod": _4, "emrstudio-prod": _4, dualstack: _32, s3: _4, "s3-accesspoint": _4, "s3-accesspoint-fips": _4, "s3-deprecated": _4, "s3-fips": _4, "s3-object-lambda": _4, "s3-website": _4, "analytics-gateway": _4, "aws-cloud9": _26, cloud9: _27 }], _35 = [0, { s3: _4, "s3-accesspoint": _4, "s3-accesspoint-fips": _4, "s3-fips": _4 }], _36 = [0, { "execute-api": _4, "emrappui-prod": _4, "emrnotebooks-prod": _4, "emrstudio-prod": _4, dualstack: _35, s3: _4, "s3-accesspoint": _4, "s3-accesspoint-fips": _4, "s3-fips": _4, "s3-object-lambda": _4, "s3-website": _4 }], _37 = [0, { auth: _4 }], _38 = [0, { auth: _4, "auth-fips": _4 }], _39 = [0, { "auth-fips": _4 }], _40 = [0, { apps: _4 }], _41 = [0, { paas: _4 }], _42 = [2, { eu: _4 }], _43 = [0, { app: _4 }], _44 = [0, { site: _4 }], _45 = [1, { com: _3, edu: _3, net: _3, org: _3 }], _46 = [0, { j: _4 }], _47 = [0, { dyn: _4 }], _48 = [1, { co: _3, com: _3, edu: _3, gov: _3, net: _3, org: _3 }], _49 = [0, { p: _4 }], _50 = [0, { user: _4 }], _51 = [0, { shop: _4 }], _52 = [0, { cdn: _4 }], _53 = [0, { cust: _4, reservd: _4 }], _54 = [0, { cust: _4 }], _55 = [0, { s3: _4 }], _56 = [1, { biz: _3, com: _3, edu: _3, gov: _3, info: _3, net: _3, org: _3 }], _57 = [0, { ipfs: _4 }], _58 = [1, { framer: _4 }], _59 = [0, { forgot: _4 }], _60 = [1, { gs: _3 }], _61 = [0, { nes: _3 }], _62 = [1, { k12: _3, cc: _3, lib: _3 }], _63 = [1, { cc: _3, lib: _3 }]; const rules2 = [0, { ac: [1, { com: _3, edu: _3, gov: _3, mil: _3, net: _3, org: _3, drr: _4, feedback: _4, forms: _4 }], ad: _3, ae: [1, { ac: _3, co: _3, gov: _3, mil: _3, net: _3, org: _3, sch: _3 }], aero: [1, { airline: _3, airport: _3, "accident-investigation": _3, "accident-prevention": _3, aerobatic: _3, aeroclub: _3, aerodrome: _3, agents: _3, "air-surveillance": _3, "air-traffic-control": _3, aircraft: _3, airtraffic: _3, ambulance: _3, association: _3, author: _3, ballooning: _3, broker: _3, caa: _3, cargo: _3, catering: _3, certification: _3, championship: _3, charter: _3, civilaviation: _3, club: _3, conference: _3, consultant: _3, consulting: _3, control: _3, council: _3, crew: _3, design: _3, dgca: _3, educator: _3, emergency: _3, engine: _3, engineer: _3, entertainment: _3, equipment: _3, exchange: _3, express: _3, federation: _3, flight: _3, freight: _3, fuel: _3, gliding: _3, government: _3, groundhandling: _3, group: _3, hanggliding: _3, homebuilt: _3, insurance: _3, journal: _3, journalist: _3, leasing: _3, logistics: _3, magazine: _3, maintenance: _3, marketplace: _3, media: _3, microlight: _3, modelling: _3, navigation: _3, parachuting: _3, paragliding: _3, "passenger-association": _3, pilot: _3, press: _3, production: _3, recreation: _3, repbody: _3, res: _3, research: _3, rotorcraft: _3, safety: _3, scientist: _3, services: _3, show: _3, skydiving: _3, software: _3, student: _3, taxi: _3, trader: _3, trading: _3, trainer: _3, union: _3, workinggroup: _3, works: _3 }], af: _5, ag: [1, { co: _3, com: _3, net: _3, nom: _3, org: _3, obj: _4 }], ai: [1, { com: _3, net: _3, off: _3, org: _3, uwu: _4, framer: _4 }], al: _6, am: [1, { co: _3, com: _3, commune: _3, net: _3, org: _3, radio: _4 }], ao: [1, { co: _3, ed: _3, edu: _3, gov: _3, gv: _3, it: _3, og: _3, org: _3, pb: _3 }], aq: _3, ar: [1, { bet: _3, com: _3, coop: _3, edu: _3, gob: _3, gov: _3, int: _3, mil: _3, musica: _3, mutual: _3, net: _3, org: _3, seg: _3, senasa: _3, tur: _3 }], arpa: [1, { e164: _3, home: _3, "in-addr": _3, ip6: _3, iris: _3, uri: _3, urn: _3 }], as: _11, asia: [1, { cloudns: _4, daemon: _4, dix: _4 }], at: [1, { ac: [1, { sth: _3 }], co: _3, gv: _3, or: _3, funkfeuer: [0, { wien: _4 }], futurecms: [0, { "*": _4, ex: _7, in: _7 }], futurehosting: _4, futuremailing: _4, ortsinfo: [0, { ex: _7, kunden: _7 }], biz: _4, info: _4, "123webseite": _4, priv: _4, myspreadshop: _4, "12hp": _4, "2ix": _4, "4lima": _4, "lima-city": _4 }], au: [1, { asn: _3, com: [1, { cloudlets: [0, { mel: _4 }], myspreadshop: _4 }], edu: [1, { act: _3, catholic: _3, nsw: [1, { schools: _3 }], nt: _3, qld: _3, sa: _3, tas: _3, vic: _3, wa: _3 }], gov: [1, { qld: _3, sa: _3, tas: _3, vic: _3, wa: _3 }], id: _3, net: _3, org: _3, conf: _3, oz: _3, act: _3, nsw: _3, nt: _3, qld: _3, sa: _3, tas: _3, vic: _3, wa: _3 }], aw: [1, { com: _3 }], ax: _3, az: [1, { biz: _3, co: _3, com: _3, edu: _3, gov: _3, info: _3, int: _3, mil: _3, name: _3, net: _3, org: _3, pp: _3, pro: _3 }], ba: [1, { com: _3, edu: _3, gov: _3, mil: _3, net: _3, org: _3, rs: _4 }], bb: [1, { biz: _3, co: _3, com: _3, edu: _3, gov: _3, info: _3, net: _3, org: _3, store: _3, tv: _3 }], bd: _18, be: [1, { ac: _3, cloudns: _4, webhosting: _4, interhostsolutions: [0, { cloud: _4 }], kuleuven: [0, { ezproxy: _4 }], "123website": _4, myspreadshop: _4, transurl: _7 }], bf: _11, bg: [1, { "0": _3, "1": _3, "2": _3, "3": _3, "4": _3, "5": _3, "6": _3, "7": _3, "8": _3, "9": _3, a: _3, b: _3, c: _3, d: _3, e: _3, f: _3, g: _3, h: _3, i: _3, j: _3, k: _3, l: _3, m: _3, n: _3, o: _3, p: _3, q: _3, r: _3, s: _3, t: _3, u: _3, v: _3, w: _3, x: _3, y: _3, z: _3, barsy: _4 }], bh: _5, bi: [1, { co: _3, com: _3, edu: _3, or: _3, org: _3 }], biz: [1, { activetrail: _4, "cloud-ip": _4, cloudns: _4, jozi: _4, dyndns: _4, "for-better": _4, "for-more": _4, "for-some": _4, "for-the": _4, selfip: _4, webhop: _4, orx: _4, mmafan: _4, myftp: _4, "no-ip": _4, dscloud: _4 }], bj: [1, { africa: _3, agro: _3, architectes: _3, assur: _3, avocats: _3, co: _3, com: _3, eco: _3, econo: _3, edu: _3, info: _3, loisirs: _3, money: _3, net: _3, org: _3, ote: _3, restaurant: _3, resto: _3, tourism: _3, univ: _3 }], bm: _5, bn: [1, { com: _3, edu: _3, gov: _3, net: _3, org: _3, co: _4 }], bo: [1, { com: _3, edu: _3, gob: _3, int: _3, mil: _3, net: _3, org: _3, tv: _3, web: _3, academia: _3, agro: _3, arte: _3, blog: _3, bolivia: _3, ciencia: _3, cooperativa: _3, democracia: _3, deporte: _3, ecologia: _3, economia: _3, empresa: _3, indigena: _3, industria: _3, info: _3, medicina: _3, movimiento: _3, musica: _3, natural: _3, nombre: _3, noticias: _3, patria: _3, plurinacional: _3, politica: _3, profesional: _3, pueblo: _3, revista: _3, salud: _3, tecnologia: _3, tksat: _3, transporte: _3, wiki: _3 }], br: [1, { "9guacu": _3, abc: _3, adm: _3, adv: _3, agr: _3, aju: _3, am: _3, anani: _3, aparecida: _3, app: _3, arq: _3, art: _3, ato: _3, b: _3, barueri: _3, belem: _3, bet: _3, bhz: _3, bib: _3, bio: _3, blog: _3, bmd: _3, boavista: _3, bsb: _3, campinagrande: _3, campinas: _3, caxias: _3, cim: _3, cng: _3, cnt: _3, com: [1, { simplesite: _4 }], contagem: _3, coop: _3, coz: _3, cri: _3, cuiaba: _3, curitiba: _3, def: _3, des: _3, det: _3, dev: _3, ecn: _3, eco: _3, edu: _3, emp: _3, enf: _3, eng: _3, esp: _3, etc: _3, eti: _3, far: _3, feira: _3, flog: _3, floripa: _3, fm: _3, fnd: _3, fortal: _3, fot: _3, foz: _3, fst: _3, g12: _3, geo: _3, ggf: _3, goiania: _3, gov: [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 }], gru: _3, imb: _3, ind: _3, inf: _3, jab: _3, jampa: _3, jdf: _3, joinville: _3, jor: _3, jus: _3, leg: [1, { ac: _4, al: _4, am: _4, ap: _4, ba: _4, ce: _4, df: _4, es: _4, go: _4, ma: _4, mg: _4, ms: _4, mt: _4, pa: _4, pb: _4, pe: _4, pi: _4, pr: _4, rj: _4, rn: _4, ro: _4, rr: _4, rs: _4, sc: _4, se: _4, sp: _4, to: _4 }], leilao: _3, lel: _3, log: _3, londrina: _3, macapa: _3, maceio: _3, manaus: _3, maringa: _3, mat: _3, med: _3, mil: _3, morena: _3, mp: _3, mus: _3, natal: _3, net: _3, niteroi: _3, nom: _18, not: _3, ntr: _3, odo: _3, ong: _3, org: _3, osasco: _3, palmas: _3, poa: _3, ppg: _3, pro: _3, psc: _3, psi: _3, pvh: _3, qsl: _3, radio: _3, rec: _3, recife: _3, rep: _3, ribeirao: _3, rio: _3, riobranco: _3, riopreto: _3, salvador: _3, sampa: _3, santamaria: _3, santoandre: _3, saobernardo: _3, saogonca: _3, seg: _3, sjc: _3, slg: _3, slz: _3, sorocaba: _3, srv: _3, taxi: _3, tc: _3, tec: _3, teo: _3, the: _3, tmp: _3, trd: _3, tur: _3, tv: _3, udi: _3, vet: _3, vix: _3, vlog: _3, wiki: _3, zlg: _3 }], bs: [1, { com: _3, edu: _3, gov: _3, net: _3, org: _3, we: _4 }], bt: _5, bv: _3, bw: [1, { ac: _3, co: _3, gov: _3, net: _3, org: _3 }], by: [1, { gov: _3, mil: _3, com: _3, of: _3, mediatech: _4 }], bz: [1, { co: _3, com: _3, edu: _3, gov: _3, net: _3, org: _3, za: _4, mydns: _4, gsj: _4 }], ca: [1, { ab: _3, bc: _3, mb: _3, nb: _3, nf: _3, nl: _3, ns: _3, nt: _3, nu: _3, on: _3, pe: _3, qc: _3, sk: _3, yk: _3, gc: _3, barsy: _4, awdev: _7, co: _4, "no-ip": _4, myspreadshop: _4, box: _4 }], cat: _3, cc: [1, { cleverapps: _4, cloudns: _4, ftpaccess: _4, "game-server": _4, myphotos: _4, scrapping: _4, twmail: _4, csx: _4, fantasyleague: _4, spawn: [0, { instances: _4 }] }], cd: _11, cf: _3, cg: _3, ch: [1, { square7: _4, cloudns: _4, cloudscale: [0, { cust: _4, lpg: _20, rma: _20 }], flow: [0, { ae: [0, { alp1: _4 }], appengine: _4 }], "linkyard-cloud": _4, gotdns: _4, dnsking: _4, "123website": _4, myspreadshop: _4, firenet: [0, { "*": _4, svc: _7 }], "12hp": _4, "2ix": _4, "4lima": _4, "lima-city": _4 }], ci: [1, { ac: _3, "xn--aroport-bya": _3, "a\xE9roport": _3, asso: _3, co: _3, com: _3, ed: _3, edu: _3, go: _3, gouv: _3, int: _3, net: _3, or: _3, org: _3 }], ck: _18, cl: [1, { co: _3, gob: _3, gov: _3, mil: _3, cloudns: _4 }], cm: [1, { co: _3, com: _3, gov: _3, net: _3 }], cn: [1, { ac: _3, com: [1, { amazonaws: [0, { "cn-north-1": [0, { "execute-api": _4, "emrappui-prod": _4, "emrnotebooks-prod": _4, "emrstudio-prod": _4, dualstack: _23, s3: _4, "s3-accesspoint": _4, "s3-deprecated": _4, "s3-object-lambda": _4, "s3-website": _4 }], "cn-northwest-1": [0, { "execute-api": _4, "emrappui-prod": _4, "emrnotebooks-prod": _4, "emrstudio-prod": _4, dualstack: _24, s3: _4, "s3-accesspoint": _4, "s3-object-lambda": _4, "s3-website": _4 }], compute: _7, airflow: [0, { "cn-north-1": _7, "cn-northwest-1": _7 }], eb: [0, { "cn-north-1": _4, "cn-northwest-1": _4 }], elb: _7 }], sagemaker: [0, { "cn-north-1": _13, "cn-northwest-1": _13 }] }], edu: _3, gov: _3, mil: _3, net: _3, org: _3, "xn--55qx5d": _3, "\u516C\u53F8": _3, "xn--od0alg": _3, "\u7DB2\u7D61": _3, "xn--io0a7i": _3, "\u7F51\u7EDC": _3, ah: _3, bj: _3, cq: _3, fj: _3, gd: _3, gs: _3, gx: _3, gz: _3, ha: _3, hb: _3, he: _3, hi: _3, hk: _3, hl: _3, hn: _3, jl: _3, js: _3, jx: _3, ln: _3, mo: _3, nm: _3, nx: _3, qh: _3, sc: _3, sd: _3, sh: [1, { as: _4 }], sn: _3, sx: _3, tj: _3, tw: _3, xj: _3, xz: _3, yn: _3, zj: _3, "canva-apps": _4, canvasite: _22, myqnapcloud: _4, quickconnect: _25 }], co: [1, { com: _3, edu: _3, gov: _3, mil: _3, net: _3, nom: _3, org: _3, carrd: _4, crd: _4, otap: _7, leadpages: _4, lpages: _4, mypi: _4, xmit: _7, firewalledreplit: _10, repl: _10, supabase: _4 }], com: [1, { a2hosted: _4, cpserver: _4, adobeaemcloud: [2, { dev: _7 }], africa: _4, airkitapps: _4, "airkitapps-au": _4, aivencloud: _4, alibabacloudcs: _4, kasserver: _4, amazonaws: [0, { "af-south-1": _28, "ap-east-1": _29, "ap-northeast-1": _30, "ap-northeast-2": _30, "ap-northeast-3": _28, "ap-south-1": _30, "ap-south-2": _31, "ap-southeast-1": _30, "ap-southeast-2": _30, "ap-southeast-3": _31, "ap-southeast-4": _31, "ap-southeast-5": [0, { "execute-api": _4, dualstack: _23, s3: _4, "s3-accesspoint": _4, "s3-deprecated": _4, "s3-object-lambda": _4, "s3-website": _4 }], "ca-central-1": _33, "ca-west-1": [0, { "execute-api": _4, "emrappui-prod": _4, "emrnotebooks-prod": _4, "emrstudio-prod": _4, dualstack: _32, s3: _4, "s3-accesspoint": _4, "s3-accesspoint-fips": _4, "s3-fips": _4, "s3-object-lambda": _4, "s3-website": _4 }], "eu-central-1": _30, "eu-central-2": _31, "eu-north-1": _29, "eu-south-1": _28, "eu-south-2": _31, "eu-west-1": [0, { "execute-api": _4, "emrappui-prod": _4, "emrnotebooks-prod": _4, "emrstudio-prod": _4, dualstack: _23, s3: _4, "s3-accesspoint": _4, "s3-deprecated": _4, "s3-object-lambda": _4, "s3-website": _4, "analytics-gateway": _4, "aws-cloud9": _26, cloud9: _27 }], "eu-west-2": _29, "eu-west-3": _28, "il-central-1": [0, { "execute-api": _4, "emrappui-prod": _4, "emrnotebooks-prod": _4, "emrstudio-prod": _4, dualstack: _23, s3: _4, "s3-accesspoint": _4, "s3-object-lambda": _4, "s3-website": _4, "aws-cloud9": _26, cloud9: [0, { vfs: _4 }] }], "me-central-1": _31, "me-south-1": _29, "sa-east-1": _28, "us-east-1": [2, { "execute-api": _4, "emrappui-prod": _4, "emrnotebooks-prod": _4, "emrstudio-prod": _4, dualstack: _32, s3: _4, "s3-accesspoint": _4, "s3-accesspoint-fips": _4, "s3-deprecated": _4, "s3-fips": _4, "s3-object-lambda": _4, "s3-website": _4, "analytics-gateway": _4, "aws-cloud9": _26, cloud9: _27 }], "us-east-2": _34, "us-gov-east-1": _36, "us-gov-west-1": _36, "us-west-1": _33, "us-west-2": _34, compute: _7, "compute-1": _7, airflow: [0, { "af-south-1": _7, "ap-east-1": _7, "ap-northeast-1": _7, "ap-northeast-2": _7, "ap-northeast-3": _7, "ap-south-1": _7, "ap-south-2": _7, "ap-southeast-1": _7, "ap-southeast-2": _7, "ap-southeast-3": _7, "ap-southeast-4": _7, "ca-central-1": _7, "ca-west-1": _7, "eu-central-1": _7, "eu-central-2": _7, "eu-north-1": _7, "eu-south-1": _7, "eu-south-2": _7, "eu-west-1": _7, "eu-west-2": _7, "eu-west-3": _7, "il-central-1": _7, "me-central-1": _7, "me-south-1": _7, "sa-east-1": _7, "us-east-1": _7, "us-east-2": _7, "us-west-1": _7, "us-west-2": _7 }], s3: _4, "s3-1": _4, "s3-ap-east-1": _4, "s3-ap-northeast-1": _4, "s3-ap-northeast-2": _4, "s3-ap-northeast-3": _4, "s3-ap-south-1": _4, "s3-ap-southeast-1": _4, "s3-ap-southeast-2": _4, "s3-ca-central-1": _4, "s3-eu-central-1": _4, "s3-eu-north-1": _4, "s3-eu-west-1": _4, "s3-eu-west-2": _4, "s3-eu-west-3": _4, "s3-external-1": _4, "s3-fips-us-gov-east-1": _4, "s3-fips-us-gov-west-1": _4, "s3-global": [0, { accesspoint: [0, { mrap: _4 }] }], "s3-me-south-1": _4, "s3-sa-east-1": _4, "s3-us-east-2": _4, "s3-us-gov-east-1": _4, "s3-us-gov-west-1": _4, "s3-us-west-1": _4, "s3-us-west-2": _4, "s3-website-ap-northeast-1": _4, "s3-website-ap-southeast-1": _4, "s3-website-ap-southeast-2": _4, "s3-website-eu-west-1": _4, "s3-website-sa-east-1": _4, "s3-website-us-east-1": _4, "s3-website-us-gov-west-1": _4, "s3-website-us-west-1": _4, "s3-website-us-west-2": _4, elb: _7 }], amazoncognito: [0, { "af-south-1": _37, "ap-east-1": _37, "ap-northeast-1": _37, "ap-northeast-2": _37, "ap-northeast-3": _37, "ap-south-1": _37, "ap-south-2": _37, "ap-southeast-1": _37, "ap-southeast-2": _37, "ap-southeast-3": _37, "ap-southeast-4": _37, "ap-southeast-5": _37, "ca-central-1": _37, "ca-west-1": _37, "eu-central-1": _37, "eu-central-2": _37, "eu-north-1": _37, "eu-south-1": _37, "eu-south-2": _37, "eu-west-1": _37, "eu-west-2": _37, "eu-west-3": _37, "il-central-1": _37, "me-central-1": _37, "me-south-1": _37, "sa-east-1": _37, "us-east-1": _38, "us-east-2": _38, "us-gov-east-1": _39, "us-gov-west-1": _39, "us-west-1": _38, "us-west-2": _38 }], amplifyapp: _4, awsapprunner: _7, awsapps: _4, elasticbeanstalk: [2, { "af-south-1": _4, "ap-east-1": _4, "ap-northeast-1": _4, "ap-northeast-2": _4, "ap-northeast-3": _4, "ap-south-1": _4, "ap-southeast-1": _4, "ap-southeast-2": _4, "ap-southeast-3": _4, "ca-central-1": _4, "eu-central-1": _4, "eu-north-1": _4, "eu-south-1": _4, "eu-west-1": _4, "eu-west-2": _4, "eu-west-3": _4, "il-central-1": _4, "me-south-1": _4, "sa-east-1": _4, "us-east-1": _4, "us-east-2": _4, "us-gov-east-1": _4, "us-gov-west-1": _4, "us-west-1": _4, "us-west-2": _4 }], awsglobalaccelerator: _4, siiites: _4, appspacehosted: _4, appspaceusercontent: _4, "on-aptible": _4, myasustor: _4, "balena-devices": _4, boutir: _4, bplaced: _4, cafjs: _4, "canva-apps": _4, "cdn77-storage": _4, br: _4, cn: _4, de: _4, eu: _4, jpn: _4, mex: _4, ru: _4, sa: _4, uk: _4, us: _4, za: _4, "clever-cloud": [0, { services: _7 }], dnsabr: _4, "ip-ddns": _4, jdevcloud: _4, wpdevcloud: _4, "cf-ipfs": _4, "cloudflare-ipfs": _4, trycloudflare: _4, co: _4, devinapps: _7, builtwithdark: _4, datadetect: [0, { demo: _4, instance: _4 }], dattolocal: _4, dattorelay: _4, dattoweb: _4, mydatto: _4, digitaloceanspaces: _7, discordsays: _4, discordsez: _4, drayddns: _4, dreamhosters: _4, durumis: _4, mydrobo: _4, blogdns: _4, cechire: _4, dnsalias: _4, dnsdojo: _4, doesntexist: _4, dontexist: _4, doomdns: _4, "dyn-o-saur": _4, dynalias: _4, "dyndns-at-home": _4, "dyndns-at-work": _4, "dyndns-blog": _4, "dyndns-free": _4, "dyndns-home": _4, "dyndns-ip": _4, "dyndns-mail": _4, "dyndns-office": _4, "dyndns-pics": _4, "dyndns-remote": _4, "dyndns-server": _4, "dyndns-web": _4, "dyndns-wiki": _4, "dyndns-work": _4, "est-a-la-maison": _4, "est-a-la-masion": _4, "est-le-patron": _4, "est-mon-blogueur": _4, "from-ak": _4, "from-al": _4, "from-ar": _4, "from-ca": _4, "from-ct": _4, "from-dc": _4, "from-de": _4, "from-fl": _4, "from-ga": _4, "from-hi": _4, "from-ia": _4, "from-id": _4, "from-il": _4, "from-in": _4, "from-ks": _4, "from-ky": _4, "from-ma": _4, "from-md": _4, "from-mi": _4, "from-mn": _4, "from-mo": _4, "from-ms": _4, "from-mt": _4, "from-nc": _4, "from-nd": _4, "from-ne": _4, "from-nh": _4, "from-nj": _4, "from-nm": _4, "from-nv": _4, "from-oh": _4, "from-ok": _4, "from-or": _4, "from-pa": _4, "from-pr": _4, "from-ri": _4, "from-sc": _4, "from-sd": _4, "from-tn": _4, "from-tx": _4, "from-ut": _4, "from-va": _4, "from-vt": _4, "from-wa": _4, "from-wi": _4, "from-wv": _4, "from-wy": _4, getmyip: _4, gotdns: _4, "hobby-site": _4, homelinux: _4, homeunix: _4, iamallama: _4, "is-a-anarchist": _4, "is-a-blogger": _4, "is-a-bookkeeper": _4, "is-a-bulls-fan": _4, "is-a-caterer": _4, "is-a-chef": _4, "is-a-conservative": _4, "is-a-cpa": _4, "is-a-cubicle-slave": _4, "is-a-democrat": _4, "is-a-designer": _4, "is-a-doctor": _4, "is-a-financialadvisor": _4, "is-a-geek": _4, "is-a-green": _4, "is-a-guru": _4, "is-a-hard-worker": _4, "is-a-hunter": _4, "is-a-landscaper": _4, "is-a-lawyer": _4, "is-a-liberal": _4, "is-a-libertarian": _4, "is-a-llama": _4, "is-a-musician": _4, "is-a-nascarfan": _4, "is-a-nurse": _4, "is-a-painter": _4, "is-a-personaltrainer": _4, "is-a-photographer": _4, "is-a-player": _4, "is-a-republican": _4, "is-a-rockstar": _4, "is-a-socialist": _4, "is-a-student": _4, "is-a-teacher": _4, "is-a-techie": _4, "is-a-therapist": _4, "is-an-accountant": _4, "is-an-actor": _4, "is-an-actress": _4, "is-an-anarchist": _4, "is-an-artist": _4, "is-an-engineer": _4, "is-an-entertainer": _4, "is-certified": _4, "is-gone": _4, "is-into-anime": _4, "is-into-cars": _4, "is-into-cartoons": _4, "is-into-games": _4, "is-leet": _4, "is-not-certified": _4, "is-slick": _4, "is-uberleet": _4, "is-with-theband": _4, "isa-geek": _4, "isa-hockeynut": _4, issmarterthanyou: _4, "likes-pie": _4, likescandy: _4, "neat-url": _4, "saves-the-whales": _4, selfip: _4, "sells-for-less": _4, "sells-for-u": _4, servebbs: _4, "simple-url": _4, "space-to-rent": _4, "teaches-yoga": _4, writesthisblog: _4, ddnsfree: _4, ddnsgeek: _4, giize: _4, gleeze: _4, kozow: _4, loseyourip: _4, ooguy: _4, theworkpc: _4, mytuleap: _4, "tuleap-partners": _4, encoreapi: _4, evennode: [0, { "eu-1": _4, "eu-2": _4, "eu-3": _4, "eu-4": _4, "us-1": _4, "us-2": _4, "us-3": _4, "us-4": _4 }], onfabrica: _4, "fastly-edge": _4, "fastly-terrarium": _4, "fastvps-server": _4, mydobiss: _4, firebaseapp: _4, fldrv: _4, forgeblocks: _4, framercanvas: _4, "freebox-os": _4, freeboxos: _4, freemyip: _4, aliases121: _4, gentapps: _4, gentlentapis: _4, githubusercontent: _4, "0emm": _7, appspot: [2, { r: _7 }], blogspot: _4, codespot: _4, googleapis: _4, googlecode: _4, pagespeedmobilizer: _4, withgoogle: _4, withyoutube: _4, grayjayleagues: _4, hatenablog: _4, hatenadiary: _4, herokuapp: _4, gr: _4, smushcdn: _4, wphostedmail: _4, wpmucdn: _4, pixolino: _4, "apps-1and1": _4, "live-website": _4, dopaas: _4, "hosted-by-previder": _41, hosteur: [0, { "rag-cloud": _4, "rag-cloud-ch": _4 }], "ik-server": [0, { jcloud: _4, "jcloud-ver-jpc": _4 }], jelastic: [0, { demo: _4 }], massivegrid: _41, wafaicloud: [0, { jed: _4, ryd: _4 }], webadorsite: _4, joyent: [0, { cns: _7 }], lpusercontent: _4, linode: [0, { members: _4, nodebalancer: _7 }], linodeobjects: _7, linodeusercontent: [0, { ip: _4 }], localtonet: _4, lovableproject: _4, barsycenter: _4, barsyonline: _4, modelscape: _4, mwcloudnonprod: _4, polyspace: _4, mazeplay: _4, miniserver: _4, atmeta: _4, fbsbx: _40, meteorapp: _42, routingthecloud: _4, mydbserver: _4, hostedpi: _4, "mythic-beasts": [0, { caracal: _4, customer: _4, fentiger: _4, lynx: _4, ocelot: _4, oncilla: _4, onza: _4, sphinx: _4, vs: _4, x: _4, yali: _4 }], nospamproxy: [0, { cloud: [2, { o365: _4 }] }], "4u": _4, nfshost: _4, "3utilities": _4, blogsyte: _4, ciscofreak: _4, damnserver: _4, ddnsking: _4, ditchyourip: _4, dnsiskinky: _4, dynns: _4, geekgalaxy: _4, "health-carereform": _4, homesecuritymac: _4, homesecuritypc: _4, myactivedirectory: _4, mysecuritycamera: _4, myvnc: _4, "net-freaks": _4, onthewifi: _4, point2this: _4, quicksytes: _4, securitytactics: _4, servebeer: _4, servecounterstrike: _4, serveexchange: _4, serveftp: _4, servegame: _4, servehalflife: _4, servehttp: _4, servehumour: _4, serveirc: _4, servemp3: _4, servep2p: _4, servepics: _4, servequake: _4, servesarcasm: _4, stufftoread: _4, unusualperson: _4, workisboring: _4, myiphost: _4, observableusercontent: [0, { static: _4 }], simplesite: _4, orsites: _4, operaunite: _4, "customer-oci": [0, { "*": _4, oci: _7, ocp: _7, ocs: _7 }], oraclecloudapps: _7, oraclegovcloudapps: _7, "authgear-staging": _4, authgearapps: _4, skygearapp: _4, outsystemscloud: _4, ownprovider: _4, pgfog: _4, pagexl: _4, gotpantheon: _4, paywhirl: _7, upsunapp: _4, "postman-echo": _4, prgmr: [0, { xen: _4 }], pythonanywhere: _42, qa2: _4, "alpha-myqnapcloud": _4, "dev-myqnapcloud": _4, mycloudnas: _4, mynascloud: _4, myqnapcloud: _4, qualifioapp: _4, ladesk: _4, qbuser: _4, quipelements: _7, rackmaze: _4, "readthedocs-hosted": _4, rhcloud: _4, onrender: _4, render: _43, "subsc-pay": _4, "180r": _4, dojin: _4, sakuratan: _4, sakuraweb: _4, x0: _4, code: [0, { builder: _7, "dev-builder": _7, "stg-builder": _7 }], salesforce: [0, { platform: [0, { "code-builder-stg": [0, { test: [0, { "001": _7 }] }] }] }], logoip: _4, scrysec: _4, "firewall-gateway": _4, myshopblocks: _4, myshopify: _4, shopitsite: _4, "1kapp": _4, appchizi: _4, applinzi: _4, sinaapp: _4, vipsinaapp: _4, streamlitapp: _4, "try-snowplow": _4, "playstation-cloud": _4, myspreadshop: _4, "w-corp-staticblitz": _4, "w-credentialless-staticblitz": _4, "w-staticblitz": _4, "stackhero-network": _4, stdlib: [0, { api: _4 }], strapiapp: [2, { media: _4 }], "streak-link": _4, streaklinks: _4, streakusercontent: _4, "temp-dns": _4, dsmynas: _4, familyds: _4, mytabit: _4, taveusercontent: _4, "tb-hosting": _44, reservd: _4, thingdustdata: _4, "townnews-staging": _4, typeform: [0, { pro: _4 }], hk: _4, it: _4, "deus-canvas": _4, vultrobjects: _7, wafflecell: _4, hotelwithflight: _4, "reserve-online": _4, cprapid: _4, pleskns: _4, remotewd: _4, wiardweb: [0, { pages: _4 }], wixsite: _4, wixstudio: _4, messwithdns: _4, "woltlab-demo": _4, wpenginepowered: [2, { js: _4 }], xnbay: [2, { u2: _4, "u2-local": _4 }], yolasite: _4 }], coop: _3, cr: [1, { ac: _3, co: _3, ed: _3, fi: _3, go: _3, or: _3, sa: _3 }], cu: [1, { com: _3, edu: _3, gob: _3, inf: _3, nat: _3, net: _3, org: _3 }], cv: [1, { com: _3, edu: _3, id: _3, int: _3, net: _3, nome: _3, org: _3, publ: _3 }], cw: _45, cx: [1, { gov: _3, cloudns: _4, ath: _4, info: _4, assessments: _4, calculators: _4, funnels: _4, paynow: _4, quizzes: _4, researched: _4, tests: _4 }], cy: [1, { ac: _3, biz: _3, com: [1, { scaleforce: _46 }], ekloges: _3, gov: _3, ltd: _3, mil: _3, net: _3, org: _3, press: _3, pro: _3, tm: _3 }], cz: [1, { contentproxy9: [0, { rsc: _4 }], realm: _4, e4: _4, co: _4, metacentrum: [0, { cloud: _7, custom: _4 }], muni: [0, { cloud: [0, { flt: _4, usr: _4 }] }] }], de: [1, { bplaced: _4, square7: _4, com: _4, cosidns: _47, dnsupdater: _4, "dynamisches-dns": _4, "internet-dns": _4, "l-o-g-i-n": _4, ddnss: [2, { dyn: _4, dyndns: _4 }], "dyn-ip24": _4, dyndns1: _4, "home-webserver": [2, { dyn: _4 }], "myhome-server": _4, dnshome: _4, fuettertdasnetz: _4, isteingeek: _4, istmein: _4, lebtimnetz: _4, leitungsen: _4, traeumtgerade: _4, frusky: _7, goip: _4, "xn--gnstigbestellen-zvb": _4, "g\xFCnstigbestellen": _4, "xn--gnstigliefern-wob": _4, "g\xFCnstigliefern": _4, "hs-heilbronn": [0, { it: [0, { pages: _4, "pages-research": _4 }] }], "dyn-berlin": _4, "in-berlin": _4, "in-brb": _4, "in-butter": _4, "in-dsl": _4, "in-vpn": _4, iservschule: _4, "mein-iserv": _4, schulplattform: _4, schulserver: _4, "test-iserv": _4, keymachine: _4, "git-repos": _4, "lcube-server": _4, "svn-repos": _4, barsy: _4, webspaceconfig: _4, "123webseite": _4, rub: _4, "ruhr-uni-bochum": [2, { noc: [0, { io: _4 }] }], logoip: _4, "firewall-gateway": _4, "my-gateway": _4, "my-router": _4, spdns: _4, speedpartner: [0, { customer: _4 }], myspreadshop: _4, "taifun-dns": _4, "12hp": _4, "2ix": _4, "4lima": _4, "lima-city": _4, "dd-dns": _4, "dray-dns": _4, draydns: _4, "dyn-vpn": _4, dynvpn: _4, "mein-vigor": _4, "my-vigor": _4, "my-wan": _4, "syno-ds": _4, "synology-diskstation": _4, "synology-ds": _4, uberspace: _7, "virtual-user": _4, virtualuser: _4, "community-pro": _4, diskussionsbereich: _4 }], dj: _3, dk: [1, { biz: _4, co: _4, firm: _4, reg: _4, store: _4, "123hjemmeside": _4, myspreadshop: _4 }], dm: _48, do: [1, { art: _3, com: _3, edu: _3, gob: _3, gov: _3, mil: _3, net: _3, org: _3, sld: _3, web: _3 }], dz: [1, { art: _3, asso: _3, com: _3, edu: _3, gov: _3, net: _3, org: _3, pol: _3, soc: _3, tm: _3 }], ec: [1, { com: _3, edu: _3, fin: _3, gob: _3, gov: _3, info: _3, k12: _3, med: _3, mil: _3, net: _3, org: _3, pro: _3, base: _4, official: _4 }], edu: [1, { rit: [0, { "git-pages": _4 }] }], ee: [1, { aip: _3, com: _3, edu: _3, fie: _3, gov: _3, lib: _3, med: _3, org: _3, pri: _3, riik: _3 }], eg: [1, { ac: _3, com: _3, edu: _3, eun: _3, gov: _3, info: _3, me: _3, mil: _3, name: _3, net: _3, org: _3, sci: _3, sport: _3, tv: _3 }], er: _18, es: [1, { com: _3, edu: _3, gob: _3, nom: _3, org: _3, "123miweb": _4, myspreadshop: _4 }], et: [1, { biz: _3, com: _3, edu: _3, gov: _3, info: _3, name: _3, net: _3, org: _3 }], eu: [1, { airkitapps: _4, cloudns: _4, dogado: [0, { jelastic: _4 }], barsy: _4, spdns: _4, transurl: _7, diskstation: _4 }], fi: [1, { aland: _3, dy: _4, "xn--hkkinen-5wa": _4, "h\xE4kkinen": _4, iki: _4, cloudplatform: [0, { fi: _4 }], datacenter: [0, { demo: _4, paas: _4 }], kapsi: _4, "123kotisivu": _4, myspreadshop: _4 }], fj: [1, { ac: _3, biz: _3, com: _3, gov: _3, info: _3, mil: _3, name: _3, net: _3, org: _3, pro: _3 }], fk: _18, fm: [1, { com: _3, edu: _3, net: _3, org: _3, radio: _4, user: _7 }], fo: _3, fr: [1, { asso: _3, com: _3, gouv: _3, nom: _3, prd: _3, tm: _3, avoues: _3, cci: _3, greta: _3, "huissier-justice": _3, "en-root": _4, "fbx-os": _4, fbxos: _4, "freebox-os": _4, freeboxos: _4, goupile: _4, "123siteweb": _4, "on-web": _4, "chirurgiens-dentistes-en-france": _4, dedibox: _4, aeroport: _4, avocat: _4, chambagri: _4, "chirurgiens-dentistes": _4, "experts-comptables": _4, medecin: _4, notaires: _4, pharmacien: _4, port: _4, veterinaire: _4, myspreadshop: _4, ynh: _4 }], ga: _3, gb: _3, gd: [1, { edu: _3, gov: _3 }], ge: [1, { com: _3, edu: _3, gov: _3, net: _3, org: _3, pvt: _3, school: _3 }], gf: _3, gg: [1, { co: _3, net: _3, org: _3, botdash: _4, kaas: _4, stackit: _4, panel: [2, { daemon: _4 }] }], gh: [1, { com: _3, edu: _3, gov: _3, mil: _3, org: _3 }], gi: [1, { com: _3, edu: _3, gov: _3, ltd: _3, mod: _3, org: _3 }], gl: [1, { co: _3, com: _3, edu: _3, net: _3, org: _3, biz: _4 }], gm: _3, gn: [1, { ac: _3, com: _3, edu: _3, gov: _3, net: _3, org: _3 }], gov: _3, gp: [1, { asso: _3, com: _3, edu: _3, mobi: _3, net: _3, org: _3 }], gq: _3, gr: [1, { com: _3, edu: _3, gov: _3, net: _3, org: _3, barsy: _4, simplesite: _4 }], gs: _3, gt: [1, { com: _3, edu: _3, gob: _3, ind: _3, mil: _3, net: _3, org: _3 }], gu: [1, { com: _3, edu: _3, gov: _3, guam: _3, info: _3, net: _3, org: _3, web: _3 }], gw: _3, gy: _48, hk: [1, { com: _3, edu: _3, gov: _3, idv: _3, net: _3, org: _3, "xn--ciqpn": _3, "\u4E2A\u4EBA": _3, "xn--gmqw5a": _3, "\u500B\u4EBA": _3, "xn--55qx5d": _3, "\u516C\u53F8": _3, "xn--mxtq1m": _3, "\u653F\u5E9C": _3, "xn--lcvr32d": _3, "\u654E\u80B2": _3, "xn--wcvs22d": _3, "\u6559\u80B2": _3, "xn--gmq050i": _3, "\u7B87\u4EBA": _3, "xn--uc0atv": _3, "\u7D44\u7E54": _3, "xn--uc0ay4a": _3, "\u7D44\u7EC7": _3, "xn--od0alg": _3, "\u7DB2\u7D61": _3, "xn--zf0avx": _3, "\u7DB2\u7EDC": _3, "xn--mk0axi": _3, "\u7EC4\u7E54": _3, "xn--tn0ag": _3, "\u7EC4\u7EC7": _3, "xn--od0aq3b": _3, "\u7F51\u7D61": _3, "xn--io0a7i": _3, "\u7F51\u7EDC": _3, inc: _4, ltd: _4 }], hm: _3, hn: [1, { com: _3, edu: _3, gob: _3, mil: _3, net: _3, org: _3 }], hr: [1, { com: _3, from: _3, iz: _3, name: _3, brendly: _51 }], ht: [1, { adult: _3, art: _3, asso: _3, com: _3, coop: _3, edu: _3, firm: _3, gouv: _3, info: _3, med: _3, net: _3, org: _3, perso: _3, pol: _3, pro: _3, rel: _3, shop: _3, rt: _4 }], hu: [1, { "2000": _3, agrar: _3, bolt: _3, casino: _3, city: _3, co: _3, erotica: _3, erotika: _3, film: _3, forum: _3, games: _3, hotel: _3, info: _3, ingatlan: _3, jogasz: _3, konyvelo: _3, lakas: _3, media: _3, news: _3, org: _3, priv: _3, reklam: _3, sex: _3, shop: _3, sport: _3, suli: _3, szex: _3, tm: _3, tozsde: _3, utazas: _3, video: _3 }], id: [1, { ac: _3, biz: _3, co: _3, desa: _3, go: _3, mil: _3, my: _3, net: _3, or: _3, ponpes: _3, sch: _3, web: _3, zone: _4 }], ie: [1, { gov: _3, myspreadshop: _4 }], il: [1, { ac: _3, co: [1, { ravpage: _4, mytabit: _4, tabitorder: _4 }], gov: _3, idf: _3, k12: _3, muni: _3, net: _3, org: _3 }], "xn--4dbrk0ce": [1, { "xn--4dbgdty6c": _3, "xn--5dbhl8d": _3, "xn--8dbq2a": _3, "xn--hebda8b": _3 }], "\u05D9\u05E9\u05E8\u05D0\u05DC": [1, { "\u05D0\u05E7\u05D3\u05DE\u05D9\u05D4": _3, "\u05D9\u05E9\u05D5\u05D1": _3, "\u05E6\u05D4\u05DC": _3, "\u05DE\u05DE\u05E9\u05DC": _3 }], im: [1, { ac: _3, co: [1, { ltd: _3, plc: _3 }], com: _3, net: _3, org: _3, tt: _3, tv: _3 }], in: [1, { "5g": _3, "6g": _3, ac: _3, ai: _3, am: _3, bihar: _3, biz: _3, business: _3, ca: _3, cn: _3, co: _3, com: _3, coop: _3, cs: _3, delhi: _3, dr: _3, edu: _3, er: _3, firm: _3, gen: _3, gov: _3, gujarat: _3, ind: _3, info: _3, int: _3, internet: _3, io: _3, me: _3, mil: _3, net: _3, nic: _3, org: _3, pg: _3, post: _3, pro: _3, res: _3, travel: _3, tv: _3, uk: _3, up: _3, us: _3, cloudns: _4, barsy: _4, web: _4, supabase: _4 }], info: [1, { cloudns: _4, "dynamic-dns": _4, "barrel-of-knowledge": _4, "barrell-of-knowledge": _4, dyndns: _4, "for-our": _4, "groks-the": _4, "groks-this": _4, "here-for-more": _4, knowsitall: _4, selfip: _4, webhop: _4, barsy: _4, mayfirst: _4, mittwald: _4, mittwaldserver: _4, typo3server: _4, dvrcam: _4, ilovecollege: _4, "no-ip": _4, forumz: _4, nsupdate: _4, dnsupdate: _4, "v-info": _4 }], int: [1, { eu: _3 }], io: [1, { "2038": _4, co: _3, com: _3, edu: _3, gov: _3, mil: _3, net: _3, nom: _3, org: _3, "on-acorn": _7, myaddr: _4, apigee: _4, "b-data": _4, beagleboard: _4, bitbucket: _4, bluebite: _4, boxfuse: _4, brave: _8, browsersafetymark: _4, bubble: _52, bubbleapps: _4, bigv: [0, { uk0: _4 }], cleverapps: _4, cloudbeesusercontent: _4, dappnode: [0, { dyndns: _4 }], darklang: _4, definima: _4, dedyn: _4, "fh-muenster": _4, shw: _4, forgerock: [0, { id: _4 }], github: _4, gitlab: _4, lolipop: _4, "hasura-app": _4, hostyhosting: _4, hypernode: _4, moonscale: _7, beebyte: _41, beebyteapp: [0, { sekd1: _4 }], jele: _4, webthings: _4, loginline: _4, barsy: _4, azurecontainer: _7, ngrok: [2, { ap: _4, au: _4, eu: _4, in: _4, jp: _4, sa: _4, us: _4 }], nodeart: [0, { stage: _4 }], pantheonsite: _4, pstmn: [2, { mock: _4 }], protonet: _4, qcx: [2, { sys: _7 }], qoto: _4, vaporcloud: _4, myrdbx: _4, "rb-hosting": _44, "on-k3s": _7, "on-rio": _7, readthedocs: _4, resindevice: _4, resinstaging: [0, { devices: _4 }], hzc: _4, sandcats: _4, scrypted: [0, { client: _4 }], "mo-siemens": _4, lair: _40, stolos: _7, musician: _4, utwente: _4, edugit: _4, telebit: _4, thingdust: [0, { dev: _53, disrec: _53, prod: _54, testing: _53 }], tickets: _4, webflow: _4, webflowtest: _4, editorx: _4, wixstudio: _4, basicserver: _4, virtualserver: _4 }], iq: _6, ir: [1, { ac: _3, co: _3, gov: _3, id: _3, net: _3, org: _3, sch: _3, "xn--mgba3a4f16a": _3, "\u0627\u06CC\u0631\u0627\u0646": _3, "xn--mgba3a4fra": _3, "\u0627\u064A\u0631\u0627\u0646": _3, arvanedge: _4 }], is: _3, it: [1, { edu: _3, gov: _3, abr: _3, abruzzo: _3, "aosta-valley": _3, aostavalley: _3, bas: _3, basilicata: _3, cal: _3, calabria: _3, cam: _3, campania: _3, "emilia-romagna": _3, emiliaromagna: _3, emr: _3, "friuli-v-giulia": _3, "friuli-ve-giulia": _3, "friuli-vegiulia": _3, "friuli-venezia-giulia": _3, "friuli-veneziagiulia": _3, "friuli-vgiulia": _3, "friuliv-giulia": _3, "friulive-giulia": _3, friulivegiulia: _3, "friulivenezia-giulia": _3, friuliveneziagiulia: _3, friulivgiulia: _3, fvg: _3, laz: _3, lazio: _3, lig: _3, liguria: _3, lom: _3, lombardia: _3, lombardy: _3, lucania: _3, mar: _3, marche: _3, mol: _3, molise: _3, piedmont: _3, piemonte: _3, pmn: _3, pug: _3, puglia: _3, sar: _3, sardegna: _3, sardinia: _3, sic: _3, sicilia: _3, sicily: _3, taa: _3, tos: _3, toscana: _3, "trentin-sud-tirol": _3, "xn--trentin-sd-tirol-rzb": _3, "trentin-s\xFCd-tirol": _3, "trentin-sudtirol": _3, "xn--trentin-sdtirol-7vb": _3, "trentin-s\xFCdtirol": _3, "trentin-sued-tirol": _3, "trentin-suedtirol": _3, trentino: _3, "trentino-a-adige": _3, "trentino-aadige": _3, "trentino-alto-adige": _3, "trentino-altoadige": _3, "trentino-s-tirol": _3, "trentino-stirol": _3, "trentino-sud-tirol": _3, "xn--trentino-sd-tirol-c3b": _3, "trentino-s\xFCd-tirol": _3, "trentino-sudtirol": _3, "xn--trentino-sdtirol-szb": _3, "trentino-s\xFCdtirol": _3, "trentino-sued-tirol": _3, "trentino-suedtirol": _3, "trentinoa-adige": _3, trentinoaadige: _3, "trentinoalto-adige": _3, trentinoaltoadige: _3, "trentinos-tirol": _3, trentinostirol: _3, "trentinosud-tirol": _3, "xn--trentinosd-tirol-rzb": _3, "trentinos\xFCd-tirol": _3, trentinosudtirol: _3, "xn--trentinosdtirol-7vb": _3, "trentinos\xFCdtirol": _3, "trentinosued-tirol": _3, trentinosuedtirol: _3, "trentinsud-tirol": _3, "xn--trentinsd-tirol-6vb": _3, "trentins\xFCd-tirol": _3, trentinsudtirol: _3, "xn--trentinsdtirol-nsb": _3, "trentins\xFCdtirol": _3, "trentinsued-tirol": _3, trentinsuedtirol: _3, tuscany: _3, umb: _3, umbria: _3, "val-d-aosta": _3, "val-daosta": _3, "vald-aosta": _3, valdaosta: _3, "valle-aosta": _3, "valle-d-aosta": _3, "valle-daosta": _3, valleaosta: _3, "valled-aosta": _3, valledaosta: _3, "vallee-aoste": _3, "xn--valle-aoste-ebb": _3, "vall\xE9e-aoste": _3, "vallee-d-aoste": _3, "xn--valle-d-aoste-ehb": _3, "vall\xE9e-d-aoste": _3, valleeaoste: _3, "xn--valleaoste-e7a": _3, "vall\xE9eaoste": _3, valleedaoste: _3, "xn--valledaoste-ebb": _3, "vall\xE9edaoste": _3, vao: _3, vda: _3, ven: _3, veneto: _3, ag: _3, agrigento: _3, al: _3, alessandria: _3, "alto-adige": _3, altoadige: _3, an: _3, ancona: _3, "andria-barletta-trani": _3, "andria-trani-barletta": _3, andriabarlettatrani: _3, andriatranibarletta: _3, ao: _3, aosta: _3, aoste: _3, ap: _3, aq: _3, aquila: _3, ar: _3, arezzo: _3, "ascoli-piceno": _3, ascolipiceno: _3, asti: _3, at: _3, av: _3, avellino: _3, ba: _3, balsan: _3, "balsan-sudtirol": _3, "xn--balsan-sdtirol-nsb": _3, "balsan-s\xFCdtirol": _3, "balsan-suedtirol": _3, bari: _3, "barletta-trani-andria": _3, barlettatraniandria: _3, belluno: _3, benevento: _3, bergamo: _3, bg: _3, bi: _3, biella: _3, bl: _3, bn: _3, bo: _3, bologna: _3, bolzano: _3, "bolzano-altoadige": _3, bozen: _3, "bozen-sudtirol": _3, "xn--bozen-sdtirol-2ob": _3, "bozen-s\xFCdtirol": _3, "bozen-suedtirol": _3, br: _3, brescia: _3, brindisi: _3, bs: _3, bt: _3, bulsan: _3, "bulsan-sudtirol": _3, "xn--bulsan-sdtirol-nsb": _3, "bulsan-s\xFCdtirol": _3, "bulsan-suedtirol": _3, bz: _3, ca: _3, cagliari: _3, caltanissetta: _3, "campidano-medio": _3, campidanomedio: _3, campobasso: _3, "carbonia-iglesias": _3, carboniaiglesias: _3, "carrara-massa": _3, carraramassa: _3, caserta: _3, catania: _3, catanzaro: _3, cb: _3, ce: _3, "cesena-forli": _3, "xn--cesena-forl-mcb": _3, "cesena-forl\xEC": _3, cesenaforli: _3, "xn--cesenaforl-i8a": _3, "cesenaforl\xEC": _3, ch: _3, chieti: _3, ci: _3, cl: _3, cn: _3, co: _3, como: _3, cosenza: _3, cr: _3, cremona: _3, crotone: _3, cs: _3, ct: _3, cuneo: _3, cz: _3, "dell-ogliastra": _3, dellogliastra: _3, en: _3, enna: _3, fc: _3, fe: _3, fermo: _3, ferrara: _3, fg: _3, fi: _3, firenze: _3, florence: _3, fm: _3, foggia: _3, "forli-cesena": _3, "xn--forl-cesena-fcb": _3, "forl\xEC-cesena": _3, forlicesena: _3, "xn--forlcesena-c8a": _3, "forl\xECcesena": _3, fr: _3, frosinone: _3, ge: _3, genoa: _3, genova: _3, go: _3, gorizia: _3, gr: _3, grosseto: _3, "iglesias-carbonia": _3, iglesiascarbonia: _3, im: _3, imperia: _3, is: _3, isernia: _3, kr: _3, "la-spezia": _3, laquila: _3, laspezia: _3, latina: _3, lc: _3, le: _3, lecce: _3, lecco: _3, li: _3, livorno: _3, lo: _3, lodi: _3, lt: _3, lu: _3, lucca: _3, macerata: _3, mantova: _3, "massa-carrara": _3, massacarrara: _3, matera: _3, mb: _3, mc: _3, me: _3, "medio-campidano": _3, mediocampidano: _3, messina: _3, mi: _3, milan: _3, milano: _3, mn: _3, mo: _3, modena: _3, monza: _3, "monza-brianza": _3, "monza-e-della-brianza": _3, monzabrianza: _3, monzaebrianza: _3, monzaedellabrianza: _3, ms: _3, mt: _3, na: _3, naples: _3, napoli: _3, no: _3, novara: _3, nu: _3, nuoro: _3, og: _3, ogliastra: _3, "olbia-tempio": _3, olbiatempio: _3, or: _3, oristano: _3, ot: _3, pa: _3, padova: _3, padua: _3, palermo: _3, parma: _3, pavia: _3, pc: _3, pd: _3, pe: _3, perugia: _3, "pesaro-urbino": _3, pesarourbino: _3, pescara: _3, pg: _3, pi: _3, piacenza: _3, pisa: _3, pistoia: _3, pn: _3, po: _3, pordenone: _3, potenza: _3, pr: _3, prato: _3, pt: _3, pu: _3, pv: _3, pz: _3, ra: _3, ragusa: _3, ravenna: _3, rc: _3, re: _3, "reggio-calabria": _3, "reggio-emilia": _3, reggiocalabria: _3, reggioemilia: _3, rg: _3, ri: _3, rieti: _3, rimini: _3, rm: _3, rn: _3, ro: _3, roma: _3, rome: _3, rovigo: _3, sa: _3, salerno: _3, sassari: _3, savona: _3, si: _3, siena: _3, siracusa: _3, so: _3, sondrio: _3, sp: _3, sr: _3, ss: _3, "xn--sdtirol-n2a": _3, "s\xFCdtirol": _3, suedtirol: _3, sv: _3, ta: _3, taranto: _3, te: _3, "tempio-olbia": _3, tempioolbia: _3, teramo: _3, terni: _3, tn: _3, to: _3, torino: _3, tp: _3, tr: _3, "trani-andria-barletta": _3, "trani-barletta-andria": _3, traniandriabarletta: _3, tranibarlettaandria: _3, trapani: _3, trento: _3, treviso: _3, trieste: _3, ts: _3, turin: _3, tv: _3, ud: _3, udine: _3, "urbino-pesaro": _3, urbinopesaro: _3, va: _3, varese: _3, vb: _3, vc: _3, ve: _3, venezia: _3, venice: _3, verbania: _3, vercelli: _3, verona: _3, vi: _3, "vibo-valentia": _3, vibovalentia: _3, vicenza: _3, viterbo: _3, vr: _3, vs: _3, vt: _3, vv: _3, "12chars": _4, ibxos: _4, iliadboxos: _4, neen: [0, { jc: _4 }], "123homepage": _4, "16-b": _4, "32-b": _4, "64-b": _4, myspreadshop: _4, syncloud: _4 }], je: [1, { co: _3, net: _3, org: _3, of: _4 }], jm: _18, jo: [1, { agri: _3, ai: _3, com: _3, edu: _3, eng: _3, fm: _3, gov: _3, mil: _3, net: _3, org: _3, per: _3, phd: _3, sch: _3, tv: _3 }], jobs: _3, jp: [1, { ac: _3, ad: _3, co: _3, ed: _3, go: _3, gr: _3, lg: _3, ne: [1, { aseinet: _50, gehirn: _4, ivory: _4, "mail-box": _4, mints: _4, mokuren: _4, opal: _4, sakura: _4, sumomo: _4, topaz: _4 }], or: _3, aichi: [1, { aisai: _3, ama: _3, anjo: _3, asuke: _3, chiryu: _3, chita: _3, fuso: _3, gamagori: _3, handa: _3, hazu: _3, hekinan: _3, higashiura: _3, ichinomiya: _3, inazawa: _3, inuyama: _3, isshiki: _3, iwakura: _3, kanie: _3, kariya: _3, kasugai: _3, kira: _3, kiyosu: _3, komaki: _3, konan: _3, kota: _3, mihama: _3, miyoshi: _3, nishio: _3, nisshin: _3, obu: _3, oguchi: _3, oharu: _3, okazaki: _3, owariasahi: _3, seto: _3, shikatsu: _3, shinshiro: _3, shitara: _3, tahara: _3, takahama: _3, tobishima: _3, toei: _3, togo: _3, tokai: _3, tokoname: _3, toyoake: _3, toyohashi: _3, toyokawa: _3, toyone: _3, toyota: _3, tsushima: _3, yatomi: _3 }], akita: [1, { akita: _3, daisen: _3, fujisato: _3, gojome: _3, hachirogata: _3, happou: _3, higashinaruse: _3, honjo: _3, honjyo: _3, ikawa: _3, kamikoani: _3, kamioka: _3, katagami: _3, kazuno: _3, kitaakita: _3, kosaka: _3, kyowa: _3, misato: _3, mitane: _3, moriyoshi: _3, nikaho: _3, noshiro: _3, odate: _3, oga: _3, ogata: _3, semboku: _3, yokote: _3, yurihonjo: _3 }], aomori: [1, { aomori: _3, gonohe: _3, hachinohe: _3, hashikami: _3, hiranai: _3, hirosaki: _3, itayanagi: _3, kuroishi: _3, misawa: _3, mutsu: _3, nakadomari: _3, noheji: _3, oirase: _3, owani: _3, rokunohe: _3, sannohe: _3, shichinohe: _3, shingo: _3, takko: _3, towada: _3, tsugaru: _3, tsuruta: _3 }], chiba: [1, { abiko: _3, asahi: _3, chonan: _3, chosei: _3, choshi: _3, chuo: _3, funabashi: _3, futtsu: _3, hanamigawa: _3, ichihara: _3, ichikawa: _3, ichinomiya: _3, inzai: _3, isumi: _3, kamagaya: _3, kamogawa: _3, kashiwa: _3, katori: _3, katsuura: _3, kimitsu: _3, kisarazu: _3, kozaki: _3, kujukuri: _3, kyonan: _3, matsudo: _3, midori: _3, mihama: _3, minamiboso: _3, mobara: _3, mutsuzawa: _3, nagara: _3, nagareyama: _3, narashino: _3, narita: _3, noda: _3, oamishirasato: _3, omigawa: _3, onjuku: _3, otaki: _3, sakae: _3, sakura: _3, shimofusa: _3, shirako: _3, shiroi: _3, shisui: _3, sodegaura: _3, sosa: _3, tako: _3, tateyama: _3, togane: _3, tohnosho: _3, tomisato: _3, urayasu: _3, yachimata: _3, yachiyo: _3, yokaichiba: _3, yokoshibahikari: _3, yotsukaido: _3 }], ehime: [1, { ainan: _3, honai: _3, ikata: _3, imabari: _3, iyo: _3, kamijima: _3, kihoku: _3, kumakogen: _3, masaki: _3, matsuno: _3, matsuyama: _3, namikata: _3, niihama: _3, ozu: _3, saijo: _3, seiyo: _3, shikokuchuo: _3, tobe: _3, toon: _3, uchiko: _3, uwajima: _3, yawatahama: _3 }], fukui: [1, { echizen: _3, eiheiji: _3, fukui: _3, ikeda: _3, katsuyama: _3, mihama: _3, minamiechizen: _3, obama: _3, ohi: _3, ono: _3, sabae: _3, sakai: _3, takahama: _3, tsuruga: _3, wakasa: _3 }], fukuoka: [1, { ashiya: _3, buzen: _3, chikugo: _3, chikuho: _3, chikujo: _3, chikushino: _3, chikuzen: _3, chuo: _3, dazaifu: _3, fukuchi: _3, hakata: _3, higashi: _3, hirokawa: _3, hisayama: _3, iizuka: _3, inatsuki: _3, kaho: _3, kasuga: _3, kasuya: _3, kawara: _3, keisen: _3, koga: _3, kurate: _3, kurogi: _3, kurume: _3, minami: _3, miyako: _3, miyama: _3, miyawaka: _3, mizumaki: _3, munakata: _3, nakagawa: _3, nakama: _3, nishi: _3, nogata: _3, ogori: _3, okagaki: _3, okawa: _3, oki: _3, omuta: _3, onga: _3, onojo: _3, oto: _3, saigawa: _3, sasaguri: _3, shingu: _3, shinyoshitomi: _3, shonai: _3, soeda: _3, sue: _3, tachiarai: _3, tagawa: _3, takata: _3, toho: _3, toyotsu: _3, tsuiki: _3, ukiha: _3, umi: _3, usui: _3, yamada: _3, yame: _3, yanagawa: _3, yukuhashi: _3 }], fukushima: [1, { aizubange: _3, aizumisato: _3, aizuwakamatsu: _3, asakawa: _3, bandai: _3, date: _3, fukushima: _3, furudono: _3, futaba: _3, hanawa: _3, higashi: _3, hirata: _3, hirono: _3, iitate: _3, inawashiro: _3, ishikawa: _3, iwaki: _3, izumizaki: _3, kagamiishi: _3, kaneyama: _3, kawamata: _3, kitakata: _3, kitashiobara: _3, koori: _3, koriyama: _3, kunimi: _3, miharu: _3, mishima: _3, namie: _3, nango: _3, nishiaizu: _3, nishigo: _3, okuma: _3, omotego: _3, ono: _3, otama: _3, samegawa: _3, shimogo: _3, shirakawa: _3, showa: _3, soma: _3, sukagawa: _3, taishin: _3, tamakawa: _3, tanagura: _3, tenei: _3, yabuki: _3, yamato: _3, yamatsuri: _3, yanaizu: _3, yugawa: _3 }], gifu: [1, { anpachi: _3, ena: _3, gifu: _3, ginan: _3, godo: _3, gujo: _3, hashima: _3, hichiso: _3, hida: _3, higashishirakawa: _3, ibigawa: _3, ikeda: _3, kakamigahara: _3, kani: _3, kasahara: _3, kasamatsu: _3, kawaue: _3, kitagata: _3, mino: _3, minokamo: _3, mitake: _3, mizunami: _3, motosu: _3, nakatsugawa: _3, ogaki: _3, sakahogi: _3, seki: _3, sekigahara: _3, shirakawa: _3, tajimi: _3, takayama: _3, tarui: _3, toki: _3, tomika: _3, wanouchi: _3, yamagata: _3, yaotsu: _3, yoro: _3 }], gunma: [1, { annaka: _3, chiyoda: _3, fujioka: _3, higashiagatsuma: _3, isesaki: _3, itakura: _3, kanna: _3, kanra: _3, katashina: _3, kawaba: _3, kiryu: _3, kusatsu: _3, maebashi: _3, meiwa: _3, midori: _3, minakami: _3, naganohara: _3, nakanojo: _3, nanmoku: _3, numata: _3, oizumi: _3, ora: _3, ota: _3, shibukawa: _3, shimonita: _3, shinto: _3, showa: _3, takasaki: _3, takayama: _3, tamamura: _3, tatebayashi: _3, tomioka: _3, tsukiyono: _3, tsumagoi: _3, ueno: _3, yoshioka: _3 }], hiroshima: [1, { asaminami: _3, daiwa: _3, etajima: _3, fuchu: _3, fukuyama: _3, hatsukaichi: _3, higashihiroshima: _3, hongo: _3, jinsekikogen: _3, kaita: _3, kui: _3, kumano: _3, kure: _3, mihara: _3, miyoshi: _3, naka: _3, onomichi: _3, osakikamijima: _3, otake: _3, saka: _3, sera: _3, seranishi: _3, shinichi: _3, shobara: _3, takehara: _3 }], hokkaido: [1, { abashiri: _3, abira: _3, aibetsu: _3, akabira: _3, akkeshi: _3, asahikawa: _3, ashibetsu: _3, ashoro: _3, assabu: _3, atsuma: _3, bibai: _3, biei: _3, bifuka: _3, bihoro: _3, biratori: _3, chippubetsu: _3, chitose: _3, date: _3, ebetsu: _3, embetsu: _3, eniwa: _3, erimo: _3, esan: _3, esashi: _3, fukagawa: _3, fukushima: _3, furano: _3, furubira: _3, haboro: _3, hakodate: _3, hamatonbetsu: _3, hidaka: _3, higashikagura: _3, higashikawa: _3, hiroo: _3, hokuryu: _3, hokuto: _3, honbetsu: _3, horokanai: _3, horonobe: _3, ikeda: _3, imakane: _3, ishikari: _3, iwamizawa: _3, iwanai: _3, kamifurano: _3, kamikawa: _3, kamishihoro: _3, kamisunagawa: _3, kamoenai: _3, kayabe: _3, kembuchi: _3, kikonai: _3, kimobetsu: _3, kitahiroshima: _3, kitami: _3, kiyosato: _3, koshimizu: _3, kunneppu: _3, kuriyama: _3, kuromatsunai: _3, kushiro: _3, kutchan: _3, kyowa: _3, mashike: _3, matsumae: _3, mikasa: _3, minamifurano: _3, mombetsu: _3, moseushi: _3, mukawa: _3, muroran: _3, naie: _3, nakagawa: _3, nakasatsunai: _3, nakatombetsu: _3, nanae: _3, nanporo: _3, nayoro: _3, nemuro: _3, niikappu: _3, niki: _3, nishiokoppe: _3, noboribetsu: _3, numata: _3, obihiro: _3, obira: _3, oketo: _3, okoppe: _3, otaru: _3, otobe: _3, otofuke: _3, otoineppu: _3, oumu: _3, ozora: _3, pippu: _3, rankoshi: _3, rebun: _3, rikubetsu: _3, rishiri: _3, rishirifuji: _3, saroma: _3, sarufutsu: _3, shakotan: _3, shari: _3, shibecha: _3, shibetsu: _3, shikabe: _3, shikaoi: _3, shimamaki: _3, shimizu: _3, shimokawa: _3, shinshinotsu: _3, shintoku: _3, shiranuka: _3, shiraoi: _3, shiriuchi: _3, sobetsu: _3, sunagawa: _3, taiki: _3, takasu: _3, takikawa: _3, takinoue: _3, teshikaga: _3, tobetsu: _3, tohma: _3, tomakomai: _3, tomari: _3, toya: _3, toyako: _3, toyotomi: _3, toyoura: _3, tsubetsu: _3, tsukigata: _3, urakawa: _3, urausu: _3, uryu: _3, utashinai: _3, wakkanai: _3, wassamu: _3, yakumo: _3, yoichi: _3 }], hyogo: [1, { aioi: _3, akashi: _3, ako: _3, amagasaki: _3, aogaki: _3, asago: _3, ashiya: _3, awaji: _3, fukusaki: _3, goshiki: _3, harima: _3, himeji: _3, ichikawa: _3, inagawa: _3, itami: _3, kakogawa: _3, kamigori: _3, kamikawa: _3, kasai: _3, kasuga: _3, kawanishi: _3, miki: _3, minamiawaji: _3, nishinomiya: _3, nishiwaki: _3, ono: _3, sanda: _3, sannan: _3, sasayama: _3, sayo: _3, shingu: _3, shinonsen: _3, shiso: _3, sumoto: _3, taishi: _3, taka: _3, takarazuka: _3, takasago: _3, takino: _3, tamba: _3, tatsuno: _3, toyooka: _3, yabu: _3, yashiro: _3, yoka: _3, yokawa: _3 }], ibaraki: [1, { ami: _3, asahi: _3, bando: _3, chikusei: _3, daigo: _3, fujishiro: _3, hitachi: _3, hitachinaka: _3, hitachiomiya: _3, hitachiota: _3, ibaraki: _3, ina: _3, inashiki: _3, itako: _3, iwama: _3, joso: _3, kamisu: _3, kasama: _3, kashima: _3, kasumigaura: _3, koga: _3, miho: _3, mito: _3, moriya: _3, naka: _3, namegata: _3, oarai: _3, ogawa: _3, omitama: _3, ryugasaki: _3, sakai: _3, sakuragawa: _3, shimodate: _3, shimotsuma: _3, shirosato: _3, sowa: _3, suifu: _3, takahagi: _3, tamatsukuri: _3, tokai: _3, tomobe: _3, tone: _3, toride: _3, tsuchiura: _3, tsukuba: _3, uchihara: _3, ushiku: _3, yachiyo: _3, yamagata: _3, yawara: _3, yuki: _3 }], ishikawa: [1, { anamizu: _3, hakui: _3, hakusan: _3, kaga: _3, kahoku: _3, kanazawa: _3, kawakita: _3, komatsu: _3, nakanoto: _3, nanao: _3, nomi: _3, nonoichi: _3, noto: _3, shika: _3, suzu: _3, tsubata: _3, tsurugi: _3, uchinada: _3, wajima: _3 }], iwate: [1, { fudai: _3, fujisawa: _3, hanamaki: _3, hiraizumi: _3, hirono: _3, ichinohe: _3, ichinoseki: _3, iwaizumi: _3, iwate: _3, joboji: _3, kamaishi: _3, kanegasaki: _3, karumai: _3, kawai: _3, kitakami: _3, kuji: _3, kunohe: _3, kuzumaki: _3, miyako: _3, mizusawa: _3, morioka: _3, ninohe: _3, noda: _3, ofunato: _3, oshu: _3, otsuchi: _3, rikuzentakata: _3, shiwa: _3, shizukuishi: _3, sumita: _3, tanohata: _3, tono: _3, yahaba: _3, yamada: _3 }], kagawa: [1, { ayagawa: _3, higashikagawa: _3, kanonji: _3, kotohira: _3, manno: _3, marugame: _3, mitoyo: _3, naoshima: _3, sanuki: _3, tadotsu: _3, takamatsu: _3, tonosho: _3, uchinomi: _3, utazu: _3, zentsuji: _3 }], kagoshima: [1, { akune: _3, amami: _3, hioki: _3, isa: _3, isen: _3, izumi: _3, kagoshima: _3, kanoya: _3, kawanabe: _3, kinko: _3, kouyama: _3, makurazaki: _3, matsumoto: _3, minamitane: _3, nakatane: _3, nishinoomote: _3, satsumasendai: _3, soo: _3, tarumizu: _3, yusui: _3 }], kanagawa: [1, { aikawa: _3, atsugi: _3, ayase: _3, chigasaki: _3, ebina: _3, fujisawa: _3, hadano: _3, hakone: _3, hiratsuka: _3, isehara: _3, kaisei: _3, kamakura: _3, kiyokawa: _3, matsuda: _3, minamiashigara: _3, miura: _3, nakai: _3, ninomiya: _3, odawara: _3, oi: _3, oiso: _3, sagamihara: _3, samukawa: _3, tsukui: _3, yamakita: _3, yamato: _3, yokosuka: _3, yugawara: _3, zama: _3, zushi: _3 }], kochi: [1, { aki: _3, geisei: _3, hidaka: _3, higashitsuno: _3, ino: _3, kagami: _3, kami: _3, kitagawa: _3, kochi: _3, mihara: _3, motoyama: _3, muroto: _3, nahari: _3, nakamura: _3, nankoku: _3, nishitosa: _3, niyodogawa: _3, ochi: _3, okawa: _3, otoyo: _3, otsuki: _3, sakawa: _3, sukumo: _3, susaki: _3, tosa: _3, tosashimizu: _3, toyo: _3, tsuno: _3, umaji: _3, yasuda: _3, yusuhara: _3 }], kumamoto: [1, { amakusa: _3, arao: _3, aso: _3, choyo: _3, gyokuto: _3, kamiamakusa: _3, kikuchi: _3, kumamoto: _3, mashiki: _3, mifune: _3, minamata: _3, minamioguni: _3, nagasu: _3, nishihara: _3, oguni: _3, ozu: _3, sumoto: _3, takamori: _3, uki: _3, uto: _3, yamaga: _3, yamato: _3, yatsushiro: _3 }], kyoto: [1, { ayabe: _3, fukuchiyama: _3, higashiyama: _3, ide: _3, ine: _3, joyo: _3, kameoka: _3, kamo: _3, kita: _3, kizu: _3, kumiyama: _3, kyotamba: _3, kyotanabe: _3, kyotango: _3, maizuru: _3, minami: _3, minamiyamashiro: _3, miyazu: _3, muko: _3, nagaokakyo: _3, nakagyo: _3, nantan: _3, oyamazaki: _3, sakyo: _3, seika: _3, tanabe: _3, uji: _3, ujitawara: _3, wazuka: _3, yamashina: _3, yawata: _3 }], mie: [1, { asahi: _3, inabe: _3, ise: _3, kameyama: _3, kawagoe: _3, kiho: _3, kisosaki: _3, kiwa: _3, komono: _3, kumano: _3, kuwana: _3, matsusaka: _3, meiwa: _3, mihama: _3, minamiise: _3, misugi: _3, miyama: _3, nabari: _3, shima: _3, suzuka: _3, tado: _3, taiki: _3, taki: _3, tamaki: _3, toba: _3, tsu: _3, udono: _3, ureshino: _3, watarai: _3, yokkaichi: _3 }], miyagi: [1, { furukawa: _3, higashimatsushima: _3, ishinomaki: _3, iwanuma: _3, kakuda: _3, kami: _3, kawasaki: _3, marumori: _3, matsushima: _3, minamisanriku: _3, misato: _3, murata: _3, natori: _3, ogawara: _3, ohira: _3, onagawa: _3, osaki: _3, rifu: _3, semine: _3, shibata: _3, shichikashuku: _3, shikama: _3, shiogama: _3, shiroishi: _3, tagajo: _3, taiwa: _3, tome: _3, tomiya: _3, wakuya: _3, watari: _3, yamamoto: _3, zao: _3 }], miyazaki: [1, { aya: _3, ebino: _3, gokase: _3, hyuga: _3, kadogawa: _3, kawaminami: _3, kijo: _3, kitagawa: _3, kitakata: _3, kitaura: _3, kobayashi: _3, kunitomi: _3, kushima: _3, mimata: _3, miyakonojo: _3, miyazaki: _3, morotsuka: _3, nichinan: _3, nishimera: _3, nobeoka: _3, saito: _3, shiiba: _3, shintomi: _3, takaharu: _3, takanabe: _3, takazaki: _3, tsuno: _3 }], nagano: [1, { achi: _3, agematsu: _3, anan: _3, aoki: _3, asahi: _3, azumino: _3, chikuhoku: _3, chikuma: _3, chino: _3, fujimi: _3, hakuba: _3, hara: _3, hiraya: _3, iida: _3, iijima: _3, iiyama: _3, iizuna: _3, ikeda: _3, ikusaka: _3, ina: _3, karuizawa: _3, kawakami: _3, kiso: _3, kisofukushima: _3, kitaaiki: _3, komagane: _3, komoro: _3, matsukawa: _3, matsumoto: _3, miasa: _3, minamiaiki: _3, minamimaki: _3, minamiminowa: _3, minowa: _3, miyada: _3, miyota: _3, mochizuki: _3, nagano: _3, nagawa: _3, nagiso: _3, nakagawa: _3, nakano: _3, nozawaonsen: _3, obuse: _3, ogawa: _3, okaya: _3, omachi: _3, omi: _3, ookuwa: _3, ooshika: _3, otaki: _3, otari: _3, sakae: _3, sakaki: _3, saku: _3, sakuho: _3, shimosuwa: _3, shinanomachi: _3, shiojiri: _3, suwa: _3, suzaka: _3, takagi: _3, takamori: _3, takayama: _3, tateshina: _3, tatsuno: _3, togakushi: _3, togura: _3, tomi: _3, ueda: _3, wada: _3, yamagata: _3, yamanouchi: _3, yasaka: _3, yasuoka: _3 }], nagasaki: [1, { chijiwa: _3, futsu: _3, goto: _3, hasami: _3, hirado: _3, iki: _3, isahaya: _3, kawatana: _3, kuchinotsu: _3, matsuura: _3, nagasaki: _3, obama: _3, omura: _3, oseto: _3, saikai: _3, sasebo: _3, seihi: _3, shimabara: _3, shinkamigoto: _3, togitsu: _3, tsushima: _3, unzen: _3 }], nara: [1, { ando: _3, gose: _3, heguri: _3, higashiyoshino: _3, ikaruga: _3, ikoma: _3, kamikitayama: _3, kanmaki: _3, kashiba: _3, kashihara: _3, katsuragi: _3, kawai: _3, kawakami: _3, kawanishi: _3, koryo: _3, kurotaki: _3, mitsue: _3, miyake: _3, nara: _3, nosegawa: _3, oji: _3, ouda: _3, oyodo: _3, sakurai: _3, sango: _3, shimoichi: _3, shimokitayama: _3, shinjo: _3, soni: _3, takatori: _3, tawaramoto: _3, tenkawa: _3, tenri: _3, uda: _3, yamatokoriyama: _3, yamatotakada: _3, yamazoe: _3, yoshino: _3 }], niigata: [1, { aga: _3, agano: _3, gosen: _3, itoigawa: _3, izumozaki: _3, joetsu: _3, kamo: _3, kariwa: _3, kashiwazaki: _3, minamiuonuma: _3, mitsuke: _3, muika: _3, murakami: _3, myoko: _3, nagaoka: _3, niigata: _3, ojiya: _3, omi: _3, sado: _3, sanjo: _3, seiro: _3, seirou: _3, sekikawa: _3, shibata: _3, tagami: _3, tainai: _3, tochio: _3, tokamachi: _3, tsubame: _3, tsunan: _3, uonuma: _3, yahiko: _3, yoita: _3, yuzawa: _3 }], oita: [1, { beppu: _3, bungoono: _3, bungotakada: _3, hasama: _3, hiji: _3, himeshima: _3, hita: _3, kamitsue: _3, kokonoe: _3, kuju: _3, kunisaki: _3, kusu: _3, oita: _3, saiki: _3, taketa: _3, tsukumi: _3, usa: _3, usuki: _3, yufu: _3 }], okayama: [1, { akaiwa: _3, asakuchi: _3, bizen: _3, hayashima: _3, ibara: _3, kagamino: _3, kasaoka: _3, kibichuo: _3, kumenan: _3, kurashiki: _3, maniwa: _3, misaki: _3, nagi: _3, niimi: _3, nishiawakura: _3, okayama: _3, satosho: _3, setouchi: _3, shinjo: _3, shoo: _3, soja: _3, takahashi: _3, tamano: _3, tsuyama: _3, wake: _3, yakage: _3 }], okinawa: [1, { aguni: _3, ginowan: _3, ginoza: _3, gushikami: _3, haebaru: _3, higashi: _3, hirara: _3, iheya: _3, ishigaki: _3, ishikawa: _3, itoman: _3, izena: _3, kadena: _3, kin: _3, kitadaito: _3, kitanakagusuku: _3, kumejima: _3, kunigami: _3, minamidaito: _3, motobu: _3, nago: _3, naha: _3, nakagusuku: _3, nakijin: _3, nanjo: _3, nishihara: _3, ogimi: _3, okinawa: _3, onna: _3, shimoji: _3, taketomi: _3, tarama: _3, tokashiki: _3, tomigusuku: _3, tonaki: _3, urasoe: _3, uruma: _3, yaese: _3, yomitan: _3, yonabaru: _3, yonaguni: _3, zamami: _3 }], osaka: [1, { abeno: _3, chihayaakasaka: _3, chuo: _3, daito: _3, fujiidera: _3, habikino: _3, hannan: _3, higashiosaka: _3, higashisumiyoshi: _3, higashiyodogawa: _3, hirakata: _3, ibaraki: _3, ikeda: _3, izumi: _3, izumiotsu: _3, izumisano: _3, kadoma: _3, kaizuka: _3, kanan: _3, kashiwara: _3, katano: _3, kawachinagano: _3, kishiwada: _3, kita: _3, kumatori: _3, matsubara: _3, minato: _3, minoh: _3, misaki: _3, moriguchi: _3, neyagawa: _3, nishi: _3, nose: _3, osakasayama: _3, sakai: _3, sayama: _3, sennan: _3, settsu: _3, shijonawate: _3, shimamoto: _3, suita: _3, tadaoka: _3, taishi: _3, tajiri: _3, takaishi: _3, takatsuki: _3, tondabayashi: _3, toyonaka: _3, toyono: _3, yao: _3 }], saga: [1, { ariake: _3, arita: _3, fukudomi: _3, genkai: _3, hamatama: _3, hizen: _3, imari: _3, kamimine: _3, kanzaki: _3, karatsu: _3, kashima: _3, kitagata: _3, kitahata: _3, kiyama: _3, kouhoku: _3, kyuragi: _3, nishiarita: _3, ogi: _3, omachi: _3, ouchi: _3, saga: _3, shiroishi: _3, taku: _3, tara: _3, tosu: _3, yoshinogari: _3 }], saitama: [1, { arakawa: _3, asaka: _3, chichibu: _3, fujimi: _3, fujimino: _3, fukaya: _3, hanno: _3, hanyu: _3, hasuda: _3, hatogaya: _3, hatoyama: _3, hidaka: _3, higashichichibu: _3, higashimatsuyama: _3, honjo: _3, ina: _3, iruma: _3, iwatsuki: _3, kamiizumi: _3, kamikawa: _3, kamisato: _3, kasukabe: _3, kawagoe: _3, kawaguchi: _3, kawajima: _3, kazo: _3, kitamoto: _3, koshigaya: _3, kounosu: _3, kuki: _3, kumagaya: _3, matsubushi: _3, minano: _3, misato: _3, miyashiro: _3, miyoshi: _3, moroyama: _3, nagatoro: _3, namegawa: _3, niiza: _3, ogano: _3, ogawa: _3, ogose: _3, okegawa: _3, omiya: _3, otaki: _3, ranzan: _3, ryokami: _3, saitama: _3, sakado: _3, satte: _3, sayama: _3, shiki: _3, shiraoka: _3, soka: _3, sugito: _3, toda: _3, tokigawa: _3, tokorozawa: _3, tsurugashima: _3, urawa: _3, warabi: _3, yashio: _3, yokoze: _3, yono: _3, yorii: _3, yoshida: _3, yoshikawa: _3, yoshimi: _3 }], shiga: [1, { aisho: _3, gamo: _3, higashiomi: _3, hikone: _3, koka: _3, konan: _3, kosei: _3, koto: _3, kusatsu: _3, maibara: _3, moriyama: _3, nagahama: _3, nishiazai: _3, notogawa: _3, omihachiman: _3, otsu: _3, ritto: _3, ryuoh: _3, takashima: _3, takatsuki: _3, torahime: _3, toyosato: _3, yasu: _3 }], shimane: [1, { akagi: _3, ama: _3, gotsu: _3, hamada: _3, higashiizumo: _3, hikawa: _3, hikimi: _3, izumo: _3, kakinoki: _3, masuda: _3, matsue: _3, misato: _3, nishinoshima: _3, ohda: _3, okinoshima: _3, okuizumo: _3, shimane: _3, tamayu: _3, tsuwano: _3, unnan: _3, yakumo: _3, yasugi: _3, yatsuka: _3 }], shizuoka: [1, { arai: _3, atami: _3, fuji: _3, fujieda: _3, fujikawa: _3, fujinomiya: _3, fukuroi: _3, gotemba: _3, haibara: _3, hamamatsu: _3, higashiizu: _3, ito: _3, iwata: _3, izu: _3, izunokuni: _3, kakegawa: _3, kannami: _3, kawanehon: _3, kawazu: _3, kikugawa: _3, kosai: _3, makinohara: _3, matsuzaki: _3, minamiizu: _3, mishima: _3, morimachi: _3, nishiizu: _3, numazu: _3, omaezaki: _3, shimada: _3, shimizu: _3, shimoda: _3, shizuoka: _3, susono: _3, yaizu: _3, yoshida: _3 }], tochigi: [1, { ashikaga: _3, bato: _3, haga: _3, ichikai: _3, iwafune: _3, kaminokawa: _3, kanuma: _3, karasuyama: _3, kuroiso: _3, mashiko: _3, mibu: _3, moka: _3, motegi: _3, nasu: _3, nasushiobara: _3, nikko: _3, nishikata: _3, nogi: _3, ohira: _3, ohtawara: _3, oyama: _3, sakura: _3, sano: _3, shimotsuke: _3, shioya: _3, takanezawa: _3, tochigi: _3, tsuga: _3, ujiie: _3, utsunomiya: _3, yaita: _3 }], tokushima: [1, { aizumi: _3, anan: _3, ichiba: _3, itano: _3, kainan: _3, komatsushima: _3, matsushige: _3, mima: _3, minami: _3, miyoshi: _3, mugi: _3, nakagawa: _3, naruto: _3, sanagochi: _3, shishikui: _3, tokushima: _3, wajiki: _3 }], tokyo: [1, { adachi: _3, akiruno: _3, akishima: _3, aogashima: _3, arakawa: _3, bunkyo: _3, chiyoda: _3, chofu: _3, chuo: _3, edogawa: _3, fuchu: _3, fussa: _3, hachijo: _3, hachioji: _3, hamura: _3, higashikurume: _3, higashimurayama: _3, higashiyamato: _3, hino: _3, hinode: _3, hinohara: _3, inagi: _3, itabashi: _3, katsushika: _3, kita: _3, kiyose: _3, kodaira: _3, koganei: _3, kokubunji: _3, komae: _3, koto: _3, kouzushima: _3, kunitachi: _3, machida: _3, meguro: _3, minato: _3, mitaka: _3, mizuho: _3, musashimurayama: _3, musashino: _3, nakano: _3, nerima: _3, ogasawara: _3, okutama: _3, ome: _3, oshima: _3, ota: _3, setagaya: _3, shibuya: _3, shinagawa: _3, shinjuku: _3, suginami: _3, sumida: _3, tachikawa: _3, taito: _3, tama: _3, toshima: _3 }], tottori: [1, { chizu: _3, hino: _3, kawahara: _3, koge: _3, kotoura: _3, misasa: _3, nanbu: _3, nichinan: _3, sakaiminato: _3, tottori: _3, wakasa: _3, yazu: _3, yonago: _3 }], toyama: [1, { asahi: _3, fuchu: _3, fukumitsu: _3, funahashi: _3, himi: _3, imizu: _3, inami: _3, johana: _3, kamiichi: _3, kurobe: _3, nakaniikawa: _3, namerikawa: _3, nanto: _3, nyuzen: _3, oyabe: _3, taira: _3, takaoka: _3, tateyama: _3, toga: _3, tonami: _3, toyama: _3, unazuki: _3, uozu: _3, yamada: _3 }], wakayama: [1, { arida: _3, aridagawa: _3, gobo: _3, hashimoto: _3, hidaka: _3, hirogawa: _3, inami: _3, iwade: _3, kainan: _3, kamitonda: _3, katsuragi: _3, kimino: _3, kinokawa: _3, kitayama: _3, koya: _3, koza: _3, kozagawa: _3, kudoyama: _3, kushimoto: _3, mihama: _3, misato: _3, nachikatsuura: _3, shingu: _3, shirahama: _3, taiji: _3, tanabe: _3, wakayama: _3, yuasa: _3, yura: _3 }], yamagata: [1, { asahi: _3, funagata: _3, higashine: _3, iide: _3, kahoku: _3, kaminoyama: _3, kaneyama: _3, kawanishi: _3, mamurogawa: _3, mikawa: _3, murayama: _3, nagai: _3, nakayama: _3, nanyo: _3, nishikawa: _3, obanazawa: _3, oe: _3, oguni: _3, ohkura: _3, oishida: _3, sagae: _3, sakata: _3, sakegawa: _3, shinjo: _3, shirataka: _3, shonai: _3, takahata: _3, tendo: _3, tozawa: _3, tsuruoka: _3, yamagata: _3, yamanobe: _3, yonezawa: _3, yuza: _3 }], yamaguchi: [1, { abu: _3, hagi: _3, hikari: _3, hofu: _3, iwakuni: _3, kudamatsu: _3, mitou: _3, nagato: _3, oshima: _3, shimonoseki: _3, shunan: _3, tabuse: _3, tokuyama: _3, toyota: _3, ube: _3, yuu: _3 }], yamanashi: [1, { chuo: _3, doshi: _3, fuefuki: _3, fujikawa: _3, fujikawaguchiko: _3, fujiyoshida: _3, hayakawa: _3, hokuto: _3, ichikawamisato: _3, kai: _3, kofu: _3, koshu: _3, kosuge: _3, "minami-alps": _3, minobu: _3, nakamichi: _3, nanbu: _3, narusawa: _3, nirasaki: _3, nishikatsura: _3, oshino: _3, otsuki: _3, showa: _3, tabayama: _3, tsuru: _3, uenohara: _3, yamanakako: _3, yamanashi: _3 }], "xn--ehqz56n": _3, "\u4E09\u91CD": _3, "xn--1lqs03n": _3, "\u4EAC\u90FD": _3, "xn--qqqt11m": _3, "\u4F50\u8CC0": _3, "xn--f6qx53a": _3, "\u5175\u5EAB": _3, "xn--djrs72d6uy": _3, "\u5317\u6D77\u9053": _3, "xn--mkru45i": _3, "\u5343\u8449": _3, "xn--0trq7p7nn": _3, "\u548C\u6B4C\u5C71": _3, "xn--5js045d": _3, "\u57FC\u7389": _3, "xn--kbrq7o": _3, "\u5927\u5206": _3, "xn--pssu33l": _3, "\u5927\u962A": _3, "xn--ntsq17g": _3, "\u5948\u826F": _3, "xn--uisz3g": _3, "\u5BAE\u57CE": _3, "xn--6btw5a": _3, "\u5BAE\u5D0E": _3, "xn--1ctwo": _3, "\u5BCC\u5C71": _3, "xn--6orx2r": _3, "\u5C71\u53E3": _3, "xn--rht61e": _3, "\u5C71\u5F62": _3, "xn--rht27z": _3, "\u5C71\u68A8": _3, "xn--nit225k": _3, "\u5C90\u961C": _3, "xn--rht3d": _3, "\u5CA1\u5C71": _3, "xn--djty4k": _3, "\u5CA9\u624B": _3, "xn--klty5x": _3, "\u5CF6\u6839": _3, "xn--kltx9a": _3, "\u5E83\u5CF6": _3, "xn--kltp7d": _3, "\u5FB3\u5CF6": _3, "xn--c3s14m": _3, "\u611B\u5A9B": _3, "xn--vgu402c": _3, "\u611B\u77E5": _3, "xn--efvn9s": _3, "\u65B0\u6F5F": _3, "xn--1lqs71d": _3, "\u6771\u4EAC": _3, "xn--4pvxs": _3, "\u6803\u6728": _3, "xn--uuwu58a": _3, "\u6C96\u7E04": _3, "xn--zbx025d": _3, "\u6ECB\u8CC0": _3, "xn--8pvr4u": _3, "\u718A\u672C": _3, "xn--5rtp49c": _3, "\u77F3\u5DDD": _3, "xn--ntso0iqx3a": _3, "\u795E\u5948\u5DDD": _3, "xn--elqq16h": _3, "\u798F\u4E95": _3, "xn--4it168d": _3, "\u798F\u5CA1": _3, "xn--klt787d": _3, "\u798F\u5CF6": _3, "xn--rny31h": _3, "\u79CB\u7530": _3, "xn--7t0a264c": _3, "\u7FA4\u99AC": _3, "xn--uist22h": _3, "\u8328\u57CE": _3, "xn--8ltr62k": _3, "\u9577\u5D0E": _3, "xn--2m4a15e": _3, "\u9577\u91CE": _3, "xn--32vp30h": _3, "\u9752\u68EE": _3, "xn--4it797k": _3, "\u9759\u5CA1": _3, "xn--5rtq34k": _3, "\u9999\u5DDD": _3, "xn--k7yn95e": _3, "\u9AD8\u77E5": _3, "xn--tor131o": _3, "\u9CE5\u53D6": _3, "xn--d5qv7z876c": _3, "\u9E7F\u5150\u5CF6": _3, kawasaki: _18, kitakyushu: _18, kobe: _18, nagoya: _18, sapporo: _18, sendai: _18, yokohama: _18, buyshop: _4, fashionstore: _4, handcrafted: _4, kawaiishop: _4, supersale: _4, theshop: _4, "0am": _4, "0g0": _4, "0j0": _4, "0t0": _4, mydns: _4, pgw: _4, wjg: _4, usercontent: _4, angry: _4, babyblue: _4, babymilk: _4, backdrop: _4, bambina: _4, bitter: _4, blush: _4, boo: _4, boy: _4, boyfriend: _4, but: _4, candypop: _4, capoo: _4, catfood: _4, cheap: _4, chicappa: _4, chillout: _4, chips: _4, chowder: _4, chu: _4, ciao: _4, cocotte: _4, coolblog: _4, cranky: _4, cutegirl: _4, daa: _4, deca: _4, deci: _4, digick: _4, egoism: _4, fakefur: _4, fem: _4, flier: _4, floppy: _4, fool: _4, frenchkiss: _4, girlfriend: _4, girly: _4, gloomy: _4, gonna: _4, greater: _4, hacca: _4, heavy: _4, her: _4, hiho: _4, hippy: _4, holy: _4, hungry: _4, icurus: _4, itigo: _4, jellybean: _4, kikirara: _4, kill: _4, kilo: _4, kuron: _4, littlestar: _4, lolipopmc: _4, lolitapunk: _4, lomo: _4, lovepop: _4, lovesick: _4, main: _4, mods: _4, mond: _4, mongolian: _4, moo: _4, namaste: _4, nikita: _4, nobushi: _4, noor: _4, oops: _4, parallel: _4, parasite: _4, pecori: _4, peewee: _4, penne: _4, pepper: _4, perma: _4, pigboat: _4, pinoko: _4, punyu: _4, pupu: _4, pussycat: _4, pya: _4, raindrop: _4, readymade: _4, sadist: _4, schoolbus: _4, secret: _4, staba: _4, stripper: _4, sub: _4, sunnyday: _4, thick: _4, tonkotsu: _4, under: _4, upper: _4, velvet: _4, verse: _4, versus: _4, vivian: _4, watson: _4, weblike: _4, whitesnow: _4, zombie: _4, hateblo: _4, hatenablog: _4, hatenadiary: _4, "2-d": _4, bona: _4, crap: _4, daynight: _4, eek: _4, flop: _4, halfmoon: _4, jeez: _4, matrix: _4, mimoza: _4, netgamers: _4, nyanta: _4, o0o0: _4, rdy: _4, rgr: _4, rulez: _4, sakurastorage: [0, { isk01: _55, isk02: _55 }], saloon: _4, sblo: _4, skr: _4, tank: _4, "uh-oh": _4, undo: _4, webaccel: [0, { rs: _4, user: _4 }], websozai: _4, xii: _4 }], ke: [1, { ac: _3, co: _3, go: _3, info: _3, me: _3, mobi: _3, ne: _3, or: _3, sc: _3 }], kg: [1, { com: _3, edu: _3, gov: _3, mil: _3, net: _3, org: _3, us: _4 }], kh: _18, ki: _56, km: [1, { ass: _3, com: _3, edu: _3, gov: _3, mil: _3, nom: _3, org: _3, prd: _3, tm: _3, asso: _3, coop: _3, gouv: _3, medecin: _3, notaires: _3, pharmaciens: _3, presse: _3, veterinaire: _3 }], kn: [1, { edu: _3, gov: _3, net: _3, org: _3 }], kp: [1, { com: _3, edu: _3, gov: _3, org: _3, rep: _3, tra: _3 }], kr: [1, { ac: _3, ai: _3, co: _3, es: _3, go: _3, hs: _3, io: _3, it: _3, kg: _3, me: _3, mil: _3, ms: _3, ne: _3, or: _3, pe: _3, re: _3, sc: _3, busan: _3, chungbuk: _3, chungnam: _3, daegu: _3, daejeon: _3, gangwon: _3, gwangju: _3, gyeongbuk: _3, gyeonggi: _3, gyeongnam: _3, incheon: _3, jeju: _3, jeonbuk: _3, jeonnam: _3, seoul: _3, ulsan: _3, c01: _4, "eliv-dns": _4 }], kw: [1, { com: _3, edu: _3, emb: _3, gov: _3, ind: _3, net: _3, org: _3 }], ky: _45, kz: [1, { com: _3, edu: _3, gov: _3, mil: _3, net: _3, org: _3, jcloud: _4 }], la: [1, { com: _3, edu: _3, gov: _3, info: _3, int: _3, net: _3, org: _3, per: _3, bnr: _4 }], lb: _5, lc: [1, { co: _3, com: _3, edu: _3, gov: _3, net: _3, org: _3, oy: _4 }], li: _3, lk: [1, { ac: _3, assn: _3, com: _3, edu: _3, gov: _3, grp: _3, hotel: _3, int: _3, ltd: _3, net: _3, ngo: _3, org: _3, sch: _3, soc: _3, web: _3 }], lr: _5, ls: [1, { ac: _3, biz: _3, co: _3, edu: _3, gov: _3, info: _3, net: _3, org: _3, sc: _3 }], lt: _11, lu: [1, { "123website": _4 }], lv: [1, { asn: _3, com: _3, conf: _3, edu: _3, gov: _3, id: _3, mil: _3, net: _3, org: _3 }], ly: [1, { com: _3, edu: _3, gov: _3, id: _3, med: _3, net: _3, org: _3, plc: _3, sch: _3 }], ma: [1, { ac: _3, co: _3, gov: _3, net: _3, org: _3, press: _3 }], mc: [1, { asso: _3, tm: _3 }], md: [1, { ir: _4 }], me: [1, { ac: _3, co: _3, edu: _3, gov: _3, its: _3, net: _3, org: _3, priv: _3, c66: _4, craft: _4, edgestack: _4, filegear: _4, glitch: _4, "filegear-sg": _4, lohmus: _4, barsy: _4, mcdir: _4, brasilia: _4, ddns: _4, dnsfor: _4, hopto: _4, loginto: _4, noip: _4, webhop: _4, soundcast: _4, tcp4: _4, vp4: _4, diskstation: _4, dscloud: _4, i234: _4, myds: _4, synology: _4, transip: _44, nohost: _4 }], mg: [1, { co: _3, com: _3, edu: _3, gov: _3, mil: _3, nom: _3, org: _3, prd: _3 }], mh: _3, mil: _3, mk: [1, { com: _3, edu: _3, gov: _3, inf: _3, name: _3, net: _3, org: _3 }], ml: [1, { ac: _3, art: _3, asso: _3, com: _3, edu: _3, gouv: _3, gov: _3, info: _3, inst: _3, net: _3, org: _3, pr: _3, presse: _3 }], mm: _18, mn: [1, { edu: _3, gov: _3, org: _3, nyc: _4 }], mo: _5, mobi: [1, { barsy: _4, dscloud: _4 }], mp: [1, { ju: _4 }], mq: _3, mr: _11, ms: [1, { com: _3, edu: _3, gov: _3, net: _3, org: _3, minisite: _4 }], mt: _45, mu: [1, { ac: _3, co: _3, com: _3, gov: _3, net: _3, or: _3, org: _3 }], museum: _3, mv: [1, { aero: _3, biz: _3, com: _3, coop: _3, edu: _3, gov: _3, info: _3, int: _3, mil: _3, museum: _3, name: _3, net: _3, org: _3, pro: _3 }], mw: [1, { ac: _3, biz: _3, co: _3, com: _3, coop: _3, edu: _3, gov: _3, int: _3, net: _3, org: _3 }], mx: [1, { com: _3, edu: _3, gob: _3, net: _3, org: _3 }], my: [1, { biz: _3, com: _3, edu: _3, gov: _3, mil: _3, name: _3, net: _3, org: _3 }], mz: [1, { ac: _3, adv: _3, co: _3, edu: _3, gov: _3, mil: _3, net: _3, org: _3 }], na: [1, { alt: _3, co: _3, com: _3, gov: _3, net: _3, org: _3 }], name: [1, { her: _59, his: _59 }], nc: [1, { asso: _3, nom: _3 }], ne: _3, net: [1, { adobeaemcloud: _4, "adobeio-static": _4, adobeioruntime: _4, akadns: _4, akamai: _4, "akamai-staging": _4, akamaiedge: _4, "akamaiedge-staging": _4, akamaihd: _4, "akamaihd-staging": _4, akamaiorigin: _4, "akamaiorigin-staging": _4, akamaized: _4, "akamaized-staging": _4, edgekey: _4, "edgekey-staging": _4, edgesuite: _4, "edgesuite-staging": _4, alwaysdata: _4, myamaze: _4, cloudfront: _4, appudo: _4, "atlassian-dev": [0, { prod: _52 }], myfritz: _4, onavstack: _4, shopselect: _4, blackbaudcdn: _4, boomla: _4, bplaced: _4, square7: _4, cdn77: [0, { r: _4 }], "cdn77-ssl": _4, gb: _4, hu: _4, jp: _4, se: _4, uk: _4, clickrising: _4, "ddns-ip": _4, "dns-cloud": _4, "dns-dynamic": _4, cloudaccess: _4, cloudflare: [2, { cdn: _4 }], cloudflareanycast: _52, cloudflarecn: _52, cloudflareglobal: _52, ctfcloud: _4, "feste-ip": _4, "knx-server": _4, "static-access": _4, cryptonomic: _7, dattolocal: _4, mydatto: _4, debian: _4, definima: _4, deno: _4, "at-band-camp": _4, blogdns: _4, "broke-it": _4, buyshouses: _4, dnsalias: _4, dnsdojo: _4, "does-it": _4, dontexist: _4, dynalias: _4, dynathome: _4, endofinternet: _4, "from-az": _4, "from-co": _4, "from-la": _4, "from-ny": _4, "gets-it": _4, "ham-radio-op": _4, homeftp: _4, homeip: _4, homelinux: _4, homeunix: _4, "in-the-band": _4, "is-a-chef": _4, "is-a-geek": _4, "isa-geek": _4, "kicks-ass": _4, "office-on-the": _4, podzone: _4, "scrapper-site": _4, selfip: _4, "sells-it": _4, servebbs: _4, serveftp: _4, thruhere: _4, webhop: _4, casacam: _4, dynu: _4, dynv6: _4, twmail: _4, ru: _4, channelsdvr: [2, { u: _4 }], fastly: [0, { freetls: _4, map: _4, prod: [0, { a: _4, global: _4 }], ssl: [0, { a: _4, b: _4, global: _4 }] }], fastlylb: [2, { map: _4 }], edgeapp: _4, "keyword-on": _4, "live-on": _4, "server-on": _4, "cdn-edges": _4, heteml: _4, cloudfunctions: _4, "grafana-dev": _4, iobb: _4, moonscale: _4, "in-dsl": _4, "in-vpn": _4, oninferno: _4, botdash: _4, "apps-1and1": _4, ipifony: _4, cloudjiffy: [2, { "fra1-de": _4, "west1-us": _4 }], elastx: [0, { "jls-sto1": _4, "jls-sto2": _4, "jls-sto3": _4 }], massivegrid: [0, { paas: [0, { "fr-1": _4, "lon-1": _4, "lon-2": _4, "ny-1": _4, "ny-2": _4, "sg-1": _4 }] }], saveincloud: [0, { jelastic: _4, "nordeste-idc": _4 }], scaleforce: _46, kinghost: _4, uni5: _4, krellian: _4, ggff: _4, localcert: _4, localhostcert: _4, localto: _7, barsy: _4, memset: _4, "azure-api": _4, "azure-mobile": _4, azureedge: _4, azurefd: _4, azurestaticapps: [2, { "1": _4, "2": _4, "3": _4, "4": _4, "5": _4, "6": _4, "7": _4, centralus: _4, eastasia: _4, eastus2: _4, westeurope: _4, westus2: _4 }], azurewebsites: _4, cloudapp: _4, trafficmanager: _4, windows: [0, { core: [0, { blob: _4 }], servicebus: _4 }], mynetname: [0, { sn: _4 }], routingthecloud: _4, bounceme: _4, ddns: _4, "eating-organic": _4, mydissent: _4, myeffect: _4, mymediapc: _4, mypsx: _4, mysecuritycamera: _4, nhlfan: _4, "no-ip": _4, pgafan: _4, privatizehealthinsurance: _4, redirectme: _4, serveblog: _4, serveminecraft: _4, sytes: _4, dnsup: _4, hicam: _4, "now-dns": _4, ownip: _4, vpndns: _4, cloudycluster: _4, ovh: [0, { hosting: _7, webpaas: _7 }], rackmaze: _4, myradweb: _4, in: _4, "subsc-pay": _4, squares: _4, schokokeks: _4, "firewall-gateway": _4, seidat: _4, senseering: _4, siteleaf: _4, mafelo: _4, myspreadshop: _4, "vps-host": [2, { jelastic: [0, { atl: _4, njs: _4, ric: _4 }] }], srcf: [0, { soc: _4, user: _4 }], supabase: _4, dsmynas: _4, familyds: _4, ts: [2, { c: _7 }], torproject: [2, { pages: _4 }], vusercontent: _4, "reserve-online": _4, "community-pro": _4, meinforum: _4, yandexcloud: [2, { storage: _4, website: _4 }], za: _4 }], nf: [1, { arts: _3, com: _3, firm: _3, info: _3, net: _3, other: _3, per: _3, rec: _3, store: _3, web: _3 }], ng: [1, { com: _3, edu: _3, gov: _3, i: _3, mil: _3, mobi: _3, name: _3, net: _3, org: _3, sch: _3, biz: [2, { co: _4, dl: _4, go: _4, lg: _4, on: _4 }], col: _4, firm: _4, gen: _4, ltd: _4, ngo: _4, plc: _4 }], ni: [1, { ac: _3, biz: _3, co: _3, com: _3, edu: _3, gob: _3, in: _3, info: _3, int: _3, mil: _3, net: _3, nom: _3, org: _3, web: _3 }], nl: [1, { co: _4, "hosting-cluster": _4, gov: _4, khplay: _4, "123website": _4, myspreadshop: _4, transurl: _7, cistron: _4, demon: _4 }], no: [1, { fhs: _3, folkebibl: _3, fylkesbibl: _3, idrett: _3, museum: _3, priv: _3, vgs: _3, dep: _3, herad: _3, kommune: _3, mil: _3, stat: _3, aa: _60, ah: _60, bu: _60, fm: _60, hl: _60, hm: _60, "jan-mayen": _60, mr: _60, nl: _60, nt: _60, of: _60, ol: _60, oslo: _60, rl: _60, sf: _60, st: _60, svalbard: _60, tm: _60, tr: _60, va: _60, vf: _60, akrehamn: _3, "xn--krehamn-dxa": _3, "\xE5krehamn": _3, algard: _3, "xn--lgrd-poac": _3, "\xE5lg\xE5rd": _3, arna: _3, bronnoysund: _3, "xn--brnnysund-m8ac": _3, "br\xF8nn\xF8ysund": _3, brumunddal: _3, bryne: _3, drobak: _3, "xn--drbak-wua": _3, "dr\xF8bak": _3, egersund: _3, fetsund: _3, floro: _3, "xn--flor-jra": _3, "flor\xF8": _3, fredrikstad: _3, hokksund: _3, honefoss: _3, "xn--hnefoss-q1a": _3, "h\xF8nefoss": _3, jessheim: _3, jorpeland: _3, "xn--jrpeland-54a": _3, "j\xF8rpeland": _3, kirkenes: _3, kopervik: _3, krokstadelva: _3, langevag: _3, "xn--langevg-jxa": _3, "langev\xE5g": _3, leirvik: _3, mjondalen: _3, "xn--mjndalen-64a": _3, "mj\xF8ndalen": _3, "mo-i-rana": _3, mosjoen: _3, "xn--mosjen-eya": _3, "mosj\xF8en": _3, nesoddtangen: _3, orkanger: _3, osoyro: _3, "xn--osyro-wua": _3, "os\xF8yro": _3, raholt: _3, "xn--rholt-mra": _3, "r\xE5holt": _3, sandnessjoen: _3, "xn--sandnessjen-ogb": _3, "sandnessj\xF8en": _3, skedsmokorset: _3, slattum: _3, spjelkavik: _3, stathelle: _3, stavern: _3, stjordalshalsen: _3, "xn--stjrdalshalsen-sqb": _3, "stj\xF8rdalshalsen": _3, tananger: _3, tranby: _3, vossevangen: _3, aarborte: _3, aejrie: _3, afjord: _3, "xn--fjord-lra": _3, "\xE5fjord": _3, agdenes: _3, akershus: _61, aknoluokta: _3, "xn--koluokta-7ya57h": _3, "\xE1k\u014Boluokta": _3, al: _3, "xn--l-1fa": _3, "\xE5l": _3, alaheadju: _3, "xn--laheadju-7ya": _3, "\xE1laheadju": _3, alesund: _3, "xn--lesund-hua": _3, "\xE5lesund": _3, alstahaug: _3, alta: _3, "xn--lt-liac": _3, "\xE1lt\xE1": _3, alvdal: _3, amli: _3, "xn--mli-tla": _3, "\xE5mli": _3, amot: _3, "xn--mot-tla": _3, "\xE5mot": _3, andasuolo: _3, andebu: _3, andoy: _3, "xn--andy-ira": _3, "and\xF8y": _3, ardal: _3, "xn--rdal-poa": _3, "\xE5rdal": _3, aremark: _3, arendal: _3, "xn--s-1fa": _3, "\xE5s": _3, aseral: _3, "xn--seral-lra": _3, "\xE5seral": _3, asker: _3, askim: _3, askoy: _3, "xn--asky-ira": _3, "ask\xF8y": _3, askvoll: _3, asnes: _3, "xn--snes-poa": _3, "\xE5snes": _3, audnedaln: _3, aukra: _3, aure: _3, aurland: _3, "aurskog-holand": _3, "xn--aurskog-hland-jnb": _3, "aurskog-h\xF8land": _3, austevoll: _3, austrheim: _3, averoy: _3, "xn--avery-yua": _3, "aver\xF8y": _3, badaddja: _3, "xn--bdddj-mrabd": _3, "b\xE5d\xE5ddj\xE5": _3, "xn--brum-voa": _3, "b\xE6rum": _3, bahcavuotna: _3, "xn--bhcavuotna-s4a": _3, "b\xE1hcavuotna": _3, bahccavuotna: _3, "xn--bhccavuotna-k7a": _3, "b\xE1hccavuotna": _3, baidar: _3, "xn--bidr-5nac": _3, "b\xE1id\xE1r": _3, bajddar: _3, "xn--bjddar-pta": _3, "b\xE1jddar": _3, balat: _3, "xn--blt-elab": _3, "b\xE1l\xE1t": _3, balestrand: _3, ballangen: _3, balsfjord: _3, bamble: _3, bardu: _3, barum: _3, batsfjord: _3, "xn--btsfjord-9za": _3, "b\xE5tsfjord": _3, bearalvahki: _3, "xn--bearalvhki-y4a": _3, "bearalv\xE1hki": _3, beardu: _3, beiarn: _3, berg: _3, bergen: _3, berlevag: _3, "xn--berlevg-jxa": _3, "berlev\xE5g": _3, bievat: _3, "xn--bievt-0qa": _3, "biev\xE1t": _3, bindal: _3, birkenes: _3, bjarkoy: _3, "xn--bjarky-fya": _3, "bjark\xF8y": _3, bjerkreim: _3, bjugn: _3, bodo: _3, "xn--bod-2na": _3, "bod\xF8": _3, bokn: _3, bomlo: _3, "xn--bmlo-gra": _3, "b\xF8mlo": _3, bremanger: _3, bronnoy: _3, "xn--brnny-wuac": _3, "br\xF8nn\xF8y": _3, budejju: _3, buskerud: _61, bygland: _3, bykle: _3, cahcesuolo: _3, "xn--hcesuolo-7ya35b": _3, "\u010D\xE1hcesuolo": _3, davvenjarga: _3, "xn--davvenjrga-y4a": _3, "davvenj\xE1rga": _3, davvesiida: _3, deatnu: _3, dielddanuorri: _3, divtasvuodna: _3, divttasvuotna: _3, donna: _3, "xn--dnna-gra": _3, "d\xF8nna": _3, dovre: _3, drammen: _3, drangedal: _3, dyroy: _3, "xn--dyry-ira": _3, "dyr\xF8y": _3, eid: _3, eidfjord: _3, eidsberg: _3, eidskog: _3, eidsvoll: _3, eigersund: _3, elverum: _3, enebakk: _3, engerdal: _3, etne: _3, etnedal: _3, evenassi: _3, "xn--eveni-0qa01ga": _3, "even\xE1\u0161\u0161i": _3, evenes: _3, "evje-og-hornnes": _3, farsund: _3, fauske: _3, fedje: _3, fet: _3, finnoy: _3, "xn--finny-yua": _3, "finn\xF8y": _3, fitjar: _3, fjaler: _3, fjell: _3, fla: _3, "xn--fl-zia": _3, "fl\xE5": _3, flakstad: _3, flatanger: _3, flekkefjord: _3, flesberg: _3, flora: _3, folldal: _3, forde: _3, "xn--frde-gra": _3, "f\xF8rde": _3, forsand: _3, fosnes: _3, "xn--frna-woa": _3, "fr\xE6na": _3, frana: _3, frei: _3, frogn: _3, froland: _3, frosta: _3, froya: _3, "xn--frya-hra": _3, "fr\xF8ya": _3, fuoisku: _3, fuossko: _3, fusa: _3, fyresdal: _3, gaivuotna: _3, "xn--givuotna-8ya": _3, "g\xE1ivuotna": _3, galsa: _3, "xn--gls-elac": _3, "g\xE1ls\xE1": _3, gamvik: _3, gangaviika: _3, "xn--ggaviika-8ya47h": _3, "g\xE1\u014Bgaviika": _3, gaular: _3, gausdal: _3, giehtavuoatna: _3, gildeskal: _3, "xn--gildeskl-g0a": _3, "gildesk\xE5l": _3, giske: _3, gjemnes: _3, gjerdrum: _3, gjerstad: _3, gjesdal: _3, gjovik: _3, "xn--gjvik-wua": _3, "gj\xF8vik": _3, gloppen: _3, gol: _3, gran: _3, grane: _3, granvin: _3, gratangen: _3, grimstad: _3, grong: _3, grue: _3, gulen: _3, guovdageaidnu: _3, ha: _3, "xn--h-2fa": _3, "h\xE5": _3, habmer: _3, "xn--hbmer-xqa": _3, "h\xE1bmer": _3, hadsel: _3, "xn--hgebostad-g3a": _3, "h\xE6gebostad": _3, hagebostad: _3, halden: _3, halsa: _3, hamar: _3, hamaroy: _3, hammarfeasta: _3, "xn--hmmrfeasta-s4ac": _3, "h\xE1mm\xE1rfeasta": _3, hammerfest: _3, hapmir: _3, "xn--hpmir-xqa": _3, "h\xE1pmir": _3, haram: _3, hareid: _3, harstad: _3, hasvik: _3, hattfjelldal: _3, haugesund: _3, hedmark: [0, { os: _3, valer: _3, "xn--vler-qoa": _3, "v\xE5ler": _3 }], hemne: _3, hemnes: _3, hemsedal: _3, hitra: _3, hjartdal: _3, hjelmeland: _3, hobol: _3, "xn--hobl-ira": _3, "hob\xF8l": _3, hof: _3, hol: _3, hole: _3, holmestrand: _3, holtalen: _3, "xn--holtlen-hxa": _3, "holt\xE5len": _3, hordaland: [0, { os: _3 }], hornindal: _3, horten: _3, hoyanger: _3, "xn--hyanger-q1a": _3, "h\xF8yanger": _3, hoylandet: _3, "xn--hylandet-54a": _3, "h\xF8ylandet": _3, hurdal: _3, hurum: _3, hvaler: _3, hyllestad: _3, ibestad: _3, inderoy: _3, "xn--indery-fya": _3, "inder\xF8y": _3, iveland: _3, ivgu: _3, jevnaker: _3, jolster: _3, "xn--jlster-bya": _3, "j\xF8lster": _3, jondal: _3, kafjord: _3, "xn--kfjord-iua": _3, "k\xE5fjord": _3, karasjohka: _3, "xn--krjohka-hwab49j": _3, "k\xE1r\xE1\u0161johka": _3, karasjok: _3, karlsoy: _3, karmoy: _3, "xn--karmy-yua": _3, "karm\xF8y": _3, kautokeino: _3, klabu: _3, "xn--klbu-woa": _3, "kl\xE6bu": _3, klepp: _3, kongsberg: _3, kongsvinger: _3, kraanghke: _3, "xn--kranghke-b0a": _3, "kr\xE5anghke": _3, kragero: _3, "xn--krager-gya": _3, "krager\xF8": _3, kristiansand: _3, kristiansund: _3, krodsherad: _3, "xn--krdsherad-m8a": _3, "kr\xF8dsherad": _3, "xn--kvfjord-nxa": _3, "kv\xE6fjord": _3, "xn--kvnangen-k0a": _3, "kv\xE6nangen": _3, kvafjord: _3, kvalsund: _3, kvam: _3, kvanangen: _3, kvinesdal: _3, kvinnherad: _3, kviteseid: _3, kvitsoy: _3, "xn--kvitsy-fya": _3, "kvits\xF8y": _3, laakesvuemie: _3, "xn--lrdal-sra": _3, "l\xE6rdal": _3, lahppi: _3, "xn--lhppi-xqa": _3, "l\xE1hppi": _3, lardal: _3, larvik: _3, lavagis: _3, lavangen: _3, leangaviika: _3, "xn--leagaviika-52b": _3, "lea\u014Bgaviika": _3, lebesby: _3, leikanger: _3, leirfjord: _3, leka: _3, leksvik: _3, lenvik: _3, lerdal: _3, lesja: _3, levanger: _3, lier: _3, lierne: _3, lillehammer: _3, lillesand: _3, lindas: _3, "xn--linds-pra": _3, "lind\xE5s": _3, lindesnes: _3, loabat: _3, "xn--loabt-0qa": _3, "loab\xE1t": _3, lodingen: _3, "xn--ldingen-q1a": _3, "l\xF8dingen": _3, lom: _3, loppa: _3, lorenskog: _3, "xn--lrenskog-54a": _3, "l\xF8renskog": _3, loten: _3, "xn--lten-gra": _3, "l\xF8ten": _3, lund: _3, lunner: _3, luroy: _3, "xn--lury-ira": _3, "lur\xF8y": _3, luster: _3, lyngdal: _3, lyngen: _3, malatvuopmi: _3, "xn--mlatvuopmi-s4a": _3, "m\xE1latvuopmi": _3, malselv: _3, "xn--mlselv-iua": _3, "m\xE5lselv": _3, malvik: _3, mandal: _3, marker: _3, marnardal: _3, masfjorden: _3, masoy: _3, "xn--msy-ula0h": _3, "m\xE5s\xF8y": _3, "matta-varjjat": _3, "xn--mtta-vrjjat-k7af": _3, "m\xE1tta-v\xE1rjjat": _3, meland: _3, meldal: _3, melhus: _3, meloy: _3, "xn--mely-ira": _3, "mel\xF8y": _3, meraker: _3, "xn--merker-kua": _3, "mer\xE5ker": _3, midsund: _3, "midtre-gauldal": _3, moareke: _3, "xn--moreke-jua": _3, "mo\xE5reke": _3, modalen: _3, modum: _3, molde: _3, "more-og-romsdal": [0, { heroy: _3, sande: _3 }], "xn--mre-og-romsdal-qqb": [0, { "xn--hery-ira": _3, sande: _3 }], "m\xF8re-og-romsdal": [0, { "her\xF8y": _3, sande: _3 }], moskenes: _3, moss: _3, mosvik: _3, muosat: _3, "xn--muost-0qa": _3, "muos\xE1t": _3, naamesjevuemie: _3, "xn--nmesjevuemie-tcba": _3, "n\xE5\xE5mesjevuemie": _3, "xn--nry-yla5g": _3, "n\xE6r\xF8y": _3, namdalseid: _3, namsos: _3, namsskogan: _3, nannestad: _3, naroy: _3, narviika: _3, narvik: _3, naustdal: _3, navuotna: _3, "xn--nvuotna-hwa": _3, "n\xE1vuotna": _3, "nedre-eiker": _3, nesna: _3, nesodden: _3, nesseby: _3, nesset: _3, nissedal: _3, nittedal: _3, "nord-aurdal": _3, "nord-fron": _3, "nord-odal": _3, norddal: _3, nordkapp: _3, nordland: [0, { bo: _3, "xn--b-5ga": _3, "b\xF8": _3, heroy: _3, "xn--hery-ira": _3, "her\xF8y": _3 }], "nordre-land": _3, nordreisa: _3, "nore-og-uvdal": _3, notodden: _3, notteroy: _3, "xn--nttery-byae": _3, "n\xF8tter\xF8y": _3, odda: _3, oksnes: _3, "xn--ksnes-uua": _3, "\xF8ksnes": _3, omasvuotna: _3, oppdal: _3, oppegard: _3, "xn--oppegrd-ixa": _3, "oppeg\xE5rd": _3, orkdal: _3, orland: _3, "xn--rland-uua": _3, "\xF8rland": _3, orskog: _3, "xn--rskog-uua": _3, "\xF8rskog": _3, orsta: _3, "xn--rsta-fra": _3, "\xF8rsta": _3, osen: _3, osteroy: _3, "xn--ostery-fya": _3, "oster\xF8y": _3, ostfold: [0, { valer: _3 }], "xn--stfold-9xa": [0, { "xn--vler-qoa": _3 }], "\xF8stfold": [0, { "v\xE5ler": _3 }], "ostre-toten": _3, "xn--stre-toten-zcb": _3, "\xF8stre-toten": _3, overhalla: _3, "ovre-eiker": _3, "xn--vre-eiker-k8a": _3, "\xF8vre-eiker": _3, oyer: _3, "xn--yer-zna": _3, "\xF8yer": _3, oygarden: _3, "xn--ygarden-p1a": _3, "\xF8ygarden": _3, "oystre-slidre": _3, "xn--ystre-slidre-ujb": _3, "\xF8ystre-slidre": _3, porsanger: _3, porsangu: _3, "xn--porsgu-sta26f": _3, "pors\xE1\u014Bgu": _3, porsgrunn: _3, rade: _3, "xn--rde-ula": _3, "r\xE5de": _3, radoy: _3, "xn--rady-ira": _3, "rad\xF8y": _3, "xn--rlingen-mxa": _3, "r\xE6lingen": _3, rahkkeravju: _3, "xn--rhkkervju-01af": _3, "r\xE1hkker\xE1vju": _3, raisa: _3, "xn--risa-5na": _3, "r\xE1isa": _3, rakkestad: _3, ralingen: _3, rana: _3, randaberg: _3, rauma: _3, rendalen: _3, rennebu: _3, rennesoy: _3, "xn--rennesy-v1a": _3, "rennes\xF8y": _3, rindal: _3, ringebu: _3, ringerike: _3, ringsaker: _3, risor: _3, "xn--risr-ira": _3, "ris\xF8r": _3, rissa: _3, roan: _3, rodoy: _3, "xn--rdy-0nab": _3, "r\xF8d\xF8y": _3, rollag: _3, romsa: _3, romskog: _3, "xn--rmskog-bya": _3, "r\xF8mskog": _3, roros: _3, "xn--rros-gra": _3, "r\xF8ros": _3, rost: _3, "xn--rst-0na": _3, "r\xF8st": _3, royken: _3, "xn--ryken-vua": _3, "r\xF8yken": _3, royrvik: _3, "xn--ryrvik-bya": _3, "r\xF8yrvik": _3, ruovat: _3, rygge: _3, salangen: _3, salat: _3, "xn--slat-5na": _3, "s\xE1lat": _3, "xn--slt-elab": _3, "s\xE1l\xE1t": _3, saltdal: _3, samnanger: _3, sandefjord: _3, sandnes: _3, sandoy: _3, "xn--sandy-yua": _3, "sand\xF8y": _3, sarpsborg: _3, sauda: _3, sauherad: _3, sel: _3, selbu: _3, selje: _3, seljord: _3, siellak: _3, sigdal: _3, siljan: _3, sirdal: _3, skanit: _3, "xn--sknit-yqa": _3, "sk\xE1nit": _3, skanland: _3, "xn--sknland-fxa": _3, "sk\xE5nland": _3, skaun: _3, skedsmo: _3, ski: _3, skien: _3, skierva: _3, "xn--skierv-uta": _3, "skierv\xE1": _3, skiptvet: _3, skjak: _3, "xn--skjk-soa": _3, "skj\xE5k": _3, skjervoy: _3, "xn--skjervy-v1a": _3, "skjerv\xF8y": _3, skodje: _3, smola: _3, "xn--smla-hra": _3, "sm\xF8la": _3, snaase: _3, "xn--snase-nra": _3, "sn\xE5ase": _3, snasa: _3, "xn--snsa-roa": _3, "sn\xE5sa": _3, snillfjord: _3, snoasa: _3, sogndal: _3, sogne: _3, "xn--sgne-gra": _3, "s\xF8gne": _3, sokndal: _3, sola: _3, solund: _3, somna: _3, "xn--smna-gra": _3, "s\xF8mna": _3, "sondre-land": _3, "xn--sndre-land-0cb": _3, "s\xF8ndre-land": _3, songdalen: _3, "sor-aurdal": _3, "xn--sr-aurdal-l8a": _3, "s\xF8r-aurdal": _3, "sor-fron": _3, "xn--sr-fron-q1a": _3, "s\xF8r-fron": _3, "sor-odal": _3, "xn--sr-odal-q1a": _3, "s\xF8r-odal": _3, "sor-varanger": _3, "xn--sr-varanger-ggb": _3, "s\xF8r-varanger": _3, sorfold: _3, "xn--srfold-bya": _3, "s\xF8rfold": _3, sorreisa: _3, "xn--srreisa-q1a": _3, "s\xF8rreisa": _3, sortland: _3, sorum: _3, "xn--srum-gra": _3, "s\xF8rum": _3, spydeberg: _3, stange: _3, stavanger: _3, steigen: _3, steinkjer: _3, stjordal: _3, "xn--stjrdal-s1a": _3, "stj\xF8rdal": _3, stokke: _3, "stor-elvdal": _3, stord: _3, stordal: _3, storfjord: _3, strand: _3, stranda: _3, stryn: _3, sula: _3, suldal: _3, sund: _3, sunndal: _3, surnadal: _3, sveio: _3, svelvik: _3, sykkylven: _3, tana: _3, telemark: [0, { bo: _3, "xn--b-5ga": _3, "b\xF8": _3 }], time: _3, tingvoll: _3, tinn: _3, tjeldsund: _3, tjome: _3, "xn--tjme-hra": _3, "tj\xF8me": _3, tokke: _3, tolga: _3, tonsberg: _3, "xn--tnsberg-q1a": _3, "t\xF8nsberg": _3, torsken: _3, "xn--trna-woa": _3, "tr\xE6na": _3, trana: _3, tranoy: _3, "xn--trany-yua": _3, "tran\xF8y": _3, troandin: _3, trogstad: _3, "xn--trgstad-r1a": _3, "tr\xF8gstad": _3, tromsa: _3, tromso: _3, "xn--troms-zua": _3, "troms\xF8": _3, trondheim: _3, trysil: _3, tvedestrand: _3, tydal: _3, tynset: _3, tysfjord: _3, tysnes: _3, "xn--tysvr-vra": _3, "tysv\xE6r": _3, tysvar: _3, ullensaker: _3, ullensvang: _3, ulvik: _3, unjarga: _3, "xn--unjrga-rta": _3, "unj\xE1rga": _3, utsira: _3, vaapste: _3, vadso: _3, "xn--vads-jra": _3, "vads\xF8": _3, "xn--vry-yla5g": _3, "v\xE6r\xF8y": _3, vaga: _3, "xn--vg-yiab": _3, "v\xE5g\xE5": _3, vagan: _3, "xn--vgan-qoa": _3, "v\xE5gan": _3, vagsoy: _3, "xn--vgsy-qoa0j": _3, "v\xE5gs\xF8y": _3, vaksdal: _3, valle: _3, vang: _3, vanylven: _3, vardo: _3, "xn--vard-jra": _3, "vard\xF8": _3, varggat: _3, "xn--vrggt-xqad": _3, "v\xE1rgg\xE1t": _3, varoy: _3, vefsn: _3, vega: _3, vegarshei: _3, "xn--vegrshei-c0a": _3, "veg\xE5rshei": _3, vennesla: _3, verdal: _3, verran: _3, vestby: _3, vestfold: [0, { sande: _3 }], vestnes: _3, "vestre-slidre": _3, "vestre-toten": _3, vestvagoy: _3, "xn--vestvgy-ixa6o": _3, "vestv\xE5g\xF8y": _3, vevelstad: _3, vik: _3, vikna: _3, vindafjord: _3, voagat: _3, volda: _3, voss: _3, co: _4, "123hjemmeside": _4, myspreadshop: _4 }], np: _18, nr: _56, nu: [1, { merseine: _4, mine: _4, shacknet: _4, enterprisecloud: _4 }], nz: [1, { ac: _3, co: _3, cri: _3, geek: _3, gen: _3, govt: _3, health: _3, iwi: _3, kiwi: _3, maori: _3, "xn--mori-qsa": _3, "m\u0101ori": _3, mil: _3, net: _3, org: _3, parliament: _3, school: _3, cloudns: _4 }], om: [1, { co: _3, com: _3, edu: _3, gov: _3, med: _3, museum: _3, net: _3, org: _3, pro: _3 }], onion: _3, org: [1, { altervista: _4, pimienta: _4, poivron: _4, potager: _4, sweetpepper: _4, cdn77: [0, { c: _4, rsc: _4 }], "cdn77-secure": [0, { origin: [0, { ssl: _4 }] }], ae: _4, cloudns: _4, "ip-dynamic": _4, ddnss: _4, dpdns: _4, duckdns: _4, tunk: _4, blogdns: _4, blogsite: _4, boldlygoingnowhere: _4, dnsalias: _4, dnsdojo: _4, doesntexist: _4, dontexist: _4, doomdns: _4, dvrdns: _4, dynalias: _4, dyndns: [2, { go: _4, home: _4 }], endofinternet: _4, endoftheinternet: _4, "from-me": _4, "game-host": _4, gotdns: _4, "hobby-site": _4, homedns: _4, homeftp: _4, homelinux: _4, homeunix: _4, "is-a-bruinsfan": _4, "is-a-candidate": _4, "is-a-celticsfan": _4, "is-a-chef": _4, "is-a-geek": _4, "is-a-knight": _4, "is-a-linux-user": _4, "is-a-patsfan": _4, "is-a-soxfan": _4, "is-found": _4, "is-lost": _4, "is-saved": _4, "is-very-bad": _4, "is-very-evil": _4, "is-very-good": _4, "is-very-nice": _4, "is-very-sweet": _4, "isa-geek": _4, "kicks-ass": _4, misconfused: _4, podzone: _4, readmyblog: _4, selfip: _4, sellsyourhome: _4, servebbs: _4, serveftp: _4, servegame: _4, "stuff-4-sale": _4, webhop: _4, accesscam: _4, camdvr: _4, freeddns: _4, mywire: _4, webredirect: _4, twmail: _4, eu: [2, { al: _4, asso: _4, at: _4, au: _4, be: _4, bg: _4, ca: _4, cd: _4, ch: _4, cn: _4, cy: _4, cz: _4, de: _4, dk: _4, edu: _4, ee: _4, es: _4, fi: _4, fr: _4, gr: _4, hr: _4, hu: _4, ie: _4, il: _4, in: _4, int: _4, is: _4, it: _4, jp: _4, kr: _4, lt: _4, lu: _4, lv: _4, me: _4, mk: _4, mt: _4, my: _4, net: _4, ng: _4, nl: _4, no: _4, nz: _4, pl: _4, pt: _4, ro: _4, ru: _4, se: _4, si: _4, sk: _4, tr: _4, uk: _4, us: _4 }], fedorainfracloud: _4, fedorapeople: _4, fedoraproject: [0, { cloud: _4, os: _43, stg: [0, { os: _43 }] }], freedesktop: _4, hatenadiary: _4, hepforge: _4, "in-dsl": _4, "in-vpn": _4, js: _4, barsy: _4, mayfirst: _4, routingthecloud: _4, bmoattachments: _4, "cable-modem": _4, collegefan: _4, couchpotatofries: _4, hopto: _4, mlbfan: _4, myftp: _4, mysecuritycamera: _4, nflfan: _4, "no-ip": _4, "read-books": _4, ufcfan: _4, zapto: _4, dynserv: _4, "now-dns": _4, "is-local": _4, httpbin: _4, pubtls: _4, jpn: _4, "my-firewall": _4, myfirewall: _4, spdns: _4, "small-web": _4, dsmynas: _4, familyds: _4, teckids: _55, tuxfamily: _4, diskstation: _4, hk: _4, us: _4, toolforge: _4, wmcloud: _4, wmflabs: _4, za: _4 }], pa: [1, { abo: _3, ac: _3, com: _3, edu: _3, gob: _3, ing: _3, med: _3, net: _3, nom: _3, org: _3, sld: _3 }], pe: [1, { com: _3, edu: _3, gob: _3, mil: _3, net: _3, nom: _3, org: _3 }], pf: [1, { com: _3, edu: _3, org: _3 }], pg: _18, ph: [1, { com: _3, edu: _3, gov: _3, i: _3, mil: _3, net: _3, ngo: _3, org: _3, cloudns: _4 }], pk: [1, { ac: _3, biz: _3, com: _3, edu: _3, fam: _3, gkp: _3, gob: _3, gog: _3, gok: _3, gop: _3, gos: _3, gov: _3, net: _3, org: _3, web: _3 }], pl: [1, { com: _3, net: _3, org: _3, agro: _3, aid: _3, atm: _3, auto: _3, biz: _3, edu: _3, gmina: _3, gsm: _3, info: _3, mail: _3, media: _3, miasta: _3, mil: _3, nieruchomosci: _3, nom: _3, pc: _3, powiat: _3, priv: _3, realestate: _3, rel: _3, sex: _3, shop: _3, sklep: _3, sos: _3, szkola: _3, targi: _3, tm: _3, tourism: _3, travel: _3, turystyka: _3, gov: [1, { ap: _3, griw: _3, ic: _3, is: _3, kmpsp: _3, konsulat: _3, kppsp: _3, kwp: _3, kwpsp: _3, mup: _3, mw: _3, oia: _3, oirm: _3, oke: _3, oow: _3, oschr: _3, oum: _3, pa: _3, pinb: _3, piw: _3, po: _3, pr: _3, psp: _3, psse: _3, pup: _3, rzgw: _3, sa: _3, sdn: _3, sko: _3, so: _3, sr: _3, starostwo: _3, ug: _3, ugim: _3, um: _3, umig: _3, upow: _3, uppo: _3, us: _3, uw: _3, uzs: _3, wif: _3, wiih: _3, winb: _3, wios: _3, witd: _3, wiw: _3, wkz: _3, wsa: _3, wskr: _3, wsse: _3, wuoz: _3, wzmiuw: _3, zp: _3, zpisdn: _3 }], augustow: _3, "babia-gora": _3, bedzin: _3, beskidy: _3, bialowieza: _3, bialystok: _3, bielawa: _3, bieszczady: _3, boleslawiec: _3, bydgoszcz: _3, bytom: _3, cieszyn: _3, czeladz: _3, czest: _3, dlugoleka: _3, elblag: _3, elk: _3, glogow: _3, gniezno: _3, gorlice: _3, grajewo: _3, ilawa: _3, jaworzno: _3, "jelenia-gora": _3, jgora: _3, kalisz: _3, karpacz: _3, kartuzy: _3, kaszuby: _3, katowice: _3, "kazimierz-dolny": _3, kepno: _3, ketrzyn: _3, klodzko: _3, kobierzyce: _3, kolobrzeg: _3, konin: _3, konskowola: _3, kutno: _3, lapy: _3, lebork: _3, legnica: _3, lezajsk: _3, limanowa: _3, lomza: _3, lowicz: _3, lubin: _3, lukow: _3, malbork: _3, malopolska: _3, mazowsze: _3, mazury: _3, mielec: _3, mielno: _3, mragowo: _3, naklo: _3, nowaruda: _3, nysa: _3, olawa: _3, olecko: _3, olkusz: _3, olsztyn: _3, opoczno: _3, opole: _3, ostroda: _3, ostroleka: _3, ostrowiec: _3, ostrowwlkp: _3, pila: _3, pisz: _3, podhale: _3, podlasie: _3, polkowice: _3, pomorskie: _3, pomorze: _3, prochowice: _3, pruszkow: _3, przeworsk: _3, pulawy: _3, radom: _3, "rawa-maz": _3, rybnik: _3, rzeszow: _3, sanok: _3, sejny: _3, skoczow: _3, slask: _3, slupsk: _3, sosnowiec: _3, "stalowa-wola": _3, starachowice: _3, stargard: _3, suwalki: _3, swidnica: _3, swiebodzin: _3, swinoujscie: _3, szczecin: _3, szczytno: _3, tarnobrzeg: _3, tgory: _3, turek: _3, tychy: _3, ustka: _3, walbrzych: _3, warmia: _3, warszawa: _3, waw: _3, wegrow: _3, wielun: _3, wlocl: _3, wloclawek: _3, wodzislaw: _3, wolomin: _3, wroclaw: _3, zachpomor: _3, zagan: _3, zarow: _3, zgora: _3, zgorzelec: _3, art: _4, gliwice: _4, krakow: _4, poznan: _4, wroc: _4, zakopane: _4, beep: _4, "ecommerce-shop": _4, cfolks: _4, dfirma: _4, dkonto: _4, you2: _4, shoparena: _4, homesklep: _4, sdscloud: _4, unicloud: _4, lodz: _4, pabianice: _4, plock: _4, sieradz: _4, skierniewice: _4, zgierz: _4, krasnik: _4, leczna: _4, lubartow: _4, lublin: _4, poniatowa: _4, swidnik: _4, co: _4, torun: _4, simplesite: _4, myspreadshop: _4, gda: _4, gdansk: _4, gdynia: _4, med: _4, sopot: _4, bielsko: _4 }], pm: [1, { own: _4, name: _4 }], pn: [1, { co: _3, edu: _3, gov: _3, net: _3, org: _3 }], post: _3, pr: [1, { biz: _3, com: _3, edu: _3, gov: _3, info: _3, isla: _3, name: _3, net: _3, org: _3, pro: _3, ac: _3, est: _3, prof: _3 }], pro: [1, { aaa: _3, aca: _3, acct: _3, avocat: _3, bar: _3, cpa: _3, eng: _3, jur: _3, law: _3, med: _3, recht: _3, "12chars": _4, cloudns: _4, barsy: _4, ngrok: _4 }], ps: [1, { com: _3, edu: _3, gov: _3, net: _3, org: _3, plo: _3, sec: _3 }], pt: [1, { com: _3, edu: _3, gov: _3, int: _3, net: _3, nome: _3, org: _3, publ: _3, "123paginaweb": _4 }], pw: [1, { gov: _3, cloudns: _4, x443: _4 }], py: [1, { com: _3, coop: _3, edu: _3, gov: _3, mil: _3, net: _3, org: _3 }], qa: [1, { com: _3, edu: _3, gov: _3, mil: _3, name: _3, net: _3, org: _3, sch: _3 }], re: [1, { asso: _3, com: _3, netlib: _4, can: _4 }], ro: [1, { arts: _3, com: _3, firm: _3, info: _3, nom: _3, nt: _3, org: _3, rec: _3, store: _3, tm: _3, www: _3, co: _4, shop: _4, barsy: _4 }], rs: [1, { ac: _3, co: _3, edu: _3, gov: _3, in: _3, org: _3, brendly: _51, barsy: _4, ox: _4 }], ru: [1, { ac: _4, edu: _4, gov: _4, int: _4, mil: _4, eurodir: _4, adygeya: _4, bashkiria: _4, bir: _4, cbg: _4, com: _4, dagestan: _4, grozny: _4, kalmykia: _4, kustanai: _4, marine: _4, mordovia: _4, msk: _4, mytis: _4, nalchik: _4, nov: _4, pyatigorsk: _4, spb: _4, vladikavkaz: _4, vladimir: _4, na4u: _4, mircloud: _4, myjino: [2, { hosting: _7, landing: _7, spectrum: _7, vps: _7 }], cldmail: [0, { hb: _4 }], mcdir: [2, { vps: _4 }], mcpre: _4, net: _4, org: _4, pp: _4, lk3: _4, ras: _4 }], rw: [1, { ac: _3, co: _3, coop: _3, gov: _3, mil: _3, net: _3, org: _3 }], sa: [1, { com: _3, edu: _3, gov: _3, med: _3, net: _3, org: _3, pub: _3, sch: _3 }], sb: _5, sc: _5, sd: [1, { com: _3, edu: _3, gov: _3, info: _3, med: _3, net: _3, org: _3, tv: _3 }], se: [1, { a: _3, ac: _3, b: _3, bd: _3, brand: _3, c: _3, d: _3, e: _3, f: _3, fh: _3, fhsk: _3, fhv: _3, g: _3, h: _3, i: _3, k: _3, komforb: _3, kommunalforbund: _3, komvux: _3, l: _3, lanbib: _3, m: _3, n: _3, naturbruksgymn: _3, o: _3, org: _3, p: _3, parti: _3, pp: _3, press: _3, r: _3, s: _3, t: _3, tm: _3, u: _3, w: _3, x: _3, y: _3, z: _3, com: _4, iopsys: _4, "123minsida": _4, itcouldbewor: _4, myspreadshop: _4 }], sg: [1, { com: _3, edu: _3, gov: _3, net: _3, org: _3, enscaled: _4 }], sh: [1, { com: _3, gov: _3, mil: _3, net: _3, org: _3, hashbang: _4, botda: _4, platform: [0, { ent: _4, eu: _4, us: _4 }], now: _4 }], si: [1, { f5: _4, gitapp: _4, gitpage: _4 }], sj: _3, sk: _3, sl: _5, sm: _3, sn: [1, { art: _3, com: _3, edu: _3, gouv: _3, org: _3, perso: _3, univ: _3 }], so: [1, { com: _3, edu: _3, gov: _3, me: _3, net: _3, org: _3, surveys: _4 }], sr: _3, ss: [1, { biz: _3, co: _3, com: _3, edu: _3, gov: _3, me: _3, net: _3, org: _3, sch: _3 }], st: [1, { co: _3, com: _3, consulado: _3, edu: _3, embaixada: _3, mil: _3, net: _3, org: _3, principe: _3, saotome: _3, store: _3, helioho: _4, kirara: _4, noho: _4 }], su: [1, { abkhazia: _4, adygeya: _4, aktyubinsk: _4, arkhangelsk: _4, armenia: _4, ashgabad: _4, azerbaijan: _4, balashov: _4, bashkiria: _4, bryansk: _4, bukhara: _4, chimkent: _4, dagestan: _4, "east-kazakhstan": _4, exnet: _4, georgia: _4, grozny: _4, ivanovo: _4, jambyl: _4, kalmykia: _4, kaluga: _4, karacol: _4, karaganda: _4, karelia: _4, khakassia: _4, krasnodar: _4, kurgan: _4, kustanai: _4, lenug: _4, mangyshlak: _4, mordovia: _4, msk: _4, murmansk: _4, nalchik: _4, navoi: _4, "north-kazakhstan": _4, nov: _4, obninsk: _4, penza: _4, pokrovsk: _4, sochi: _4, spb: _4, tashkent: _4, termez: _4, togliatti: _4, troitsk: _4, tselinograd: _4, tula: _4, tuva: _4, vladikavkaz: _4, vladimir: _4, vologda: _4 }], sv: [1, { com: _3, edu: _3, gob: _3, org: _3, red: _3 }], sx: _11, sy: _6, sz: [1, { ac: _3, co: _3, org: _3 }], tc: _3, td: _3, tel: _3, tf: [1, { sch: _4 }], tg: _3, th: [1, { ac: _3, co: _3, go: _3, in: _3, mi: _3, net: _3, or: _3, online: _4, shop: _4 }], tj: [1, { ac: _3, biz: _3, co: _3, com: _3, edu: _3, go: _3, gov: _3, int: _3, mil: _3, name: _3, net: _3, nic: _3, org: _3, test: _3, web: _3 }], tk: _3, tl: _11, tm: [1, { co: _3, com: _3, edu: _3, gov: _3, mil: _3, net: _3, nom: _3, org: _3 }], tn: [1, { com: _3, ens: _3, fin: _3, gov: _3, ind: _3, info: _3, intl: _3, mincom: _3, nat: _3, net: _3, org: _3, perso: _3, tourism: _3, orangecloud: _4 }], to: [1, { "611": _4, com: _3, edu: _3, gov: _3, mil: _3, net: _3, org: _3, oya: _4, x0: _4, quickconnect: _25, vpnplus: _4 }], tr: [1, { av: _3, bbs: _3, bel: _3, biz: _3, com: _3, dr: _3, edu: _3, gen: _3, gov: _3, info: _3, k12: _3, kep: _3, mil: _3, name: _3, net: _3, org: _3, pol: _3, tel: _3, tsk: _3, tv: _3, web: _3, nc: _11 }], tt: [1, { biz: _3, co: _3, com: _3, edu: _3, gov: _3, info: _3, mil: _3, name: _3, net: _3, org: _3, pro: _3 }], tv: [1, { "better-than": _4, dyndns: _4, "on-the-web": _4, "worse-than": _4, from: _4, sakura: _4 }], tw: [1, { club: _3, com: [1, { mymailer: _4 }], ebiz: _3, edu: _3, game: _3, gov: _3, idv: _3, mil: _3, net: _3, org: _3, url: _4, mydns: _4 }], tz: [1, { ac: _3, co: _3, go: _3, hotel: _3, info: _3, me: _3, mil: _3, mobi: _3, ne: _3, or: _3, sc: _3, tv: _3 }], ua: [1, { com: _3, edu: _3, gov: _3, in: _3, net: _3, org: _3, cherkassy: _3, cherkasy: _3, chernigov: _3, chernihiv: _3, chernivtsi: _3, chernovtsy: _3, ck: _3, cn: _3, cr: _3, crimea: _3, cv: _3, dn: _3, dnepropetrovsk: _3, dnipropetrovsk: _3, donetsk: _3, dp: _3, if: _3, "ivano-frankivsk": _3, kh: _3, kharkiv: _3, kharkov: _3, kherson: _3, khmelnitskiy: _3, khmelnytskyi: _3, kiev: _3, kirovograd: _3, km: _3, kr: _3, kropyvnytskyi: _3, krym: _3, ks: _3, kv: _3, kyiv: _3, lg: _3, lt: _3, lugansk: _3, luhansk: _3, lutsk: _3, lv: _3, lviv: _3, mk: _3, mykolaiv: _3, nikolaev: _3, od: _3, odesa: _3, odessa: _3, pl: _3, poltava: _3, rivne: _3, rovno: _3, rv: _3, sb: _3, sebastopol: _3, sevastopol: _3, sm: _3, sumy: _3, te: _3, ternopil: _3, uz: _3, uzhgorod: _3, uzhhorod: _3, vinnica: _3, vinnytsia: _3, vn: _3, volyn: _3, yalta: _3, zakarpattia: _3, zaporizhzhe: _3, zaporizhzhia: _3, zhitomir: _3, zhytomyr: _3, zp: _3, zt: _3, cc: _4, inf: _4, ltd: _4, cx: _4, ie: _4, biz: _4, co: _4, pp: _4, v: _4 }], ug: [1, { ac: _3, co: _3, com: _3, edu: _3, go: _3, gov: _3, mil: _3, ne: _3, or: _3, org: _3, sc: _3, us: _3 }], uk: [1, { ac: _3, co: [1, { bytemark: [0, { dh: _4, vm: _4 }], layershift: _46, barsy: _4, barsyonline: _4, retrosnub: _54, "nh-serv": _4, "no-ip": _4, adimo: _4, myspreadshop: _4 }], gov: [1, { api: _4, campaign: _4, service: _4 }], ltd: _3, me: _3, net: _3, nhs: _3, org: [1, { glug: _4, lug: _4, lugs: _4, affinitylottery: _4, raffleentry: _4, weeklylottery: _4 }], plc: _3, police: _3, sch: _18, conn: _4, copro: _4, hosp: _4, "independent-commission": _4, "independent-inquest": _4, "independent-inquiry": _4, "independent-panel": _4, "independent-review": _4, "public-inquiry": _4, "royal-commission": _4, pymnt: _4, barsy: _4, nimsite: _4, oraclegovcloudapps: _7 }], us: [1, { dni: _3, isa: _3, nsn: _3, ak: _62, al: _62, ar: _62, as: _62, az: _62, ca: _62, co: _62, ct: _62, dc: _62, de: [1, { cc: _3, lib: _4 }], fl: _62, ga: _62, gu: _62, hi: _63, ia: _62, id: _62, il: _62, in: _62, ks: _62, ky: _62, la: _62, ma: [1, { k12: [1, { chtr: _3, paroch: _3, pvt: _3 }], cc: _3, lib: _3 }], md: _62, me: _62, mi: [1, { k12: _3, cc: _3, lib: _3, "ann-arbor": _3, cog: _3, dst: _3, eaton: _3, gen: _3, mus: _3, tec: _3, washtenaw: _3 }], mn: _62, mo: _62, ms: _62, mt: _62, nc: _62, nd: _63, ne: _62, nh: _62, nj: _62, nm: _62, nv: _62, ny: _62, oh: _62, ok: _62, or: _62, pa: _62, pr: _62, ri: _63, sc: _62, sd: _63, tn: _62, tx: _62, ut: _62, va: _62, vi: _62, vt: _62, wa: _62, wi: _62, wv: [1, { cc: _3 }], wy: _62, cloudns: _4, "is-by": _4, "land-4-sale": _4, "stuff-4-sale": _4, heliohost: _4, enscaled: [0, { phx: _4 }], mircloud: _4, ngo: _4, golffan: _4, noip: _4, pointto: _4, freeddns: _4, srv: [2, { gh: _4, gl: _4 }], platterp: _4, servername: _4 }], uy: [1, { com: _3, edu: _3, gub: _3, mil: _3, net: _3, org: _3 }], uz: [1, { co: _3, com: _3, net: _3, org: _3 }], va: _3, vc: [1, { com: _3, edu: _3, gov: _3, mil: _3, net: _3, org: _3, gv: [2, { d: _4 }], "0e": _7, mydns: _4 }], ve: [1, { arts: _3, bib: _3, co: _3, com: _3, e12: _3, edu: _3, emprende: _3, firm: _3, gob: _3, gov: _3, info: _3, int: _3, mil: _3, net: _3, nom: _3, org: _3, rar: _3, rec: _3, store: _3, tec: _3, web: _3 }], vg: [1, { edu: _3 }], vi: [1, { co: _3, com: _3, k12: _3, net: _3, org: _3 }], vn: [1, { ac: _3, ai: _3, biz: _3, com: _3, edu: _3, gov: _3, health: _3, id: _3, info: _3, int: _3, io: _3, name: _3, net: _3, org: _3, pro: _3, angiang: _3, bacgiang: _3, backan: _3, baclieu: _3, bacninh: _3, "baria-vungtau": _3, bentre: _3, binhdinh: _3, binhduong: _3, binhphuoc: _3, binhthuan: _3, camau: _3, cantho: _3, caobang: _3, daklak: _3, daknong: _3, danang: _3, dienbien: _3, dongnai: _3, dongthap: _3, gialai: _3, hagiang: _3, haiduong: _3, haiphong: _3, hanam: _3, hanoi: _3, hatinh: _3, haugiang: _3, hoabinh: _3, hungyen: _3, khanhhoa: _3, kiengiang: _3, kontum: _3, laichau: _3, lamdong: _3, langson: _3, laocai: _3, longan: _3, namdinh: _3, nghean: _3, ninhbinh: _3, ninhthuan: _3, phutho: _3, phuyen: _3, quangbinh: _3, quangnam: _3, quangngai: _3, quangninh: _3, quangtri: _3, soctrang: _3, sonla: _3, tayninh: _3, thaibinh: _3, thainguyen: _3, thanhhoa: _3, thanhphohochiminh: _3, thuathienhue: _3, tiengiang: _3, travinh: _3, tuyenquang: _3, vinhlong: _3, vinhphuc: _3, yenbai: _3 }], vu: _45, wf: [1, { biz: _4, sch: _4 }], ws: [1, { com: _3, edu: _3, gov: _3, net: _3, org: _3, advisor: _7, cloud66: _4, dyndns: _4, mypets: _4 }], yt: [1, { org: _4 }], "xn--mgbaam7a8h": _3, "\u0627\u0645\u0627\u0631\u0627\u062A": _3, "xn--y9a3aq": _3, "\u0570\u0561\u0575": _3, "xn--54b7fta0cc": _3, "\u09AC\u09BE\u0982\u09B2\u09BE": _3, "xn--90ae": _3, "\u0431\u0433": _3, "xn--mgbcpq6gpa1a": _3, "\u0627\u0644\u0628\u062D\u0631\u064A\u0646": _3, "xn--90ais": _3, "\u0431\u0435\u043B": _3, "xn--fiqs8s": _3, "\u4E2D\u56FD": _3, "xn--fiqz9s": _3, "\u4E2D\u570B": _3, "xn--lgbbat1ad8j": _3, "\u0627\u0644\u062C\u0632\u0627\u0626\u0631": _3, "xn--wgbh1c": _3, "\u0645\u0635\u0631": _3, "xn--e1a4c": _3, "\u0435\u044E": _3, "xn--qxa6a": _3, "\u03B5\u03C5": _3, "xn--mgbah1a3hjkrd": _3, "\u0645\u0648\u0631\u064A\u062A\u0627\u0646\u064A\u0627": _3, "xn--node": _3, "\u10D2\u10D4": _3, "xn--qxam": _3, "\u03B5\u03BB": _3, "xn--j6w193g": [1, { "xn--gmqw5a": _3, "xn--55qx5d": _3, "xn--mxtq1m": _3, "xn--wcvs22d": _3, "xn--uc0atv": _3, "xn--od0alg": _3 }], "\u9999\u6E2F": [1, { "\u500B\u4EBA": _3, "\u516C\u53F8": _3, "\u653F\u5E9C": _3, "\u6559\u80B2": _3, "\u7D44\u7E54": _3, "\u7DB2\u7D61": _3 }], "xn--2scrj9c": _3, "\u0CAD\u0CBE\u0CB0\u0CA4": _3, "xn--3hcrj9c": _3, "\u0B2D\u0B3E\u0B30\u0B24": _3, "xn--45br5cyl": _3, "\u09AD\u09BE\u09F0\u09A4": _3, "xn--h2breg3eve": _3, "\u092D\u093E\u0930\u0924\u092E\u094D": _3, "xn--h2brj9c8c": _3, "\u092D\u093E\u0930\u094B\u0924": _3, "xn--mgbgu82a": _3, "\u0680\u0627\u0631\u062A": _3, "xn--rvc1e0am3e": _3, "\u0D2D\u0D3E\u0D30\u0D24\u0D02": _3, "xn--h2brj9c": _3, "\u092D\u093E\u0930\u0924": _3, "xn--mgbbh1a": _3, "\u0628\u0627\u0631\u062A": _3, "xn--mgbbh1a71e": _3, "\u0628\u06BE\u0627\u0631\u062A": _3, "xn--fpcrj9c3d": _3, "\u0C2D\u0C3E\u0C30\u0C24\u0C4D": _3, "xn--gecrj9c": _3, "\u0AAD\u0ABE\u0AB0\u0AA4": _3, "xn--s9brj9c": _3, "\u0A2D\u0A3E\u0A30\u0A24": _3, "xn--45brj9c": _3, "\u09AD\u09BE\u09B0\u09A4": _3, "xn--xkc2dl3a5ee0h": _3, "\u0B87\u0BA8\u0BCD\u0BA4\u0BBF\u0BAF\u0BBE": _3, "xn--mgba3a4f16a": _3, "\u0627\u06CC\u0631\u0627\u0646": _3, "xn--mgba3a4fra": _3, "\u0627\u064A\u0631\u0627\u0646": _3, "xn--mgbtx2b": _3, "\u0639\u0631\u0627\u0642": _3, "xn--mgbayh7gpa": _3, "\u0627\u0644\u0627\u0631\u062F\u0646": _3, "xn--3e0b707e": _3, "\uD55C\uAD6D": _3, "xn--80ao21a": _3, "\u049B\u0430\u0437": _3, "xn--q7ce6a": _3, "\u0EA5\u0EB2\u0EA7": _3, "xn--fzc2c9e2c": _3, "\u0DBD\u0D82\u0D9A\u0DCF": _3, "xn--xkc2al3hye2a": _3, "\u0B87\u0BB2\u0B99\u0BCD\u0B95\u0BC8": _3, "xn--mgbc0a9azcg": _3, "\u0627\u0644\u0645\u063A\u0631\u0628": _3, "xn--d1alf": _3, "\u043C\u043A\u0434": _3, "xn--l1acc": _3, "\u043C\u043E\u043D": _3, "xn--mix891f": _3, "\u6FB3\u9580": _3, "xn--mix082f": _3, "\u6FB3\u95E8": _3, "xn--mgbx4cd0ab": _3, "\u0645\u0644\u064A\u0633\u064A\u0627": _3, "xn--mgb9awbf": _3, "\u0639\u0645\u0627\u0646": _3, "xn--mgbai9azgqp6j": _3, "\u067E\u0627\u06A9\u0633\u062A\u0627\u0646": _3, "xn--mgbai9a5eva00b": _3, "\u067E\u0627\u0643\u0633\u062A\u0627\u0646": _3, "xn--ygbi2ammx": _3, "\u0641\u0644\u0633\u0637\u064A\u0646": _3, "xn--90a3ac": [1, { "xn--80au": _3, "xn--90azh": _3, "xn--d1at": _3, "xn--c1avg": _3, "xn--o1ac": _3, "xn--o1ach": _3 }], "\u0441\u0440\u0431": [1, { "\u0430\u043A": _3, "\u043E\u0431\u0440": _3, "\u043E\u0434": _3, "\u043E\u0440\u0433": _3, "\u043F\u0440": _3, "\u0443\u043F\u0440": _3 }], "xn--p1ai": _3, "\u0440\u0444": _3, "xn--wgbl6a": _3, "\u0642\u0637\u0631": _3, "xn--mgberp4a5d4ar": _3, "\u0627\u0644\u0633\u0639\u0648\u062F\u064A\u0629": _3, "xn--mgberp4a5d4a87g": _3, "\u0627\u0644\u0633\u0639\u0648\u062F\u06CC\u0629": _3, "xn--mgbqly7c0a67fbc": _3, "\u0627\u0644\u0633\u0639\u0648\u062F\u06CC\u06C3": _3, "xn--mgbqly7cvafr": _3, "\u0627\u0644\u0633\u0639\u0648\u062F\u064A\u0647": _3, "xn--mgbpl2fh": _3, "\u0633\u0648\u062F\u0627\u0646": _3, "xn--yfro4i67o": _3, "\u65B0\u52A0\u5761": _3, "xn--clchc0ea0b2g2a9gcd": _3, "\u0B9A\u0BBF\u0B99\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0BC2\u0BB0\u0BCD": _3, "xn--ogbpf8fl": _3, "\u0633\u0648\u0631\u064A\u0629": _3, "xn--mgbtf8fl": _3, "\u0633\u0648\u0631\u064A\u0627": _3, "xn--o3cw4h": [1, { "xn--o3cyx2a": _3, "xn--12co0c3b4eva": _3, "xn--m3ch0j3a": _3, "xn--h3cuzk1di": _3, "xn--12c1fe0br": _3, "xn--12cfi8ixb8l": _3 }], "\u0E44\u0E17\u0E22": [1, { "\u0E17\u0E2B\u0E32\u0E23": _3, "\u0E18\u0E38\u0E23\u0E01\u0E34\u0E08": _3, "\u0E40\u0E19\u0E47\u0E15": _3, "\u0E23\u0E31\u0E10\u0E1A\u0E32\u0E25": _3, "\u0E28\u0E36\u0E01\u0E29\u0E32": _3, "\u0E2D\u0E07\u0E04\u0E4C\u0E01\u0E23": _3 }], "xn--pgbs0dh": _3, "\u062A\u0648\u0646\u0633": _3, "xn--kpry57d": _3, "\u53F0\u7063": _3, "xn--kprw13d": _3, "\u53F0\u6E7E": _3, "xn--nnx388a": _3, "\u81FA\u7063": _3, "xn--j1amh": _3, "\u0443\u043A\u0440": _3, "xn--mgb2ddes": _3, "\u0627\u0644\u064A\u0645\u0646": _3, xxx: _3, ye: _6, za: [0, { ac: _3, agric: _3, alt: _3, co: _3, edu: _3, gov: _3, grondar: _3, law: _3, mil: _3, net: _3, ngo: _3, nic: _3, nis: _3, nom: _3, org: _3, school: _3, tm: _3, web: _3 }], zm: [1, { ac: _3, biz: _3, co: _3, com: _3, edu: _3, gov: _3, info: _3, mil: _3, net: _3, org: _3, sch: _3 }], zw: [1, { ac: _3, co: _3, gov: _3, mil: _3, org: _3 }], aaa: _3, aarp: _3, abb: _3, abbott: _3, abbvie: _3, abc: _3, able: _3, abogado: _3, abudhabi: _3, academy: [1, { official: _4 }], accenture: _3, accountant: _3, accountants: _3, aco: _3, actor: _3, ads: _3, adult: _3, aeg: _3, aetna: _3, afl: _3, africa: _3, agakhan: _3, agency: _3, aig: _3, airbus: _3, airforce: _3, airtel: _3, akdn: _3, alibaba: _3, alipay: _3, allfinanz: _3, allstate: _3, ally: _3, alsace: _3, alstom: _3, amazon: _3, americanexpress: _3, americanfamily: _3, amex: _3, amfam: _3, amica: _3, amsterdam: _3, analytics: _3, android: _3, anquan: _3, anz: _3, aol: _3, apartments: _3, app: [1, { adaptable: _4, aiven: _4, beget: _7, brave: _8, clerk: _4, clerkstage: _4, wnext: _4, csb: [2, { preview: _4 }], convex: _4, deta: _4, ondigitalocean: _4, easypanel: _4, encr: _4, evervault: _9, expo: [2, { staging: _4 }], edgecompute: _4, "on-fleek": _4, flutterflow: _4, e2b: _4, framer: _4, hosted: _7, run: _7, web: _4, hasura: _4, botdash: _4, loginline: _4, lovable: _4, medusajs: _4, messerli: _4, netfy: _4, netlify: _4, ngrok: _4, "ngrok-free": _4, developer: _7, noop: _4, northflank: _7, upsun: _7, replit: _10, nyat: _4, snowflake: [0, { "*": _4, privatelink: _7 }], streamlit: _4, storipress: _4, telebit: _4, typedream: _4, vercel: _4, bookonline: _4, wdh: _4, windsurf: _4, zeabur: _4, zerops: _7 }], apple: _3, aquarelle: _3, arab: _3, aramco: _3, archi: _3, army: _3, art: _3, arte: _3, asda: _3, associates: _3, athleta: _3, attorney: _3, auction: _3, audi: _3, audible: _3, audio: _3, auspost: _3, author: _3, auto: _3, autos: _3, aws: [1, { sagemaker: [0, { "ap-northeast-1": _14, "ap-northeast-2": _14, "ap-south-1": _14, "ap-southeast-1": _14, "ap-southeast-2": _14, "ca-central-1": _16, "eu-central-1": _14, "eu-west-1": _14, "eu-west-2": _14, "us-east-1": _16, "us-east-2": _16, "us-west-2": _16, "af-south-1": _13, "ap-east-1": _13, "ap-northeast-3": _13, "ap-south-2": _15, "ap-southeast-3": _13, "ap-southeast-4": _15, "ca-west-1": [0, { notebook: _4, "notebook-fips": _4 }], "eu-central-2": _13, "eu-north-1": _13, "eu-south-1": _13, "eu-south-2": _13, "eu-west-3": _13, "il-central-1": _13, "me-central-1": _13, "me-south-1": _13, "sa-east-1": _13, "us-gov-east-1": _17, "us-gov-west-1": _17, "us-west-1": [0, { notebook: _4, "notebook-fips": _4, studio: _4 }], experiments: _7 }], repost: [0, { private: _7 }], on: [0, { "ap-northeast-1": _12, "ap-southeast-1": _12, "ap-southeast-2": _12, "eu-central-1": _12, "eu-north-1": _12, "eu-west-1": _12, "us-east-1": _12, "us-east-2": _12, "us-west-2": _12 }] }], axa: _3, azure: _3, baby: _3, baidu: _3, banamex: _3, band: _3, bank: _3, bar: _3, barcelona: _3, barclaycard: _3, barclays: _3, barefoot: _3, bargains: _3, baseball: _3, basketball: [1, { aus: _4, nz: _4 }], bauhaus: _3, bayern: _3, bbc: _3, bbt: _3, bbva: _3, bcg: _3, bcn: _3, beats: _3, beauty: _3, beer: _3, bentley: _3, berlin: _3, best: _3, bestbuy: _3, bet: _3, bharti: _3, bible: _3, bid: _3, bike: _3, bing: _3, bingo: _3, bio: _3, black: _3, blackfriday: _3, blockbuster: _3, blog: _3, bloomberg: _3, blue: _3, bms: _3, bmw: _3, bnpparibas: _3, boats: _3, boehringer: _3, bofa: _3, bom: _3, bond: _3, boo: _3, book: _3, booking: _3, bosch: _3, bostik: _3, boston: _3, bot: _3, boutique: _3, box: _3, bradesco: _3, bridgestone: _3, broadway: _3, broker: _3, brother: _3, brussels: _3, build: [1, { v0: _4, windsurf: _4 }], builders: [1, { cloudsite: _4 }], business: _19, buy: _3, buzz: _3, bzh: _3, cab: _3, cafe: _3, cal: _3, call: _3, calvinklein: _3, cam: _3, camera: _3, camp: [1, { emf: [0, { at: _4 }] }], canon: _3, capetown: _3, capital: _3, capitalone: _3, car: _3, caravan: _3, cards: _3, care: _3, career: _3, careers: _3, cars: _3, casa: [1, { nabu: [0, { ui: _4 }] }], case: _3, cash: _3, casino: _3, catering: _3, catholic: _3, cba: _3, cbn: _3, cbre: _3, center: _3, ceo: _3, cern: _3, cfa: _3, cfd: _3, chanel: _3, channel: _3, charity: _3, chase: _3, chat: _3, cheap: _3, chintai: _3, christmas: _3, chrome: _3, church: _3, cipriani: _3, circle: _3, cisco: _3, citadel: _3, citi: _3, citic: _3, city: _3, claims: _3, cleaning: _3, click: _3, clinic: _3, clinique: _3, clothing: _3, cloud: [1, { convex: _4, elementor: _4, encoway: [0, { eu: _4 }], statics: _7, ravendb: _4, axarnet: [0, { "es-1": _4 }], diadem: _4, jelastic: [0, { vip: _4 }], jele: _4, "jenv-aruba": [0, { aruba: [0, { eur: [0, { it1: _4 }] }], it1: _4 }], keliweb: [2, { cs: _4 }], oxa: [2, { tn: _4, uk: _4 }], primetel: [2, { uk: _4 }], reclaim: [0, { ca: _4, uk: _4, us: _4 }], trendhosting: [0, { ch: _4, de: _4 }], jotelulu: _4, kuleuven: _4, laravel: _4, linkyard: _4, magentosite: _7, matlab: _4, observablehq: _4, perspecta: _4, vapor: _4, "on-rancher": _7, scw: [0, { baremetal: [0, { "fr-par-1": _4, "fr-par-2": _4, "nl-ams-1": _4 }], "fr-par": [0, { cockpit: _4, fnc: [2, { functions: _4 }], k8s: _21, s3: _4, "s3-website": _4, whm: _4 }], instances: [0, { priv: _4, pub: _4 }], k8s: _4, "nl-ams": [0, { cockpit: _4, k8s: _21, s3: _4, "s3-website": _4, whm: _4 }], "pl-waw": [0, { cockpit: _4, k8s: _21, s3: _4, "s3-website": _4 }], scalebook: _4, smartlabeling: _4 }], servebolt: _4, onstackit: [0, { runs: _4 }], trafficplex: _4, "unison-services": _4, urown: _4, voorloper: _4, zap: _4 }], club: [1, { cloudns: _4, jele: _4, barsy: _4 }], clubmed: _3, coach: _3, codes: [1, { owo: _7 }], coffee: _3, college: _3, cologne: _3, commbank: _3, community: [1, { nog: _4, ravendb: _4, myforum: _4 }], company: _3, compare: _3, computer: _3, comsec: _3, condos: _3, construction: _3, consulting: _3, contact: _3, contractors: _3, cooking: _3, cool: [1, { elementor: _4, de: _4 }], corsica: _3, country: _3, coupon: _3, coupons: _3, courses: _3, cpa: _3, credit: _3, creditcard: _3, creditunion: _3, cricket: _3, crown: _3, crs: _3, cruise: _3, cruises: _3, cuisinella: _3, cymru: _3, cyou: _3, dad: _3, dance: _3, data: _3, date: _3, dating: _3, datsun: _3, day: _3, dclk: _3, dds: _3, deal: _3, dealer: _3, deals: _3, degree: _3, delivery: _3, dell: _3, deloitte: _3, delta: _3, democrat: _3, dental: _3, dentist: _3, desi: _3, design: [1, { graphic: _4, bss: _4 }], dev: [1, { "12chars": _4, myaddr: _4, panel: _4, lcl: _7, lclstage: _7, stg: _7, stgstage: _7, pages: _4, r2: _4, workers: _4, deno: _4, "deno-staging": _4, deta: _4, evervault: _9, fly: _4, githubpreview: _4, gateway: _7, hrsn: [2, { psl: [0, { sub: _4, wc: [0, { "*": _4, sub: _7 }] }] }], botdash: _4, inbrowser: _7, "is-a-good": _4, "is-a": _4, iserv: _4, runcontainers: _4, localcert: [0, { user: _7 }], loginline: _4, barsy: _4, mediatech: _4, modx: _4, ngrok: _4, "ngrok-free": _4, "is-a-fullstack": _4, "is-cool": _4, "is-not-a": _4, localplayer: _4, xmit: _4, "platter-app": _4, replit: [2, { archer: _4, bones: _4, canary: _4, global: _4, hacker: _4, id: _4, janeway: _4, kim: _4, kira: _4, kirk: _4, odo: _4, paris: _4, picard: _4, pike: _4, prerelease: _4, reed: _4, riker: _4, sisko: _4, spock: _4, staging: _4, sulu: _4, tarpit: _4, teams: _4, tucker: _4, wesley: _4, worf: _4 }], crm: [0, { d: _7, w: _7, wa: _7, wb: _7, wc: _7, wd: _7, we: _7, wf: _7 }], vercel: _4, webhare: _7 }], dhl: _3, diamonds: _3, diet: _3, digital: [1, { cloudapps: [2, { london: _4 }] }], direct: [1, { libp2p: _4 }], directory: _3, discount: _3, discover: _3, dish: _3, diy: _3, dnp: _3, docs: _3, doctor: _3, dog: _3, domains: _3, dot: _3, download: _3, drive: _3, dtv: _3, dubai: _3, dunlop: _3, dupont: _3, durban: _3, dvag: _3, dvr: _3, earth: _3, eat: _3, eco: _3, edeka: _3, education: _19, email: [1, { crisp: [0, { on: _4 }], tawk: _49, tawkto: _49 }], emerck: _3, energy: _3, engineer: _3, engineering: _3, enterprises: _3, epson: _3, equipment: _3, ericsson: _3, erni: _3, esq: _3, estate: [1, { compute: _7 }], eurovision: _3, eus: [1, { party: _50 }], events: [1, { koobin: _4, co: _4 }], exchange: _3, expert: _3, exposed: _3, express: _3, extraspace: _3, fage: _3, fail: _3, fairwinds: _3, faith: _3, family: _3, fan: _3, fans: _3, farm: [1, { storj: _4 }], farmers: _3, fashion: _3, fast: _3, fedex: _3, feedback: _3, ferrari: _3, ferrero: _3, fidelity: _3, fido: _3, film: _3, final: _3, finance: _3, financial: _19, fire: _3, firestone: _3, firmdale: _3, fish: _3, fishing: _3, fit: _3, fitness: _3, flickr: _3, flights: _3, flir: _3, florist: _3, flowers: _3, fly: _3, foo: _3, food: _3, football: _3, ford: _3, forex: _3, forsale: _3, forum: _3, foundation: _3, fox: _3, free: _3, fresenius: _3, frl: _3, frogans: _3, frontier: _3, ftr: _3, fujitsu: _3, fun: _3, fund: _3, furniture: _3, futbol: _3, fyi: _3, gal: _3, gallery: _3, gallo: _3, gallup: _3, game: _3, games: [1, { pley: _4, sheezy: _4 }], gap: _3, garden: _3, gay: [1, { pages: _4 }], gbiz: _3, gdn: [1, { cnpy: _4 }], gea: _3, gent: _3, genting: _3, george: _3, ggee: _3, gift: _3, gifts: _3, gives: _3, giving: _3, glass: _3, gle: _3, global: [1, { appwrite: _4 }], globo: _3, gmail: _3, gmbh: _3, gmo: _3, gmx: _3, godaddy: _3, gold: _3, goldpoint: _3, golf: _3, goo: _3, goodyear: _3, goog: [1, { cloud: _4, translate: _4, usercontent: _7 }], google: _3, gop: _3, got: _3, grainger: _3, graphics: _3, gratis: _3, green: _3, gripe: _3, grocery: _3, group: [1, { discourse: _4 }], gucci: _3, guge: _3, guide: _3, guitars: _3, guru: _3, hair: _3, hamburg: _3, hangout: _3, haus: _3, hbo: _3, hdfc: _3, hdfcbank: _3, health: [1, { hra: _4 }], healthcare: _3, help: _3, helsinki: _3, here: _3, hermes: _3, hiphop: _3, hisamitsu: _3, hitachi: _3, hiv: _3, hkt: _3, hockey: _3, holdings: _3, holiday: _3, homedepot: _3, homegoods: _3, homes: _3, homesense: _3, honda: _3, horse: _3, hospital: _3, host: [1, { cloudaccess: _4, freesite: _4, easypanel: _4, fastvps: _4, myfast: _4, tempurl: _4, wpmudev: _4, jele: _4, mircloud: _4, wp2: _4, half: _4 }], hosting: [1, { opencraft: _4 }], hot: _3, hotels: _3, hotmail: _3, house: _3, how: _3, hsbc: _3, hughes: _3, hyatt: _3, hyundai: _3, ibm: _3, icbc: _3, ice: _3, icu: _3, ieee: _3, ifm: _3, ikano: _3, imamat: _3, imdb: _3, immo: _3, immobilien: _3, inc: _3, industries: _3, infiniti: _3, ing: _3, ink: _3, institute: _3, insurance: _3, insure: _3, international: _3, intuit: _3, investments: _3, ipiranga: _3, irish: _3, ismaili: _3, ist: _3, istanbul: _3, itau: _3, itv: _3, jaguar: _3, java: _3, jcb: _3, jeep: _3, jetzt: _3, jewelry: _3, jio: _3, jll: _3, jmp: _3, jnj: _3, joburg: _3, jot: _3, joy: _3, jpmorgan: _3, jprs: _3, juegos: _3, juniper: _3, kaufen: _3, kddi: _3, kerryhotels: _3, kerryproperties: _3, kfh: _3, kia: _3, kids: _3, kim: _3, kindle: _3, kitchen: _3, kiwi: _3, koeln: _3, komatsu: _3, kosher: _3, kpmg: _3, kpn: _3, krd: [1, { co: _4, edu: _4 }], kred: _3, kuokgroup: _3, kyoto: _3, lacaixa: _3, lamborghini: _3, lamer: _3, lancaster: _3, land: _3, landrover: _3, lanxess: _3, lasalle: _3, lat: _3, latino: _3, latrobe: _3, law: _3, lawyer: _3, lds: _3, lease: _3, leclerc: _3, lefrak: _3, legal: _3, lego: _3, lexus: _3, lgbt: _3, lidl: _3, life: _3, lifeinsurance: _3, lifestyle: _3, lighting: _3, like: _3, lilly: _3, limited: _3, limo: _3, lincoln: _3, link: [1, { myfritz: _4, cyon: _4, dweb: _7, inbrowser: _7, nftstorage: _57, mypep: _4, storacha: _57, w3s: _57 }], live: [1, { aem: _4, hlx: _4, ewp: _7 }], living: _3, llc: _3, llp: _3, loan: _3, loans: _3, locker: _3, locus: _3, lol: [1, { omg: _4 }], london: _3, lotte: _3, lotto: _3, love: _3, lpl: _3, lplfinancial: _3, ltd: _3, ltda: _3, lundbeck: _3, luxe: _3, luxury: _3, madrid: _3, maif: _3, maison: _3, makeup: _3, man: _3, management: _3, mango: _3, map: _3, market: _3, marketing: _3, markets: _3, marriott: _3, marshalls: _3, mattel: _3, mba: _3, mckinsey: _3, med: _3, media: _58, meet: _3, melbourne: _3, meme: _3, memorial: _3, men: _3, menu: [1, { barsy: _4, barsyonline: _4 }], merck: _3, merckmsd: _3, miami: _3, microsoft: _3, mini: _3, mint: _3, mit: _3, mitsubishi: _3, mlb: _3, mls: _3, mma: _3, mobile: _3, moda: _3, moe: _3, moi: _3, mom: [1, { ind: _4 }], monash: _3, money: _3, monster: _3, mormon: _3, mortgage: _3, moscow: _3, moto: _3, motorcycles: _3, mov: _3, movie: _3, msd: _3, mtn: _3, mtr: _3, music: _3, nab: _3, nagoya: _3, navy: _3, nba: _3, nec: _3, netbank: _3, netflix: _3, network: [1, { alces: _7, co: _4, arvo: _4, azimuth: _4, tlon: _4 }], neustar: _3, new: _3, news: [1, { noticeable: _4 }], next: _3, nextdirect: _3, nexus: _3, nfl: _3, ngo: _3, nhk: _3, nico: _3, nike: _3, nikon: _3, ninja: _3, nissan: _3, nissay: _3, nokia: _3, norton: _3, now: _3, nowruz: _3, nowtv: _3, nra: _3, nrw: _3, ntt: _3, nyc: _3, obi: _3, observer: _3, office: _3, okinawa: _3, olayan: _3, olayangroup: _3, ollo: _3, omega: _3, one: [1, { kin: _7, service: _4 }], ong: [1, { obl: _4 }], onl: _3, online: [1, { eero: _4, "eero-stage": _4, websitebuilder: _4, barsy: _4 }], ooo: _3, open: _3, oracle: _3, orange: [1, { tech: _4 }], organic: _3, origins: _3, osaka: _3, otsuka: _3, ott: _3, ovh: [1, { nerdpol: _4 }], page: [1, { aem: _4, hlx: _4, hlx3: _4, translated: _4, codeberg: _4, heyflow: _4, prvcy: _4, rocky: _4, pdns: _4, plesk: _4 }], panasonic: _3, paris: _3, pars: _3, partners: _3, parts: _3, party: _3, pay: _3, pccw: _3, pet: _3, pfizer: _3, pharmacy: _3, phd: _3, philips: _3, phone: _3, photo: _3, photography: _3, photos: _58, physio: _3, pics: _3, pictet: _3, pictures: [1, { "1337": _4 }], pid: _3, pin: _3, ping: _3, pink: _3, pioneer: _3, pizza: [1, { ngrok: _4 }], place: _19, play: _3, playstation: _3, plumbing: _3, plus: _3, pnc: _3, pohl: _3, poker: _3, politie: _3, porn: _3, pramerica: _3, praxi: _3, press: _3, prime: _3, prod: _3, productions: _3, prof: _3, progressive: _3, promo: _3, properties: _3, property: _3, protection: _3, pru: _3, prudential: _3, pub: [1, { id: _7, kin: _7, barsy: _4 }], pwc: _3, qpon: _3, quebec: _3, quest: _3, racing: _3, radio: _3, read: _3, realestate: _3, realtor: _3, realty: _3, recipes: _3, red: _3, redstone: _3, redumbrella: _3, rehab: _3, reise: _3, reisen: _3, reit: _3, reliance: _3, ren: _3, rent: _3, rentals: _3, repair: _3, report: _3, republican: _3, rest: _3, restaurant: _3, review: _3, reviews: _3, rexroth: _3, rich: _3, richardli: _3, ricoh: _3, ril: _3, rio: _3, rip: [1, { clan: _4 }], rocks: [1, { myddns: _4, stackit: _4, "lima-city": _4, webspace: _4 }], rodeo: _3, rogers: _3, room: _3, rsvp: _3, rugby: _3, ruhr: _3, run: [1, { appwrite: _7, development: _4, ravendb: _4, liara: [2, { iran: _4 }], servers: _4, build: _7, code: _7, database: _7, migration: _7, onporter: _4, repl: _4, stackit: _4, val: [0, { express: _4, web: _4 }], wix: _4 }], rwe: _3, ryukyu: _3, saarland: _3, safe: _3, safety: _3, sakura: _3, sale: _3, salon: _3, samsclub: _3, samsung: _3, sandvik: _3, sandvikcoromant: _3, sanofi: _3, sap: _3, sarl: _3, sas: _3, save: _3, saxo: _3, sbi: _3, sbs: _3, scb: _3, schaeffler: _3, schmidt: _3, scholarships: _3, school: _3, schule: _3, schwarz: _3, science: _3, scot: [1, { gov: [2, { service: _4 }] }], search: _3, seat: _3, secure: _3, security: _3, seek: _3, select: _3, sener: _3, services: [1, { loginline: _4 }], seven: _3, sew: _3, sex: _3, sexy: _3, sfr: _3, shangrila: _3, sharp: _3, shell: _3, shia: _3, shiksha: _3, shoes: _3, shop: [1, { base: _4, hoplix: _4, barsy: _4, barsyonline: _4, shopware: _4 }], shopping: _3, shouji: _3, show: _3, silk: _3, sina: _3, singles: _3, site: [1, { square: _4, canva: _22, cloudera: _7, convex: _4, cyon: _4, fastvps: _4, figma: _4, heyflow: _4, jele: _4, jouwweb: _4, loginline: _4, barsy: _4, notion: _4, omniwe: _4, opensocial: _4, madethis: _4, platformsh: _7, tst: _7, byen: _4, srht: _4, novecore: _4, cpanel: _4, wpsquared: _4 }], ski: _3, skin: _3, sky: _3, skype: _3, sling: _3, smart: _3, smile: _3, sncf: _3, soccer: _3, social: _3, softbank: _3, software: _3, sohu: _3, solar: _3, solutions: _3, song: _3, sony: _3, soy: _3, spa: _3, space: [1, { myfast: _4, heiyu: _4, hf: [2, { static: _4 }], "app-ionos": _4, project: _4, uber: _4, xs4all: _4 }], sport: _3, spot: _3, srl: _3, stada: _3, staples: _3, star: _3, statebank: _3, statefarm: _3, stc: _3, stcgroup: _3, stockholm: _3, storage: _3, store: [1, { barsy: _4, sellfy: _4, shopware: _4, storebase: _4 }], stream: _3, studio: _3, study: _3, style: _3, sucks: _3, supplies: _3, supply: _3, support: [1, { barsy: _4 }], surf: _3, surgery: _3, suzuki: _3, swatch: _3, swiss: _3, sydney: _3, systems: [1, { knightpoint: _4 }], tab: _3, taipei: _3, talk: _3, taobao: _3, target: _3, tatamotors: _3, tatar: _3, tattoo: _3, tax: _3, taxi: _3, tci: _3, tdk: _3, team: [1, { discourse: _4, jelastic: _4 }], tech: [1, { cleverapps: _4 }], technology: _19, temasek: _3, tennis: _3, teva: _3, thd: _3, theater: _3, theatre: _3, tiaa: _3, tickets: _3, tienda: _3, tips: _3, tires: _3, tirol: _3, tjmaxx: _3, tjx: _3, tkmaxx: _3, tmall: _3, today: [1, { prequalifyme: _4 }], tokyo: _3, tools: [1, { addr: _47, myaddr: _4 }], top: [1, { ntdll: _4, wadl: _7 }], toray: _3, toshiba: _3, total: _3, tours: _3, town: _3, toyota: _3, toys: _3, trade: _3, trading: _3, training: _3, travel: _3, travelers: _3, travelersinsurance: _3, trust: _3, trv: _3, tube: _3, tui: _3, tunes: _3, tushu: _3, tvs: _3, ubank: _3, ubs: _3, unicom: _3, university: _3, uno: _3, uol: _3, ups: _3, vacations: _3, vana: _3, vanguard: _3, vegas: _3, ventures: _3, verisign: _3, versicherung: _3, vet: _3, viajes: _3, video: _3, vig: _3, viking: _3, villas: _3, vin: _3, vip: _3, virgin: _3, visa: _3, vision: _3, viva: _3, vivo: _3, vlaanderen: _3, vodka: _3, volvo: _3, vote: _3, voting: _3, voto: _3, voyage: _3, wales: _3, walmart: _3, walter: _3, wang: _3, wanggou: _3, watch: _3, watches: _3, weather: _3, weatherchannel: _3, webcam: _3, weber: _3, website: _58, wed: _3, wedding: _3, weibo: _3, weir: _3, whoswho: _3, wien: _3, wiki: _58, williamhill: _3, win: _3, windows: _3, wine: _3, winners: _3, wme: _3, wolterskluwer: _3, woodside: _3, work: _3, works: _3, world: _3, wow: _3, wtc: _3, wtf: _3, xbox: _3, xerox: _3, xihuan: _3, xin: _3, "xn--11b4c3d": _3, "\u0915\u0949\u092E": _3, "xn--1ck2e1b": _3, "\u30BB\u30FC\u30EB": _3, "xn--1qqw23a": _3, "\u4F5B\u5C71": _3, "xn--30rr7y": _3, "\u6148\u5584": _3, "xn--3bst00m": _3, "\u96C6\u56E2": _3, "xn--3ds443g": _3, "\u5728\u7EBF": _3, "xn--3pxu8k": _3, "\u70B9\u770B": _3, "xn--42c2d9a": _3, "\u0E04\u0E2D\u0E21": _3, "xn--45q11c": _3, "\u516B\u5366": _3, "xn--4gbrim": _3, "\u0645\u0648\u0642\u0639": _3, "xn--55qw42g": _3, "\u516C\u76CA": _3, "xn--55qx5d": _3, "\u516C\u53F8": _3, "xn--5su34j936bgsg": _3, "\u9999\u683C\u91CC\u62C9": _3, "xn--5tzm5g": _3, "\u7F51\u7AD9": _3, "xn--6frz82g": _3, "\u79FB\u52A8": _3, "xn--6qq986b3xl": _3, "\u6211\u7231\u4F60": _3, "xn--80adxhks": _3, "\u043C\u043E\u0441\u043A\u0432\u0430": _3, "xn--80aqecdr1a": _3, "\u043A\u0430\u0442\u043E\u043B\u0438\u043A": _3, "xn--80asehdb": _3, "\u043E\u043D\u043B\u0430\u0439\u043D": _3, "xn--80aswg": _3, "\u0441\u0430\u0439\u0442": _3, "xn--8y0a063a": _3, "\u8054\u901A": _3, "xn--9dbq2a": _3, "\u05E7\u05D5\u05DD": _3, "xn--9et52u": _3, "\u65F6\u5C1A": _3, "xn--9krt00a": _3, "\u5FAE\u535A": _3, "xn--b4w605ferd": _3, "\u6DE1\u9A6C\u9521": _3, "xn--bck1b9a5dre4c": _3, "\u30D5\u30A1\u30C3\u30B7\u30E7\u30F3": _3, "xn--c1avg": _3, "\u043E\u0440\u0433": _3, "xn--c2br7g": _3, "\u0928\u0947\u091F": _3, "xn--cck2b3b": _3, "\u30B9\u30C8\u30A2": _3, "xn--cckwcxetd": _3, "\u30A2\u30DE\u30BE\u30F3": _3, "xn--cg4bki": _3, "\uC0BC\uC131": _3, "xn--czr694b": _3, "\u5546\u6807": _3, "xn--czrs0t": _3, "\u5546\u5E97": _3, "xn--czru2d": _3, "\u5546\u57CE": _3, "xn--d1acj3b": _3, "\u0434\u0435\u0442\u0438": _3, "xn--eckvdtc9d": _3, "\u30DD\u30A4\u30F3\u30C8": _3, "xn--efvy88h": _3, "\u65B0\u95FB": _3, "xn--fct429k": _3, "\u5BB6\u96FB": _3, "xn--fhbei": _3, "\u0643\u0648\u0645": _3, "xn--fiq228c5hs": _3, "\u4E2D\u6587\u7F51": _3, "xn--fiq64b": _3, "\u4E2D\u4FE1": _3, "xn--fjq720a": _3, "\u5A31\u4E50": _3, "xn--flw351e": _3, "\u8C37\u6B4C": _3, "xn--fzys8d69uvgm": _3, "\u96FB\u8A0A\u76C8\u79D1": _3, "xn--g2xx48c": _3, "\u8D2D\u7269": _3, "xn--gckr3f0f": _3, "\u30AF\u30E9\u30A6\u30C9": _3, "xn--gk3at1e": _3, "\u901A\u8CA9": _3, "xn--hxt814e": _3, "\u7F51\u5E97": _3, "xn--i1b6b1a6a2e": _3, "\u0938\u0902\u0917\u0920\u0928": _3, "xn--imr513n": _3, "\u9910\u5385": _3, "xn--io0a7i": _3, "\u7F51\u7EDC": _3, "xn--j1aef": _3, "\u043A\u043E\u043C": _3, "xn--jlq480n2rg": _3, "\u4E9A\u9A6C\u900A": _3, "xn--jvr189m": _3, "\u98DF\u54C1": _3, "xn--kcrx77d1x4a": _3, "\u98DE\u5229\u6D66": _3, "xn--kput3i": _3, "\u624B\u673A": _3, "xn--mgba3a3ejt": _3, "\u0627\u0631\u0627\u0645\u0643\u0648": _3, "xn--mgba7c0bbn0a": _3, "\u0627\u0644\u0639\u0644\u064A\u0627\u0646": _3, "xn--mgbab2bd": _3, "\u0628\u0627\u0632\u0627\u0631": _3, "xn--mgbca7dzdo": _3, "\u0627\u0628\u0648\u0638\u0628\u064A": _3, "xn--mgbi4ecexp": _3, "\u0643\u0627\u062B\u0648\u0644\u064A\u0643": _3, "xn--mgbt3dhd": _3, "\u0647\u0645\u0631\u0627\u0647": _3, "xn--mk1bu44c": _3, "\uB2F7\uCEF4": _3, "xn--mxtq1m": _3, "\u653F\u5E9C": _3, "xn--ngbc5azd": _3, "\u0634\u0628\u0643\u0629": _3, "xn--ngbe9e0a": _3, "\u0628\u064A\u062A\u0643": _3, "xn--ngbrx": _3, "\u0639\u0631\u0628": _3, "xn--nqv7f": _3, "\u673A\u6784": _3, "xn--nqv7fs00ema": _3, "\u7EC4\u7EC7\u673A\u6784": _3, "xn--nyqy26a": _3, "\u5065\u5EB7": _3, "xn--otu796d": _3, "\u62DB\u8058": _3, "xn--p1acf": [1, { "xn--90amc": _4, "xn--j1aef": _4, "xn--j1ael8b": _4, "xn--h1ahn": _4, "xn--j1adp": _4, "xn--c1avg": _4, "xn--80aaa0cvac": _4, "xn--h1aliz": _4, "xn--90a1af": _4, "xn--41a": _4 }], "\u0440\u0443\u0441": [1, { "\u0431\u0438\u0437": _4, "\u043A\u043E\u043C": _4, "\u043A\u0440\u044B\u043C": _4, "\u043C\u0438\u0440": _4, "\u043C\u0441\u043A": _4, "\u043E\u0440\u0433": _4, "\u0441\u0430\u043C\u0430\u0440\u0430": _4, "\u0441\u043E\u0447\u0438": _4, "\u0441\u043F\u0431": _4, "\u044F": _4 }], "xn--pssy2u": _3, "\u5927\u62FF": _3, "xn--q9jyb4c": _3, "\u307F\u3093\u306A": _3, "xn--qcka1pmc": _3, "\u30B0\u30FC\u30B0\u30EB": _3, "xn--rhqv96g": _3, "\u4E16\u754C": _3, "xn--rovu88b": _3, "\u66F8\u7C4D": _3, "xn--ses554g": _3, "\u7F51\u5740": _3, "xn--t60b56a": _3, "\uB2F7\uB137": _3, "xn--tckwe": _3, "\u30B3\u30E0": _3, "xn--tiq49xqyj": _3, "\u5929\u4E3B\u6559": _3, "xn--unup4y": _3, "\u6E38\u620F": _3, "xn--vermgensberater-ctb": _3, "verm\xF6gensberater": _3, "xn--vermgensberatung-pwb": _3, "verm\xF6gensberatung": _3, "xn--vhquv": _3, "\u4F01\u4E1A": _3, "xn--vuq861b": _3, "\u4FE1\u606F": _3, "xn--w4r85el8fhu5dnra": _3, "\u5609\u91CC\u5927\u9152\u5E97": _3, "xn--w4rs40l": _3, "\u5609\u91CC": _3, "xn--xhq521b": _3, "\u5E7F\u4E1C": _3, "xn--zfr164b": _3, "\u653F\u52A1": _3, xyz: [1, { botdash: _4, telebit: _7 }], yachts: _3, yahoo: _3, yamaxun: _3, yandex: _3, yodobashi: _3, yoga: _3, yokohama: _3, you: _3, youtube: _3, yun: _3, zappos: _3, zara: _3, zero: _3, zip: _3, zone: [1, { cloud66: _4, triton: _7, stackit: _4, lima: _4 }], zuerich: _3 }]; return rules2; }(); var RESULT = getEmptyResult(); exports.getDomain = getDomain; exports.getDomainWithoutSuffix = getDomainWithoutSuffix; exports.getHostname = getHostname; exports.getPublicSuffix = getPublicSuffix; exports.getSubdomain = getSubdomain; exports.parse = parse; }); // node_modules/tough-cookie/dist/getPublicSuffix.js var require_getPublicSuffix = __commonJS((exports) => { function getPublicSuffix(domain, options = {}) { options = { ...defaultGetPublicSuffixOptions, ...options }; const domainParts = domain.split("."); const topLevelDomain = domainParts[domainParts.length - 1]; const allowSpecialUseDomain = !!options.allowSpecialUseDomain; const ignoreError = !!options.ignoreError; if (allowSpecialUseDomain && topLevelDomain !== undefined && SPECIAL_USE_DOMAINS.includes(topLevelDomain)) { if (domainParts.length > 1) { const secondLevelDomain = domainParts[domainParts.length - 2]; return `${secondLevelDomain}.${topLevelDomain}`; } else if (SPECIAL_TREATMENT_DOMAINS.includes(topLevelDomain)) { return topLevelDomain; } } if (!ignoreError && topLevelDomain !== undefined && SPECIAL_USE_DOMAINS.includes(topLevelDomain)) { throw new Error(`Cookie has domain set to the public suffix "${topLevelDomain}" which is a special use domain. To allow this, configure your CookieJar with {allowSpecialUseDomain: true, rejectPublicSuffixes: false}.`); } const publicSuffix = (0, tldts_1.getDomain)(domain, { allowIcannDomains: true, allowPrivateDomains: true }); if (publicSuffix) return publicSuffix; } Object.defineProperty(exports, "__esModule", { value: true }); exports.getPublicSuffix = getPublicSuffix; var tldts_1 = require_cjs3(); var SPECIAL_USE_DOMAINS = ["local", "example", "invalid", "localhost", "test"]; var SPECIAL_TREATMENT_DOMAINS = ["localhost", "invalid"]; var defaultGetPublicSuffixOptions = { allowSpecialUseDomain: false, ignoreError: false }; }); // node_modules/tough-cookie/dist/permuteDomain.js var require_permuteDomain = __commonJS((exports) => { function permuteDomain(domain, allowSpecialUseDomain) { const pubSuf = (0, getPublicSuffix_1.getPublicSuffix)(domain, { allowSpecialUseDomain }); if (!pubSuf) { return; } if (pubSuf == domain) { return [domain]; } if (domain.slice(-1) == ".") { domain = domain.slice(0, -1); } const prefix = domain.slice(0, -(pubSuf.length + 1)); const parts = prefix.split(".").reverse(); let cur = pubSuf; const permutations = [cur]; while (parts.length) { const part = parts.shift(); cur = `${part}.${cur}`; permutations.push(cur); } return permutations; } Object.defineProperty(exports, "__esModule", { value: true }); exports.permuteDomain = permuteDomain; var getPublicSuffix_1 = require_getPublicSuffix(); }); // node_modules/tough-cookie/dist/store.js var require_store = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.Store = undefined; class Store { constructor() { this.synchronous = false; } findCookie(_domain, _path, _key, _callback) { throw new Error("findCookie is not implemented"); } findCookies(_domain, _path, _allowSpecialUseDomain = false, _callback) { throw new Error("findCookies is not implemented"); } putCookie(_cookie, _callback) { throw new Error("putCookie is not implemented"); } updateCookie(_oldCookie, _newCookie, _callback) { throw new Error("updateCookie is not implemented"); } removeCookie(_domain, _path, _key, _callback) { throw new Error("removeCookie is not implemented"); } removeCookies(_domain, _path, _callback) { throw new Error("removeCookies is not implemented"); } removeAllCookies(_callback) { throw new Error("removeAllCookies is not implemented"); } getAllCookies(_callback) { throw new Error("getAllCookies is not implemented (therefore jar cannot be serialized)"); } } exports.Store = Store; }); // node_modules/tough-cookie/dist/utils.js var require_utils = __commonJS((exports) => { function createPromiseCallback(cb) { let callback; let resolve; let reject; const promise = new Promise((_resolve, _reject) => { resolve = _resolve; reject = _reject; }); if (typeof cb === "function") { callback = (err, result) => { try { if (err) cb(err); else cb(null, result); } catch (e) { reject(e instanceof Error ? e : new Error); } }; } else { callback = (err, result) => { try { if (err) reject(err); else resolve(result); } catch (e) { reject(e instanceof Error ? e : new Error); } }; } return { promise, callback, resolve: (value) => { callback(null, value); return promise; }, reject: (error) => { callback(error); return promise; } }; } function inOperator(k, o) { return k in o; } Object.defineProperty(exports, "__esModule", { value: true }); exports.safeToString = exports.objectToString = undefined; exports.createPromiseCallback = createPromiseCallback; exports.inOperator = inOperator; var objectToString = (obj) => Object.prototype.toString.call(obj); exports.objectToString = objectToString; var safeArrayToString = (arr, seenArrays) => { if (typeof arr.join !== "function") return (0, exports.objectToString)(arr); seenArrays.add(arr); const mapped = arr.map((val) => val === null || val === undefined || seenArrays.has(val) ? "" : safeToStringImpl(val, seenArrays)); return mapped.join(); }; var safeToStringImpl = (val, seenArrays = new WeakSet) => { if (typeof val !== "object" || val === null) { return String(val); } else if (typeof val.toString === "function") { return Array.isArray(val) ? safeArrayToString(val, seenArrays) : String(val); } else { return (0, exports.objectToString)(val); } }; var safeToString = (val) => safeToStringImpl(val); exports.safeToString = safeToString; }); // node_modules/tough-cookie/dist/memstore.js var require_memstore = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.MemoryCookieStore = undefined; var pathMatch_1 = require_pathMatch(); var permuteDomain_1 = require_permuteDomain(); var store_1 = require_store(); var utils_1 = require_utils(); class MemoryCookieStore extends store_1.Store { constructor() { super(); this.synchronous = true; this.idx = Object.create(null); } findCookie(domain, path, key, callback) { const promiseCallback = (0, utils_1.createPromiseCallback)(callback); if (domain == null || path == null || key == null) { return promiseCallback.resolve(undefined); } const result = this.idx[domain]?.[path]?.[key]; return promiseCallback.resolve(result); } findCookies(domain, path, allowSpecialUseDomain = false, callback) { if (typeof allowSpecialUseDomain === "function") { callback = allowSpecialUseDomain; allowSpecialUseDomain = true; } const results = []; const promiseCallback = (0, utils_1.createPromiseCallback)(callback); if (!domain) { return promiseCallback.resolve([]); } let pathMatcher; if (!path) { pathMatcher = function matchAll(domainIndex) { for (const curPath in domainIndex) { const pathIndex = domainIndex[curPath]; for (const key in pathIndex) { const value = pathIndex[key]; if (value) { results.push(value); } } } }; } else { pathMatcher = function matchRFC(domainIndex) { for (const cookiePath in domainIndex) { if ((0, pathMatch_1.pathMatch)(path, cookiePath)) { const pathIndex = domainIndex[cookiePath]; for (const key in pathIndex) { const value = pathIndex[key]; if (value) { results.push(value); } } } } }; } const domains = (0, permuteDomain_1.permuteDomain)(domain, allowSpecialUseDomain) || [domain]; const idx = this.idx; domains.forEach((curDomain) => { const domainIndex = idx[curDomain]; if (!domainIndex) { return; } pathMatcher(domainIndex); }); return promiseCallback.resolve(results); } putCookie(cookie, callback) { const promiseCallback = (0, utils_1.createPromiseCallback)(callback); const { domain, path, key } = cookie; if (domain == null || path == null || key == null) { return promiseCallback.resolve(undefined); } const domainEntry = this.idx[domain] ?? Object.create(null); this.idx[domain] = domainEntry; const pathEntry = domainEntry[path] ?? Object.create(null); domainEntry[path] = pathEntry; pathEntry[key] = cookie; return promiseCallback.resolve(undefined); } updateCookie(_oldCookie, newCookie, callback) { if (callback) this.putCookie(newCookie, callback); else return this.putCookie(newCookie); } removeCookie(domain, path, key, callback) { const promiseCallback = (0, utils_1.createPromiseCallback)(callback); delete this.idx[domain]?.[path]?.[key]; return promiseCallback.resolve(undefined); } removeCookies(domain, path, callback) { const promiseCallback = (0, utils_1.createPromiseCallback)(callback); const domainEntry = this.idx[domain]; if (domainEntry) { if (path) { delete domainEntry[path]; } else { delete this.idx[domain]; } } return promiseCallback.resolve(undefined); } removeAllCookies(callback) { const promiseCallback = (0, utils_1.createPromiseCallback)(callback); this.idx = Object.create(null); return promiseCallback.resolve(undefined); } getAllCookies(callback) { const promiseCallback = (0, utils_1.createPromiseCallback)(callback); const cookies = []; const idx = this.idx; const domains = Object.keys(idx); domains.forEach((domain) => { const domainEntry = idx[domain] ?? {}; const paths = Object.keys(domainEntry); paths.forEach((path) => { const pathEntry = domainEntry[path] ?? {}; const keys = Object.keys(pathEntry); keys.forEach((key) => { const keyEntry = pathEntry[key]; if (keyEntry != null) { cookies.push(keyEntry); } }); }); }); cookies.sort((a, b) => { return (a.creationIndex || 0) - (b.creationIndex || 0); }); return promiseCallback.resolve(cookies); } } exports.MemoryCookieStore = MemoryCookieStore; }); // node_modules/tough-cookie/dist/validators.js var require_validators = __commonJS((exports) => { function isNonEmptyString(data) { return isString(data) && data !== ""; } function isDate(data) { return data instanceof Date && isInteger(data.getTime()); } function isEmptyString(data) { return data === "" || data instanceof String && data.toString() === ""; } function isString(data) { return typeof data === "string" || data instanceof String; } function isObject(data) { return (0, utils_1.objectToString)(data) === "[object Object]"; } function isInteger(data) { return typeof data === "number" && data % 1 === 0; } function validate(bool, cbOrMessage, message) { if (bool) return; const cb = typeof cbOrMessage === "function" ? cbOrMessage : undefined; let options = typeof cbOrMessage === "function" ? message : cbOrMessage; if (!isObject(options)) options = "[object Object]"; const err = new ParameterError((0, utils_1.safeToString)(options)); if (cb) cb(err); else throw err; } Object.defineProperty(exports, "__esModule", { value: true }); exports.ParameterError = undefined; exports.isNonEmptyString = isNonEmptyString; exports.isDate = isDate; exports.isEmptyString = isEmptyString; exports.isString = isString; exports.isObject = isObject; exports.isInteger = isInteger; exports.validate = validate; var utils_1 = require_utils(); class ParameterError extends Error { } exports.ParameterError = ParameterError; }); // node_modules/tough-cookie/dist/version.js var require_version = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.version = undefined; exports.version = "5.1.2"; }); // node_modules/tough-cookie/dist/cookie/constants.js var require_constants = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.IP_V6_REGEX_OBJECT = exports.PrefixSecurityEnum = undefined; exports.PrefixSecurityEnum = { SILENT: "silent", STRICT: "strict", DISABLED: "unsafe-disabled" }; Object.freeze(exports.PrefixSecurityEnum); var IP_V6_REGEX = ` \\[?(?: (?:[a-fA-F\\d]{1,4}:){7}(?:[a-fA-F\\d]{1,4}|:)| (?:[a-fA-F\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-fA-F\\d]{1,4}|:)| (?:[a-fA-F\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,2}|:)| (?:[a-fA-F\\d]{1,4}:){4}(?:(?::[a-fA-F\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,3}|:)| (?:[a-fA-F\\d]{1,4}:){3}(?:(?::[a-fA-F\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,4}|:)| (?:[a-fA-F\\d]{1,4}:){2}(?:(?::[a-fA-F\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,5}|:)| (?:[a-fA-F\\d]{1,4}:){1}(?:(?::[a-fA-F\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,6}|:)| (?::(?:(?::[a-fA-F\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,7}|:)) )(?:%[0-9a-zA-Z]{1,})?\\]? `.replace(/\s*\/\/.*$/gm, "").replace(/\n/g, "").trim(); exports.IP_V6_REGEX_OBJECT = new RegExp(`^${IP_V6_REGEX}\$`); }); // node_modules/tough-cookie/dist/cookie/canonicalDomain.js var require_canonicalDomain = __commonJS((exports) => { function domainToASCII(domain) { return new URL(`http://${domain}`).hostname; } function canonicalDomain(domainName) { if (domainName == null) { return; } let str = domainName.trim().replace(/^\./, ""); if (constants_1.IP_V6_REGEX_OBJECT.test(str)) { if (!str.startsWith("[")) { str = "[" + str; } if (!str.endsWith("]")) { str = str + "]"; } return domainToASCII(str).slice(1, -1); } if (/[^\u0001-\u007f]/.test(str)) { return domainToASCII(str); } return str.toLowerCase(); } Object.defineProperty(exports, "__esModule", { value: true }); exports.canonicalDomain = canonicalDomain; var constants_1 = require_constants(); }); // node_modules/tough-cookie/dist/cookie/formatDate.js var require_formatDate = __commonJS((exports) => { function formatDate(date) { return date.toUTCString(); } Object.defineProperty(exports, "__esModule", { value: true }); exports.formatDate = formatDate; }); // node_modules/tough-cookie/dist/cookie/parseDate.js var require_parseDate = __commonJS((exports) => { function parseDigits(token, minDigits, maxDigits, trailingOK) { let count = 0; while (count < token.length) { const c = token.charCodeAt(count); if (c <= 47 || c >= 58) { break; } count++; } if (count < minDigits || count > maxDigits) { return; } if (!trailingOK && count != token.length) { return; } return parseInt(token.slice(0, count), 10); } function parseTime(token) { const parts = token.split(":"); const result = [0, 0, 0]; if (parts.length !== 3) { return; } for (let i = 0;i < 3; i++) { const trailingOK = i == 2; const numPart = parts[i]; if (numPart === undefined) { return; } const num = parseDigits(numPart, 1, 2, trailingOK); if (num === undefined) { return; } result[i] = num; } return result; } function parseMonth(token) { token = String(token).slice(0, 3).toLowerCase(); switch (token) { case "jan": return MONTH_TO_NUM.jan; case "feb": return MONTH_TO_NUM.feb; case "mar": return MONTH_TO_NUM.mar; case "apr": return MONTH_TO_NUM.apr; case "may": return MONTH_TO_NUM.may; case "jun": return MONTH_TO_NUM.jun; case "jul": return MONTH_TO_NUM.jul; case "aug": return MONTH_TO_NUM.aug; case "sep": return MONTH_TO_NUM.sep; case "oct": return MONTH_TO_NUM.oct; case "nov": return MONTH_TO_NUM.nov; case "dec": return MONTH_TO_NUM.dec; default: return; } } function parseDate(cookieDate) { if (!cookieDate) { return; } const tokens = cookieDate.split(DATE_DELIM); let hour; let minute; let second; let dayOfMonth; let month; let year; for (let i = 0;i < tokens.length; i++) { const token = (tokens[i] ?? "").trim(); if (!token.length) { continue; } if (second === undefined) { const result = parseTime(token); if (result) { hour = result[0]; minute = result[1]; second = result[2]; continue; } } if (dayOfMonth === undefined) { const result = parseDigits(token, 1, 2, true); if (result !== undefined) { dayOfMonth = result; continue; } } if (month === undefined) { const result = parseMonth(token); if (result !== undefined) { month = result; continue; } } if (year === undefined) { const result = parseDigits(token, 2, 4, true); if (result !== undefined) { year = result; if (year >= 70 && year <= 99) { year += 1900; } else if (year >= 0 && year <= 69) { year += 2000; } } } } if (dayOfMonth === undefined || month === undefined || year === undefined || hour === undefined || minute === undefined || second === undefined || dayOfMonth < 1 || dayOfMonth > 31 || year < 1601 || hour > 23 || minute > 59 || second > 59) { return; } return new Date(Date.UTC(year, month, dayOfMonth, hour, minute, second)); } Object.defineProperty(exports, "__esModule", { value: true }); exports.parseDate = parseDate; var DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/; var MONTH_TO_NUM = { jan: 0, feb: 1, mar: 2, apr: 3, may: 4, jun: 5, jul: 6, aug: 7, sep: 8, oct: 9, nov: 10, dec: 11 }; }); // node_modules/tough-cookie/dist/cookie/cookie.js var require_cookie = __commonJS((exports) => { function trimTerminator(str) { if (validators.isEmptyString(str)) return str; for (let t = 0;t < TERMINATORS.length; t++) { const terminator = TERMINATORS[t]; const terminatorIdx = terminator ? str.indexOf(terminator) : -1; if (terminatorIdx !== -1) { str = str.slice(0, terminatorIdx); } } return str; } function parseCookiePair(cookiePair, looseMode) { cookiePair = trimTerminator(cookiePair); let firstEq = cookiePair.indexOf("="); if (looseMode) { if (firstEq === 0) { cookiePair = cookiePair.substring(1); firstEq = cookiePair.indexOf("="); } } else { if (firstEq <= 0) { return; } } let cookieName, cookieValue; if (firstEq <= 0) { cookieName = ""; cookieValue = cookiePair.trim(); } else { cookieName = cookiePair.slice(0, firstEq).trim(); cookieValue = cookiePair.slice(firstEq + 1).trim(); } if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) { return; } const c = new Cookie; c.key = cookieName; c.value = cookieValue; return c; } function parse(str, options) { if (validators.isEmptyString(str) || !validators.isString(str)) { return; } str = str.trim(); const firstSemi = str.indexOf(";"); const cookiePair = firstSemi === -1 ? str : str.slice(0, firstSemi); const c = parseCookiePair(cookiePair, options?.loose ?? false); if (!c) { return; } if (firstSemi === -1) { return c; } const unparsed = str.slice(firstSemi + 1).trim(); if (unparsed.length === 0) { return c; } const cookie_avs = unparsed.split(";"); while (cookie_avs.length) { const av = (cookie_avs.shift() ?? "").trim(); if (av.length === 0) { continue; } const av_sep = av.indexOf("="); let av_key, av_value; if (av_sep === -1) { av_key = av; av_value = null; } else { av_key = av.slice(0, av_sep); av_value = av.slice(av_sep + 1); } av_key = av_key.trim().toLowerCase(); if (av_value) { av_value = av_value.trim(); } switch (av_key) { case "expires": if (av_value) { const exp = (0, parseDate_1.parseDate)(av_value); if (exp) { c.expires = exp; } } break; case "max-age": if (av_value) { if (/^-?[0-9]+$/.test(av_value)) { const delta = parseInt(av_value, 10); c.setMaxAge(delta); } } break; case "domain": if (av_value) { const domain = av_value.trim().replace(/^\./, ""); if (domain) { c.domain = domain.toLowerCase(); } } break; case "path": c.path = av_value && av_value[0] === "/" ? av_value : null; break; case "secure": c.secure = true; break; case "httponly": c.httpOnly = true; break; case "samesite": switch (av_value ? av_value.toLowerCase() : "") { case "strict": c.sameSite = "strict"; break; case "lax": c.sameSite = "lax"; break; case "none": c.sameSite = "none"; break; default: c.sameSite = undefined; break; } break; default: c.extensions = c.extensions || []; c.extensions.push(av); break; } } return c; } function fromJSON(str) { if (!str || validators.isEmptyString(str)) { return; } let obj; if (typeof str === "string") { try { obj = JSON.parse(str); } catch { return; } } else { obj = str; } const c = new Cookie; Cookie.serializableProperties.forEach((prop) => { if (obj && typeof obj === "object" && (0, utils_1.inOperator)(prop, obj)) { const val = obj[prop]; if (val === undefined) { return; } if ((0, utils_1.inOperator)(prop, cookieDefaults) && val === cookieDefaults[prop]) { return; } switch (prop) { case "key": case "value": case "sameSite": if (typeof val === "string") { c[prop] = val; } break; case "expires": case "creation": case "lastAccessed": if (typeof val === "number" || typeof val === "string" || val instanceof Date) { c[prop] = obj[prop] == "Infinity" ? "Infinity" : new Date(val); } else if (val === null) { c[prop] = null; } break; case "maxAge": if (typeof val === "number" || val === "Infinity" || val === "-Infinity") { c[prop] = val; } break; case "domain": case "path": if (typeof val === "string" || val === null) { c[prop] = val; } break; case "secure": case "httpOnly": if (typeof val === "boolean") { c[prop] = val; } break; case "extensions": if (Array.isArray(val) && val.every((item) => typeof item === "string")) { c[prop] = val; } break; case "hostOnly": case "pathIsDefault": if (typeof val === "boolean" || val === null) { c[prop] = val; } break; } } }); return c; } var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === undefined) 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 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function(o, v) { o["default"] = v; }); var __importStar = exports && exports.__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)) __createBinding(result, mod, k); } __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Cookie = undefined; /*! * Copyright (c) 2015-2020, Salesforce.com, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. Neither the name of Salesforce.com nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ var getPublicSuffix_1 = require_getPublicSuffix(); var validators = __importStar(require_validators()); var utils_1 = require_utils(); var formatDate_1 = require_formatDate(); var parseDate_1 = require_parseDate(); var canonicalDomain_1 = require_canonicalDomain(); var COOKIE_OCTETS = /^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/; var PATH_VALUE = /[\x20-\x3A\x3C-\x7E]+/; var CONTROL_CHARS = /[\x00-\x1F]/; var TERMINATORS = ["\n", "\r", "\0"]; var cookieDefaults = { key: "", value: "", expires: "Infinity", maxAge: null, domain: null, path: null, secure: false, httpOnly: false, extensions: null, hostOnly: null, pathIsDefault: null, creation: null, lastAccessed: null, sameSite: undefined }; class Cookie { constructor(options = {}) { this.key = options.key ?? cookieDefaults.key; this.value = options.value ?? cookieDefaults.value; this.expires = options.expires ?? cookieDefaults.expires; this.maxAge = options.maxAge ?? cookieDefaults.maxAge; this.domain = options.domain ?? cookieDefaults.domain; this.path = options.path ?? cookieDefaults.path; this.secure = options.secure ?? cookieDefaults.secure; this.httpOnly = options.httpOnly ?? cookieDefaults.httpOnly; this.extensions = options.extensions ?? cookieDefaults.extensions; this.creation = options.creation ?? cookieDefaults.creation; this.hostOnly = options.hostOnly ?? cookieDefaults.hostOnly; this.pathIsDefault = options.pathIsDefault ?? cookieDefaults.pathIsDefault; this.lastAccessed = options.lastAccessed ?? cookieDefaults.lastAccessed; this.sameSite = options.sameSite ?? cookieDefaults.sameSite; this.creation = options.creation ?? new Date; Object.defineProperty(this, "creationIndex", { configurable: false, enumerable: false, writable: true, value: ++Cookie.cookiesCreated }); this.creationIndex = Cookie.cookiesCreated; } [Symbol.for("nodejs.util.inspect.custom")]() { const now = Date.now(); const hostOnly = this.hostOnly != null ? this.hostOnly.toString() : "?"; const createAge = this.creation && this.creation !== "Infinity" ? `${String(now - this.creation.getTime())}ms` : "?"; const accessAge = this.lastAccessed && this.lastAccessed !== "Infinity" ? `${String(now - this.lastAccessed.getTime())}ms` : "?"; return `Cookie="${this.toString()}; hostOnly=${hostOnly}; aAge=${accessAge}; cAge=${createAge}"`; } toJSON() { const obj = {}; for (const prop of Cookie.serializableProperties) { const val = this[prop]; if (val === cookieDefaults[prop]) { continue; } switch (prop) { case "key": case "value": case "sameSite": if (typeof val === "string") { obj[prop] = val; } break; case "expires": case "creation": case "lastAccessed": if (typeof val === "number" || typeof val === "string" || val instanceof Date) { obj[prop] = val == "Infinity" ? "Infinity" : new Date(val).toISOString(); } else if (val === null) { obj[prop] = null; } break; case "maxAge": if (typeof val === "number" || val === "Infinity" || val === "-Infinity") { obj[prop] = val; } break; case "domain": case "path": if (typeof val === "string" || val === null) { obj[prop] = val; } break; case "secure": case "httpOnly": if (typeof val === "boolean") { obj[prop] = val; } break; case "extensions": if (Array.isArray(val)) { obj[prop] = val; } break; case "hostOnly": case "pathIsDefault": if (typeof val === "boolean" || val === null) { obj[prop] = val; } break; } } return obj; } clone() { return fromJSON(this.toJSON()); } validate() { if (!this.value || !COOKIE_OCTETS.test(this.value)) { return false; } if (this.expires != "Infinity" && !(this.expires instanceof Date) && !(0, parseDate_1.parseDate)(this.expires)) { return false; } if (this.maxAge != null && this.maxAge !== "Infinity" && (this.maxAge === "-Infinity" || this.maxAge <= 0)) { return false; } if (this.path != null && !PATH_VALUE.test(this.path)) { return false; } const cdomain = this.cdomain(); if (cdomain) { if (cdomain.match(/\.$/)) { return false; } const suffix = (0, getPublicSuffix_1.getPublicSuffix)(cdomain); if (suffix == null) { return false; } } return true; } setExpires(exp) { if (exp instanceof Date) { this.expires = exp; } else { this.expires = (0, parseDate_1.parseDate)(exp) || "Infinity"; } } setMaxAge(age) { if (age === Infinity) { this.maxAge = "Infinity"; } else if (age === -Infinity) { this.maxAge = "-Infinity"; } else { this.maxAge = age; } } cookieString() { const val = this.value || ""; if (this.key) { return `${this.key}=${val}`; } return val; } toString() { let str = this.cookieString(); if (this.expires != "Infinity") { if (this.expires instanceof Date) { str += `; Expires=${(0, formatDate_1.formatDate)(this.expires)}`; } } if (this.maxAge != null && this.maxAge != Infinity) { str += `; Max-Age=${String(this.maxAge)}`; } if (this.domain && !this.hostOnly) { str += `; Domain=${this.domain}`; } if (this.path) { str += `; Path=${this.path}`; } if (this.secure) { str += "; Secure"; } if (this.httpOnly) { str += "; HttpOnly"; } if (this.sameSite && this.sameSite !== "none") { if (this.sameSite.toLowerCase() === Cookie.sameSiteCanonical.lax.toLowerCase()) { str += `; SameSite=${Cookie.sameSiteCanonical.lax}`; } else if (this.sameSite.toLowerCase() === Cookie.sameSiteCanonical.strict.toLowerCase()) { str += `; SameSite=${Cookie.sameSiteCanonical.strict}`; } else { str += `; SameSite=${this.sameSite}`; } } if (this.extensions) { this.extensions.forEach((ext) => { str += `; ${ext}`; }); } return str; } TTL(now = Date.now()) { if (this.maxAge != null && typeof this.maxAge === "number") { return this.maxAge <= 0 ? 0 : this.maxAge * 1000; } const expires = this.expires; if (expires === "Infinity") { return Infinity; } return (expires?.getTime() ?? now) - (now || Date.now()); } expiryTime(now) { if (this.maxAge != null) { const relativeTo = now || this.lastAccessed || new Date; const maxAge = typeof this.maxAge === "number" ? this.maxAge : -Infinity; const age = maxAge <= 0 ? -Infinity : maxAge * 1000; if (relativeTo === "Infinity") { return Infinity; } return relativeTo.getTime() + age; } if (this.expires == "Infinity") { return Infinity; } return this.expires ? this.expires.getTime() : undefined; } expiryDate(now) { const millisec = this.expiryTime(now); if (millisec == Infinity) { return new Date(2147483647000); } else if (millisec == -Infinity) { return new Date(0); } else { return millisec == undefined ? undefined : new Date(millisec); } } isPersistent() { return this.maxAge != null || this.expires != "Infinity"; } canonicalizedDomain() { return (0, canonicalDomain_1.canonicalDomain)(this.domain); } cdomain() { return (0, canonicalDomain_1.canonicalDomain)(this.domain); } static parse(str, options) { return parse(str, options); } static fromJSON(str) { return fromJSON(str); } } exports.Cookie = Cookie; Cookie.cookiesCreated = 0; Cookie.sameSiteLevel = { strict: 3, lax: 2, none: 1 }; Cookie.sameSiteCanonical = { strict: "Strict", lax: "Lax" }; Cookie.serializableProperties = [ "key", "value", "expires", "maxAge", "domain", "path", "secure", "httpOnly", "extensions", "hostOnly", "pathIsDefault", "creation", "lastAccessed", "sameSite" ]; }); // node_modules/tough-cookie/dist/cookie/cookieCompare.js var require_cookieCompare = __commonJS((exports) => { function cookieCompare(a, b) { let cmp; const aPathLen = a.path ? a.path.length : 0; const bPathLen = b.path ? b.path.length : 0; cmp = bPathLen - aPathLen; if (cmp !== 0) { return cmp; } const aTime = a.creation && a.creation instanceof Date ? a.creation.getTime() : MAX_TIME; const bTime = b.creation && b.creation instanceof Date ? b.creation.getTime() : MAX_TIME; cmp = aTime - bTime; if (cmp !== 0) { return cmp; } cmp = (a.creationIndex || 0) - (b.creationIndex || 0); return cmp; } Object.defineProperty(exports, "__esModule", { value: true }); exports.cookieCompare = cookieCompare; var MAX_TIME = 2147483647000; }); // node_modules/tough-cookie/dist/cookie/defaultPath.js var require_defaultPath = __commonJS((exports) => { function defaultPath(path) { if (!path || path.slice(0, 1) !== "/") { return "/"; } if (path === "/") { return path; } const rightSlash = path.lastIndexOf("/"); if (rightSlash === 0) { return "/"; } return path.slice(0, rightSlash); } Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultPath = defaultPath; }); // node_modules/tough-cookie/dist/cookie/domainMatch.js var require_domainMatch = __commonJS((exports) => { function domainMatch(domain, cookieDomain, canonicalize) { if (domain == null || cookieDomain == null) { return; } let _str; let _domStr; if (canonicalize !== false) { _str = (0, canonicalDomain_1.canonicalDomain)(domain); _domStr = (0, canonicalDomain_1.canonicalDomain)(cookieDomain); } else { _str = domain; _domStr = cookieDomain; } if (_str == null || _domStr == null) { return; } if (_str == _domStr) { return true; } const idx = _str.lastIndexOf(_domStr); if (idx <= 0) { return false; } if (_str.length !== _domStr.length + idx) { return false; } if (_str.substring(idx - 1, idx) !== ".") { return false; } return !IP_REGEX_LOWERCASE.test(_str); } Object.defineProperty(exports, "__esModule", { value: true }); exports.domainMatch = domainMatch; var canonicalDomain_1 = require_canonicalDomain(); var IP_REGEX_LOWERCASE = /(?:^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$)|(?:^(?:(?:[a-f\d]{1,4}:){7}(?:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,2}|:)|(?:[a-f\d]{1,4}:){4}(?:(?::[a-f\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,3}|:)|(?:[a-f\d]{1,4}:){3}(?:(?::[a-f\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,4}|:)|(?:[a-f\d]{1,4}:){2}(?:(?::[a-f\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,5}|:)|(?:[a-f\d]{1,4}:){1}(?:(?::[a-f\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,6}|:)|(?::(?:(?::[a-f\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,7}|:)))$)/; }); // node_modules/tough-cookie/dist/cookie/cookieJar.js var require_cookieJar = __commonJS((exports) => { function getCookieContext(url) { if (url && typeof url === "object" && "hostname" in url && typeof url.hostname === "string" && "pathname" in url && typeof url.pathname === "string" && "protocol" in url && typeof url.protocol === "string") { return { hostname: url.hostname, pathname: url.pathname, protocol: url.protocol }; } else if (typeof url === "string") { try { return new URL(decodeURI(url)); } catch { return new URL(url); } } else { throw new validators_1.ParameterError("`url` argument is not a string or URL."); } } function checkSameSiteContext(value) { const context = String(value).toLowerCase(); if (context === "none" || context === "lax" || context === "strict") { return context; } else { return; } } function isSecurePrefixConditionMet(cookie) { const startsWithSecurePrefix = typeof cookie.key === "string" && cookie.key.startsWith("__Secure-"); return !startsWithSecurePrefix || cookie.secure; } function isHostPrefixConditionMet(cookie) { const startsWithHostPrefix = typeof cookie.key === "string" && cookie.key.startsWith("__Host-"); return !startsWithHostPrefix || Boolean(cookie.secure && cookie.hostOnly && cookie.path != null && cookie.path === "/"); } function getNormalizedPrefixSecurity(prefixSecurity) { const normalizedPrefixSecurity = prefixSecurity.toLowerCase(); switch (normalizedPrefixSecurity) { case constants_1.PrefixSecurityEnum.STRICT: case constants_1.PrefixSecurityEnum.SILENT: case constants_1.PrefixSecurityEnum.DISABLED: return normalizedPrefixSecurity; default: return constants_1.PrefixSecurityEnum.SILENT; } } var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === undefined) 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 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function(o, v) { o["default"] = v; }); var __importStar = exports && exports.__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)) __createBinding(result, mod, k); } __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CookieJar = undefined; var getPublicSuffix_1 = require_getPublicSuffix(); var validators = __importStar(require_validators()); var validators_1 = require_validators(); var store_1 = require_store(); var memstore_1 = require_memstore(); var pathMatch_1 = require_pathMatch(); var cookie_1 = require_cookie(); var utils_1 = require_utils(); var canonicalDomain_1 = require_canonicalDomain(); var constants_1 = require_constants(); var defaultPath_1 = require_defaultPath(); var domainMatch_1 = require_domainMatch(); var cookieCompare_1 = require_cookieCompare(); var version_1 = require_version(); var defaultSetCookieOptions = { loose: false, sameSiteContext: undefined, ignoreError: false, http: true }; var defaultGetCookieOptions = { http: true, expire: true, allPaths: false, sameSiteContext: undefined, sort: undefined }; var SAME_SITE_CONTEXT_VAL_ERR = 'Invalid sameSiteContext option for getCookies(); expected one of "strict", "lax", or "none"'; class CookieJar { constructor(store, options) { if (typeof options === "boolean") { options = { rejectPublicSuffixes: options }; } this.rejectPublicSuffixes = options?.rejectPublicSuffixes ?? true; this.enableLooseMode = options?.looseMode ?? false; this.allowSpecialUseDomain = options?.allowSpecialUseDomain ?? true; this.prefixSecurity = getNormalizedPrefixSecurity(options?.prefixSecurity ?? "silent"); this.store = store ?? new memstore_1.MemoryCookieStore; } callSync(fn) { if (!this.store.synchronous) { throw new Error("CookieJar store is not synchronous; use async API instead."); } let syncErr = null; let syncResult = undefined; try { fn.call(this, (error, result) => { syncErr = error; syncResult = result; }); } catch (err) { syncErr = err; } if (syncErr) throw syncErr; return syncResult; } setCookie(cookie, url, options, callback) { if (typeof options === "function") { callback = options; options = undefined; } const promiseCallback = (0, utils_1.createPromiseCallback)(callback); const cb = promiseCallback.callback; let context; try { if (typeof url === "string") { validators.validate(validators.isNonEmptyString(url), callback, (0, utils_1.safeToString)(options)); } context = getCookieContext(url); if (typeof url === "function") { return promiseCallback.reject(new Error("No URL was specified")); } if (typeof options === "function") { options = defaultSetCookieOptions; } validators.validate(typeof cb === "function", cb); if (!validators.isNonEmptyString(cookie) && !validators.isObject(cookie) && cookie instanceof String && cookie.length == 0) { return promiseCallback.resolve(undefined); } } catch (err) { return promiseCallback.reject(err); } const host = (0, canonicalDomain_1.canonicalDomain)(context.hostname) ?? null; const loose = options?.loose || this.enableLooseMode; let sameSiteContext = null; if (options?.sameSiteContext) { sameSiteContext = checkSameSiteContext(options.sameSiteContext); if (!sameSiteContext) { return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR)); } } if (typeof cookie === "string" || cookie instanceof String) { const parsedCookie = cookie_1.Cookie.parse(cookie.toString(), { loose }); if (!parsedCookie) { const err = new Error("Cookie failed to parse"); return options?.ignoreError ? promiseCallback.resolve(undefined) : promiseCallback.reject(err); } cookie = parsedCookie; } else if (!(cookie instanceof cookie_1.Cookie)) { const err = new Error("First argument to setCookie must be a Cookie object or string"); return options?.ignoreError ? promiseCallback.resolve(undefined) : promiseCallback.reject(err); } const now = options?.now || new Date; if (this.rejectPublicSuffixes && cookie.domain) { try { const cdomain = cookie.cdomain(); const suffix = typeof cdomain === "string" ? (0, getPublicSuffix_1.getPublicSuffix)(cdomain, { allowSpecialUseDomain: this.allowSpecialUseDomain, ignoreError: options?.ignoreError }) : null; if (suffix == null && !constants_1.IP_V6_REGEX_OBJECT.test(cookie.domain)) { const err = new Error("Cookie has domain set to a public suffix"); return options?.ignoreError ? promiseCallback.resolve(undefined) : promiseCallback.reject(err); } } catch (err) { return options?.ignoreError ? promiseCallback.resolve(undefined) : promiseCallback.reject(err); } } if (cookie.domain) { if (!(0, domainMatch_1.domainMatch)(host ?? undefined, cookie.cdomain() ?? undefined, false)) { const err = new Error(`Cookie not in this host's domain. Cookie:${cookie.cdomain() ?? "null"} Request:${host ?? "null"}`); return options?.ignoreError ? promiseCallback.resolve(undefined) : promiseCallback.reject(err); } if (cookie.hostOnly == null) { cookie.hostOnly = false; } } else { cookie.hostOnly = true; cookie.domain = host; } if (!cookie.path || cookie.path[0] !== "/") { cookie.path = (0, defaultPath_1.defaultPath)(context.pathname); cookie.pathIsDefault = true; } if (options?.http === false && cookie.httpOnly) { const err = new Error("Cookie is HttpOnly and this isn't an HTTP API"); return options.ignoreError ? promiseCallback.resolve(undefined) : promiseCallback.reject(err); } if (cookie.sameSite !== "none" && cookie.sameSite !== undefined && sameSiteContext) { if (sameSiteContext === "none") { const err = new Error("Cookie is SameSite but this is a cross-origin request"); return options?.ignoreError ? promiseCallback.resolve(undefined) : promiseCallback.reject(err); } } const ignoreErrorForPrefixSecurity = this.prefixSecurity === constants_1.PrefixSecurityEnum.SILENT; const prefixSecurityDisabled = this.prefixSecurity === constants_1.PrefixSecurityEnum.DISABLED; if (!prefixSecurityDisabled) { let errorFound = false; let errorMsg; if (!isSecurePrefixConditionMet(cookie)) { errorFound = true; errorMsg = "Cookie has __Secure prefix but Secure attribute is not set"; } else if (!isHostPrefixConditionMet(cookie)) { errorFound = true; errorMsg = "Cookie has __Host prefix but either Secure or HostOnly attribute is not set or Path is not '/'"; } if (errorFound) { return options?.ignoreError || ignoreErrorForPrefixSecurity ? promiseCallback.resolve(undefined) : promiseCallback.reject(new Error(errorMsg)); } } const store = this.store; if (!store.updateCookie) { store.updateCookie = async function(_oldCookie, newCookie, cb2) { return this.putCookie(newCookie).then(() => cb2?.(null), (error) => cb2?.(error)); }; } const withCookie = function withCookie(err, oldCookie) { if (err) { cb(err); return; } const next = function(err2) { if (err2) { cb(err2); } else if (typeof cookie === "string") { cb(null, undefined); } else { cb(null, cookie); } }; if (oldCookie) { if (options && "http" in options && options.http === false && oldCookie.httpOnly) { err = new Error("old Cookie is HttpOnly and this isn't an HTTP API"); if (options.ignoreError) cb(null, undefined); else cb(err); return; } if (cookie instanceof cookie_1.Cookie) { cookie.creation = oldCookie.creation; cookie.creationIndex = oldCookie.creationIndex; cookie.lastAccessed = now; store.updateCookie(oldCookie, cookie, next); } } else { if (cookie instanceof cookie_1.Cookie) { cookie.creation = cookie.lastAccessed = now; store.putCookie(cookie, next); } } }; store.findCookie(cookie.domain, cookie.path, cookie.key, withCookie); return promiseCallback.promise; } setCookieSync(cookie, url, options) { const setCookieFn = options ? this.setCookie.bind(this, cookie, url, options) : this.setCookie.bind(this, cookie, url); return this.callSync(setCookieFn); } getCookies(url, options, callback) { if (typeof options === "function") { callback = options; options = defaultGetCookieOptions; } else if (options === undefined) { options = defaultGetCookieOptions; } const promiseCallback = (0, utils_1.createPromiseCallback)(callback); const cb = promiseCallback.callback; let context; try { if (typeof url === "string") { validators.validate(validators.isNonEmptyString(url), cb, url); } context = getCookieContext(url); validators.validate(validators.isObject(options), cb, (0, utils_1.safeToString)(options)); validators.validate(typeof cb === "function", cb); } catch (parameterError) { return promiseCallback.reject(parameterError); } const host = (0, canonicalDomain_1.canonicalDomain)(context.hostname); const path = context.pathname || "/"; const secure = context.protocol && (context.protocol == "https:" || context.protocol == "wss:"); let sameSiteLevel = 0; if (options.sameSiteContext) { const sameSiteContext = checkSameSiteContext(options.sameSiteContext); if (sameSiteContext == null) { return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR)); } sameSiteLevel = cookie_1.Cookie.sameSiteLevel[sameSiteContext]; if (!sameSiteLevel) { return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR)); } } const http = options.http ?? true; const now = Date.now(); const expireCheck = options.expire ?? true; const allPaths = options.allPaths ?? false; const store = this.store; function matchingCookie(c) { if (c.hostOnly) { if (c.domain != host) { return false; } } else { if (!(0, domainMatch_1.domainMatch)(host ?? undefined, c.domain ?? undefined, false)) { return false; } } if (!allPaths && typeof c.path === "string" && !(0, pathMatch_1.pathMatch)(path, c.path)) { return false; } if (c.secure && !secure) { return false; } if (c.httpOnly && !http) { return false; } if (sameSiteLevel) { let cookieLevel; if (c.sameSite === "lax") { cookieLevel = cookie_1.Cookie.sameSiteLevel.lax; } else if (c.sameSite === "strict") { cookieLevel = cookie_1.Cookie.sameSiteLevel.strict; } else { cookieLevel = cookie_1.Cookie.sameSiteLevel.none; } if (cookieLevel > sameSiteLevel) { return false; } } const expiryTime = c.expiryTime(); if (expireCheck && expiryTime != null && expiryTime <= now) { store.removeCookie(c.domain, c.path, c.key, () => { }); return false; } return true; } store.findCookies(host, allPaths ? null : path, this.allowSpecialUseDomain, (err, cookies) => { if (err) { cb(err); return; } if (cookies == null) { cb(null, []); return; } cookies = cookies.filter(matchingCookie); if ("sort" in options && options.sort !== false) { cookies = cookies.sort(cookieCompare_1.cookieCompare); } const now2 = new Date; for (const cookie of cookies) { cookie.lastAccessed = now2; } cb(null, cookies); }); return promiseCallback.promise; } getCookiesSync(url, options) { return this.callSync(this.getCookies.bind(this, url, options)) ?? []; } getCookieString(url, options, callback) { if (typeof options === "function") { callback = options; options = undefined; } const promiseCallback = (0, utils_1.createPromiseCallback)(callback); const next = function(err, cookies) { if (err) { promiseCallback.callback(err); } else { promiseCallback.callback(null, cookies?.sort(cookieCompare_1.cookieCompare).map((c) => c.cookieString()).join("; ")); } }; this.getCookies(url, options, next); return promiseCallback.promise; } getCookieStringSync(url, options) { return this.callSync(options ? this.getCookieString.bind(this, url, options) : this.getCookieString.bind(this, url)) ?? ""; } getSetCookieStrings(url, options, callback) { if (typeof options === "function") { callback = options; options = undefined; } const promiseCallback = (0, utils_1.createPromiseCallback)(callback); const next = function(err, cookies) { if (err) { promiseCallback.callback(err); } else { promiseCallback.callback(null, cookies?.map((c) => { return c.toString(); })); } }; this.getCookies(url, options, next); return promiseCallback.promise; } getSetCookieStringsSync(url, options = {}) { return this.callSync(this.getSetCookieStrings.bind(this, url, options)) ?? []; } serialize(callback) { const promiseCallback = (0, utils_1.createPromiseCallback)(callback); let type = this.store.constructor.name; if (validators.isObject(type)) { type = null; } const serialized = { version: `tough-cookie@${version_1.version}`, storeType: type, rejectPublicSuffixes: this.rejectPublicSuffixes, enableLooseMode: this.enableLooseMode, allowSpecialUseDomain: this.allowSpecialUseDomain, prefixSecurity: getNormalizedPrefixSecurity(this.prefixSecurity), cookies: [] }; if (typeof this.store.getAllCookies !== "function") { return promiseCallback.reject(new Error("store does not support getAllCookies and cannot be serialized")); } this.store.getAllCookies((err, cookies) => { if (err) { promiseCallback.callback(err); return; } if (cookies == null) { promiseCallback.callback(null, serialized); return; } serialized.cookies = cookies.map((cookie) => { const serializedCookie = cookie.toJSON(); delete serializedCookie.creationIndex; return serializedCookie; }); promiseCallback.callback(null, serialized); }); return promiseCallback.promise; } serializeSync() { return this.callSync((callback) => { this.serialize(callback); }); } toJSON() { return this.serializeSync(); } _importCookies(serialized, callback) { let cookies = undefined; if (serialized && typeof serialized === "object" && (0, utils_1.inOperator)("cookies", serialized) && Array.isArray(serialized.cookies)) { cookies = serialized.cookies; } if (!cookies) { callback(new Error("serialized jar has no cookies array"), undefined); return; } cookies = cookies.slice(); const putNext = (err) => { if (err) { callback(err, undefined); return; } if (Array.isArray(cookies)) { if (!cookies.length) { callback(err, this); return; } let cookie; try { cookie = cookie_1.Cookie.fromJSON(cookies.shift()); } catch (e) { callback(e instanceof Error ? e : new Error, undefined); return; } if (cookie === undefined) { putNext(null); return; } this.store.putCookie(cookie, putNext); } }; putNext(null); } _importCookiesSync(serialized) { this.callSync(this._importCookies.bind(this, serialized)); } clone(newStore, callback) { if (typeof newStore === "function") { callback = newStore; newStore = undefined; } const promiseCallback = (0, utils_1.createPromiseCallback)(callback); const cb = promiseCallback.callback; this.serialize((err, serialized) => { if (err) { return promiseCallback.reject(err); } return CookieJar.deserialize(serialized ?? "", newStore, cb); }); return promiseCallback.promise; } _cloneSync(newStore) { const cloneFn = newStore && typeof newStore !== "function" ? this.clone.bind(this, newStore) : this.clone.bind(this); return this.callSync((callback) => { cloneFn(callback); }); } cloneSync(newStore) { if (!newStore) { return this._cloneSync(); } if (!newStore.synchronous) { throw new Error("CookieJar clone destination store is not synchronous; use async API instead."); } return this._cloneSync(newStore); } removeAllCookies(callback) { const promiseCallback = (0, utils_1.createPromiseCallback)(callback); const cb = promiseCallback.callback; const store = this.store; if (typeof store.removeAllCookies === "function" && store.removeAllCookies !== store_1.Store.prototype.removeAllCookies) { store.removeAllCookies(cb); return promiseCallback.promise; } store.getAllCookies((err, cookies) => { if (err) { cb(err); return; } if (!cookies) { cookies = []; } if (cookies.length === 0) { cb(null, undefined); return; } let completedCount = 0; const removeErrors = []; const removeCookieCb = function removeCookieCb(removeErr) { if (removeErr) { removeErrors.push(removeErr); } completedCount++; if (completedCount === cookies.length) { if (removeErrors[0]) cb(removeErrors[0]); else cb(null, undefined); return; } }; cookies.forEach((cookie) => { store.removeCookie(cookie.domain, cookie.path, cookie.key, removeCookieCb); }); }); return promiseCallback.promise; } removeAllCookiesSync() { this.callSync((callback) => { this.removeAllCookies(callback); }); } static deserialize(strOrObj, store, callback) { if (typeof store === "function") { callback = store; store = undefined; } const promiseCallback = (0, utils_1.createPromiseCallback)(callback); let serialized; if (typeof strOrObj === "string") { try { serialized = JSON.parse(strOrObj); } catch (e) { return promiseCallback.reject(e instanceof Error ? e : new Error); } } else { serialized = strOrObj; } const readSerializedProperty = (property) => { return serialized && typeof serialized === "object" && (0, utils_1.inOperator)(property, serialized) ? serialized[property] : undefined; }; const readSerializedBoolean = (property) => { const value = readSerializedProperty(property); return typeof value === "boolean" ? value : undefined; }; const readSerializedString = (property) => { const value = readSerializedProperty(property); return typeof value === "string" ? value : undefined; }; const jar = new CookieJar(store, { rejectPublicSuffixes: readSerializedBoolean("rejectPublicSuffixes"), looseMode: readSerializedBoolean("enableLooseMode"), allowSpecialUseDomain: readSerializedBoolean("allowSpecialUseDomain"), prefixSecurity: getNormalizedPrefixSecurity(readSerializedString("prefixSecurity") ?? "silent") }); jar._importCookies(serialized, (err) => { if (err) { promiseCallback.callback(err); return; } promiseCallback.callback(null, jar); }); return promiseCallback.promise; } static deserializeSync(strOrObj, store) { const serialized = typeof strOrObj === "string" ? JSON.parse(strOrObj) : strOrObj; const readSerializedProperty = (property) => { return serialized && typeof serialized === "object" && (0, utils_1.inOperator)(property, serialized) ? serialized[property] : undefined; }; const readSerializedBoolean = (property) => { const value = readSerializedProperty(property); return typeof value === "boolean" ? value : undefined; }; const readSerializedString = (property) => { const value = readSerializedProperty(property); return typeof value === "string" ? value : undefined; }; const jar = new CookieJar(store, { rejectPublicSuffixes: readSerializedBoolean("rejectPublicSuffixes"), looseMode: readSerializedBoolean("enableLooseMode"), allowSpecialUseDomain: readSerializedBoolean("allowSpecialUseDomain"), prefixSecurity: getNormalizedPrefixSecurity(readSerializedString("prefixSecurity") ?? "silent") }); if (!jar.store.synchronous) { throw new Error("CookieJar store is not synchronous; use async API instead."); } jar._importCookiesSync(serialized); return jar; } static fromJSON(jsonString, store) { return CookieJar.deserializeSync(jsonString, store); } } exports.CookieJar = CookieJar; }); // node_modules/tough-cookie/dist/cookie/permutePath.js var require_permutePath = __commonJS((exports) => { function permutePath(path) { if (path === "/") { return ["/"]; } const permutations = [path]; while (path.length > 1) { const lindex = path.lastIndexOf("/"); if (lindex === 0) { break; } path = path.slice(0, lindex); permutations.push(path); } permutations.push("/"); return permutations; } Object.defineProperty(exports, "__esModule", { value: true }); exports.permutePath = permutePath; }); // node_modules/tough-cookie/dist/cookie/index.js var require_cookie2 = __commonJS((exports) => { function parse(str, options) { return cookie_2.Cookie.parse(str, options); } function fromJSON(str) { return cookie_2.Cookie.fromJSON(str); } Object.defineProperty(exports, "__esModule", { value: true }); exports.permutePath = exports.parseDate = exports.formatDate = exports.domainMatch = exports.defaultPath = exports.CookieJar = exports.cookieCompare = exports.Cookie = exports.PrefixSecurityEnum = exports.canonicalDomain = exports.version = exports.ParameterError = exports.Store = exports.getPublicSuffix = exports.permuteDomain = exports.pathMatch = exports.MemoryCookieStore = undefined; exports.parse = parse; exports.fromJSON = fromJSON; var memstore_1 = require_memstore(); Object.defineProperty(exports, "MemoryCookieStore", { enumerable: true, get: function() { return memstore_1.MemoryCookieStore; } }); var pathMatch_1 = require_pathMatch(); Object.defineProperty(exports, "pathMatch", { enumerable: true, get: function() { return pathMatch_1.pathMatch; } }); var permuteDomain_1 = require_permuteDomain(); Object.defineProperty(exports, "permuteDomain", { enumerable: true, get: function() { return permuteDomain_1.permuteDomain; } }); var getPublicSuffix_1 = require_getPublicSuffix(); Object.defineProperty(exports, "getPublicSuffix", { enumerable: true, get: function() { return getPublicSuffix_1.getPublicSuffix; } }); var store_1 = require_store(); Object.defineProperty(exports, "Store", { enumerable: true, get: function() { return store_1.Store; } }); var validators_1 = require_validators(); Object.defineProperty(exports, "ParameterError", { enumerable: true, get: function() { return validators_1.ParameterError; } }); var version_1 = require_version(); Object.defineProperty(exports, "version", { enumerable: true, get: function() { return version_1.version; } }); var canonicalDomain_1 = require_canonicalDomain(); Object.defineProperty(exports, "canonicalDomain", { enumerable: true, get: function() { return canonicalDomain_1.canonicalDomain; } }); var constants_1 = require_constants(); Object.defineProperty(exports, "PrefixSecurityEnum", { enumerable: true, get: function() { return constants_1.PrefixSecurityEnum; } }); var cookie_1 = require_cookie(); Object.defineProperty(exports, "Cookie", { enumerable: true, get: function() { return cookie_1.Cookie; } }); var cookieCompare_1 = require_cookieCompare(); Object.defineProperty(exports, "cookieCompare", { enumerable: true, get: function() { return cookieCompare_1.cookieCompare; } }); var cookieJar_1 = require_cookieJar(); Object.defineProperty(exports, "CookieJar", { enumerable: true, get: function() { return cookieJar_1.CookieJar; } }); var defaultPath_1 = require_defaultPath(); Object.defineProperty(exports, "defaultPath", { enumerable: true, get: function() { return defaultPath_1.defaultPath; } }); var domainMatch_1 = require_domainMatch(); Object.defineProperty(exports, "domainMatch", { enumerable: true, get: function() { return domainMatch_1.domainMatch; } }); var formatDate_1 = require_formatDate(); Object.defineProperty(exports, "formatDate", { enumerable: true, get: function() { return formatDate_1.formatDate; } }); var parseDate_1 = require_parseDate(); Object.defineProperty(exports, "parseDate", { enumerable: true, get: function() { return parseDate_1.parseDate; } }); var permutePath_1 = require_permutePath(); Object.defineProperty(exports, "permutePath", { enumerable: true, get: function() { return permutePath_1.permutePath; } }); var cookie_2 = require_cookie(); }); // node_modules/discord.js-selfbot-v13/src/errors/DJSError.js var require_DJSError = __commonJS((exports, module) => { function makeDiscordjsError(Base) { return class DiscordjsError extends Base { constructor(key, ...args) { super(message(key, args)); this[kCode] = key; if (Error.captureStackTrace) Error.captureStackTrace(this, DiscordjsError); } get name() { return `${super.name} [${this[kCode]}]`; } get code() { return this[kCode]; } }; } function message(key, args) { if (typeof key !== "string") throw new Error("Error message key must be a string"); const msg = messages.get(key); if (!msg) throw new Error(`An invalid error message key was used: ${key}.`); if (typeof msg === "function") return msg(...args); if (!args?.length) return msg; args.unshift(msg); return String(...args); } function register(sym, val) { messages.set(sym, typeof val === "function" ? val : String(val)); } var kCode = Symbol("code"); var messages = new Map; module.exports = { register, Error: makeDiscordjsError(Error), TypeError: makeDiscordjsError(TypeError), RangeError: makeDiscordjsError(RangeError) }; }); // node_modules/discord.js-selfbot-v13/src/errors/Messages.js var require_Messages = __commonJS(() => { var { register } = require_DJSError(); var Messages = { CLIENT_INVALID_OPTION: (prop, must) => `The ${prop} option must be ${must}`, CLIENT_INVALID_PROVIDED_SHARDS: "None of the provided shards were valid.", CLIENT_MISSING_INTENTS: "Valid intents must be provided for the Client.", CLIENT_NOT_READY: (action) => `The client needs to be logged in to ${action}.`, TOKEN_INVALID: "An invalid token was provided.", TOKEN_MISSING: "Request to use token, but token was unavailable to the client.", TOTPKEY_MISSING: "Request to use mfa, but TOTPKey was not set in client options.", WS_CLOSE_REQUESTED: "WebSocket closed due to user request.", WS_CONNECTION_EXISTS: "There is already an existing WebSocket connection.", WS_NOT_OPEN: (data = "data") => `WebSocket not open to send ${data}`, MANAGER_DESTROYED: "Manager was destroyed.", BITFIELD_INVALID: (bit) => `Invalid bitfield flag or number: ${bit}.`, SHARDING_INVALID: "[Bot Token] Invalid shard settings were provided.", SHARDING_REQUIRED: "[Bot Token] This session would have handled too many guilds - Sharding is required.", INVALID_INTENTS: "[Bot Token] Invalid intent provided for WebSocket intents.", DISALLOWED_INTENTS: "[Bot Token] Privileged intent provided is not enabled or whitelisted.", SHARDING_NO_SHARDS: "No shards have been spawned.", SHARDING_IN_PROCESS: "Shards are still being spawned.", SHARDING_INVALID_EVAL_BROADCAST: "Script to evaluate must be a function", SHARDING_SHARD_NOT_FOUND: (id) => `Shard ${id} could not be found.`, SHARDING_ALREADY_SPAWNED: (count) => `Already spawned ${count} shards.`, SHARDING_PROCESS_EXISTS: (id) => `Shard ${id} already has an active process.`, SHARDING_WORKER_EXISTS: (id) => `Shard ${id} already has an active worker.`, SHARDING_READY_TIMEOUT: (id) => `Shard ${id}'s Client took too long to become ready.`, SHARDING_READY_DISCONNECTED: (id) => `Shard ${id}'s Client disconnected before becoming ready.`, SHARDING_READY_DIED: (id) => `Shard ${id}'s process exited before its Client became ready.`, SHARDING_NO_CHILD_EXISTS: (id) => `Shard ${id} has no active process or worker.`, SHARDING_SHARD_MISCALCULATION: (shard, guild, count) => `Calculated invalid shard ${shard} for guild ${guild} with ${count} shards.`, COLOR_RANGE: "Color must be within the range 0 - 16777215 (0xFFFFFF).", COLOR_CONVERT: "Unable to convert color to a number.", INVITE_OPTIONS_MISSING_CHANNEL: "A valid guild channel must be provided when GuildScheduledEvent is EXTERNAL.", EMBED_TITLE: "MessageEmbed title must be a string.", EMBED_FIELD_NAME: "MessageEmbed field names must be non-empty strings.", EMBED_FIELD_VALUE: "MessageEmbed field values must be non-empty strings.", EMBED_FOOTER_TEXT: "MessageEmbed footer text must be a string.", EMBED_DESCRIPTION: "MessageEmbed description must be a string.", EMBED_AUTHOR_NAME: "MessageEmbed author name must be a string.", BUTTON_LABEL: "MessageButton label must be a string", BUTTON_URL: "MessageButton URL must be a string", BUTTON_CUSTOM_ID: "MessageButton customId must be a string", SELECT_MENU_CUSTOM_ID: "MessageSelectMenu customId must be a string", SELECT_MENU_PLACEHOLDER: "MessageSelectMenu placeholder must be a string", SELECT_OPTION_LABEL: "MessageSelectOption label must be a string", SELECT_OPTION_VALUE: "MessageSelectOption value must be a string", SELECT_OPTION_DESCRIPTION: "MessageSelectOption description must be a string", TEXT_INPUT_CUSTOM_ID: "TextInputComponent customId must be a string", TEXT_INPUT_LABEL: "TextInputComponent label must be a string", TEXT_INPUT_PLACEHOLDER: "TextInputComponent placeholder must be a string", TEXT_INPUT_VALUE: "TextInputComponent value must be a string", MODAL_CUSTOM_ID: "Modal customId must be a string", MODAL_TITLE: "Modal title must be a string", INTERACTION_COLLECTOR_ERROR: (reason) => `Collector received no interactions before ending with reason: ${reason}`, FILE_NOT_FOUND: (file) => `File could not be found: ${file}`, USER_BANNER_NOT_FETCHED: "You must fetch this user's banner before trying to generate its URL!", USER_NO_DM_CHANNEL: "No DM Channel exists!", VOICE_NOT_STAGE_CHANNEL: "You are only allowed to do this in stage channels.", VOICE_STATE_NOT_OWN: "You cannot self-deafen/mute/request to speak on VoiceStates that do not belong to the ClientUser.", VOICE_STATE_INVALID_TYPE: (name) => `${name} must be a boolean.`, REQ_RESOURCE_TYPE: "The resource must be a string, Buffer or a valid file stream.", IMAGE_FORMAT: (format) => `Invalid image format: ${format}`, IMAGE_SIZE: (size) => `Invalid image size: ${size}`, MESSAGE_BULK_DELETE_TYPE: "The messages must be an Array, Collection, or number.", MESSAGE_NONCE_TYPE: "Message nonce must be an integer or a string.", MESSAGE_CONTENT_TYPE: "Message content must be a non-empty string.", SPLIT_MAX_LEN: "Chunk exceeds the max length and contains no split characters.", BAN_RESOLVE_ID: (ban = false) => `Couldn't resolve the user id to ${ban ? "ban" : "unban"}.`, FETCH_BAN_RESOLVE_ID: "Couldn't resolve the user id to fetch the ban.", PRUNE_DAYS_TYPE: "Days must be a number", GUILD_CHANNEL_RESOLVE: "Could not resolve channel to a guild channel.", GUILD_VOICE_CHANNEL_RESOLVE: "Could not resolve channel to a guild voice channel.", GUILD_CHANNEL_ORPHAN: "Could not find a parent to this guild channel.", GUILD_CHANNEL_UNOWNED: "The fetched channel does not belong to this manager's guild.", GUILD_OWNED: "Guild is owned by the client.", GUILD_MEMBERS_TIMEOUT: "Members didn't arrive in time.", GUILD_UNCACHED_ME: "The client user as a member of this guild is uncached.", CHANNEL_NOT_CACHED: "Could not find the channel where this message came from in the cache!", STAGE_CHANNEL_RESOLVE: "Could not resolve channel to a stage channel.", GUILD_SCHEDULED_EVENT_RESOLVE: "Could not resolve the guild scheduled event.", INVALID_TYPE: (name, expected, an = false) => `Supplied ${name} is not a${an ? "n" : ""} ${expected}.`, INVALID_ELEMENT: (type, name, elem) => `Supplied ${type} ${name} includes an invalid element: ${elem}`, MESSAGE_THREAD_PARENT: "The message was not sent in a guild text or news channel", MESSAGE_EXISTING_THREAD: "The message already has a thread", THREAD_INVITABLE_TYPE: (type) => `Invitable cannot be edited on ${type}`, WEBHOOK_MESSAGE: "The message was not sent by a webhook.", WEBHOOK_TOKEN_UNAVAILABLE: "This action requires a webhook token, but none is available.", WEBHOOK_URL_INVALID: "The provided webhook URL is not valid.", WEBHOOK_APPLICATION: "This message webhook belongs to an application and cannot be fetched.", MESSAGE_REFERENCE_MISSING: "The message does not reference another message", EMOJI_TYPE: "Emoji must be a string or GuildEmoji/ReactionEmoji", EMOJI_MANAGED: "Emoji is managed and has no Author.", MISSING_MANAGE_EMOJIS_AND_STICKERS_PERMISSION: (guild) => `Client must have Manage Emojis and Stickers permission in guild ${guild} to see emoji authors.`, NOT_GUILD_STICKER: "Sticker is a standard (non-guild) sticker and has no author.", REACTION_RESOLVE_USER: "Couldn't resolve the user id to remove from the reaction.", VANITY_URL: "This guild does not have the VANITY_URL feature enabled.", INVITE_RESOLVE_CODE: "Could not resolve the code to fetch the invite.", INVITE_NOT_FOUND: "Could not find the requested invite.", DELETE_GROUP_DM_CHANNEL: "Bots don't have access to Group DM Channels and cannot delete them", FETCH_GROUP_DM_CHANNEL: "Bots don't have access to Group DM Channels and cannot fetch them", MEMBER_FETCH_NONCE_LENGTH: "Nonce length must not exceed 32 characters.", GLOBAL_COMMAND_PERMISSIONS: "Permissions for global commands may only be fetched or modified by providing a GuildResolvable " + "or from a guild's application command manager.", GUILD_UNCACHED_ROLE_RESOLVE: "Cannot resolve roles from an arbitrary guild, provide an id instead", INTERACTION_ALREADY_REPLIED: "The reply to this interaction has already been sent or deferred.", INTERACTION_NOT_REPLIED: "The reply to this interaction has not been sent or deferred.", COMMAND_INTERACTION_OPTION_NOT_FOUND: (name) => `Required option "${name}" not found.`, COMMAND_INTERACTION_OPTION_TYPE: (name, type, expected) => `Option "${name}" is of type: ${type}; expected ${expected}.`, COMMAND_INTERACTION_OPTION_EMPTY: (name, type) => `Required option "${name}" is of type: ${type}; expected a non-empty value.`, COMMAND_INTERACTION_OPTION_NO_SUB_COMMAND: "No subcommand specified for interaction.", COMMAND_INTERACTION_OPTION_NO_SUB_COMMAND_GROUP: "No subcommand group specified for interaction.", AUTOCOMPLETE_INTERACTION_OPTION_NO_FOCUSED_OPTION: "No focused option for autocomplete interaction.", MODAL_SUBMIT_INTERACTION_FIELD_NOT_FOUND: (customId) => `Required field with custom id "${customId}" not found.`, MODAL_SUBMIT_INTERACTION_FIELD_TYPE: (customId, type, expected) => `Field with custom id "${customId}" is of type: ${type}; expected ${expected}.`, INVITE_MISSING_SCOPES: "At least one valid scope must be provided for the invite", NOT_IMPLEMENTED: (what, name) => `Method ${what} not implemented on ${name}.`, SWEEP_FILTER_RETURN: "The return value of the sweepFilter function was not false or a Function", GUILD_FORUM_MESSAGE_REQUIRED: "You must provide a message to create a guild forum thread", INVALID_USER_API: "User accounts cannot use this endpoint", INVALID_APPLICATION_COMMAND: (id) => `Could not find a valid command for this bot: ${id}`, INVALID_COMMAND_NAME: (allCMD) => `Could not parse subGroupCommand and subCommand due to too long: ${allCMD.join(" ")}`, INVALID_SLASH_COMMAND_CHOICES: (parentOptions, value) => `${value} is not a valid choice for this option (${parentOptions})`, SLASH_COMMAND_REQUIRED_OPTIONS_MISSING: (req, opt) => `Value required (${req}) missing (Options: ${opt})`, SLASH_COMMAND_SUB_COMMAND_GROUP_INVALID: (n) => `${n} is not a valid sub command group`, SLASH_COMMAND_SUB_COMMAND_INVALID: (n) => `${n} is not a valid sub command`, INTERACTION_FAILED: "No responsed from Application", USER_NOT_STREAMING: "User is not streaming", BULK_BAN_USERS_OPTION_EMPTY: 'Option "users" array or collection is empty', VOICE_INVALID_HEARTBEAT: "Tried to set voice heartbeat but no valid interval was specified.", VOICE_USER_MISSING: "Couldn't resolve the user to create stream.", VOICE_JOIN_CHANNEL: (full = false) => `You do not have permission to join this voice channel${full ? "; it is full." : "."}`, VOICE_CONNECTION_TIMEOUT: "Connection not established within 15 seconds.", VOICE_TOKEN_ABSENT: "Token not provided from voice server packet.", VOICE_SESSION_ABSENT: "Session ID not supplied.", VOICE_INVALID_ENDPOINT: "Invalid endpoint received.", VOICE_NO_BROWSER: "Voice connections are not available in browsers.", VOICE_CONNECTION_ATTEMPTS_EXCEEDED: (attempts) => `Too many connection attempts (${attempts}).`, VOICE_JOIN_SOCKET_CLOSED: "Tried to send join packet, but the WebSocket is not open.", VOICE_PLAY_INTERFACE_NO_BROADCAST: "A broadcast cannot be played in this context.", VOICE_PLAY_INTERFACE_BAD_TYPE: "Unknown stream type", VOICE_PRISM_DEMUXERS_NEED_STREAM: "To play a webm/ogg stream, you need to pass a ReadableStream.", VOICE_STATE_UNCACHED_MEMBER: "The member of this voice state is uncached.", UDP_SEND_FAIL: "Tried to send a UDP packet, but there is no socket available.", UDP_ADDRESS_MALFORMED: "Malformed UDP address or port.", UDP_CONNECTION_EXISTS: "There is already an existing UDP connection.", UDP_WRONG_HANDSHAKE: "Wrong handshake packet for UDP", INVALID_VIDEO_CODEC: (codecs) => `Only these codecs are supported: ${codecs.join(", ")}`, STREAM_CONNECTION_READONLY: "Cannot send data to a read-only stream", STREAM_CANNOT_JOIN: "Cannot join a stream to itself", VOICE_USER_NOT_STREAMING: "User is not streaming", POLL_ALREADY_EXPIRED: "This poll has already expired.", METHOD_WARNING: "This method is flagged as it may lead to a temporary or permanent account ban. Do not use until further notice." }; for (const [name, message] of Object.entries(Messages)) register(name, message); }); // node_modules/discord.js-selfbot-v13/src/errors/index.js var require_errors = __commonJS((exports, module) => { module.exports = require_DJSError(); module.exports.Messages = require_Messages(); }); // node_modules/discord.js-selfbot-v13/src/util/Constants.js var require_Constants = __commonJS((exports) => { function makeImageUrl(root, { format = "webp", size } = {}) { if (!["undefined", "number"].includes(typeof size)) throw new TypeError2("INVALID_TYPE", "size", "number"); if (format && !AllowedImageFormats.includes(format)) throw new Error2("IMAGE_FORMAT", format); if (size && !AllowedImageSizes.includes(size)) throw new RangeError2("IMAGE_SIZE", size); return `${root}.${format}${size ? `?size=${size}` : ""}`; } function keyMirror(arr) { let tmp = Object.create(null); for (const value of arr) tmp[value] = value; return tmp; } function createEnum(keys) { const obj = {}; for (const [index, key] of keys.entries()) { if (key === null) continue; obj[key] = index; obj[index] = key; } return obj; } var { Error: Error2, RangeError: RangeError2, TypeError: TypeError2 } = require_errors(); exports.MaxBulkDeletableMessageAge = 1209600000; exports.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) discord/1.0.9210 Chrome/134.0.6998.205 Electron/35.3.0 Safari/537.36"; exports.ciphers = [ "TLS_AES_128_GCM_SHA256", "TLS_AES_256_GCM_SHA384", "TLS_CHACHA20_POLY1305_SHA256", "ECDHE-ECDSA-AES128-GCM-SHA256", "ECDHE-RSA-AES128-GCM-SHA256", "ECDHE-ECDSA-AES256-GCM-SHA384", "ECDHE-RSA-AES256-GCM-SHA384", "ECDHE-ECDSA-CHACHA20-POLY1305", "ECDHE-RSA-CHACHA20-POLY1305", "ECDHE-RSA-AES128-SHA", "ECDHE-RSA-AES256-SHA", "AES128-GCM-SHA256", "AES256-GCM-SHA384", "AES128-SHA", "AES256-SHA" ]; exports.WSCodes = { 1000: "WS_CLOSE_REQUESTED", 1011: "INTERNAL_ERROR", 4004: "TOKEN_INVALID", 4010: "SHARDING_INVALID", 4011: "SHARDING_REQUIRED", 4013: "INVALID_INTENTS", 4014: "DISALLOWED_INTENTS" }; var AllowedImageFormats = ["webp", "png", "jpg", "jpeg", "gif"]; var AllowedImageSizes = [16, 32, 56, 64, 96, 128, 256, 300, 512, 600, 1024, 2048, 4096]; exports.Endpoints = { CDN(root) { return { Emoji: (emojiId, format = "webp") => `${root}/emojis/${emojiId}.${format}`, Asset: (name) => `${root}/assets/${name}`, DefaultAvatar: (index) => `${root}/embed/avatars/${index}.png`, Avatar: (userId, hash, format, size, dynamic = false) => { if (dynamic && hash.startsWith("a_")) format = "gif"; return makeImageUrl(`${root}/avatars/${userId}/${hash}`, { format, size }); }, AvatarDecoration: (hash) => makeImageUrl(`${root}/avatar-decoration-presets/${hash}`, { format: "png" }), GuildTagBadge: (guildId, hash) => `${root}/guild-tag-badges/${guildId}/${hash}.png`, GuildMemberAvatar: (guildId, memberId, hash, format = "webp", size, dynamic = false) => { if (dynamic && hash.startsWith("a_")) format = "gif"; return makeImageUrl(`${root}/guilds/${guildId}/users/${memberId}/avatars/${hash}`, { format, size }); }, GuildMemberBanner: (guildId, memberId, hash, format = "webp", size, dynamic = false) => { if (dynamic && hash.startsWith("a_")) format = "gif"; return makeImageUrl(`${root}/guilds/${guildId}/users/${memberId}/banners/${hash}`, { format, size }); }, Banner: (id, hash, format, size, dynamic = false) => { if (dynamic && hash.startsWith("a_")) format = "gif"; return makeImageUrl(`${root}/banners/${id}/${hash}`, { format, size }); }, Icon: (guildId, hash, format, size, dynamic = false) => { if (dynamic && hash.startsWith("a_")) format = "gif"; return makeImageUrl(`${root}/icons/${guildId}/${hash}`, { format, size }); }, AppIcon: (appId, hash, options) => makeImageUrl(`${root}/app-icons/${appId}/${hash}`, options), AppAsset: (appId, hash, options) => makeImageUrl(`${root}/app-assets/${appId}/${hash}`, options), StickerPackBanner: (bannerId, format, size) => makeImageUrl(`${root}/app-assets/710982414301790216/store/${bannerId}`, { size, format }), GDMIcon: (channelId, hash, format, size) => makeImageUrl(`${root}/channel-icons/${channelId}/${hash}`, { size, format }), Splash: (guildId, hash, format, size) => makeImageUrl(`${root}/splashes/${guildId}/${hash}`, { size, format }), DiscoverySplash: (guildId, hash, format, size) => makeImageUrl(`${root}/discovery-splashes/${guildId}/${hash}`, { size, format }), TeamIcon: (teamId, hash, options) => makeImageUrl(`${root}/team-icons/${teamId}/${hash}`, options), Sticker: (stickerId, stickerFormat) => `${root}/stickers/${stickerId}.${stickerFormat === "LOTTIE" ? "json" : stickerFormat === "GIF" ? "gif" : "png"}`, RoleIcon: (roleId, hash, format = "webp", size) => makeImageUrl(`${root}/role-icons/${roleId}/${hash}`, { size, format }), GuildScheduledEventCover: (scheduledEventId, coverHash, format, size) => makeImageUrl(`${root}/guild-events/${scheduledEventId}/${coverHash}`, { size, format }) }; }, invite: (root, code, eventId) => eventId ? `${root}/${code}?event=${eventId}` : `${root}/${code}`, scheduledEvent: (root, guildId, eventId) => `${root}/${guildId}/${eventId}`, botGateway: "/gateway" }; exports.Status = { READY: 0, CONNECTING: 1, RECONNECTING: 2, IDLE: 3, NEARLY: 4, DISCONNECTED: 5, WAITING_FOR_GUILDS: 6, IDENTIFYING: 7, RESUMING: 8 }; exports.VoiceStatus = { CONNECTED: 0, CONNECTING: 1, AUTHENTICATING: 2, RECONNECTING: 3, DISCONNECTED: 4 }; exports.Opcodes = { DISPATCH: 0, HEARTBEAT: 1, IDENTIFY: 2, STATUS_UPDATE: 3, VOICE_STATE_UPDATE: 4, VOICE_GUILD_PING: 5, RESUME: 6, RECONNECT: 7, REQUEST_GUILD_MEMBERS: 8, INVALID_SESSION: 9, HELLO: 10, HEARTBEAT_ACK: 11, GUILD_SYNC: 12, DM_UPDATE: 13, GUILD_SUBSCRIPTIONS: 14, LOBBY_CONNECT: 15, LOBBY_DISCONNECT: 16, LOBBY_VOICE_STATE_UPDATE: 17, STREAM_CREATE: 18, STREAM_DELETE: 19, STREAM_WATCH: 20, STREAM_PING: 21, STREAM_SET_PAUSED: 22, REQUEST_GUILD_APPLICATION_COMMANDS: 24, EMBEDDED_ACTIVITY_LAUNCH: 25, EMBEDDED_ACTIVITY_CLOSE: 26, EMBEDDED_ACTIVITY_UPDATE: 27, REQUEST_FORUM_UNREADS: 28, REMOTE_COMMAND: 29, GET_DELETED_ENTITY_IDS_NOT_MATCHING_HASH: 30, REQUEST_SOUNDBOARD_SOUNDS: 31, SPEED_TEST_CREATE: 32, SPEED_TEST_DELETE: 33, REQUEST_LAST_MESSAGES: 34, SEARCH_RECENT_MEMBERS: 35, REQUEST_CHANNEL_STATUSES: 36, GUILD_SUBSCRIPTIONS_BULK: 37 }; exports.VoiceOpcodes = { IDENTIFY: 0, SELECT_PROTOCOL: 1, READY: 2, HEARTBEAT: 3, SESSION_DESCRIPTION: 4, SPEAKING: 5, HEARTBEAT_ACK: 6, RESUME: 7, HELLO: 8, RESUMED: 9, SOURCES: 12, CLIENT_DISCONNECT: 13, SESSION_UPDATE: 14, MEDIA_SINK_WANTS: 15, VOICE_BACKEND_VERSION: 16, CHANNEL_OPTIONS_UPDATE: 17 }; exports.Events = { RATE_LIMIT: "rateLimit", INVALID_REQUEST_WARNING: "invalidRequestWarning", API_RESPONSE: "apiResponse", API_REQUEST: "apiRequest", CLIENT_READY: "ready", APPLICATION_COMMAND_CREATE: "applicationCommandCreate", APPLICATION_COMMAND_DELETE: "applicationCommandDelete", APPLICATION_COMMAND_UPDATE: "applicationCommandUpdate", APPLICATION_COMMAND_PERMISSIONS_UPDATE: "applicationCommandPermissionsUpdate", AUTO_MODERATION_ACTION_EXECUTION: "autoModerationActionExecution", AUTO_MODERATION_RULE_CREATE: "autoModerationRuleCreate", AUTO_MODERATION_RULE_DELETE: "autoModerationRuleDelete", AUTO_MODERATION_RULE_UPDATE: "autoModerationRuleUpdate", GUILD_AVAILABLE: "guildAvailable", GUILD_CREATE: "guildCreate", GUILD_DELETE: "guildDelete", GUILD_UPDATE: "guildUpdate", GUILD_UNAVAILABLE: "guildUnavailable", GUILD_MEMBER_ADD: "guildMemberAdd", GUILD_MEMBER_REMOVE: "guildMemberRemove", GUILD_MEMBER_UPDATE: "guildMemberUpdate", GUILD_MEMBER_AVAILABLE: "guildMemberAvailable", GUILD_MEMBERS_CHUNK: "guildMembersChunk", GUILD_INTEGRATIONS_UPDATE: "guildIntegrationsUpdate", GUILD_ROLE_CREATE: "roleCreate", GUILD_ROLE_DELETE: "roleDelete", INVITE_CREATE: "inviteCreate", INVITE_DELETE: "inviteDelete", GUILD_ROLE_UPDATE: "roleUpdate", GUILD_EMOJI_CREATE: "emojiCreate", GUILD_EMOJI_DELETE: "emojiDelete", GUILD_EMOJI_UPDATE: "emojiUpdate", GUILD_BAN_ADD: "guildBanAdd", GUILD_BAN_REMOVE: "guildBanRemove", CHANNEL_CREATE: "channelCreate", CHANNEL_DELETE: "channelDelete", CHANNEL_UPDATE: "channelUpdate", CHANNEL_PINS_UPDATE: "channelPinsUpdate", MESSAGE_CREATE: "messageCreate", MESSAGE_DELETE: "messageDelete", MESSAGE_UPDATE: "messageUpdate", MESSAGE_BULK_DELETE: "messageDeleteBulk", MESSAGE_REACTION_ADD: "messageReactionAdd", MESSAGE_REACTION_REMOVE: "messageReactionRemove", MESSAGE_REACTION_REMOVE_ALL: "messageReactionRemoveAll", MESSAGE_REACTION_REMOVE_EMOJI: "messageReactionRemoveEmoji", THREAD_CREATE: "threadCreate", THREAD_DELETE: "threadDelete", THREAD_UPDATE: "threadUpdate", THREAD_LIST_SYNC: "threadListSync", THREAD_MEMBER_UPDATE: "threadMemberUpdate", THREAD_MEMBERS_UPDATE: "threadMembersUpdate", USER_UPDATE: "userUpdate", PRESENCE_UPDATE: "presenceUpdate", VOICE_SERVER_UPDATE: "voiceServerUpdate", VOICE_STATE_UPDATE: "voiceStateUpdate", TYPING_START: "typingStart", WEBHOOKS_UPDATE: "webhookUpdate", ERROR: "error", WARN: "warn", DEBUG: "debug", CACHE_SWEEP: "cacheSweep", SHARD_DISCONNECT: "shardDisconnect", SHARD_ERROR: "shardError", SHARD_RECONNECTING: "shardReconnecting", SHARD_READY: "shardReady", SHARD_RESUME: "shardResume", INVALIDATED: "invalidated", RAW: "raw", STAGE_INSTANCE_CREATE: "stageInstanceCreate", STAGE_INSTANCE_UPDATE: "stageInstanceUpdate", STAGE_INSTANCE_DELETE: "stageInstanceDelete", GUILD_STICKER_CREATE: "stickerCreate", GUILD_STICKER_DELETE: "stickerDelete", GUILD_STICKER_UPDATE: "stickerUpdate", GUILD_SCHEDULED_EVENT_CREATE: "guildScheduledEventCreate", GUILD_SCHEDULED_EVENT_UPDATE: "guildScheduledEventUpdate", GUILD_SCHEDULED_EVENT_DELETE: "guildScheduledEventDelete", GUILD_SCHEDULED_EVENT_USER_ADD: "guildScheduledEventUserAdd", GUILD_SCHEDULED_EVENT_USER_REMOVE: "guildScheduledEventUserRemove", GUILD_AUDIT_LOG_ENTRY_CREATE: "guildAuditLogEntryCreate", UNHANDLED_PACKET: "unhandledPacket", RELATIONSHIP_ADD: "relationshipAdd", RELATIONSHIP_UPDATE: "relationshipUpdate", RELATIONSHIP_REMOVE: "relationshipRemove", CHANNEL_RECIPIENT_ADD: "channelRecipientAdd", CHANNEL_RECIPIENT_REMOVE: "channelRecipientRemove", INTERACTION_MODAL_CREATE: "interactionModalCreate", CALL_CREATE: "callCreate", CALL_UPDATE: "callUpdate", CALL_DELETE: "callDelete", MESSAGE_POLL_VOTE_ADD: "messagePollVoteAdd", MESSAGE_POLL_VOTE_REMOVE: "messagePollVoteRemove", VOICE_CHANNEL_EFFECT_SEND: "voiceChannelEffectSend", VOICE_BROADCAST_SUBSCRIBE: "subscribe", VOICE_BROADCAST_UNSUBSCRIBE: "unsubscribe" }; exports.ShardEvents = { CLOSE: "close", DESTROYED: "destroyed", INVALID_SESSION: "invalidSession", READY: "ready", RESUMED: "resumed", ALL_READY: "allReady" }; exports.PartialTypes = keyMirror(["USER", "CHANNEL", "GUILD_MEMBER", "MESSAGE", "REACTION", "GUILD_SCHEDULED_EVENT"]); exports.WSEvents = keyMirror([ "READY", "RESUMED", "APPLICATION_COMMAND_CREATE", "APPLICATION_COMMAND_DELETE", "APPLICATION_COMMAND_UPDATE", "APPLICATION_COMMAND_PERMISSIONS_UPDATE", "AUTO_MODERATION_ACTION_EXECUTION", "AUTO_MODERATION_RULE_CREATE", "AUTO_MODERATION_RULE_DELETE", "AUTO_MODERATION_RULE_UPDATE", "GUILD_CREATE", "GUILD_DELETE", "GUILD_UPDATE", "INVITE_CREATE", "INVITE_DELETE", "GUILD_MEMBER_ADD", "GUILD_MEMBER_REMOVE", "GUILD_MEMBER_UPDATE", "GUILD_MEMBERS_CHUNK", "GUILD_INTEGRATIONS_UPDATE", "GUILD_ROLE_CREATE", "GUILD_ROLE_DELETE", "GUILD_ROLE_UPDATE", "GUILD_BAN_ADD", "GUILD_BAN_REMOVE", "GUILD_EMOJIS_UPDATE", "CHANNEL_CREATE", "CHANNEL_DELETE", "CHANNEL_UPDATE", "CHANNEL_PINS_UPDATE", "MESSAGE_CREATE", "MESSAGE_DELETE", "MESSAGE_UPDATE", "MESSAGE_DELETE_BULK", "MESSAGE_REACTION_ADD", "MESSAGE_REACTION_REMOVE", "MESSAGE_REACTION_REMOVE_ALL", "MESSAGE_REACTION_REMOVE_EMOJI", "THREAD_CREATE", "THREAD_UPDATE", "THREAD_DELETE", "THREAD_LIST_SYNC", "THREAD_MEMBER_UPDATE", "THREAD_MEMBERS_UPDATE", "USER_UPDATE", "PRESENCE_UPDATE", "TYPING_START", "VOICE_STATE_UPDATE", "VOICE_SERVER_UPDATE", "WEBHOOKS_UPDATE", "STAGE_INSTANCE_CREATE", "STAGE_INSTANCE_UPDATE", "STAGE_INSTANCE_DELETE", "GUILD_STICKERS_UPDATE", "GUILD_SCHEDULED_EVENT_CREATE", "GUILD_SCHEDULED_EVENT_UPDATE", "GUILD_SCHEDULED_EVENT_DELETE", "GUILD_SCHEDULED_EVENT_USER_ADD", "GUILD_SCHEDULED_EVENT_USER_REMOVE", "GUILD_AUDIT_LOG_ENTRY_CREATE" ]); exports.InviteScopes = [ "applications.builds.read", "applications.commands", "applications.entitlements", "applications.store.update", "bot", "connections", "email", "identify", "guilds", "guilds.join", "gdm.join", "webhook.incoming", "role_connections.write" ]; exports.IntegrationExpireBehaviors = createEnum(["REMOVE_ROLE", "KICK"]); exports.MessageTypes = [ "DEFAULT", "RECIPIENT_ADD", "RECIPIENT_REMOVE", "CALL", "CHANNEL_NAME_CHANGE", "CHANNEL_ICON_CHANGE", "CHANNEL_PINNED_MESSAGE", "GUILD_MEMBER_JOIN", "USER_PREMIUM_GUILD_SUBSCRIPTION", "USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1", "USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2", "USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3", "CHANNEL_FOLLOW_ADD", null, "GUILD_DISCOVERY_DISQUALIFIED", "GUILD_DISCOVERY_REQUALIFIED", "GUILD_DISCOVERY_GRACE_PERIOD_INITIAL_WARNING", "GUILD_DISCOVERY_GRACE_PERIOD_FINAL_WARNING", "THREAD_CREATED", "REPLY", "APPLICATION_COMMAND", "THREAD_STARTER_MESSAGE", "GUILD_INVITE_REMINDER", "CONTEXT_MENU_COMMAND", "AUTO_MODERATION_ACTION", "ROLE_SUBSCRIPTION_PURCHASE", "INTERACTION_PREMIUM_UPSELL", "STAGE_START", "STAGE_END", "STAGE_SPEAKER", "STAGE_RAISE_HAND", "STAGE_TOPIC", "GUILD_APPLICATION_PREMIUM_SUBSCRIPTION", null, null, "PREMIUM_REFERRAL", "GUILD_INCIDENT_ALERT_MODE_ENABLED", "GUILD_INCIDENT_ALERT_MODE_DISABLED", "GUILD_INCIDENT_REPORT_RAID", "GUILD_INCIDENT_REPORT_FALSE_ALARM", "GUILD_DEADCHAT_REVIVE_PROMPT", "CUSTOM_GIFT", "GUILD_GAMING_STATS_PROMPT", null, "PURCHASE_NOTIFICATION", null, "POLL_RESULT", "CHANGELOG", "NITRO_NOTIFICATION" ]; exports.MessageReferenceTypes = createEnum([ "DEFAULT", "FORWARD" ]); exports.SweeperKeys = [ "applicationCommands", "autoModerationRules", "bans", "emojis", "invites", "guildMembers", "messages", "presences", "reactions", "stageInstances", "stickers", "threadMembers", "threads", "users", "voiceStates" ]; exports.SystemMessageTypes = exports.MessageTypes.filter((type) => type && !["DEFAULT", "REPLY", "APPLICATION_COMMAND", "CONTEXT_MENU_COMMAND"].includes(type)); exports.ActivityTypes = createEnum(["PLAYING", "STREAMING", "LISTENING", "WATCHING", "CUSTOM", "COMPETING", "HANG"]); exports.ChannelTypes = createEnum([ "GUILD_TEXT", "DM", "GUILD_VOICE", "GROUP_DM", "GUILD_CATEGORY", "GUILD_NEWS", "GUILD_STORE", ...Array(3).fill(null), "GUILD_NEWS_THREAD", "GUILD_PUBLIC_THREAD", "GUILD_PRIVATE_THREAD", "GUILD_STAGE_VOICE", "GUILD_DIRECTORY", "GUILD_FORUM", "GUILD_MEDIA" ]); exports.TextBasedChannelTypes = [ "DM", "GUILD_TEXT", "GUILD_NEWS", "GUILD_NEWS_THREAD", "GUILD_PUBLIC_THREAD", "GUILD_PRIVATE_THREAD", "GUILD_VOICE", "GUILD_STAGE_VOICE" ]; exports.ThreadChannelTypes = ["GUILD_NEWS_THREAD", "GUILD_PUBLIC_THREAD", "GUILD_PRIVATE_THREAD"]; exports.VoiceBasedChannelTypes = ["GUILD_VOICE", "GUILD_STAGE_VOICE"]; exports.ClientApplicationAssetTypes = { SMALL: 1, BIG: 2 }; exports.Colors = { DEFAULT: 0, WHITE: 16777215, AQUA: 1752220, GREEN: 5763719, BLUE: 3447003, YELLOW: 16705372, PURPLE: 10181046, LUMINOUS_VIVID_PINK: 15277667, FUCHSIA: 15418782, GOLD: 15844367, ORANGE: 15105570, RED: 15548997, GREY: 9807270, NAVY: 3426654, DARK_AQUA: 1146986, DARK_GREEN: 2067276, DARK_BLUE: 2123412, DARK_PURPLE: 7419530, DARK_VIVID_PINK: 11342935, DARK_GOLD: 12745742, DARK_ORANGE: 11027200, DARK_RED: 10038562, DARK_GREY: 9936031, DARKER_GREY: 8359053, LIGHT_GREY: 12370112, DARK_NAVY: 2899536, BLURPLE: 5793266, GREYPLE: 10070709, DARK_BUT_NOT_BLACK: 2895667, NOT_QUITE_BLACK: 2303786 }; exports.HolographicStyles = { PRIMARY: 11127295, SECONDARY: 16759788, TERTIARY: 16761760 }; exports.ExplicitContentFilterLevels = createEnum(["DISABLED", "MEMBERS_WITHOUT_ROLES", "ALL_MEMBERS"]); exports.VerificationLevels = createEnum(["NONE", "LOW", "MEDIUM", "HIGH", "VERY_HIGH"]); exports.APIErrors = { UNKNOWN_ACCOUNT: 10001, UNKNOWN_APPLICATION: 10002, UNKNOWN_CHANNEL: 10003, UNKNOWN_GUILD: 10004, UNKNOWN_INTEGRATION: 10005, UNKNOWN_INVITE: 10006, UNKNOWN_MEMBER: 10007, UNKNOWN_MESSAGE: 10008, UNKNOWN_OVERWRITE: 10009, UNKNOWN_PROVIDER: 10010, UNKNOWN_ROLE: 10011, UNKNOWN_TOKEN: 10012, UNKNOWN_USER: 10013, UNKNOWN_EMOJI: 10014, UNKNOWN_WEBHOOK: 10015, UNKNOWN_WEBHOOK_SERVICE: 10016, UNKNOWN_SESSION: 10020, UNKNOWN_BAN: 10026, UNKNOWN_SKU: 10027, UNKNOWN_STORE_LISTING: 10028, UNKNOWN_ENTITLEMENT: 10029, UNKNOWN_BUILD: 10030, UNKNOWN_LOBBY: 10031, UNKNOWN_BRANCH: 10032, UNKNOWN_STORE_DIRECTORY_LAYOUT: 10033, UNKNOWN_REDISTRIBUTABLE: 10036, UNKNOWN_GIFT_CODE: 10038, UNKNOWN_STREAM: 10049, UNKNOWN_PREMIUM_SERVER_SUBSCRIBE_COOLDOWN: 10050, UNKNOWN_GUILD_TEMPLATE: 10057, UNKNOWN_DISCOVERABLE_SERVER_CATEGORY: 10059, UNKNOWN_STICKER: 10060, UNKNOWN_INTERACTION: 10062, UNKNOWN_APPLICATION_COMMAND: 10063, UNKNOWN_APPLICATION_COMMAND_PERMISSIONS: 10066, UNKNOWN_STAGE_INSTANCE: 10067, UNKNOWN_GUILD_MEMBER_VERIFICATION_FORM: 10068, UNKNOWN_GUILD_WELCOME_SCREEN: 10069, UNKNOWN_GUILD_SCHEDULED_EVENT: 10070, UNKNOWN_GUILD_SCHEDULED_EVENT_USER: 10071, BOT_PROHIBITED_ENDPOINT: 20001, BOT_ONLY_ENDPOINT: 20002, CANNOT_SEND_EXPLICIT_CONTENT: 20009, NOT_AUTHORIZED: 20012, SLOWMODE_RATE_LIMIT: 20016, ACCOUNT_OWNER_ONLY: 20018, ANNOUNCEMENT_EDIT_LIMIT_EXCEEDED: 20022, CHANNEL_HIT_WRITE_RATELIMIT: 20028, SERVER_HIT_WRITE_RATELIMIT: 20029, CONTENT_NOT_ALLOWED: 20031, GUILD_PREMIUM_LEVEL_TOO_LOW: 20035, MAXIMUM_GUILDS: 30001, MAXIMUM_FRIENDS: 30002, MAXIMUM_PINS: 30003, MAXIMUM_RECIPIENTS: 30004, MAXIMUM_ROLES: 30005, MAXIMUM_WEBHOOKS: 30007, MAXIMUM_EMOJIS: 30008, MAXIMUM_REACTIONS: 30010, MAXIMUM_CHANNELS: 30013, MAXIMUM_ATTACHMENTS: 30015, MAXIMUM_INVITES: 30016, MAXIMUM_ANIMATED_EMOJIS: 30018, MAXIMUM_SERVER_MEMBERS: 30019, MAXIMUM_NUMBER_OF_SERVER_CATEGORIES: 30030, GUILD_ALREADY_HAS_TEMPLATE: 30031, MAXIMUM_THREAD_PARTICIPANTS: 30033, MAXIMUM_NON_GUILD_MEMBERS_BANS: 30035, MAXIMUM_BAN_FETCHES: 30037, MAXIMUM_NUMBER_OF_UNCOMPLETED_GUILD_SCHEDULED_EVENTS_REACHED: 30038, MAXIMUM_NUMBER_OF_STICKERS_REACHED: 30039, MAXIMUM_PRUNE_REQUESTS: 30040, MAXIMUM_GUILD_WIDGET_SETTINGS_UPDATE: 30042, MAXIMUM_NUMBER_OF_PREMIUM_EMOJIS: 30056, UNAUTHORIZED: 40001, ACCOUNT_VERIFICATION_REQUIRED: 40002, DIRECT_MESSAGES_TOO_FAST: 40003, REQUEST_ENTITY_TOO_LARGE: 40005, FEATURE_TEMPORARILY_DISABLED: 40006, USER_BANNED: 40007, TARGET_USER_NOT_CONNECTED_TO_VOICE: 40032, ALREADY_CROSSPOSTED: 40033, MISSING_ACCESS: 50001, INVALID_ACCOUNT_TYPE: 50002, CANNOT_EXECUTE_ON_DM: 50003, EMBED_DISABLED: 50004, CANNOT_EDIT_MESSAGE_BY_OTHER: 50005, CANNOT_SEND_EMPTY_MESSAGE: 50006, CANNOT_MESSAGE_USER: 50007, CANNOT_SEND_MESSAGES_IN_VOICE_CHANNEL: 50008, CHANNEL_VERIFICATION_LEVEL_TOO_HIGH: 50009, OAUTH2_APPLICATION_BOT_ABSENT: 50010, MAXIMUM_OAUTH2_APPLICATIONS: 50011, INVALID_OAUTH_STATE: 50012, MISSING_PERMISSIONS: 50013, INVALID_AUTHENTICATION_TOKEN: 50014, NOTE_TOO_LONG: 50015, INVALID_BULK_DELETE_QUANTITY: 50016, CANNOT_PIN_MESSAGE_IN_OTHER_CHANNEL: 50019, INVALID_OR_TAKEN_INVITE_CODE: 50020, CANNOT_EXECUTE_ON_SYSTEM_MESSAGE: 50021, CANNOT_EXECUTE_ON_CHANNEL_TYPE: 50024, INVALID_OAUTH_TOKEN: 50025, MISSING_OAUTH_SCOPE: 50026, INVALID_WEBHOOK_TOKEN: 50027, INVALID_ROLE: 50028, INVALID_RECIPIENTS: 50033, BULK_DELETE_MESSAGE_TOO_OLD: 50034, INVALID_FORM_BODY: 50035, INVITE_ACCEPTED_TO_GUILD_NOT_CONTAINING_BOT: 50036, INVALID_API_VERSION: 50041, FILE_UPLOADED_EXCEEDS_MAXIMUM_SIZE: 50045, INVALID_FILE_UPLOADED: 50046, CANNOT_SELF_REDEEM_GIFT: 50054, INVALID_GUILD: 50055, INVALID_MESSAGE_TYPE: 50068, PAYMENT_SOURCE_REQUIRED: 50070, CANNOT_DELETE_COMMUNITY_REQUIRED_CHANNEL: 50074, INVALID_STICKER_SENT: 50081, INVALID_OPERATION_ON_ARCHIVED_THREAD: 50083, INVALID_THREAD_NOTIFICATION_SETTINGS: 50084, PARAMETER_EARLIER_THAN_CREATION: 50085, GUILD_NOT_AVAILABLE_IN_LOCATION: 50095, GUILD_MONETIZATION_REQUIRED: 50097, INSUFFICIENT_BOOSTS: 50101, INVALID_JSON: 50109, CANNOT_MIX_SUBSCRIPTION_AND_NON_SUBSCRIPTION_ROLES_FOR_EMOJI: 50144, CANNOT_CONVERT_PREMIUM_EMOJI_TO_NORMAL_EMOJI: 50145, VOICE_MESSAGES_DO_NOT_SUPPORT_ADDITIONAL_CONTENT: 50159, VOICE_MESSAGES_MUST_HAVE_A_SINGLE_AUDIO_ATTACHMENT: 50160, VOICE_MESSAGES_MUST_HAVE_SUPPORTING_METADATA: 50161, VOICE_MESSAGES_CANNOT_BE_EDITED: 50162, YOU_CANNOT_SEND_VOICE_MESSAGES_IN_THIS_CHANNEL: 50173, TWO_FACTOR_REQUIRED: 60003, NO_USERS_WITH_DISCORDTAG_EXIST: 80004, REACTION_BLOCKED: 90001, RESOURCE_OVERLOADED: 130000, STAGE_ALREADY_OPEN: 150006, CANNOT_REPLY_WITHOUT_READ_MESSAGE_HISTORY_PERMISSION: 160002, MESSAGE_ALREADY_HAS_THREAD: 160004, THREAD_LOCKED: 160005, MAXIMUM_ACTIVE_THREADS: 160006, MAXIMUM_ACTIVE_ANNOUNCEMENT_THREADS: 160007, INVALID_JSON_FOR_UPLOADED_LOTTIE_FILE: 170001, UPLOADED_LOTTIES_CANNOT_CONTAIN_RASTERIZED_IMAGES: 170002, STICKER_MAXIMUM_FRAMERATE_EXCEEDED: 170003, STICKER_FRAME_COUNT_EXCEEDS_MAXIMUM_OF_1000_FRAMES: 170004, LOTTIE_ANIMATION_MAXIMUM_DIMENSIONS_EXCEEDED: 170005, STICKER_FRAME_RATE_IS_TOO_SMALL_OR_TOO_LARGE: 170006, STICKER_ANIMATION_DURATION_EXCEEDS_MAXIMUM_OF_5_SECONDS: 170007, CANNOT_UPDATE_A_FINISHED_EVENT: 180000, FAILED_TO_CREATE_STAGE_NEEDED_FOR_STAGE_EVENT: 180002 }; exports.DefaultMessageNotificationLevels = createEnum(["ALL_MESSAGES", "ONLY_MENTIONS"]); exports.MembershipStates = createEnum([null, "INVITED", "ACCEPTED"]); exports.WebhookTypes = createEnum([null, "Incoming", "Channel Follower", "Application"]); exports.StickerTypes = createEnum([null, "STANDARD", "GUILD"]); exports.StickerFormatTypes = createEnum([null, "PNG", "APNG", "LOTTIE", "GIF"]); exports.OverwriteTypes = createEnum(["role", "member"]); exports.ApplicationCommandTypes = createEnum([null, "CHAT_INPUT", "USER", "MESSAGE"]); exports.ApplicationCommandOptionTypes = createEnum([ null, "SUB_COMMAND", "SUB_COMMAND_GROUP", "STRING", "INTEGER", "BOOLEAN", "USER", "CHANNEL", "ROLE", "MENTIONABLE", "NUMBER", "ATTACHMENT" ]); exports.ApplicationCommandPermissionTypes = createEnum([null, "ROLE", "USER"]); exports.ApplicationRoleConnectionMetadataTypes = createEnum([ null, "INTEGER_LESS_THAN_OR_EQUAL", "INTEGER_GREATER_THAN_OR_EQUAL", "INTEGER_EQUAL", "INTEGER_NOT_EQUAL", "DATATIME_LESS_THAN_OR_EQUAL", "DATATIME_GREATER_THAN_OR_EQUAL", "BOOLEAN_EQUAL", "BOOLEAN_NOT_EQUAL" ]); exports.AutoModerationRuleTriggerTypes = createEnum([null, "KEYWORD", null, "SPAM", "KEYWORD_PRESET", "MENTION_SPAM"]); exports.AutoModerationRuleKeywordPresetTypes = createEnum([null, "PROFANITY", "SEXUAL_CONTENT", "SLURS"]); exports.AutoModerationActionTypes = createEnum([null, "BLOCK_MESSAGE", "SEND_ALERT_MESSAGE", "TIMEOUT"]); exports.AutoModerationRuleEventTypes = createEnum([null, "MESSAGE_SEND"]); exports.InteractionTypes = createEnum([ null, "PING", "APPLICATION_COMMAND", "MESSAGE_COMPONENT", "APPLICATION_COMMAND_AUTOCOMPLETE", "MODAL_SUBMIT" ]); exports.InteractionResponseTypes = createEnum([ null, "PONG", null, null, "CHANNEL_MESSAGE_WITH_SOURCE", "DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE", "DEFERRED_MESSAGE_UPDATE", "UPDATE_MESSAGE", "APPLICATION_COMMAND_AUTOCOMPLETE_RESULT", "MODAL" ]); exports.MessageComponentTypes = createEnum([ null, "ACTION_ROW", "BUTTON", "STRING_SELECT", "TEXT_INPUT", "USER_SELECT", "ROLE_SELECT", "MENTIONABLE_SELECT", "CHANNEL_SELECT", "SECTION", "TEXT_DISPLAY", "THUMBNAIL", "MEDIA_GALLERY", "FILE", "SEPARATOR", null, null, "CONTAINER" ]); exports.SelectMenuComponentTypes = createEnum([ ...new Array(3).fill(null), "STRING_MENU", null, "USER_SELECT", "ROLE_SELECT", "MENTIONABLE_SELECT", "CHANNEL_SELECT" ]); exports.MessageButtonStyles = createEnum([null, "PRIMARY", "SECONDARY", "SUCCESS", "DANGER", "LINK"]); exports.MFALevels = createEnum(["NONE", "ELEVATED"]); exports.NSFWLevels = createEnum(["DEFAULT", "EXPLICIT", "SAFE", "AGE_RESTRICTED"]); exports.PrivacyLevels = createEnum([null, "PUBLIC", "GUILD_ONLY"]); exports.TextInputStyles = createEnum([null, "SHORT", "PARAGRAPH"]); exports.GuildScheduledEventPrivacyLevels = createEnum([null, null, "GUILD_ONLY"]); exports.PremiumTiers = createEnum(["NONE", "TIER_1", "TIER_2", "TIER_3"]); exports.GuildScheduledEventStatuses = createEnum([null, "SCHEDULED", "ACTIVE", "COMPLETED", "CANCELED"]); exports.GuildScheduledEventEntityTypes = createEnum([null, "STAGE_INSTANCE", "VOICE", "EXTERNAL"]); exports.VideoQualityModes = createEnum([null, "AUTO", "FULL"]); exports.ReactionTypes = createEnum(["NORMAL", "BURST"]); exports.SortOrderTypes = createEnum([null, "LATEST_ACTIVITY", "CREATION_DATE"]); exports.ForumLayoutTypes = createEnum(["NOT_SET", "LIST_VIEW", "GALLERY_VIEW"]); exports.PollLayoutTypes = createEnum([null, "DEFAULT", "IMAGE_ONLY_ANSWERS"]); exports.RelationshipTypes = createEnum([ "NONE", "FRIEND", "BLOCKED", "PENDING_INCOMING", "PENDING_OUTGOING", "IMPLICIT" ]); exports.SeparatorSpacingSizes = createEnum([null, "SMALL", "LARGE"]); exports._cleanupSymbol = Symbol("djsCleanup"); }); // node_modules/discord.js-selfbot-v13/src/util/Sweepers.js var require_Sweepers = __commonJS((exports, module) => { var { setInterval: setInterval2 } = import.meta.require("timers"); var { Events, ThreadChannelTypes, SweeperKeys } = require_Constants(); var { TypeError: TypeError2 } = require_DJSError(); class Sweepers { constructor(client, options) { Object.defineProperty(this, "client", { value: client }); this.options = options; this.intervals = Object.fromEntries(SweeperKeys.map((key) => [key, null])); for (const key of SweeperKeys) { if (!(key in options)) continue; this._validateProperties(key); const clonedOptions = { ...this.options[key] }; if (!("filter" in clonedOptions)) { switch (key) { case "invites": clonedOptions.filter = this.constructor.expiredInviteSweepFilter(clonedOptions.lifetime); break; case "messages": clonedOptions.filter = this.constructor.outdatedMessageSweepFilter(clonedOptions.lifetime); break; case "threads": clonedOptions.filter = this.constructor.archivedThreadSweepFilter(clonedOptions.lifetime); } } this._initInterval(key, `sweep${key[0].toUpperCase()}${key.slice(1)}`, clonedOptions); } } sweepApplicationCommands(filter) { const { guilds, items: guildCommands } = this._sweepGuildDirectProp("commands", filter, { emit: false }); const globalCommands = this.client.application?.commands.cache.sweep(filter) ?? 0; this.client.emit(Events.CACHE_SWEEP, `Swept ${globalCommands} global application commands and ${guildCommands} guild commands in ${guilds} guilds.`); return guildCommands + globalCommands; } sweepAutoModerationRules(filter) { return this._sweepGuildDirectProp("autoModerationRules", filter).items; } sweepBans(filter) { return this._sweepGuildDirectProp("bans", filter).items; } sweepEmojis(filter) { return this._sweepGuildDirectProp("emojis", filter).items; } sweepInvites(filter) { return this._sweepGuildDirectProp("invites", filter).items; } sweepGuildMembers(filter) { return this._sweepGuildDirectProp("members", filter, { outputName: "guild members" }).items; } sweepMessages(filter) { if (typeof filter !== "function") { throw new TypeError2("INVALID_TYPE", "filter", "function"); } let channels = 0; let messages = 0; for (const channel of this.client.channels.cache.values()) { if (!channel.isText()) continue; channels++; messages += channel.messages.cache.sweep(filter); } this.client.emit(Events.CACHE_SWEEP, `Swept ${messages} messages in ${channels} text-based channels.`); return messages; } sweepPresences(filter) { return this._sweepGuildDirectProp("presences", filter).items; } sweepReactions(filter) { if (typeof filter !== "function") { throw new TypeError2("INVALID_TYPE", "filter", "function"); } let channels = 0; let messages = 0; let reactions = 0; for (const channel of this.client.channels.cache.values()) { if (!channel.isText()) continue; channels++; for (const message of channel.messages.cache.values()) { messages++; reactions += message.reactions.cache.sweep(filter); } } this.client.emit(Events.CACHE_SWEEP, `Swept ${reactions} reactions on ${messages} messages in ${channels} text-based channels.`); return reactions; } sweepStageInstances(filter) { return this._sweepGuildDirectProp("stageInstances", filter, { outputName: "stage instances" }).items; } sweepStickers(filter) { return this._sweepGuildDirectProp("stickers", filter).items; } sweepThreadMembers(filter) { if (typeof filter !== "function") { throw new TypeError2("INVALID_TYPE", "filter", "function"); } let threads = 0; let members = 0; for (const channel of this.client.channels.cache.values()) { if (!ThreadChannelTypes.includes(channel.type)) continue; threads++; members += channel.members.cache.sweep(filter); } this.client.emit(Events.CACHE_SWEEP, `Swept ${members} thread members in ${threads} threads.`); return members; } sweepThreads(filter) { if (typeof filter !== "function") { throw new TypeError2("INVALID_TYPE", "filter", "function"); } let threads = 0; for (const [key, val] of this.client.channels.cache.entries()) { if (!ThreadChannelTypes.includes(val.type)) continue; if (filter(val, key, this.client.channels.cache)) { threads++; this.client.channels._remove(key); } } this.client.emit(Events.CACHE_SWEEP, `Swept ${threads} threads.`); return threads; } sweepUsers(filter) { if (typeof filter !== "function") { throw new TypeError2("INVALID_TYPE", "filter", "function"); } const users = this.client.users.cache.sweep(filter); this.client.emit(Events.CACHE_SWEEP, `Swept ${users} users.`); return users; } sweepVoiceStates(filter) { return this._sweepGuildDirectProp("voiceStates", filter, { outputName: "voice states" }).items; } destroy() { for (const key of SweeperKeys) { if (this.intervals[key]) clearInterval(this.intervals[key]); } } static filterByLifetime({ lifetime = 14400, getComparisonTimestamp = (e) => e?.createdTimestamp, excludeFromSweep = () => false } = {}) { if (typeof lifetime !== "number") { throw new TypeError2("INVALID_TYPE", "lifetime", "number"); } if (typeof getComparisonTimestamp !== "function") { throw new TypeError2("INVALID_TYPE", "getComparisonTimestamp", "function"); } if (typeof excludeFromSweep !== "function") { throw new TypeError2("INVALID_TYPE", "excludeFromSweep", "function"); } return () => { if (lifetime <= 0) return null; const lifetimeMs = lifetime * 1000; const now = Date.now(); return (entry, key, coll) => { if (excludeFromSweep(entry, key, coll)) { return false; } const comparisonTimestamp = getComparisonTimestamp(entry, key, coll); if (!comparisonTimestamp || typeof comparisonTimestamp !== "number") return false; return now - comparisonTimestamp > lifetimeMs; }; }; } static archivedThreadSweepFilter(lifetime = 14400) { return this.filterByLifetime({ lifetime, getComparisonTimestamp: (e) => e.archiveTimestamp, excludeFromSweep: (e) => !e.archived }); } static expiredInviteSweepFilter(lifetime = 14400) { return this.filterByLifetime({ lifetime, getComparisonTimestamp: (i) => i.expiresTimestamp }); } static outdatedMessageSweepFilter(lifetime = 3600) { return this.filterByLifetime({ lifetime, getComparisonTimestamp: (m) => m.editedTimestamp ?? m.createdTimestamp }); } _sweepGuildDirectProp(key, filter, { emit = true, outputName } = {}) { if (typeof filter !== "function") { throw new TypeError2("INVALID_TYPE", "filter", "function"); } let guilds = 0; let items = 0; for (const guild of this.client.guilds.cache.values()) { const { cache } = guild[key]; guilds++; items += cache.sweep(filter); } if (emit) { this.client.emit(Events.CACHE_SWEEP, `Swept ${items} ${outputName ?? key} in ${guilds} guilds.`); } return { guilds, items }; } _validateProperties(key) { const props = this.options[key]; if (typeof props !== "object") { throw new TypeError2("INVALID_TYPE", `sweepers.${key}`, "object", true); } if (typeof props.interval !== "number") { throw new TypeError2("INVALID_TYPE", `sweepers.${key}.interval`, "number"); } if (["invites", "messages", "threads"].includes(key) && !("filter" in props)) { if (typeof props.lifetime !== "number") { throw new TypeError2("INVALID_TYPE", `sweepers.${key}.lifetime`, "number"); } return; } if (typeof props.filter !== "function") { throw new TypeError2("INVALID_TYPE", `sweepers.${key}.filter`, "function"); } } _initInterval(intervalKey, sweepKey, opts) { if (opts.interval <= 0 || opts.interval === Infinity) return; this.intervals[intervalKey] = setInterval2(() => { const sweepFn = opts.filter(); if (sweepFn === null) return; if (typeof sweepFn !== "function") throw new TypeError2("SWEEP_FILTER_RETURN"); this[sweepKey](sweepFn); }, opts.interval * 1000).unref(); } } module.exports = Sweepers; }); // node_modules/discord.js-selfbot-v13/src/structures/Base.js var require_Base = __commonJS((exports, module) => { var Util = require_Util(); class Base { constructor(client) { Object.defineProperty(this, "client", { value: client }); } _clone() { return Object.assign(Object.create(this), this); } _patch(data) { return data; } _update(data) { const clone = this._clone(); this._patch(data); return clone; } toJSON(...props) { return Util.flatten(this, ...props); } valueOf() { return this.id; } } module.exports = Base; }); // node_modules/discord.js-selfbot-v13/src/util/BitField.js var require_BitField = __commonJS((exports, module) => { var { RangeError: RangeError2 } = require_errors(); class BitField { constructor(bits = this.constructor.defaultBit) { this.bitfield = this.constructor.resolve(bits); } any(bit) { return (this.bitfield & this.constructor.resolve(bit)) !== this.constructor.defaultBit; } equals(bit) { return this.bitfield === this.constructor.resolve(bit); } has(bit) { bit = this.constructor.resolve(bit); return (this.bitfield & bit) === bit; } missing(bits, ...hasParams) { return new this.constructor(bits).remove(this).toArray(...hasParams); } freeze() { return Object.freeze(this); } add(...bits) { let total = this.constructor.defaultBit; for (const bit of bits) { total |= this.constructor.resolve(bit); } if (Object.isFrozen(this)) return new this.constructor(this.bitfield | total); this.bitfield |= total; return this; } remove(...bits) { let total = this.constructor.defaultBit; for (const bit of bits) { total |= this.constructor.resolve(bit); } if (Object.isFrozen(this)) return new this.constructor(this.bitfield & ~total); this.bitfield &= ~total; return this; } serialize(...hasParams) { const serialized = {}; for (const [flag, bit] of Object.entries(this.constructor.FLAGS)) serialized[flag] = this.has(bit, ...hasParams); return serialized; } toArray(...hasParams) { return Object.keys(this.constructor.FLAGS).filter((bit) => this.has(bit, ...hasParams)); } toJSON() { return typeof this.bitfield === "number" ? this.bitfield : this.bitfield.toString(); } valueOf() { return this.bitfield; } *[Symbol.iterator]() { yield* this.toArray(); } static resolve(bit) { const { defaultBit } = this; if (typeof defaultBit === typeof bit && bit >= defaultBit) return bit; if (bit instanceof BitField) return bit.bitfield; if (Array.isArray(bit)) return bit.map((p) => this.resolve(p)).reduce((prev, p) => prev | p, defaultBit); if (typeof bit === "string") { if (!isNaN(bit)) return typeof defaultBit === "bigint" ? BigInt(bit) : Number(bit); if (this.FLAGS[bit] !== undefined) return this.FLAGS[bit]; } throw new RangeError2("BITFIELD_INVALID", bit); } } BitField.FLAGS = {}; BitField.defaultBit = 0; module.exports = BitField; }); // node_modules/discord.js-selfbot-v13/src/util/ChannelFlags.js var require_ChannelFlags = __commonJS((exports, module) => { var BitField = require_BitField(); class ChannelFlags extends BitField { } ChannelFlags.FLAGS = { PINNED: 1 << 1, REQUIRE_TAG: 1 << 4 }; module.exports = ChannelFlags; }); // node_modules/discord.js-selfbot-v13/src/util/SnowflakeUtil.js var require_SnowflakeUtil = __commonJS((exports, module) => { var EPOCH = 1420070400000; var INCREMENT = BigInt(0); class SnowflakeUtil extends null { static generate(timestamp = Date.now()) { if (timestamp instanceof Date) timestamp = timestamp.getTime(); if (typeof timestamp !== "number" || isNaN(timestamp)) { throw new TypeError(`"timestamp" argument must be a number (received ${isNaN(timestamp) ? "NaN" : typeof timestamp})`); } if (INCREMENT >= 4095n) INCREMENT = BigInt(0); return (BigInt(timestamp - EPOCH) << 22n | 1n << 17n | INCREMENT++).toString(); } static deconstruct(snowflake) { const bigIntSnowflake = BigInt(snowflake); return { timestamp: Number(bigIntSnowflake >> 22n) + EPOCH, get date() { return new Date(this.timestamp); }, workerId: Number(bigIntSnowflake >> 17n & 0b11111n), processId: Number(bigIntSnowflake >> 12n & 0b11111n), increment: Number(bigIntSnowflake & 0b111111111111n), binary: bigIntSnowflake.toString(2).padStart(64, "0") }; } static timestampFrom(snowflake) { return Number(BigInt(snowflake) >> 22n) + EPOCH; } static get EPOCH() { return EPOCH; } } module.exports = SnowflakeUtil; }); // node_modules/discord.js-selfbot-v13/src/structures/CategoryChannel.js var require_CategoryChannel = __commonJS((exports, module) => { var GuildChannel = require_GuildChannel(); class CategoryChannel extends GuildChannel { get children() { return this.guild.channels.cache.filter((c) => c.parentId === this.id); } createChannel(name, options) { return this.guild.channels.create(name, { ...options, parent: this.id }); } } module.exports = CategoryChannel; }); // node_modules/discord.js-selfbot-v13/src/structures/interfaces/Collector.js var require_Collector = __commonJS((exports, module) => { var EventEmitter = import.meta.require("events"); var { setTimeout: setTimeout2 } = import.meta.require("timers"); var { Collection } = require_dist(); var { TypeError: TypeError2 } = require_errors(); var Util = require_Util(); class Collector extends EventEmitter { constructor(client, options = {}) { super(); Object.defineProperty(this, "client", { value: client }); this.filter = options.filter ?? (() => true); this.options = options; this.collected = new Collection; this.ended = false; this._timeout = null; this._idletimeout = null; if (typeof this.filter !== "function") { throw new TypeError2("INVALID_TYPE", "options.filter", "function"); } this.handleCollect = this.handleCollect.bind(this); this.handleDispose = this.handleDispose.bind(this); if (options.time) this._timeout = setTimeout2(() => this.stop("time"), options.time).unref(); if (options.idle) this._idletimeout = setTimeout2(() => this.stop("idle"), options.idle).unref(); } async handleCollect(...args) { const collect = await this.collect(...args); if (collect && await this.filter(...args, this.collected)) { this.collected.set(collect, args[0]); this.emit("collect", ...args); if (this._idletimeout) { clearTimeout(this._idletimeout); this._idletimeout = setTimeout2(() => this.stop("idle"), this.options.idle).unref(); } } this.checkEnd(); } async handleDispose(...args) { if (!this.options.dispose) return; const dispose = this.dispose(...args); if (!dispose || !await this.filter(...args) || !this.collected.has(dispose)) return; this.collected.delete(dispose); this.emit("dispose", ...args); this.checkEnd(); } get next() { return new Promise((resolve, reject) => { if (this.ended) { reject(this.collected); return; } const cleanup = () => { this.removeListener("collect", onCollect); this.removeListener("end", onEnd); }; const onCollect = (item) => { cleanup(); resolve(item); }; const onEnd = () => { cleanup(); reject(this.collected); }; this.on("collect", onCollect); this.on("end", onEnd); }); } stop(reason = "user") { if (this.ended) return; if (this._timeout) { clearTimeout(this._timeout); this._timeout = null; } if (this._idletimeout) { clearTimeout(this._idletimeout); this._idletimeout = null; } this.ended = true; this.emit("end", this.collected, reason); } resetTimer({ time, idle } = {}) { if (this._timeout) { clearTimeout(this._timeout); this._timeout = setTimeout2(() => this.stop("time"), time ?? this.options.time).unref(); } if (this._idletimeout) { clearTimeout(this._idletimeout); this._idletimeout = setTimeout2(() => this.stop("idle"), idle ?? this.options.idle).unref(); } } checkEnd() { const reason = this.endReason; if (reason) this.stop(reason); return Boolean(reason); } async* [Symbol.asyncIterator]() { const queue = []; const onCollect = (item) => queue.push(item); this.on("collect", onCollect); try { while (queue.length || !this.ended) { if (queue.length) { yield queue.shift(); } else { await new Promise((resolve) => { const tick = () => { this.removeListener("collect", tick); this.removeListener("end", tick); return resolve(); }; this.on("collect", tick); this.on("end", tick); }); } } } finally { this.removeListener("collect", onCollect); } } toJSON() { return Util.flatten(this); } get endReason() { } collect() { } dispose() { } } module.exports = Collector; }); // node_modules/discord.js-selfbot-v13/src/structures/MessageCollector.js var require_MessageCollector = __commonJS((exports, module) => { var Collector = require_Collector(); var { Events } = require_Constants(); class MessageCollector extends Collector { constructor(channel, options = {}) { super(channel.client, options); this.channel = channel; this.received = 0; const bulkDeleteListener = (messages) => { for (const message of messages.values()) this.handleDispose(message); }; this._handleChannelDeletion = this._handleChannelDeletion.bind(this); this._handleThreadDeletion = this._handleThreadDeletion.bind(this); this._handleGuildDeletion = this._handleGuildDeletion.bind(this); this.client.incrementMaxListeners(); this.client.on(Events.MESSAGE_CREATE, this.handleCollect); this.client.on(Events.MESSAGE_DELETE, this.handleDispose); this.client.on(Events.MESSAGE_BULK_DELETE, bulkDeleteListener); this.client.on(Events.CHANNEL_DELETE, this._handleChannelDeletion); this.client.on(Events.THREAD_DELETE, this._handleThreadDeletion); this.client.on(Events.GUILD_DELETE, this._handleGuildDeletion); this.once("end", () => { this.client.removeListener(Events.MESSAGE_CREATE, this.handleCollect); this.client.removeListener(Events.MESSAGE_DELETE, this.handleDispose); this.client.removeListener(Events.MESSAGE_BULK_DELETE, bulkDeleteListener); this.client.removeListener(Events.CHANNEL_DELETE, this._handleChannelDeletion); this.client.removeListener(Events.THREAD_DELETE, this._handleThreadDeletion); this.client.removeListener(Events.GUILD_DELETE, this._handleGuildDeletion); this.client.decrementMaxListeners(); }); } collect(message) { if (message.channelId !== this.channel.id) return null; this.received++; return message.id; } dispose(message) { return message.channelId === this.channel.id ? message.id : null; } get endReason() { if (this.options.max && this.collected.size >= this.options.max) return "limit"; if (this.options.maxProcessed && this.received === this.options.maxProcessed) return "processedLimit"; return null; } _handleChannelDeletion(channel) { if (channel.id === this.channel.id || channel.id === this.channel.parentId) { this.stop("channelDelete"); } } _handleThreadDeletion(thread) { if (thread.id === this.channel.id) { this.stop("threadDelete"); } } _handleGuildDeletion(guild) { if (guild.id === this.channel.guild?.id) { this.stop("guildDelete"); } } } module.exports = MessageCollector; }); // node_modules/discord.js-selfbot-v13/src/structures/MessageActionRow.js var require_MessageActionRow = __commonJS((exports, module) => { var BaseMessageComponent = require_BaseMessageComponent(); var { MessageComponentTypes } = require_Constants(); class MessageActionRow extends BaseMessageComponent { constructor(data = {}, client = null) { super({ type: "ACTION_ROW" }); this.components = data.components?.map((c) => BaseMessageComponent.create(c, client)) ?? []; super.setup(data); } addComponents(...components) { this.components.push(...components.flat(Infinity).map((c) => BaseMessageComponent.create(c))); return this; } setComponents(...components) { this.spliceComponents(0, this.components.length, components); return this; } spliceComponents(index, deleteCount, ...components) { this.components.splice(index, deleteCount, ...components.flat(Infinity).map((c) => BaseMessageComponent.create(c))); return this; } toJSON() { return { components: this.components.map((c) => c.toJSON()), type: MessageComponentTypes[this.type] }; } } module.exports = MessageActionRow; }); // node_modules/discord.js-selfbot-v13/src/structures/MessageButton.js var require_MessageButton = __commonJS((exports, module) => { var BaseMessageComponent = require_BaseMessageComponent(); var { RangeError: RangeError2 } = require_errors(); var { MessageButtonStyles, MessageComponentTypes } = require_Constants(); var Util = require_Util(); class MessageButton extends BaseMessageComponent { constructor(data = {}) { super({ type: "BUTTON" }); this.setup(data); } setup(data) { super.setup(data); this.label = data.label ?? null; this.customId = data.custom_id ?? data.customId ?? null; this.style = data.style ? MessageButton.resolveStyle(data.style) : null; this.emoji = data.emoji ? Util.resolvePartialEmoji(data.emoji) : null; this.url = data.url ?? null; this.disabled = data.disabled ?? false; } setCustomId(customId) { this.customId = Util.verifyString(customId, RangeError2, "BUTTON_CUSTOM_ID"); return this; } setDisabled(disabled = true) { this.disabled = disabled; return this; } setEmoji(emoji) { this.emoji = Util.resolvePartialEmoji(emoji); return this; } setLabel(label) { this.label = Util.verifyString(label, RangeError2, "BUTTON_LABEL"); return this; } setStyle(style) { this.style = MessageButton.resolveStyle(style); return this; } setURL(url) { this.url = Util.verifyString(url, RangeError2, "BUTTON_URL"); return this; } toJSON() { return { custom_id: this.customId, disabled: this.disabled, emoji: this.emoji, label: this.label, style: MessageButtonStyles[this.style], type: MessageComponentTypes[this.type], url: this.url }; } static resolveStyle(style) { return typeof style === "string" ? style : MessageButtonStyles[style]; } } module.exports = MessageButton; }); // node_modules/discord.js-selfbot-v13/src/structures/MessageSelectMenu.js var require_MessageSelectMenu = __commonJS((exports, module) => { var BaseMessageComponent = require_BaseMessageComponent(); var { ChannelTypes, MessageComponentTypes } = require_Constants(); var Util = require_Util(); class MessageSelectMenu extends BaseMessageComponent { constructor(data = {}) { super({ type: BaseMessageComponent.resolveType(data.type) ?? "STRING_SELECT" }); this.setup(data); } setup(data) { super.setup(data); this.customId = data.custom_id ?? data.customId ?? null; this.placeholder = data.placeholder ?? null; this.minValues = data.min_values ?? data.minValues ?? null; this.maxValues = data.max_values ?? data.maxValues ?? null; this.options = this.constructor.normalizeOptions(data.options ?? []); this.disabled = data.disabled ?? false; this.channelTypes = data.channel_types?.map((channelType) => typeof channelType === "string" ? channelType : ChannelTypes[channelType]) ?? []; } toJSON() { return { channel_types: this.channelTypes.map((type) => typeof type === "string" ? ChannelTypes[type] : type), custom_id: this.customId, disabled: this.disabled, placeholder: this.placeholder, min_values: this.minValues, max_values: this.maxValues ?? (this.minValues ? this.options.length : undefined), options: this.options, type: typeof this.type === "string" ? MessageComponentTypes[this.type] : this.type }; } static normalizeOption(option) { let { label, value, description, emoji } = option; label = Util.verifyString(label, RangeError, "SELECT_OPTION_LABEL"); value = Util.verifyString(value, RangeError, "SELECT_OPTION_VALUE"); emoji = emoji ? Util.resolvePartialEmoji(emoji) : null; description = description ? Util.verifyString(description, RangeError, "SELECT_OPTION_DESCRIPTION", true) : null; return { label, value, description, emoji, default: option.default ?? false }; } static normalizeOptions(...options) { return options.flat(Infinity).map((option) => this.normalizeOption(option)); } } module.exports = MessageSelectMenu; }); // node_modules/discord.js-selfbot-v13/src/structures/TextInputComponent.js var require_TextInputComponent = __commonJS((exports, module) => { var BaseMessageComponent = require_BaseMessageComponent(); var { RangeError: RangeError2 } = require_errors(); var { TextInputStyles, MessageComponentTypes } = require_Constants(); var Util = require_Util(); class TextInputComponent extends BaseMessageComponent { constructor(data = {}) { super({ type: "TEXT_INPUT" }); this.setup(data); } setup(data) { super.setup(data); this.customId = data.custom_id ?? data.customId ?? null; this.label = data.label ?? null; this.maxLength = data.max_length ?? data.maxLength ?? null; this.minLength = data.min_length ?? data.minLength ?? null; this.placeholder = data.placeholder ?? null; this.required = data.required ?? false; this.style = data.style ? TextInputComponent.resolveStyle(data.style) : null; this.value = data.value ?? null; } setValue(value) { this.value = Util.verifyString(value, RangeError2, "TEXT_INPUT_VALUE"); return this; } toJSON() { return { custom_id: this.customId, label: this.label, max_length: this.maxLength, min_length: this.minLength, placeholder: this.placeholder, required: this.required, style: TextInputStyles[this.style], type: MessageComponentTypes[this.type], value: this.value }; } static resolveStyle(style) { return typeof style === "string" ? style : TextInputStyles[style]; } } module.exports = TextInputComponent; }); // node_modules/discord.js-selfbot-v13/src/structures/SectionComponent.js var require_SectionComponent = __commonJS((exports, module) => { var BaseMessageComponent = require_BaseMessageComponent(); var { MessageComponentTypes } = require_Constants(); class SectionComponent extends BaseMessageComponent { constructor(data = {}) { super({ type: "SECTION" }); this.setup(data); } setup(data) { super.setup(data); this.components = data.components?.map((c) => BaseMessageComponent.create(c)) ?? []; this.accessory = BaseMessageComponent.create(data.accessory) ?? null; } toJSON() { return { type: MessageComponentTypes[this.type], components: this.components.map((c) => c.toJSON()), accessory: this.accessory.toJSON() }; } } module.exports = SectionComponent; }); // node_modules/discord.js-selfbot-v13/src/structures/TextDisplayComponent.js var require_TextDisplayComponent = __commonJS((exports, module) => { var BaseMessageComponent = require_BaseMessageComponent(); var { MessageComponentTypes } = require_Constants(); class TextDisplayComponent extends BaseMessageComponent { constructor(data = {}) { super({ type: "TEXT_DISPLAY" }); this.setup(data); } setup(data) { super.setup(data); this.content = data.content ?? null; } toJSON() { return { type: MessageComponentTypes[this.type], content: this.content }; } } module.exports = TextDisplayComponent; }); // node_modules/discord.js-selfbot-v13/src/structures/UnfurledMediaItem.js var require_UnfurledMediaItem = __commonJS((exports, module) => { class UnfurledMediaItem { constructor(data = {}) { this.url = data.url ?? null; this.data = data; } toJSON() { return { ...this.data }; } } module.exports = UnfurledMediaItem; }); // node_modules/discord.js-selfbot-v13/src/structures/ThumbnailComponent.js var require_ThumbnailComponent = __commonJS((exports, module) => { var BaseMessageComponent = require_BaseMessageComponent(); var UnfurledMediaItem = require_UnfurledMediaItem(); var { MessageComponentTypes } = require_Constants(); class ThumbnailComponent extends BaseMessageComponent { constructor(data = {}) { super({ type: "THUMBNAIL" }); this.setup(data); } setup(data) { super.setup(data); this.media = new UnfurledMediaItem(data.media); this.description = data.description ?? null; this.spoiler = data.spoiler ?? false; } toJSON() { return { type: MessageComponentTypes[this.type], media: this.media.toJSON(), description: this.description, spoiler: this.spoiler }; } } module.exports = ThumbnailComponent; }); // node_modules/discord.js-selfbot-v13/src/structures/MediaGalleryItem.js var require_MediaGalleryItem = __commonJS((exports, module) => { var UnfurledMediaItem = require_UnfurledMediaItem(); class MediaGalleryItem { constructor(data = {}) { this.media = new UnfurledMediaItem(data.media); this.description = data.description ?? null; this.spoiler = data.spoiler ?? false; } toJSON() { return { media: this.media.toJSON(), description: this.description, spoiler: this.spoiler }; } } module.exports = MediaGalleryItem; }); // node_modules/discord.js-selfbot-v13/src/structures/MediaGalleryComponent.js var require_MediaGalleryComponent = __commonJS((exports, module) => { var BaseMessageComponent = require_BaseMessageComponent(); var MediaGalleryItem = require_MediaGalleryItem(); var { MessageComponentTypes } = require_Constants(); class MediaGalleryComponent extends BaseMessageComponent { constructor(data = {}) { super({ type: "MEDIA_GALLERY" }); this.setup(data); } setup(data) { super.setup(data); this.items = data.items?.map((item) => new MediaGalleryItem(item)) ?? []; } toJSON() { return { type: MessageComponentTypes[this.type], items: this.items.map((c) => c.toJSON()) }; } } module.exports = MediaGalleryComponent; }); // node_modules/discord.js-selfbot-v13/src/structures/FileComponent.js var require_FileComponent = __commonJS((exports, module) => { var BaseMessageComponent = require_BaseMessageComponent(); var UnfurledMediaItem = require_UnfurledMediaItem(); var { MessageComponentTypes } = require_Constants(); class FileComponent extends BaseMessageComponent { constructor(data = {}) { super({ type: "FILE" }); this.setup(data); } setup(data) { super.setup(data); this.file = new UnfurledMediaItem(data.file); this.spoiler = data.spoiler ?? false; } toJSON() { return { type: MessageComponentTypes[this.type], file: this.content, spoiler: this.spoiler }; } } module.exports = FileComponent; }); // node_modules/discord.js-selfbot-v13/src/structures/SeparatorComponent.js var require_SeparatorComponent = __commonJS((exports, module) => { var BaseMessageComponent = require_BaseMessageComponent(); var { MessageComponentTypes, SeparatorSpacingSizes } = require_Constants(); class SeparatorComponent extends BaseMessageComponent { constructor(data = {}) { super({ type: "SEPARATOR" }); this.setup(data); } setup(data) { super.setup(data); this.spacing = data.spacing ?? SeparatorSpacingSizes.SMALL; this.divider = data.divider ?? true; } toJSON() { return { type: MessageComponentTypes[this.type], spacing: this.spacing, divider: this.divider }; } } module.exports = SeparatorComponent; }); // node_modules/discord.js-selfbot-v13/src/structures/ContainerComponent.js var require_ContainerComponent = __commonJS((exports, module) => { var BaseMessageComponent = require_BaseMessageComponent(); var { MessageComponentTypes } = require_Constants(); class ContainerComponent extends BaseMessageComponent { constructor(data = {}) { super({ type: "CONTAINER" }); this.setup(data); } setup(data) { super.setup(data); this.components = data.components?.map((c) => BaseMessageComponent.create(c)) ?? []; this.accentColor = data.accent_color ?? null; this.spoiler = data.spoiler ?? false; } get hexAccentColor() { return typeof this.accentColor === "number" ? `#${this.accentColor.toString(16).padStart(6, "0")}` : this.accentColor ?? null; } toJSON() { return { type: MessageComponentTypes[this.type], components: this.components.map((c) => c.toJSON()), accent_color: this.accent_color, spoiler: this.spoiler }; } } module.exports = ContainerComponent; }); // node_modules/discord.js-selfbot-v13/src/structures/BaseMessageComponent.js var require_BaseMessageComponent = __commonJS((exports, module) => { var { TypeError: TypeError2 } = require_errors(); var { MessageComponentTypes, Events } = require_Constants(); class BaseMessageComponent { constructor(data) { this.type = "type" in data ? BaseMessageComponent.resolveType(data.type) : null; } setup(data) { this.data = data; } get id() { return this.data.id; } static create(data, client) { let component; let type = data.type; if (typeof type === "string") type = MessageComponentTypes[type]; switch (type) { case MessageComponentTypes.ACTION_ROW: { const MessageActionRow = require_MessageActionRow(); component = data instanceof MessageActionRow ? data : new MessageActionRow(data, client); break; } case MessageComponentTypes.BUTTON: { const MessageButton = require_MessageButton(); component = data instanceof MessageButton ? data : new MessageButton(data); break; } case MessageComponentTypes.STRING_SELECT: case MessageComponentTypes.USER_SELECT: case MessageComponentTypes.ROLE_SELECT: case MessageComponentTypes.MENTIONABLE_SELECT: case MessageComponentTypes.CHANNEL_SELECT: { const MessageSelectMenu = require_MessageSelectMenu(); component = data instanceof MessageSelectMenu ? data : new MessageSelectMenu(data); break; } case MessageComponentTypes.TEXT_INPUT: { const TextInputComponent = require_TextInputComponent(); component = data instanceof TextInputComponent ? data : new TextInputComponent(data); break; } case MessageComponentTypes.SECTION: { const SectionComponent = require_SectionComponent(); component = data instanceof SectionComponent ? data : new SectionComponent(data); break; } case MessageComponentTypes.TEXT_DISPLAY: { const TextDisplayComponent = require_TextDisplayComponent(); component = data instanceof TextDisplayComponent ? data : new TextDisplayComponent(data); break; } case MessageComponentTypes.THUMBNAIL: { const ThumbnailComponent = require_ThumbnailComponent(); component = data instanceof ThumbnailComponent ? data : new ThumbnailComponent(data); break; } case MessageComponentTypes.MEDIA_GALLERY: { const MediaGalleryComponent = require_MediaGalleryComponent(); component = data instanceof MediaGalleryComponent ? data : new MediaGalleryComponent(data); break; } case MessageComponentTypes.FILE: { const FileComponent = require_FileComponent(); component = data instanceof FileComponent ? data : new FileComponent(data); break; } case MessageComponentTypes.SEPARATOR: { const SeparatorComponent = require_SeparatorComponent(); component = data instanceof SeparatorComponent ? data : new SeparatorComponent(data); break; } case MessageComponentTypes.CONTAINER: { const ContainerComponent = require_ContainerComponent(); component = data instanceof ContainerComponent ? data : new ContainerComponent(data); break; } default: if (client) { client.emit(Events.DEBUG, `[BaseMessageComponent] Received component with unknown type: ${data.type}`); } else { throw new TypeError2("INVALID_TYPE", "data.type", "valid MessageComponentType"); } } return component; } static resolveType(type) { return typeof type === "string" ? type : MessageComponentTypes[type]; } static extractInteractiveComponents(component) { let type = component.type; if (typeof type === "string") type = MessageComponentTypes[type]; switch (type) { case MessageComponentTypes.ACTION_ROW: return component.components; case MessageComponentTypes.SECTION: return [...component.components, component.accessory]; case MessageComponentTypes.CONTAINER: return component.components.flatMap(BaseMessageComponent.extractInteractiveComponents); default: return [component]; } } } module.exports = BaseMessageComponent; }); // node_modules/discord.js-selfbot-v13/src/structures/MessageEmbed.js var require_MessageEmbed = __commonJS((exports, module) => { var process2 = import.meta.require("process"); var { RangeError: RangeError2 } = require_errors(); var Util = require_Util(); var deprecationEmittedForSetAuthor = false; var deprecationEmittedForSetFooter = false; var deprecationEmittedForAddField = false; class MessageEmbed { constructor(data = {}, skipValidation = false) { this.setup(data, skipValidation); } setup(data, skipValidation) { this.type = data.type ?? "rich"; this.title = data.title ?? null; this.description = data.description ?? null; this.url = data.url ?? null; this.color = "color" in data ? Util.resolveColor(data.color) : null; this.timestamp = "timestamp" in data ? new Date(data.timestamp).getTime() : null; this.fields = []; if (data.fields) { this.fields = skipValidation ? data.fields.map(Util.cloneObject) : this.constructor.normalizeFields(data.fields); } this.thumbnail = data.thumbnail ? { url: data.thumbnail.url, proxyURL: data.thumbnail.proxyURL ?? data.thumbnail.proxy_url, height: data.thumbnail.height, width: data.thumbnail.width } : null; this.image = data.image ? { url: data.image.url, proxyURL: data.image.proxyURL ?? data.image.proxy_url, height: data.image.height, width: data.image.width } : null; this.video = data.video ? { url: data.video.url, proxyURL: data.video.proxyURL ?? data.video.proxy_url, height: data.video.height, width: data.video.width } : null; this.author = data.author ? { name: data.author.name, url: data.author.url, iconURL: data.author.iconURL ?? data.author.icon_url, proxyIconURL: data.author.proxyIconURL ?? data.author.proxy_icon_url } : null; this.provider = data.provider ? { name: data.provider.name, url: data.provider.url } : null; this.footer = data.footer ? { text: data.footer.text, iconURL: data.footer.iconURL ?? data.footer.icon_url, proxyIconURL: data.footer.proxyIconURL ?? data.footer.proxy_icon_url } : null; } get createdAt() { return this.timestamp ? new Date(this.timestamp) : null; } get hexColor() { return this.color ? `#${this.color.toString(16).padStart(6, "0")}` : null; } get length() { return (this.title?.length ?? 0) + (this.description?.length ?? 0) + (this.fields.length >= 1 ? this.fields.reduce((prev, curr) => prev + curr.name.length + curr.value.length, 0) : 0) + (this.footer?.text.length ?? 0) + (this.author?.name.length ?? 0); } equals(embed) { return this.type === embed.type && this.author?.name === embed.author?.name && this.author?.url === embed.author?.url && this.author?.iconURL === (embed.author?.iconURL ?? embed.author?.icon_url) && this.color === embed.color && this.title === embed.title && this.description === embed.description && this.url === embed.url && this.timestamp === embed.timestamp && this.fields.length === embed.fields.length && this.fields.every((field, i) => this._fieldEquals(field, embed.fields[i])) && this.footer?.text === embed.footer?.text && this.footer?.iconURL === (embed.footer?.iconURL ?? embed.footer?.icon_url) && this.image?.url === embed.image?.url && this.thumbnail?.url === embed.thumbnail?.url && this.video?.url === embed.video?.url && this.provider?.name === embed.provider?.name && this.provider?.url === embed.provider?.url; } _fieldEquals(field, other) { return field.name === other.name && field.value === other.value && field.inline === other.inline; } addField(name, value, inline) { if (!deprecationEmittedForAddField) { process2.emitWarning("MessageEmbed#addField is deprecated and will be removed in the next major update. Use MessageEmbed#addFields instead.", "DeprecationWarning"); deprecationEmittedForAddField = true; } return this.addFields({ name, value, inline }); } addFields(...fields) { this.fields.push(...this.constructor.normalizeFields(fields)); return this; } spliceFields(index, deleteCount, ...fields) { this.fields.splice(index, deleteCount, ...this.constructor.normalizeFields(...fields)); return this; } setFields(...fields) { this.spliceFields(0, this.fields.length, fields); return this; } setAuthor(options, deprecatedIconURL, deprecatedURL) { if (options === null) { this.author = {}; return this; } if (typeof options === "string") { if (!deprecationEmittedForSetAuthor) { process2.emitWarning("Passing strings for MessageEmbed#setAuthor is deprecated. Pass a sole object instead.", "DeprecationWarning"); deprecationEmittedForSetAuthor = true; } options = { name: options, url: deprecatedURL, iconURL: deprecatedIconURL }; } const { name, url, iconURL } = options; this.author = { name: Util.verifyString(name, RangeError2, "EMBED_AUTHOR_NAME"), url, iconURL }; return this; } setColor(color) { this.color = Util.resolveColor(color); return this; } setDescription(description) { this.description = Util.verifyString(description, RangeError2, "EMBED_DESCRIPTION"); return this; } setFooter(options, deprecatedIconURL) { if (options === null) { this.footer = undefined; return this; } if (typeof options === "string") { if (!deprecationEmittedForSetFooter) { process2.emitWarning("Passing strings for MessageEmbed#setFooter is deprecated. Pass a sole object instead.", "DeprecationWarning"); deprecationEmittedForSetFooter = true; } options = { text: options, iconURL: deprecatedIconURL }; } const { text, iconURL } = options; this.footer = { text: Util.verifyString(text, RangeError2, "EMBED_FOOTER_TEXT"), iconURL }; return this; } setImage(url) { this.image = { url }; return this; } setThumbnail(url) { this.thumbnail = { url }; return this; } setTimestamp(timestamp = Date.now()) { if (timestamp instanceof Date) timestamp = timestamp.getTime(); this.timestamp = timestamp; return this; } setTitle(title) { this.title = Util.verifyString(title, RangeError2, "EMBED_TITLE"); return this; } setURL(url) { this.url = url; return this; } toJSON() { return { title: this.title, type: this.type, description: this.description, url: this.url, timestamp: this.timestamp && new Date(this.timestamp), color: this.color, fields: this.fields, thumbnail: this.thumbnail, image: this.image, author: this.author && { name: this.author.name, url: this.author.url, icon_url: this.author.iconURL }, video: this.video && { url: this.video.url, proxyURL: this.video.proxyURL, height: this.video.height, width: this.video.width }, provider: this.provider && { name: this.provider.name, url: this.provider.url }, footer: this.footer && { text: this.footer.text, icon_url: this.footer.iconURL } }; } static normalizeField(name, value, inline = false) { return { name: Util.verifyString(name, RangeError2, "EMBED_FIELD_NAME", false), value: Util.verifyString(value, RangeError2, "EMBED_FIELD_VALUE", false), inline }; } static normalizeFields(...fields) { return fields.flat(2).map((field) => this.normalizeField(field.name, field.value, typeof field.inline === "boolean" ? field.inline : false)); } } module.exports = MessageEmbed; }); // node_modules/discord.js-selfbot-v13/src/util/ActivityFlags.js var require_ActivityFlags = __commonJS((exports, module) => { var BitField = require_BitField(); class ActivityFlags extends BitField { } ActivityFlags.FLAGS = { INSTANCE: 1 << 0, JOIN: 1 << 1, SPECTATE: 1 << 2, JOIN_REQUEST: 1 << 3, SYNC: 1 << 4, PLAY: 1 << 5, PARTY_PRIVACY_FRIENDS: 1 << 6, PARTY_PRIVACY_VOICE_CHANNEL: 1 << 7, EMBEDDED: 1 << 8 }; module.exports = ActivityFlags; }); // node_modules/discord.js-selfbot-v13/src/structures/GuildScheduledEvent.js var require_GuildScheduledEvent = __commonJS((exports) => { var Base = require_Base(); var { Error: Error2 } = require_errors(); var { GuildScheduledEventEntityTypes, GuildScheduledEventStatuses, GuildScheduledEventPrivacyLevels, Endpoints } = require_Constants(); var SnowflakeUtil = require_SnowflakeUtil(); class GuildScheduledEvent extends Base { constructor(client, data) { super(client); this.id = data.id; this.guildId = data.guild_id; this._patch(data); } _patch(data) { if ("channel_id" in data) { this.channelId = data.channel_id; } else { this.channelId ??= null; } if ("creator_id" in data) { this.creatorId = data.creator_id; } else { this.creatorId ??= null; } if ("name" in data) { this.name = data.name; } else { this.name ??= null; } if ("description" in data) { this.description = data.description; } else { this.description ??= null; } if ("scheduled_start_time" in data) { this.scheduledStartTimestamp = Date.parse(data.scheduled_start_time); } else { this.scheduledStartTimestamp ??= null; } if ("scheduled_end_time" in data) { this.scheduledEndTimestamp = data.scheduled_end_time ? Date.parse(data.scheduled_end_time) : null; } else { this.scheduledEndTimestamp ??= null; } if ("privacy_level" in data) { this.privacyLevel = GuildScheduledEventPrivacyLevels[data.privacy_level]; } else { this.privacyLevel ??= null; } if ("status" in data) { this.status = GuildScheduledEventStatuses[data.status]; } else { this.status ??= null; } if ("entity_type" in data) { this.entityType = GuildScheduledEventEntityTypes[data.entity_type]; } else { this.entityType ??= null; } if ("entity_id" in data) { this.entityId = data.entity_id; } else { this.entityId ??= null; } if ("user_count" in data) { this.userCount = data.user_count; } else { this.userCount ??= null; } if ("creator" in data) { this.creator = this.client.users._add(data.creator); } else { this.creator ??= this.client.users.resolve(this.creatorId); } if ("entity_metadata" in data) { if (data.entity_metadata) { this.entityMetadata = { location: data.entity_metadata.location ?? this.entityMetadata?.location ?? null }; } else { this.entityMetadata = null; } } else { this.entityMetadata ??= null; } if ("image" in data) { this.image = data.image; } else { this.image ??= null; } if ("recurrence_rule" in data) { this.recurrenceRule = data.recurrence_rule && { startTimestamp: Date.parse(data.recurrence_rule.start), get startAt() { return new Date(this.startTimestamp); }, endTimestamp: data.recurrence_rule.end && Date.parse(data.recurrence_rule.end), get endAt() { return this.endTimestamp && new Date(this.endTimestamp); }, frequency: data.recurrence_rule.frequency, interval: data.recurrence_rule.interval, byWeekday: data.recurrence_rule.by_weekday, byNWeekday: data.recurrence_rule.by_n_weekday, byMonth: data.recurrence_rule.by_month, byMonthDay: data.recurrence_rule.by_month_day, byYearDay: data.recurrence_rule.by_year_day, count: data.recurrence_rule.count }; } else { this.recurrenceRule ??= null; } } coverImageURL({ format, size } = {}) { return this.image && this.client.rest.cdn.GuildScheduledEventCover(this.id, this.image, format, size); } get partial() { return this.name === null; } get createdTimestamp() { return SnowflakeUtil.timestampFrom(this.id); } get createdAt() { return new Date(this.createdTimestamp); } get scheduledStartAt() { return new Date(this.scheduledStartTimestamp); } get scheduledEndAt() { return this.scheduledEndTimestamp && new Date(this.scheduledEndTimestamp); } get channel() { return this.client.channels.resolve(this.channelId); } get guild() { return this.client.guilds.resolve(this.guildId); } get url() { return Endpoints.scheduledEvent(this.client.options.http.scheduledEvent, this.guildId, this.id); } fetch(force = true) { return this.guild.scheduledEvents.fetch({ guildScheduledEvent: this.id, force }); } async createInviteURL(options) { let channelId = this.channelId; if (this.entityType === "EXTERNAL") { if (!options?.channel) throw new Error2("INVITE_OPTIONS_MISSING_CHANNEL"); channelId = this.guild.channels.resolveId(options.channel); if (!channelId) throw new Error2("GUILD_CHANNEL_RESOLVE"); } const invite = await this.guild.invites.create(channelId, options); return Endpoints.invite(this.client.options.http.invite, invite.code, this.id); } edit(options) { return this.guild.scheduledEvents.edit(this.id, options); } async delete() { await this.guild.scheduledEvents.delete(this.id); return this; } setName(name, reason) { return this.edit({ name, reason }); } setScheduledStartTime(scheduledStartTime, reason) { return this.edit({ scheduledStartTime, reason }); } setScheduledEndTime(scheduledEndTime, reason) { return this.edit({ scheduledEndTime, reason }); } setDescription(description, reason) { return this.edit({ description, reason }); } setStatus(status, reason) { return this.edit({ status, reason }); } setLocation(location, reason) { return this.edit({ entityMetadata: { location }, reason }); } fetchSubscribers(options) { return this.guild.scheduledEvents.fetchSubscribers(this.id, options); } toString() { return this.url; } isActive() { return GuildScheduledEventStatuses[this.status] === GuildScheduledEventStatuses.ACTIVE; } isCanceled() { return GuildScheduledEventStatuses[this.status] === GuildScheduledEventStatuses.CANCELED; } isCompleted() { return GuildScheduledEventStatuses[this.status] === GuildScheduledEventStatuses.COMPLETED; } isScheduled() { return GuildScheduledEventStatuses[this.status] === GuildScheduledEventStatuses.SCHEDULED; } } exports.GuildScheduledEvent = GuildScheduledEvent; }); // node_modules/discord.js-selfbot-v13/src/util/ApplicationFlags.js var require_ApplicationFlags = __commonJS((exports, module) => { var BitField = require_BitField(); class ApplicationFlags extends BitField { } ApplicationFlags.FLAGS = { EMBEDDED_RELEASED: 1 << 1, MANAGED_EMOJI: 1 << 2, EMBEDDED_IAP: 1 << 3, GROUP_DM_CREATE: 1 << 4, RPC_PRIVATE_BETA: 1 << 5, APPLICATION_AUTO_MODERATION_RULE_CREATE_BADGE: 1 << 6, ALLOW_ASSETS: 1 << 8, ALLOW_ACTIVITY_ACTION_SPECTATE: 1 << 9, ALLOW_ACTIVITY_ACTION_JOIN_REQUEST: 1 << 10, RPC_HAS_CONNECTED: 1 << 11, GATEWAY_PRESENCE: 1 << 12, GATEWAY_PRESENCE_LIMITED: 1 << 13, GATEWAY_GUILD_MEMBERS: 1 << 14, GATEWAY_GUILD_MEMBERS_LIMITED: 1 << 15, VERIFICATION_PENDING_GUILD_LIMIT: 1 << 16, EMBEDDED: 1 << 17, GATEWAY_MESSAGE_CONTENT: 1 << 18, GATEWAY_MESSAGE_CONTENT_LIMITED: 1 << 19, EMBEDDED_FIRST_PARTY: 1 << 20, APPLICATION_COMMAND_BADGE: 1 << 23, ACTIVE: 1 << 24, IFRAME_MODAL: 1 << 26 }; module.exports = ApplicationFlags; }); // node_modules/discord.js-selfbot-v13/src/util/Permissions.js var require_Permissions = __commonJS((exports, module) => { var BitField = require_BitField(); class Permissions extends BitField { missing(bits, checkAdmin = true) { return checkAdmin && this.has(this.constructor.FLAGS.ADMINISTRATOR) ? [] : super.missing(bits); } any(permission, checkAdmin = true) { return checkAdmin && super.has(this.constructor.FLAGS.ADMINISTRATOR) || super.any(permission); } has(permission, checkAdmin = true) { return checkAdmin && super.has(this.constructor.FLAGS.ADMINISTRATOR) || super.has(permission); } toArray() { return super.toArray(false); } } Permissions.FLAGS = { CREATE_INSTANT_INVITE: 1n << 0n, KICK_MEMBERS: 1n << 1n, BAN_MEMBERS: 1n << 2n, ADMINISTRATOR: 1n << 3n, MANAGE_CHANNELS: 1n << 4n, MANAGE_GUILD: 1n << 5n, ADD_REACTIONS: 1n << 6n, VIEW_AUDIT_LOG: 1n << 7n, PRIORITY_SPEAKER: 1n << 8n, STREAM: 1n << 9n, VIEW_CHANNEL: 1n << 10n, SEND_MESSAGES: 1n << 11n, SEND_TTS_MESSAGES: 1n << 12n, MANAGE_MESSAGES: 1n << 13n, EMBED_LINKS: 1n << 14n, ATTACH_FILES: 1n << 15n, READ_MESSAGE_HISTORY: 1n << 16n, MENTION_EVERYONE: 1n << 17n, USE_EXTERNAL_EMOJIS: 1n << 18n, VIEW_GUILD_INSIGHTS: 1n << 19n, CONNECT: 1n << 20n, SPEAK: 1n << 21n, MUTE_MEMBERS: 1n << 22n, DEAFEN_MEMBERS: 1n << 23n, MOVE_MEMBERS: 1n << 24n, USE_VAD: 1n << 25n, CHANGE_NICKNAME: 1n << 26n, MANAGE_NICKNAMES: 1n << 27n, MANAGE_ROLES: 1n << 28n, MANAGE_WEBHOOKS: 1n << 29n, MANAGE_EMOJIS_AND_STICKERS: 1n << 30n, USE_APPLICATION_COMMANDS: 1n << 31n, REQUEST_TO_SPEAK: 1n << 32n, MANAGE_EVENTS: 1n << 33n, MANAGE_THREADS: 1n << 34n, USE_PUBLIC_THREADS: 1n << 35n, CREATE_PUBLIC_THREADS: 1n << 35n, USE_PRIVATE_THREADS: 1n << 36n, CREATE_PRIVATE_THREADS: 1n << 36n, USE_EXTERNAL_STICKERS: 1n << 37n, SEND_MESSAGES_IN_THREADS: 1n << 38n, START_EMBEDDED_ACTIVITIES: 1n << 39n, MODERATE_MEMBERS: 1n << 40n, VIEW_CREATOR_MONETIZATION_ANALYTICS: 1n << 41n, USE_SOUNDBOARD: 1n << 42n, CREATE_GUILD_EXPRESSIONS: 1n << 43n, CREATE_EVENTS: 1n << 44n, USE_EXTERNAL_SOUNDS: 1n << 45n, SEND_VOICE_MESSAGES: 1n << 46n, USE_CLYDE_AI: 1n << 47n, SET_VOICE_CHANNEL_STATUS: 1n << 48n, SEND_POLLS: 1n << 49n, USE_EXTERNAL_APPS: 1n << 50n }; Permissions.ALL = Object.values(Permissions.FLAGS).reduce((all, p) => all | p, 0n); Permissions.DEFAULT = BigInt(104324673); Permissions.STAGE_MODERATOR = Permissions.FLAGS.MANAGE_CHANNELS | Permissions.FLAGS.MUTE_MEMBERS | Permissions.FLAGS.MOVE_MEMBERS; Permissions.defaultBit = BigInt(0); module.exports = Permissions; }); // node_modules/discord.js-selfbot-v13/src/structures/ApplicationRoleConnectionMetadata.js var require_ApplicationRoleConnectionMetadata = __commonJS((exports) => { var { ApplicationRoleConnectionMetadataTypes } = require_Constants(); class ApplicationRoleConnectionMetadata { constructor(data) { this.name = data.name; this.nameLocalizations = data.name_localizations ?? null; this.description = data.description; this.descriptionLocalizations = data.description_localizations ?? null; this.key = data.key; this.type = typeof data.type === "number" ? ApplicationRoleConnectionMetadataTypes[data.type] : data.type; } } exports.ApplicationRoleConnectionMetadata = ApplicationRoleConnectionMetadata; }); // node_modules/discord.js-selfbot-v13/src/structures/TeamMember.js var require_TeamMember = __commonJS((exports, module) => { var Base = require_Base(); var { MembershipStates } = require_Constants(); class TeamMember extends Base { constructor(team, data) { super(team.client); this.team = team; this._patch(data); } _patch(data) { if ("permissions" in data) { this.permissions = data.permissions; } if ("role" in data) { this.role = data.role; } if ("membership_state" in data) { this.membershipState = MembershipStates[data.membership_state]; } if ("user" in data) { this.user = this.client.users._add(data.user); } } get id() { return this.user.id; } toString() { return this.user.toString(); } } module.exports = TeamMember; }); // node_modules/discord.js-selfbot-v13/src/structures/Team.js var require_Team = __commonJS((exports, module) => { var { Collection } = require_dist(); var Base = require_Base(); var TeamMember = require_TeamMember(); var SnowflakeUtil = require_SnowflakeUtil(); class Team extends Base { constructor(client, data) { super(client); this._patch(data); } _patch(data) { this.id = data.id; if ("name" in data) { this.name = data.name; } if ("icon" in data) { this.icon = data.icon; } else { this.icon ??= null; } if ("owner_user_id" in data) { this.ownerId = data.owner_user_id; } else { this.ownerId ??= null; } this.members = new Collection; for (const memberData of data.members) { const member = new TeamMember(this, memberData); this.members.set(member.id, member); } } get owner() { return this.members.get(this.ownerId) ?? null; } get createdTimestamp() { return SnowflakeUtil.timestampFrom(this.id); } get createdAt() { return new Date(this.createdTimestamp); } iconURL({ format, size } = {}) { if (!this.icon) return null; return this.client.rest.cdn.TeamIcon(this.id, this.icon, { format, size }); } toString() { return this.name; } toJSON() { return super.toJSON({ createdTimestamp: true }); } } module.exports = Team; }); // node_modules/discord.js-selfbot-v13/src/structures/interfaces/Application.js var require_Application = __commonJS((exports, module) => { var process2 = import.meta.require("process"); var ApplicationFlags = require_ApplicationFlags(); var { ClientApplicationAssetTypes, Endpoints } = require_Constants(); var Permissions = require_Permissions(); var SnowflakeUtil = require_SnowflakeUtil(); var { ApplicationRoleConnectionMetadata } = require_ApplicationRoleConnectionMetadata(); var Base = require_Base(); var Team = require_Team(); var AssetTypes = Object.keys(ClientApplicationAssetTypes); var deprecationEmittedForFetchAssets = false; class Application extends Base { constructor(client, data) { super(client); this._patch(data); } _patch(data) { this.id = data.id; if ("name" in data) { this.name = data.name; } else { this.name ??= null; } if ("description" in data) { this.description = data.description; } else { this.description ??= null; } if ("icon" in data) { this.icon = data.icon; } else { this.icon ??= null; } if ("terms_of_service_url" in data) { this.termsOfServiceURL = data.terms_of_service_url; } else { this.termsOfServiceURL ??= null; } if ("privacy_policy_url" in data) { this.privacyPolicyURL = data.privacy_policy_url; } else { this.privacyPolicyURL ??= null; } if ("verify_key" in data) { this.verifyKey = data.verify_key; } else { this.verifyKey ??= null; } if ("role_connections_verification_url" in data) { this.roleConnectionsVerificationURL = data.role_connections_verification_url; } else { this.roleConnectionsVerificationURL ??= null; } this.tags = data.tags ?? []; if ("install_params" in data) { this.installParams = { scopes: data.install_params.scopes, permissions: new Permissions(data.install_params.permissions).freeze() }; } else { this.installParams ??= null; } if ("custom_install_url" in data) { this.customInstallURL = data.custom_install_url; } else { this.customInstallURL = null; } if ("flags" in data) { this.flags = new ApplicationFlags(data.flags).freeze(); } if ("approximate_guild_count" in data) { this.approximateGuildCount = data.approximate_guild_count; } else { this.approximateGuildCount ??= null; } if ("guild_id" in data) { this.guildId = data.guild_id; } else { this.guildId ??= null; } if ("cover_image" in data) { this.cover = data.cover_image; } else { this.cover ??= null; } if ("rpc_origins" in data) { this.rpcOrigins = data.rpc_origins; } else { this.rpcOrigins ??= []; } if ("bot_require_code_grant" in data) { this.botRequireCodeGrant = data.bot_require_code_grant; } else { this.botRequireCodeGrant ??= null; } if ("bot_public" in data) { this.botPublic = data.bot_public; } else { this.botPublic ??= null; } this.owner = data.team ? new Team(this.client, data.team) : data.owner ? this.client.users._add(data.owner) : this.owner ?? null; if ("splash" in data) { this.splash = data.splash; } else { this.splash ??= null; } if ("type" in data) { this.type = data.type; } else { this.type = null; } if ("primary_sku_id" in data) { this.primarySkuId = data.primary_sku_id; } else { this.primarySkuId = null; } if ("eula_id" in data) { this.eulaId = data.eula_id; } else { this.eulaId = null; } if ("slug" in data) { this.slug = data.slug; } else { this.slug = null; } if ("aliases" in data) { this.aliases = data.aliases; } else { this.aliases = []; } if ("executables" in data) { this.executables = data.executables; } else { this.executables ??= null; } if ("third_party_skus" in data) { this.thirdPartySkus = data.third_party_skus; } else { this.thirdPartySkus ??= null; } if ("hook" in data) { this.hook = data.hook; } else { this.hook ??= null; } if ("overlay" in data) { this.overlay = data.overlay; } else { this.overlay ??= null; } if ("overlay_methods" in data) { this.overlayMethods = data.overlay_methods; } else { this.overlayMethods ??= null; } if ("overlay_warn" in data) { this.overlayWarn = data.overlay_warn; } else { this.overlayWarn ??= null; } if ("overlay_compatibility_hook" in data) { this.overlayCompatibilityHook = data.overlay_compatibility_hook; } else { this.overlayCompatibilityHook ??= null; } if ("bot" in data) { this.bot = data.bot; } else { this.bot ??= null; } if ("developers" in data) { this.developers = data.developers; } else { this.developers ??= null; } if ("publishers" in data) { this.publishers = data.publishers; } else { this.publishers ??= null; } if ("redirect_uris" in data) { this.redirectUris = data.redirect_uris; } else { this.redirectUris ??= null; } if ("deeplink_uri" in data) { this.deeplinkUri = data.deeplink_uri; } else { this.deeplinkUri ??= null; } if ("integration_public" in data) { this.integrationPublic = data.integration_public; } else { this.integrationPublic ??= null; } if ("integration_require_code_grant" in data) { this.integrationRequireCodeGrant = data.integration_require_code_grant; } else { this.integrationRequireCodeGrant ??= null; } if ("bot_disabled" in data) { this.botDisabled = data.bot_disabled; } else { this.botDisabled ??= null; } if ("bot_quarantined" in data) { this.botQuarantined = data.bot_quarantined; } else { this.botQuarantined ??= null; } if ("approximate_user_install_count" in data) { this.approximateUserInstallCount = data.approximate_user_install_count; } else { this.approximateUserInstallCount ??= null; } if ("approximate_user_authorization_count" in data) { this.approximateUserAuthorizationCount = data.approximate_user_authorization_count; } else { this.approximateUserAuthorizationCount ??= null; } if ("internal_guild_restriction" in data) { this.internalGuildRestriction = data.internal_guild_restriction; } else { this.internalGuildRestriction ??= null; } if ("interactions_endpoint_url" in data) { this.interactionsEndpointUrl = data.interactions_endpoint_url; } else { this.interactionsEndpointUrl ??= null; } if ("interactions_version" in data) { this.interactionsVersion = data.interactions_version; } else { this.interactionsVersion ??= null; } if ("interactions_event_types" in data) { this.interactionsEventTypes = data.interactions_event_types; } else { this.interactionsEventTypes ??= null; } if ("event_webhooks_status" in data) { this.eventWebhooksStatus = data.event_webhooks_status; } else { this.eventWebhooksStatus ??= null; } if ("event_webhooks_url" in data) { this.eventWebhooksUrl = data.event_webhooks_url; } else { this.eventWebhooksUrl ??= null; } if ("event_webhooks_types" in data) { this.eventWebhooksTypes = data.event_webhooks_types; } else { this.eventWebhooksTypes ??= null; } if ("explicit_content_filter" in data) { this.explicitContentFilter = data.explicit_content_filter; } else { this.explicitContentFilter ??= null; } if ("integration_types_config" in data) { this.integrationTypesConfig = data.integration_types_config; } else { this.integrationTypesConfig ??= null; } if ("is_verified" in data) { this.isVerified = data.is_verified; } else { this.isVerified ??= null; } if ("verification_state" in data) { this.verificationState = data.verification_state; } else { this.verificationState ??= null; } if ("store_application_state" in data) { this.storeApplicationState = data.store_application_state; } else { this.storeApplicationState ??= null; } if ("rpc_application_state" in data) { this.rpcApplicationState = data.rpc_application_state; } else { this.rpcApplicationState ??= null; } if ("creator_monetization_state" in data) { this.creatorMonetizationState = data.creator_monetization_state; } else { this.creatorMonetizationState ??= null; } if ("is_discoverable" in data) { this.isDiscoverable = data.is_discoverable; } else { this.isDiscoverable ??= null; } if ("discoverability_state" in data) { this.discoverabilityState = data.discoverability_state; } else { this.discoverabilityState ??= null; } if ("discovery_eligibility_flags" in data) { this.discoveryEligibilityFlags = data.discovery_eligibility_flags; } else { this.discoveryEligibilityFlags ??= null; } if ("is_monetized" in data) { this.isMonetized = data.is_monetized; } else { this.isMonetized ??= null; } if ("storefront_available" in data) { this.storefrontAvailable = data.storefront_available; } else { this.storefrontAvailable ??= null; } if ("monetization_state" in data) { this.monetizationState = data.monetization_state; } else { this.monetizationState ??= null; } if ("monetization_eligibility_flags" in data) { this.monetizationEligibilityFlags = data.monetization_eligibility_flags; } else { this.monetizationEligibilityFlags ??= null; } if ("max_participants" in data) { this.maxParticipants = data.max_participants; } else { this.maxParticipants ??= null; } } get guild() { return this.client.guilds.cache.get(this.guildId) ?? null; } get partial() { return !this.name; } get createdTimestamp() { return SnowflakeUtil.timestampFrom(this.id); } get createdAt() { return new Date(this.createdTimestamp); } async fetch() { const app = await this.client.api.oauth2.authorize.get({ query: { client_id: this.id, scope: "bot applications.commands" } }); const user = this.client.users._add(app.bot); user._partial = false; this._patch(app.application); return this; } async fetchRoleConnectionMetadataRecords() { const metadata = await this.client.api.applications(this.id)("role-connections").metadata.get(); return metadata.map((data) => new ApplicationRoleConnectionMetadata(data)); } iconURL({ format, size } = {}) { if (!this.icon) return null; return this.client.rest.cdn.AppIcon(this.id, this.icon, { format, size }); } coverURL({ format, size } = {}) { if (!this.cover) return null; return Endpoints.CDN(this.client.options.http.cdn).AppIcon(this.id, this.cover, { format, size }); } async fetchAssets() { if (!deprecationEmittedForFetchAssets) { process2.emitWarning("Application#fetchAssets is deprecated as it is unsupported and will be removed in the next major version.", "DeprecationWarning"); deprecationEmittedForFetchAssets = true; } const assets = await this.client.api.oauth2.applications(this.id).assets.get(); return assets.map((a) => ({ id: a.id, name: a.name, type: AssetTypes[a.type - 1] })); } toString() { return this.name; } toJSON() { return super.toJSON({ createdTimestamp: true }); } } module.exports = Application; }); // node_modules/discord.js-selfbot-v13/src/structures/IntegrationApplication.js var require_IntegrationApplication = __commonJS((exports, module) => { var Application = require_Application(); class IntegrationApplication extends Application { _patch(data) { super._patch(data); if ("bot" in data) { this.bot = this.client.users._add(data.bot); } else { this.bot ??= null; } if ("terms_of_service_url" in data) { this.termsOfServiceURL = data.terms_of_service_url; } else { this.termsOfServiceURL ??= null; } if ("privacy_policy_url" in data) { this.privacyPolicyURL = data.privacy_policy_url; } else { this.privacyPolicyURL ??= null; } if ("rpc_origins" in data) { this.rpcOrigins = data.rpc_origins; } else { this.rpcOrigins ??= []; } if ("summary" in data) { this.summary = data.summary; } else { this.summary ??= null; } if ("hook" in data) { this.hook = data.hook; } else { this.hook ??= null; } if ("cover_image" in data) { this.cover = data.cover_image; } else { this.cover ??= null; } if ("verify_key" in data) { this.verifyKey = data.verify_key; } else { this.verifyKey ??= null; } } } module.exports = IntegrationApplication; }); // node_modules/discord.js-selfbot-v13/src/structures/InviteStageInstance.js var require_InviteStageInstance = __commonJS((exports, module) => { var { Collection } = require_dist(); var Base = require_Base(); class InviteStageInstance extends Base { constructor(client, data, channelId, guildId) { super(client); this.channelId = channelId; this.guildId = guildId; this.members = new Collection; this._patch(data); } _patch(data) { if ("topic" in data) { this.topic = data.topic; } if ("participant_count" in data) { this.participantCount = data.participant_count; } if ("speaker_count" in data) { this.speakerCount = data.speaker_count; } this.members.clear(); for (const rawMember of data.members) { const member = this.guild.members._add(rawMember); this.members.set(member.id, member); } } get channel() { return this.client.channels.resolve(this.channelId); } get guild() { return this.client.guilds.resolve(this.guildId); } } module.exports = InviteStageInstance; }); // node_modules/discord.js-selfbot-v13/src/util/InviteFlags.js var require_InviteFlags = __commonJS((exports, module) => { var BitField = require_BitField(); class InviteFlags extends BitField { } InviteFlags.FLAGS = { IS_GUEST_INVITE: 1 << 0, IS_VIEWED: 1 << 1, IS_ENHANCED: 1 << 2, IS_APPLICATION_BYPASS: 1 << 3 }; module.exports = InviteFlags; }); // node_modules/discord.js-selfbot-v13/src/structures/BaseGuild.js var require_BaseGuild = __commonJS((exports, module) => { var Base = require_Base(); var SnowflakeUtil = require_SnowflakeUtil(); class BaseGuild extends Base { constructor(client, data) { super(client); this.id = data.id; this.name = data.name; this.icon = data.icon ?? null; this.features = data.features; } get createdTimestamp() { return SnowflakeUtil.timestampFrom(this.id); } get createdAt() { return new Date(this.createdTimestamp); } get nameAcronym() { return this.name.replace(/'s /g, " ").replace(/\w+/g, (e) => e[0]).replace(/\s/g, ""); } get partnered() { return this.features.includes("PARTNERED"); } get verified() { return this.features.includes("VERIFIED"); } iconURL({ format, size, dynamic } = {}) { if (!this.icon) return null; return this.client.rest.cdn.Icon(this.id, this.icon, format, size, dynamic); } async fetch() { const data = await this.client.api.guilds(this.id).get({ query: { with_counts: true } }); return this.client.guilds._add(data); } toString() { return this.name; } } module.exports = BaseGuild; }); // node_modules/discord.js-selfbot-v13/src/structures/AnonymousGuild.js var require_AnonymousGuild = __commonJS((exports, module) => { var BaseGuild = require_BaseGuild(); var { VerificationLevels, NSFWLevels } = require_Constants(); class AnonymousGuild extends BaseGuild { constructor(client, data, immediatePatch = true) { super(client, data); if (immediatePatch) this._patch(data); } _patch(data) { if ("features" in data) this.features = data.features; if ("splash" in data) { this.splash = data.splash; } if ("banner" in data) { this.banner = data.banner; } if ("description" in data) { this.description = data.description; } if ("verification_level" in data) { this.verificationLevel = VerificationLevels[data.verification_level]; } if ("vanity_url_code" in data) { this.vanityURLCode = data.vanity_url_code; } if ("nsfw_level" in data) { this.nsfwLevel = NSFWLevels[data.nsfw_level]; } if ("premium_subscription_count" in data) { this.premiumSubscriptionCount = data.premium_subscription_count; } else { this.premiumSubscriptionCount ??= null; } } bannerURL({ format, size } = {}) { return this.banner && this.client.rest.cdn.Banner(this.id, this.banner, format, size); } splashURL({ format, size } = {}) { return this.splash && this.client.rest.cdn.Splash(this.id, this.splash, format, size); } } module.exports = AnonymousGuild; }); // node_modules/discord.js-selfbot-v13/src/structures/Emoji.js var require_Emoji = __commonJS((exports) => { var process2 = import.meta.require("process"); var Base = require_Base(); var SnowflakeUtil = require_SnowflakeUtil(); var deletedEmojis = new WeakSet; var deprecationEmittedForDeleted = false; class Emoji extends Base { constructor(client, emoji) { super(client); this.animated = emoji.animated ?? null; this.name = emoji.name ?? null; this.id = emoji.id ?? null; } get deleted() { if (!deprecationEmittedForDeleted) { deprecationEmittedForDeleted = true; process2.emitWarning("Emoji#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.", "DeprecationWarning"); } return deletedEmojis.has(this); } set deleted(value) { if (!deprecationEmittedForDeleted) { deprecationEmittedForDeleted = true; process2.emitWarning("Emoji#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.", "DeprecationWarning"); } if (value) deletedEmojis.add(this); else deletedEmojis.delete(this); } get identifier() { if (this.id) return `${this.animated ? "a:" : ""}${this.name}:${this.id}`; return encodeURIComponent(this.name); } get url() { return this.id && this.client.rest.cdn.Emoji(this.id, this.animated ? "gif" : "png"); } get createdTimestamp() { return this.id && SnowflakeUtil.timestampFrom(this.id); } get createdAt() { return this.id && new Date(this.createdTimestamp); } toString() { return this.id ? `<${this.animated ? "a" : ""}:${this.name}:${this.id}>` : this.name; } toJSON() { return super.toJSON({ guild: "guildId", createdTimestamp: true, url: true, identifier: true }); } } exports.Emoji = Emoji; exports.deletedEmojis = deletedEmojis; }); // node_modules/discord.js-selfbot-v13/src/structures/WelcomeChannel.js var require_WelcomeChannel = __commonJS((exports, module) => { var Base = require_Base(); var { Emoji } = require_Emoji(); class WelcomeChannel extends Base { constructor(guild, data) { super(guild.client); this.guild = guild; this.description = data.description; this._emoji = { name: data.emoji_name, id: data.emoji_id }; this.channelId = data.channel_id; } get channel() { return this.client.channels.cache.get(this.channelId) ?? null; } get emoji() { return this.client.emojis.cache.get(this._emoji.id) ?? new Emoji(this.client, this._emoji); } } module.exports = WelcomeChannel; }); // node_modules/discord.js-selfbot-v13/src/structures/WelcomeScreen.js var require_WelcomeScreen = __commonJS((exports, module) => { var { Collection } = require_dist(); var Base = require_Base(); var WelcomeChannel = require_WelcomeChannel(); class WelcomeScreen extends Base { constructor(guild, data) { super(guild.client); this.guild = guild; this.description = data.description ?? null; this.welcomeChannels = new Collection; for (const channel of data.welcome_channels) { const welcomeChannel = new WelcomeChannel(this.guild, channel); this.welcomeChannels.set(welcomeChannel.channelId, welcomeChannel); } } get enabled() { return this.guild.features.includes("WELCOME_SCREEN_ENABLED"); } } module.exports = WelcomeScreen; }); // node_modules/discord.js-selfbot-v13/src/structures/InviteGuild.js var require_InviteGuild = __commonJS((exports, module) => { var AnonymousGuild = require_AnonymousGuild(); var WelcomeScreen = require_WelcomeScreen(); class InviteGuild extends AnonymousGuild { constructor(client, data) { super(client, data); this.welcomeScreen = typeof data.welcome_screen !== "undefined" ? new WelcomeScreen(this, data.welcome_screen) : null; } } module.exports = InviteGuild; }); // node_modules/discord.js-selfbot-v13/src/structures/Invite.js var require_Invite = __commonJS((exports, module) => { var Base = require_Base(); var { GuildScheduledEvent } = require_GuildScheduledEvent(); var IntegrationApplication = require_IntegrationApplication(); var InviteStageInstance = require_InviteStageInstance(); var { Error: Error2 } = require_errors(); var { Endpoints } = require_Constants(); var InviteFlags = require_InviteFlags(); var Permissions = require_Permissions(); class Invite extends Base { constructor(client, data) { super(client); this._patch(data); } _patch(data) { const InviteGuild = require_InviteGuild(); this.guild ??= null; if (data.guild) { this.guild = this.client.guilds.cache.get(data.guild.id) ?? new InviteGuild(this.client, data.guild); } if ("code" in data) { this.code = data.code; } if ("approximate_presence_count" in data) { this.presenceCount = data.approximate_presence_count; } else { this.presenceCount ??= null; } if ("approximate_member_count" in data) { this.memberCount = data.approximate_member_count; } else { this.memberCount ??= null; } if ("temporary" in data) { this.temporary = data.temporary ?? null; } else { this.temporary ??= null; } if ("max_age" in data) { this.maxAge = data.max_age; } else { this.maxAge ??= null; } if ("uses" in data) { this.uses = data.uses; } else { this.uses ??= null; } if ("max_uses" in data) { this.maxUses = data.max_uses; } else { this.maxUses ??= null; } if ("inviter_id" in data) { this.inviterId = data.inviter_id; this.inviter = this.client.users.resolve(data.inviter_id); } else { this.inviterId ??= null; } if ("inviter" in data) { this.inviter ??= this.client.users._add(data.inviter); this.inviterId = data.inviter.id; } else { this.inviter ??= null; } if ("target_user" in data) { this.targetUser = this.client.users._add(data.target_user); } else { this.targetUser ??= null; } if ("target_application" in data) { this.targetApplication = new IntegrationApplication(this.client, data.target_application); } else { this.targetApplication ??= null; } if ("target_type" in data) { this.targetType = data.target_type; } else { this.targetType ??= null; } if ("type" in data) { this.type = data.type; } else { this.type ??= null; } if ("channel_id" in data) { this.channelId = data.channel_id; this.channel = this.client.channels.cache.get(data.channel_id); } if ("channel" in data && data.channel !== null) { this.channel ??= this.client.channels._add(data.channel, this.guild, { cache: false }); this.channelId ??= data.channel.id; } if ("created_at" in data) { this.createdTimestamp = new Date(data.created_at).getTime(); } else { this.createdTimestamp ??= null; } if ("expires_at" in data) { this._expiresTimestamp = data.expires_at && Date.parse(data.expires_at); } else { this._expiresTimestamp ??= null; } if ("stage_instance" in data) { this.stageInstance = new InviteStageInstance(this.client, data.stage_instance, this.channel.id, this.guild.id); } else { this.stageInstance ??= null; } if ("guild_scheduled_event" in data) { this.guildScheduledEvent = new GuildScheduledEvent(this.client, data.guild_scheduled_event); } else { this.guildScheduledEvent ??= null; } if ("flags" in data) { this.flags = new InviteFlags(data.flags).freeze(); } else { this.flags ??= new InviteFlags().freeze(); } } get createdAt() { return this.createdTimestamp ? new Date(this.createdTimestamp) : null; } get deletable() { const guild = this.guild; if (!guild || !this.client.guilds.cache.has(guild.id)) return false; if (!guild.members.me) throw new Error2("GUILD_UNCACHED_ME"); return this.channel.permissionsFor(this.client.user).has(Permissions.FLAGS.MANAGE_CHANNELS, false) || guild.members.me.permissions.has(Permissions.FLAGS.MANAGE_GUILD); } get expiresTimestamp() { return this._expiresTimestamp ?? (this.createdTimestamp && this.maxAge ? this.createdTimestamp + this.maxAge * 1000 : null); } get expiresAt() { const { expiresTimestamp } = this; return expiresTimestamp ? new Date(expiresTimestamp) : null; } get url() { return Endpoints.invite(this.client.options.http.invite, this.code); } async delete(reason) { await this.client.api.invites[this.code].delete({ reason }); return this; } toString() { return this.url; } toJSON() { return super.toJSON({ url: true, expiresTimestamp: true, presenceCount: false, memberCount: false, uses: false, channel: "channelId", inviter: "inviterId", guild: "guildId" }); } valueOf() { return this.code; } } Invite.INVITES_PATTERN = /discord(?:(?:app)?\.com\/invite|\.gg(?:\/invite)?)\/([\w-]{2,255})/gi; module.exports = Invite; }); // node_modules/discord.js-selfbot-v13/src/structures/GuildTemplate.js var require_GuildTemplate = __commonJS((exports, module) => { var { setTimeout: setTimeout2 } = import.meta.require("timers"); var Base = require_Base(); var { Events } = require_Constants(); var DataResolver = require_DataResolver(); class GuildTemplate extends Base { constructor(client, data) { super(client); this._patch(data); } _patch(data) { if ("code" in data) { this.code = data.code; } if ("name" in data) { this.name = data.name; } if ("description" in data) { this.description = data.description; } if ("usage_count" in data) { this.usageCount = data.usage_count; } if ("creator_id" in data) { this.creatorId = data.creator_id; } if ("creator" in data) { this.creator = this.client.users._add(data.creator); } if ("created_at" in data) { this.createdAt = new Date(data.created_at); } if ("updated_at" in data) { this.updatedAt = new Date(data.updated_at); } if ("source_guild_id" in data) { this.guildId = data.source_guild_id; } if ("serialized_source_guild" in data) { this.serializedGuild = data.serialized_source_guild; } this.unSynced = "is_dirty" in data ? Boolean(data.is_dirty) : null; return this; } async createGuild(name, icon) { const { client } = this; const data = await client.api.guilds.templates(this.code).post({ data: { name, icon: await DataResolver.resolveImage(icon) } }); if (client.guilds.cache.has(data.id)) return client.guilds.cache.get(data.id); return new Promise((resolve) => { const resolveGuild = (guild) => { client.off(Events.GUILD_CREATE, handleGuild); client.decrementMaxListeners(); resolve(guild); }; const handleGuild = (guild) => { if (guild.id === data.id) { clearTimeout(timeout); resolveGuild(guild); } }; client.incrementMaxListeners(); client.on(Events.GUILD_CREATE, handleGuild); const timeout = setTimeout2(() => resolveGuild(client.guilds._add(data)), 1e4).unref(); }); } async edit({ name, description } = {}) { const data = await this.client.api.guilds(this.guildId).templates(this.code).patch({ data: { name, description } }); return this._patch(data); } async delete() { await this.client.api.guilds(this.guildId).templates(this.code).delete(); return this; } async sync() { const data = await this.client.api.guilds(this.guildId).templates(this.code).put(); return this._patch(data); } get createdTimestamp() { return this.createdAt.getTime(); } get updatedTimestamp() { return this.updatedAt.getTime(); } get guild() { return this.client.guilds.resolve(this.guildId); } get url() { return `${this.client.options.http.template}/${this.code}`; } toString() { return this.code; } } GuildTemplate.GUILD_TEMPLATES_PATTERN = /discord(?:app)?\.(?:com\/template|new)\/([\w-]{2,255})/gi; module.exports = GuildTemplate; }); // node_modules/discord.js-selfbot-v13/src/util/DataResolver.js var require_DataResolver = __commonJS((exports, module) => { var { Buffer: Buffer2 } = import.meta.require("buffer"); var fs = import.meta.require("fs"); var path = import.meta.require("path"); var stream = import.meta.require("stream"); var { fetch } = import.meta.require("undici"); var { Error: DiscordError, TypeError: TypeError2 } = require_errors(); var Invite = require_Invite(); class DataResolver extends null { static resolveCode(data, regex) { return new RegExp(regex.source).exec(data)?.[1] ?? data; } static resolveInviteCode(data) { return this.resolveCode(data, Invite.INVITES_PATTERN); } static resolveGuildTemplateCode(data) { const GuildTemplate = require_GuildTemplate(); return this.resolveCode(data, GuildTemplate.GUILD_TEMPLATES_PATTERN); } static async resolveImage(image) { if (!image) return null; if (typeof image === "string" && image.startsWith("data:")) { return image; } const file = await this.resolveFileAsBuffer(image); return DataResolver.resolveBase64(file); } static resolveBase64(data) { if (Buffer2.isBuffer(data)) return `data:image/jpg;base64,${data.toString("base64")}`; return data; } static async resolveFile(resource) { if (Buffer2.isBuffer(resource) || resource instanceof stream.Readable) return resource; if (typeof resource === "string") { if (/^https?:\/\//.test(resource)) { const res = await fetch(resource); if (res.ok) return res.body; else throw new DiscordError("FILE_NOT_FOUND", resource); } return new Promise((resolve, reject) => { const file = path.resolve(resource); fs.stat(file, (err, stats) => { if (err) return reject(err); if (!stats.isFile()) return reject(new DiscordError("FILE_NOT_FOUND", file)); return resolve(fs.createReadStream(file)); }); }); } throw new TypeError2("REQ_RESOURCE_TYPE"); } static async resolveFileAsBuffer(resource) { const file = await this.resolveFile(resource); if (Buffer2.isBuffer(file)) return file; const buffers = []; for await (const data of file) buffers.push(data); return Buffer2.concat(buffers); } } module.exports = DataResolver; }); // node_modules/discord.js-selfbot-v13/src/util/MessageFlags.js var require_MessageFlags = __commonJS((exports, module) => { var BitField = require_BitField(); class MessageFlags extends BitField { } MessageFlags.FLAGS = { CROSSPOSTED: 1 << 0, IS_CROSSPOST: 1 << 1, SUPPRESS_EMBEDS: 1 << 2, SOURCE_MESSAGE_DELETED: 1 << 3, URGENT: 1 << 4, HAS_THREAD: 1 << 5, EPHEMERAL: 1 << 6, LOADING: 1 << 7, FAILED_TO_MENTION_SOME_ROLES_IN_THREAD: 1 << 8, GUILD_FEED_HIDDEN: 1 << 9, SHOULD_SHOW_LINK_NOT_DISCORD_WARNING: 1 << 10, SUPPRESS_NOTIFICATIONS: 1 << 12, IS_VOICE_MESSAGE: 1 << 13, HAS_SNAPSHOT: 1 << 14, IS_COMPONENTS_V2: 1 << 15 }; module.exports = MessageFlags; }); // node_modules/discord.js-selfbot-v13/src/structures/Webhook.js var require_Webhook = __commonJS((exports, module) => { var process2 = import.meta.require("process"); var MessagePayload = require_MessagePayload(); var { Error: Error2 } = require_errors(); var { WebhookTypes } = require_Constants(); var DataResolver = require_DataResolver(); var SnowflakeUtil = require_SnowflakeUtil(); var deprecationEmittedForFetchMessage = false; class Webhook { constructor(client, data) { Object.defineProperty(this, "client", { value: client }); if (data) this._patch(data); } _patch(data) { if ("name" in data) { this.name = data.name; } Object.defineProperty(this, "token", { value: data.token ?? null, writable: true, configurable: true }); if ("avatar" in data) { this.avatar = data.avatar; } this.id = data.id; if ("type" in data) { this.type = WebhookTypes[data.type]; } if ("guild_id" in data) { this.guildId = data.guild_id; } if ("channel_id" in data) { this.channelId = data.channel_id; } if ("user" in data) { this.owner = this.client.users?._add(data.user) ?? data.user; } else { this.owner ??= null; } if ("source_guild" in data) { this.sourceGuild = this.client.guilds?.cache.get(data.source_guild.id) ?? data.source_guild; } else { this.sourceGuild ??= null; } if ("source_channel" in data) { this.sourceChannel = this.client.channels?.cache.get(data.source_channel?.id) ?? data.source_channel; } else { this.sourceChannel ??= null; } } async send(options) { if (!this.token) throw new Error2("WEBHOOK_TOKEN_UNAVAILABLE"); let messagePayload; if (options instanceof MessagePayload) { messagePayload = options.resolveData(); } else { messagePayload = MessagePayload.create(this, options).resolveData(); } const { data, files } = await messagePayload.resolveFiles(); const d = await this.client.api.webhooks(this.id, this.token).post({ data, files, query: { thread_id: messagePayload.options.threadId, wait: true, with_components: messagePayload.options.withComponents }, auth: false, webhook: true }); return this.client.channels?.cache.get(d.channel_id)?.messages._add(d, false) ?? d; } async sendSlackMessage(body) { if (!this.token) throw new Error2("WEBHOOK_TOKEN_UNAVAILABLE"); const data = await this.client.api.webhooks(this.id, this.token).slack.post({ query: { wait: true }, auth: false, data: body, webhook: true }); return data.toString() === "ok"; } async edit({ name = this.name, avatar, channel }, reason) { if (avatar && !(typeof avatar === "string" && avatar.startsWith("data:"))) { avatar = await DataResolver.resolveImage(avatar); } channel &&= channel.id ?? channel; const data = await this.client.api.webhooks(this.id, channel ? undefined : this.token).patch({ data: { name, avatar, channel_id: channel }, reason, auth: !this.token || Boolean(channel), webhook: true }); this.name = data.name; this.avatar = data.avatar; this.channelId = data.channel_id; return this; } async fetchMessage(message, cacheOrOptions = { cache: true }) { if (typeof cacheOrOptions === "boolean") { if (!deprecationEmittedForFetchMessage) { process2.emitWarning("Passing a boolean to cache the message in Webhook#fetchMessage is deprecated. Pass an object instead.", "DeprecationWarning"); deprecationEmittedForFetchMessage = true; } cacheOrOptions = { cache: cacheOrOptions }; } if (!this.token) throw new Error2("WEBHOOK_TOKEN_UNAVAILABLE"); const data = await this.client.api.webhooks(this.id, this.token).messages(message).get({ query: { thread_id: cacheOrOptions.threadId }, auth: false, webhook: true }); return this.client.channels?.cache.get(data.channel_id)?.messages._add(data, cacheOrOptions.cache) ?? data; } async editMessage(message, options) { if (!this.token) throw new Error2("WEBHOOK_TOKEN_UNAVAILABLE"); let messagePayload; if (options instanceof MessagePayload) messagePayload = options; else messagePayload = MessagePayload.create(this, options); const { data, files } = await messagePayload.resolveData().resolveFiles(); const d = await this.client.api.webhooks(this.id, this.token).messages(typeof message === "string" ? message : message.id).patch({ data, files, query: { thread_id: messagePayload.options.threadId, with_components: messagePayload.options.withComponents }, auth: false, webhook: true }); const messageManager = this.client.channels?.cache.get(d.channel_id)?.messages; if (!messageManager) return d; const existing = messageManager.cache.get(d.id); if (!existing) return messageManager._add(d); const clone = existing._clone(); clone._patch(d); return clone; } async delete(reason) { await this.client.api.webhooks(this.id, this.token).delete({ reason, auth: !this.token, webhook: true }); } async deleteMessage(message, threadId) { if (!this.token) throw new Error2("WEBHOOK_TOKEN_UNAVAILABLE"); await this.client.api.webhooks(this.id, this.token).messages(typeof message === "string" ? message : message.id).delete({ query: { thread_id: threadId }, auth: false, webhook: true }); } get channel() { return this.client.channels.resolve(this.channelId); } get createdTimestamp() { return SnowflakeUtil.timestampFrom(this.id); } get createdAt() { return new Date(this.createdTimestamp); } get url() { return this.client.options.http.api + this.client.api.webhooks(this.id, this.token); } avatarURL({ format, size } = {}) { if (!this.avatar) return null; return this.client.rest.cdn.Avatar(this.id, this.avatar, format, size); } isChannelFollower() { return this.type === "Channel Follower"; } isIncoming() { return this.type === "Incoming"; } static applyToClass(structure, ignore = []) { for (const prop of [ "send", "sendSlackMessage", "fetchMessage", "edit", "editMessage", "delete", "deleteMessage", "createdTimestamp", "createdAt", "url" ]) { if (ignore.includes(prop)) continue; Object.defineProperty(structure.prototype, prop, Object.getOwnPropertyDescriptor(Webhook.prototype, prop)); } } } module.exports = Webhook; }); // node_modules/discord.js-selfbot-v13/src/client/WebhookClient.js var require_WebhookClient = __commonJS((exports, module) => { var BaseClient = require_BaseClient(); var { Error: Error2 } = require_errors(); var Webhook = require_Webhook(); class WebhookClient extends BaseClient { constructor(data, options) { super(options); Object.defineProperty(this, "client", { value: this }); let { id, token } = data; if ("url" in data) { const url = data.url.match(/^https?:\/\/(?:canary|ptb)?\.?discord\.com\/api\/webhooks(?:\/v[0-9]\d*)?\/([^\/]+)\/([^\/]+)/i); if (!url || url.length <= 1) throw new Error2("WEBHOOK_URL_INVALID"); [, id, token] = url; } this.id = id; Object.defineProperty(this, "token", { value: token, writable: true, configurable: true }); } send() { } sendSlackMessage() { } fetchMessage() { } edit() { } editMessage() { } delete() { } deleteMessage() { } get createdTimestamp() { } get createdAt() { } get url() { } } Webhook.applyToClass(WebhookClient); module.exports = WebhookClient; }); // node_modules/discord.js-selfbot-v13/src/structures/VoiceState.js var require_VoiceState = __commonJS((exports, module) => { var Base = require_Base(); var { Error: Error2, TypeError: TypeError2 } = require_errors(); class VoiceState extends Base { constructor(guild, data) { super(guild.client); this.guild = guild; this.id = data.user_id; this._patch(data); } _patch(data) { if ("deaf" in data) { this.serverDeaf = data.deaf; } else { this.serverDeaf ??= null; } if ("mute" in data) { this.serverMute = data.mute; } else { this.serverMute ??= null; } if ("self_deaf" in data) { this.selfDeaf = data.self_deaf; } else { this.selfDeaf ??= null; } if ("self_mute" in data) { this.selfMute = data.self_mute; } else { this.selfMute ??= null; } if ("self_video" in data) { this.selfVideo = data.self_video; } else { this.selfVideo ??= null; } if ("session_id" in data) { this.sessionId = data.session_id; } else { this.sessionId ??= null; } if ("self_video" in data) { this.streaming = data.self_stream ?? false; } else { this.streaming ??= null; } if ("channel_id" in data) { this.channelId = data.channel_id; } else { this.channelId ??= null; } if ("suppress" in data) { this.suppress = data.suppress; } if ("request_to_speak_timestamp" in data) { this.requestToSpeakTimestamp = data.request_to_speak_timestamp && Date.parse(data.request_to_speak_timestamp); } else { this.requestToSpeakTimestamp ??= null; } return this; } get member() { if (!this.guild?.id) return null; return this.guild.members.cache.get(this.id) ?? null; } get user() { return this.guild.client.users.cache.get(this.id) ?? null; } get channel() { return (this.guild?.id ? this.guild : this.client)?.channels?.cache.get(this.channelId) ?? null; } get deaf() { return this.serverDeaf || this.selfDeaf; } get mute() { return this.serverMute || this.selfMute; } setMute(mute = true, reason) { if (!this.guild?.id) return null; return this.guild.members.edit(this.id, { mute }, reason); } setDeaf(deaf = true, reason) { if (!this.guild?.id) return null; return this.guild.members.edit(this.id, { deaf }, reason); } disconnect(reason) { return this.setChannel(null, reason); } setChannel(channel, reason) { if (!this.guild?.id) return null; return this.guild.members.edit(this.id, { channel }, reason); } async setRequestToSpeak(request = true) { if (this.channel?.type !== "GUILD_STAGE_VOICE") throw new Error2("VOICE_NOT_STAGE_CHANNEL"); if (this.client.user.id !== this.id) throw new Error2("VOICE_STATE_NOT_OWN"); await this.client.api.guilds(this.guild.id, "voice-states", "@me").patch({ data: { channel_id: this.channelId, request_to_speak_timestamp: request ? new Date().toISOString() : null } }); } async setSuppressed(suppressed = true) { if (typeof suppressed !== "boolean") throw new TypeError2("VOICE_STATE_INVALID_TYPE", "suppressed"); if (this.channel?.type !== "GUILD_STAGE_VOICE") throw new Error2("VOICE_NOT_STAGE_CHANNEL"); const target = this.client.user.id === this.id ? "@me" : this.id; await this.client.api.guilds(this.guild.id, "voice-states", target).patch({ data: { channel_id: this.channelId, suppress: suppressed, request_to_speak_timestamp: null } }); } setStatus(status = "") { return this.client.api.channels(this.channel.id, "voice-status").put({ data: { status } }); } async getPreview() { if (!this.streaming) throw new Error2("USER_NOT_STREAMING"); const streamKey = this.guild?.id ? `guild:${this.guild.id}:${this.channelId}:${this.id}` : `call:${this.channelId}:${this.id}`; const data = await this.client.api.streams[encodeURIComponent(streamKey)].preview.get(); return data.url; } postPreview(base64Image) { if (!this.client.user.id === this.id || !this.streaming) throw new Error2("USER_NOT_STREAMING"); const streamKey = this.guild?.id ? `guild:${this.guild.id}:${this.channelId}:${this.id}` : `call:${this.channelId}:${this.id}`; return this.client.api.streams[encodeURIComponent(streamKey)].preview.post({ data: { thumbnail: base64Image } }); } fetch(force = true) { return this.guild?.voiceStates?.fetch(this.id, { force }); } toJSON() { return super.toJSON({ id: true, serverDeaf: true, serverMute: true, selfDeaf: true, selfMute: true, selfVideo: true, sessionId: true, channelId: "channel" }); } } module.exports = VoiceState; }); // node_modules/discord.js-selfbot-v13/src/util/UserFlags.js var require_UserFlags = __commonJS((exports, module) => { var BitField = require_BitField(); class UserFlags extends BitField { } UserFlags.FLAGS = { DISCORD_EMPLOYEE: 1 << 0, PARTNERED_SERVER_OWNER: 1 << 1, HYPESQUAD_EVENTS: 1 << 2, BUGHUNTER_LEVEL_1: 1 << 3, MFA_SMS: 1 << 4, PREMIUM_PROMO_DISMISSED: 1 << 5, HOUSE_BRAVERY: 1 << 6, HOUSE_BRILLIANCE: 1 << 7, HOUSE_BALANCE: 1 << 8, EARLY_SUPPORTER: 1 << 9, TEAM_USER: 1 << 10, INTERNAL_APPLICATION: 1 << 11, SYSTEM: 1 << 12, HAS_UNREAD_URGENT_MESSAGES: 1 << 13, BUGHUNTER_LEVEL_2: 1 << 14, UNDERAGE_DELETED: 1 << 15, VERIFIED_BOT: 1 << 16, EARLY_VERIFIED_BOT_DEVELOPER: 1 << 17, DISCORD_CERTIFIED_MODERATOR: 1 << 18, BOT_HTTP_INTERACTIONS: 1 << 19, SPAMMER: 1 << 20, DISABLE_PREMIUM: 1 << 21, ACTIVE_DEVELOPER: 1 << 22, HIGH_GLOBAL_RATE_LIMIT: Math.pow(2, 33), DELETED: Math.pow(2, 34), DISABLED_SUSPICIOUS_ACTIVITY: Math.pow(2, 35), SELF_DELETED: Math.pow(2, 36), PREMIUM_DISCRIMINATOR: Math.pow(2, 37), USED_DESKTOP_CLIENT: Math.pow(2, 38), USED_WEB_CLIENT: Math.pow(2, 39), USED_MOBILE_CLIENT: Math.pow(2, 40), DISABLED: Math.pow(2, 41), VERIFIED_EMAIL: Math.pow(2, 43), QUARANTINED: Math.pow(2, 44), COLLABORATOR: Math.pow(2, 50), RESTRICTED_COLLABORATOR: Math.pow(2, 51) }; module.exports = UserFlags; }); // node_modules/discord.js-selfbot-v13/src/structures/User.js var require_User = __commonJS((exports, module) => { var Base = require_Base(); var VoiceState = require_VoiceState(); var TextBasedChannel = require_TextBasedChannel(); var { Error: Error2 } = require_errors(); var { RelationshipTypes } = require_Constants(); var SnowflakeUtil = require_SnowflakeUtil(); var UserFlags = require_UserFlags(); var Util = require_Util(); class User extends Base { constructor(client, data) { super(client); this.id = data.id; this.bot = null; this.system = null; this.flags = null; this._patch(data); } _patch(data) { if ("username" in data) { this.username = data.username; } else { this.username ??= null; } if ("global_name" in data) { this.globalName = data.global_name; } else { this.globalName ??= null; } if ("bot" in data) { this.bot = Boolean(data.bot); } else if (!this.partial && typeof this.bot !== "boolean") { this.bot = false; } if ("discriminator" in data) { this.discriminator = data.discriminator; } else { this.discriminator ??= null; } if ("avatar" in data) { this.avatar = data.avatar; } else { this.avatar ??= null; } if ("banner" in data) { this.banner = data.banner; } else if (this.banner !== null) { this.banner ??= undefined; } if ("banner_color" in data) { this.bannerColor = data.banner_color; } else if (this.bannerColor !== null) { this.bannerColor ??= undefined; } if ("accent_color" in data) { this.accentColor = data.accent_color; } else if (this.accentColor !== null) { this.accentColor ??= undefined; } if ("system" in data) { this.system = Boolean(data.system); } else if (!this.partial && typeof this.system !== "boolean") { this.system = false; } if ("public_flags" in data) { this.flags = new UserFlags(data.public_flags); } if (data.avatar_decoration_data) { if (data.avatar_decoration_data) { this.avatarDecorationData = { asset: data.avatar_decoration_data.asset, skuId: data.avatar_decoration_data.sku_id }; } else { this.avatarDecorationData = null; } } else { this.avatarDecorationData ??= null; } if ("primary_guild" in data) { if (data.primary_guild) { this.primaryGuild = { identityGuildId: data.primary_guild.identity_guild_id, identityEnabled: data.primary_guild.identity_enabled, tag: data.primary_guild.tag, badge: data.primary_guild.badge }; } else { this.primaryGuild = null; } } else { this.primaryGuild ??= null; } if (data.collectibles) { if (data.collectibles.nameplate) { this.collectibles = { nameplate: { skuId: data.collectibles.nameplate.sku_id, asset: data.collectibles.nameplate.asset, label: data.collectibles.nameplate.label, palette: data.collectibles.nameplate.palette } }; } else { this.collectibles = { nameplate: null }; } } else { this.collectibles ??= null; } } get clan() { return this.primaryGuild; } get avatarDecoration() { return this.avatarDecorationData?.asset || null; } get partial() { return typeof this.username !== "string"; } get createdTimestamp() { return SnowflakeUtil.timestampFrom(this.id); } get createdAt() { return new Date(this.createdTimestamp); } avatarURL({ format, size, dynamic } = {}) { if (!this.avatar) return null; return this.client.rest.cdn.Avatar(this.id, this.avatar, format, size, dynamic); } avatarDecorationURL() { if (!this.avatarDecorationData) return null; return this.client.rest.cdn.AvatarDecoration(this.avatarDecorationData.asset); } clanBadgeURL() { return this.guildTagBadgeURL(); } guildTagBadgeURL() { if (!this.primaryGuild || !this.primaryGuild.identityGuildId || !this.primaryGuild.badge) return null; return this.client.rest.cdn.GuildTagBadge(this.primaryGuild.identityGuildId, this.primaryGuild.badge); } get defaultAvatarURL() { const index = this.discriminator === "0" || this.discriminator === "0000" ? Util.calculateUserDefaultAvatarIndex(this.id) : this.discriminator % 5; return this.client.rest.cdn.DefaultAvatar(index); } displayAvatarURL(options) { return this.avatarURL(options) ?? this.defaultAvatarURL; } get hexAccentColor() { if (typeof this.accentColor !== "number") return this.accentColor; return `#${this.accentColor.toString(16).padStart(6, "0")}`; } bannerURL({ format, size, dynamic } = {}) { if (typeof this.banner === "undefined") throw new Error2("USER_BANNER_NOT_FETCHED"); if (!this.banner) return null; return this.client.rest.cdn.Banner(this.id, this.banner, format, size, dynamic); } get tag() { return typeof this.username === "string" ? this.discriminator === "0" || this.discriminator === "0000" ? this.username : `${this.username}#${this.discriminator}` : null; } get displayName() { return this.globalName ?? this.username; } get dmChannel() { return this.client.users.dmChannel(this.id); } createDM(force = false) { return this.client.users.createDM(this.id, force); } deleteDM() { return this.client.users.deleteDM(this.id); } equals(user) { return user && this.id === user.id && this.username === user.username && this.discriminator === user.discriminator && this.globalName === user.globalName && this.avatar === user.avatar && this.flags?.bitfield === user.flags?.bitfield && this.banner === user.banner && this.accentColor === user.accentColor && this.avatarDecorationData?.asset === user.avatarDecorationData?.asset && this.avatarDecorationData?.skuId === user.avatarDecorationData?.skuId && this.collectibles?.nameplate?.skuId === user.collectibles?.nameplate?.skuId && this.collectibles?.nameplate?.asset === user.collectibles?.nameplate?.asset && this.collectibles?.nameplate?.label === user.collectibles?.nameplate?.label && this.collectibles?.nameplate?.palette === user.collectibles?.nameplate?.palette && this.primaryGuild?.identityGuildId === user.primaryGuild?.identityGuildId && this.primaryGuild?.identityEnabled === user.primaryGuild?.identityEnabled && this.primaryGuild?.tag === user.primaryGuild?.tag && this.primaryGuild?.badge === user.primaryGuild?.badge; } _equals(user) { return user && this.id === user.id && this.username === user.username && this.discriminator === user.discriminator && this.globalName === user.global_name && this.avatar === user.avatar && this.flags?.bitfield === user.public_flags && ("banner" in user ? this.banner === user.banner : true) && ("accent_color" in user ? this.accentColor === user.accent_color : true) && ("avatar_decoration_data" in user ? this.avatarDecorationData?.asset === user.avatar_decoration_data?.asset && this.avatarDecorationData?.skuId === user.avatar_decoration_data?.sku_id : true) && ("collectibles" in user ? this.collectibles?.nameplate?.skuId === user.collectibles?.nameplate?.sku_id && this.collectibles?.nameplate?.asset === user.collectibles?.nameplate?.asset && this.collectibles?.nameplate?.label === user.collectibles?.nameplate?.label && this.collectibles?.nameplate?.palette === user.collectibles?.nameplate?.palette : true) && ("primary_guild" in user ? this.primaryGuild?.identityGuildId === user.primary_guild?.identity_guild_id && this.primaryGuild?.identityEnabled === user.primary_guild?.identity_enabled && this.primaryGuild?.tag === user.primary_guild?.tag && this.primaryGuild?.badge === user.primary_guild?.badge : true); } fetch(force = true) { return this.client.users.fetch(this.id, { force }); } getProfile(guildId) { return this.client.api.users(this.id).profile.get({ query: { with_mutual_guilds: true, with_mutual_friends: true, with_mutual_friends_count: true, guild_id: guildId } }); } toString() { return `<@${this.id}>`; } toJSON(...props) { const json = super.toJSON({ createdTimestamp: true, defaultAvatarURL: true, hexAccentColor: true, tag: true }, ...props); json.avatarURL = this.avatarURL(); json.displayAvatarURL = this.displayAvatarURL(); json.bannerURL = this.banner ? this.bannerURL() : this.banner; json.guildTagBadgeURL = this.guildTagBadgeURL(); return json; } async setNote(note = null) { await this.client.notes.updateNote(this.id, note); return this; } get note() { return this.client.notes.cache.get(this.id); } get voice() { return this.client.voiceStates.cache.get(this.id) ?? this.client.guilds.cache.find((g) => g?.voiceStates?.cache?.get(this.id))?.voiceStates?.cache?.get(this.id) ?? new VoiceState({ client: this.client }, { user_id: this.id }); } sendFriendRequest() { return this.client.relationships.sendFriendRequest(this); } deleteRelationship() { return this.client.relationships.deleteRelationship(this); } get relationship() { const i = this.client.relationships.cache.get(this.id) ?? 0; return RelationshipTypes[parseInt(i)]; } get friendNickname() { return this.client.relationships.friendNicknames.get(this.id); } } TextBasedChannel.applyToClass(User); module.exports = User; }); // node_modules/discord.js-selfbot-v13/src/managers/BaseManager.js var require_BaseManager = __commonJS((exports, module) => { class BaseManager { constructor(client) { Object.defineProperty(this, "client", { value: client }); } } module.exports = BaseManager; }); // node_modules/discord.js-selfbot-v13/src/managers/DataManager.js var require_DataManager = __commonJS((exports, module) => { var BaseManager = require_BaseManager(); var { Error: Error2 } = require_errors(); class DataManager extends BaseManager { constructor(client, holds) { super(client); Object.defineProperty(this, "holds", { value: holds }); } get cache() { throw new Error2("NOT_IMPLEMENTED", "get cache", this.constructor.name); } resolve(idOrInstance) { if (idOrInstance instanceof this.holds) return idOrInstance; if (typeof idOrInstance === "string") return this.cache.get(idOrInstance) ?? null; return null; } resolveId(idOrInstance) { if (idOrInstance instanceof this.holds) return idOrInstance.id; if (typeof idOrInstance === "string") return idOrInstance; return null; } valueOf() { return this.cache; } } module.exports = DataManager; }); // node_modules/discord.js-selfbot-v13/src/util/RoleFlags.js var require_RoleFlags = __commonJS((exports, module) => { var BitField = require_BitField(); class RoleFlags extends BitField { } RoleFlags.FLAGS = { IN_PROMPT: 1 << 0 }; module.exports = RoleFlags; }); // node_modules/discord.js-selfbot-v13/src/structures/Role.js var require_Role = __commonJS((exports) => { var process2 = import.meta.require("process"); var Base = require_Base(); var { Error: Error2 } = require_errors(); var Permissions = require_Permissions(); var RoleFlags = require_RoleFlags(); var SnowflakeUtil = require_SnowflakeUtil(); var deprecationEmittedForComparePositions = false; var deletedRoles = new WeakSet; var deprecationEmittedForDeleted = false; class Role extends Base { constructor(client, data, guild) { super(client); this.guild = guild; this.icon = null; this.unicodeEmoji = null; if (data) this._patch(data); } _patch(data) { this.id = data.id; if ("name" in data) { this.name = data.name; } if ("color" in data) { this.color = data.color; } if ("colors" in data) { this.colors = { primaryColor: data.colors.primary_color, secondaryColor: data.colors.secondary_color, tertiaryColor: data.colors.tertiary_color }; } if ("hoist" in data) { this.hoist = data.hoist; } if ("position" in data) { this.rawPosition = data.position; } if ("permissions" in data) { this.permissions = new Permissions(BigInt(data.permissions)).freeze(); } if ("managed" in data) { this.managed = data.managed; } if ("mentionable" in data) { this.mentionable = data.mentionable; } if ("icon" in data) this.icon = data.icon; if ("unicode_emoji" in data) this.unicodeEmoji = data.unicode_emoji; this.tags = data.tags ? {} : null; if (data.tags) { if ("bot_id" in data.tags) { this.tags.botId = data.tags.bot_id; } if ("integration_id" in data.tags) { this.tags.integrationId = data.tags.integration_id; } if ("premium_subscriber" in data.tags) { this.tags.premiumSubscriberRole = true; } if ("subscription_listing_id" in data.tags) { this.tags.subscriptionListingId = data.tags.subscription_listing_id; } if ("available_for_purchase" in data.tags) { this.tags.availableForPurchase = true; } if ("guild_connections" in data.tags) { this.tags.guildConnections = true; } } if ("flags" in data) { this.flags = new RoleFlags(data.flags).freeze(); } else { this.flags ??= new RoleFlags().freeze(); } } get createdTimestamp() { return SnowflakeUtil.timestampFrom(this.id); } get createdAt() { return new Date(this.createdTimestamp); } get deleted() { if (!deprecationEmittedForDeleted) { deprecationEmittedForDeleted = true; process2.emitWarning("Role#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.", "DeprecationWarning"); } return deletedRoles.has(this); } set deleted(value) { if (!deprecationEmittedForDeleted) { deprecationEmittedForDeleted = true; process2.emitWarning("Role#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.", "DeprecationWarning"); } if (value) deletedRoles.add(this); else deletedRoles.delete(this); } get hexColor() { return `#${this.colors.primaryColor.toString(16).padStart(6, "0")}`; } get members() { return this.guild.members.cache.filter((m) => m.roles.cache.has(this.id)); } get editable() { if (this.managed) return false; const clientMember = this.guild.members.resolve(this.client.user); if (!clientMember.permissions.has(Permissions.FLAGS.MANAGE_ROLES)) return false; return clientMember.roles.highest.comparePositionTo(this) > 0; } get position() { let count = 0; for (const role of this.guild.roles.cache.values()) { if (this.rawPosition > role.rawPosition) count++; else if (this.rawPosition === role.rawPosition && BigInt(this.id) < BigInt(role.id)) count++; } return count; } comparePositionTo(role) { return this.guild.roles.comparePositions(this, role); } edit(data, reason) { return this.guild.roles.edit(this, data, reason); } permissionsIn(channel, checkAdmin = true) { channel = this.guild.channels.resolve(channel); if (!channel) throw new Error2("GUILD_CHANNEL_RESOLVE"); return channel.rolePermissions(this, checkAdmin); } setName(name, reason) { return this.edit({ name }, reason); } setColor(color, reason) { return this.edit({ color }, reason); } setColors(colors, reason) { return this.edit({ colors, reason }); } setHoist(hoist = true, reason) { return this.edit({ hoist }, reason); } setPermissions(permissions, reason) { return this.edit({ permissions }, reason); } setMentionable(mentionable = true, reason) { return this.edit({ mentionable }, reason); } setIcon(icon, reason) { return this.edit({ icon }, reason); } setUnicodeEmoji(unicodeEmoji, reason) { return this.edit({ unicodeEmoji }, reason); } setPosition(position, options = {}) { return this.guild.roles.setPosition(this, position, options); } async delete(reason) { await this.guild.roles.delete(this.id, reason); return this; } fetchMemberIds() { return this.guild.roles.fetchMemberIds(this.id); } iconURL({ format, size } = {}) { if (!this.icon) return null; return this.client.rest.cdn.RoleIcon(this.id, this.icon, format, size); } equals(role) { return role && this.id === role.id && this.name === role.name && this.colors.primaryColor === role.colors.primaryColor && this.colors.secondaryColor === role.colors.secondaryColor && this.colors.tertiaryColor === role.colors.tertiaryColor && this.hoist === role.hoist && this.position === role.position && this.permissions.bitfield === role.permissions.bitfield && this.managed === role.managed && this.icon === role.icon && this.unicodeEmoji === role.unicodeEmoji; } toString() { if (this.id === this.guild.id) return "@everyone"; return `<@&${this.id}>`; } toJSON() { return { ...super.toJSON({ createdTimestamp: true }), permissions: this.permissions.toJSON() }; } static comparePositions(role1, role2) { if (!deprecationEmittedForComparePositions) { process2.emitWarning("The Role.comparePositions method is deprecated. Use RoleManager#comparePositions instead.", "DeprecationWarning"); deprecationEmittedForComparePositions = true; } return role1.guild.roles.comparePositions(role1, role2); } } exports.Role = Role; exports.deletedRoles = deletedRoles; }); // node_modules/discord.js-selfbot-v13/src/managers/GuildMemberRoleManager.js var require_GuildMemberRoleManager = __commonJS((exports, module) => { var { Collection } = require_dist(); var DataManager = require_DataManager(); var { TypeError: TypeError2 } = require_errors(); var { Role } = require_Role(); class GuildMemberRoleManager extends DataManager { constructor(member) { super(member.client, Role); this.member = member; this.guild = member.guild; } get cache() { const everyone = this.guild.roles.everyone; return this.guild.roles.cache.filter((role) => this.member._roles.includes(role.id)).set(everyone.id, everyone); } get hoist() { const hoistedRoles = this.cache.filter((role) => role.hoist); if (!hoistedRoles.size) return null; return hoistedRoles.reduce((prev, role) => role.comparePositionTo(prev) > 0 ? role : prev); } get icon() { const iconRoles = this.cache.filter((role) => role.icon || role.unicodeEmoji); if (!iconRoles.size) return null; return iconRoles.reduce((prev, role) => role.comparePositionTo(prev) > 0 ? role : prev); } get color() { const coloredRoles = this.cache.filter((role) => role.colors.primaryColor); if (!coloredRoles.size) return null; return coloredRoles.reduce((prev, role) => role.comparePositionTo(prev) > 0 ? role : prev); } get highest() { return this.cache.reduce((prev, role) => role.comparePositionTo(prev) > 0 ? role : prev, this.cache.first()); } get premiumSubscriberRole() { return this.cache.find((role) => role.tags?.premiumSubscriberRole) ?? null; } get botRole() { if (!this.member.user.bot) return null; return this.cache.find((role) => role.tags?.botId === this.member.user.id) ?? null; } async add(roleOrRoles, reason) { if (roleOrRoles instanceof Collection || Array.isArray(roleOrRoles)) { const resolvedRoles = []; for (const role of roleOrRoles.values()) { const resolvedRole = this.guild.roles.resolveId(role); if (!resolvedRole) throw new TypeError2("INVALID_ELEMENT", "Array or Collection", "roles", role); resolvedRoles.push(resolvedRole); } const newRoles = [...new Set(resolvedRoles.concat(...this.cache.keys()))]; return this.set(newRoles, reason); } else { roleOrRoles = this.guild.roles.resolveId(roleOrRoles); if (roleOrRoles === null) { throw new TypeError2("INVALID_TYPE", "roles", "Role, Snowflake or Array or Collection of Roles or Snowflakes"); } await this.client.api.guilds[this.guild.id].members[this.member.id].roles[roleOrRoles].put({ reason }); const clone = this.member._clone(); clone._roles = [...this.cache.keys(), roleOrRoles]; return clone; } } async remove(roleOrRoles, reason) { if (roleOrRoles instanceof Collection || Array.isArray(roleOrRoles)) { const resolvedRoles = []; for (const role of roleOrRoles.values()) { const resolvedRole = this.guild.roles.resolveId(role); if (!resolvedRole) throw new TypeError2("INVALID_ELEMENT", "Array or Collection", "roles", role); resolvedRoles.push(resolvedRole); } const newRoles = this.cache.filter((role) => !resolvedRoles.includes(role.id)); return this.set(newRoles, reason); } else { roleOrRoles = this.guild.roles.resolveId(roleOrRoles); if (roleOrRoles === null) { throw new TypeError2("INVALID_TYPE", "roles", "Role, Snowflake or Array or Collection of Roles or Snowflakes"); } await this.client.api.guilds[this.guild.id].members[this.member.id].roles[roleOrRoles].delete({ reason }); const clone = this.member._clone(); const newRoles = this.cache.filter((role) => role.id !== roleOrRoles); clone._roles = [...newRoles.keys()]; return clone; } } set(roles, reason) { return this.member.edit({ roles }, reason); } clone() { const clone = new this.constructor(this.member); clone.member._roles = [...this.cache.keys()]; return clone; } } module.exports = GuildMemberRoleManager; }); // node_modules/discord.js-selfbot-v13/src/util/GuildMemberFlags.js var require_GuildMemberFlags = __commonJS((exports, module) => { var BitField = require_BitField(); class GuildMemberFlags extends BitField { } GuildMemberFlags.FLAGS = { DID_REJOIN: 1 << 0, COMPLETED_ONBOARDING: 1 << 1, BYPASSES_VERIFICATION: 1 << 2, STARTED_ONBOARDING: 1 << 3 }; module.exports = GuildMemberFlags; }); // node_modules/discord.js-selfbot-v13/src/structures/GuildMember.js var require_GuildMember = __commonJS((exports) => { var process2 = import.meta.require("process"); var Base = require_Base(); var VoiceState = require_VoiceState(); var TextBasedChannel = require_TextBasedChannel(); var { Error: Error2 } = require_errors(); var GuildMemberRoleManager = require_GuildMemberRoleManager(); var GuildMemberFlags = require_GuildMemberFlags(); var Permissions = require_Permissions(); var deletedGuildMembers = new WeakSet; var deprecationEmittedForDeleted = false; class GuildMember extends Base { constructor(client, data, guild) { super(client); this.guild = guild; this.joinedTimestamp = null; this.premiumSinceTimestamp = null; this.nickname = null; this.pending = false; this.communicationDisabledUntilTimestamp = null; this._roles = []; if (data) this._patch(data); } _patch(data) { if ("user" in data) { this.user = this.client.users._add(data.user, true); } if ("nick" in data) this.nickname = data.nick; if ("avatar" in data) { this.avatar = data.avatar; } else if (typeof this.avatar !== "string") { this.avatar = null; } if ("banner" in data) { this.banner = data.banner; } else { this.banner ??= null; } if ("joined_at" in data) this.joinedTimestamp = new Date(data.joined_at).getTime(); if ("premium_since" in data) { this.premiumSinceTimestamp = data.premium_since ? new Date(data.premium_since).getTime() : null; } if ("roles" in data) this._roles = data.roles; this.pending = data.pending ?? false; if ("communication_disabled_until" in data) { this.communicationDisabledUntilTimestamp = data.communication_disabled_until && Date.parse(data.communication_disabled_until); } if ("flags" in data) { this.flags = new GuildMemberFlags(data.flags).freeze(); } else { this.flags ??= new GuildMemberFlags().freeze(); } if (data.avatar_decoration_data) { this.avatarDecorationData = { asset: data.avatar_decoration_data.asset, skuId: data.avatar_decoration_data.sku_id }; } else { this.avatarDecorationData = null; } } _clone() { const clone = super._clone(); clone._roles = this._roles.slice(); return clone; } get deleted() { if (!deprecationEmittedForDeleted) { deprecationEmittedForDeleted = true; process2.emitWarning("GuildMember#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.", "DeprecationWarning"); } return deletedGuildMembers.has(this); } set deleted(value) { if (!deprecationEmittedForDeleted) { deprecationEmittedForDeleted = true; process2.emitWarning("GuildMember#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.", "DeprecationWarning"); } if (value) deletedGuildMembers.add(this); else deletedGuildMembers.delete(this); } get partial() { return this.joinedTimestamp === null; } get roles() { return new GuildMemberRoleManager(this); } get voice() { return this.guild.voiceStates.cache.get(this.id) ?? new VoiceState(this.guild, { user_id: this.id }); } avatarDecorationURL() { if (!this.avatarDecorationData) return null; return this.client.rest.cdn.AvatarDecoration(this.avatarDecorationData.asset); } avatarURL({ format, size, dynamic } = {}) { if (!this.avatar) return null; return this.client.rest.cdn.GuildMemberAvatar(this.guild.id, this.id, this.avatar, format, size, dynamic); } bannerURL({ format, size, dynamic } = {}) { return this.banner && this.client.rest.cdn.GuildMemberBanner(this.guild.id, this.id, this.banner, format, size, dynamic); } displayAvatarDecorationURL() { return this.avatarDecorationURL() ?? this.user.avatarDecorationURL(); } displayAvatarURL(options) { return this.avatarURL(options) ?? this.user.displayAvatarURL(options); } displayBannerURL(options) { return this.bannerURL(options) ?? this.user.bannerURL(options); } get joinedAt() { return this.joinedTimestamp ? new Date(this.joinedTimestamp) : null; } get communicationDisabledUntil() { return this.communicationDisabledUntilTimestamp && new Date(this.communicationDisabledUntilTimestamp); } get premiumSince() { return this.premiumSinceTimestamp ? new Date(this.premiumSinceTimestamp) : null; } get presence() { return this.guild.presences.cache.get(this.id) ?? null; } get displayColor() { return this.roles.color?.colors.primaryColor ?? 0; } get displayHexColor() { return this.roles.color?.hexColor ?? "#000000"; } get id() { return this.user.id; } get displayName() { return this.nickname ?? this.user.displayName; } get permissions() { if (this.user.id === this.guild.ownerId) return new Permissions(Permissions.ALL).freeze(); return new Permissions(this.roles.cache.map((role) => role.permissions)).freeze(); } get manageable() { if (this.user.id === this.guild.ownerId) return false; if (this.user.id === this.client.user.id) return false; if (this.client.user.id === this.guild.ownerId) return true; if (!this.guild.members.me) throw new Error2("GUILD_UNCACHED_ME"); return this.guild.members.me.roles.highest.comparePositionTo(this.roles.highest) > 0; } get kickable() { return this.manageable && this.guild.members.me.permissions.has(Permissions.FLAGS.KICK_MEMBERS); } get bannable() { return this.manageable && this.guild.members.me.permissions.has(Permissions.FLAGS.BAN_MEMBERS); } get moderatable() { return !this.permissions.has(Permissions.FLAGS.ADMINISTRATOR) && this.manageable && (this.guild.members.me?.permissions.has(Permissions.FLAGS.MODERATE_MEMBERS) ?? false); } isCommunicationDisabled() { return this.communicationDisabledUntilTimestamp > Date.now(); } permissionsIn(channel) { channel = this.guild.channels.resolve(channel); if (!channel) throw new Error2("GUILD_CHANNEL_RESOLVE"); return channel.permissionsFor(this); } edit(data, reason) { return this.guild.members.edit(this, data, reason); } setNickname(nick, reason) { return this.edit({ nick }, reason); } setFlags(flags, reason) { return this.edit({ flags, reason }); } createDM(force = false) { return this.user.createDM(force); } deleteDM() { return this.user.deleteDM(); } kick(reason) { return this.guild.members.kick(this, reason); } ban(options) { return this.guild.bans.create(this, options); } disableCommunicationUntil(communicationDisabledUntil, reason) { return this.edit({ communicationDisabledUntil }, reason); } timeout(timeout, reason) { return this.disableCommunicationUntil(timeout && Date.now() + timeout, reason); } fetch(force = true) { return this.guild.members.fetch({ user: this.id, cache: true, force }); } equals(member) { return member instanceof this.constructor && this.id === member.id && this.partial === member.partial && this.guild.id === member.guild.id && this.joinedTimestamp === member.joinedTimestamp && this.nickname === member.nickname && this.avatar === member.avatar && this.banner === member.banner && this.pending === member.pending && this.communicationDisabledUntilTimestamp === member.communicationDisabledUntilTimestamp && this.flags.equals(member.flags) && (this._roles === member._roles || this._roles.length === member._roles.length && this._roles.every((role, i) => role === member._roles[i])) && this.avatarDecorationData?.asset === member.avatarDecorationData?.asset && this.avatarDecorationData?.skuId === member.avatarDecorationData?.skuId; } toString() { return `<@${this.nickname ? "!" : ""}${this.user.id}>`; } toJSON() { const json = super.toJSON({ guild: "guildId", user: "userId", displayName: true, roles: true }); json.avatarURL = this.avatarURL(); json.bannerURL = this.bannerURL(); json.displayAvatarURL = this.displayAvatarURL(); json.displayBannerURL = this.displayBannerURL(); json.avatarDecorationURL = this.avatarDecorationURL(); return json; } setAvatar(avatar) { return this.edit({ avatar }); } setBanner(banner) { return this.edit({ banner }); } setAboutMe(bio = null) { return this.edit({ bio }); } } TextBasedChannel.applyToClass(GuildMember); exports.GuildMember = GuildMember; exports.deletedGuildMembers = deletedGuildMembers; }); // node_modules/discord.js-selfbot-v13/src/util/AttachmentFlags.js var require_AttachmentFlags = __commonJS((exports, module) => { var BitField = require_BitField(); class AttachmentFlags extends BitField { } AttachmentFlags.FLAGS = { IS_REMIX: 1 << 2 }; module.exports = AttachmentFlags; }); // node_modules/discord.js-selfbot-v13/src/structures/MessageAttachment.js var require_MessageAttachment = __commonJS((exports, module) => { var AttachmentFlags = require_AttachmentFlags(); var Util = require_Util(); class MessageAttachment { constructor(attachment, name = null, data) { this.attachment = attachment; this.name = name; if (data) this._patch(data); } setDescription(description) { this.description = description; return this; } setFile(attachment, name = null) { this.attachment = attachment; this.name = name; return this; } setName(name) { this.name = name; return this; } setSpoiler(spoiler = true) { if (spoiler === this.spoiler) return this; if (!spoiler) { while (this.spoiler) { this.name = this.name.slice("SPOILER_".length); } return this; } this.name = `SPOILER_${this.name}`; return this; } _patch(data) { this.id = data.id; if ("size" in data) { this.size = data.size; } if ("url" in data) { this.url = data.url; } if ("proxy_url" in data) { this.proxyURL = data.proxy_url; } if ("height" in data) { this.height = data.height; } else { this.height ??= null; } if ("width" in data) { this.width = data.width; } else { this.width ??= null; } if ("content_type" in data) { this.contentType = data.content_type; } else { this.contentType ??= null; } if ("description" in data) { this.description = data.description; } else { this.description ??= null; } this.ephemeral = data.ephemeral ?? false; if ("duration_secs" in data) { this.duration = data.duration_secs; } else { this.duration ??= null; } if ("waveform" in data) { this.waveform = data.waveform; } else { this.waveform ??= null; } if ("flags" in data) { this.flags = new AttachmentFlags(data.flags).freeze(); } else { this.flags ??= new AttachmentFlags().freeze(); } if ("title" in data) { this.title = data.title; } else { this.title ??= null; } } get spoiler() { return Util.basename(this.url ?? this.name).startsWith("SPOILER_"); } toJSON() { return Util.flatten(this); } } module.exports = MessageAttachment; }); // node_modules/discord.js-selfbot-v13/src/structures/MessageMentions.js var require_MessageMentions = __commonJS((exports, module) => { var { Collection } = require_dist(); var { ChannelTypes } = require_Constants(); var Util = require_Util(); class MessageMentions { constructor(message, users, roles, everyone, crosspostedChannels, repliedUser) { Object.defineProperty(this, "client", { value: message.client }); Object.defineProperty(this, "guild", { value: message.guild }); Object.defineProperty(this, "_content", { value: message.content }); this.everyone = Boolean(everyone); if (users) { if (users instanceof Collection) { this.users = new Collection(users); } else { this.users = new Collection; for (const mention of users) { if (mention.member && message.guild) { message.guild.members._add(Object.assign(mention.member, { user: mention })); } const user = message.client.users._add(mention); this.users.set(user.id, user); } } } else { this.users = new Collection; } if (roles instanceof Collection) { this.roles = new Collection(roles); } else if (roles) { this.roles = new Collection; const guild = message.guild; if (guild) { for (const mention of roles) { const role = guild.roles.cache.get(mention); if (role) this.roles.set(role.id, role); } } } else { this.roles = new Collection; } this._members = null; this._channels = null; this._parsedUsers = null; if (crosspostedChannels) { if (crosspostedChannels instanceof Collection) { this.crosspostedChannels = new Collection(crosspostedChannels); } else { this.crosspostedChannels = new Collection; const channelTypes = Object.keys(ChannelTypes); for (const d of crosspostedChannels) { const type = channelTypes[d.type]; this.crosspostedChannels.set(d.id, { channelId: d.id, guildId: d.guild_id, type: type ?? "UNKNOWN", name: d.name }); } } } else { this.crosspostedChannels = new Collection; } this.repliedUser = repliedUser ? this.client.users._add(repliedUser) : null; } get members() { if (this._members) return this._members; if (!this.guild) return null; this._members = new Collection; this.users.forEach((user) => { const member = this.guild.members.resolve(user); if (member) this._members.set(member.user.id, member); }); return this._members; } get channels() { if (this._channels) return this._channels; this._channels = new Collection; let matches; while ((matches = this.constructor.CHANNELS_PATTERN.exec(this._content)) !== null) { const chan = this.client.channels.cache.get(matches[1]); if (chan) this._channels.set(chan.id, chan); } return this._channels; } get parsedUsers() { if (this._parsedUsers) return this._parsedUsers; this._parsedUsers = new Collection; let matches; while ((matches = this.constructor.USERS_PATTERN.exec(this._content)) !== null) { const user = this.client.users.cache.get(matches[1]); if (user) this._parsedUsers.set(user.id, user); } return this._parsedUsers; } has(data, { ignoreDirect = false, ignoreRoles = false, ignoreRepliedUser = false, ignoreEveryone = false } = {}) { const user = this.client.users.resolve(data); if (!ignoreEveryone && user && this.everyone) return true; const userWasRepliedTo = user && this.repliedUser?.id === user.id; if (!ignoreRepliedUser && userWasRepliedTo && this.users.has(user.id)) return true; if (!ignoreDirect) { if (user && (!ignoreRepliedUser || this.parsedUsers.has(user.id)) && this.users.has(user.id)) return true; const role = this.guild?.roles.resolve(data); if (role && this.roles.has(role.id)) return true; const channel = this.client.channels.resolve(data); if (channel && this.channels.has(channel.id)) return true; } if (!ignoreRoles) { const member = this.guild?.members.resolve(data); if (member) { for (const mentionedRole of this.roles.values()) if (member.roles.cache.has(mentionedRole.id)) return true; } } return false; } toJSON() { return Util.flatten(this, { members: true, channels: true }); } } MessageMentions.EVERYONE_PATTERN = /@(everyone|here)/g; MessageMentions.USERS_PATTERN = /<@!?(\d{17,19})>/g; MessageMentions.ROLES_PATTERN = /<@&(\d{17,19})>/g; MessageMentions.CHANNELS_PATTERN = /<#(\d{17,19})>/g; module.exports = MessageMentions; }); // node_modules/discord.js-selfbot-v13/src/structures/PollAnswer.js var require_PollAnswer = __commonJS((exports, module) => { var Base = require_Base(); var { Emoji } = require_Emoji(); class PollAnswer extends Base { constructor(client, data, poll) { super(client); Object.defineProperty(this, "poll", { value: poll }); this.id = data.answer_id; this.text = data.poll_media.text ?? null; Object.defineProperty(this, "_emoji", { value: data.poll_media.emoji ?? null }); this._patch(data); } _patch(data) { if ("count" in data) { this.voteCount = data.count; } else { this.voteCount ??= 0; } } get emoji() { if (!this._emoji || !this._emoji.id && !this._emoji.name) return null; return this.client.emojis.cache.get(this._emoji.id) ?? new Emoji(this.client, this._emoji); } fetchVoters({ after, limit } = {}) { return this.poll.message.channel.messages.fetchPollAnswerVoters({ messageId: this.poll.message.id, answerId: this.id, after, limit }); } } module.exports = { PollAnswer }; }); // node_modules/discord.js-selfbot-v13/src/structures/Poll.js var require_Poll = __commonJS((exports, module) => { var { Collection } = require_dist(); var Base = require_Base(); var { PollAnswer } = require_PollAnswer(); var { Error: Error2 } = require_errors(); var { PollLayoutTypes } = require_Constants(); class Poll extends Base { constructor(client, data, message) { super(client); Object.defineProperty(this, "message", { value: message }); this.question = { text: data.question.text }; this.answers = data.answers.reduce((acc, answer) => acc.set(answer.answer_id, new PollAnswer(this.client, answer, this)), new Collection); this.expiresTimestamp = Date.parse(data.expiry); this.allowMultiselect = data.allow_multiselect; this.layoutType = PollLayoutTypes[data.layout_type]; this._patch(data); } _patch(data) { if (data.results) { this.resultsFinalized = data.results.is_finalized; for (const answerResult of data.results.answer_counts) { const answer = this.answers.get(answerResult.id); answer?._patch(answerResult); } } else { this.resultsFinalized ??= false; } } get expiresAt() { return new Date(this.expiresTimestamp); } async end() { if (Date.now() > this.expiresTimestamp) { throw new Error2("POLL_ALREADY_EXPIRED"); } return this.message.channel.messages.endPoll(this.message.id); } } module.exports = { Poll }; }); // node_modules/discord.js-selfbot-v13/src/structures/ReactionCollector.js var require_ReactionCollector = __commonJS((exports, module) => { var { Collection } = require_dist(); var Collector = require_Collector(); var { Events } = require_Constants(); class ReactionCollector extends Collector { constructor(message, options = {}) { super(message.client, options); this.message = message; this.users = new Collection; this.total = 0; this.empty = this.empty.bind(this); this._handleChannelDeletion = this._handleChannelDeletion.bind(this); this._handleThreadDeletion = this._handleThreadDeletion.bind(this); this._handleGuildDeletion = this._handleGuildDeletion.bind(this); this._handleMessageDeletion = this._handleMessageDeletion.bind(this); const bulkDeleteListener = (messages) => { if (messages.has(this.message.id)) this.stop("messageDelete"); }; this.client.incrementMaxListeners(); this.client.on(Events.MESSAGE_REACTION_ADD, this.handleCollect); this.client.on(Events.MESSAGE_REACTION_REMOVE, this.handleDispose); this.client.on(Events.MESSAGE_REACTION_REMOVE_ALL, this.empty); this.client.on(Events.MESSAGE_DELETE, this._handleMessageDeletion); this.client.on(Events.MESSAGE_BULK_DELETE, bulkDeleteListener); this.client.on(Events.CHANNEL_DELETE, this._handleChannelDeletion); this.client.on(Events.THREAD_DELETE, this._handleThreadDeletion); this.client.on(Events.GUILD_DELETE, this._handleGuildDeletion); this.once("end", () => { this.client.removeListener(Events.MESSAGE_REACTION_ADD, this.handleCollect); this.client.removeListener(Events.MESSAGE_REACTION_REMOVE, this.handleDispose); this.client.removeListener(Events.MESSAGE_REACTION_REMOVE_ALL, this.empty); this.client.removeListener(Events.MESSAGE_DELETE, this._handleMessageDeletion); this.client.removeListener(Events.MESSAGE_BULK_DELETE, bulkDeleteListener); this.client.removeListener(Events.CHANNEL_DELETE, this._handleChannelDeletion); this.client.removeListener(Events.THREAD_DELETE, this._handleThreadDeletion); this.client.removeListener(Events.GUILD_DELETE, this._handleGuildDeletion); this.client.decrementMaxListeners(); }); this.on("collect", (reaction, user) => { if (reaction.count === 1) { this.emit("create", reaction, user); } this.total++; this.users.set(user.id, user); }); this.on("remove", (reaction, user) => { this.total--; if (!this.collected.some((r) => r.users.cache.has(user.id))) this.users.delete(user.id); }); } collect(reaction) { if (reaction.message.id !== this.message.id) return null; return ReactionCollector.key(reaction); } dispose(reaction, user) { if (reaction.message.id !== this.message.id) return null; if (this.collected.has(ReactionCollector.key(reaction)) && this.users.has(user.id)) { this.emit("remove", reaction, user); } return reaction.count ? null : ReactionCollector.key(reaction); } empty() { this.total = 0; this.collected.clear(); this.users.clear(); this.checkEnd(); } get endReason() { if (this.options.max && this.total >= this.options.max) return "limit"; if (this.options.maxEmojis && this.collected.size >= this.options.maxEmojis) return "emojiLimit"; if (this.options.maxUsers && this.users.size >= this.options.maxUsers) return "userLimit"; return null; } _handleMessageDeletion(message) { if (message.id === this.message.id) { this.stop("messageDelete"); } } _handleChannelDeletion(channel) { if (channel.id === this.message.channelId || channel.threads?.cache.has(this.message.channelId)) { this.stop("channelDelete"); } } _handleThreadDeletion(thread) { if (thread.id === this.message.channelId) { this.stop("threadDelete"); } } _handleGuildDeletion(guild) { if (guild.id === this.message.guild?.id) { this.stop("guildDelete"); } } static key(reaction) { return reaction.emoji.id ?? reaction.emoji.name; } } module.exports = ReactionCollector; }); // node_modules/discord.js-selfbot-v13/src/structures/Sticker.js var require_Sticker = __commonJS((exports) => { var process2 = import.meta.require("process"); var Base = require_Base(); var { Error: Error2 } = require_errors(); var { StickerFormatTypes, StickerTypes } = require_Constants(); var SnowflakeUtil = require_SnowflakeUtil(); var deletedStickers = new WeakSet; var deprecationEmittedForDeleted = false; class Sticker extends Base { constructor(client, sticker) { super(client); this._patch(sticker); } _patch(sticker) { this.id = sticker.id; if ("description" in sticker) { this.description = sticker.description; } else { this.description ??= null; } if ("type" in sticker) { this.type = StickerTypes[sticker.type]; } else { this.type ??= null; } if ("format_type" in sticker) { this.format = StickerFormatTypes[sticker.format_type]; } if ("name" in sticker) { this.name = sticker.name; } if ("pack_id" in sticker) { this.packId = sticker.pack_id; } else { this.packId ??= null; } if ("tags" in sticker) { this.tags = sticker.tags.split(", "); } else { this.tags ??= null; } if ("available" in sticker) { this.available = sticker.available; } else { this.available ??= null; } if ("guild_id" in sticker) { this.guildId = sticker.guild_id; } else { this.guildId ??= null; } if ("user" in sticker) { this.user = this.client.users._add(sticker.user); } else { this.user ??= null; } if ("sort_value" in sticker) { this.sortValue = sticker.sort_value; } else { this.sortValue ??= null; } } get createdTimestamp() { return SnowflakeUtil.timestampFrom(this.id); } get createdAt() { return new Date(this.createdTimestamp); } get deleted() { if (!deprecationEmittedForDeleted) { deprecationEmittedForDeleted = true; process2.emitWarning("Sticker#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.", "DeprecationWarning"); } return deletedStickers.has(this); } set deleted(value) { if (!deprecationEmittedForDeleted) { deprecationEmittedForDeleted = true; process2.emitWarning("Sticker#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.", "DeprecationWarning"); } if (value) deletedStickers.add(this); else deletedStickers.delete(this); } get partial() { return !this.type; } get guild() { return this.client.guilds.resolve(this.guildId); } get url() { return this.client.rest.cdn.Sticker(this.id, this.format); } async fetch() { const data = await this.client.api.stickers(this.id).get(); this._patch(data); return this; } async fetchPack() { return (this.packId && (await this.client.fetchPremiumStickerPacks()).get(this.packId)) ?? null; } async fetchUser() { if (this.partial) await this.fetch(); if (!this.guildId) throw new Error2("NOT_GUILD_STICKER"); return this.guild.stickers.fetchUser(this); } edit(data, reason) { return this.guild.stickers.edit(this, data, reason); } async delete(reason) { await this.guild.stickers.delete(this, reason); return this; } equals(other) { if (other instanceof Sticker) { return other.id === this.id && other.description === this.description && other.type === this.type && other.format === this.format && other.name === this.name && other.packId === this.packId && other.tags.length === this.tags.length && other.tags.every((tag) => this.tags.includes(tag)) && other.available === this.available && other.guildId === this.guildId && other.sortValue === this.sortValue; } else { return other.id === this.id && other.description === this.description && other.name === this.name && other.tags === this.tags.join(", "); } } } exports.Sticker = Sticker; exports.deletedStickers = deletedStickers; }); // node_modules/discord.js-selfbot-v13/src/managers/CachedManager.js var require_CachedManager = __commonJS((exports, module) => { var DataManager = require_DataManager(); var { _cleanupSymbol } = require_Constants(); class CachedManager extends DataManager { constructor(client, holds, iterable) { super(client, holds); Object.defineProperty(this, "_cache", { value: this.client.options.makeCache(this.constructor, this.holds) }); let cleanup = this._cache[_cleanupSymbol]?.(); if (cleanup) { cleanup = cleanup.bind(this._cache); client._cleanups.add(cleanup); client._finalizers.register(this, { cleanup, message: `Garbage collection completed on ${this.constructor.name}, ` + `which had a ${this._cache.constructor.name} of ${this.holds.name}.`, name: this.constructor.name }); } if (iterable) { for (const item of iterable) { this._add(item); } } } get cache() { return this._cache; } _add(data, cache = true, { id, extras = [] } = {}) { const existing = this.cache.get(id ?? data.id); if (existing) { if (cache) { existing._patch(data); return existing; } const clone = existing._clone(); clone._patch(data); return clone; } const entry = this.holds ? new this.holds(this.client, data, ...extras) : data; if (cache) this.cache.set(id ?? entry.id, entry); return entry; } } module.exports = CachedManager; }); // node_modules/discord.js-selfbot-v13/src/structures/BaseGuildEmoji.js var require_BaseGuildEmoji = __commonJS((exports, module) => { var { Emoji } = require_Emoji(); class BaseGuildEmoji extends Emoji { constructor(client, data, guild) { super(client, data); this.guild = guild; this.requiresColons = null; this.managed = null; this.available = null; this._patch(data); } _patch(data) { if ("name" in data) this.name = data.name; if ("require_colons" in data) { this.requiresColons = data.require_colons; } if ("managed" in data) { this.managed = data.managed; } if ("available" in data) { this.available = data.available; } } } module.exports = BaseGuildEmoji; }); // node_modules/discord.js-selfbot-v13/src/managers/GuildEmojiRoleManager.js var require_GuildEmojiRoleManager = __commonJS((exports, module) => { var { Collection } = require_dist(); var DataManager = require_DataManager(); var { TypeError: TypeError2 } = require_errors(); var { Role } = require_Role(); class GuildEmojiRoleManager extends DataManager { constructor(emoji) { super(emoji.client, Role); this.emoji = emoji; this.guild = emoji.guild; } get cache() { return this.guild.roles.cache.filter((role) => this.emoji._roles.includes(role.id)); } async add(roleOrRoles) { if (!Array.isArray(roleOrRoles) && !(roleOrRoles instanceof Collection)) roleOrRoles = [roleOrRoles]; const resolvedRoles = []; for (const role of roleOrRoles.values()) { const resolvedRole = this.guild.roles.resolveId(role); if (!resolvedRole) { throw new TypeError2("INVALID_ELEMENT", "Array or Collection", "roles", role); } resolvedRoles.push(resolvedRole); } const newRoles = [...new Set(resolvedRoles.concat(...this.cache.keys()))]; return this.set(newRoles); } async remove(roleOrRoles) { if (!Array.isArray(roleOrRoles) && !(roleOrRoles instanceof Collection)) roleOrRoles = [roleOrRoles]; const resolvedRoleIds = []; for (const role of roleOrRoles.values()) { const roleId = this.guild.roles.resolveId(role); if (!roleId) { throw new TypeError2("INVALID_ELEMENT", "Array or Collection", "roles", role); } resolvedRoleIds.push(roleId); } const newRoles = [...this.cache.keys()].filter((id) => !resolvedRoleIds.includes(id)); return this.set(newRoles); } set(roles) { return this.emoji.edit({ roles }); } clone() { const clone = new this.constructor(this.emoji); clone._patch([...this.cache.keys()]); return clone; } _patch(roles) { this.emoji._roles = roles; } valueOf() { return this.cache; } } module.exports = GuildEmojiRoleManager; }); // node_modules/discord.js-selfbot-v13/src/structures/GuildEmoji.js var require_GuildEmoji = __commonJS((exports, module) => { var BaseGuildEmoji = require_BaseGuildEmoji(); var { Error: Error2 } = require_errors(); var GuildEmojiRoleManager = require_GuildEmojiRoleManager(); var Permissions = require_Permissions(); class GuildEmoji extends BaseGuildEmoji { constructor(client, data, guild) { super(client, data, guild); this.author = null; Object.defineProperty(this, "_roles", { value: [], writable: true }); this._patch(data); } _clone() { const clone = super._clone(); clone._roles = this._roles.slice(); return clone; } _patch(data) { super._patch(data); if (data.user) this.author = this.client.users._add(data.user); if (data.roles) this._roles = data.roles; } get deletable() { if (!this.guild.members.me) throw new Error2("GUILD_UNCACHED_ME"); return !this.managed && this.guild.members.me.permissions.has(Permissions.FLAGS.MANAGE_EMOJIS_AND_STICKERS); } get roles() { return new GuildEmojiRoleManager(this); } fetchAuthor() { return this.guild.emojis.fetchAuthor(this); } async edit(data, reason) { const roles = data.roles?.map((r) => r.id ?? r); const newData = await this.client.api.guilds(this.guild.id).emojis(this.id).patch({ data: { name: data.name, roles }, reason }); const clone = this._clone(); clone._patch(newData); return clone; } setName(name, reason) { return this.edit({ name }, reason); } async delete(reason) { await this.guild.emojis.delete(this, reason); return this; } equals(other) { if (other instanceof GuildEmoji) { return other.id === this.id && other.name === this.name && other.managed === this.managed && other.available === this.available && other.requiresColons === this.requiresColons && other.roles.cache.size === this.roles.cache.size && other.roles.cache.every((role) => this.roles.cache.has(role.id)); } else { return other.id === this.id && other.name === this.name && other.roles.length === this.roles.cache.size && other.roles.every((role) => this.roles.cache.has(role)); } } } module.exports = GuildEmoji; }); // node_modules/discord.js-selfbot-v13/src/structures/ReactionEmoji.js var require_ReactionEmoji = __commonJS((exports, module) => { var { Emoji } = require_Emoji(); var Util = require_Util(); class ReactionEmoji extends Emoji { constructor(reaction, emoji) { super(reaction.message.client, emoji); this.reaction = reaction; } toJSON() { return Util.flatten(this, { identifier: true }); } valueOf() { return this.id; } } module.exports = ReactionEmoji; }); // node_modules/discord.js-selfbot-v13/src/managers/ReactionUserManager.js var require_ReactionUserManager = __commonJS((exports, module) => { var { Collection } = require_dist(); var CachedManager = require_CachedManager(); var { Error: Error2 } = require_errors(); var User = require_User(); var { ReactionTypes } = require_Constants(); class ReactionUserManager extends CachedManager { constructor(reaction, iterable) { super(reaction.client, User, iterable); this.reaction = reaction; } async fetch({ limit = 100, after, type = "NORMAL" } = {}) { const message = this.reaction.message; const data = await this.client.api.channels[message.channelId].messages[message.id].reactions[this.reaction.emoji.identifier].get({ query: { limit, after, type: typeof type == "number" ? type : ReactionTypes[type] } }); const users = new Collection; for (const rawUser of data) { const user = this.client.users._add(rawUser); this.cache.set(user.id, user); users.set(user.id, user); } return users; } async remove(user = this.client.user) { const userId = this.client.users.resolveId(user); if (!userId) throw new Error2("REACTION_RESOLVE_USER"); const message = this.reaction.message; await this.client.api.channels[message.channelId].messages[message.id].reactions[this.reaction.emoji.identifier][userId === this.client.user.id ? "@me" : userId].delete(); return this.reaction; } } module.exports = ReactionUserManager; }); // node_modules/discord.js-selfbot-v13/src/structures/MessageReaction.js var require_MessageReaction = __commonJS((exports, module) => { var GuildEmoji = require_GuildEmoji(); var ReactionEmoji = require_ReactionEmoji(); var ReactionUserManager = require_ReactionUserManager(); var Util = require_Util(); class MessageReaction { constructor(client, data, message) { Object.defineProperty(this, "client", { value: client }); this.message = message; this.me = data.me; this.meBurst = Boolean(data.me_burst); this.users = new ReactionUserManager(this, this.me ? [client.user] : []); this._emoji = new ReactionEmoji(this, data.emoji); this.burstColors = null; this._patch(data); } _patch(data) { if (data.burst_colors) { this.burstColors = data.burst_colors; } if ("count" in data) { this.count ??= data.count; } if ("count_details" in data) { this.countDetails = { burst: data.count_details.burst, normal: data.count_details.normal }; } else { this.countDetails ??= { burst: 0, normal: 0 }; } } async remove() { await this.client.api.channels(this.message.channelId).messages(this.message.id).reactions(this._emoji.identifier).delete(); return this; } get emoji() { if (this._emoji instanceof GuildEmoji) return this._emoji; if (this._emoji.id) { const emojis = this.message.client.emojis.cache; if (emojis.has(this._emoji.id)) { const emoji = emojis.get(this._emoji.id); this._emoji = emoji; return emoji; } } return this._emoji; } get partial() { return this.count === null; } async fetch() { const message = await this.message.fetch(); const existing = message.reactions.cache.get(this.emoji.id ?? this.emoji.name); this._patch(existing ?? { count: 0 }); return this; } toJSON() { return Util.flatten(this, { emoji: "emojiId", message: "messageId" }); } _add(user, burst) { if (this.partial) return; this.users.cache.set(user.id, user); if (!this.me || user.id !== this.message.client.user.id || this.count === 0) { this.count++; if (burst) this.countDetails.burst++; else this.countDetails.normal++; } if (user.id === this.message.client.user.id) { if (burst) this.meBurst = true; else this.me = true; } } _remove(user, burst) { if (this.partial) return; this.users.cache.delete(user.id); if (!this.me || user.id !== this.message.client.user.id) { this.count--; if (burst) this.countDetails.burst--; else this.countDetails.normal--; } if (user.id === this.message.client.user.id) { if (burst) this.meBurst = false; else this.me = false; } if (this.count <= 0 && this.users.cache.size === 0) { this.message.reactions.cache.delete(this.emoji.id ?? this.emoji.name); } } } module.exports = MessageReaction; }); // node_modules/discord.js-selfbot-v13/src/managers/ReactionManager.js var require_ReactionManager = __commonJS((exports, module) => { var CachedManager = require_CachedManager(); var MessageReaction = require_MessageReaction(); class ReactionManager extends CachedManager { constructor(message, iterable) { super(message.client, MessageReaction, iterable); this.message = message; } _add(data, cache) { return super._add(data, cache, { id: data.emoji.id ?? data.emoji.name, extras: [this.message] }); } async removeAll() { await this.client.api.channels(this.message.channelId).messages(this.message.id).reactions.delete(); return this.message; } } module.exports = ReactionManager; }); // node_modules/discord.js-selfbot-v13/src/structures/Message.js var require_Message = __commonJS((exports) => { var process2 = import.meta.require("process"); var { Collection } = require_dist(); var Base = require_Base(); var BaseMessageComponent = require_BaseMessageComponent(); var MessageAttachment = require_MessageAttachment(); var Embed = require_MessageEmbed(); var Mentions = require_MessageMentions(); var MessagePayload = require_MessagePayload(); var { Poll } = require_Poll(); var ReactionCollector = require_ReactionCollector(); var { Sticker } = require_Sticker(); var Application = require_Application(); var { Error: Error2 } = require_errors(); var ReactionManager = require_ReactionManager(); var { InteractionTypes, MessageTypes, SystemMessageTypes, MessageComponentTypes, MessageReferenceTypes } = require_Constants(); var MessageFlags = require_MessageFlags(); var Permissions = require_Permissions(); var SnowflakeUtil = require_SnowflakeUtil(); var Util = require_Util(); var deletedMessages = new WeakSet; var deprecationEmittedForDeleted = false; class Message extends Base { constructor(client, data) { super(client); this.channelId = data.channel_id; this.guildId = data.guild_id ?? this.channel?.guild?.id ?? null; this._patch(data); } _patch(data) { this.id = data.id; if ("position" in data) { this.position = data.position; } else { this.position ??= null; } this.createdTimestamp = this.id ? SnowflakeUtil.timestampFrom(this.id) : new Date(data.timestamp).getTime(); if ("type" in data) { this.type = MessageTypes[data.type]; this.system = SystemMessageTypes.includes(this.type); } else { this.system ??= null; this.type ??= null; } if ("content" in data) { this.content = data.content; } else { this.content ??= null; } if ("author" in data) { this.author = this.client.users._add(data.author, !data.webhook_id); } else { this.author ??= null; } if ("pinned" in data) { this.pinned = Boolean(data.pinned); } else { this.pinned ??= null; } if ("tts" in data) { this.tts = data.tts; } else { this.tts ??= null; } if ("nonce" in data) { this.nonce = data.nonce; } else { this.nonce ??= null; } if ("embeds" in data) { this.embeds = data.embeds.map((e) => new Embed(e, true)); } else { this.embeds = this.embeds?.slice() ?? []; } if ("components" in data) { this.components = data.components.map((c) => BaseMessageComponent.create(c, this.client)); } else { this.components = this.components?.slice() ?? []; } if ("attachments" in data) { this.attachments = new Collection; if (data.attachments) { for (const attachment of data.attachments) { this.attachments.set(attachment.id, new MessageAttachment(attachment.url, attachment.filename, attachment)); } } } else { this.attachments = new Collection(this.attachments); } if ("sticker_items" in data || "stickers" in data) { this.stickers = new Collection((data.sticker_items ?? data.stickers)?.map((s) => [s.id, new Sticker(this.client, s)])); } else { this.stickers = new Collection(this.stickers); } if (data.edited_timestamp) { this.editedTimestamp = data.edited_timestamp ? Date.parse(data.edited_timestamp) : null; } else { this.editedTimestamp ??= null; } if ("reactions" in data) { this.reactions = new ReactionManager(this); if (data.reactions?.length > 0) { for (const reaction of data.reactions) { this.reactions._add(reaction); } } } else { this.reactions ??= new ReactionManager(this); } if (!this.mentions) { this.mentions = new Mentions(this, data.mentions, data.mention_roles, data.mention_everyone, data.mention_channels, data.referenced_message?.author); } else { this.mentions = new Mentions(this, data.mentions ?? this.mentions.users, data.mention_roles ?? this.mentions.roles, data.mention_everyone ?? this.mentions.everyone, data.mention_channels ?? this.mentions.crosspostedChannels, data.referenced_message?.author ?? this.mentions.repliedUser); } if ("webhook_id" in data) { this.webhookId = data.webhook_id; } else { this.webhookId ??= null; } if (data.poll) { this.poll = new Poll(this.client, data.poll, this); } else { this.poll ??= null; } if ("application" in data) { this.groupActivityApplication = new Application(this.client, data.application); } else { this.groupActivityApplication ??= null; } if ("application_id" in data) { this.applicationId = data.application_id; } else { this.applicationId ??= null; } if ("activity" in data) { this.activity = { partyId: data.activity.party_id, type: data.activity.type }; } else { this.activity ??= null; } if ("thread" in data) { this.client.channels._add(data.thread, this.guild); } if (this.member && data.member) { this.member._patch(data.member); } else if (data.member && this.guild && this.author) { this.guild.members._add(Object.assign(data.member, { user: this.author })); } if ("flags" in data) { this.flags = new MessageFlags(data.flags).freeze(); } else { this.flags = new MessageFlags(this.flags).freeze(); } if ("message_reference" in data) { this.reference = { channelId: data.message_reference.channel_id, guildId: data.message_reference.guild_id, messageId: data.message_reference.message_id, type: MessageReferenceTypes[data.message_reference.type ?? 0] }; } else { this.reference ??= null; } if (data.referenced_message) { this.channel?.messages._add({ guild_id: data.message_reference?.guild_id, ...data.referenced_message }); } if (data.interaction) { this.interaction = { id: data.interaction.id, type: InteractionTypes[data.interaction.type], commandName: data.interaction.name, user: this.client.users._add(data.interaction.user) }; } else { this.interaction ??= null; } if (data.message_snapshots) { this.messageSnapshots = data.message_snapshots.reduce((coll, snapshot) => { const channel = this.client.channels.cache.get(this.reference.channelId); const snapshotData = { ...snapshot.message, id: this.reference.messageId, channel_id: this.reference.channelId, guild_id: this.reference.guildId }; return coll.set(this.reference.messageId, channel ? channel.messages._add(snapshotData) : new this.constructor(this.client, snapshotData)); }, new Collection); } else { this.messageSnapshots ??= new Collection; } if (data.call) { this.call = { endedTimestamp: data.call.ended_timestamp ? Date.parse(data.call.ended_timestamp) : null, participants: data.call.participants, get endedAt() { return this.endedTimestamp && new Date(this.endedTimestamp); } }; } else { this.call ??= null; } } get deleted() { if (!deprecationEmittedForDeleted) { deprecationEmittedForDeleted = true; process2.emitWarning("Message#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.", "DeprecationWarning"); } return deletedMessages.has(this); } set deleted(value) { if (!deprecationEmittedForDeleted) { deprecationEmittedForDeleted = true; process2.emitWarning("Message#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.", "DeprecationWarning"); } if (value) deletedMessages.add(this); else deletedMessages.delete(this); } get channel() { return this.client.channels.cache.get(this.channelId) ?? null; } get partial() { return typeof this.content !== "string" || !this.author; } get member() { return this.guild?.members.resolve(this.author) ?? null; } get createdAt() { return new Date(this.createdTimestamp); } get editedAt() { return this.editedTimestamp ? new Date(this.editedTimestamp) : null; } get guild() { return this.client.guilds.cache.get(this.guildId) ?? this.channel?.guild ?? null; } get hasThread() { return this.flags.has(MessageFlags.FLAGS.HAS_THREAD); } get thread() { return this.channel?.threads?.cache.get(this.id) ?? null; } get url() { return `https://discord.com/channels/${this.guildId ?? "@me"}/${this.channelId}/${this.id}`; } get cleanContent() { return this.content != null && this.channel ? Util.cleanContent(this.content, this.channel) : null; } createReactionCollector(options = {}) { return new ReactionCollector(this, options); } awaitReactions(options = {}) { return new Promise((resolve, reject) => { const collector = this.createReactionCollector(options); collector.once("end", (reactions, reason) => { if (options.errors?.includes(reason)) reject(reactions); else resolve(reactions); }); }); } get editable() { const precheck = Boolean(this.author.id === this.client.user.id && !deletedMessages.has(this) && (!this.guild || this.channel?.viewable) && this.reference?.type !== "FORWARD"); if (this.channel?.isThread()) { if (this.channel.archived) return false; if (this.channel.locked) { const permissions = this.channel.permissionsFor(this.client.user); if (!permissions?.has(Permissions.FLAGS.MANAGE_THREADS, true)) return false; } } return precheck; } get deletable() { if (deletedMessages.has(this)) { return false; } if (!this.guild) { return this.author.id === this.client.user.id; } if (!this.channel?.viewable) { return false; } const permissions = this.channel?.permissionsFor(this.client.user); if (!permissions) return false; if (permissions.has(Permissions.FLAGS.ADMINISTRATOR, false)) return true; return Boolean(this.author.id === this.client.user.id || permissions.has(Permissions.FLAGS.MANAGE_MESSAGES, false) && this.guild.members.me.communicationDisabledUntilTimestamp < Date.now()); } get bulkDeletable() { return false; } get pinnable() { const { channel } = this; return Boolean(!this.system && !deletedMessages.has(this) && (!this.guild || channel?.viewable && channel?.permissionsFor(this.client.user)?.has(Permissions.FLAGS.MANAGE_MESSAGES, false))); } async fetchReference() { if (!this.reference) throw new Error2("MESSAGE_REFERENCE_MISSING"); const { channelId, messageId } = this.reference; if (!messageId) throw new Error2("MESSAGE_REFERENCE_MISSING"); const channel = this.client.channels.resolve(channelId); if (!channel) throw new Error2("GUILD_CHANNEL_RESOLVE"); const message = await channel.messages.fetch(messageId); return message; } get crosspostable() { const bitfield = Permissions.FLAGS.SEND_MESSAGES | (this.author.id === this.client.user.id ? Permissions.defaultBit : Permissions.FLAGS.MANAGE_MESSAGES); const { channel } = this; return Boolean(channel?.type === "GUILD_NEWS" && !this.flags.has(MessageFlags.FLAGS.CROSSPOSTED) && this.reference?.type !== "FORWARD" && this.type === "DEFAULT" && !this.poll && channel.viewable && channel.permissionsFor(this.client.user)?.has(bitfield, false) && !deletedMessages.has(this)); } async edit(options) { if (!this.channel) throw new Error2("CHANNEL_NOT_CACHED"); return this.channel.messages.edit(this, options); } async crosspost() { if (!this.channel) throw new Error2("CHANNEL_NOT_CACHED"); return this.channel.messages.crosspost(this.id); } async pin(reason) { if (!this.channel) throw new Error2("CHANNEL_NOT_CACHED"); await this.channel.messages.pin(this.id, reason); return this; } async unpin(reason) { if (!this.channel) throw new Error2("CHANNEL_NOT_CACHED"); await this.channel.messages.unpin(this.id, reason); return this; } async react(emoji, burst = false) { if (!this.channel) throw new Error2("CHANNEL_NOT_CACHED"); await this.channel.messages.react(this.id, emoji, burst); return this.client.actions.MessageReactionAdd.handle({ [this.client.actions.injectedUser]: this.client.user, [this.client.actions.injectedChannel]: this.channel, [this.client.actions.injectedMessage]: this, emoji: Util.resolvePartialEmoji(emoji), me_burst: burst }, true).reaction; } async delete() { if (!this.channel) throw new Error2("CHANNEL_NOT_CACHED"); await this.channel.messages.delete(this.id); return this; } async reply(options) { if (!this.channel) throw new Error2("CHANNEL_NOT_CACHED"); let data; if (options instanceof MessagePayload) { data = options; } else { data = MessagePayload.create(this, options, { reply: { messageReference: this, failIfNotExists: options?.failIfNotExists ?? this.client.options.failIfNotExists } }); } return this.channel.send(data); } forward(channel) { const resolvedChannel = this.client.channels.resolve(channel); if (!resolvedChannel) throw new Error2("INVALID_TYPE", "channel", "TextBasedChannelResolvable"); return resolvedChannel.send({ forward: { message: this.id, channel: this.channelId, guild: this.guildId } }); } async startThread(options = {}) { if (!this.channel) throw new Error2("CHANNEL_NOT_CACHED"); if (!["GUILD_TEXT", "GUILD_NEWS"].includes(this.channel.type)) { throw new Error2("MESSAGE_THREAD_PARENT"); } if (this.hasThread) throw new Error2("MESSAGE_EXISTING_THREAD"); return this.channel.threads.create({ ...options, startMessage: this }); } vote(...ids) { return this.client.api.channels(this.channel.id).polls(this.id).answers["@me"].put({ data: { answer_ids: ids.flat(1).map((value) => value.toString()) } }); } async fetch(force = true) { if (!this.channel) throw new Error2("CHANNEL_NOT_CACHED"); return this.channel.messages.fetch(this.id, { force }); } async fetchWebhook() { if (!this.webhookId) throw new Error2("WEBHOOK_MESSAGE"); if (this.webhookId === this.applicationId) throw new Error2("WEBHOOK_APPLICATION"); return this.client.fetchWebhook(this.webhookId); } suppressEmbeds(suppress = true) { const flags = new MessageFlags(this.flags.bitfield); if (suppress) { flags.add(MessageFlags.FLAGS.SUPPRESS_EMBEDS); } else { flags.remove(MessageFlags.FLAGS.SUPPRESS_EMBEDS); } return this.edit({ flags }); } removeAttachments() { return this.edit({ attachments: [] }); } resolveComponent(customId) { return this.components.flatMap(BaseMessageComponent.extractInteractiveComponents).find((component) => (component.customId ?? component.custom_id) === customId) ?? null; } equals(message, rawData) { if (!message) return false; const embedUpdate = !message.author && !message.attachments; if (embedUpdate) return this.id === message.id && this.embeds.length === message.embeds.length; let equal = this.id === message.id && this.author.id === message.author.id && this.content === message.content && this.tts === message.tts && this.nonce === message.nonce && this.embeds.length === message.embeds.length && this.attachments.size === message.attachments.size && this.attachments.every((attachment) => message.attachments.has(attachment.id)) && this.embeds.every((embed, index) => embed.equals(message.embeds[index])); if (equal && rawData) { equal = this.mentions.everyone === message.mentions.everyone && this.createdTimestamp === new Date(rawData.timestamp).getTime() && this.editedTimestamp === new Date(rawData.edited_timestamp).getTime(); } return equal; } inGuild() { return Boolean(this.guildId); } toString() { return this.content; } toJSON() { return super.toJSON({ channel: "channelId", author: "authorId", groupActivityApplication: "groupActivityApplicationId", guild: "guildId", cleanContent: true, member: false, reactions: false }); } get isMessage() { return true; } clickButton(buttonid) { const button = this.resolveComponent(buttonid); if (!button || button.type !== "BUTTON") throw new TypeError("BUTTON_NOT_FOUND"); if (button.disabled) throw new TypeError("BUTTON_CANNOT_CLICK"); const nonce = SnowflakeUtil.generate(); const data = { type: InteractionTypes.MESSAGE_COMPONENT, nonce, guild_id: this.guildId, channel_id: this.channelId, message_id: this.id, application_id: this.applicationId ?? this.author.id, session_id: this.client.sessionId, message_flags: this.flags.bitfield, data: { component_type: MessageComponentTypes.BUTTON, custom_id: button.customId } }; this.client.api.interactions.post({ data }); return Util.createPromiseInteraction(this.client, nonce, 5000, true, this); } selectMenu(menu, values = []) { let selectMenu = menu; if (/[0-4]/.test(menu)) { selectMenu = this.components[menu]?.components[0]; } else if (typeof menu == "string") { selectMenu = this.components.flatMap((row) => row.components).find((b) => ["STRING_SELECT", "USER_SELECT", "ROLE_SELECT", "MENTIONABLE_SELECT", "CHANNEL_SELECT"].includes(b.type) && b.customId == menu && !b.disabled); } if (values.length < selectMenu.minValues) { throw new RangeError(`[SELECT_MENU_MIN_VALUES] The minimum number of values is ${selectMenu.minValues}`); } if (values.length > selectMenu?.maxValues) { throw new RangeError(`[SELECT_MENU_MAX_VALUES] The maximum number of values is ${selectMenu.maxValues}`); } values = values.map((value) => { switch (selectMenu.type) { case "STRING_SELECT": { return selectMenu.options.find((obj) => obj.value === value || obj.label === value).value; } case "USER_SELECT": { return this.client.users.resolveId(value); } case "ROLE_SELECT": { return this.guild.roles.resolveId(value); } case "MENTIONABLE_SELECT": { return this.client.users.resolveId(value) || this.guild.roles.resolveId(value); } case "CHANNEL_SELECT": { return this.client.channels.resolveId(value); } default: { return value; } } }); const nonce = SnowflakeUtil.generate(); const data = { type: InteractionTypes.MESSAGE_COMPONENT, guild_id: this.guildId, channel_id: this.channelId, message_id: this.id, application_id: this.applicationId ?? this.author.id, session_id: this.client.sessionId, message_flags: this.flags.bitfield, data: { component_type: MessageComponentTypes[selectMenu.type], custom_id: selectMenu.customId, type: MessageComponentTypes[selectMenu.type], values }, nonce }; this.client.api.interactions.post({ data }); return Util.createPromiseInteraction(this.client, nonce, 5000, true, this); } markUnread() { return this.client.api.channels[this.channelId].messages[this.id].ack.post({ data: { manual: true, mention_count: 1 } }); } markRead() { return this.client.api.channels[this.channelId].messages[this.id].ack.post({ data: { token: null } }); } report(breadcrumbs, elements = {}) { return this.client.api.reporting.message.post({ data: { version: "1.0", variant: "4", language: "en", breadcrumbs, elements, channel_id: this.channelId, message_id: this.id, name: "message" } }); } } exports.Message = Message; exports.deletedMessages = deletedMessages; }); // node_modules/discord.js-selfbot-v13/src/managers/MessageManager.js var require_MessageManager = __commonJS((exports, module) => { var { Collection } = require_dist(); var CachedManager = require_CachedManager(); var { TypeError: TypeError2 } = require_errors(); var { Message } = require_Message(); var MessagePayload = require_MessagePayload(); var Util = require_Util(); class MessageManager extends CachedManager { constructor(channel, iterable) { super(channel.client, Message, iterable); this.channel = channel; } _add(data, cache) { return super._add(data, cache); } fetch(message, { cache = true, force = false } = {}) { return typeof message === "string" ? this._fetchId(message, cache, force) : this._fetchMany(message, cache); } async fetchPinned(cache = true) { const data = await this.client.api.channels[this.channel.id].messages.pins.get({ query: { limit: 50 } }); const messages = new Collection; for (const message of data?.items || []) messages.set(message.id, this._add(message, cache)); return messages; } async edit(message, options) { const messageId = this.resolveId(message); if (!messageId) throw new TypeError2("INVALID_TYPE", "message", "MessageResolvable"); const { data, files } = await (options instanceof MessagePayload ? options : MessagePayload.create(message instanceof Message ? message : this, options)).resolveData().resolveFiles(); const attachments = await Util.getUploadURL(this.client, this.channel.id, files); const requestPromises = attachments.map(async (attachment) => { await Util.uploadFile(files[attachment.id].file, attachment.upload_url); return { id: attachment.id, filename: files[attachment.id].name, uploaded_filename: attachment.upload_filename, description: files[attachment.id].description, duration_secs: files[attachment.id].duration_secs, waveform: files[attachment.id].waveform }; }); const attachmentsData = await Promise.all(requestPromises); attachmentsData.sort((a, b) => parseInt(a.id) - parseInt(b.id)); data.attachments = attachmentsData; const d = await this.client.api.channels[this.channel.id].messages[messageId].patch({ data }); const existing = this.cache.get(messageId); if (existing) { const clone = existing._clone(); clone._patch(d); return clone; } return this._add(d); } async crosspost(message) { message = this.resolveId(message); if (!message) throw new TypeError2("INVALID_TYPE", "message", "MessageResolvable"); const data = await this.client.api.channels(this.channel.id).messages(message).crosspost.post(); return this.cache.get(data.id) ?? this._add(data); } async pin(message, reason) { message = this.resolveId(message); if (!message) throw new TypeError2("INVALID_TYPE", "message", "MessageResolvable"); await this.client.api.channels(this.channel.id).messages.pins(message).put({ reason }); } async unpin(message, reason) { message = this.resolveId(message); if (!message) throw new TypeError2("INVALID_TYPE", "message", "MessageResolvable"); await this.client.api.channels(this.channel.id).messages.pins(message).delete({ reason }); } async react(message, emoji, burst = false) { message = this.resolveId(message); if (!message) throw new TypeError2("INVALID_TYPE", "message", "MessageResolvable"); emoji = Util.resolvePartialEmoji(emoji); if (!emoji) throw new TypeError2("EMOJI_TYPE", "emoji", "EmojiIdentifierResolvable"); const emojiId = emoji.id ? `${emoji.animated ? "a:" : ""}${emoji.name}:${emoji.id}` : encodeURIComponent(emoji.name); await this.client.api.channels(this.channel.id).messages(message).reactions(emojiId, "@me").put({ query: { type: burst ? 1 : 0 } }); } async delete(message) { message = this.resolveId(message); if (!message) throw new TypeError2("INVALID_TYPE", "message", "MessageResolvable"); await this.client.api.channels(this.channel.id).messages(message).delete(); } _fetchId(messageId, cache, force) { if (!force) { const existing = this.cache.get(messageId); if (existing && !existing.partial) return existing; } return new Promise((resolve, reject) => { this._fetchMany({ around: messageId, limit: 50 }, cache).then((data_) => data_.has(messageId) ? resolve(data_.get(messageId)) : reject(new Error("MESSAGE_ID_NOT_FOUND"))).catch(reject); }); } async search(options = {}) { let { authors, content, mentions, has, maxId, minId, channels, pinned, nsfw, offset, limit, sortBy, sortOrder } = Object.assign({ authors: [], content: "", mentions: [], has: [], maxId: null, minId: null, channels: [], pinned: false, nsfw: false, offset: 0, limit: 25, sortBy: "timestamp", sortOrder: "desc" }, options); if (authors.length > 0) authors = authors.map((u) => this.client.users.resolveId(u)); if (mentions.length > 0) mentions = mentions.map((u) => this.client.users.resolveId(u)); if (channels.length > 0) { channels = channels.map((c) => this.client.channels.resolveId(c)).filter((id) => { if (this.channel.guildId) { const c = this.channel.guild.channels.cache.get(id); if (!c || !c.messages) return false; const perm = c.permissionsFor(this.client.user); if (!perm.has("READ_MESSAGE_HISTORY") || !perm.has("VIEW_CHANNEL")) return false; return true; } else { return true; } }); } if (limit && limit > 25) throw new RangeError("MESSAGE_SEARCH_LIMIT"); let stringQuery = []; const result = new Collection; let data; if (authors.length > 0) stringQuery.push(authors.map((id) => `author_id=${id}`).join("&")); if (content && content.length) stringQuery.push(`content=${encodeURIComponent(content)}`); if (mentions.length > 0) stringQuery.push(mentions.map((id) => `mentions=${id}`).join("&")); has = has.filter((v) => ["link", "embed", "file", "video", "image", "sound", "sticker"].includes(v)); if (has.length > 0) stringQuery.push(has.map((v) => `has=${v}`).join("&")); if (maxId) stringQuery.push(`max_id=${maxId}`); if (minId) stringQuery.push(`min_id=${minId}`); if (nsfw) stringQuery.push("include_nsfw=true"); if (offset !== 0) stringQuery.push(`offset=${offset}`); if (limit !== 25) stringQuery.push(`limit=${limit}`); if (["timestamp", "relevance"].includes(options.sortBy)) { stringQuery.push(`sort_by=${options.sortBy}`); } else { stringQuery.push("sort_by=timestamp"); } if (["asc", "desc"].includes(options.sortOrder)) { stringQuery.push(`sort_order=${options.sortOrder}`); } else { stringQuery.push("sort_order=desc"); } if (this.channel.guildId && channels.length > 0) { stringQuery.push(channels.map((id) => `channel_id=${id}`).join("&")); } if (typeof pinned == "boolean") stringQuery.push(`pinned=${pinned}`); if (!stringQuery.length) { return { messages: result, total: 0 }; } if (this.channel.guildId) { data = await this.client.api.guilds[this.channel.guildId].messages[`search?${stringQuery.join("&")}`].get(); } else { stringQuery = stringQuery.filter((v) => !v.startsWith("channel_id") && !v.startsWith("include_nsfw")); data = await this.client.api.channels[this.channel.id].messages[`search?${stringQuery.join("&")}`].get(); } for await (const message of data.messages) result.set(message[0].id, new Message(this.client, message[0])); return { messages: result, total: data.total_results }; } async _fetchMany(options = {}, cache) { const data = await this.client.api.channels[this.channel.id].messages.get({ query: options }); const messages = new Collection; for (const message of data) messages.set(message.id, this._add(message, cache)); return messages; } async endPoll(messageId) { const message = await this.client.api.channels(this.channel.id).polls(messageId).expire.post(); return this._add(message, false); } async fetchPollAnswerVoters({ messageId, answerId, after, limit }) { const voters = await this.client.channels(this.channel.id).polls(messageId).answers(answerId).get({ query: { limit, after } }); return voters.users.reduce((acc, user) => acc.set(user.id, this.client.users._add(user, false)), new Collection); } } module.exports = MessageManager; }); // node_modules/discord.js-selfbot-v13/src/structures/Interaction.js var require_Interaction = __commonJS((exports, module) => { var Base = require_Base(); var { InteractionTypes, MessageComponentTypes, ApplicationCommandTypes } = require_Constants(); var Permissions = require_Permissions(); var SnowflakeUtil = require_SnowflakeUtil(); class Interaction extends Base { constructor(client, data) { super(client); this.type = InteractionTypes[data.type]; this.id = data.id; Object.defineProperty(this, "token", { value: data.token }); this.applicationId = data.application_id; this.channelId = data.channel_id ?? null; this.guildId = data.guild_id ?? null; this.user = this.client.users._add(data.user ?? data.member.user); this.member = data.member ? this.guild?.members._add(data.member) ?? data.member : null; this.version = data.version; this.appPermissions = data.app_permissions ? new Permissions(data.app_permissions).freeze() : null; this.memberPermissions = data.member?.permissions ? new Permissions(data.member.permissions).freeze() : null; this.locale = data.locale; this.guildLocale = data.guild_locale ?? null; } get createdTimestamp() { return SnowflakeUtil.timestampFrom(this.id); } get createdAt() { return new Date(this.createdTimestamp); } get channel() { return this.client.channels.cache.get(this.channelId) ?? null; } get guild() { return this.client.guilds.cache.get(this.guildId) ?? null; } inGuild() { return Boolean(this.guildId && this.member); } inCachedGuild() { return Boolean(this.guild && this.member); } inRawGuild() { return Boolean(this.guildId && !this.guild && this.member); } isApplicationCommand() { return InteractionTypes[this.type] === InteractionTypes.APPLICATION_COMMAND; } isCommand() { return InteractionTypes[this.type] === InteractionTypes.APPLICATION_COMMAND && typeof this.targetId === "undefined"; } isContextMenu() { return InteractionTypes[this.type] === InteractionTypes.APPLICATION_COMMAND && typeof this.targetId !== "undefined"; } isModalSubmit() { return InteractionTypes[this.type] === InteractionTypes.MODAL_SUBMIT; } isUserContextMenu() { return this.isContextMenu() && ApplicationCommandTypes[this.targetType] === ApplicationCommandTypes.USER; } isMessageContextMenu() { return this.isContextMenu() && ApplicationCommandTypes[this.targetType] === ApplicationCommandTypes.MESSAGE; } isAutocomplete() { return InteractionTypes[this.type] === InteractionTypes.APPLICATION_COMMAND_AUTOCOMPLETE; } isMessageComponent() { return InteractionTypes[this.type] === InteractionTypes.MESSAGE_COMPONENT; } isButton() { return InteractionTypes[this.type] === InteractionTypes.MESSAGE_COMPONENT && MessageComponentTypes[this.componentType] === MessageComponentTypes.BUTTON; } isSelectMenu() { return InteractionTypes[this.type] === InteractionTypes.MESSAGE_COMPONENT && MessageComponentTypes[this.componentType] === MessageComponentTypes.SELECT_MENU; } isRepliable() { return ![InteractionTypes.PING, InteractionTypes.APPLICATION_COMMAND_AUTOCOMPLETE].includes(InteractionTypes[this.type]); } } module.exports = Interaction; }); // node_modules/discord.js-selfbot-v13/src/structures/InteractionWebhook.js var require_InteractionWebhook = __commonJS((exports, module) => { var Webhook = require_Webhook(); class InteractionWebhook { constructor(client, id, token) { Object.defineProperty(this, "client", { value: client }); this.id = id; Object.defineProperty(this, "token", { value: token, writable: true, configurable: true }); } send() { } fetchMessage() { } editMessage() { } deleteMessage() { } get url() { } } Webhook.applyToClass(InteractionWebhook, ["sendSlackMessage", "edit", "delete", "createdTimestamp", "createdAt"]); module.exports = InteractionWebhook; }); // node_modules/discord.js-selfbot-v13/src/structures/MessagePayload.js var require_MessagePayload = __commonJS((exports, module) => { var { Buffer: Buffer2 } = import.meta.require("buffer"); var BaseMessageComponent = require_BaseMessageComponent(); var MessageEmbed = require_MessageEmbed(); var { RangeError: RangeError2, Error: DjsError } = require_errors(); var ActivityFlags = require_ActivityFlags(); var { PollLayoutTypes, MessageReferenceTypes } = require_Constants(); var DataResolver = require_DataResolver(); var MessageFlags = require_MessageFlags(); var SnowflakeUtil = require_SnowflakeUtil(); var Util = require_Util(); class MessagePayload { constructor(target, options) { this.target = target; this.options = options; this.data = null; this.files = null; } get isWebhook() { const Webhook = require_Webhook(); const WebhookClient = require_WebhookClient(); return this.target instanceof Webhook || this.target instanceof WebhookClient; } get isUser() { const User = require_User(); const { GuildMember } = require_GuildMember(); return this.target instanceof User || this.target instanceof GuildMember; } get isMessage() { const { Message } = require_Message(); return this.target instanceof Message; } get isMessageManager() { const MessageManager = require_MessageManager(); return this.target instanceof MessageManager; } get isInteraction() { const Interaction = require_Interaction(); const InteractionWebhook = require_InteractionWebhook(); return this.target instanceof Interaction || this.target instanceof InteractionWebhook; } makeContent() { let content; if (this.options.content === null) { content = ""; } else if (typeof this.options.content !== "undefined") { content = Util.verifyString(this.options.content, RangeError2, "MESSAGE_CONTENT_TYPE", false); } return content; } resolveData() { if (this.data) return this; const isInteraction = this.isInteraction; const isWebhook = this.isWebhook; const content = this.makeContent(); const tts = Boolean(this.options.tts); let nonce = SnowflakeUtil.generate(); if (typeof this.options.nonce !== "undefined") { nonce = this.options.nonce; if (typeof nonce === "number" ? !Number.isInteger(nonce) : typeof nonce !== "string") { throw new RangeError2("MESSAGE_NONCE_TYPE"); } } const components = this.options.components?.map((c) => BaseMessageComponent.create(c).toJSON()); let username; let avatarURL; let threadName; let appliedTags; if (isWebhook) { username = this.options.username ?? this.target.name; if (this.options.avatarURL) avatarURL = this.options.avatarURL; if (this.options.threadName) threadName = this.options.threadName; if (this.options.appliedTags) appliedTags = this.options.appliedTags; } let flags; if (this.options.flags != null) { flags = new MessageFlags(this.options.flags).bitfield; } if (isInteraction && this.options.ephemeral) { flags |= MessageFlags.FLAGS.EPHEMERAL; } let allowedMentions = typeof this.options.allowedMentions === "undefined" ? this.target.client.options.allowedMentions : this.options.allowedMentions; if (allowedMentions) { allowedMentions = Util.cloneObject(allowedMentions); allowedMentions.replied_user = allowedMentions.repliedUser; delete allowedMentions.repliedUser; } let message_reference; if (typeof this.options.reply === "object") { const reference = this.options.reply.messageReference; const message_id = this.isMessage ? reference.id ?? reference : this.target.messages.resolveId(reference); if (message_id) { message_reference = { message_id, type: MessageReferenceTypes.DEFAULT, fail_if_not_exists: this.options.reply.failIfNotExists ?? this.target.client.options.failIfNotExists }; } } if (typeof this.options.forward === "object") { const reference = this.options.forward.message; const channel_id = reference.channelId ?? this.target.client.channels.resolveId(this.options.forward.channel); const guild_id = reference.guildId ?? this.target.client.guilds.resolveId(this.options.forward.guild); const message_id = this.target.messages.resolveId(reference); if (message_id) { if (!channel_id) throw new DjsError("INVALID_TYPE", "channelId", "TextBasedChannelResolvable"); message_reference = { type: MessageReferenceTypes.FORWARD, message_id, channel_id, guild_id: guild_id ?? undefined }; } } const attachments = this.options.files?.map((file, index) => ({ id: index.toString(), description: file.description })); if (Array.isArray(this.options.attachments)) { this.options.attachments.push(...attachments ?? []); } else { this.options.attachments = attachments; } let activity; if (this.options.activity instanceof Object && typeof this.options.activity.partyId == "string" && this.options.activity.type) { const type = ActivityFlags.resolve(this.options.activity.type); const sessionId = this.target.client.sessionId; const partyId = this.options.activity.partyId; activity = { type, party_id: partyId, session_id: sessionId }; } let poll; if (this.options.poll) { poll = { question: { text: this.options.poll.question.text }, answers: this.options.poll.answers.map((answer) => ({ poll_media: { text: answer.text, emoji: Util.resolvePartialEmoji(answer.emoji) } })), duration: this.options.poll.duration, allow_multiselect: this.options.poll.allowMultiselect, layout_type: typeof this.options.poll.layoutType == "number" ? this.options.poll.layoutType : PollLayoutTypes[this.options.poll.layoutType] }; } this.data = { activity, content, tts, nonce, embeds: this.options.embeds?.map((embed) => new MessageEmbed(embed).toJSON()), components, username, avatar_url: avatarURL, allowed_mentions: this.isMessage && message_reference === undefined && this.target?.author?.id !== this.target?.client?.user?.id ? undefined : allowedMentions, flags, message_reference, attachments: this.options.attachments, sticker_ids: this.options.stickers?.map((sticker) => sticker.id ?? sticker), thread_name: threadName, applied_tags: appliedTags, poll }; return this; } async resolveFiles() { if (this.files) return this; this.files = await Promise.all(this.options.files?.map((file) => this.constructor.resolveFile(file)) ?? []); return this; } static async resolveFile(fileLike) { let attachment; let name; const findName = (thing) => { if (typeof thing === "string") { return Util.basename(thing); } if (thing.path) { return Util.basename(thing.path); } return "file.jpg"; }; const ownAttachment = typeof fileLike === "string" || fileLike instanceof Buffer2 || typeof fileLike.pipe === "function"; if (ownAttachment) { attachment = fileLike; name = findName(attachment); } else { attachment = fileLike.attachment; name = fileLike.name ?? findName(attachment); } const resource = await DataResolver.resolveFile(attachment); return { attachment, name, file: resource, description: fileLike.description, duration_secs: fileLike.duration, waveform: fileLike.waveform }; } static create(target, options, extra = {}) { return new this(target, typeof options !== "object" || options === null ? { content: options, ...extra } : { ...options, ...extra }); } } module.exports = MessagePayload; }); // node_modules/lodash/isArray.js var require_isArray = __commonJS((exports, module) => { var isArray = Array.isArray; module.exports = isArray; }); // node_modules/lodash/_freeGlobal.js var require__freeGlobal = __commonJS((exports, module) => { var freeGlobal = typeof global == "object" && global && global.Object === Object && global; module.exports = freeGlobal; }); // node_modules/lodash/_root.js var require__root = __commonJS((exports, module) => { var freeGlobal = require__freeGlobal(); var freeSelf = typeof self == "object" && self && self.Object === Object && self; var root = freeGlobal || freeSelf || Function("return this")(); module.exports = root; }); // node_modules/lodash/_Symbol.js var require__Symbol = __commonJS((exports, module) => { var root = require__root(); var Symbol2 = root.Symbol; module.exports = Symbol2; }); // node_modules/lodash/_getRawTag.js var require__getRawTag = __commonJS((exports, module) => { function getRawTag(value) { var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag]; try { value[symToStringTag] = undefined; var unmasked = true; } catch (e) { } var result = nativeObjectToString.call(value); if (unmasked) { if (isOwn) { value[symToStringTag] = tag; } else { delete value[symToStringTag]; } } return result; } var Symbol2 = require__Symbol(); var objectProto = Object.prototype; var hasOwnProperty = objectProto.hasOwnProperty; var nativeObjectToString = objectProto.toString; var symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined; module.exports = getRawTag; }); // node_modules/lodash/_objectToString.js var require__objectToString = __commonJS((exports, module) => { function objectToString(value) { return nativeObjectToString.call(value); } var objectProto = Object.prototype; var nativeObjectToString = objectProto.toString; module.exports = objectToString; }); // node_modules/lodash/_baseGetTag.js var require__baseGetTag = __commonJS((exports, module) => { function baseGetTag(value) { if (value == null) { return value === undefined ? undefinedTag : nullTag; } return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value); } var Symbol2 = require__Symbol(); var getRawTag = require__getRawTag(); var objectToString = require__objectToString(); var nullTag = "[object Null]"; var undefinedTag = "[object Undefined]"; var symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined; module.exports = baseGetTag; }); // node_modules/lodash/isObjectLike.js var require_isObjectLike = __commonJS((exports, module) => { function isObjectLike(value) { return value != null && typeof value == "object"; } module.exports = isObjectLike; }); // node_modules/lodash/isSymbol.js var require_isSymbol = __commonJS((exports, module) => { function isSymbol(value) { return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag; } var baseGetTag = require__baseGetTag(); var isObjectLike = require_isObjectLike(); var symbolTag = "[object Symbol]"; module.exports = isSymbol; }); // node_modules/lodash/_isKey.js var require__isKey = __commonJS((exports, module) => { function isKey(value, object) { if (isArray(value)) { return false; } var type = typeof value; if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) { return true; } return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object); } var isArray = require_isArray(); var isSymbol = require_isSymbol(); var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/; var reIsPlainProp = /^\w*$/; module.exports = isKey; }); // node_modules/lodash/isObject.js var require_isObject = __commonJS((exports, module) => { function isObject(value) { var type = typeof value; return value != null && (type == "object" || type == "function"); } module.exports = isObject; }); // node_modules/lodash/isFunction.js var require_isFunction = __commonJS((exports, module) => { function isFunction(value) { if (!isObject(value)) { return false; } var tag = baseGetTag(value); return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; } var baseGetTag = require__baseGetTag(); var isObject = require_isObject(); var asyncTag = "[object AsyncFunction]"; var funcTag = "[object Function]"; var genTag = "[object GeneratorFunction]"; var proxyTag = "[object Proxy]"; module.exports = isFunction; }); // node_modules/lodash/_coreJsData.js var require__coreJsData = __commonJS((exports, module) => { var root = require__root(); var coreJsData = root["__core-js_shared__"]; module.exports = coreJsData; }); // node_modules/lodash/_isMasked.js var require__isMasked = __commonJS((exports, module) => { function isMasked(func) { return !!maskSrcKey && maskSrcKey in func; } var coreJsData = require__coreJsData(); var maskSrcKey = function() { var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); return uid ? "Symbol(src)_1." + uid : ""; }(); module.exports = isMasked; }); // node_modules/lodash/_toSource.js var require__toSource = __commonJS((exports, module) => { function toSource(func) { if (func != null) { try { return funcToString.call(func); } catch (e) { } try { return func + ""; } catch (e) { } } return ""; } var funcProto = Function.prototype; var funcToString = funcProto.toString; module.exports = toSource; }); // node_modules/lodash/_baseIsNative.js var require__baseIsNative = __commonJS((exports, module) => { function baseIsNative(value) { if (!isObject(value) || isMasked(value)) { return false; } var pattern = isFunction(value) ? reIsNative : reIsHostCtor; return pattern.test(toSource(value)); } var isFunction = require_isFunction(); var isMasked = require__isMasked(); var isObject = require_isObject(); var toSource = require__toSource(); var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; var reIsHostCtor = /^\[object .+?Constructor\]$/; var funcProto = Function.prototype; var objectProto = Object.prototype; var funcToString = funcProto.toString; var hasOwnProperty = objectProto.hasOwnProperty; var reIsNative = RegExp("^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"); module.exports = baseIsNative; }); // node_modules/lodash/_getValue.js var require__getValue = __commonJS((exports, module) => { function getValue(object, key) { return object == null ? undefined : object[key]; } module.exports = getValue; }); // node_modules/lodash/_getNative.js var require__getNative = __commonJS((exports, module) => { function getNative(object, key) { var value = getValue(object, key); return baseIsNative(value) ? value : undefined; } var baseIsNative = require__baseIsNative(); var getValue = require__getValue(); module.exports = getNative; }); // node_modules/lodash/_nativeCreate.js var require__nativeCreate = __commonJS((exports, module) => { var getNative = require__getNative(); var nativeCreate = getNative(Object, "create"); module.exports = nativeCreate; }); // node_modules/lodash/_hashClear.js var require__hashClear = __commonJS((exports, module) => { function hashClear() { this.__data__ = nativeCreate ? nativeCreate(null) : {}; this.size = 0; } var nativeCreate = require__nativeCreate(); module.exports = hashClear; }); // node_modules/lodash/_hashDelete.js var require__hashDelete = __commonJS((exports, module) => { function hashDelete(key) { var result = this.has(key) && delete this.__data__[key]; this.size -= result ? 1 : 0; return result; } module.exports = hashDelete; }); // node_modules/lodash/_hashGet.js var require__hashGet = __commonJS((exports, module) => { function hashGet(key) { var data = this.__data__; if (nativeCreate) { var result = data[key]; return result === HASH_UNDEFINED ? undefined : result; } return hasOwnProperty.call(data, key) ? data[key] : undefined; } var nativeCreate = require__nativeCreate(); var HASH_UNDEFINED = "__lodash_hash_undefined__"; var objectProto = Object.prototype; var hasOwnProperty = objectProto.hasOwnProperty; module.exports = hashGet; }); // node_modules/lodash/_hashHas.js var require__hashHas = __commonJS((exports, module) => { function hashHas(key) { var data = this.__data__; return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); } var nativeCreate = require__nativeCreate(); var objectProto = Object.prototype; var hasOwnProperty = objectProto.hasOwnProperty; module.exports = hashHas; }); // node_modules/lodash/_hashSet.js var require__hashSet = __commonJS((exports, module) => { function hashSet(key, value) { var data = this.__data__; this.size += this.has(key) ? 0 : 1; data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value; return this; } var nativeCreate = require__nativeCreate(); var HASH_UNDEFINED = "__lodash_hash_undefined__"; module.exports = hashSet; }); // node_modules/lodash/_Hash.js var require__Hash = __commonJS((exports, module) => { function Hash(entries) { var index = -1, length = entries == null ? 0 : entries.length; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } var hashClear = require__hashClear(); var hashDelete = require__hashDelete(); var hashGet = require__hashGet(); var hashHas = require__hashHas(); var hashSet = require__hashSet(); Hash.prototype.clear = hashClear; Hash.prototype["delete"] = hashDelete; Hash.prototype.get = hashGet; Hash.prototype.has = hashHas; Hash.prototype.set = hashSet; module.exports = Hash; }); // node_modules/lodash/_listCacheClear.js var require__listCacheClear = __commonJS((exports, module) => { function listCacheClear() { this.__data__ = []; this.size = 0; } module.exports = listCacheClear; }); // node_modules/lodash/eq.js var require_eq = __commonJS((exports, module) => { function eq(value, other) { return value === other || value !== value && other !== other; } module.exports = eq; }); // node_modules/lodash/_assocIndexOf.js var require__assocIndexOf = __commonJS((exports, module) => { function assocIndexOf(array, key) { var length = array.length; while (length--) { if (eq(array[length][0], key)) { return length; } } return -1; } var eq = require_eq(); module.exports = assocIndexOf; }); // node_modules/lodash/_listCacheDelete.js var require__listCacheDelete = __commonJS((exports, module) => { function listCacheDelete(key) { var data = this.__data__, index = assocIndexOf(data, key); if (index < 0) { return false; } var lastIndex = data.length - 1; if (index == lastIndex) { data.pop(); } else { splice.call(data, index, 1); } --this.size; return true; } var assocIndexOf = require__assocIndexOf(); var arrayProto = Array.prototype; var splice = arrayProto.splice; module.exports = listCacheDelete; }); // node_modules/lodash/_listCacheGet.js var require__listCacheGet = __commonJS((exports, module) => { function listCacheGet(key) { var data = this.__data__, index = assocIndexOf(data, key); return index < 0 ? undefined : data[index][1]; } var assocIndexOf = require__assocIndexOf(); module.exports = listCacheGet; }); // node_modules/lodash/_listCacheHas.js var require__listCacheHas = __commonJS((exports, module) => { function listCacheHas(key) { return assocIndexOf(this.__data__, key) > -1; } var assocIndexOf = require__assocIndexOf(); module.exports = listCacheHas; }); // node_modules/lodash/_listCacheSet.js var require__listCacheSet = __commonJS((exports, module) => { function listCacheSet(key, value) { var data = this.__data__, index = assocIndexOf(data, key); if (index < 0) { ++this.size; data.push([key, value]); } else { data[index][1] = value; } return this; } var assocIndexOf = require__assocIndexOf(); module.exports = listCacheSet; }); // node_modules/lodash/_ListCache.js var require__ListCache = __commonJS((exports, module) => { function ListCache(entries) { var index = -1, length = entries == null ? 0 : entries.length; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } var listCacheClear = require__listCacheClear(); var listCacheDelete = require__listCacheDelete(); var listCacheGet = require__listCacheGet(); var listCacheHas = require__listCacheHas(); var listCacheSet = require__listCacheSet(); ListCache.prototype.clear = listCacheClear; ListCache.prototype["delete"] = listCacheDelete; ListCache.prototype.get = listCacheGet; ListCache.prototype.has = listCacheHas; ListCache.prototype.set = listCacheSet; module.exports = ListCache; }); // node_modules/lodash/_Map.js var require__Map = __commonJS((exports, module) => { var getNative = require__getNative(); var root = require__root(); var Map2 = getNative(root, "Map"); module.exports = Map2; }); // node_modules/lodash/_mapCacheClear.js var require__mapCacheClear = __commonJS((exports, module) => { function mapCacheClear() { this.size = 0; this.__data__ = { hash: new Hash, map: new (Map2 || ListCache), string: new Hash }; } var Hash = require__Hash(); var ListCache = require__ListCache(); var Map2 = require__Map(); module.exports = mapCacheClear; }); // node_modules/lodash/_isKeyable.js var require__isKeyable = __commonJS((exports, module) => { function isKeyable(value) { var type = typeof value; return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null; } module.exports = isKeyable; }); // node_modules/lodash/_getMapData.js var require__getMapData = __commonJS((exports, module) => { function getMapData(map, key) { var data = map.__data__; return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map; } var isKeyable = require__isKeyable(); module.exports = getMapData; }); // node_modules/lodash/_mapCacheDelete.js var require__mapCacheDelete = __commonJS((exports, module) => { function mapCacheDelete(key) { var result = getMapData(this, key)["delete"](key); this.size -= result ? 1 : 0; return result; } var getMapData = require__getMapData(); module.exports = mapCacheDelete; }); // node_modules/lodash/_mapCacheGet.js var require__mapCacheGet = __commonJS((exports, module) => { function mapCacheGet(key) { return getMapData(this, key).get(key); } var getMapData = require__getMapData(); module.exports = mapCacheGet; }); // node_modules/lodash/_mapCacheHas.js var require__mapCacheHas = __commonJS((exports, module) => { function mapCacheHas(key) { return getMapData(this, key).has(key); } var getMapData = require__getMapData(); module.exports = mapCacheHas; }); // node_modules/lodash/_mapCacheSet.js var require__mapCacheSet = __commonJS((exports, module) => { function mapCacheSet(key, value) { var data = getMapData(this, key), size = data.size; data.set(key, value); this.size += data.size == size ? 0 : 1; return this; } var getMapData = require__getMapData(); module.exports = mapCacheSet; }); // node_modules/lodash/_MapCache.js var require__MapCache = __commonJS((exports, module) => { function MapCache(entries) { var index = -1, length = entries == null ? 0 : entries.length; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } var mapCacheClear = require__mapCacheClear(); var mapCacheDelete = require__mapCacheDelete(); var mapCacheGet = require__mapCacheGet(); var mapCacheHas = require__mapCacheHas(); var mapCacheSet = require__mapCacheSet(); MapCache.prototype.clear = mapCacheClear; MapCache.prototype["delete"] = mapCacheDelete; MapCache.prototype.get = mapCacheGet; MapCache.prototype.has = mapCacheHas; MapCache.prototype.set = mapCacheSet; module.exports = MapCache; }); // node_modules/lodash/memoize.js var require_memoize = __commonJS((exports, module) => { function memoize(func, resolver) { if (typeof func != "function" || resolver != null && typeof resolver != "function") { throw new TypeError(FUNC_ERROR_TEXT); } var memoized = function() { var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache; if (cache.has(key)) { return cache.get(key); } var result = func.apply(this, args); memoized.cache = cache.set(key, result) || cache; return result; }; memoized.cache = new (memoize.Cache || MapCache); return memoized; } var MapCache = require__MapCache(); var FUNC_ERROR_TEXT = "Expected a function"; memoize.Cache = MapCache; module.exports = memoize; }); // node_modules/lodash/_memoizeCapped.js var require__memoizeCapped = __commonJS((exports, module) => { function memoizeCapped(func) { var result = memoize(func, function(key) { if (cache.size === MAX_MEMOIZE_SIZE) { cache.clear(); } return key; }); var cache = result.cache; return result; } var memoize = require_memoize(); var MAX_MEMOIZE_SIZE = 500; module.exports = memoizeCapped; }); // node_modules/lodash/_stringToPath.js var require__stringToPath = __commonJS((exports, module) => { var memoizeCapped = require__memoizeCapped(); var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; var reEscapeChar = /\\(\\)?/g; var stringToPath = memoizeCapped(function(string) { var result = []; if (string.charCodeAt(0) === 46) { result.push(""); } string.replace(rePropName, function(match, number, quote, subString) { result.push(quote ? subString.replace(reEscapeChar, "$1") : number || match); }); return result; }); module.exports = stringToPath; }); // node_modules/lodash/_arrayMap.js var require__arrayMap = __commonJS((exports, module) => { function arrayMap(array, iteratee) { var index = -1, length = array == null ? 0 : array.length, result = Array(length); while (++index < length) { result[index] = iteratee(array[index], index, array); } return result; } module.exports = arrayMap; }); // node_modules/lodash/_baseToString.js var require__baseToString = __commonJS((exports, module) => { function baseToString(value) { if (typeof value == "string") { return value; } if (isArray(value)) { return arrayMap(value, baseToString) + ""; } if (isSymbol(value)) { return symbolToString ? symbolToString.call(value) : ""; } var result = value + ""; return result == "0" && 1 / value == -INFINITY ? "-0" : result; } var Symbol2 = require__Symbol(); var arrayMap = require__arrayMap(); var isArray = require_isArray(); var isSymbol = require_isSymbol(); var INFINITY = 1 / 0; var symbolProto = Symbol2 ? Symbol2.prototype : undefined; var symbolToString = symbolProto ? symbolProto.toString : undefined; module.exports = baseToString; }); // node_modules/lodash/toString.js var require_toString = __commonJS((exports, module) => { function toString(value) { return value == null ? "" : baseToString(value); } var baseToString = require__baseToString(); module.exports = toString; }); // node_modules/lodash/_castPath.js var require__castPath = __commonJS((exports, module) => { function castPath(value, object) { if (isArray(value)) { return value; } return isKey(value, object) ? [value] : stringToPath(toString(value)); } var isArray = require_isArray(); var isKey = require__isKey(); var stringToPath = require__stringToPath(); var toString = require_toString(); module.exports = castPath; }); // node_modules/lodash/_toKey.js var require__toKey = __commonJS((exports, module) => { function toKey(value) { if (typeof value == "string" || isSymbol(value)) { return value; } var result = value + ""; return result == "0" && 1 / value == -INFINITY ? "-0" : result; } var isSymbol = require_isSymbol(); var INFINITY = 1 / 0; module.exports = toKey; }); // node_modules/lodash/_baseGet.js var require__baseGet = __commonJS((exports, module) => { function baseGet(object, path) { path = castPath(path, object); var index = 0, length = path.length; while (object != null && index < length) { object = object[toKey(path[index++])]; } return index && index == length ? object : undefined; } var castPath = require__castPath(); var toKey = require__toKey(); module.exports = baseGet; }); // node_modules/lodash/get.js var require_get = __commonJS((exports, module) => { function get(object, path, defaultValue) { var result = object == null ? undefined : baseGet(object, path); return result === undefined ? defaultValue : result; } var baseGet = require__baseGet(); module.exports = get; }); // node_modules/fast-deep-equal/es6/index.js var require_es6 = __commonJS((exports, module) => { module.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 instanceof Map && b instanceof Map) { if (a.size !== b.size) return false; for (i of a.entries()) if (!b.has(i[0])) return false; for (i of a.entries()) if (!equal(i[1], b.get(i[0]))) return false; return true; } if (a instanceof Set && b instanceof Set) { if (a.size !== b.size) return false; for (i of a.entries()) if (!b.has(i[0])) return false; return true; } if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) { length = a.length; if (length != b.length) return false; for (i = length;i-- !== 0; ) if (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/lodash/_setCacheAdd.js var require__setCacheAdd = __commonJS((exports, module) => { function setCacheAdd(value) { this.__data__.set(value, HASH_UNDEFINED); return this; } var HASH_UNDEFINED = "__lodash_hash_undefined__"; module.exports = setCacheAdd; }); // node_modules/lodash/_setCacheHas.js var require__setCacheHas = __commonJS((exports, module) => { function setCacheHas(value) { return this.__data__.has(value); } module.exports = setCacheHas; }); // node_modules/lodash/_SetCache.js var require__SetCache = __commonJS((exports, module) => { function SetCache(values) { var index = -1, length = values == null ? 0 : values.length; this.__data__ = new MapCache; while (++index < length) { this.add(values[index]); } } var MapCache = require__MapCache(); var setCacheAdd = require__setCacheAdd(); var setCacheHas = require__setCacheHas(); SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; SetCache.prototype.has = setCacheHas; module.exports = SetCache; }); // node_modules/lodash/_baseFindIndex.js var require__baseFindIndex = __commonJS((exports, module) => { function baseFindIndex(array, predicate, fromIndex, fromRight) { var length = array.length, index = fromIndex + (fromRight ? 1 : -1); while (fromRight ? index-- : ++index < length) { if (predicate(array[index], index, array)) { return index; } } return -1; } module.exports = baseFindIndex; }); // node_modules/lodash/_baseIsNaN.js var require__baseIsNaN = __commonJS((exports, module) => { function baseIsNaN(value) { return value !== value; } module.exports = baseIsNaN; }); // node_modules/lodash/_strictIndexOf.js var require__strictIndexOf = __commonJS((exports, module) => { function strictIndexOf(array, value, fromIndex) { var index = fromIndex - 1, length = array.length; while (++index < length) { if (array[index] === value) { return index; } } return -1; } module.exports = strictIndexOf; }); // node_modules/lodash/_baseIndexOf.js var require__baseIndexOf = __commonJS((exports, module) => { function baseIndexOf(array, value, fromIndex) { return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex); } var baseFindIndex = require__baseFindIndex(); var baseIsNaN = require__baseIsNaN(); var strictIndexOf = require__strictIndexOf(); module.exports = baseIndexOf; }); // node_modules/lodash/_arrayIncludes.js var require__arrayIncludes = __commonJS((exports, module) => { function arrayIncludes(array, value) { var length = array == null ? 0 : array.length; return !!length && baseIndexOf(array, value, 0) > -1; } var baseIndexOf = require__baseIndexOf(); module.exports = arrayIncludes; }); // node_modules/lodash/_arrayIncludesWith.js var require__arrayIncludesWith = __commonJS((exports, module) => { function arrayIncludesWith(array, value, comparator) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { if (comparator(value, array[index])) { return true; } } return false; } module.exports = arrayIncludesWith; }); // node_modules/lodash/_cacheHas.js var require__cacheHas = __commonJS((exports, module) => { function cacheHas(cache, key) { return cache.has(key); } module.exports = cacheHas; }); // node_modules/lodash/_Set.js var require__Set = __commonJS((exports, module) => { var getNative = require__getNative(); var root = require__root(); var Set2 = getNative(root, "Set"); module.exports = Set2; }); // node_modules/lodash/noop.js var require_noop = __commonJS((exports, module) => { function noop() { } module.exports = noop; }); // node_modules/lodash/_setToArray.js var require__setToArray = __commonJS((exports, module) => { function setToArray(set) { var index = -1, result = Array(set.size); set.forEach(function(value) { result[++index] = value; }); return result; } module.exports = setToArray; }); // node_modules/lodash/_createSet.js var require__createSet = __commonJS((exports, module) => { var Set2 = require__Set(); var noop = require_noop(); var setToArray = require__setToArray(); var INFINITY = 1 / 0; var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop : function(values) { return new Set2(values); }; module.exports = createSet; }); // node_modules/lodash/_baseUniq.js var require__baseUniq = __commonJS((exports, module) => { function baseUniq(array, iteratee, comparator) { var index = -1, includes = arrayIncludes, length = array.length, isCommon = true, result = [], seen = result; if (comparator) { isCommon = false; includes = arrayIncludesWith; } else if (length >= LARGE_ARRAY_SIZE) { var set = iteratee ? null : createSet(array); if (set) { return setToArray(set); } isCommon = false; includes = cacheHas; seen = new SetCache; } else { seen = iteratee ? [] : result; } outer: while (++index < length) { var value = array[index], computed = iteratee ? iteratee(value) : value; value = comparator || value !== 0 ? value : 0; if (isCommon && computed === computed) { var seenIndex = seen.length; while (seenIndex--) { if (seen[seenIndex] === computed) { continue outer; } } if (iteratee) { seen.push(computed); } result.push(value); } else if (!includes(seen, computed, comparator)) { if (seen !== result) { seen.push(computed); } result.push(value); } } return result; } var SetCache = require__SetCache(); var arrayIncludes = require__arrayIncludes(); var arrayIncludesWith = require__arrayIncludesWith(); var cacheHas = require__cacheHas(); var createSet = require__createSet(); var setToArray = require__setToArray(); var LARGE_ARRAY_SIZE = 200; module.exports = baseUniq; }); // node_modules/lodash/uniqWith.js var require_uniqWith = __commonJS((exports, module) => { function uniqWith(array, comparator) { comparator = typeof comparator == "function" ? comparator : undefined; return array && array.length ? baseUniq(array, undefined, comparator) : []; } var baseUniq = require__baseUniq(); module.exports = uniqWith; }); // node_modules/@sapphire/shapeshift/dist/cjs/index.cjs var require_cjs4 = __commonJS((exports) => { function _interopDefault(e3) { return e3 && e3.__esModule ? e3 : { default: e3 }; } function i() { throw new Error("setTimeout has not been defined"); } function u() { throw new Error("clearTimeout has not been defined"); } function c(e3) { if (t === setTimeout) return setTimeout(e3, 0); if ((t === i || !t) && setTimeout) return t = setTimeout, setTimeout(e3, 0); try { return t(e3, 0); } catch (n3) { try { return t.call(null, e3, 0); } catch (n4) { return t.call(this || r, e3, 0); } } } function h() { f && l && (f = false, l.length ? s = l.concat(s) : a = -1, s.length && d()); } function d() { if (!f) { var e3 = c(h); f = true; for (var t3 = s.length;t3; ) { for (l = s, s = [];++a < t3; ) l && l[a].run(); a = -1, t3 = s.length; } l = null, f = false, function(e4) { if (n === clearTimeout) return clearTimeout(e4); if ((n === u || !n) && clearTimeout) return n = clearTimeout, clearTimeout(e4); try { n(e4); } catch (t4) { try { return n.call(null, e4); } catch (t5) { return n.call(this || r, e4); } } }(e3); } } function m(e3, t3) { (this || r).fun = e3, (this || r).array = t3; } function p() { } function c$1(e3) { return e3.call.bind(e3); } function O(e3, t3) { if (typeof e3 != "object") return false; try { return t3(e3), true; } catch (e4) { return false; } } function S(e3) { return l$1 && y ? b(e3) !== undefined : B(e3) || k(e3) || E(e3) || D(e3) || U(e3) || P(e3) || x(e3) || I(e3) || M(e3) || z(e3) || F(e3); } function B(e3) { return l$1 && y ? b(e3) === "Uint8Array" : m2(e3) === "[object Uint8Array]" || u$1(e3) && e3.buffer !== undefined; } function k(e3) { return l$1 && y ? b(e3) === "Uint8ClampedArray" : m2(e3) === "[object Uint8ClampedArray]"; } function E(e3) { return l$1 && y ? b(e3) === "Uint16Array" : m2(e3) === "[object Uint16Array]"; } function D(e3) { return l$1 && y ? b(e3) === "Uint32Array" : m2(e3) === "[object Uint32Array]"; } function U(e3) { return l$1 && y ? b(e3) === "Int8Array" : m2(e3) === "[object Int8Array]"; } function P(e3) { return l$1 && y ? b(e3) === "Int16Array" : m2(e3) === "[object Int16Array]"; } function x(e3) { return l$1 && y ? b(e3) === "Int32Array" : m2(e3) === "[object Int32Array]"; } function I(e3) { return l$1 && y ? b(e3) === "Float32Array" : m2(e3) === "[object Float32Array]"; } function M(e3) { return l$1 && y ? b(e3) === "Float64Array" : m2(e3) === "[object Float64Array]"; } function z(e3) { return l$1 && y ? b(e3) === "BigInt64Array" : m2(e3) === "[object BigInt64Array]"; } function F(e3) { return l$1 && y ? b(e3) === "BigUint64Array" : m2(e3) === "[object BigUint64Array]"; } function T2(e3) { return m2(e3) === "[object Map]"; } function N(e3) { return m2(e3) === "[object Set]"; } function W(e3) { return m2(e3) === "[object WeakMap]"; } function $(e3) { return m2(e3) === "[object WeakSet]"; } function C(e3) { return m2(e3) === "[object ArrayBuffer]"; } function V(e3) { return typeof ArrayBuffer != "undefined" && (C.working ? C(e3) : e3 instanceof ArrayBuffer); } function G(e3) { return m2(e3) === "[object DataView]"; } function R(e3) { return typeof DataView != "undefined" && (G.working ? G(e3) : e3 instanceof DataView); } function J(e3) { return m2(e3) === "[object SharedArrayBuffer]"; } function _(e3) { return typeof SharedArrayBuffer != "undefined" && (J.working ? J(e3) : e3 instanceof SharedArrayBuffer); } function H(e3) { return O(e3, h2); } function Z(e3) { return O(e3, j); } function q(e3) { return O(e3, A); } function K(e3) { return s2 && O(e3, w); } function L(e3) { return p2 && O(e3, v); } function oe(e3, t3) { var r3 = { seen: [], stylize: fe }; return arguments.length >= 3 && (r3.depth = arguments[2]), arguments.length >= 4 && (r3.colors = arguments[3]), ye(t3) ? r3.showHidden = t3 : t3 && X._extend(r3, t3), be(r3.showHidden) && (r3.showHidden = false), be(r3.depth) && (r3.depth = 2), be(r3.colors) && (r3.colors = false), be(r3.customInspect) && (r3.customInspect = true), r3.colors && (r3.stylize = ue), ae(r3, e3, r3.depth); } function ue(e3, t3) { var r3 = oe.styles[t3]; return r3 ? "\x1B[" + oe.colors[r3][0] + "m" + e3 + "\x1B[" + oe.colors[r3][1] + "m" : e3; } function fe(e3, t3) { return e3; } function ae(e3, t3, r3) { if (e3.customInspect && t3 && we(t3.inspect) && t3.inspect !== X.inspect && (!t3.constructor || t3.constructor.prototype !== t3)) { var n3 = t3.inspect(r3, e3); return ge(n3) || (n3 = ae(e3, n3, r3)), n3; } var i3 = function(e4, t4) { if (be(t4)) return e4.stylize("undefined", "undefined"); if (ge(t4)) { var r4 = "'" + JSON.stringify(t4).replace(/^"|"$/g, "").replace(/'/g, "\\'").replace(/\\"/g, '"') + "'"; return e4.stylize(r4, "string"); } if (de(t4)) return e4.stylize("" + t4, "number"); if (ye(t4)) return e4.stylize("" + t4, "boolean"); if (le(t4)) return e4.stylize("null", "null"); }(e3, t3); if (i3) return i3; var o3 = Object.keys(t3), u3 = function(e4) { var t4 = {}; return e4.forEach(function(e5, r4) { t4[e5] = true; }), t4; }(o3); if (e3.showHidden && (o3 = Object.getOwnPropertyNames(t3)), Ae(t3) && (o3.indexOf("message") >= 0 || o3.indexOf("description") >= 0)) return ce(t3); if (o3.length === 0) { if (we(t3)) { var f3 = t3.name ? ": " + t3.name : ""; return e3.stylize("[Function" + f3 + "]", "special"); } if (me(t3)) return e3.stylize(RegExp.prototype.toString.call(t3), "regexp"); if (je(t3)) return e3.stylize(Date.prototype.toString.call(t3), "date"); if (Ae(t3)) return ce(t3); } var a3, c3 = "", s4 = false, p3 = ["{", "}"]; (pe(t3) && (s4 = true, p3 = ["[", "]"]), we(t3)) && (c3 = " [Function" + (t3.name ? ": " + t3.name : "") + "]"); return me(t3) && (c3 = " " + RegExp.prototype.toString.call(t3)), je(t3) && (c3 = " " + Date.prototype.toUTCString.call(t3)), Ae(t3) && (c3 = " " + ce(t3)), o3.length !== 0 || s4 && t3.length != 0 ? r3 < 0 ? me(t3) ? e3.stylize(RegExp.prototype.toString.call(t3), "regexp") : e3.stylize("[Object]", "special") : (e3.seen.push(t3), a3 = s4 ? function(e4, t4, r4, n4, i4) { for (var o4 = [], u4 = 0, f4 = t4.length;u4 < f4; ++u4) ke(t4, String(u4)) ? o4.push(se(e4, t4, r4, n4, String(u4), true)) : o4.push(""); return i4.forEach(function(i5) { i5.match(/^\d+$/) || o4.push(se(e4, t4, r4, n4, i5, true)); }), o4; }(e3, t3, r3, u3, o3) : o3.map(function(n4) { return se(e3, t3, r3, u3, n4, s4); }), e3.seen.pop(), function(e4, t4, r4) { var n4 = 0; if (e4.reduce(function(e5, t5) { return n4++, t5.indexOf("\n") >= 0 && n4++, e5 + t5.replace(/\u001b\[\d\d?m/g, "").length + 1; }, 0) > 60) return r4[0] + (t4 === "" ? "" : t4 + "\n ") + " " + e4.join(",\n ") + " " + r4[1]; return r4[0] + t4 + " " + e4.join(", ") + " " + r4[1]; }(a3, c3, p3)) : p3[0] + c3 + p3[1]; } function ce(e3) { return "[" + Error.prototype.toString.call(e3) + "]"; } function se(e3, t3, r3, n3, i3, o3) { var u3, f3, a3; if ((a3 = Object.getOwnPropertyDescriptor(t3, i3) || { value: t3[i3] }).get ? f3 = a3.set ? e3.stylize("[Getter/Setter]", "special") : e3.stylize("[Getter]", "special") : a3.set && (f3 = e3.stylize("[Setter]", "special")), ke(n3, i3) || (u3 = "[" + i3 + "]"), f3 || (e3.seen.indexOf(a3.value) < 0 ? (f3 = le(r3) ? ae(e3, a3.value, null) : ae(e3, a3.value, r3 - 1)).indexOf("\n") > -1 && (f3 = o3 ? f3.split("\n").map(function(e4) { return " " + e4; }).join("\n").substr(2) : "\n" + f3.split("\n").map(function(e4) { return " " + e4; }).join("\n")) : f3 = e3.stylize("[Circular]", "special")), be(u3)) { if (o3 && i3.match(/^\d+$/)) return f3; (u3 = JSON.stringify("" + i3)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/) ? (u3 = u3.substr(1, u3.length - 2), u3 = e3.stylize(u3, "name")) : (u3 = u3.replace(/'/g, "\\'").replace(/\\"/g, '"').replace(/(^"|"$)/g, "'"), u3 = e3.stylize(u3, "string")); } return u3 + ": " + f3; } function pe(e3) { return Array.isArray(e3); } function ye(e3) { return typeof e3 == "boolean"; } function le(e3) { return e3 === null; } function de(e3) { return typeof e3 == "number"; } function ge(e3) { return typeof e3 == "string"; } function be(e3) { return e3 === undefined; } function me(e3) { return he(e3) && ve(e3) === "[object RegExp]"; } function he(e3) { return typeof e3 == "object" && e3 !== null; } function je(e3) { return he(e3) && ve(e3) === "[object Date]"; } function Ae(e3) { return he(e3) && (ve(e3) === "[object Error]" || e3 instanceof Error); } function we(e3) { return typeof e3 == "function"; } function ve(e3) { return Object.prototype.toString.call(e3); } function Oe(e3) { return e3 < 10 ? "0" + e3.toString(10) : e3.toString(10); } function Be() { var e3 = /* @__PURE__ */ new Date, t3 = [Oe(e3.getHours()), Oe(e3.getMinutes()), Oe(e3.getSeconds())].join(":"); return [e3.getDate(), Se[e3.getMonth()], t3].join(" "); } function ke(e3, t3) { return Object.prototype.hasOwnProperty.call(e3, t3); } function De(e3, t3) { if (!e3) { var r3 = new Error("Promise was rejected with a falsy value"); r3.reason = e3, e3 = r3; } return t3(e3); } function whenConstraint(key, options, validator, validatorOptions) { return { run(input, parent) { if (!parent) { return Result.err(new ExpectedConstraintError("s.object(T.when)", validatorOptions?.message ?? "Validator has no parent", parent, "Validator to have a parent")); } const isKeyArray = Array.isArray(key); const value = isKeyArray ? key.map((k2) => get__default.default(parent, k2)) : get__default.default(parent, key); const predicate = resolveBooleanIs(options, value, isKeyArray) ? options.then : options.otherwise; if (predicate) { return predicate(validator).run(input); } return Result.ok(input); } }; } function resolveBooleanIs(options, value, isKeyArray) { if (options.is === undefined) { return isKeyArray ? !value.some((val) => !val) : Boolean(value); } if (typeof options.is === "function") { return options.is(value); } return value === options.is; } function setGlobalValidationEnabled(enabled) { validationEnabled = enabled; } function getGlobalValidationEnabled() { return validationEnabled; } function getValue(valueOrFn) { return typeof valueOrFn === "function" ? valueOrFn() : valueOrFn; } function isUnique(input) { if (input.length < 2) return true; const uniqueArray2 = uniqWith__default.default(input, fastDeepEqual__default.default); return uniqueArray2.length === input.length; } function lessThan(a3, b2) { return a3 < b2; } function lessThanOrEqual(a3, b2) { return a3 <= b2; } function greaterThan(a3, b2) { return a3 > b2; } function greaterThanOrEqual(a3, b2) { return a3 >= b2; } function equal(a3, b2) { return a3 === b2; } function notEqual(a3, b2) { return a3 !== b2; } function arrayLengthComparator(comparator, name, expected, length, options) { return { run(input) { return comparator(input.length, length) ? Result.ok(input) : Result.err(new ExpectedConstraintError(name, options?.message ?? "Invalid Array length", input, expected)); } }; } function arrayLengthLessThan(value, options) { const expected = `expected.length < ${value}`; return arrayLengthComparator(lessThan, "s.array(T).lengthLessThan()", expected, value, options); } function arrayLengthLessThanOrEqual(value, options) { const expected = `expected.length <= ${value}`; return arrayLengthComparator(lessThanOrEqual, "s.array(T).lengthLessThanOrEqual()", expected, value, options); } function arrayLengthGreaterThan(value, options) { const expected = `expected.length > ${value}`; return arrayLengthComparator(greaterThan, "s.array(T).lengthGreaterThan()", expected, value, options); } function arrayLengthGreaterThanOrEqual(value, options) { const expected = `expected.length >= ${value}`; return arrayLengthComparator(greaterThanOrEqual, "s.array(T).lengthGreaterThanOrEqual()", expected, value, options); } function arrayLengthEqual(value, options) { const expected = `expected.length === ${value}`; return arrayLengthComparator(equal, "s.array(T).lengthEqual()", expected, value, options); } function arrayLengthNotEqual(value, options) { const expected = `expected.length !== ${value}`; return arrayLengthComparator(notEqual, "s.array(T).lengthNotEqual()", expected, value, options); } function arrayLengthRange(start, endBefore, options) { const expected = `expected.length >= ${start} && expected.length < ${endBefore}`; return { run(input) { return input.length >= start && input.length < endBefore ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.array(T).lengthRange()", options?.message ?? "Invalid Array length", input, expected)); } }; } function arrayLengthRangeInclusive(start, end, options) { const expected = `expected.length >= ${start} && expected.length <= ${end}`; return { run(input) { return input.length >= start && input.length <= end ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.array(T).lengthRangeInclusive()", options?.message ?? "Invalid Array length", input, expected)); } }; } function arrayLengthRangeExclusive(startAfter, endBefore, options) { const expected = `expected.length > ${startAfter} && expected.length < ${endBefore}`; return { run(input) { return input.length > startAfter && input.length < endBefore ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.array(T).lengthRangeExclusive()", options?.message ?? "Invalid Array length", input, expected)); } }; } function uniqueArray(options) { return { run(input) { return isUnique(input) ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.array(T).unique()", options?.message ?? "Array values are not unique", input, "Expected all values to be unique")); } }; } function bigintComparator(comparator, name, expected, number, options) { return { run(input) { return comparator(input, number) ? Result.ok(input) : Result.err(new ExpectedConstraintError(name, options?.message ?? "Invalid bigint value", input, expected)); } }; } function bigintLessThan(value, options) { const expected = `expected < ${value}n`; return bigintComparator(lessThan, "s.bigint().lessThan()", expected, value, options); } function bigintLessThanOrEqual(value, options) { const expected = `expected <= ${value}n`; return bigintComparator(lessThanOrEqual, "s.bigint().lessThanOrEqual()", expected, value, options); } function bigintGreaterThan(value, options) { const expected = `expected > ${value}n`; return bigintComparator(greaterThan, "s.bigint().greaterThan()", expected, value, options); } function bigintGreaterThanOrEqual(value, options) { const expected = `expected >= ${value}n`; return bigintComparator(greaterThanOrEqual, "s.bigint().greaterThanOrEqual()", expected, value, options); } function bigintEqual(value, options) { const expected = `expected === ${value}n`; return bigintComparator(equal, "s.bigint().equal()", expected, value, options); } function bigintNotEqual(value, options) { const expected = `expected !== ${value}n`; return bigintComparator(notEqual, "s.bigint().notEqual()", expected, value, options); } function bigintDivisibleBy(divider, options) { const expected = `expected % ${divider}n === 0n`; return { run(input) { return input % divider === 0n ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.bigint().divisibleBy()", options?.message ?? "BigInt is not divisible", input, expected)); } }; } function booleanTrue(options) { return { run(input) { return input ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.boolean().true()", options?.message ?? "Invalid boolean value", input, "true")); } }; } function booleanFalse(options) { return { run(input) { return input ? Result.err(new ExpectedConstraintError("s.boolean().false()", options?.message ?? "Invalid boolean value", input, "false")) : Result.ok(input); } }; } function dateComparator(comparator, name, expected, number, options) { return { run(input) { return comparator(input.getTime(), number) ? Result.ok(input) : Result.err(new ExpectedConstraintError(name, options?.message ?? "Invalid Date value", input, expected)); } }; } function dateLessThan(value, options) { const expected = `expected < ${value.toISOString()}`; return dateComparator(lessThan, "s.date().lessThan()", expected, value.getTime(), options); } function dateLessThanOrEqual(value, options) { const expected = `expected <= ${value.toISOString()}`; return dateComparator(lessThanOrEqual, "s.date().lessThanOrEqual()", expected, value.getTime(), options); } function dateGreaterThan(value, options) { const expected = `expected > ${value.toISOString()}`; return dateComparator(greaterThan, "s.date().greaterThan()", expected, value.getTime(), options); } function dateGreaterThanOrEqual(value, options) { const expected = `expected >= ${value.toISOString()}`; return dateComparator(greaterThanOrEqual, "s.date().greaterThanOrEqual()", expected, value.getTime(), options); } function dateEqual(value, options) { const expected = `expected === ${value.toISOString()}`; return dateComparator(equal, "s.date().equal()", expected, value.getTime(), options); } function dateNotEqual(value, options) { const expected = `expected !== ${value.toISOString()}`; return dateComparator(notEqual, "s.date().notEqual()", expected, value.getTime(), options); } function dateInvalid(options) { return { run(input) { return Number.isNaN(input.getTime()) ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.date().invalid()", options?.message ?? "Invalid Date value", input, "expected === NaN")); } }; } function dateValid(options) { return { run(input) { return Number.isNaN(input.getTime()) ? Result.err(new ExpectedConstraintError("s.date().valid()", options?.message ?? "Invalid Date value", input, "expected !== NaN")) : Result.ok(input); } }; } function numberComparator(comparator, name, expected, number, options) { return { run(input) { return comparator(input, number) ? Result.ok(input) : Result.err(new ExpectedConstraintError(name, options?.message ?? "Invalid number value", input, expected)); } }; } function numberLessThan(value, options) { const expected = `expected < ${value}`; return numberComparator(lessThan, "s.number().lessThan()", expected, value, options); } function numberLessThanOrEqual(value, options) { const expected = `expected <= ${value}`; return numberComparator(lessThanOrEqual, "s.number().lessThanOrEqual()", expected, value, options); } function numberGreaterThan(value, options) { const expected = `expected > ${value}`; return numberComparator(greaterThan, "s.number().greaterThan()", expected, value, options); } function numberGreaterThanOrEqual(value, options) { const expected = `expected >= ${value}`; return numberComparator(greaterThanOrEqual, "s.number().greaterThanOrEqual()", expected, value, options); } function numberEqual(value, options) { const expected = `expected === ${value}`; return numberComparator(equal, "s.number().equal()", expected, value, options); } function numberNotEqual(value, options) { const expected = `expected !== ${value}`; return numberComparator(notEqual, "s.number().notEqual()", expected, value, options); } function numberInt(options) { return { run(input) { return Number.isInteger(input) ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.number().int()", options?.message ?? "Given value is not an integer", input, "Number.isInteger(expected) to be true")); } }; } function numberSafeInt(options) { return { run(input) { return Number.isSafeInteger(input) ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.number().safeInt()", options?.message ?? "Given value is not a safe integer", input, "Number.isSafeInteger(expected) to be true")); } }; } function numberFinite(options) { return { run(input) { return Number.isFinite(input) ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.number().finite()", options?.message ?? "Given value is not finite", input, "Number.isFinite(expected) to be true")); } }; } function numberNaN(options) { return { run(input) { return Number.isNaN(input) ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.number().equal(NaN)", options?.message ?? "Invalid number value", input, "expected === NaN")); } }; } function numberNotNaN(options) { return { run(input) { return Number.isNaN(input) ? Result.err(new ExpectedConstraintError("s.number().notEqual(NaN)", options?.message ?? "Invalid number value", input, "expected !== NaN")) : Result.ok(input); } }; } function numberDivisibleBy(divider, options) { const expected = `expected % ${divider} === 0`; return { run(input) { return input % divider === 0 ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.number().divisibleBy()", options?.message ?? "Number is not divisible", input, expected)); } }; } function validateEmail(email) { if (!email) return false; const atIndex = email.indexOf("@"); if (atIndex === -1) return false; if (atIndex > 64) return false; const domainIndex = atIndex + 1; if (email.includes("@", domainIndex)) return false; if (email.length - domainIndex > 255) return false; let dotIndex = email.indexOf(".", domainIndex); if (dotIndex === -1) return false; let lastDotIndex = domainIndex; do { if (dotIndex - lastDotIndex > 63) return false; lastDotIndex = dotIndex + 1; } while ((dotIndex = email.indexOf(".", lastDotIndex)) !== -1); if (email.length - lastDotIndex > 63) return false; return accountRegex.test(email.slice(0, atIndex)) && validateEmailDomain(email.slice(domainIndex)); } function validateEmailDomain(domain) { try { return new URL(`http://${domain}`).hostname === domain; } catch { return false; } } function isIPv4(s4) { return IPv4Reg.test(s4); } function isIPv6(s4) { return IPv6Reg.test(s4); } function isIP(s4) { if (isIPv4(s4)) return 4; if (isIPv6(s4)) return 6; return 0; } function validatePhoneNumber(input) { return phoneNumberRegex.test(input); } function combinedErrorFn(...fns) { switch (fns.length) { case 0: return () => null; case 1: return fns[0]; case 2: { const [fn0, fn1] = fns; return (...params) => fn0(...params) || fn1(...params); } default: { return (...params) => { for (const fn of fns) { const result = fn(...params); if (result) return result; } return null; }; } } } function createUrlValidators(options, validatorOptions) { const fns = []; if (options?.allowedProtocols?.length) fns.push(allowedProtocolsFn(options.allowedProtocols, validatorOptions)); if (options?.allowedDomains?.length) fns.push(allowedDomainsFn(options.allowedDomains, validatorOptions)); return combinedErrorFn(...fns); } function allowedProtocolsFn(allowedProtocols, options) { return (input, url) => allowedProtocols.includes(url.protocol) ? null : new MultiplePossibilitiesConstraintError("s.string().url()", options?.message ?? "Invalid URL protocol", input, allowedProtocols); } function allowedDomainsFn(allowedDomains, options) { return (input, url) => allowedDomains.includes(url.hostname) ? null : new MultiplePossibilitiesConstraintError("s.string().url()", options?.message ?? "Invalid URL domain", input, allowedDomains); } function stringLengthComparator(comparator, name, expected, length, options) { return { run(input) { return comparator(input.length, length) ? Result.ok(input) : Result.err(new ExpectedConstraintError(name, options?.message ?? "Invalid string length", input, expected)); } }; } function stringLengthLessThan(length, options) { const expected = `expected.length < ${length}`; return stringLengthComparator(lessThan, "s.string().lengthLessThan()", expected, length, options); } function stringLengthLessThanOrEqual(length, options) { const expected = `expected.length <= ${length}`; return stringLengthComparator(lessThanOrEqual, "s.string().lengthLessThanOrEqual()", expected, length, options); } function stringLengthGreaterThan(length, options) { const expected = `expected.length > ${length}`; return stringLengthComparator(greaterThan, "s.string().lengthGreaterThan()", expected, length, options); } function stringLengthGreaterThanOrEqual(length, options) { const expected = `expected.length >= ${length}`; return stringLengthComparator(greaterThanOrEqual, "s.string().lengthGreaterThanOrEqual()", expected, length, options); } function stringLengthEqual(length, options) { const expected = `expected.length === ${length}`; return stringLengthComparator(equal, "s.string().lengthEqual()", expected, length, options); } function stringLengthNotEqual(length, options) { const expected = `expected.length !== ${length}`; return stringLengthComparator(notEqual, "s.string().lengthNotEqual()", expected, length, options); } function stringEmail(options) { return { run(input) { return validateEmail(input) ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.string().email()", options?.message ?? "Invalid email address", input, "expected to be an email address")); } }; } function stringRegexValidator(type, expected, regex, options) { return { run(input) { return regex.test(input) ? Result.ok(input) : Result.err(new ExpectedConstraintError(type, options?.message ?? "Invalid string format", input, expected)); } }; } function stringUrl(options, validatorOptions) { const validatorFn = createUrlValidators(options, validatorOptions); return { run(input) { let url; try { url = new URL(input); } catch { return Result.err(new ExpectedConstraintError("s.string().url()", validatorOptions?.message ?? "Invalid URL", input, "expected to match a URL")); } const validatorFnResult = validatorFn(input, url); if (validatorFnResult === null) return Result.ok(input); return Result.err(validatorFnResult); } }; } function stringIp(version, options) { const ipVersion = version ? `v${version}` : ""; const validatorFn = version === 4 ? isIPv4 : version === 6 ? isIPv6 : isIP; const name = `s.string().ip${ipVersion}()`; const message = `Invalid IP${ipVersion} address`; const expected = `expected to be an IP${ipVersion} address`; return { run(input) { return validatorFn(input) ? Result.ok(input) : Result.err(new ExpectedConstraintError(name, options?.message ?? message, input, expected)); } }; } function stringRegex(regex, options) { return stringRegexValidator("s.string().regex()", `expected ${regex}.test(expected) to be true`, regex, options); } function stringUuid({ version = 4, nullable = false } = {}, options) { version ?? (version = "1-5"); const regex = new RegExp(`^(?:[0-9A-F]{8}-[0-9A-F]{4}-[${version}][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}${nullable ? "|00000000-0000-0000-0000-000000000000" : ""})\$`, "i"); const expected = `expected to match UUID${typeof version === "number" ? `v${version}` : ` in range of ${version}`}`; return stringRegexValidator("s.string().uuid()", expected, regex, options); } function stringDate(options) { return { run(input) { const time = Date.parse(input); return Number.isNaN(time) ? Result.err(new ExpectedConstraintError("s.string().date()", options?.message ?? "Invalid date string", input, "expected to be a valid date string (in the ISO 8601 or ECMA-262 format)")) : Result.ok(input); } }; } function stringPhone(options) { return { run(input) { return validatePhoneNumber(input) ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.string().phone()", options?.message ?? "Invalid phone number", input, "expected to be a phone number")); } }; } function typedArrayByteLengthComparator(comparator, name, expected, length, options) { return { run(input) { return comparator(input.byteLength, length) ? Result.ok(input) : Result.err(new ExpectedConstraintError(name, options?.message ?? "Invalid Typed Array byte length", input, expected)); } }; } function typedArrayByteLengthLessThan(value, options) { const expected = `expected.byteLength < ${value}`; return typedArrayByteLengthComparator(lessThan, "s.typedArray(T).byteLengthLessThan()", expected, value, options); } function typedArrayByteLengthLessThanOrEqual(value, options) { const expected = `expected.byteLength <= ${value}`; return typedArrayByteLengthComparator(lessThanOrEqual, "s.typedArray(T).byteLengthLessThanOrEqual()", expected, value, options); } function typedArrayByteLengthGreaterThan(value, options) { const expected = `expected.byteLength > ${value}`; return typedArrayByteLengthComparator(greaterThan, "s.typedArray(T).byteLengthGreaterThan()", expected, value, options); } function typedArrayByteLengthGreaterThanOrEqual(value, options) { const expected = `expected.byteLength >= ${value}`; return typedArrayByteLengthComparator(greaterThanOrEqual, "s.typedArray(T).byteLengthGreaterThanOrEqual()", expected, value, options); } function typedArrayByteLengthEqual(value, options) { const expected = `expected.byteLength === ${value}`; return typedArrayByteLengthComparator(equal, "s.typedArray(T).byteLengthEqual()", expected, value, options); } function typedArrayByteLengthNotEqual(value, options) { const expected = `expected.byteLength !== ${value}`; return typedArrayByteLengthComparator(notEqual, "s.typedArray(T).byteLengthNotEqual()", expected, value, options); } function typedArrayByteLengthRange(start, endBefore, options) { const expected = `expected.byteLength >= ${start} && expected.byteLength < ${endBefore}`; return { run(input) { return input.byteLength >= start && input.byteLength < endBefore ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.typedArray(T).byteLengthRange()", options?.message ?? "Invalid Typed Array byte length", input, expected)); } }; } function typedArrayByteLengthRangeInclusive(start, end, options) { const expected = `expected.byteLength >= ${start} && expected.byteLength <= ${end}`; return { run(input) { return input.byteLength >= start && input.byteLength <= end ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.typedArray(T).byteLengthRangeInclusive()", options?.message ?? "Invalid Typed Array byte length", input, expected)); } }; } function typedArrayByteLengthRangeExclusive(startAfter, endBefore, options) { const expected = `expected.byteLength > ${startAfter} && expected.byteLength < ${endBefore}`; return { run(input) { return input.byteLength > startAfter && input.byteLength < endBefore ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.typedArray(T).byteLengthRangeExclusive()", options?.message ?? "Invalid Typed Array byte length", input, expected)); } }; } function typedArrayLengthComparator(comparator, name, expected, length, options) { return { run(input) { return comparator(input.length, length) ? Result.ok(input) : Result.err(new ExpectedConstraintError(name, options?.message ?? "Invalid Typed Array length", input, expected)); } }; } function typedArrayLengthLessThan(value, options) { const expected = `expected.length < ${value}`; return typedArrayLengthComparator(lessThan, "s.typedArray(T).lengthLessThan()", expected, value, options); } function typedArrayLengthLessThanOrEqual(value, options) { const expected = `expected.length <= ${value}`; return typedArrayLengthComparator(lessThanOrEqual, "s.typedArray(T).lengthLessThanOrEqual()", expected, value, options); } function typedArrayLengthGreaterThan(value, options) { const expected = `expected.length > ${value}`; return typedArrayLengthComparator(greaterThan, "s.typedArray(T).lengthGreaterThan()", expected, value, options); } function typedArrayLengthGreaterThanOrEqual(value, options) { const expected = `expected.length >= ${value}`; return typedArrayLengthComparator(greaterThanOrEqual, "s.typedArray(T).lengthGreaterThanOrEqual()", expected, value, options); } function typedArrayLengthEqual(value, options) { const expected = `expected.length === ${value}`; return typedArrayLengthComparator(equal, "s.typedArray(T).lengthEqual()", expected, value, options); } function typedArrayLengthNotEqual(value, options) { const expected = `expected.length !== ${value}`; return typedArrayLengthComparator(notEqual, "s.typedArray(T).lengthNotEqual()", expected, value, options); } function typedArrayLengthRange(start, endBefore, options) { const expected = `expected.length >= ${start} && expected.length < ${endBefore}`; return { run(input) { return input.length >= start && input.length < endBefore ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.typedArray(T).lengthRange()", options?.message ?? "Invalid Typed Array length", input, expected)); } }; } function typedArrayLengthRangeInclusive(start, end, options) { const expected = `expected.length >= ${start} && expected.length <= ${end}`; return { run(input) { return input.length >= start && input.length <= end ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.typedArray(T).lengthRangeInclusive()", options?.message ?? "Invalid Typed Array length", input, expected)); } }; } function typedArrayLengthRangeExclusive(startAfter, endBefore, options) { const expected = `expected.length > ${startAfter} && expected.length < ${endBefore}`; return { run(input) { return input.length > startAfter && input.length < endBefore ? Result.ok(input) : Result.err(new ExpectedConstraintError("s.typedArray(T).lengthRangeExclusive()", options?.message ?? "Invalid Typed Array length", input, expected)); } }; } var get = require_get(); var fastDeepEqual = require_es6(); var uniqWith = require_uniqWith(); var get__default = /* @__PURE__ */ _interopDefault(get); var fastDeepEqual__default = /* @__PURE__ */ _interopDefault(fastDeepEqual); var uniqWith__default = /* @__PURE__ */ _interopDefault(uniqWith); var __defProp2 = Object.defineProperty; var __name = (target, value) => __defProp2(target, "name", { value, configurable: true }); var e; var t; var n; var r = typeof globalThis != "undefined" ? globalThis : typeof self != "undefined" ? self : globalThis; var o = e = {}; __name(i, "i"); __name(u, "u"); __name(c, "c"); (function() { try { t = typeof setTimeout == "function" ? setTimeout : i; } catch (e3) { t = i; } try { n = typeof clearTimeout == "function" ? clearTimeout : u; } catch (e3) { n = u; } })(); var l; var s = []; var f = false; var a = -1; __name(h, "h"); __name(d, "d"); __name(m, "m"); __name(p, "p"); o.nextTick = function(e3) { var t3 = new Array(arguments.length - 1); if (arguments.length > 1) for (var n3 = 1;n3 < arguments.length; n3++) t3[n3 - 1] = arguments[n3]; s.push(new m(e3, t3)), s.length !== 1 || f || c(d); }, m.prototype.run = function() { (this || r).fun.apply(null, (this || r).array); }, o.title = "browser", o.browser = true, o.env = {}, o.argv = [], o.version = "", o.versions = {}, o.on = p, o.addListener = p, o.once = p, o.off = p, o.removeListener = p, o.removeAllListeners = p, o.emit = p, o.prependListener = p, o.prependOnceListener = p, o.listeners = function(e3) { return []; }, o.binding = function(e3) { throw new Error("process.binding is not supported"); }, o.cwd = function() { return "/"; }, o.chdir = function(e3) { throw new Error("process.chdir is not supported"); }, o.umask = function() { return 0; }; var T = e; T.addListener; T.argv; T.binding; T.browser; T.chdir; T.cwd; T.emit; T.env; T.listeners; T.nextTick; T.off; T.on; T.once; T.prependListener; T.prependOnceListener; T.removeAllListeners; T.removeListener; T.title; T.umask; T.version; T.versions; var t2 = typeof Symbol == "function" && typeof Symbol.toStringTag == "symbol"; var e2 = Object.prototype.toString; var o2 = /* @__PURE__ */ __name(function(o3) { return !(t2 && o3 && typeof o3 == "object" && (Symbol.toStringTag in o3)) && e2.call(o3) === "[object Arguments]"; }, "o"); var n2 = /* @__PURE__ */ __name(function(t3) { return !!o2(t3) || t3 !== null && typeof t3 == "object" && typeof t3.length == "number" && t3.length >= 0 && e2.call(t3) !== "[object Array]" && e2.call(t3.callee) === "[object Function]"; }, "n"); var r2 = function() { return o2(arguments); }(); o2.isLegacyArguments = n2; var l2 = r2 ? o2 : n2; var t$1 = Object.prototype.toString; var o$1 = Function.prototype.toString; var n$1 = /^\s*(?:function)?\*/; var e$1 = typeof Symbol == "function" && typeof Symbol.toStringTag == "symbol"; var r$1 = Object.getPrototypeOf; var c2 = function() { if (!e$1) return false; try { return Function("return function*() {}")(); } catch (t3) { } }(); var u2 = c2 ? r$1(c2) : {}; var i2 = /* @__PURE__ */ __name(function(c3) { return typeof c3 == "function" && (!!n$1.test(o$1.call(c3)) || (e$1 ? r$1(c3) === u2 : t$1.call(c3) === "[object GeneratorFunction]")); }, "i"); var t$2 = typeof Object.create == "function" ? function(t3, e3) { e3 && (t3.super_ = e3, t3.prototype = Object.create(e3.prototype, { constructor: { value: t3, enumerable: false, writable: true, configurable: true } })); } : function(t3, e3) { if (e3) { t3.super_ = e3; var o3 = /* @__PURE__ */ __name(function() { }, "o"); o3.prototype = e3.prototype, t3.prototype = new o3, t3.prototype.constructor = t3; } }; var i$1 = /* @__PURE__ */ __name(function(e3) { return e3 && typeof e3 == "object" && typeof e3.copy == "function" && typeof e3.fill == "function" && typeof e3.readUInt8 == "function"; }, "i$1"); var o$2 = {}; var u$1 = i$1; var f2 = l2; var a2 = i2; __name(c$1, "c$1"); var s2 = typeof BigInt != "undefined"; var p2 = typeof Symbol != "undefined"; var y = p2 && Symbol.toStringTag !== undefined; var l$1 = typeof Uint8Array != "undefined"; var d2 = typeof ArrayBuffer != "undefined"; if (l$1 && y) var g = Object.getPrototypeOf(Uint8Array.prototype), b = c$1(Object.getOwnPropertyDescriptor(g, Symbol.toStringTag).get); var m2 = c$1(Object.prototype.toString); var h2 = c$1(Number.prototype.valueOf); var j = c$1(String.prototype.valueOf); var A = c$1(Boolean.prototype.valueOf); if (s2) var w = c$1(BigInt.prototype.valueOf); if (p2) var v = c$1(Symbol.prototype.valueOf); __name(O, "O"); __name(S, "S"); __name(B, "B"); __name(k, "k"); __name(E, "E"); __name(D, "D"); __name(U, "U"); __name(P, "P"); __name(x, "x"); __name(I, "I"); __name(M, "M"); __name(z, "z"); __name(F, "F"); __name(T2, "T"); __name(N, "N"); __name(W, "W"); __name($, "$"); __name(C, "C"); __name(V, "V"); __name(G, "G"); __name(R, "R"); __name(J, "J"); __name(_, "_"); __name(H, "H"); __name(Z, "Z"); __name(q, "q"); __name(K, "K"); __name(L, "L"); o$2.isArgumentsObject = f2, o$2.isGeneratorFunction = a2, o$2.isPromise = function(e3) { return typeof Promise != "undefined" && e3 instanceof Promise || e3 !== null && typeof e3 == "object" && typeof e3.then == "function" && typeof e3.catch == "function"; }, o$2.isArrayBufferView = function(e3) { return d2 && ArrayBuffer.isView ? ArrayBuffer.isView(e3) : S(e3) || R(e3); }, o$2.isTypedArray = S, o$2.isUint8Array = B, o$2.isUint8ClampedArray = k, o$2.isUint16Array = E, o$2.isUint32Array = D, o$2.isInt8Array = U, o$2.isInt16Array = P, o$2.isInt32Array = x, o$2.isFloat32Array = I, o$2.isFloat64Array = M, o$2.isBigInt64Array = z, o$2.isBigUint64Array = F, T2.working = typeof Map != "undefined" && T2(/* @__PURE__ */ new Map), o$2.isMap = function(e3) { return typeof Map != "undefined" && (T2.working ? T2(e3) : e3 instanceof Map); }, N.working = typeof Set != "undefined" && N(/* @__PURE__ */ new Set), o$2.isSet = function(e3) { return typeof Set != "undefined" && (N.working ? N(e3) : e3 instanceof Set); }, W.working = typeof WeakMap != "undefined" && W(/* @__PURE__ */ new WeakMap), o$2.isWeakMap = function(e3) { return typeof WeakMap != "undefined" && (W.working ? W(e3) : e3 instanceof WeakMap); }, $.working = typeof WeakSet != "undefined" && $(/* @__PURE__ */ new WeakSet), o$2.isWeakSet = function(e3) { return $(e3); }, C.working = typeof ArrayBuffer != "undefined" && C(new ArrayBuffer), o$2.isArrayBuffer = V, G.working = typeof ArrayBuffer != "undefined" && typeof DataView != "undefined" && G(new DataView(new ArrayBuffer(1), 0, 1)), o$2.isDataView = R, J.working = typeof SharedArrayBuffer != "undefined" && J(new SharedArrayBuffer), o$2.isSharedArrayBuffer = _, o$2.isAsyncFunction = function(e3) { return m2(e3) === "[object AsyncFunction]"; }, o$2.isMapIterator = function(e3) { return m2(e3) === "[object Map Iterator]"; }, o$2.isSetIterator = function(e3) { return m2(e3) === "[object Set Iterator]"; }, o$2.isGeneratorObject = function(e3) { return m2(e3) === "[object Generator]"; }, o$2.isWebAssemblyCompiledModule = function(e3) { return m2(e3) === "[object WebAssembly.Module]"; }, o$2.isNumberObject = H, o$2.isStringObject = Z, o$2.isBooleanObject = q, o$2.isBigIntObject = K, o$2.isSymbolObject = L, o$2.isBoxedPrimitive = function(e3) { return H(e3) || Z(e3) || q(e3) || K(e3) || L(e3); }, o$2.isAnyArrayBuffer = function(e3) { return l$1 && (V(e3) || _(e3)); }, ["isProxy", "isExternal", "isModuleNamespaceObject"].forEach(function(e3) { Object.defineProperty(o$2, e3, { enumerable: false, value: function() { throw new Error(e3 + " is not supported in userland"); } }); }); var Q = typeof globalThis != "undefined" ? globalThis : typeof self != "undefined" ? self : globalThis; var X = {}; var Y = T; var ee = Object.getOwnPropertyDescriptors || function(e3) { for (var t3 = Object.keys(e3), r3 = {}, n3 = 0;n3 < t3.length; n3++) r3[t3[n3]] = Object.getOwnPropertyDescriptor(e3, t3[n3]); return r3; }; var te = /%[sdj%]/g; X.format = function(e3) { if (!ge(e3)) { for (var t3 = [], r3 = 0;r3 < arguments.length; r3++) t3.push(oe(arguments[r3])); return t3.join(" "); } r3 = 1; for (var n3 = arguments, i3 = n3.length, o3 = String(e3).replace(te, function(e4) { if (e4 === "%%") return "%"; if (r3 >= i3) return e4; switch (e4) { case "%s": return String(n3[r3++]); case "%d": return Number(n3[r3++]); case "%j": try { return JSON.stringify(n3[r3++]); } catch (e5) { return "[Circular]"; } default: return e4; } }), u3 = n3[r3];r3 < i3; u3 = n3[++r3]) le(u3) || !he(u3) ? o3 += " " + u3 : o3 += " " + oe(u3); return o3; }, X.deprecate = function(e3, t3) { if (Y !== undefined && Y.noDeprecation === true) return e3; if (Y === undefined) return function() { return X.deprecate(e3, t3).apply(this || Q, arguments); }; var r3 = false; return function() { if (!r3) { if (Y.throwDeprecation) throw new Error(t3); Y.traceDeprecation ? console.trace(t3) : console.error(t3), r3 = true; } return e3.apply(this || Q, arguments); }; }; var re = {}; var ne = /^$/; if (Y.env.NODE_DEBUG) { ie = Y.env.NODE_DEBUG; ie = ie.replace(/[|\\{}()[\]^$+?.]/g, "\\$&").replace(/\*/g, ".*").replace(/,/g, "$|^").toUpperCase(), ne = new RegExp("^" + ie + "$", "i"); } var ie; __name(oe, "oe"); __name(ue, "ue"); __name(fe, "fe"); __name(ae, "ae"); __name(ce, "ce"); __name(se, "se"); __name(pe, "pe"); __name(ye, "ye"); __name(le, "le"); __name(de, "de"); __name(ge, "ge"); __name(be, "be"); __name(me, "me"); __name(he, "he"); __name(je, "je"); __name(Ae, "Ae"); __name(we, "we"); __name(ve, "ve"); __name(Oe, "Oe"); X.debuglog = function(e3) { if (e3 = e3.toUpperCase(), !re[e3]) if (ne.test(e3)) { var t3 = Y.pid; re[e3] = function() { var r3 = X.format.apply(X, arguments); console.error("%s %d: %s", e3, t3, r3); }; } else re[e3] = function() { }; return re[e3]; }, X.inspect = oe, oe.colors = { bold: [1, 22], italic: [3, 23], underline: [4, 24], inverse: [7, 27], white: [37, 39], grey: [90, 39], black: [30, 39], blue: [34, 39], cyan: [36, 39], green: [32, 39], magenta: [35, 39], red: [31, 39], yellow: [33, 39] }, oe.styles = { special: "cyan", number: "yellow", boolean: "yellow", undefined: "grey", null: "bold", string: "green", date: "magenta", regexp: "red" }, X.types = o$2, X.isArray = pe, X.isBoolean = ye, X.isNull = le, X.isNullOrUndefined = function(e3) { return e3 == null; }, X.isNumber = de, X.isString = ge, X.isSymbol = function(e3) { return typeof e3 == "symbol"; }, X.isUndefined = be, X.isRegExp = me, X.types.isRegExp = me, X.isObject = he, X.isDate = je, X.types.isDate = je, X.isError = Ae, X.types.isNativeError = Ae, X.isFunction = we, X.isPrimitive = function(e3) { return e3 === null || typeof e3 == "boolean" || typeof e3 == "number" || typeof e3 == "string" || typeof e3 == "symbol" || e3 === undefined; }, X.isBuffer = i$1; var Se = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; __name(Be, "Be"); __name(ke, "ke"); X.log = function() { console.log("%s - %s", Be(), X.format.apply(X, arguments)); }, X.inherits = t$2, X._extend = function(e3, t3) { if (!t3 || !he(t3)) return e3; for (var r3 = Object.keys(t3), n3 = r3.length;n3--; ) e3[r3[n3]] = t3[r3[n3]]; return e3; }; var Ee = typeof Symbol != "undefined" ? Symbol("util.promisify.custom") : undefined; __name(De, "De"); X.promisify = function(e3) { if (typeof e3 != "function") throw new TypeError('The "original" argument must be of type Function'); if (Ee && e3[Ee]) { var t3; if (typeof (t3 = e3[Ee]) != "function") throw new TypeError('The "util.promisify.custom" argument must be of type Function'); return Object.defineProperty(t3, Ee, { value: t3, enumerable: false, writable: false, configurable: true }), t3; } function t3() { for (var t4, r3, n3 = new Promise(function(e4, n4) { t4 = e4, r3 = n4; }), i3 = [], o3 = 0;o3 < arguments.length; o3++) i3.push(arguments[o3]); i3.push(function(e4, n4) { e4 ? r3(e4) : t4(n4); }); try { e3.apply(this || Q, i3); } catch (e4) { r3(e4); } return n3; } __name(t3, "t"); return Object.setPrototypeOf(t3, Object.getPrototypeOf(e3)), Ee && Object.defineProperty(t3, Ee, { value: t3, enumerable: false, writable: false, configurable: true }), Object.defineProperties(t3, ee(e3)); }, X.promisify.custom = Ee, X.callbackify = function(e3) { if (typeof e3 != "function") throw new TypeError('The "original" argument must be of type Function'); function t3() { for (var t4 = [], r3 = 0;r3 < arguments.length; r3++) t4.push(arguments[r3]); var n3 = t4.pop(); if (typeof n3 != "function") throw new TypeError("The last argument must be of type Function"); var i3 = this || Q, o3 = /* @__PURE__ */ __name(function() { return n3.apply(i3, arguments); }, "o"); e3.apply(this || Q, t4).then(function(e4) { Y.nextTick(o3.bind(null, null, e4)); }, function(e4) { Y.nextTick(De.bind(null, e4, o3)); }); } __name(t3, "t"); return Object.setPrototypeOf(t3, Object.getPrototypeOf(e3)), Object.defineProperties(t3, ee(e3)), t3; }; X._extend; X.callbackify; X.debuglog; X.deprecate; X.format; X.inherits; X.inspect; X.isArray; X.isBoolean; X.isBuffer; X.isDate; X.isError; X.isFunction; X.isNull; X.isNullOrUndefined; X.isNumber; X.isObject; X.isPrimitive; X.isRegExp; X.isString; X.isSymbol; X.isUndefined; X.log; X.promisify; X._extend; X.callbackify; X.debuglog; X.deprecate; X.format; X.inherits; X.inspect; X.isArray; X.isBoolean; X.isBuffer; X.isDate; X.isError; X.isFunction; X.isNull; X.isNullOrUndefined; X.isNumber; X.isObject; X.isPrimitive; X.isRegExp; X.isString; X.isSymbol; X.isUndefined; X.log; X.promisify; X.types; X._extend; X.callbackify; X.debuglog; X.deprecate; X.format; X.inherits; var inspect2 = X.inspect; X.isArray; X.isBoolean; X.isBuffer; X.isDate; X.isError; X.isFunction; X.isNull; X.isNullOrUndefined; X.isNumber; X.isObject; X.isPrimitive; X.isRegExp; X.isString; X.isSymbol; X.isUndefined; X.log; X.promisify; X.types; X.TextEncoder = globalThis.TextEncoder; X.TextDecoder = globalThis.TextDecoder; var customInspectSymbol = Symbol.for("nodejs.util.inspect.custom"); var customInspectSymbolStackLess = Symbol.for("nodejs.util.inspect.custom.stack-less"); var _BaseError = class _BaseError2 extends Error { toJSON() { return { name: this.name, message: this.message }; } [customInspectSymbol](depth, options) { return `${this[customInspectSymbolStackLess](depth, options)} ${this.stack.slice(this.stack.indexOf("\n"))}`; } }; __name(_BaseError, "BaseError"); var BaseError = _BaseError; var _BaseConstraintError = class _BaseConstraintError2 extends BaseError { constructor(constraint, message, given) { super(message); this.constraint = constraint; this.given = given; } toJSON() { return { name: this.name, constraint: this.constraint, given: this.given, message: this.message }; } }; __name(_BaseConstraintError, "BaseConstraintError"); var BaseConstraintError = _BaseConstraintError; var _ExpectedConstraintError = class _ExpectedConstraintError2 extends BaseConstraintError { constructor(constraint, message, given, expected) { super(constraint, message, given); this.expected = expected; } toJSON() { return { name: this.name, constraint: this.constraint, given: this.given, expected: this.expected, message: this.message }; } [customInspectSymbolStackLess](depth, options) { const constraint = options.stylize(this.constraint, "string"); if (depth < 0) { return options.stylize(`[ExpectedConstraintError: ${constraint}]`, "special"); } const newOptions = { ...options, depth: options.depth === null ? null : options.depth - 1 }; const padding = ` ${options.stylize("|", "undefined")} `; const given = inspect2(this.given, newOptions).replace(/\n/g, padding); const header = `${options.stylize("ExpectedConstraintError", "special")} > ${constraint}`; const message = options.stylize(this.message, "regexp"); const expectedBlock = ` ${options.stylize("Expected: ", "string")}${options.stylize(this.expected, "boolean")}`; const givenBlock = ` ${options.stylize("Received:", "regexp")}${padding}${given}`; return `${header} ${message} ${expectedBlock} ${givenBlock}`; } }; __name(_ExpectedConstraintError, "ExpectedConstraintError"); var ExpectedConstraintError = _ExpectedConstraintError; var _Result = class _Result2 { constructor(success, value, error) { this.success = success; if (success) { this.value = value; } else { this.error = error; } } isOk() { return this.success; } isErr() { return !this.success; } unwrap() { if (this.isOk()) return this.value; throw this.error; } static ok(value) { return new _Result2(true, value); } static err(error) { return new _Result2(false, undefined, error); } }; __name(_Result, "Result"); var Result = _Result; __name(whenConstraint, "whenConstraint"); __name(resolveBooleanIs, "resolveBooleanIs"); var validationEnabled = true; __name(setGlobalValidationEnabled, "setGlobalValidationEnabled"); __name(getGlobalValidationEnabled, "getGlobalValidationEnabled"); __name(getValue, "getValue"); var _BaseValidator = class _BaseValidator2 { constructor(validatorOptions = {}, constraints = []) { this.constraints = []; this.isValidationEnabled = null; this.constraints = constraints; this.validatorOptions = validatorOptions; } setParent(parent) { this.parent = parent; return this; } optional(options = this.validatorOptions) { return new UnionValidator([new LiteralValidator(undefined, options), this.clone()], options); } nullable(options = this.validatorOptions) { return new UnionValidator([new LiteralValidator(null, options), this.clone()], options); } nullish(options = this.validatorOptions) { return new UnionValidator([new NullishValidator(options), this.clone()], options); } array(options = this.validatorOptions) { return new ArrayValidator(this.clone(), options); } set(options = this.validatorOptions) { return new SetValidator(this.clone(), options); } or(...predicates) { return new UnionValidator([this.clone(), ...predicates], this.validatorOptions); } transform(cb, options = this.validatorOptions) { return this.addConstraint({ run: (input) => Result.ok(cb(input)) }, options); } reshape(cb, options = this.validatorOptions) { return this.addConstraint({ run: cb }, options); } default(value, options = this.validatorOptions) { return new DefaultValidator(this.clone(), value, options); } when(key, options, validatorOptions) { return this.addConstraint(whenConstraint(key, options, this, validatorOptions)); } describe(description) { const clone = this.clone(); clone.description = description; return clone; } run(value) { let result = this.handle(value); if (result.isErr()) return result; for (const constraint of this.constraints) { result = constraint.run(result.value, this.parent); if (result.isErr()) break; } return result; } parse(value) { if (!this.shouldRunConstraints) { return this.handle(value).unwrap(); } return this.constraints.reduce((v2, constraint) => constraint.run(v2).unwrap(), this.handle(value).unwrap()); } is(value) { return this.run(value).isOk(); } setValidationEnabled(isValidationEnabled) { const clone = this.clone(); clone.isValidationEnabled = isValidationEnabled; return clone; } getValidationEnabled() { return getValue(this.isValidationEnabled); } get shouldRunConstraints() { return getValue(this.isValidationEnabled) ?? getGlobalValidationEnabled(); } clone() { const clone = Reflect.construct(this.constructor, [this.validatorOptions, this.constraints]); clone.isValidationEnabled = this.isValidationEnabled; return clone; } addConstraint(constraint, validatorOptions = this.validatorOptions) { const clone = this.clone(); clone.validatorOptions = validatorOptions; clone.constraints = clone.constraints.concat(constraint); return clone; } }; __name(_BaseValidator, "BaseValidator"); var BaseValidator = _BaseValidator; __name(isUnique, "isUnique"); __name(lessThan, "lessThan"); __name(lessThanOrEqual, "lessThanOrEqual"); __name(greaterThan, "greaterThan"); __name(greaterThanOrEqual, "greaterThanOrEqual"); __name(equal, "equal"); __name(notEqual, "notEqual"); __name(arrayLengthComparator, "arrayLengthComparator"); __name(arrayLengthLessThan, "arrayLengthLessThan"); __name(arrayLengthLessThanOrEqual, "arrayLengthLessThanOrEqual"); __name(arrayLengthGreaterThan, "arrayLengthGreaterThan"); __name(arrayLengthGreaterThanOrEqual, "arrayLengthGreaterThanOrEqual"); __name(arrayLengthEqual, "arrayLengthEqual"); __name(arrayLengthNotEqual, "arrayLengthNotEqual"); __name(arrayLengthRange, "arrayLengthRange"); __name(arrayLengthRangeInclusive, "arrayLengthRangeInclusive"); __name(arrayLengthRangeExclusive, "arrayLengthRangeExclusive"); __name(uniqueArray, "uniqueArray"); var _CombinedPropertyError = class _CombinedPropertyError2 extends BaseError { constructor(errors, validatorOptions) { super(validatorOptions?.message ?? "Received one or more errors"); this.errors = errors; } [customInspectSymbolStackLess](depth, options) { if (depth < 0) { return options.stylize("[CombinedPropertyError]", "special"); } const newOptions = { ...options, depth: options.depth === null ? null : options.depth - 1, compact: true }; const padding = ` ${options.stylize("|", "undefined")} `; const header = `${options.stylize("CombinedPropertyError", "special")} (${options.stylize(this.errors.length.toString(), "number")})`; const message = options.stylize(this.message, "regexp"); const errors = this.errors.map(([key, error]) => { const property = _CombinedPropertyError2.formatProperty(key, options); const body = error[customInspectSymbolStackLess](depth - 1, newOptions).replace(/\n/g, padding); return ` input${property}${padding}${body}`; }).join("\n\n"); return `${header} ${message} ${errors}`; } static formatProperty(key, options) { if (typeof key === "string") return options.stylize(`.${key}`, "symbol"); if (typeof key === "number") return `[${options.stylize(key.toString(), "number")}]`; return `[${options.stylize("Symbol", "symbol")}(${key.description})]`; } }; __name(_CombinedPropertyError, "CombinedPropertyError"); var CombinedPropertyError = _CombinedPropertyError; var _ValidationError = class _ValidationError2 extends BaseError { constructor(validator, message, given) { super(message); this.validator = validator; this.given = given; } toJSON() { return { name: this.name, message: "Unknown validation error occurred.", validator: this.validator, given: this.given }; } [customInspectSymbolStackLess](depth, options) { const validator = options.stylize(this.validator, "string"); if (depth < 0) { return options.stylize(`[ValidationError: ${validator}]`, "special"); } const newOptions = { ...options, depth: options.depth === null ? null : options.depth - 1, compact: true }; const padding = ` ${options.stylize("|", "undefined")} `; const given = inspect2(this.given, newOptions).replace(/\n/g, padding); const header = `${options.stylize("ValidationError", "special")} > ${validator}`; const message = options.stylize(this.message, "regexp"); const givenBlock = ` ${options.stylize("Received:", "regexp")}${padding}${given}`; return `${header} ${message} ${givenBlock}`; } }; __name(_ValidationError, "ValidationError"); var ValidationError = _ValidationError; var _ArrayValidator = class _ArrayValidator2 extends BaseValidator { constructor(validator, validatorOptions = {}, constraints = []) { super(validatorOptions, constraints); this.validator = validator; } lengthLessThan(length, options = this.validatorOptions) { return this.addConstraint(arrayLengthLessThan(length, options)); } lengthLessThanOrEqual(length, options = this.validatorOptions) { return this.addConstraint(arrayLengthLessThanOrEqual(length, options)); } lengthGreaterThan(length, options = this.validatorOptions) { return this.addConstraint(arrayLengthGreaterThan(length, options)); } lengthGreaterThanOrEqual(length, options = this.validatorOptions) { return this.addConstraint(arrayLengthGreaterThanOrEqual(length, options)); } lengthEqual(length, options = this.validatorOptions) { return this.addConstraint(arrayLengthEqual(length, options)); } lengthNotEqual(length, options = this.validatorOptions) { return this.addConstraint(arrayLengthNotEqual(length, options)); } lengthRange(start, endBefore, options = this.validatorOptions) { return this.addConstraint(arrayLengthRange(start, endBefore, options)); } lengthRangeInclusive(startAt, endAt, options = this.validatorOptions) { return this.addConstraint(arrayLengthRangeInclusive(startAt, endAt, options)); } lengthRangeExclusive(startAfter, endBefore, options = this.validatorOptions) { return this.addConstraint(arrayLengthRangeExclusive(startAfter, endBefore, options)); } unique(options = this.validatorOptions) { return this.addConstraint(uniqueArray(options)); } clone() { return Reflect.construct(this.constructor, [this.validator, this.validatorOptions, this.constraints]); } handle(values) { if (!Array.isArray(values)) { return Result.err(new ValidationError("s.array(T)", this.validatorOptions.message ?? "Expected an array", values)); } if (!this.shouldRunConstraints) { return Result.ok(values); } const errors = []; const transformed = []; for (let i3 = 0;i3 < values.length; i3++) { const result = this.validator.run(values[i3]); if (result.isOk()) transformed.push(result.value); else errors.push([i3, result.error]); } return errors.length === 0 ? Result.ok(transformed) : Result.err(new CombinedPropertyError(errors, this.validatorOptions)); } }; __name(_ArrayValidator, "ArrayValidator"); var ArrayValidator = _ArrayValidator; __name(bigintComparator, "bigintComparator"); __name(bigintLessThan, "bigintLessThan"); __name(bigintLessThanOrEqual, "bigintLessThanOrEqual"); __name(bigintGreaterThan, "bigintGreaterThan"); __name(bigintGreaterThanOrEqual, "bigintGreaterThanOrEqual"); __name(bigintEqual, "bigintEqual"); __name(bigintNotEqual, "bigintNotEqual"); __name(bigintDivisibleBy, "bigintDivisibleBy"); var _BigIntValidator = class _BigIntValidator2 extends BaseValidator { lessThan(number, options = this.validatorOptions) { return this.addConstraint(bigintLessThan(number, options)); } lessThanOrEqual(number, options = this.validatorOptions) { return this.addConstraint(bigintLessThanOrEqual(number, options)); } greaterThan(number, options = this.validatorOptions) { return this.addConstraint(bigintGreaterThan(number, options)); } greaterThanOrEqual(number, options = this.validatorOptions) { return this.addConstraint(bigintGreaterThanOrEqual(number, options)); } equal(number, options = this.validatorOptions) { return this.addConstraint(bigintEqual(number, options)); } notEqual(number, options = this.validatorOptions) { return this.addConstraint(bigintNotEqual(number, options)); } positive(options = this.validatorOptions) { return this.greaterThanOrEqual(0n, options); } negative(options = this.validatorOptions) { return this.lessThan(0n, options); } divisibleBy(number, options = this.validatorOptions) { return this.addConstraint(bigintDivisibleBy(number, options)); } abs(options = this.validatorOptions) { return this.transform((value) => value < 0 ? -value : value, options); } intN(bits, options = this.validatorOptions) { return this.transform((value) => BigInt.asIntN(bits, value), options); } uintN(bits, options = this.validatorOptions) { return this.transform((value) => BigInt.asUintN(bits, value), options); } handle(value) { return typeof value === "bigint" ? Result.ok(value) : Result.err(new ValidationError("s.bigint()", this.validatorOptions.message ?? "Expected a bigint primitive", value)); } }; __name(_BigIntValidator, "BigIntValidator"); var BigIntValidator = _BigIntValidator; __name(booleanTrue, "booleanTrue"); __name(booleanFalse, "booleanFalse"); var _BooleanValidator = class _BooleanValidator2 extends BaseValidator { true(options = this.validatorOptions) { return this.addConstraint(booleanTrue(options)); } false(options = this.validatorOptions) { return this.addConstraint(booleanFalse(options)); } equal(value, options = this.validatorOptions) { return value ? this.true(options) : this.false(options); } notEqual(value, options = this.validatorOptions) { return value ? this.false(options) : this.true(options); } handle(value) { return typeof value === "boolean" ? Result.ok(value) : Result.err(new ValidationError("s.boolean()", this.validatorOptions.message ?? "Expected a boolean primitive", value)); } }; __name(_BooleanValidator, "BooleanValidator"); var BooleanValidator = _BooleanValidator; __name(dateComparator, "dateComparator"); __name(dateLessThan, "dateLessThan"); __name(dateLessThanOrEqual, "dateLessThanOrEqual"); __name(dateGreaterThan, "dateGreaterThan"); __name(dateGreaterThanOrEqual, "dateGreaterThanOrEqual"); __name(dateEqual, "dateEqual"); __name(dateNotEqual, "dateNotEqual"); __name(dateInvalid, "dateInvalid"); __name(dateValid, "dateValid"); var _DateValidator = class _DateValidator2 extends BaseValidator { lessThan(date, options = this.validatorOptions) { return this.addConstraint(dateLessThan(new Date(date), options)); } lessThanOrEqual(date, options = this.validatorOptions) { return this.addConstraint(dateLessThanOrEqual(new Date(date), options)); } greaterThan(date, options = this.validatorOptions) { return this.addConstraint(dateGreaterThan(new Date(date), options)); } greaterThanOrEqual(date, options = this.validatorOptions) { return this.addConstraint(dateGreaterThanOrEqual(new Date(date), options)); } equal(date, options = this.validatorOptions) { const resolved = new Date(date); return Number.isNaN(resolved.getTime()) ? this.invalid(options) : this.addConstraint(dateEqual(resolved, options)); } notEqual(date, options = this.validatorOptions) { const resolved = new Date(date); return Number.isNaN(resolved.getTime()) ? this.valid(options) : this.addConstraint(dateNotEqual(resolved, options)); } valid(options = this.validatorOptions) { return this.addConstraint(dateValid(options)); } invalid(options = this.validatorOptions) { return this.addConstraint(dateInvalid(options)); } handle(value) { return value instanceof Date ? Result.ok(value) : Result.err(new ValidationError("s.date()", this.validatorOptions.message ?? "Expected a Date", value)); } }; __name(_DateValidator, "DateValidator"); var DateValidator = _DateValidator; var _ExpectedValidationError = class _ExpectedValidationError2 extends ValidationError { constructor(validator, message, given, expected) { super(validator, message, given); this.expected = expected; } toJSON() { return { name: this.name, validator: this.validator, given: this.given, expected: this.expected, message: this.message }; } [customInspectSymbolStackLess](depth, options) { const validator = options.stylize(this.validator, "string"); if (depth < 0) { return options.stylize(`[ExpectedValidationError: ${validator}]`, "special"); } const newOptions = { ...options, depth: options.depth === null ? null : options.depth - 1 }; const padding = ` ${options.stylize("|", "undefined")} `; const expected = inspect2(this.expected, newOptions).replace(/\n/g, padding); const given = inspect2(this.given, newOptions).replace(/\n/g, padding); const header = `${options.stylize("ExpectedValidationError", "special")} > ${validator}`; const message = options.stylize(this.message, "regexp"); const expectedBlock = ` ${options.stylize("Expected:", "string")}${padding}${expected}`; const givenBlock = ` ${options.stylize("Received:", "regexp")}${padding}${given}`; return `${header} ${message} ${expectedBlock} ${givenBlock}`; } }; __name(_ExpectedValidationError, "ExpectedValidationError"); var ExpectedValidationError = _ExpectedValidationError; var _InstanceValidator = class _InstanceValidator2 extends BaseValidator { constructor(expected, validatorOptions = {}, constraints = []) { super(validatorOptions, constraints); this.expected = expected; } handle(value) { return value instanceof this.expected ? Result.ok(value) : Result.err(new ExpectedValidationError("s.instance(V)", this.validatorOptions.message ?? "Expected", value, this.expected)); } clone() { return Reflect.construct(this.constructor, [this.expected, this.validatorOptions, this.constraints]); } }; __name(_InstanceValidator, "InstanceValidator"); var InstanceValidator = _InstanceValidator; var _LiteralValidator = class _LiteralValidator2 extends BaseValidator { constructor(literal, validatorOptions = {}, constraints = []) { super(validatorOptions, constraints); this.expected = literal; } handle(value) { return Object.is(value, this.expected) ? Result.ok(value) : Result.err(new ExpectedValidationError("s.literal(V)", this.validatorOptions.message ?? "Expected values to be equals", value, this.expected)); } clone() { return Reflect.construct(this.constructor, [this.expected, this.validatorOptions, this.constraints]); } }; __name(_LiteralValidator, "LiteralValidator"); var LiteralValidator = _LiteralValidator; var _NeverValidator = class _NeverValidator2 extends BaseValidator { handle(value) { return Result.err(new ValidationError("s.never()", this.validatorOptions.message ?? "Expected a value to not be passed", value)); } }; __name(_NeverValidator, "NeverValidator"); var NeverValidator = _NeverValidator; var _NullishValidator = class _NullishValidator2 extends BaseValidator { handle(value) { return value === undefined || value === null ? Result.ok(value) : Result.err(new ValidationError("s.nullish()", this.validatorOptions.message ?? "Expected undefined or null", value)); } }; __name(_NullishValidator, "NullishValidator"); var NullishValidator = _NullishValidator; __name(numberComparator, "numberComparator"); __name(numberLessThan, "numberLessThan"); __name(numberLessThanOrEqual, "numberLessThanOrEqual"); __name(numberGreaterThan, "numberGreaterThan"); __name(numberGreaterThanOrEqual, "numberGreaterThanOrEqual"); __name(numberEqual, "numberEqual"); __name(numberNotEqual, "numberNotEqual"); __name(numberInt, "numberInt"); __name(numberSafeInt, "numberSafeInt"); __name(numberFinite, "numberFinite"); __name(numberNaN, "numberNaN"); __name(numberNotNaN, "numberNotNaN"); __name(numberDivisibleBy, "numberDivisibleBy"); var _NumberValidator = class _NumberValidator2 extends BaseValidator { lessThan(number, options = this.validatorOptions) { return this.addConstraint(numberLessThan(number, options)); } lessThanOrEqual(number, options = this.validatorOptions) { return this.addConstraint(numberLessThanOrEqual(number, options)); } greaterThan(number, options = this.validatorOptions) { return this.addConstraint(numberGreaterThan(number, options)); } greaterThanOrEqual(number, options = this.validatorOptions) { return this.addConstraint(numberGreaterThanOrEqual(number, options)); } equal(number, options = this.validatorOptions) { return Number.isNaN(number) ? this.addConstraint(numberNaN(options)) : this.addConstraint(numberEqual(number, options)); } notEqual(number, options = this.validatorOptions) { return Number.isNaN(number) ? this.addConstraint(numberNotNaN(options)) : this.addConstraint(numberNotEqual(number, options)); } int(options = this.validatorOptions) { return this.addConstraint(numberInt(options)); } safeInt(options = this.validatorOptions) { return this.addConstraint(numberSafeInt(options)); } finite(options = this.validatorOptions) { return this.addConstraint(numberFinite(options)); } positive(options = this.validatorOptions) { return this.greaterThanOrEqual(0, options); } negative(options = this.validatorOptions) { return this.lessThan(0, options); } divisibleBy(divider, options = this.validatorOptions) { return this.addConstraint(numberDivisibleBy(divider, options)); } abs(options = this.validatorOptions) { return this.transform(Math.abs, options); } sign(options = this.validatorOptions) { return this.transform(Math.sign, options); } trunc(options = this.validatorOptions) { return this.transform(Math.trunc, options); } floor(options = this.validatorOptions) { return this.transform(Math.floor, options); } fround(options = this.validatorOptions) { return this.transform(Math.fround, options); } round(options = this.validatorOptions) { return this.transform(Math.round, options); } ceil(options = this.validatorOptions) { return this.transform(Math.ceil, options); } handle(value) { return typeof value === "number" ? Result.ok(value) : Result.err(new ValidationError("s.number()", this.validatorOptions.message ?? "Expected a number primitive", value)); } }; __name(_NumberValidator, "NumberValidator"); var NumberValidator = _NumberValidator; var _MissingPropertyError = class _MissingPropertyError2 extends BaseError { constructor(property, validatorOptions) { super(validatorOptions?.message ?? "A required property is missing"); this.property = property; } toJSON() { return { name: this.name, message: this.message, property: this.property }; } [customInspectSymbolStackLess](depth, options) { const property = options.stylize(this.property.toString(), "string"); if (depth < 0) { return options.stylize(`[MissingPropertyError: ${property}]`, "special"); } const header = `${options.stylize("MissingPropertyError", "special")} > ${property}`; const message = options.stylize(this.message, "regexp"); return `${header} ${message}`; } }; __name(_MissingPropertyError, "MissingPropertyError"); var MissingPropertyError = _MissingPropertyError; var _UnknownPropertyError = class _UnknownPropertyError2 extends BaseError { constructor(property, value, options) { super(options?.message ?? "Received unexpected property"); this.property = property; this.value = value; } toJSON() { return { name: this.name, message: this.message, property: this.property, value: this.value }; } [customInspectSymbolStackLess](depth, options) { const property = options.stylize(this.property.toString(), "string"); if (depth < 0) { return options.stylize(`[UnknownPropertyError: ${property}]`, "special"); } const newOptions = { ...options, depth: options.depth === null ? null : options.depth - 1, compact: true }; const padding = ` ${options.stylize("|", "undefined")} `; const given = inspect2(this.value, newOptions).replace(/\n/g, padding); const header = `${options.stylize("UnknownPropertyError", "special")} > ${property}`; const message = options.stylize(this.message, "regexp"); const givenBlock = ` ${options.stylize("Received:", "regexp")}${padding}${given}`; return `${header} ${message} ${givenBlock}`; } }; __name(_UnknownPropertyError, "UnknownPropertyError"); var UnknownPropertyError = _UnknownPropertyError; var _DefaultValidator = class _DefaultValidator2 extends BaseValidator { constructor(validator, value, validatorOptions = {}, constraints = []) { super(validatorOptions, constraints); this.validator = validator; this.defaultValue = value; } default(value, options = this.validatorOptions) { const clone = this.clone(); clone.validatorOptions = options; clone.defaultValue = value; return clone; } handle(value) { return typeof value === "undefined" ? Result.ok(getValue(this.defaultValue)) : this.validator["handle"](value); } clone() { return Reflect.construct(this.constructor, [this.validator, this.defaultValue, this.validatorOptions, this.constraints]); } }; __name(_DefaultValidator, "DefaultValidator"); var DefaultValidator = _DefaultValidator; var _CombinedError = class _CombinedError2 extends BaseError { constructor(errors, validatorOptions) { super(validatorOptions?.message ?? "Received one or more errors"); this.errors = errors; } [customInspectSymbolStackLess](depth, options) { if (depth < 0) { return options.stylize("[CombinedError]", "special"); } const newOptions = { ...options, depth: options.depth === null ? null : options.depth - 1, compact: true }; const padding = ` ${options.stylize("|", "undefined")} `; const header = `${options.stylize("CombinedError", "special")} (${options.stylize(this.errors.length.toString(), "number")})`; const message = options.stylize(this.message, "regexp"); const errors = this.errors.map((error, i3) => { const index = options.stylize((i3 + 1).toString(), "number"); const body = error[customInspectSymbolStackLess](depth - 1, newOptions).replace(/\n/g, padding); return ` ${index} ${body}`; }).join("\n\n"); return `${header} ${message} ${errors}`; } }; __name(_CombinedError, "CombinedError"); var CombinedError = _CombinedError; var _UnionValidator = class _UnionValidator2 extends BaseValidator { constructor(validators, validatorOptions, constraints = []) { super(validatorOptions, constraints); this.validators = validators; } optional(options = this.validatorOptions) { if (this.validators.length === 0) return new _UnionValidator2([new LiteralValidator(undefined, options)], this.validatorOptions, this.constraints); const [validator] = this.validators; if (validator instanceof LiteralValidator) { if (validator.expected === undefined) return this.clone(); if (validator.expected === null) { return new _UnionValidator2([new NullishValidator(options), ...this.validators.slice(1)], this.validatorOptions, this.constraints); } } else if (validator instanceof NullishValidator) { return this.clone(); } return new _UnionValidator2([new LiteralValidator(undefined, options), ...this.validators], this.validatorOptions); } required(options = this.validatorOptions) { if (this.validators.length === 0) return this.clone(); const [validator] = this.validators; if (validator instanceof LiteralValidator) { if (validator.expected === undefined) { return new _UnionValidator2(this.validators.slice(1), this.validatorOptions, this.constraints); } } else if (validator instanceof NullishValidator) { return new _UnionValidator2([new LiteralValidator(null, options), ...this.validators.slice(1)], this.validatorOptions, this.constraints); } return this.clone(); } nullable(options = this.validatorOptions) { if (this.validators.length === 0) { return new _UnionValidator2([new LiteralValidator(null, options)], this.validatorOptions, this.constraints); } const [validator] = this.validators; if (validator instanceof LiteralValidator) { if (validator.expected === null) return this.clone(); if (validator.expected === undefined) { return new _UnionValidator2([new NullishValidator(options), ...this.validators.slice(1)], this.validatorOptions, this.constraints); } } else if (validator instanceof NullishValidator) { return this.clone(); } return new _UnionValidator2([new LiteralValidator(null, options), ...this.validators], this.validatorOptions); } nullish(options = this.validatorOptions) { if (this.validators.length === 0) { return new _UnionValidator2([new NullishValidator(options)], options, this.constraints); } const [validator] = this.validators; if (validator instanceof LiteralValidator) { if (validator.expected === null || validator.expected === undefined) { return new _UnionValidator2([new NullishValidator(options), ...this.validators.slice(1)], options, this.constraints); } } else if (validator instanceof NullishValidator) { return this.clone(); } return new _UnionValidator2([new NullishValidator(options), ...this.validators], options); } or(...predicates) { return new _UnionValidator2([...this.validators, ...predicates], this.validatorOptions); } clone() { return Reflect.construct(this.constructor, [this.validators, this.validatorOptions, this.constraints]); } handle(value) { const errors = []; for (const validator of this.validators) { const result = validator.run(value); if (result.isOk()) return result; errors.push(result.error); } return Result.err(new CombinedError(errors, this.validatorOptions)); } }; __name(_UnionValidator, "UnionValidator"); var UnionValidator = _UnionValidator; var _ObjectValidator = class _ObjectValidator2 extends BaseValidator { constructor(shape, strategy = 0, validatorOptions = {}, constraints = []) { super(validatorOptions, constraints); this.keys = []; this.requiredKeys = /* @__PURE__ */ new Map; this.possiblyUndefinedKeys = /* @__PURE__ */ new Map; this.possiblyUndefinedKeysWithDefaults = /* @__PURE__ */ new Map; this.shape = shape; this.strategy = strategy; switch (this.strategy) { case 0: this.handleStrategy = (value) => this.handleIgnoreStrategy(value); break; case 1: { this.handleStrategy = (value) => this.handleStrictStrategy(value); break; } case 2: this.handleStrategy = (value) => this.handlePassthroughStrategy(value); break; } const shapeEntries = Object.entries(shape); this.keys = shapeEntries.map(([key]) => key); for (const [key, validator] of shapeEntries) { if (validator instanceof UnionValidator) { const [possiblyLiteralOrNullishPredicate] = validator["validators"]; if (possiblyLiteralOrNullishPredicate instanceof NullishValidator) { this.possiblyUndefinedKeys.set(key, validator); } else if (possiblyLiteralOrNullishPredicate instanceof LiteralValidator) { if (possiblyLiteralOrNullishPredicate.expected === undefined) { this.possiblyUndefinedKeys.set(key, validator); } else { this.requiredKeys.set(key, validator); } } else if (validator instanceof DefaultValidator) { this.possiblyUndefinedKeysWithDefaults.set(key, validator); } else { this.requiredKeys.set(key, validator); } } else if (validator instanceof NullishValidator) { this.possiblyUndefinedKeys.set(key, validator); } else if (validator instanceof LiteralValidator) { if (validator.expected === undefined) { this.possiblyUndefinedKeys.set(key, validator); } else { this.requiredKeys.set(key, validator); } } else if (validator instanceof DefaultValidator) { this.possiblyUndefinedKeysWithDefaults.set(key, validator); } else { this.requiredKeys.set(key, validator); } } } strict(options = this.validatorOptions) { return Reflect.construct(this.constructor, [this.shape, 1, options, this.constraints]); } ignore(options = this.validatorOptions) { return Reflect.construct(this.constructor, [this.shape, 0, options, this.constraints]); } passthrough(options = this.validatorOptions) { return Reflect.construct(this.constructor, [this.shape, 2, options, this.constraints]); } partial(options = this.validatorOptions) { const shape = Object.fromEntries(this.keys.map((key) => [key, this.shape[key].optional(options)])); return Reflect.construct(this.constructor, [shape, this.strategy, options, this.constraints]); } required(options = this.validatorOptions) { const shape = Object.fromEntries(this.keys.map((key) => { let validator = this.shape[key]; if (validator instanceof UnionValidator) validator = validator.required(options); return [key, validator]; })); return Reflect.construct(this.constructor, [shape, this.strategy, options, this.constraints]); } extend(schema, options = this.validatorOptions) { const shape = { ...this.shape, ...schema instanceof _ObjectValidator2 ? schema.shape : schema }; return Reflect.construct(this.constructor, [shape, this.strategy, options, this.constraints]); } pick(keys, options = this.validatorOptions) { const shape = Object.fromEntries(keys.filter((key) => this.keys.includes(key)).map((key) => [key, this.shape[key]])); return Reflect.construct(this.constructor, [shape, this.strategy, options, this.constraints]); } omit(keys, options = this.validatorOptions) { const shape = Object.fromEntries(this.keys.filter((key) => !keys.includes(key)).map((key) => [key, this.shape[key]])); return Reflect.construct(this.constructor, [shape, this.strategy, options, this.constraints]); } handle(value) { const typeOfValue = typeof value; if (typeOfValue !== "object") { return Result.err(new ValidationError("s.object(T)", this.validatorOptions.message ?? `Expected the value to be an object, but received ${typeOfValue} instead`, value)); } if (value === null) { return Result.err(new ValidationError("s.object(T)", this.validatorOptions.message ?? "Expected the value to not be null", value)); } if (Array.isArray(value)) { return Result.err(new ValidationError("s.object(T)", this.validatorOptions.message ?? "Expected the value to not be an array", value)); } if (!this.shouldRunConstraints) { return Result.ok(value); } for (const predicate of Object.values(this.shape)) { predicate.setParent(this.parent ?? value); } return this.handleStrategy(value); } clone() { return Reflect.construct(this.constructor, [this.shape, this.strategy, this.validatorOptions, this.constraints]); } handleIgnoreStrategy(value) { const errors = []; const finalObject = {}; const inputEntries = new Map(Object.entries(value)); const runPredicate = /* @__PURE__ */ __name((key, predicate) => { const result = predicate.run(value[key]); if (result.isOk()) { finalObject[key] = result.value; } else { const error = result.error; errors.push([key, error]); } }, "runPredicate"); for (const [key, predicate] of this.requiredKeys) { if (inputEntries.delete(key)) { runPredicate(key, predicate); } else { errors.push([key, new MissingPropertyError(key, this.validatorOptions)]); } } for (const [key, validator] of this.possiblyUndefinedKeysWithDefaults) { inputEntries.delete(key); runPredicate(key, validator); } if (inputEntries.size === 0) { return errors.length === 0 ? Result.ok(finalObject) : Result.err(new CombinedPropertyError(errors, this.validatorOptions)); } const checkInputEntriesInsteadOfSchemaKeys = this.possiblyUndefinedKeys.size > inputEntries.size; if (checkInputEntriesInsteadOfSchemaKeys) { for (const [key] of inputEntries) { const predicate = this.possiblyUndefinedKeys.get(key); if (predicate) { runPredicate(key, predicate); } } } else { for (const [key, predicate] of this.possiblyUndefinedKeys) { if (inputEntries.delete(key)) { runPredicate(key, predicate); } } } return errors.length === 0 ? Result.ok(finalObject) : Result.err(new CombinedPropertyError(errors, this.validatorOptions)); } handleStrictStrategy(value) { const errors = []; const finalResult = {}; const inputEntries = new Map(Object.entries(value)); const runPredicate = /* @__PURE__ */ __name((key, predicate) => { const result = predicate.run(value[key]); if (result.isOk()) { finalResult[key] = result.value; } else { const error = result.error; errors.push([key, error]); } }, "runPredicate"); for (const [key, predicate] of this.requiredKeys) { if (inputEntries.delete(key)) { runPredicate(key, predicate); } else { errors.push([key, new MissingPropertyError(key, this.validatorOptions)]); } } for (const [key, validator] of this.possiblyUndefinedKeysWithDefaults) { inputEntries.delete(key); runPredicate(key, validator); } for (const [key, predicate] of this.possiblyUndefinedKeys) { if (inputEntries.size === 0) { break; } if (inputEntries.delete(key)) { runPredicate(key, predicate); } } if (inputEntries.size !== 0) { for (const [key, value2] of inputEntries.entries()) { errors.push([key, new UnknownPropertyError(key, value2, this.validatorOptions)]); } } return errors.length === 0 ? Result.ok(finalResult) : Result.err(new CombinedPropertyError(errors, this.validatorOptions)); } handlePassthroughStrategy(value) { const result = this.handleIgnoreStrategy(value); return result.isErr() ? result : Result.ok({ ...value, ...result.value }); } }; __name(_ObjectValidator, "ObjectValidator"); var ObjectValidator = _ObjectValidator; var _PassthroughValidator = class _PassthroughValidator2 extends BaseValidator { handle(value) { return Result.ok(value); } }; __name(_PassthroughValidator, "PassthroughValidator"); var PassthroughValidator = _PassthroughValidator; var _RecordValidator = class _RecordValidator2 extends BaseValidator { constructor(validator, validatorOptions = {}, constraints = []) { super(validatorOptions, constraints); this.validator = validator; } clone() { return Reflect.construct(this.constructor, [this.validator, this.validatorOptions, this.constraints]); } handle(value) { if (typeof value !== "object") { return Result.err(new ValidationError("s.record(T)", this.validatorOptions.message ?? "Expected an object", value)); } if (value === null) { return Result.err(new ValidationError("s.record(T)", this.validatorOptions.message ?? "Expected the value to not be null", value)); } if (Array.isArray(value)) { return Result.err(new ValidationError("s.record(T)", this.validatorOptions.message ?? "Expected the value to not be an array", value)); } if (!this.shouldRunConstraints) { return Result.ok(value); } const errors = []; const transformed = {}; for (const [key, val] of Object.entries(value)) { const result = this.validator.run(val); if (result.isOk()) transformed[key] = result.value; else errors.push([key, result.error]); } return errors.length === 0 ? Result.ok(transformed) : Result.err(new CombinedPropertyError(errors, this.validatorOptions)); } }; __name(_RecordValidator, "RecordValidator"); var RecordValidator = _RecordValidator; var _SetValidator = class _SetValidator2 extends BaseValidator { constructor(validator, validatorOptions, constraints = []) { super(validatorOptions, constraints); this.validator = validator; } clone() { return Reflect.construct(this.constructor, [this.validator, this.validatorOptions, this.constraints]); } handle(values) { if (!(values instanceof Set)) { return Result.err(new ValidationError("s.set(T)", this.validatorOptions.message ?? "Expected a set", values)); } if (!this.shouldRunConstraints) { return Result.ok(values); } const errors = []; const transformed = /* @__PURE__ */ new Set; for (const value of values) { const result = this.validator.run(value); if (result.isOk()) transformed.add(result.value); else errors.push(result.error); } return errors.length === 0 ? Result.ok(transformed) : Result.err(new CombinedError(errors, this.validatorOptions)); } }; __name(_SetValidator, "SetValidator"); var SetValidator = _SetValidator; var accountRegex = /^(?!\.)(?!.*\.\.)([A-Z0-9_+-\.]*)[A-Z0-9_+-]$/i; __name(validateEmail, "validateEmail"); __name(validateEmailDomain, "validateEmailDomain"); var v4Seg = "(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"; var v4Str = `(${v4Seg}[.]){3}${v4Seg}`; var IPv4Reg = new RegExp(`^${v4Str}\$`); var v6Seg = "(?:[0-9a-fA-F]{1,4})"; var IPv6Reg = new RegExp(`^((?:${v6Seg}:){7}(?:${v6Seg}|:)|(?:${v6Seg}:){6}(?:${v4Str}|:${v6Seg}|:)|(?:${v6Seg}:){5}(?::${v4Str}|(:${v6Seg}){1,2}|:)|(?:${v6Seg}:){4}(?:(:${v6Seg}){0,1}:${v4Str}|(:${v6Seg}){1,3}|:)|(?:${v6Seg}:){3}(?:(:${v6Seg}){0,2}:${v4Str}|(:${v6Seg}){1,4}|:)|(?:${v6Seg}:){2}(?:(:${v6Seg}){0,3}:${v4Str}|(:${v6Seg}){1,5}|:)|(?:${v6Seg}:){1}(?:(:${v6Seg}){0,4}:${v4Str}|(:${v6Seg}){1,6}|:)|(?::((?::${v6Seg}){0,5}:${v4Str}|(?::${v6Seg}){1,7}|:)))(%[0-9a-zA-Z-.:]{1,})?\$`); __name(isIPv4, "isIPv4"); __name(isIPv6, "isIPv6"); __name(isIP, "isIP"); var phoneNumberRegex = /^((?:\+|0{0,2})\d{1,2}\s?)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/; __name(validatePhoneNumber, "validatePhoneNumber"); var _MultiplePossibilitiesConstraintError = class _MultiplePossibilitiesConstraintError2 extends BaseConstraintError { constructor(constraint, message, given, expected) { super(constraint, message, given); this.expected = expected; } toJSON() { return { name: this.name, message: this.message, constraint: this.constraint, given: this.given, expected: this.expected }; } [customInspectSymbolStackLess](depth, options) { const constraint = options.stylize(this.constraint, "string"); if (depth < 0) { return options.stylize(`[MultiplePossibilitiesConstraintError: ${constraint}]`, "special"); } const newOptions = { ...options, depth: options.depth === null ? null : options.depth - 1 }; const verticalLine = options.stylize("|", "undefined"); const padding = ` ${verticalLine} `; const given = inspect2(this.given, newOptions).replace(/\n/g, padding); const header = `${options.stylize("MultiplePossibilitiesConstraintError", "special")} > ${constraint}`; const message = options.stylize(this.message, "regexp"); const expectedPadding = ` ${verticalLine} - `; const expectedBlock = ` ${options.stylize("Expected any of the following:", "string")}${expectedPadding}${this.expected.map((possible) => options.stylize(possible, "boolean")).join(expectedPadding)}`; const givenBlock = ` ${options.stylize("Received:", "regexp")}${padding}${given}`; return `${header} ${message} ${expectedBlock} ${givenBlock}`; } }; __name(_MultiplePossibilitiesConstraintError, "MultiplePossibilitiesConstraintError"); var MultiplePossibilitiesConstraintError = _MultiplePossibilitiesConstraintError; __name(combinedErrorFn, "combinedErrorFn"); __name(createUrlValidators, "createUrlValidators"); __name(allowedProtocolsFn, "allowedProtocolsFn"); __name(allowedDomainsFn, "allowedDomainsFn"); __name(stringLengthComparator, "stringLengthComparator"); __name(stringLengthLessThan, "stringLengthLessThan"); __name(stringLengthLessThanOrEqual, "stringLengthLessThanOrEqual"); __name(stringLengthGreaterThan, "stringLengthGreaterThan"); __name(stringLengthGreaterThanOrEqual, "stringLengthGreaterThanOrEqual"); __name(stringLengthEqual, "stringLengthEqual"); __name(stringLengthNotEqual, "stringLengthNotEqual"); __name(stringEmail, "stringEmail"); __name(stringRegexValidator, "stringRegexValidator"); __name(stringUrl, "stringUrl"); __name(stringIp, "stringIp"); __name(stringRegex, "stringRegex"); __name(stringUuid, "stringUuid"); __name(stringDate, "stringDate"); __name(stringPhone, "stringPhone"); var _StringValidator = class _StringValidator2 extends BaseValidator { lengthLessThan(length, options = this.validatorOptions) { return this.addConstraint(stringLengthLessThan(length, options)); } lengthLessThanOrEqual(length, options = this.validatorOptions) { return this.addConstraint(stringLengthLessThanOrEqual(length, options)); } lengthGreaterThan(length, options = this.validatorOptions) { return this.addConstraint(stringLengthGreaterThan(length, options)); } lengthGreaterThanOrEqual(length, options = this.validatorOptions) { return this.addConstraint(stringLengthGreaterThanOrEqual(length, options)); } lengthEqual(length, options = this.validatorOptions) { return this.addConstraint(stringLengthEqual(length, options)); } lengthNotEqual(length, options = this.validatorOptions) { return this.addConstraint(stringLengthNotEqual(length, options)); } email(options = this.validatorOptions) { return this.addConstraint(stringEmail(options)); } url(options, validatorOptions = this.validatorOptions) { const urlOptions = this.isUrlOptions(options); if (urlOptions) { return this.addConstraint(stringUrl(options, validatorOptions)); } return this.addConstraint(stringUrl(undefined, validatorOptions)); } uuid(options, validatorOptions = this.validatorOptions) { const stringUuidOptions = this.isStringUuidOptions(options); if (stringUuidOptions) { return this.addConstraint(stringUuid(options, validatorOptions)); } return this.addConstraint(stringUuid(undefined, validatorOptions)); } regex(regex, options = this.validatorOptions) { return this.addConstraint(stringRegex(regex, options)); } date(options = this.validatorOptions) { return this.addConstraint(stringDate(options)); } ipv4(options = this.validatorOptions) { return this.ip(4, options); } ipv6(options = this.validatorOptions) { return this.ip(6, options); } ip(version, options = this.validatorOptions) { return this.addConstraint(stringIp(version, options)); } phone(options = this.validatorOptions) { return this.addConstraint(stringPhone(options)); } handle(value) { return typeof value === "string" ? Result.ok(value) : Result.err(new ValidationError("s.string()", this.validatorOptions.message ?? "Expected a string primitive", value)); } isUrlOptions(options) { return options?.message === undefined; } isStringUuidOptions(options) { return options?.message === undefined; } }; __name(_StringValidator, "StringValidator"); var StringValidator = _StringValidator; var _TupleValidator = class _TupleValidator2 extends BaseValidator { constructor(validators, validatorOptions = {}, constraints = []) { super(validatorOptions, constraints); this.validators = []; this.validators = validators; } clone() { return Reflect.construct(this.constructor, [this.validators, this.validatorOptions, this.constraints]); } handle(values) { if (!Array.isArray(values)) { return Result.err(new ValidationError("s.tuple(T)", this.validatorOptions.message ?? "Expected an array", values)); } if (values.length !== this.validators.length) { return Result.err(new ValidationError("s.tuple(T)", this.validatorOptions.message ?? `Expected an array of length ${this.validators.length}`, values)); } if (!this.shouldRunConstraints) { return Result.ok(values); } const errors = []; const transformed = []; for (let i3 = 0;i3 < values.length; i3++) { const result = this.validators[i3].run(values[i3]); if (result.isOk()) transformed.push(result.value); else errors.push([i3, result.error]); } return errors.length === 0 ? Result.ok(transformed) : Result.err(new CombinedPropertyError(errors, this.validatorOptions)); } }; __name(_TupleValidator, "TupleValidator"); var TupleValidator = _TupleValidator; var _MapValidator = class _MapValidator2 extends BaseValidator { constructor(keyValidator, valueValidator, validatorOptions = {}, constraints = []) { super(validatorOptions, constraints); this.keyValidator = keyValidator; this.valueValidator = valueValidator; } clone() { return Reflect.construct(this.constructor, [this.keyValidator, this.valueValidator, this.validatorOptions, this.constraints]); } handle(value) { if (!(value instanceof Map)) { return Result.err(new ValidationError("s.map(K, V)", this.validatorOptions.message ?? "Expected a map", value)); } if (!this.shouldRunConstraints) { return Result.ok(value); } const errors = []; const transformed = /* @__PURE__ */ new Map; for (const [key, val] of value.entries()) { const keyResult = this.keyValidator.run(key); const valueResult = this.valueValidator.run(val); const { length } = errors; if (keyResult.isErr()) errors.push([key, keyResult.error]); if (valueResult.isErr()) errors.push([key, valueResult.error]); if (errors.length === length) transformed.set(keyResult.value, valueResult.value); } return errors.length === 0 ? Result.ok(transformed) : Result.err(new CombinedPropertyError(errors, this.validatorOptions)); } }; __name(_MapValidator, "MapValidator"); var MapValidator = _MapValidator; var _LazyValidator = class _LazyValidator2 extends BaseValidator { constructor(validator, validatorOptions = {}, constraints = []) { super(validatorOptions, constraints); this.validator = validator; } clone() { return Reflect.construct(this.constructor, [this.validator, this.validatorOptions, this.constraints]); } handle(values) { return this.validator(values).run(values); } }; __name(_LazyValidator, "LazyValidator"); var LazyValidator = _LazyValidator; var _UnknownEnumValueError = class _UnknownEnumValueError2 extends BaseError { constructor(value, keys, enumMappings, validatorOptions) { super(validatorOptions?.message ?? "Expected the value to be one of the following enum values:"); this.value = value; this.enumKeys = keys; this.enumMappings = enumMappings; } toJSON() { return { name: this.name, message: this.message, value: this.value, enumKeys: this.enumKeys, enumMappings: [...this.enumMappings.entries()] }; } [customInspectSymbolStackLess](depth, options) { const value = options.stylize(this.value.toString(), "string"); if (depth < 0) { return options.stylize(`[UnknownEnumValueError: ${value}]`, "special"); } const padding = ` ${options.stylize("|", "undefined")} `; const pairs = this.enumKeys.map((key) => { const enumValue = this.enumMappings.get(key); return `${options.stylize(key, "string")} or ${options.stylize(enumValue.toString(), typeof enumValue === "number" ? "number" : "string")}`; }).join(padding); const header = `${options.stylize("UnknownEnumValueError", "special")} > ${value}`; const message = options.stylize(this.message, "regexp"); const pairsBlock = `${padding}${pairs}`; return `${header} ${message} ${pairsBlock}`; } }; __name(_UnknownEnumValueError, "UnknownEnumValueError"); var UnknownEnumValueError = _UnknownEnumValueError; var _NativeEnumValidator = class _NativeEnumValidator2 extends BaseValidator { constructor(enumShape, validatorOptions = {}) { super(validatorOptions); this.hasNumericElements = false; this.enumMapping = /* @__PURE__ */ new Map; this.enumShape = enumShape; this.enumKeys = Object.keys(enumShape).filter((key) => { return typeof enumShape[enumShape[key]] !== "number"; }); for (const key of this.enumKeys) { const enumValue = enumShape[key]; this.enumMapping.set(key, enumValue); this.enumMapping.set(enumValue, enumValue); if (typeof enumValue === "number") { this.hasNumericElements = true; this.enumMapping.set(`${enumValue}`, enumValue); } } } handle(value) { const typeOfValue = typeof value; if (typeOfValue === "number") { if (!this.hasNumericElements) { return Result.err(new ValidationError("s.nativeEnum(T)", this.validatorOptions.message ?? "Expected the value to be a string", value)); } } else if (typeOfValue !== "string") { return Result.err(new ValidationError("s.nativeEnum(T)", this.validatorOptions.message ?? "Expected the value to be a string or number", value)); } const casted = value; const possibleEnumValue = this.enumMapping.get(casted); return typeof possibleEnumValue === "undefined" ? Result.err(new UnknownEnumValueError(casted, this.enumKeys, this.enumMapping, this.validatorOptions)) : Result.ok(possibleEnumValue); } clone() { return Reflect.construct(this.constructor, [this.enumShape, this.validatorOptions]); } }; __name(_NativeEnumValidator, "NativeEnumValidator"); var NativeEnumValidator = _NativeEnumValidator; __name(typedArrayByteLengthComparator, "typedArrayByteLengthComparator"); __name(typedArrayByteLengthLessThan, "typedArrayByteLengthLessThan"); __name(typedArrayByteLengthLessThanOrEqual, "typedArrayByteLengthLessThanOrEqual"); __name(typedArrayByteLengthGreaterThan, "typedArrayByteLengthGreaterThan"); __name(typedArrayByteLengthGreaterThanOrEqual, "typedArrayByteLengthGreaterThanOrEqual"); __name(typedArrayByteLengthEqual, "typedArrayByteLengthEqual"); __name(typedArrayByteLengthNotEqual, "typedArrayByteLengthNotEqual"); __name(typedArrayByteLengthRange, "typedArrayByteLengthRange"); __name(typedArrayByteLengthRangeInclusive, "typedArrayByteLengthRangeInclusive"); __name(typedArrayByteLengthRangeExclusive, "typedArrayByteLengthRangeExclusive"); __name(typedArrayLengthComparator, "typedArrayLengthComparator"); __name(typedArrayLengthLessThan, "typedArrayLengthLessThan"); __name(typedArrayLengthLessThanOrEqual, "typedArrayLengthLessThanOrEqual"); __name(typedArrayLengthGreaterThan, "typedArrayLengthGreaterThan"); __name(typedArrayLengthGreaterThanOrEqual, "typedArrayLengthGreaterThanOrEqual"); __name(typedArrayLengthEqual, "typedArrayLengthEqual"); __name(typedArrayLengthNotEqual, "typedArrayLengthNotEqual"); __name(typedArrayLengthRange, "typedArrayLengthRange"); __name(typedArrayLengthRangeInclusive, "typedArrayLengthRangeInclusive"); __name(typedArrayLengthRangeExclusive, "typedArrayLengthRangeExclusive"); var vowels = ["a", "e", "i", "o", "u"]; var aOrAn = /* @__PURE__ */ __name((word) => { return `${vowels.includes(word[0].toLowerCase()) ? "an" : "a"} ${word}`; }, "aOrAn"); var TypedArrays = { Int8Array: (x2) => x2 instanceof Int8Array, Uint8Array: (x2) => x2 instanceof Uint8Array, Uint8ClampedArray: (x2) => x2 instanceof Uint8ClampedArray, Int16Array: (x2) => x2 instanceof Int16Array, Uint16Array: (x2) => x2 instanceof Uint16Array, Int32Array: (x2) => x2 instanceof Int32Array, Uint32Array: (x2) => x2 instanceof Uint32Array, Float32Array: (x2) => x2 instanceof Float32Array, Float64Array: (x2) => x2 instanceof Float64Array, BigInt64Array: (x2) => x2 instanceof BigInt64Array, BigUint64Array: (x2) => x2 instanceof BigUint64Array, TypedArray: (x2) => ArrayBuffer.isView(x2) && !(x2 instanceof DataView) }; var _TypedArrayValidator = class _TypedArrayValidator2 extends BaseValidator { constructor(type, validatorOptions = {}, constraints = []) { super(validatorOptions, constraints); this.type = type; } byteLengthLessThan(length, options = this.validatorOptions) { return this.addConstraint(typedArrayByteLengthLessThan(length, options)); } byteLengthLessThanOrEqual(length, options = this.validatorOptions) { return this.addConstraint(typedArrayByteLengthLessThanOrEqual(length, options)); } byteLengthGreaterThan(length, options = this.validatorOptions) { return this.addConstraint(typedArrayByteLengthGreaterThan(length, options)); } byteLengthGreaterThanOrEqual(length, options = this.validatorOptions) { return this.addConstraint(typedArrayByteLengthGreaterThanOrEqual(length, options)); } byteLengthEqual(length, options = this.validatorOptions) { return this.addConstraint(typedArrayByteLengthEqual(length, options)); } byteLengthNotEqual(length, options = this.validatorOptions) { return this.addConstraint(typedArrayByteLengthNotEqual(length, options)); } byteLengthRange(start, endBefore, options = this.validatorOptions) { return this.addConstraint(typedArrayByteLengthRange(start, endBefore, options)); } byteLengthRangeInclusive(startAt, endAt, options = this.validatorOptions) { return this.addConstraint(typedArrayByteLengthRangeInclusive(startAt, endAt, options)); } byteLengthRangeExclusive(startAfter, endBefore, options = this.validatorOptions) { return this.addConstraint(typedArrayByteLengthRangeExclusive(startAfter, endBefore, options)); } lengthLessThan(length, options = this.validatorOptions) { return this.addConstraint(typedArrayLengthLessThan(length, options)); } lengthLessThanOrEqual(length, options = this.validatorOptions) { return this.addConstraint(typedArrayLengthLessThanOrEqual(length, options)); } lengthGreaterThan(length, options = this.validatorOptions) { return this.addConstraint(typedArrayLengthGreaterThan(length, options)); } lengthGreaterThanOrEqual(length, options = this.validatorOptions) { return this.addConstraint(typedArrayLengthGreaterThanOrEqual(length, options)); } lengthEqual(length, options = this.validatorOptions) { return this.addConstraint(typedArrayLengthEqual(length, options)); } lengthNotEqual(length, options = this.validatorOptions) { return this.addConstraint(typedArrayLengthNotEqual(length, options)); } lengthRange(start, endBefore, options = this.validatorOptions) { return this.addConstraint(typedArrayLengthRange(start, endBefore, options)); } lengthRangeInclusive(startAt, endAt, options = this.validatorOptions) { return this.addConstraint(typedArrayLengthRangeInclusive(startAt, endAt, options)); } lengthRangeExclusive(startAfter, endBefore, options = this.validatorOptions) { return this.addConstraint(typedArrayLengthRangeExclusive(startAfter, endBefore, options)); } clone() { return Reflect.construct(this.constructor, [this.type, this.validatorOptions, this.constraints]); } handle(value) { return TypedArrays[this.type](value) ? Result.ok(value) : Result.err(new ValidationError("s.typedArray()", this.validatorOptions.message ?? `Expected ${aOrAn(this.type)}`, value)); } }; __name(_TypedArrayValidator, "TypedArrayValidator"); var TypedArrayValidator = _TypedArrayValidator; var _Shapes = class _Shapes2 { string(options) { return new StringValidator(options); } number(options) { return new NumberValidator(options); } bigint(options) { return new BigIntValidator(options); } boolean(options) { return new BooleanValidator(options); } date(options) { return new DateValidator(options); } object(shape, options) { return new ObjectValidator(shape, 0, options); } undefined(options) { return this.literal(undefined, { equalsOptions: options }); } null(options) { return this.literal(null, { equalsOptions: options }); } nullish(options) { return new NullishValidator(options); } any(options) { return new PassthroughValidator(options); } unknown(options) { return new PassthroughValidator(options); } never(options) { return new NeverValidator(options); } enum(values, options) { return this.union(values.map((value) => this.literal(value, { equalsOptions: options })), options); } nativeEnum(enumShape, options) { return new NativeEnumValidator(enumShape, options); } literal(value, options) { if (value instanceof Date) { return this.date(options?.dateOptions).equal(value, options?.equalsOptions); } return new LiteralValidator(value, options?.equalsOptions); } instance(expected, options) { return new InstanceValidator(expected, options); } union(validators, options) { return new UnionValidator(validators, options); } array(validator, options) { return new ArrayValidator(validator, options); } typedArray(type = "TypedArray", options) { return new TypedArrayValidator(type, options); } int8Array(options) { return this.typedArray("Int8Array", options); } uint8Array(options) { return this.typedArray("Uint8Array", options); } uint8ClampedArray(options) { return this.typedArray("Uint8ClampedArray", options); } int16Array(options) { return this.typedArray("Int16Array", options); } uint16Array(options) { return this.typedArray("Uint16Array", options); } int32Array(options) { return this.typedArray("Int32Array", options); } uint32Array(options) { return this.typedArray("Uint32Array", options); } float32Array(options) { return this.typedArray("Float32Array", options); } float64Array(options) { return this.typedArray("Float64Array", options); } bigInt64Array(options) { return this.typedArray("BigInt64Array", options); } bigUint64Array(options) { return this.typedArray("BigUint64Array", options); } tuple(validators, options) { return new TupleValidator(validators, options); } set(validator, options) { return new SetValidator(validator, options); } record(validator, options) { return new RecordValidator(validator, options); } map(keyValidator, valueValidator, options) { return new MapValidator(keyValidator, valueValidator, options); } lazy(validator, options) { return new LazyValidator(validator, options); } }; __name(_Shapes, "Shapes"); var Shapes = _Shapes; var s3 = new Shapes; exports.BaseError = BaseError; exports.CombinedError = CombinedError; exports.CombinedPropertyError = CombinedPropertyError; exports.ExpectedConstraintError = ExpectedConstraintError; exports.ExpectedValidationError = ExpectedValidationError; exports.MissingPropertyError = MissingPropertyError; exports.MultiplePossibilitiesConstraintError = MultiplePossibilitiesConstraintError; exports.Result = Result; exports.UnknownEnumValueError = UnknownEnumValueError; exports.UnknownPropertyError = UnknownPropertyError; exports.ValidationError = ValidationError; exports.customInspectSymbol = customInspectSymbol; exports.customInspectSymbolStackLess = customInspectSymbolStackLess; exports.getGlobalValidationEnabled = getGlobalValidationEnabled; exports.s = s3; exports.setGlobalValidationEnabled = setGlobalValidationEnabled; }); // node_modules/discord.js-selfbot-v13/src/structures/interfaces/TextBasedChannel.js var require_TextBasedChannel = __commonJS((exports, module) => { function parseChoices(parent, list_choices, value) { if (value !== undefined) { if (Array.isArray(list_choices) && list_choices.length) { const choice = list_choices.find((c) => [c.name, c.value].includes(value)); if (choice) { return choice.value; } else { throw new Error2("INVALID_SLASH_COMMAND_CHOICES", parent, value); } } else { return value; } } else { return; } } async function addDataFromAttachment(value, client, channelId, attachments) { value = await MessagePayload.resolveFile(value); if (!value?.file) { throw new TypeError("The attachment data must be a BufferResolvable or Stream or FileOptions of MessageAttachment"); } const data = await Util.getUploadURL(client, channelId, [value]); await Util.uploadFile(value.file, data[0].upload_url); const id = attachments.length; attachments.push({ id, filename: value.name, uploaded_filename: data[0].upload_filename }); return { id, attachments }; } async function parseOption(client, optionCommand, value, optionFormat, attachments, command, applicationId, guildId, channelId, subGroup, subCommand) { const data = { type: optionCommand.type, name: optionCommand.name }; if (value !== undefined) { switch (optionCommand.type) { case ApplicationCommandOptionTypes.BOOLEAN: case "BOOLEAN": { data.value = Boolean(value); break; } case ApplicationCommandOptionTypes.INTEGER: case "INTEGER": { data.value = Number(value); break; } case ApplicationCommandOptionTypes.ATTACHMENT: case "ATTACHMENT": { const parseData = await addDataFromAttachment(value, client, channelId, attachments); data.value = parseData.id; attachments = parseData.attachments; break; } case ApplicationCommandOptionTypes.SUB_COMMAND_GROUP: case "SUB_COMMAND_GROUP": { break; } default: { value = parseChoices(optionCommand.name, optionCommand.choices, value); if (optionCommand.autocomplete) { const nonce = SnowflakeUtil.generate(); let postData; if (subGroup) { postData = [ { type: ApplicationCommandOptionTypes.SUB_COMMAND_GROUP, name: subGroup.name, options: [ { type: ApplicationCommandOptionTypes.SUB_COMMAND, name: subCommand.name, options: [ { type: optionCommand.type, name: optionCommand.name, value, focused: true } ] } ] } ]; } else if (subCommand) { postData = [ { type: ApplicationCommandOptionTypes.SUB_COMMAND, name: subCommand.name, options: [ { type: optionCommand.type, name: optionCommand.name, value, focused: true } ] } ]; } else { postData = [ { type: optionCommand.type, name: optionCommand.name, value, focused: true } ]; } const body = createPostData(client, true, applicationId, nonce, guildId, Boolean(command.guild_id), channelId, command.version, command.id, command.name_default || command.name, command.type, postData, []); await client.api.interactions.post({ data: body }); data.value = await awaitAutocomplete(client, nonce, value); } else { data.value = value; } } } optionFormat.push(data); } return { optionFormat, attachments }; } function awaitAutocomplete(client, nonce, defaultValue) { return new Promise((resolve) => { const handler = (data) => { if (data.t !== "APPLICATION_COMMAND_AUTOCOMPLETE_RESPONSE") return; if (data.d?.nonce !== nonce) return; clearTimeout(timeout); client.removeListener(Events.UNHANDLED_PACKET, handler); client.decrementMaxListeners(); if (data.d.choices.length >= 1) { resolve(data.d.choices[0].value); } else { resolve(defaultValue); } }; const timeout = setTimeout2(() => { client.removeListener(Events.UNHANDLED_PACKET, handler); client.decrementMaxListeners(); resolve(defaultValue); }, 5000).unref(); client.incrementMaxListeners(); client.on(Events.UNHANDLED_PACKET, handler); }); } function createPostData(client, isAutocomplete = false, applicationId, nonce, guildId, isGuildCommand, channelId, commandVersion, commandId, commandName, commandType, postData, attachments = []) { const data = { type: isAutocomplete ? InteractionTypes.APPLICATION_COMMAND_AUTOCOMPLETE : InteractionTypes.APPLICATION_COMMAND, application_id: applicationId, guild_id: guildId, channel_id: channelId, session_id: client.sessionId, data: { version: commandVersion, id: commandId, name: commandName, type: commandType, options: postData, attachments }, nonce }; if (isGuildCommand) { data.data.guild_id = guildId; } return data; } var MessageCollector = require_MessageCollector(); var MessagePayload = require_MessagePayload(); var { InteractionTypes, ApplicationCommandOptionTypes, Events } = require_Constants(); var { Error: Error2 } = require_errors(); var SnowflakeUtil = require_SnowflakeUtil(); var { setTimeout: setTimeout2 } = import.meta.require("timers"); var { s } = require_cjs4(); var Util = require_Util(); var validateName = (stringName) => s.string().lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(32).regex(/^[\p{Ll}\p{Lm}\p{Lo}\p{N}\p{sc=Devanagari}\p{sc=Thai}_-]+$/u).setValidationEnabled(true).parse(stringName); class TextBasedChannel { constructor() { this.messages = new MessageManager(this); this.lastMessageId = null; this.lastPinTimestamp = null; } get lastMessage() { return this.messages.resolve(this.lastMessageId); } get lastPinAt() { return this.lastPinTimestamp ? new Date(this.lastPinTimestamp) : null; } async send(options) { const User = require_User(); const { GuildMember } = require_GuildMember(); if (this instanceof User || this instanceof GuildMember) { const dm = await this.createDM(); return dm.send(options); } let messagePayload; if (options instanceof MessagePayload) { messagePayload = options.resolveData(); } else { messagePayload = MessagePayload.create(this, options).resolveData(); } const { data, files } = await messagePayload.resolveFiles(); const attachments = await Util.getUploadURL(this.client, this.id, files); const requestPromises = attachments.map(async (attachment) => { await Util.uploadFile(files[attachment.id].file, attachment.upload_url); return { id: attachment.id, filename: files[attachment.id].name, uploaded_filename: attachment.upload_filename, description: files[attachment.id].description, duration_secs: files[attachment.id].duration_secs, waveform: files[attachment.id].waveform }; }); const attachmentsData = await Promise.all(requestPromises); attachmentsData.sort((a, b) => parseInt(a.id) - parseInt(b.id)); data.attachments = attachmentsData; const d = await this.client.api.channels[this.id].messages.post({ data }); return this.messages.cache.get(d.id) ?? this.messages._add(d); } searchInteractionFromGuildAndPrivateChannel() { return this.client.api[this.guild ? "guilds" : "channels"][this.guild?.id || this.id]["application-command-index"].get().catch(() => ({ application_commands: [], applications: [], version: "" })); } searchInteractionUserApps() { return this.client.api.users["@me"]["application-command-index"].get().catch(() => ({ application_commands: [], applications: [], version: "" })); } searchInteraction() { return Promise.all([this.searchInteractionFromGuildAndPrivateChannel(), this.searchInteractionUserApps()]).then(([dataA, dataB]) => ({ applications: [...dataA.applications, ...dataB.applications], application_commands: [...dataA.application_commands, ...dataB.application_commands] })); } async sendSlash(botOrApplicationId, commandNameString, ...args) { const cmd = commandNameString.trim().split(" "); const commandName = validateName(cmd[0]); const sub = cmd.slice(1); for (let i = 0;i < sub.length; i++) { if (sub.length > 2) { throw new Error2("INVALID_COMMAND_NAME", cmd); } validateName(sub[i]); } const data = await this.searchInteraction(); const filterCommand = data.application_commands.filter((obj) => [obj.name, obj.name_default].includes(commandName)); botOrApplicationId = this.client.users.resolveId(botOrApplicationId); const application = data.applications.find((obj) => obj.id == botOrApplicationId || obj.bot_id == botOrApplicationId); if (!application) { throw new Error2("INVALID_APPLICATION_COMMAND", "Bot/Application doesn't exist"); } const command = filterCommand.find((command2) => command2.application_id == application.id); if (!command) { throw new Error2("INVALID_APPLICATION_COMMAND", application.id); } args = args.flat(2); let optionFormat = []; let attachments = []; let optionsMaxdepth, subGroup, subCommand; if (sub.length == 2) { subGroup = command.options.find((obj) => obj.type == ApplicationCommandOptionTypes.SUB_COMMAND_GROUP && [obj.name, obj.name_default].includes(sub[0])); if (!subGroup) throw new Error2("SLASH_COMMAND_SUB_COMMAND_GROUP_INVALID", sub[0]); subCommand = subGroup.options.find((obj) => obj.type == ApplicationCommandOptionTypes.SUB_COMMAND && [obj.name, obj.name_default].includes(sub[1])); if (!subCommand) throw new Error2("SLASH_COMMAND_SUB_COMMAND_INVALID", sub[1]); optionsMaxdepth = subCommand.options; } else if (sub.length == 1) { subCommand = command.options.find((obj) => obj.type == ApplicationCommandOptionTypes.SUB_COMMAND && [obj.name, obj.name_default].includes(sub[0])); if (!subCommand) throw new Error2("SLASH_COMMAND_SUB_COMMAND_INVALID", sub[0]); optionsMaxdepth = subCommand.options; } else { optionsMaxdepth = command.options; } const valueRequired = optionsMaxdepth?.filter((o) => o.required).length || 0; for (let i = 0;i < Math.min(args.length, optionsMaxdepth?.length || 0); i++) { const optionInput = optionsMaxdepth[i]; const value = args[i]; const parseData = await parseOption(this.client, optionInput, value, optionFormat, attachments, command, application.id, this.guild?.id, this.id, subGroup, subCommand); optionFormat = parseData.optionFormat; attachments = parseData.attachments; } if (valueRequired > args.length) { throw new Error2("SLASH_COMMAND_REQUIRED_OPTIONS_MISSING", valueRequired, optionFormat.length); } let postData; if (subGroup) { postData = [ { type: ApplicationCommandOptionTypes.SUB_COMMAND_GROUP, name: subGroup.name, options: [ { type: ApplicationCommandOptionTypes.SUB_COMMAND, name: subCommand.name, options: optionFormat } ] } ]; } else if (subCommand) { postData = [ { type: ApplicationCommandOptionTypes.SUB_COMMAND, name: subCommand.name, options: optionFormat } ]; } else { postData = optionFormat; } const nonce = SnowflakeUtil.generate(); const body = createPostData(this.client, false, application.id, nonce, this.guild?.id, Boolean(command.guild_id), this.id, command.version, command.id, command.name_default || command.name, command.type, postData, attachments); this.client.api.interactions.post({ data: body, usePayloadJSON: true }); return Util.createPromiseInteraction(this.client, nonce, 5000); } sendTyping() { return this.client.api.channels(this.id).typing.post(); } createMessageCollector(options = {}) { return new MessageCollector(this, options); } awaitMessages(options = {}) { return new Promise((resolve, reject) => { const collector = this.createMessageCollector(options); collector.once("end", (collection, reason) => { if (options.errors?.includes(reason)) { reject(collection); } else { resolve(collection); } }); }); } fetchWebhooks() { return this.guild.channels.fetchWebhooks(this.id); } createWebhook(name, options = {}) { return this.guild.channels.createWebhook(this.id, name, options); } setRateLimitPerUser(rateLimitPerUser, reason) { return this.edit({ rateLimitPerUser }, reason); } setNSFW(nsfw = true, reason) { return this.edit({ nsfw }, reason); } static applyToClass(structure, full = false, ignore = []) { const props = ["send"]; if (full) { props.push("sendSlash", "searchInteraction", "searchInteractionFromGuildAndPrivateChannel", "searchInteractionUserApps", "lastMessage", "lastPinAt", "sendTyping", "createMessageCollector", "awaitMessages", "fetchWebhooks", "createWebhook", "setRateLimitPerUser", "setNSFW"); } for (const prop of props) { if (ignore.includes(prop)) continue; Object.defineProperty(structure.prototype, prop, Object.getOwnPropertyDescriptor(TextBasedChannel.prototype, prop)); } } } module.exports = TextBasedChannel; var MessageManager = require_MessageManager(); }); // node_modules/discord.js-selfbot-v13/src/structures/DMChannel.js var require_DMChannel = __commonJS((exports, module) => { var { Collection } = require_dist(); var { Channel } = require_Channel(); var TextBasedChannel = require_TextBasedChannel(); var MessageManager = require_MessageManager(); var { Opcodes, Status } = require_Constants(); class DMChannel extends Channel { constructor(client, data) { super(client, data); this.type = "DM"; this.messages = new MessageManager(this); } _patch(data) { super._patch(data); if (data.recipients) { this.recipient = this.client.users._add(data.recipients[0]); } if ("last_message_id" in data) { this.lastMessageId = data.last_message_id; } if ("last_pin_timestamp" in data) { this.lastPinTimestamp = data.last_pin_timestamp ? Date.parse(data.last_pin_timestamp) : null; } else { this.lastPinTimestamp ??= null; } if ("is_message_request" in data) { this.messageRequest = data.is_message_request; } if ("is_message_request_timestamp" in data) { this.messageRequestTimestamp = data.is_message_request_timestamp ? Date.parse(data.is_message_request_timestamp) : null; } } async acceptMessageRequest() { if (!this.messageRequest) { throw new Error("NOT_MESSAGE_REQUEST", "This channel is not a message request"); } const c = await this.client.api.channels[this.id].recipients["@me"].put({ data: { consent_status: 2 } }); this.messageRequest = false; return this.client.channels._add(c); } async cancelMessageRequest() { if (!this.messageRequest) { throw new Error("NOT_MESSAGE_REQUEST", "This channel is not a message request"); } await this.client.api.channels[this.id].recipients["@me"].delete(); return this; } get partial() { return typeof this.lastMessageId === "undefined"; } fetch(force = true) { return this.recipient.createDM(force); } toString() { return this.recipient.toString(); } sync() { this.client.ws.broadcast({ op: Opcodes.DM_UPDATE, d: { channel_id: this.id } }); } ring() { return this.client.api.channels(this.id).call.ring.post({ data: { recipients: null } }); } get voiceUsers() { const coll = new Collection; for (const state of this.client.voiceStates.cache.values()) { if (state.channelId === this.id && state.user) { coll.set(state.id, state.user); } } return coll; } get shard() { return this.client.ws.shards.first(); } get voiceAdapterCreator() { return (methods) => { this.client.voice.adapters.set(this.id, methods); return { sendPayload: (data) => { if (this.shard.status !== Status.READY) return false; this.shard.send(data); return true; }, destroy: () => { this.client.voice.adapters.delete(this.id); } }; }; } get lastMessage() { } get lastPinAt() { } send() { } sendTyping() { } createMessageCollector() { } awaitMessages() { } } TextBasedChannel.applyToClass(DMChannel, true, ["fetchWebhooks", "createWebhook", "setRateLimitPerUser", "setNSFW"]); module.exports = DMChannel; }); // node_modules/discord.js-selfbot-v13/src/util/ThreadMemberFlags.js var require_ThreadMemberFlags = __commonJS((exports, module) => { var BitField = require_BitField(); class ThreadMemberFlags extends BitField { } ThreadMemberFlags.FLAGS = {}; module.exports = ThreadMemberFlags; }); // node_modules/discord.js-selfbot-v13/src/structures/ThreadMember.js var require_ThreadMember = __commonJS((exports, module) => { var Base = require_Base(); var ThreadMemberFlags = require_ThreadMemberFlags(); class ThreadMember extends Base { constructor(thread, data, extra = {}) { super(thread.client); this.thread = thread; this.joinedTimestamp = null; this.id = data.user_id; this._patch(data, extra); } _patch(data, extra = {}) { if ("join_timestamp" in data) this.joinedTimestamp = new Date(data.join_timestamp).getTime(); if ("flags" in data) { this.flags = new ThreadMemberFlags(data.flags).freeze(); } if ("member" in data) { this.member = this.thread.guild.members._add(data.member, extra.cache); } else { this.member ??= null; } } get guildMember() { return this.member ?? this.thread.guild.members.cache.get(this.id) ?? null; } get joinedAt() { return this.joinedTimestamp ? new Date(this.joinedTimestamp) : null; } get user() { return this.client.users.cache.get(this.id) ?? null; } get manageable() { return !this.thread.archived && this.thread.editable; } async remove(reason) { await this.thread.members.remove(this.id, reason); return this; } } module.exports = ThreadMember; }); // node_modules/discord.js-selfbot-v13/src/managers/ThreadMemberManager.js var require_ThreadMemberManager = __commonJS((exports, module) => { var process2 = import.meta.require("process"); var { Collection } = require_dist(); var CachedManager = require_CachedManager(); var { TypeError: TypeError2 } = require_errors(); var ThreadMember = require_ThreadMember(); var deprecationEmittedForPassingBoolean = false; class ThreadMemberManager extends CachedManager { constructor(thread, iterable) { super(thread.client, ThreadMember, iterable); this.thread = thread; } _add(data, cache = true) { const existing = this.cache.get(data.user_id); if (cache) existing?._patch(data, { cache }); if (existing) return existing; const member = new ThreadMember(this.thread, data, { cache }); if (cache) this.cache.set(data.user_id, member); return member; } fetchMe(options) { return this.fetch(this.client.user.id, options); } get me() { return this.cache.get(this.client.user.id) ?? null; } resolve(member) { const memberResolvable = super.resolve(member); if (memberResolvable) return memberResolvable; const userId = this.client.users.resolveId(member); if (userId) return this.cache.get(userId) ?? null; return null; } resolveId(member) { const memberResolvable = super.resolveId(member); if (memberResolvable) return memberResolvable; const userResolvable = this.client.users.resolveId(member); return this.cache.has(userResolvable) ? userResolvable : null; } async add(member, reason) { const id = member === "@me" ? member : this.client.users.resolveId(member); if (!id) throw new TypeError2("INVALID_TYPE", "member", "UserResolvable"); await this.client.api.channels(this.thread.id, "thread-members", id).put({ reason }); return id; } async remove(id, reason) { await this.client.api.channels(this.thread.id, "thread-members", id).delete({ reason }); return id; } async _fetchOne(memberId, { cache, force = false, withMember }) { if (!force) { const existing = this.cache.get(memberId); if (existing) return existing; } const data = await this.client.api.channels(this.thread.id, "thread-members", memberId).get({ query: { with_member: withMember } }); return this._add(data, cache); } async _fetchMany({ cache, limit, after, withMember } = {}) { const raw = await this.client.api.channels(this.thread.id, "thread-members").get({ query: { with_member: withMember, limit, after } }); return raw.reduce((col, member) => col.set(member.user_id, this._add(member, cache)), new Collection); } fetch(member, options = { cache: true, force: false }) { if (typeof member === "boolean" && !deprecationEmittedForPassingBoolean) { process2.emitWarning("Passing boolean to member option is deprecated, use cache property instead.", "DeprecationWarning"); deprecationEmittedForPassingBoolean = true; } const id = this.resolveId(member); return id ? this._fetchOne(id, options) : this._fetchMany(typeof member === "boolean" ? { ...options, cache: member } : options); } } module.exports = ThreadMemberManager; }); // node_modules/discord.js-selfbot-v13/src/structures/ThreadChannel.js var require_ThreadChannel = __commonJS((exports, module) => { var { Channel } = require_Channel(); var TextBasedChannel = require_TextBasedChannel(); var { RangeError: RangeError2 } = require_errors(); var MessageManager = require_MessageManager(); var ThreadMemberManager = require_ThreadMemberManager(); var ChannelFlags = require_ChannelFlags(); var Permissions = require_Permissions(); var { resolveAutoArchiveMaxLimit } = require_Util(); class ThreadChannel extends Channel { constructor(guild, data, client) { super(guild?.client ?? client, data, false); this.guild = guild; this.ownerId = data.owner_id; this.guildId = guild?.id ?? data.guild_id; this.messages = new MessageManager(this); this.members = new ThreadMemberManager(this); if (data) this._patch(data); } _patch(data, partial = false) { super._patch(data); if ("name" in data) { this.name = data.name; } if ("guild_id" in data) { this.guildId = data.guild_id; } if ("parent_id" in data) { this.parentId = data.parent_id; } else { this.parentId ??= null; } if ("thread_metadata" in data) { this.locked = data.thread_metadata.locked ?? false; this.invitable = this.type === "GUILD_PRIVATE_THREAD" ? data.thread_metadata.invitable ?? false : null; this.archived = data.thread_metadata.archived; this.autoArchiveDuration = data.thread_metadata.auto_archive_duration; this.archiveTimestamp = data.thread_metadata?.archive_timestamp ? Date.parse(data.thread_metadata.archive_timestamp) : null; if ("create_timestamp" in data.thread_metadata) { this._createdTimestamp = Date.parse(data.thread_metadata.create_timestamp); } } else { this.locked ??= null; this.archived ??= null; this.autoArchiveDuration ??= null; this.archiveTimestamp ??= null; this.invitable ??= null; } this._createdTimestamp ??= this.type === "GUILD_PRIVATE_THREAD" ? super.createdTimestamp : null; if ("last_message_id" in data) { this.lastMessageId = data.last_message_id; } else { this.lastMessageId ??= null; } if ("last_pin_timestamp" in data) { this.lastPinTimestamp = data.last_pin_timestamp ? new Date(data.last_pin_timestamp).getTime() : null; } else { this.lastPinTimestamp ??= null; } if ("rate_limit_per_user" in data || !partial) { this.rateLimitPerUser = data.rate_limit_per_user ?? 0; } else { this.rateLimitPerUser ??= null; } if ("message_count" in data) { this.messageCount = data.message_count; } else { this.messageCount ??= null; } if ("member_count" in data) { this.memberCount = data.member_count; } else { this.memberCount ??= null; } if ("total_message_sent" in data) { this.totalMessageSent = data.total_message_sent; } else { this.totalMessageSent ??= null; } if ("applied_tags" in data) { this.appliedTags = data.applied_tags; } else { this.appliedTags ??= []; } if (data.member && this.client.user) this.members._add({ user_id: this.client.user.id, ...data.member }); if (data.messages) for (const message of data.messages) this.messages._add(message); } get createdTimestamp() { return this._createdTimestamp; } get guildMembers() { return this.members.cache.mapValues((member) => member.guildMember); } get archivedAt() { if (!this.archiveTimestamp) return null; return new Date(this.archiveTimestamp); } get createdAt() { return this.createdTimestamp && new Date(this.createdTimestamp); } get parent() { return this.guild.channels.resolve(this.parentId); } async join() { await this.members.add("@me"); return this; } async leave() { await this.members.remove("@me"); return this; } permissionsFor(memberOrRole, checkAdmin) { return this.parent?.permissionsFor(memberOrRole, checkAdmin) ?? null; } async fetchOwner({ cache = true, force = false } = {}) { if (!force) { const existing = this.members.cache.get(this.ownerId); if (existing) return existing; } const members = await this.members.fetch(cache); return members.get(this.ownerId) ?? null; } async fetchStarterMessage(options) { const channel = this.parent?.type === "GUILD_FORUM" ? this : this.parent; return channel?.messages.fetch(this.id, options) ?? null; } async edit(data, reason) { let autoArchiveDuration = data.autoArchiveDuration; if (autoArchiveDuration === "MAX") autoArchiveDuration = resolveAutoArchiveMaxLimit(this.guild); const newData = await this.client.api.channels(this.id).patch({ data: { name: data.name, archived: data.archived, auto_archive_duration: autoArchiveDuration, rate_limit_per_user: data.rateLimitPerUser, locked: data.locked, invitable: this.type === "GUILD_PRIVATE_THREAD" ? data.invitable : undefined, applied_tags: data.appliedTags, flags: "flags" in data ? ChannelFlags.resolve(data.flags) : undefined }, reason }); return this.client.actions.ChannelUpdate.handle(newData).updated; } setArchived(archived = true, reason) { return this.edit({ archived }, reason); } setAutoArchiveDuration(autoArchiveDuration, reason) { return this.edit({ autoArchiveDuration }, reason); } async setInvitable(invitable = true, reason) { if (this.type !== "GUILD_PRIVATE_THREAD") throw new RangeError2("THREAD_INVITABLE_TYPE", this.type); return this.edit({ invitable }, reason); } setLocked(locked = true, reason) { return this.edit({ locked }, reason); } setName(name, reason) { return this.edit({ name }, reason); } setRateLimitPerUser(rateLimitPerUser, reason) { return this.edit({ rateLimitPerUser }, reason); } pin(reason) { return this.edit({ flags: this.flags.add(ChannelFlags.FLAGS.PINNED) }, reason); } unpin(reason) { return this.edit({ flags: this.flags.remove(ChannelFlags.FLAGS.PINNED) }, reason); } setAppliedTags(appliedTags, reason) { return this.edit({ appliedTags }, reason); } get joined() { return this.members.cache.has(this.client.user?.id); } get editable() { return this.ownerId === this.client.user.id && (this.type !== "GUILD_PRIVATE_THREAD" || this.joined) || this.manageable; } get joinable() { return !this.archived && !this.joined && this.permissionsFor(this.client.user)?.has(this.type === "GUILD_PRIVATE_THREAD" ? Permissions.FLAGS.MANAGE_THREADS : Permissions.FLAGS.VIEW_CHANNEL, false); } get manageable() { const permissions = this.permissionsFor(this.client.user); if (!permissions) return false; if (permissions.has(Permissions.FLAGS.ADMINISTRATOR, false)) return true; return this.guild.members.me.communicationDisabledUntilTimestamp < Date.now() && permissions.has(Permissions.FLAGS.MANAGE_THREADS, false); } get viewable() { if (this.client.user.id === this.guild.ownerId) return true; const permissions = this.permissionsFor(this.client.user); if (!permissions) return false; return permissions.has(Permissions.FLAGS.VIEW_CHANNEL, false); } get sendable() { const permissions = this.permissionsFor(this.client.user); if (!permissions) return false; if (permissions.has(Permissions.FLAGS.ADMINISTRATOR, false)) return true; return !(this.archived && this.locked && !this.manageable) && (this.type !== "GUILD_PRIVATE_THREAD" || this.joined || this.manageable) && permissions.has(Permissions.FLAGS.SEND_MESSAGES_IN_THREADS, false) && this.guild.members.me.communicationDisabledUntilTimestamp < Date.now(); } get unarchivable() { return this.archived && this.sendable && (!this.locked || this.manageable); } isPrivate() { return this.type === "GUILD_PRIVATE_THREAD"; } async delete(reason) { await this.guild.channels.delete(this.id, reason); return this; } get lastMessage() { } get lastPinAt() { } send() { } sendTyping() { } createMessageCollector() { } awaitMessages() { } } TextBasedChannel.applyToClass(ThreadChannel, true, ["fetchWebhooks", "setRateLimitPerUser", "setNSFW"]); module.exports = ThreadChannel; }); // node_modules/discord.js-selfbot-v13/src/managers/ThreadManager.js var require_ThreadManager = __commonJS((exports, module) => { var { Collection } = require_dist(); var CachedManager = require_CachedManager(); var ThreadChannel = require_ThreadChannel(); class ThreadManager extends CachedManager { constructor(channel, iterable) { super(channel.client, ThreadChannel, iterable); this.channel = channel; } _add(thread) { const existing = this.cache.get(thread.id); if (existing) return existing; this.cache.set(thread.id, thread); return thread; } fetch(options, { cache, force } = {}) { if (!options) return this.fetchActive(cache); const channel = this.client.channels.resolveId(options); if (channel) return this.client.channels.fetch(channel, { cache, force }); if (options.archived) { return this.fetchArchived(options.archived, cache); } return this.fetchActive(cache); } fetchArchived(options = {}, cache = true) { return this.fetchActive(cache, { archived: true, ...options }); } async fetchActive(cache = true, options = {}) { const raw = await this.client.api.channels(this.channel.id).threads.search.get({ query: { archived: options?.archived ?? false, limit: options?.limit ?? 25, offset: options?.offset ?? 0, sort_by: options?.sortBy ?? "last_message_time", sort_order: options?.sortOrder ?? "desc" } }); return this.constructor._mapThreads(raw, this.client, { parent: this.channel, cache }); } static _mapThreads(rawThreads, client, { parent, guild, cache }) { const threads = rawThreads.threads.reduce((coll, raw) => { const thread = client.channels._add(raw, guild ?? parent?.guild, { cache }); if (parent && thread.parentId !== parent.id) return coll; return coll.set(thread.id, thread); }, new Collection); for (const rawMember of rawThreads.members) client.channels.cache.get(rawMember.id)?.members._add(rawMember); for (const rawMessage of rawThreads?.first_messages || []) { client.channels.cache.get(rawMessage.id)?.messages._add(rawMessage); } return { threads, hasMore: rawThreads.has_more ?? false }; } } module.exports = ThreadManager; }); // node_modules/discord.js-selfbot-v13/src/managers/GuildTextThreadManager.js var require_GuildTextThreadManager = __commonJS((exports, module) => { var ThreadManager = require_ThreadManager(); var { TypeError: TypeError2 } = require_errors(); var { ChannelTypes } = require_Constants(); var { resolveAutoArchiveMaxLimit } = require_Util(); class GuildTextThreadManager extends ThreadManager { async create({ name, autoArchiveDuration = this.channel.defaultAutoArchiveDuration, startMessage, type, invitable, reason, rateLimitPerUser } = {}) { let path = this.client.api.channels(this.channel.id); if (type && typeof type !== "string" && typeof type !== "number") { throw new TypeError2("INVALID_TYPE", "type", "ThreadChannelType or Number"); } let resolvedType = this.channel.type === "GUILD_NEWS" ? ChannelTypes.GUILD_NEWS_THREAD : ChannelTypes.GUILD_PUBLIC_THREAD; if (startMessage) { const startMessageId = this.channel.messages.resolveId(startMessage); if (!startMessageId) throw new TypeError2("INVALID_TYPE", "startMessage", "MessageResolvable"); path = path.messages(startMessageId); } else if (this.channel.type !== "GUILD_NEWS") { resolvedType = typeof type === "string" ? ChannelTypes[type] : type ?? resolvedType; } if (autoArchiveDuration === "MAX") autoArchiveDuration = resolveAutoArchiveMaxLimit(this.channel.guild); const data = await path.threads.post({ data: { name, auto_archive_duration: autoArchiveDuration, type: resolvedType, invitable: resolvedType === ChannelTypes.GUILD_PRIVATE_THREAD ? invitable : undefined, rate_limit_per_user: rateLimitPerUser }, reason }); return this.client.actions.ThreadCreate.handle(data).thread; } } module.exports = GuildTextThreadManager; }); // node_modules/discord.js-selfbot-v13/src/structures/BaseGuildTextChannel.js var require_BaseGuildTextChannel = __commonJS((exports, module) => { var GuildChannel = require_GuildChannel(); var TextBasedChannel = require_TextBasedChannel(); var GuildTextThreadManager = require_GuildTextThreadManager(); var MessageManager = require_MessageManager(); class BaseGuildTextChannel extends GuildChannel { constructor(guild, data, client) { super(guild, data, client, false); this.messages = new MessageManager(this); this.threads = new GuildTextThreadManager(this); this.nsfw = Boolean(data.nsfw); this._patch(data); } _patch(data) { super._patch(data); if ("topic" in data) { this.topic = data.topic; } if ("nsfw" in data) { this.nsfw = Boolean(data.nsfw); } if ("last_message_id" in data) { this.lastMessageId = data.last_message_id; } if ("last_pin_timestamp" in data) { this.lastPinTimestamp = data.last_pin_timestamp ? new Date(data.last_pin_timestamp).getTime() : null; } if ("default_auto_archive_duration" in data) { this.defaultAutoArchiveDuration = data.default_auto_archive_duration; } if ("default_thread_rate_limit_per_user" in data) { this.defaultThreadRateLimitPerUser = data.default_thread_rate_limit_per_user; } else { this.defaultThreadRateLimitPerUser ??= null; } if ("messages" in data) { for (const message of data.messages) this.messages._add(message); } } setDefaultAutoArchiveDuration(defaultAutoArchiveDuration, reason) { return this.edit({ defaultAutoArchiveDuration }, reason); } setType(type, reason) { return this.edit({ type }, reason); } setTopic(topic, reason) { return this.edit({ topic }, reason); } createInvite(options) { return this.guild.invites.create(this.id, options); } fetchInvites(cache = true) { return this.guild.invites.fetch({ channelId: this.id, cache }); } get lastMessage() { } get lastPinAt() { } send() { } sendTyping() { } createMessageCollector() { } awaitMessages() { } fetchWebhooks() { } createWebhook() { } setRateLimitPerUser() { } setNSFW() { } } TextBasedChannel.applyToClass(BaseGuildTextChannel, true); module.exports = BaseGuildTextChannel; }); // node_modules/discord.js-selfbot-v13/src/structures/NewsChannel.js var require_NewsChannel = __commonJS((exports, module) => { var BaseGuildTextChannel = require_BaseGuildTextChannel(); var { Error: Error2 } = require_errors(); class NewsChannel extends BaseGuildTextChannel { async addFollower(channel, reason) { const channelId = this.guild.channels.resolveId(channel); if (!channelId) throw new Error2("GUILD_CHANNEL_RESOLVE"); await this.client.api.channels(this.id).followers.post({ data: { webhook_channel_id: channelId }, reason }); return this; } } module.exports = NewsChannel; }); // node_modules/discord.js-selfbot-v13/src/structures/BaseGuildVoiceChannel.js var require_BaseGuildVoiceChannel = __commonJS((exports, module) => { var { Collection } = require_dist(); var GuildChannel = require_GuildChannel(); var TextBasedChannel = require_TextBasedChannel(); var MessageManager = require_MessageManager(); var { VideoQualityModes } = require_Constants(); var Permissions = require_Permissions(); class BaseGuildVoiceChannel extends GuildChannel { constructor(guild, data, client) { super(guild, data, client, false); this.messages = new MessageManager(this); this.nsfw = Boolean(data.nsfw); this._patch(data); } _patch(data) { super._patch(data); if ("bitrate" in data) { this.bitrate = data.bitrate; } if ("rtc_region" in data) { this.rtcRegion = data.rtc_region; } if ("user_limit" in data) { this.userLimit = data.user_limit; } if ("video_quality_mode" in data) { this.videoQualityMode = VideoQualityModes[data.video_quality_mode]; } else { this.videoQualityMode ??= null; } if ("last_message_id" in data) { this.lastMessageId = data.last_message_id; } if ("messages" in data) { for (const message of data.messages) this.messages._add(message); } if ("rate_limit_per_user" in data) { this.rateLimitPerUser = data.rate_limit_per_user; } if ("nsfw" in data) { this.nsfw = data.nsfw; } if ("status" in data) { this.status = data.status; } } get members() { const coll = new Collection; for (const state of this.guild.voiceStates.cache.values()) { if (state.channelId === this.id && state.member) { coll.set(state.id, state.member); } } return coll; } get full() { return this.userLimit > 0 && this.members.size >= this.userLimit; } get joinable() { if (!this.viewable) return false; const permissions = this.permissionsFor(this.client.user); if (!permissions) return false; if (permissions.has(Permissions.FLAGS.ADMINISTRATOR, false)) return true; return this.guild.members.me.communicationDisabledUntilTimestamp < Date.now() && permissions.has(Permissions.FLAGS.CONNECT, false); } createInvite(options) { return this.guild.invites.create(this.id, options); } fetchInvites(cache = true) { return this.guild.invites.fetch({ channelId: this.id, cache }); } setBitrate(bitrate, reason) { return this.edit({ bitrate }, reason); } setRTCRegion(rtcRegion, reason) { return this.edit({ rtcRegion }, reason); } setUserLimit(userLimit, reason) { return this.edit({ userLimit }, reason); } setVideoQualityMode(videoQualityMode, reason) { return this.edit({ videoQualityMode }, reason); } get lastMessage() { } send() { } sendTyping() { } createMessageCollector() { } awaitMessages() { } fetchWebhooks() { } createWebhook() { } setRateLimitPerUser() { } setNSFW() { } } TextBasedChannel.applyToClass(BaseGuildVoiceChannel, true, ["lastPinAt"]); module.exports = BaseGuildVoiceChannel; }); // node_modules/discord.js-selfbot-v13/src/structures/StageChannel.js var require_StageChannel = __commonJS((exports, module) => { var BaseGuildVoiceChannel = require_BaseGuildVoiceChannel(); class StageChannel extends BaseGuildVoiceChannel { _patch(data) { super._patch(data); if ("topic" in data) { this.topic = data.topic; } } get stageInstance() { return this.guild.stageInstances.cache.find((stageInstance) => stageInstance.channelId === this.id) ?? null; } createStageInstance(options) { return this.guild.stageInstances.create(this.id, options); } setTopic(topic, reason) { return this.edit({ topic }, reason); } } module.exports = StageChannel; }); // node_modules/discord.js-selfbot-v13/src/structures/StoreChannel.js var require_StoreChannel = __commonJS((exports, module) => { var GuildChannel = require_GuildChannel(); class StoreChannel extends GuildChannel { constructor(guild, data, client) { super(guild, data, client); this.nsfw = Boolean(data.nsfw); } _patch(data) { super._patch(data); if ("nsfw" in data) { this.nsfw = Boolean(data.nsfw); } } createInvite(options) { return this.guild.invites.create(this.id, options); } fetchInvites(cache = true) { return this.guild.invites.fetch({ channelId: this.id, cache }); } } module.exports = StoreChannel; }); // node_modules/discord.js-selfbot-v13/src/structures/TextChannel.js var require_TextChannel = __commonJS((exports, module) => { var BaseGuildTextChannel = require_BaseGuildTextChannel(); class TextChannel extends BaseGuildTextChannel { _patch(data) { super._patch(data); if ("rate_limit_per_user" in data) { this.rateLimitPerUser = data.rate_limit_per_user; } } setRateLimitPerUser(rateLimitPerUser, reason) { return this.edit({ rateLimitPerUser }, reason); } } module.exports = TextChannel; }); // node_modules/discord.js-selfbot-v13/src/structures/VoiceChannel.js var require_VoiceChannel = __commonJS((exports, module) => { var process2 = import.meta.require("process"); var BaseGuildVoiceChannel = require_BaseGuildVoiceChannel(); var Permissions = require_Permissions(); var deprecationEmittedForEditable = false; class VoiceChannel extends BaseGuildVoiceChannel { get editable() { if (!deprecationEmittedForEditable) { process2.emitWarning("The VoiceChannel#editable getter is deprecated. Use VoiceChannel#manageable instead.", "DeprecationWarning"); deprecationEmittedForEditable = true; } return this.manageable; } get joinable() { if (!super.joinable) return false; if (this.full && !this.permissionsFor(this.client.user).has(Permissions.FLAGS.MOVE_MEMBERS, false)) return false; return true; } get speakable() { const permissions = this.permissionsFor(this.client.user); if (!permissions) return false; if (permissions.has(Permissions.FLAGS.ADMINISTRATOR, false)) return true; return this.guild.members.me.communicationDisabledUntilTimestamp < Date.now() && permissions.has(Permissions.FLAGS.SPEAK, false); } } module.exports = VoiceChannel; }); // node_modules/discord.js-selfbot-v13/src/structures/DirectoryChannel.js var require_DirectoryChannel = __commonJS((exports, module) => { var { Channel } = require_Channel(); class DirectoryChannel extends Channel { _patch(data) { super._patch(data); this.name = data.name; } } module.exports = DirectoryChannel; }); // node_modules/discord.js-selfbot-v13/src/managers/GuildForumThreadManager.js var require_GuildForumThreadManager = __commonJS((exports, module) => { var ThreadManager = require_ThreadManager(); var { TypeError: TypeError2 } = require_errors(); var MessagePayload = require_MessagePayload(); var { resolveAutoArchiveMaxLimit, getUploadURL, uploadFile } = require_Util(); class GuildForumThreadManager extends ThreadManager { async create({ name, autoArchiveDuration = this.channel.defaultAutoArchiveDuration, message, reason, rateLimitPerUser, appliedTags } = {}) { if (!message) { throw new TypeError2("GUILD_FORUM_MESSAGE_REQUIRED"); } let messagePayload; if (message instanceof MessagePayload) { messagePayload = message.resolveData(); } else { messagePayload = MessagePayload.create(this, message).resolveData(); } const { data: body, files } = await messagePayload.resolveFiles(); const attachments = await getUploadURL(this.client, this.channel.id, files); const requestPromises = attachments.map(async (attachment) => { await uploadFile(files[attachment.id].file, attachment.upload_url); return { id: attachment.id, filename: files[attachment.id].name, uploaded_filename: attachment.upload_filename, description: files[attachment.id].description, duration_secs: files[attachment.id].duration_secs, waveform: files[attachment.id].waveform }; }); const attachmentsData = await Promise.all(requestPromises); attachmentsData.sort((a, b) => parseInt(a.id) - parseInt(b.id)); if (autoArchiveDuration === "MAX") autoArchiveDuration = resolveAutoArchiveMaxLimit(this.channel.guild); const post_data = await this.client.api.channels(this.channel.id).threads.post({ data: { name, auto_archive_duration: autoArchiveDuration, rate_limit_per_user: rateLimitPerUser, applied_tags: appliedTags, message: body, attachments: attachmentsData }, files: [], reason }); return this.client.actions.ThreadCreate.handle(post_data).thread; } } module.exports = GuildForumThreadManager; }); // node_modules/discord.js-selfbot-v13/src/structures/ThreadOnlyChannel.js var require_ThreadOnlyChannel = __commonJS((exports, module) => { var GuildChannel = require_GuildChannel(); var TextBasedChannel = require_TextBasedChannel(); var GuildForumThreadManager = require_GuildForumThreadManager(); var { SortOrderTypes } = require_Constants(); var { transformAPIGuildForumTag, transformAPIGuildDefaultReaction } = require_Util(); class ThreadOnlyChannel extends GuildChannel { constructor(guild, data, client) { super(guild, data, client, false); this.threads = new GuildForumThreadManager(this); this._patch(data); } _patch(data) { super._patch(data); if ("available_tags" in data) { this.availableTags = data.available_tags.map((tag) => transformAPIGuildForumTag(tag)); } else { this.availableTags ??= []; } if ("default_reaction_emoji" in data) { this.defaultReactionEmoji = data.default_reaction_emoji && transformAPIGuildDefaultReaction(data.default_reaction_emoji); } else { this.defaultReactionEmoji ??= null; } if ("default_thread_rate_limit_per_user" in data) { this.defaultThreadRateLimitPerUser = data.default_thread_rate_limit_per_user; } else { this.defaultThreadRateLimitPerUser ??= null; } if ("rate_limit_per_user" in data) { this.rateLimitPerUser = data.rate_limit_per_user; } else { this.rateLimitPerUser ??= null; } if ("default_auto_archive_duration" in data) { this.defaultAutoArchiveDuration = data.default_auto_archive_duration; } else { this.defaultAutoArchiveDuration ??= null; } if ("nsfw" in data) { this.nsfw = data.nsfw; } else { this.nsfw ??= false; } if ("topic" in data) { this.topic = data.topic; } if ("default_sort_order" in data) { this.defaultSortOrder = SortOrderTypes[data.default_sort_order]; } else { this.defaultSortOrder ??= null; } } setAvailableTags(availableTags, reason) { return this.edit({ availableTags }, reason); } setDefaultReactionEmoji(defaultReactionEmoji, reason) { return this.edit({ defaultReactionEmoji }, reason); } setDefaultThreadRateLimitPerUser(defaultThreadRateLimitPerUser, reason) { return this.edit({ defaultThreadRateLimitPerUser }, reason); } setDefaultSortOrder(defaultSortOrder, reason) { return this.edit({ defaultSortOrder }, reason); } createInvite(options) { return this.guild.invites.create(this.id, options); } fetchInvites(cache = true) { return this.guild.invites.fetch({ channelId: this.id, cache }); } setDefaultAutoArchiveDuration(defaultAutoArchiveDuration, reason) { return this.edit({ defaultAutoArchiveDuration }, reason); } setTopic(topic, reason) { return this.edit({ topic }, reason); } createWebhook() { } fetchWebhooks() { } setNSFW() { } setRateLimitPerUser() { } } TextBasedChannel.applyToClass(ThreadOnlyChannel, true, [ "send", "lastMessage", "lastPinAt", "bulkDelete", "sendTyping", "createMessageCollector", "awaitMessages", "createMessageComponentCollector", "awaitMessageComponent" ]); module.exports = ThreadOnlyChannel; }); // node_modules/discord.js-selfbot-v13/src/structures/ForumChannel.js var require_ForumChannel = __commonJS((exports, module) => { var ThreadOnlyChannel = require_ThreadOnlyChannel(); var { ForumLayoutTypes } = require_Constants(); class ForumChannel extends ThreadOnlyChannel { _patch(data) { super._patch(data); this.defaultForumLayout = ForumLayoutTypes[data.default_forum_layout]; } setDefaultForumLayout(defaultForumLayout, reason) { return this.edit({ defaultForumLayout }, reason); } } module.exports = ForumChannel; }); // node_modules/discord.js-selfbot-v13/src/structures/MediaChannel.js var require_MediaChannel = __commonJS((exports, module) => { var ThreadOnlyChannel = require_ThreadOnlyChannel(); class MediaChannel extends ThreadOnlyChannel { } module.exports = MediaChannel; }); // node_modules/discord.js-selfbot-v13/src/structures/GroupDMChannel.js var require_GroupDMChannel = __commonJS((exports, module) => { var { Collection } = require_dist(); var { Channel } = require_Channel(); var Invite = require_Invite(); var TextBasedChannel = require_TextBasedChannel(); var MessageManager = require_MessageManager(); var { Status, Opcodes } = require_Constants(); var DataResolver = require_DataResolver(); class GroupDMChannel extends Channel { constructor(client, data) { super(client, data); this.type = "GROUP_DM"; this.messages = new MessageManager(this); } _patch(data) { super._patch(data); if ("recipients" in data && Array.isArray(data.recipients)) { this._recipients = data.recipients; data.recipients.forEach((u) => this.client.users._add(u)); } else { this._recipients = []; } if ("owner_id" in data) { this.ownerId = data.owner_id; } else { this.ownerId ??= null; } if ("last_message_id" in data) { this.lastMessageId = data.last_message_id; } else { this.lastMessageId ??= null; } if ("last_pin_timestamp" in data) { this.lastPinTimestamp = data.last_pin_timestamp ? Date.parse(data.last_pin_timestamp) : null; } else { this.lastPinTimestamp ??= null; } if ("name" in data) { this.name = data.name; } if ("icon" in data) { this.icon = data.icon ?? null; } } iconURL({ format, size } = {}) { return this.icon && this.client.rest.cdn.GDMIcon(this.id, this.icon, format, size); } get recipients() { const collect = new Collection; this._recipients.map((recipient) => collect.set(recipient.id, this.client.users.cache.get(recipient.id))); collect.set(this.client.user.id, this.client.user); return collect; } get owner() { return this.client.users.cache.get(this.ownerId); } get partial() { return typeof this.lastMessageId === "undefined"; } async delete(slient = false) { if (typeof slient === "boolean" && slient) { await this.client.api.channels[this.id].delete({ query: { silent: true } }); } else { await this.client.api.channels[this.id].delete(); } return this; } toString() { return this.name ?? this._recipients.filter((user) => user.id !== this.client.user.id).map((user) => user.username).join(", "); } toJSON() { const json = super.toJSON({ createdTimestamp: true }); json.iconURL = this.iconURL(); return json; } async edit(data) { const _data = {}; if ("name" in data) _data.name = data.name?.trim() ?? null; if (typeof data.icon !== "undefined") { _data.icon = await DataResolver.resolveImage(data.icon); } if ("owner" in data) { _data.owner = data.owner; } const newData = await this.client.api.channels[this.id].patch({ data: _data }); return this.client.actions.ChannelUpdate.handle(newData).updated; } setName(name) { return this.edit({ name }); } setIcon(icon) { return this.edit({ icon }); } setOwner(user) { const id = this.client.users.resolveId(user); if (this.ownerId === id) { return Promise.resolve(this); } return this.edit({ owner: id }); } async addUser(user) { user = this.client.users.resolveId(user); await this.client.api.channels[this.id].recipients[user].put(); return this; } async removeUser(user) { user = this.client.users.resolveId(user); await this.client.api.channels[this.id].recipients[user].delete(); return this; } async getInvite() { const inviteCode = await this.client.api.channels(this.id).invites.post({ data: { max_age: 86400 } }); return new Invite(this.client, inviteCode); } async fetchAllInvite() { const invites = await this.client.api.channels(this.id).invites.get(); return new Collection(invites.map((invite) => [invite.code, new Invite(this.client, invite)])); } async removeInvite(invite) { let code = invite?.code; if (!code && URL.canParse(invite)) code = new URL(invite).pathname.slice(1); else code = invite; await this.client.api.channels(this.id).invites[invite].delete(); return this; } ring(recipients) { if (!recipients || !Array.isArray(recipients) || recipients.length == 0) { recipients = null; } else { recipients = recipients.map((r) => this.client.users.resolveId(r)).filter((r) => r && this.recipients.get(r)); } return this.client.api.channels(this.id).call.ring.post({ data: { recipients } }); } sync() { this.client.ws.broadcast({ op: Opcodes.DM_UPDATE, d: { channel_id: this.id } }); } get voiceUsers() { const coll = new Collection; for (const state of this.client.voiceStates.cache.values()) { if (state.channelId === this.id && state.user) { coll.set(state.id, state.user); } } return coll; } get shard() { return this.client.ws.shards.first(); } get voiceAdapterCreator() { return (methods) => { this.client.voice.adapters.set(this.id, methods); return { sendPayload: (data) => { if (this.shard.status !== Status.READY) return false; this.shard.send(data); return true; }, destroy: () => { this.client.voice.adapters.delete(this.id); } }; }; } get lastMessage() { } get lastPinAt() { } send() { } sendTyping() { } createMessageCollector() { } awaitMessages() { } } TextBasedChannel.applyToClass(GroupDMChannel, true, [ "fetchWebhooks", "createWebhook", "setRateLimitPerUser", "setNSFW" ]); module.exports = GroupDMChannel; }); // node_modules/discord.js-selfbot-v13/src/structures/Channel.js var require_Channel = __commonJS((exports) => { var process2 = import.meta.require("process"); var Base = require_Base(); var CategoryChannel; var DMChannel; var NewsChannel; var StageChannel; var StoreChannel; var TextChannel; var ThreadChannel; var VoiceChannel; var DirectoryChannel; var ForumChannel; var MediaChannel; var ChannelFlags = require_ChannelFlags(); var { ChannelTypes, ThreadChannelTypes, VoiceBasedChannelTypes } = require_Constants(); var SnowflakeUtil = require_SnowflakeUtil(); var deletedChannels = new WeakSet; var deprecationEmittedForDeleted = false; class Channel extends Base { constructor(client, data, immediatePatch = true) { super(client); const type = ChannelTypes[data?.type]; this.type = type ?? "UNKNOWN"; if (data && immediatePatch) this._patch(data); } _patch(data) { this.id = data.id; if ("flags" in data) { this.flags = new ChannelFlags(data.flags).freeze(); } else { this.flags ??= new ChannelFlags().freeze(); } } get createdTimestamp() { return SnowflakeUtil.timestampFrom(this.id); } get createdAt() { return new Date(this.createdTimestamp); } get deleted() { if (!deprecationEmittedForDeleted) { deprecationEmittedForDeleted = true; process2.emitWarning("Channel#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.", "DeprecationWarning"); } return deletedChannels.has(this); } set deleted(value) { if (!deprecationEmittedForDeleted) { deprecationEmittedForDeleted = true; process2.emitWarning("Channel#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.", "DeprecationWarning"); } if (value) deletedChannels.add(this); else deletedChannels.delete(this); } get partial() { return false; } toString() { return `<#${this.id}>`; } async delete() { await this.client.api.channels(this.id).delete(); return this; } fetch(force = true) { return this.client.channels.fetch(this.id, { force }); } isText() { return "messages" in this; } isVoice() { return VoiceBasedChannelTypes.includes(this.type); } isThread() { return ThreadChannelTypes.includes(this.type); } isThreadOnly() { return "availableTags" in this; } isDirectory() { return this.type === "GUILD_DIRECTORY"; } static create(client, data, guild, { allowUnknownGuild } = {}) { CategoryChannel ??= require_CategoryChannel(); DMChannel ??= require_DMChannel(); NewsChannel ??= require_NewsChannel(); StageChannel ??= require_StageChannel(); StoreChannel ??= require_StoreChannel(); TextChannel ??= require_TextChannel(); ThreadChannel ??= require_ThreadChannel(); VoiceChannel ??= require_VoiceChannel(); DirectoryChannel ??= require_DirectoryChannel(); ForumChannel ??= require_ForumChannel(); MediaChannel ??= require_MediaChannel(); let channel; if (!data.guild_id && !guild) { if (data.recipients && data.type !== ChannelTypes.GROUP_DM || data.type === ChannelTypes.DM) { channel = new DMChannel(client, data); } else if (data.type === ChannelTypes.GROUP_DM) { const GroupDMChannel = require_GroupDMChannel(); channel = new GroupDMChannel(client, data); } } else { guild ??= client.guilds.cache.get(data.guild_id); if (guild || allowUnknownGuild) { switch (data.type) { case ChannelTypes.GUILD_TEXT: { channel = new TextChannel(guild, data, client); break; } case ChannelTypes.GUILD_VOICE: { channel = new VoiceChannel(guild, data, client); break; } case ChannelTypes.GUILD_CATEGORY: { channel = new CategoryChannel(guild, data, client); break; } case ChannelTypes.GUILD_NEWS: { channel = new NewsChannel(guild, data, client); break; } case ChannelTypes.GUILD_STORE: { channel = new StoreChannel(guild, data, client); break; } case ChannelTypes.GUILD_STAGE_VOICE: { channel = new StageChannel(guild, data, client); break; } case ChannelTypes.GUILD_NEWS_THREAD: case ChannelTypes.GUILD_PUBLIC_THREAD: case ChannelTypes.GUILD_PRIVATE_THREAD: { channel = new ThreadChannel(guild, data, client); if (!allowUnknownGuild) channel.parent?.threads.cache.set(channel.id, channel); break; } case ChannelTypes.GUILD_DIRECTORY: channel = new DirectoryChannel(client, data); break; case ChannelTypes.GUILD_FORUM: channel = new ForumChannel(guild, data, client); break; case ChannelTypes.GUILD_MEDIA: channel = new MediaChannel(guild, data, client); break; } if (channel && !allowUnknownGuild) guild.channels?.cache.set(channel.id, channel); } } return channel; } toJSON(...props) { return super.toJSON({ createdTimestamp: true }, ...props); } } exports.Channel = Channel; exports.deletedChannels = deletedChannels; }); // node_modules/discord.js-selfbot-v13/src/structures/PermissionOverwrites.js var require_PermissionOverwrites = __commonJS((exports, module) => { var Base = require_Base(); var { Role } = require_Role(); var { TypeError: TypeError2 } = require_errors(); var { OverwriteTypes } = require_Constants(); var Permissions = require_Permissions(); class PermissionOverwrites extends Base { constructor(client, data, channel) { super(client); Object.defineProperty(this, "channel", { value: channel }); if (data) this._patch(data); } _patch(data) { this.id = data.id; if ("type" in data) { this.type = typeof data.type === "number" ? OverwriteTypes[data.type] : data.type; } if ("deny" in data) { this.deny = new Permissions(BigInt(data.deny)).freeze(); } if ("allow" in data) { this.allow = new Permissions(BigInt(data.allow)).freeze(); } } async edit(options, reason) { await this.channel.permissionOverwrites.upsert(this.id, options, { type: OverwriteTypes[this.type], reason }, this); return this; } async delete(reason) { await this.channel.permissionOverwrites.delete(this.id, reason); return this; } toJSON() { return { id: this.id, type: OverwriteTypes[this.type], allow: this.allow, deny: this.deny }; } static resolveOverwriteOptions(options, { allow, deny } = {}) { allow = new Permissions(allow); deny = new Permissions(deny); for (const [perm, value] of Object.entries(options)) { if (value === true) { allow.add(perm); deny.remove(perm); } else if (value === false) { allow.remove(perm); deny.add(perm); } else if (value === null) { allow.remove(perm); deny.remove(perm); } } return { allow, deny }; } static resolve(overwrite, guild) { if (overwrite instanceof this) return overwrite.toJSON(); if (typeof overwrite.id === "string" && overwrite.type in OverwriteTypes) { return { id: overwrite.id, type: OverwriteTypes[overwrite.type], allow: Permissions.resolve(overwrite.allow ?? Permissions.defaultBit).toString(), deny: Permissions.resolve(overwrite.deny ?? Permissions.defaultBit).toString() }; } const userOrRole = guild.roles.resolve(overwrite.id) ?? guild.client.users.resolve(overwrite.id); if (!userOrRole) { throw new TypeError2("INVALID_TYPE", "parameter", "cached User or Role"); } const type = userOrRole instanceof Role ? OverwriteTypes.role : OverwriteTypes.member; return { id: userOrRole.id, type, allow: Permissions.resolve(overwrite.allow ?? Permissions.defaultBit).toString(), deny: Permissions.resolve(overwrite.deny ?? Permissions.defaultBit).toString() }; } } module.exports = PermissionOverwrites; }); // node_modules/discord.js-selfbot-v13/src/managers/PermissionOverwriteManager.js var require_PermissionOverwriteManager = __commonJS((exports, module) => { var process2 = import.meta.require("process"); var { Collection } = require_dist(); var CachedManager = require_CachedManager(); var { TypeError: TypeError2 } = require_errors(); var PermissionOverwrites = require_PermissionOverwrites(); var { Role } = require_Role(); var { OverwriteTypes } = require_Constants(); var cacheWarningEmitted = false; class PermissionOverwriteManager extends CachedManager { constructor(channel, iterable) { super(channel.client, PermissionOverwrites); if (!cacheWarningEmitted && this._cache.constructor.name !== "Collection") { cacheWarningEmitted = true; process2.emitWarning(`Overriding the cache handling for ${this.constructor.name} is unsupported and breaks functionality.`, "UnsupportedCacheOverwriteWarning"); } this.channel = channel; if (iterable) { for (const item of iterable) { this._add(item); } } } _add(data, cache) { return super._add(data, cache, { extras: [this.channel] }); } async set(overwrites, reason) { if (!Array.isArray(overwrites) && !(overwrites instanceof Collection)) { throw new TypeError2("INVALID_TYPE", "overwrites", "Array or Collection of Permission Overwrites", true); } return this.channel.edit({ permissionOverwrites: overwrites, reason }); } async upsert(userOrRole, options, overwriteOptions = {}, existing) { let userOrRoleId = this.channel.guild.roles.resolveId(userOrRole) ?? this.client.users.resolveId(userOrRole); let { type, reason } = overwriteOptions; if (typeof type !== "number") { userOrRole = this.channel.guild.roles.resolve(userOrRole) ?? this.client.users.resolve(userOrRole); if (!userOrRole) throw new TypeError2("INVALID_TYPE", "parameter", "User nor a Role"); type = userOrRole instanceof Role ? OverwriteTypes.role : OverwriteTypes.member; } const { allow, deny } = PermissionOverwrites.resolveOverwriteOptions(options, existing); await this.client.api.channels(this.channel.id).permissions(userOrRoleId).put({ data: { id: userOrRoleId, type, allow, deny }, reason }); return this.channel; } create(userOrRole, options, overwriteOptions) { return this.upsert(userOrRole, options, overwriteOptions); } edit(userOrRole, options, overwriteOptions) { const existing = this.cache.get(this.channel.guild.roles.resolveId(userOrRole) ?? this.client.users.resolveId(userOrRole)); return this.upsert(userOrRole, options, overwriteOptions, existing); } async delete(userOrRole, reason) { const userOrRoleId = this.channel.guild.roles.resolveId(userOrRole) ?? this.client.users.resolveId(userOrRole); if (!userOrRoleId) throw new TypeError2("INVALID_TYPE", "parameter", "User nor a Role"); await this.client.api.channels(this.channel.id).permissions(userOrRoleId).delete({ reason }); return this.channel; } } module.exports = PermissionOverwriteManager; }); // node_modules/discord.js-selfbot-v13/src/structures/GuildChannel.js var require_GuildChannel = __commonJS((exports, module) => { var { Channel } = require_Channel(); var { Error: Error2 } = require_errors(); var PermissionOverwriteManager = require_PermissionOverwriteManager(); var { VoiceBasedChannelTypes } = require_Constants(); var Permissions = require_Permissions(); var Util = require_Util(); class GuildChannel extends Channel { constructor(guild, data, client, immediatePatch = true) { super(guild?.client ?? client, data, false); this.guild = guild; this.guildId = guild?.id ?? data.guild_id; this.parentId = this.parentId ?? null; this.permissionOverwrites = new PermissionOverwriteManager(this); if (data && immediatePatch) this._patch(data); } _patch(data) { super._patch(data); if ("name" in data) { this.name = data.name; } if ("position" in data) { this.rawPosition = data.position; } if ("guild_id" in data) { this.guildId = data.guild_id; } if ("parent_id" in data) { this.parentId = data.parent_id; } if ("permission_overwrites" in data) { this.permissionOverwrites.cache.clear(); for (const overwrite of data.permission_overwrites) { this.permissionOverwrites._add(overwrite); } } } _clone() { const clone = super._clone(); clone.permissionOverwrites = new PermissionOverwriteManager(clone, this.permissionOverwrites.cache.values()); return clone; } get parent() { return this.guild.channels.resolve(this.parentId); } get permissionsLocked() { if (!this.parent) return null; const overwriteIds = new Set([ ...this.permissionOverwrites.cache.keys(), ...this.parent.permissionOverwrites.cache.keys() ]); return [...overwriteIds].every((key) => { const channelVal = this.permissionOverwrites.cache.get(key); const parentVal = this.parent.permissionOverwrites.cache.get(key); if (!channelVal && parentVal.deny.bitfield === Permissions.defaultBit && parentVal.allow.bitfield === Permissions.defaultBit || !parentVal && channelVal.deny.bitfield === Permissions.defaultBit && channelVal.allow.bitfield === Permissions.defaultBit) { return true; } return typeof channelVal !== "undefined" && typeof parentVal !== "undefined" && channelVal.deny.bitfield === parentVal.deny.bitfield && channelVal.allow.bitfield === parentVal.allow.bitfield; }); } get position() { const selfIsCategory = this.type === "GUILD_CATEGORY"; const types = Util.getSortableGroupTypes(this.type); let count = 0; for (const channel of this.guild.channels.cache.values()) { if (!types.includes(channel.type)) continue; if (!selfIsCategory && channel.parentId !== this.parentId) continue; if (this.rawPosition === channel.rawPosition) { if (BigInt(channel.id) < BigInt(this.id)) count++; } else if (this.rawPosition > channel.rawPosition) { count++; } } return count; } permissionsFor(memberOrRole, checkAdmin = true) { const member = this.guild.members.resolve(memberOrRole); if (member) return this.memberPermissions(member, checkAdmin); const role = this.guild.roles.resolve(memberOrRole); return role && this.rolePermissions(role, checkAdmin); } overwritesFor(member, verified = false, roles = null) { if (!verified) member = this.guild.members.resolve(member); if (!member) return []; roles ??= member.roles.cache; const roleOverwrites = []; let memberOverwrites; let everyoneOverwrites; for (const overwrite of this.permissionOverwrites.cache.values()) { if (overwrite.id === this.guild.id) { everyoneOverwrites = overwrite; } else if (roles.has(overwrite.id)) { roleOverwrites.push(overwrite); } else if (overwrite.id === member.id) { memberOverwrites = overwrite; } } return { everyone: everyoneOverwrites, roles: roleOverwrites, member: memberOverwrites }; } memberPermissions(member, checkAdmin) { if (checkAdmin && member.id === this.guild.ownerId) return new Permissions(Permissions.ALL).freeze(); const roles = member.roles.cache; const permissions = new Permissions(roles.map((role) => role.permissions)); if (checkAdmin && permissions.has(Permissions.FLAGS.ADMINISTRATOR)) { return new Permissions(Permissions.ALL).freeze(); } const overwrites = this.overwritesFor(member, true, roles); return permissions.remove(overwrites.everyone?.deny ?? Permissions.defaultBit).add(overwrites.everyone?.allow ?? Permissions.defaultBit).remove(overwrites.roles.length > 0 ? overwrites.roles.map((role) => role.deny) : Permissions.defaultBit).add(overwrites.roles.length > 0 ? overwrites.roles.map((role) => role.allow) : Permissions.defaultBit).remove(overwrites.member?.deny ?? Permissions.defaultBit).add(overwrites.member?.allow ?? Permissions.defaultBit).freeze(); } rolePermissions(role, checkAdmin) { if (checkAdmin && role.permissions.has(Permissions.FLAGS.ADMINISTRATOR)) { return new Permissions(Permissions.ALL).freeze(); } const basePermissions = new Permissions([role.permissions, role.guild.roles.everyone.permissions]); const everyoneOverwrites = this.permissionOverwrites.cache.get(this.guild.id); const roleOverwrites = this.permissionOverwrites.cache.get(role.id); return basePermissions.remove(everyoneOverwrites?.deny ?? Permissions.defaultBit).add(everyoneOverwrites?.allow ?? Permissions.defaultBit).remove(roleOverwrites?.deny ?? Permissions.defaultBit).add(roleOverwrites?.allow ?? Permissions.defaultBit).freeze(); } async lockPermissions() { if (!this.parent) throw new Error2("GUILD_CHANNEL_ORPHAN"); const permissionOverwrites = this.parent.permissionOverwrites.cache.map((overwrite) => overwrite.toJSON()); return this.edit({ permissionOverwrites }); } get members() { return this.guild.members.cache.filter((m) => this.permissionsFor(m).has(Permissions.FLAGS.VIEW_CHANNEL, false)); } edit(data, reason) { return this.guild.channels.edit(this, data, reason); } setName(name, reason) { return this.edit({ name }, reason); } setParent(channel, { lockPermissions = true, reason } = {}) { return this.edit({ parent: channel ?? null, lockPermissions }, reason); } setPosition(position, options = {}) { return this.guild.channels.setPosition(this, position, options); } clone(options = {}) { return this.guild.channels.create(options.name ?? this.name, { permissionOverwrites: this.permissionOverwrites.cache, topic: this.topic, type: this.type, nsfw: this.nsfw, parent: this.parent, bitrate: this.bitrate, userLimit: this.userLimit, rateLimitPerUser: this.rateLimitPerUser, position: this.rawPosition, reason: null, ...options }); } equals(channel) { let equal = channel && this.id === channel.id && this.type === channel.type && this.topic === channel.topic && this.position === channel.position && this.name === channel.name; if (equal) { if (this.permissionOverwrites && channel.permissionOverwrites) { equal = this.permissionOverwrites.cache.equals(channel.permissionOverwrites.cache); } else { equal = !this.permissionOverwrites && !channel.permissionOverwrites; } } return equal; } get deletable() { return this.manageable && this.guild.rulesChannelId !== this.id && this.guild.publicUpdatesChannelId !== this.id; } get manageable() { if (this.client.user.id === this.guild.ownerId) return true; const permissions = this.permissionsFor(this.client.user); if (!permissions) return false; if (permissions.has(Permissions.FLAGS.ADMINISTRATOR, false)) return true; if (this.guild.members.me.communicationDisabledUntilTimestamp > Date.now()) return false; const bitfield = VoiceBasedChannelTypes.includes(this.type) ? Permissions.FLAGS.MANAGE_CHANNELS | Permissions.FLAGS.CONNECT : Permissions.FLAGS.VIEW_CHANNEL | Permissions.FLAGS.MANAGE_CHANNELS; return permissions.has(bitfield, false); } get viewable() { if (this.client.user.id === this.guild.ownerId) return true; const permissions = this.permissionsFor(this.client.user); if (!permissions) return false; return permissions.has(Permissions.FLAGS.VIEW_CHANNEL, false); } async delete(reason) { await this.guild.channels.delete(this.id, reason); return this; } } module.exports = GuildChannel; }); // node_modules/discord.js-selfbot-v13/src/util/Util.js var require_Util = __commonJS((exports, module) => { var { Agent } = import.meta.require("http"); var { parse } = import.meta.require("path"); var process2 = import.meta.require("process"); var { setTimeout: setTimeout2 } = import.meta.require("timers"); var { Collection } = require_dist(); var { fetch } = import.meta.require("undici"); var { Colors, Events } = require_Constants(); var { Error: DiscordError, RangeError: RangeError2, TypeError: TypeError2 } = require_errors(); var has = (o, k) => Object.prototype.hasOwnProperty.call(o, k); var isObject = (d) => typeof d === "object" && d !== null; var deprecationEmittedForSplitMessage = false; var deprecationEmittedForRemoveMentions = false; var deprecationEmittedForResolveAutoArchiveMaxLimit = false; var TextSortableGroupTypes = ["GUILD_TEXT", "GUILD_ANNOUCMENT", "GUILD_FORUM"]; var VoiceSortableGroupTypes = ["GUILD_VOICE", "GUILD_STAGE_VOICE"]; var CategorySortableGroupTypes = ["GUILD_CATEGORY"]; var payloadTypes = [ { name: "opus", type: "audio", priority: 1000, payload_type: 120 }, { name: "AV1", type: "video", priority: 1000, payload_type: 101, rtx_payload_type: 102, encode: false, decode: false }, { name: "H265", type: "video", priority: 2000, payload_type: 103, rtx_payload_type: 104, encode: false, decode: false }, { name: "H264", type: "video", priority: 3000, payload_type: 105, rtx_payload_type: 106, encode: true, decode: true }, { name: "VP8", type: "video", priority: 4000, payload_type: 107, rtx_payload_type: 108, encode: true, decode: false }, { name: "VP9", type: "video", priority: 5000, payload_type: 109, rtx_payload_type: 110, encode: false, decode: false } ]; class Util extends null { static flatten(obj, ...props) { if (!isObject(obj)) return obj; const objProps = Object.keys(obj).filter((k) => !k.startsWith("_")).map((k) => ({ [k]: true })); props = objProps.length ? Object.assign(...objProps, ...props) : Object.assign({}, ...props); const out = {}; for (let [prop, newProp] of Object.entries(props)) { if (!newProp) continue; newProp = newProp === true ? prop : newProp; const element = obj[prop]; const elemIsObj = isObject(element); const valueOf = elemIsObj && typeof element.valueOf === "function" ? element.valueOf() : null; const hasToJSON = elemIsObj && typeof element.toJSON === "function"; if (element instanceof Collection) out[newProp] = Array.from(element.keys()); else if (valueOf instanceof Collection) out[newProp] = Array.from(valueOf.keys()); else if (Array.isArray(element)) out[newProp] = element.map((e) => e.toJSON?.() ?? Util.flatten(e)); else if (typeof valueOf !== "object") out[newProp] = valueOf; else if (hasToJSON) out[newProp] = element.toJSON(); else if (typeof element === "object") out[newProp] = Util.flatten(element); else if (!elemIsObj) out[newProp] = element; } return out; } static splitMessage(text, { maxLength = 2000, char = "\n", prepend = "", append = "" } = {}) { if (!deprecationEmittedForSplitMessage) { process2.emitWarning("The Util.splitMessage method is deprecated and will be removed in the next major version.", "DeprecationWarning"); deprecationEmittedForSplitMessage = true; } text = Util.verifyString(text); if (text.length <= maxLength) return [text]; let splitText = [text]; if (Array.isArray(char)) { while (char.length > 0 && splitText.some((elem) => elem.length > maxLength)) { const currentChar = char.shift(); if (currentChar instanceof RegExp) { splitText = splitText.flatMap((chunk) => chunk.match(currentChar)); } else { splitText = splitText.flatMap((chunk) => chunk.split(currentChar)); } } } else { splitText = text.split(char); } if (splitText.some((elem) => elem.length > maxLength)) throw new RangeError2("SPLIT_MAX_LEN"); const messages = []; let msg = ""; for (const chunk of splitText) { if (msg && (msg + char + chunk + append).length > maxLength) { messages.push(msg + append); msg = prepend; } msg += (msg && msg !== prepend ? char : "") + chunk; } return messages.concat(msg).filter((m) => m); } static escapeMarkdown(text, { codeBlock = true, inlineCode = true, bold = true, italic = true, underline = true, strikethrough = true, spoiler = true, codeBlockContent = true, inlineCodeContent = true, escape = true, heading = false, bulletedList = false, numberedList = false, maskedLink = false } = {}) { if (!codeBlockContent) { return text.split("```").map((subString, index, array) => { if (index % 2 && index !== array.length - 1) return subString; return Util.escapeMarkdown(subString, { inlineCode, bold, italic, underline, strikethrough, spoiler, inlineCodeContent, escape, heading, bulletedList, numberedList, maskedLink }); }).join(codeBlock ? "\\`\\`\\`" : "```"); } if (!inlineCodeContent) { return text.split(/(?<=^|[^`])`(?=[^`]|$)/g).map((subString, index, array) => { if (index % 2 && index !== array.length - 1) return subString; return Util.escapeMarkdown(subString, { codeBlock, bold, italic, underline, strikethrough, spoiler, escape, heading, bulletedList, numberedList, maskedLink }); }).join(inlineCode ? "\\`" : "`"); } if (escape) text = Util.escapeEscape(text); if (inlineCode) text = Util.escapeInlineCode(text); if (codeBlock) text = Util.escapeCodeBlock(text); if (italic) text = Util.escapeItalic(text); if (bold) text = Util.escapeBold(text); if (underline) text = Util.escapeUnderline(text); if (strikethrough) text = Util.escapeStrikethrough(text); if (spoiler) text = Util.escapeSpoiler(text); if (heading) text = Util.escapeHeading(text); if (bulletedList) text = Util.escapeBulletedList(text); if (numberedList) text = Util.escapeNumberedList(text); if (maskedLink) text = Util.escapeMaskedLink(text); return text; } static escapeCodeBlock(text) { return text.replaceAll("```", "\\`\\`\\`"); } static escapeInlineCode(text) { return text.replace(/(?<=^|[^`])``?(?=[^`]|$)/g, (match) => match.length === 2 ? "\\`\\`" : "\\`"); } static escapeItalic(text) { let i = 0; text = text.replace(/(?<=^|[^*])\*([^*]|\*\*|$)/g, (_, match) => { if (match === "**") return ++i % 2 ? `\\*${match}` : `${match}\\*`; return `\\*${match}`; }); i = 0; return text.replace(/(?<=^|[^_])_([^_]|__|$)/g, (_, match) => { if (match === "__") return ++i % 2 ? `\\_${match}` : `${match}\\_`; return `\\_${match}`; }); } static escapeBold(text) { let i = 0; return text.replace(/\*\*(\*)?/g, (_, match) => { if (match) return ++i % 2 ? `${match}\\*\\*` : `\\*\\*${match}`; return "\\*\\*"; }); } static escapeUnderline(text) { let i = 0; return text.replace(/__(_)?/g, (_, match) => { if (match) return ++i % 2 ? `${match}\\_\\_` : `\\_\\_${match}`; return "\\_\\_"; }); } static escapeStrikethrough(text) { return text.replaceAll("~~", "\\~\\~"); } static escapeSpoiler(text) { return text.replaceAll("||", "\\|\\|"); } static escapeEscape(text) { return text.replaceAll("\\", "\\\\"); } static escapeHeading(text) { return text.replaceAll(/^( {0,2}[*-] +)?(#{1,3} )/gm, "$1\\$2"); } static escapeBulletedList(text) { return text.replaceAll(/^( *)[*-]( +)/gm, "$1\\-$2"); } static escapeNumberedList(text) { return text.replaceAll(/^( *\d+)\./gm, "$1\\."); } static escapeMaskedLink(text) { return text.replaceAll(/\[.+\]\(.+\)/gm, "\\$&"); } static fetchRecommendedShards() { throw new DiscordError("INVALID_USER_API"); } static parseEmoji(text) { if (text.includes("%")) text = decodeURIComponent(text); if (!text.includes(":")) return { animated: false, name: text, id: null }; const match = text.match(/?/); return match && { animated: Boolean(match[1]), name: match[2], id: match[3] ?? null }; } static resolvePartialEmoji(emoji) { if (!emoji) return null; if (typeof emoji === "string") return /^\d{17,19}$/.test(emoji) ? { id: emoji } : Util.parseEmoji(emoji); const { id, name, animated } = emoji; if (!id && !name) return null; return { id, name, animated: Boolean(animated) }; } static cloneObject(obj) { return Object.assign(Object.create(obj), obj); } static mergeDefault(def, given) { if (!given) return def; for (const key in def) { if (!has(given, key) || given[key] === undefined) { given[key] = def[key]; } else if (given[key] === Object(given[key])) { given[key] = Util.mergeDefault(def[key], given[key]); } } return given; } static makeError(obj) { const err = new Error(obj.message); err.name = obj.name; err.stack = obj.stack; return err; } static makePlainError(err) { return { name: err.name, message: err.message, stack: err.stack }; } static moveElementInArray(array, element, newIndex, offset = false) { const index = array.indexOf(element); newIndex = (offset ? index : 0) + newIndex; if (newIndex > -1 && newIndex < array.length) { const removedElement = array.splice(index, 1)[0]; array.splice(newIndex, 0, removedElement); } return array.indexOf(element); } static verifyString(data, error = Error, errorMessage = `Expected a string, got ${data} instead.`, allowEmpty = true) { if (typeof data !== "string") throw new error(errorMessage); if (!allowEmpty && data.length === 0) throw new error(errorMessage); return data; } static resolveColor(color) { if (typeof color === "string") { if (color === "RANDOM") return Math.floor(Math.random() * (16777215 + 1)); if (color === "DEFAULT") return 0; color = Colors[color] ?? parseInt(color.replace("#", ""), 16); } else if (Array.isArray(color)) { color = (color[0] << 16) + (color[1] << 8) + color[2]; } if (color < 0 || color > 16777215) throw new RangeError2("COLOR_RANGE"); else if (Number.isNaN(color)) throw new TypeError2("COLOR_CONVERT"); return color; } static discordSort(collection) { const isGuildChannel = collection.first() instanceof GuildChannel; return collection.toSorted(isGuildChannel ? (a, b) => a.rawPosition - b.rawPosition || Number(BigInt(a.id) - BigInt(b.id)) : (a, b) => a.rawPosition - b.rawPosition || Number(BigInt(b.id) - BigInt(a.id))); } static async setPosition(item, position, relative, sorted, route, reason) { let updatedItems = [...sorted.values()]; Util.moveElementInArray(updatedItems, item, position, relative); updatedItems = updatedItems.map((r, i) => ({ id: r.id, position: i })); await route.patch({ data: updatedItems, reason }); return updatedItems; } static basename(path, ext) { const res = parse(path); return ext && res.ext.startsWith(ext) ? res.name : res.base.split("?")[0]; } static removeMentions(str) { if (!deprecationEmittedForRemoveMentions) { process2.emitWarning("The Util.removeMentions method is deprecated. Use MessageOptions#allowedMentions instead.", "DeprecationWarning"); deprecationEmittedForRemoveMentions = true; } return Util._removeMentions(str); } static _removeMentions(str) { return str.replaceAll("@", "@\u200B"); } static cleanContent(str, channel) { str = str.replace(/<@!?[0-9]+>/g, (input) => { const id = input.replace(/<|!|>|@/g, ""); if (channel.type === "DM") { const user = channel.client.users.cache.get(id); return user ? Util._removeMentions(`@${user.username}`) : input; } const member = channel.guild?.members.cache.get(id); if (member) { return Util._removeMentions(`@${member.displayName}`); } else { const user = channel.client.users.cache.get(id); return user ? Util._removeMentions(`@${user.username}`) : input; } }).replace(/<#[0-9]+>/g, (input) => { const mentionedChannel = channel.client.channels.cache.get(input.replace(/<|#|>/g, "")); return mentionedChannel ? `#${mentionedChannel.name}` : input; }).replace(/<@&[0-9]+>/g, (input) => { if (channel.type === "DM") return input; const role = channel.guild.roles.cache.get(input.replace(/<|@|>|&/g, "")); return role ? `@${role.name}` : input; }); return str; } static cleanCodeBlockContent(text) { return text.replaceAll("```", "`\u200B``"); } static archivedThreadSweepFilter(lifetime = 14400) { const filter = require_Sweepers().archivedThreadSweepFilter(lifetime); filter.isDefault = true; return filter; } static resolveAutoArchiveMaxLimit() { if (!deprecationEmittedForResolveAutoArchiveMaxLimit) { process2.emitWarning("The Util.resolveAutoArchiveMaxLimit method and the 'MAX' option are deprecated and will be removed in the next major version.", "DeprecationWarning"); deprecationEmittedForResolveAutoArchiveMaxLimit = true; } return 10080; } static transformAPIGuildForumTag(tag) { return { id: tag.id, name: tag.name, moderated: tag.moderated, emoji: tag.emoji_id ?? tag.emoji_name ? { id: tag.emoji_id, name: tag.emoji_name } : null }; } static transformGuildForumTag(tag) { return { id: tag.id, name: tag.name, moderated: tag.moderated, emoji_id: tag.emoji?.id ?? null, emoji_name: tag.emoji?.name ?? null }; } static transformAPIGuildDefaultReaction(defaultReaction) { return { id: defaultReaction.emoji_id, name: defaultReaction.emoji_name }; } static transformGuildDefaultReaction(defaultReaction) { return { emoji_id: defaultReaction.id, emoji_name: defaultReaction.name }; } static transformGuildScheduledEventRecurrenceRule(recurrenceRule) { return { start: new Date(recurrenceRule.startAt).toISOString(), frequency: recurrenceRule.frequency, interval: recurrenceRule.interval, by_weekday: recurrenceRule.byWeekday, by_n_weekday: recurrenceRule.byNWeekday, by_month: recurrenceRule.byMonth, by_month_day: recurrenceRule.byMonthDay }; } static transformAPIIncidentsData(data) { return { invitesDisabledUntil: data.invites_disabled_until ? new Date(data.invites_disabled_until) : null, dmsDisabledUntil: data.dms_disabled_until ? new Date(data.dms_disabled_until) : null, dmSpamDetectedAt: data.dm_spam_detected_at ? new Date(data.dm_spam_detected_at) : null, raidDetectedAt: data.raid_detected_at ? new Date(data.raid_detected_at) : null }; } static getSortableGroupTypes(type) { switch (type) { case "GUILD_TEXT": case "GUILD_ANNOUNCEMENT": case "GUILD_FORUM": return TextSortableGroupTypes; case "GUILD_VOICE": case "GUILD_STAGE_VOICE": return VoiceSortableGroupTypes; case "GUILD_CATEGORY": return CategorySortableGroupTypes; default: return [type]; } } static calculateUserDefaultAvatarIndex(userId) { return Number(BigInt(userId) >> 22n) % 6; } static async getUploadURL(client, channelId, files) { if (!files.length) return []; files = files.map((file, i) => ({ filename: file.name, file_size: Math.floor(26214400 / 10 * Math.random()), id: `${i}` })); const { attachments } = await client.api.channels[channelId].attachments.post({ data: { files } }); return attachments; } static uploadFile(data, url) { return new Promise((resolve, reject) => { fetch(url, { method: "PUT", body: data, duplex: "half" }).then((res) => { if (res.ok) { resolve(res); } else { reject(res); } }).catch(reject); }); } static lazy(cb) { let defaultValue; return () => defaultValue ??= cb(); } static verifyProxyAgent(object) { return typeof object == "object" && object.httpAgent instanceof Agent && object.httpsAgent instanceof Agent; } static checkUndiciProxyAgent(data) { if (typeof data === "string") { return { uri: data }; } if (data instanceof URL) { return { uri: data.toString() }; } if (typeof data === "object" && typeof data.uri === "string") return data; return false; } static createPromiseInteraction(client, nonce, timeoutMs = 5000, isHandlerDeferUpdate = false, parent) { return new Promise((resolve, reject) => { let dataFromInteractionSuccess; let dataFromNormalEvent; const handler = (data) => { if (isHandlerDeferUpdate && data.d?.nonce == nonce && data.t == "INTERACTION_SUCCESS") { client.removeListener(Events.MESSAGE_CREATE, handler); client.removeListener(Events.UNHANDLED_PACKET, handler); client.removeListener(Events.INTERACTION_MODAL_CREATE, handler); dataFromInteractionSuccess = parent; } if (data.nonce !== nonce) return; clearTimeout(timeout); client.removeListener(Events.MESSAGE_CREATE, handler); client.removeListener(Events.INTERACTION_MODAL_CREATE, handler); if (isHandlerDeferUpdate) client.removeListener(Events.UNHANDLED_PACKET, handler); client.decrementMaxListeners(); dataFromNormalEvent = data; resolve(data); }; const timeout = setTimeout2(() => { if (dataFromInteractionSuccess || dataFromNormalEvent) { resolve(dataFromNormalEvent || dataFromInteractionSuccess); return; } client.removeListener(Events.MESSAGE_CREATE, handler); client.removeListener(Events.INTERACTION_MODAL_CREATE, handler); if (isHandlerDeferUpdate) client.removeListener(Events.UNHANDLED_PACKET, handler); client.decrementMaxListeners(); reject(new DiscordError("INTERACTION_FAILED")); }, timeoutMs).unref(); client.incrementMaxListeners(); client.on(Events.MESSAGE_CREATE, handler); client.on(Events.INTERACTION_MODAL_CREATE, handler); if (isHandlerDeferUpdate) client.on(Events.UNHANDLED_PACKET, handler); }); } static clearNullOrUndefinedObject(object) { const data = {}; const keys = Object.keys(object); for (const key of keys) { const value = object[key]; if (value === undefined || value === null || Array.isArray(value) && value.length === 0) { continue; } else if (!Array.isArray(value) && typeof value === "object") { const cleanedValue = Util.clearNullOrUndefinedObject(value); if (cleanedValue !== undefined) { data[key] = cleanedValue; } } else { data[key] = value; } } return Object.keys(data).length > 0 ? data : undefined; } static getAllPayloadType() { return payloadTypes; } static getPayloadType(codecName) { return payloadTypes.find((p) => p.name === codecName).payload_type; } static getSDPCodecName(portUdpH264, portUdpH265, portUdpOpus) { const payloadTypeH264 = Util.getPayloadType("H264"); const payloadTypeH265 = Util.getPayloadType("H265"); const payloadTypeOpus = Util.getPayloadType("opus"); let sdpData = `v=0 o=- 0 0 IN IP4 0.0.0.0 s=- c=IN IP4 0.0.0.0 t=0 0 a=tool:libavformat 61.1.100 m=video ${portUdpH264} RTP/AVP ${payloadTypeH264} c=IN IP4 127.0.0.1 b=AS:1000 a=rtpmap:${payloadTypeH264} H264/90000 a=fmtp:${payloadTypeH264} profile-level-id=42e01f;sprop-parameter-sets=Z0IAH6tAoAt2AtwEBAaQeJEV,aM4JyA==;packetization-mode=1 ${portUdpH265 ? `m=video ${portUdpH265} RTP/AVP ${payloadTypeH265} c=IN IP4 127.0.0.1 b=AS:1000 a=rtpmap:${payloadTypeH265} H265/90000` : ""} m=audio ${portUdpOpus} RTP/AVP ${payloadTypeOpus} c=IN IP4 127.0.0.1 b=AS:96 a=rtpmap:${payloadTypeOpus} opus/48000/2 a=fmtp:${payloadTypeOpus} minptime=10;useinbandfec=1 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id a=extmap:13 urn:3gpp:video-orientation a=extmap:14 urn:ietf:params:rtp-hdrext:toffset `; return sdpData; } } module.exports = Util; var GuildChannel = require_GuildChannel(); }); // node_modules/discord.js-selfbot-v13/src/rest/APIRequest.js var require_APIRequest = __commonJS((exports, module) => { var Buffer2 = import.meta.require("buffer").Buffer; var { setTimeout: setTimeout2 } = import.meta.require("timers"); var { FormData, buildConnector, Client: Client2, ProxyAgent } = import.meta.require("undici"); var { ciphers } = require_Constants(); var Util = require_Util(); var agent = null; class APIRequest { constructor(rest, method, path, options) { this.rest = rest; this.client = rest.client; this.method = method; this.route = options.route; this.options = options; this.retries = 0; this.fullUserAgent = this.client.options.http.headers["User-Agent"]; this.client.options.ws.properties.browser_user_agent = this.fullUserAgent; let queryString = ""; if (options.query) { const query = Object.entries(options.query).filter(([, value]) => value !== null && typeof value !== "undefined").flatMap(([key, value]) => Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]); queryString = new URLSearchParams(query).toString(); } this.path = `${path}${queryString && `?${queryString}`}`; } make(captchaKey, captchaRqToken) { if (!agent) { const r_ = Util.checkUndiciProxyAgent(this.client.options.http.agent); if (!r_) { agent = new Client2("https://discord.com", { connect: buildConnector({ ciphers: ciphers.join(":") }) }); } else { agent = new ProxyAgent({ ...r_, ciphers: ciphers.join(":") }); } } const API = this.options.versioned === false ? this.client.options.http.api : `${this.client.options.http.api}/v${this.client.options.http.version}`; const url = API + this.path; let headers = { accept: "*/*", "accept-language": "en-US", priority: "u=1, i", referer: "https://discord.com/channels/@me", "sec-ch-ua": '"Not:A-Brand";v="24", "Chromium";v="134"', "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": '"Windows"', "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-origin", "x-discord-locale": "en-US", "x-discord-timezone": Intl.DateTimeFormat().resolvedOptions().timeZone, "x-super-properties": `${Buffer2.from(JSON.stringify(this.client.options.ws.properties), "ascii").toString("base64")}`, origin: "https://discord.com", "x-debug-options": "bugReporterEnabled", ...this.client.options.http.headers, "User-Agent": this.fullUserAgent }; if (this.options.auth !== false) headers.Authorization = this.rest.getAuth(); if (this.options.reason) headers["X-Audit-Log-Reason"] = encodeURIComponent(this.options.reason); if (this.options.headers) headers = Object.assign(headers, this.options.headers); for (const [key, value] of Object.entries(headers)) { if (value === undefined) delete headers[key]; } if (this.options.webhook === true) { headers = { "User-Agent": this.client.options.http.headers["User-Agent"] }; } if (this.options.DiscordContext) { headers["X-Context-Properties"] = Buffer2.from(JSON.stringify(this.options.DiscordContext), "utf8").toString("base64"); } if (this.options.mfaToken) { headers["X-Discord-Mfa-Authorization"] = this.options.mfaToken; } if (captchaKey && typeof captchaKey == "string") headers["X-Captcha-Key"] = captchaKey; if (captchaRqToken && typeof captchaRqToken == "string") headers["X-Captcha-Rqtoken"] = captchaRqToken; let body; if (this.options.files?.length) { body = new FormData; for (const [index, file] of this.options.files.entries()) { if (file?.file) { body.set(file.key ?? `files[${index}]`, { [Symbol.toStringTag]: "File", name: file.name, stream: () => file.file }); } } if (typeof this.options.data !== "undefined") { if (this.options.dontUsePayloadJSON) { for (const [key, value] of Object.entries(this.options.data)) body.append(key, value); } else { body.append("payload_json", JSON.stringify(this.options.data)); } } } else if (this.options.data != null) { if (this.options.usePayloadJSON) { body = new FormData; body.append("payload_json", JSON.stringify(this.options.data)); } else { body = JSON.stringify(this.options.data); headers["Content-Type"] = "application/json"; } } const controller = new AbortController; const timeout = setTimeout2(() => controller.abort(), this.client.options.restRequestTimeout).unref(); return this.rest.fetch(url, { method: this.method.toUpperCase(), headers, body, signal: controller.signal, redirect: "follow", dispatcher: agent, credentials: "include" }).finally(() => clearTimeout(timeout)); } } module.exports = APIRequest; }); // node_modules/discord.js-selfbot-v13/src/rest/APIRouter.js var require_APIRouter = __commonJS((exports, module) => { function buildRoute(manager) { const route = [""]; const handler = { get(target, name) { if (reflectors.includes(name)) return () => route.join("/"); if (methods.includes(name)) { const routeBucket = []; for (let i = 0;i < route.length; i++) { if (route[i - 1] === "reactions") break; if (/\d{16,19}/g.test(route[i]) && !/channels|guilds/.test(route[i - 1])) routeBucket.push(":id"); else routeBucket.push(route[i]); } return (options) => manager.request(name, route.join("/"), Object.assign({ versioned: manager.versioned, route: routeBucket.join("/") }, options)); } route.push(name); return new Proxy(noop, handler); }, apply(target, _, args) { route.push(...args.filter((x) => x != null)); return new Proxy(noop, handler); } }; return new Proxy(noop, handler); } var noop = () => { }; var methods = ["get", "post", "delete", "patch", "put"]; var reflectors = [ "toString", "valueOf", "inspect", "constructor", Symbol.toPrimitive, Symbol.for("nodejs.util.inspect.custom") ]; module.exports = buildRoute; }); // node_modules/@sapphire/async-queue/dist/cjs/index.cjs var require_cjs5 = __commonJS((exports) => { var __defProp2 = Object.defineProperty; var __defNormalProp = (obj, key, value) => (key in obj) ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __name = (target, value) => __defProp2(target, "name", { value, configurable: true }); var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); var _AsyncQueueEntry = class _AsyncQueueEntry2 { constructor(queue) { __publicField(this, "promise"); __publicField(this, "resolve"); __publicField(this, "reject"); __publicField(this, "queue"); __publicField(this, "signal", null); __publicField(this, "signalListener", null); this.queue = queue; this.promise = new Promise((resolve, reject) => { this.resolve = resolve; this.reject = reject; }); } setSignal(signal) { if (signal.aborted) return this; this.signal = signal; this.signalListener = () => { const index = this.queue["promises"].indexOf(this); if (index !== -1) this.queue["promises"].splice(index, 1); this.reject(new Error("Request aborted manually")); }; this.signal.addEventListener("abort", this.signalListener); return this; } use() { this.dispose(); this.resolve(); return this; } abort() { this.dispose(); this.reject(new Error("Request aborted manually")); return this; } dispose() { if (this.signal) { this.signal.removeEventListener("abort", this.signalListener); this.signal = null; this.signalListener = null; } } }; __name(_AsyncQueueEntry, "AsyncQueueEntry"); var AsyncQueueEntry = _AsyncQueueEntry; var _AsyncQueue = class _AsyncQueue2 { constructor() { __publicField(this, "promises", []); } get remaining() { return this.promises.length; } get queued() { return this.remaining === 0 ? 0 : this.remaining - 1; } wait(options) { const entry = new AsyncQueueEntry(this); if (this.promises.length === 0) { this.promises.push(entry); return Promise.resolve(); } this.promises.push(entry); if (options?.signal) entry.setSignal(options.signal); return entry.promise; } shift() { if (this.promises.length === 0) return; if (this.promises.length === 1) { this.promises.shift(); return; } this.promises.shift(); this.promises[0].use(); } abortAll() { if (this.queued === 0) return; for (let i = 1;i < this.promises.length; ++i) { this.promises[i].abort(); } this.promises.length = 1; } }; __name(_AsyncQueue, "AsyncQueue"); var AsyncQueue = _AsyncQueue; exports.AsyncQueue = AsyncQueue; }); // node_modules/discord.js-selfbot-v13/src/rest/DiscordAPIError.js var require_DiscordAPIError = __commonJS((exports, module) => { class DiscordAPIError extends Error { constructor(error, status, request) { super(); const flattened = this.constructor.flattenErrors(error.errors ?? error).join("\n"); this.name = "DiscordAPIError"; this.message = error.message && flattened ? `${error.message}\n${flattened}` : error.message ?? flattened; this.method = request.method; this.path = request.path; this.code = error.code; this.httpStatus = status; this.requestData = { json: request.options.data, files: request.options.files ?? [], headers: request.options.headers }; this.retries = request.retries; this.captcha = error?.captcha_service ? error : null; } get isBlockedByCloudflare() { return this.code === 40333; } static flattenErrors(obj, key = "") { let messages = []; for (const [k, v] of Object.entries(obj)) { if (k === "message") continue; const newKey = key ? isNaN(k) ? `${key}.${k}` : `${key}[${k}]` : k; if (v._errors) { messages.push(`${newKey}: ${v._errors.map((e) => e.message).join(" ")}`); } else if (v.code ?? v.message) { messages.push(`${v.code ? `${v.code}: ` : ""}${v.message}`.trim()); } else if (typeof v === "string") { messages.push(v); } else { messages = messages.concat(this.flattenErrors(v, newKey)); } } return messages; } } module.exports = DiscordAPIError; }); // node_modules/discord.js-selfbot-v13/src/rest/HTTPError.js var require_HTTPError = __commonJS((exports, module) => { class HTTPError extends Error { constructor(message, name, code, request) { super(message); this.name = name; this.code = code ?? 500; this.method = request.method; this.path = request.path; this.requestData = { json: request.options.data, files: request.options.files ?? [], headers: request.options.headers }; } } module.exports = HTTPError; }); // node_modules/discord.js-selfbot-v13/src/rest/RateLimitError.js var require_RateLimitError = __commonJS((exports, module) => { class RateLimitError extends Error { constructor({ timeout, limit, method, path, route, global: global2 }) { super(`A ${global2 ? "global " : ""}rate limit was hit on route ${route}`); this.name = "RateLimitError"; this.timeout = timeout; this.method = method; this.path = path; this.route = route; this.global = global2; this.limit = limit; } } module.exports = RateLimitError; }); // node_modules/discord.js-selfbot-v13/src/rest/RequestHandler.js var require_RequestHandler = __commonJS((exports, module) => { function parseResponse(res) { if (res.headers.get("content-type")?.startsWith("application/json")) return res.json(); return res.arrayBuffer(); } function getAPIOffset(serverDate) { return new Date(serverDate).getTime() - Date.now(); } function calculateReset(reset, resetAfter, serverDate) { if (resetAfter) { return Date.now() + Number(resetAfter) * 1000; } return new Date(Number(reset) * 1000).getTime() - getAPIOffset(serverDate); } var { setTimeout: setTimeout2 } = import.meta.require("timers"); var { setTimeout: sleep } = import.meta.require("timers/promises"); var { AsyncQueue } = require_cjs5(); var DiscordAPIError = require_DiscordAPIError(); var HTTPError = require_HTTPError(); var RateLimitError = require_RateLimitError(); var { Events: { DEBUG, RATE_LIMIT, INVALID_REQUEST_WARNING, API_RESPONSE, API_REQUEST } } = require_Constants(); var captchaMessage = [ "incorrect-captcha", "response-already-used", "captcha-required", "invalid-input-response", "invalid-response", "You need to update your app", "response-already-used-error", "rqkey-mismatch", "sitekey-secret-mismatch" ]; var invalidCount = 0; var invalidCountResetTime = null; class RequestHandler { constructor(manager) { this.manager = manager; this.queue = new AsyncQueue; this.reset = -1; this.remaining = -1; this.limit = -1; } async push(request) { await this.queue.wait(); try { return await this.execute(request); } finally { this.queue.shift(); } } get globalLimited() { return this.manager.globalRemaining <= 0 && Date.now() < this.manager.globalReset; } get localLimited() { return this.remaining <= 0 && Date.now() < this.reset; } get limited() { return this.globalLimited || this.localLimited; } get _inactive() { return this.queue.remaining === 0 && !this.limited; } globalDelayFor(ms) { return new Promise((resolve) => { setTimeout2(() => { this.manager.globalDelay = null; resolve(); }, ms).unref(); }); } async onRateLimit(request, limit, timeout, isGlobal) { const { options } = this.manager.client; if (!options.rejectOnRateLimit) return; const rateLimitData = { timeout, limit, method: request.method, path: request.path, route: request.route, global: isGlobal }; const shouldThrow = typeof options.rejectOnRateLimit === "function" ? await options.rejectOnRateLimit(rateLimitData) : options.rejectOnRateLimit.some((route) => rateLimitData.route.startsWith(route.toLowerCase())); if (shouldThrow) { throw new RateLimitError(rateLimitData); } } async execute(request, captchaKey, captchaToken) { while (this.limited) { const isGlobal = this.globalLimited; let limit, timeout, delayPromise; if (isGlobal) { limit = this.manager.globalLimit; timeout = this.manager.globalReset + this.manager.client.options.restTimeOffset - Date.now(); } else { limit = this.limit; timeout = this.reset + this.manager.client.options.restTimeOffset - Date.now(); } if (this.manager.client.listenerCount(RATE_LIMIT)) { this.manager.client.emit(RATE_LIMIT, { timeout, limit, method: request.method, path: request.path, route: request.route, global: isGlobal }); } if (isGlobal) { if (!this.manager.globalDelay) { this.manager.globalDelay = this.globalDelayFor(timeout); } delayPromise = this.manager.globalDelay; } else { delayPromise = sleep(timeout); } await this.onRateLimit(request, limit, timeout, isGlobal); await delayPromise; } if (!this.manager.globalReset || this.manager.globalReset < Date.now()) { this.manager.globalReset = Date.now() + 1000; this.manager.globalRemaining = this.manager.globalLimit; } this.manager.globalRemaining--; if (this.manager.client.listenerCount(API_REQUEST)) { this.manager.client.emit(API_REQUEST, { method: request.method, path: request.path, route: request.route, options: request.options, retries: request.retries }); } let res; try { res = await request.make(captchaKey, captchaToken); } catch (error) { if (request.retries === this.manager.client.options.retryLimit) { throw new HTTPError(error.message, error.constructor.name, error.status, request); } request.retries++; return this.execute(request); } if (this.manager.client.listenerCount(API_RESPONSE)) { this.manager.client.emit(API_RESPONSE, { method: request.method, path: request.path, route: request.route, options: request.options, retries: request.retries }, res.clone()); } let sublimitTimeout; if (res.headers) { const serverDate = res.headers.get("date"); const limit = res.headers.get("x-ratelimit-limit"); const remaining = res.headers.get("x-ratelimit-remaining"); const reset = res.headers.get("x-ratelimit-reset"); const resetAfter = res.headers.get("x-ratelimit-reset-after"); this.limit = limit ? Number(limit) : Infinity; this.remaining = remaining ? Number(remaining) : 1; this.reset = reset || resetAfter ? calculateReset(reset, resetAfter, serverDate) : Date.now(); if (!resetAfter && request.route.includes("reactions")) { this.reset = new Date(serverDate).getTime() - getAPIOffset(serverDate) + 250; } let retryAfter = res.headers.get("retry-after"); retryAfter = retryAfter ? Number(retryAfter) * 1000 : -1; if (retryAfter > 0) { if (res.headers.get("x-ratelimit-global")) { this.manager.globalRemaining = 0; this.manager.globalReset = Date.now() + retryAfter; } else if (!this.localLimited) { sublimitTimeout = retryAfter; } } } if (res.status === 401 || res.status === 403 || res.status === 429) { if (!invalidCountResetTime || invalidCountResetTime < Date.now()) { invalidCountResetTime = Date.now() + 1000 * 60 * 10; invalidCount = 0; } invalidCount++; const emitInvalid = this.manager.client.listenerCount(INVALID_REQUEST_WARNING) && this.manager.client.options.invalidRequestWarningInterval > 0 && invalidCount % this.manager.client.options.invalidRequestWarningInterval === 0; if (emitInvalid) { this.manager.client.emit(INVALID_REQUEST_WARNING, { count: invalidCount, remainingTime: invalidCountResetTime - Date.now() }); } } if (res.ok) { return parseResponse(res); } if (res.status >= 400 && res.status < 500) { if (res.status === 429) { const isGlobal = this.globalLimited; let limit, timeout; if (isGlobal) { limit = this.manager.globalLimit; timeout = this.manager.globalReset + this.manager.client.options.restTimeOffset - Date.now(); } else { limit = this.limit; timeout = this.reset + this.manager.client.options.restTimeOffset - Date.now(); } this.manager.client.emit(DEBUG, `[Request Handler] Hit a 429 while executing a request. Global : ${isGlobal} Method : ${request.method} Path : ${request.path} Route : ${request.route} Limit : ${limit} Timeout : ${timeout}ms Sublimit: ${sublimitTimeout ? `${sublimitTimeout}ms` : "None"}`); await this.onRateLimit(request, limit, timeout, isGlobal); if (sublimitTimeout) { await sleep(sublimitTimeout); } return this.execute(request); } let data; try { data = await parseResponse(res); if (data?.captcha_service && typeof this.manager.client.options.captchaSolver == "function" && request.retries < this.manager.client.options.captchaRetryLimit && captchaMessage.some((s) => data.captcha_key[0].includes(s))) { this.manager.client.emit(DEBUG, `[Request Handler] Hit a captcha while executing a request (${data.captcha_key.join(", ")}) Method : ${request.method} Path : ${request.path} Route : ${request.route} Sitekey : ${data.captcha_sitekey} rqToken : ${data.captcha_rqtoken}`); const captcha = await this.manager.client.options.captchaSolver(data, request.fullUserAgent); this.manager.client.emit(DEBUG, `[Request Handler] Captcha details: Method : ${request.method} Path : ${request.path} Route : ${request.route} Key : ${captcha ? `${captcha.slice(0, 120)}...` : "[Captcha not solved]"} rqToken : ${data.captcha_rqtoken}`); request.retries++; return this.execute(request, captcha, data.captcha_rqtoken); } if (data?.code && data.code == 60003 && request.options.auth !== false && request.retries < 1) { if (data.mfa.methods.find((o) => o.type === "totp") && typeof this.manager.client.options.TOTPKey === "string") { const otp = this.manager.client.authenticator.generate(this.manager.client.options.TOTPKey); this.manager.client.emit(DEBUG, `[Request Handler] ${data.message} Method : ${request.method} Path : ${request.path} Route : ${request.route} mfaCode : ${otp}`); const mfaData = data.mfa; const mfaPost = await this.manager.client.api.mfa.finish.post({ data: { ticket: mfaData.ticket, data: otp, mfa_type: "totp" } }); request.options.mfaToken = mfaPost.token; request.retries++; return this.execute(request); } } } catch (err) { throw new HTTPError(err.message, err.constructor.name, err.status, request); } throw new DiscordAPIError(data, res.status, request); } if (res.status >= 500 && res.status < 600) { if (request.retries === this.manager.client.options.retryLimit) { throw new HTTPError(res.statusText, res.constructor.name, res.status, request); } request.retries++; return this.execute(request); } return null; } } module.exports = RequestHandler; }); // node_modules/discord.js-selfbot-v13/src/rest/RESTManager.js var require_RESTManager = __commonJS((exports, module) => { var { setInterval: setInterval2 } = import.meta.require("timers"); var { Collection } = require_dist(); var makeFetchCookie = require_cjs2(); var { CookieJar } = require_cookie2(); var { fetch: fetchOriginal } = import.meta.require("undici"); var APIRequest = require_APIRequest(); var routeBuilder = require_APIRouter(); var RequestHandler = require_RequestHandler(); var { Error: Error2 } = require_errors(); var { Endpoints } = require_Constants(); class RESTManager { constructor(client) { this.client = client; this.handlers = new Collection; this.versioned = true; this.globalLimit = client.options.restGlobalRateLimit > 0 ? client.options.restGlobalRateLimit : Infinity; this.globalRemaining = this.globalLimit; this.globalReset = null; this.globalDelay = null; this.cookieJar = new CookieJar; this.fetch = makeFetchCookie.default(fetchOriginal, this.cookieJar); if (client.options.restSweepInterval > 0) { this.sweepInterval = setInterval2(() => { this.handlers.sweep((handler) => handler._inactive); }, client.options.restSweepInterval * 1000).unref(); } } get api() { return routeBuilder(this); } getAuth() { const token = this.client.token ?? this.client.accessToken; if (token) return token?.replace(/Bot /g, ""); throw new Error2("TOKEN_MISSING"); } get cdn() { return Endpoints.CDN(this.client.options.http.cdn); } request(method, url, options = {}) { const apiRequest = new APIRequest(this, method, url, options); let handler = this.handlers.get(apiRequest.route); if (!handler) { handler = new RequestHandler(this); this.handlers.set(apiRequest.route, handler); } return handler.push(apiRequest); } get endpoint() { return this.client.options.http.api; } set endpoint(endpoint) { this.client.options.http.api = endpoint; } } module.exports = RESTManager; }); // node_modules/discord.js-selfbot-v13/src/util/Intents.js var require_Intents = __commonJS((exports, module) => { var BitField = require_BitField(); class Intents extends BitField { } Intents.FLAGS = { GUILDS: 1 << 0, GUILD_MEMBERS: 1 << 1, GUILD_BANS: 1 << 2, GUILD_EMOJIS_AND_STICKERS: 1 << 3, GUILD_INTEGRATIONS: 1 << 4, GUILD_WEBHOOKS: 1 << 5, GUILD_INVITES: 1 << 6, GUILD_VOICE_STATES: 1 << 7, GUILD_PRESENCES: 1 << 8, GUILD_MESSAGES: 1 << 9, GUILD_MESSAGE_REACTIONS: 1 << 10, GUILD_MESSAGE_TYPING: 1 << 11, DIRECT_MESSAGES: 1 << 12, DIRECT_MESSAGE_REACTIONS: 1 << 13, DIRECT_MESSAGE_TYPING: 1 << 14, MESSAGE_CONTENT: 1 << 15, GUILD_SCHEDULED_EVENTS: 1 << 16, AUTO_MODERATION_CONFIGURATION: 1 << 20, AUTO_MODERATION_EXECUTION: 1 << 21 }; Intents.ALL = Object.values(Intents.FLAGS).reduce((all, p) => all | p, 0); module.exports = Intents; }); // node_modules/discord.js-selfbot-v13/src/util/LimitedCollection.js var require_LimitedCollection = __commonJS((exports, module) => { var { setInterval: setInterval2 } = import.meta.require("timers"); var { Collection } = require_dist(); var { _cleanupSymbol } = require_Constants(); var Sweepers = require_Sweepers(); var { TypeError: TypeError2 } = require_DJSError(); class LimitedCollection extends Collection { constructor(options = {}, iterable) { if (typeof options !== "object" || options === null) { throw new TypeError2("INVALID_TYPE", "options", "object", true); } const { maxSize = Infinity, keepOverLimit = null, sweepInterval = 0, sweepFilter = null } = options; if (typeof maxSize !== "number") { throw new TypeError2("INVALID_TYPE", "maxSize", "number"); } if (keepOverLimit !== null && typeof keepOverLimit !== "function") { throw new TypeError2("INVALID_TYPE", "keepOverLimit", "function"); } if (typeof sweepInterval !== "number") { throw new TypeError2("INVALID_TYPE", "sweepInterval", "number"); } if (sweepFilter !== null && typeof sweepFilter !== "function") { throw new TypeError2("INVALID_TYPE", "sweepFilter", "function"); } super(iterable); this.maxSize = maxSize; this.keepOverLimit = keepOverLimit; this.sweepFilter = sweepFilter; this.interval = sweepInterval > 0 && sweepInterval !== Infinity && sweepFilter ? setInterval2(() => { const sweepFn = this.sweepFilter(this); if (sweepFn === null) return; if (typeof sweepFn !== "function") throw new TypeError2("SWEEP_FILTER_RETURN"); this.sweep(sweepFn); }, sweepInterval * 1000).unref() : null; } set(key, value) { if (this.maxSize === 0) return this; if (this.size >= this.maxSize && !this.has(key)) { for (const [k, v] of this.entries()) { const keep = this.keepOverLimit?.(v, k, this) ?? false; if (!keep) { this.delete(k); break; } } } return super.set(key, value); } static filterByLifetime({ lifetime = 14400, getComparisonTimestamp = (e) => e?.createdTimestamp, excludeFromSweep = () => false } = {}) { return Sweepers.filterByLifetime({ lifetime, getComparisonTimestamp, excludeFromSweep }); } [_cleanupSymbol]() { return this.interval ? () => clearInterval(this.interval) : null; } static get [Symbol.species]() { return Collection; } } module.exports = LimitedCollection; }); // node_modules/discord.js-selfbot-v13/src/util/Options.js var require_Options = __commonJS((exports, module) => { var { randomUUID } = import.meta.require("crypto"); var { UserAgent } = require_Constants(); var Intents = require_Intents(); class Options extends null { static createDefault() { return { DMChannelVoiceStatusSync: 0, captchaRetryLimit: 3, captchaSolver: () => { const err = new Error("CAPTCHA_SOLVER_NOT_IMPLEMENTED"); err.cause = "You need to provide a captcha solver to use this feature\nExample: const client = new Client({ captchaSolver: yourAsyncFunction })"; throw err; }, TOTPKey: null, closeTimeout: 5000, waitGuildTimeout: 15000, shardCount: 1, shards: [0], makeCache: this.cacheWithLimits(this.defaultMakeCacheSettings), messageCacheLifetime: 0, messageSweepInterval: 0, invalidRequestWarningInterval: 0, intents: Intents.ALL, partials: ["USER", "CHANNEL", "GUILD_MEMBER", "MESSAGE", "REACTION", "GUILD_SCHEDULED_EVENT"], restWsBridgeTimeout: 5000, restRequestTimeout: 15000, restGlobalRateLimit: 0, retryLimit: 1, restTimeOffset: 500, restSweepInterval: 60, failIfNotExists: true, presence: { status: "online", since: 0, activities: [], afk: true }, sweepers: {}, ws: { capabilities: 0, properties: { os: "Windows", browser: "Discord Client", release_channel: "stable", client_version: "1.0.9210", os_version: "10.0.19044", os_arch: "x64", app_arch: "x64", system_locale: "en-US", has_client_mods: false, client_launch_id: randomUUID(), browser_user_agent: UserAgent, browser_version: "35.3.0", os_sdk_version: "19044", client_build_number: 455964, native_build_number: 69976, client_event_source: null, launch_signature: randomUUID(), client_heartbeat_session_id: randomUUID(), client_app_state: "focused" }, compress: false, client_state: { guild_versions: {} }, version: 9, agent: {} }, http: { agent: {}, headers: { "User-Agent": UserAgent }, version: 9, api: "https://discord.com/api", cdn: "https://cdn.discordapp.com", invite: "https://discord.gg", template: "https://discord.new", scheduledEvent: "https://discord.com/events" } }; } static cacheWithLimits(settings = {}) { const { Collection } = require_dist(); const LimitedCollection = require_LimitedCollection(); return (manager) => { const setting = settings[manager.name]; if (setting == null) { return new Collection; } if (typeof setting === "number") { if (setting === Infinity) { return new Collection; } return new LimitedCollection({ maxSize: setting }); } const noSweeping = setting.sweepFilter == null || setting.sweepInterval == null || setting.sweepInterval <= 0 || setting.sweepInterval === Infinity; const noLimit = setting.maxSize == null || setting.maxSize === Infinity; if (noSweeping && noLimit) { return new Collection; } return new LimitedCollection(setting); }; } static cacheEverything() { const { Collection } = require_dist(); return () => new Collection; } static get defaultMakeCacheSettings() { return { MessageManager: 200, ChannelManager: { sweepInterval: 3600, sweepFilter: require_Util().archivedThreadSweepFilter() }, GuildChannelManager: { sweepInterval: 3600, sweepFilter: require_Util().archivedThreadSweepFilter() }, ThreadManager: { sweepInterval: 3600, sweepFilter: require_Util().archivedThreadSweepFilter() } }; } } Options.defaultSweeperSettings = { threads: { interval: 3600, lifetime: 14400 } }; module.exports = Options; }); // node_modules/discord.js-selfbot-v13/src/client/BaseClient.js var require_BaseClient = __commonJS((exports, module) => { var EventEmitter = import.meta.require("events"); var process2 = import.meta.require("process"); var RESTManager = require_RESTManager(); var Options = require_Options(); var Util = require_Util(); class BaseClient extends EventEmitter { constructor(options = {}) { super({ captureRejections: true }); if (options.intents) { process2.emitWarning("Intents is not available.", "DeprecationWarning"); } this.options = Util.mergeDefault(Options.createDefault(), options); this.rest = new RESTManager(this); } get api() { return this.rest.api; } destroy() { if (this.rest.sweepInterval) clearInterval(this.rest.sweepInterval); } incrementMaxListeners() { const maxListeners = this.getMaxListeners(); if (maxListeners !== 0) { this.setMaxListeners(maxListeners + 1); } } decrementMaxListeners() { const maxListeners = this.getMaxListeners(); if (maxListeners !== 0) { this.setMaxListeners(maxListeners - 1); } } toJSON(...props) { return Util.flatten(this, { domain: false }, ...props); } } module.exports = BaseClient; }); // node_modules/@otplib/plugin-crypto/index.js var require_plugin_crypto = __commonJS((exports) => { function _interopDefault(ex) { return ex && typeof ex === "object" && "default" in ex ? ex["default"] : ex; } Object.defineProperty(exports, "__esModule", { value: true }); var crypto = _interopDefault(import.meta.require("crypto")); var createDigest = (algorithm, hmacKey, counter) => { const hmac = crypto.createHmac(algorithm, Buffer.from(hmacKey, "hex")); const digest = hmac.update(Buffer.from(counter, "hex")).digest(); return digest.toString("hex"); }; var createRandomBytes = (size, encoding) => { return crypto.randomBytes(size).toString(encoding); }; exports.createDigest = createDigest; exports.createRandomBytes = createRandomBytes; }); // node_modules/thirty-two/lib/thirty-two/thirty-two.js var require_thirty_two = __commonJS((exports) => { function quintetCount(buff) { var quintets = Math.floor(buff.length / 5); return buff.length % 5 === 0 ? quintets : quintets + 1; } var charTable = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"; var byteTable = [ 255, 255, 26, 27, 28, 29, 30, 31, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255 ]; exports.encode = function(plain) { if (!Buffer.isBuffer(plain)) { plain = new Buffer(plain); } var i = 0; var j = 0; var shiftIndex = 0; var digit = 0; var encoded = new Buffer(quintetCount(plain) * 8); while (i < plain.length) { var current = plain[i]; if (shiftIndex > 3) { digit = current & 255 >> shiftIndex; shiftIndex = (shiftIndex + 5) % 8; digit = digit << shiftIndex | (i + 1 < plain.length ? plain[i + 1] : 0) >> 8 - shiftIndex; i++; } else { digit = current >> 8 - (shiftIndex + 5) & 31; shiftIndex = (shiftIndex + 5) % 8; if (shiftIndex === 0) i++; } encoded[j] = charTable.charCodeAt(digit); j++; } for (i = j;i < encoded.length; i++) { encoded[i] = 61; } return encoded; }; exports.decode = function(encoded) { var shiftIndex = 0; var plainDigit = 0; var plainChar; var plainPos = 0; if (!Buffer.isBuffer(encoded)) { encoded = new Buffer(encoded); } var decoded = new Buffer(Math.ceil(encoded.length * 5 / 8)); for (var i = 0;i < encoded.length; i++) { if (encoded[i] === 61) { break; } var encodedByte = encoded[i] - 48; if (encodedByte < byteTable.length) { plainDigit = byteTable[encodedByte]; if (shiftIndex <= 3) { shiftIndex = (shiftIndex + 5) % 8; if (shiftIndex === 0) { plainChar |= plainDigit; decoded[plainPos] = plainChar; plainPos++; plainChar = 0; } else { plainChar |= 255 & plainDigit << 8 - shiftIndex; } } else { shiftIndex = (shiftIndex + 5) % 8; plainChar |= 255 & plainDigit >>> shiftIndex; decoded[plainPos] = plainChar; plainPos++; plainChar = 255 & plainDigit << 8 - shiftIndex; } } else { throw new Error("Invalid input - it is not base32 encoded string"); } } return decoded.slice(0, plainPos); }; }); // node_modules/thirty-two/lib/thirty-two/index.js var require_thirty_two2 = __commonJS((exports) => { var base32 = require_thirty_two(); exports.encode = base32.encode; exports.decode = base32.decode; }); // node_modules/@otplib/plugin-thirty-two/index.js var require_plugin_thirty_two = __commonJS((exports) => { function _interopDefault(ex) { return ex && typeof ex === "object" && "default" in ex ? ex["default"] : ex; } Object.defineProperty(exports, "__esModule", { value: true }); var thirtyTwo = _interopDefault(require_thirty_two2()); var keyDecoder = (encodedSecret, encoding) => { return thirtyTwo.decode(encodedSecret).toString(encoding); }; var keyEncoder = (secret, encoding) => { return thirtyTwo.encode(Buffer.from(secret, encoding).toString("ascii")).toString().replace(/=/g, ""); }; exports.keyDecoder = keyDecoder; exports.keyEncoder = keyEncoder; }); // node_modules/@otplib/core/index.js var require_core = __commonJS((exports) => { function objectValues(value) { return Object.keys(value).map((key) => value[key]); } function isTokenValid(value) { return /^(\d+)$/.test(value); } function padStart(value, maxLength, fillString) { if (value.length >= maxLength) { return value; } const padding = Array(maxLength + 1).join(fillString); return `${padding}${value}`.slice(-1 * maxLength); } function keyuri(options) { const tmpl = `otpauth://${options.type}/{labelPrefix}:{accountName}?secret={secret}{query}`; const params = []; if (STRATEGY.indexOf(options.type) < 0) { throw new Error(`Expecting options.type to be one of ${STRATEGY.join(", ")}. Received ${options.type}.`); } if (options.type === "hotp") { if (options.counter == null || typeof options.counter !== "number") { throw new Error('Expecting options.counter to be a number when options.type is "hotp".'); } params.push(`&counter=${options.counter}`); } if (options.type === "totp" && options.step) { params.push(`&period=${options.step}`); } if (options.digits) { params.push(`&digits=${options.digits}`); } if (options.algorithm) { params.push(`&algorithm=${options.algorithm.toUpperCase()}`); } if (options.issuer) { params.push(`&issuer=${encodeURIComponent(options.issuer)}`); } return tmpl.replace("{labelPrefix}", encodeURIComponent(options.issuer || options.accountName)).replace("{accountName}", encodeURIComponent(options.accountName)).replace("{secret}", options.secret).replace("{query}", params.join("")); } function hotpOptionsValidator(options) { if (typeof options.createDigest !== "function") { throw new Error("Expecting options.createDigest to be a function."); } if (typeof options.createHmacKey !== "function") { throw new Error("Expecting options.createHmacKey to be a function."); } if (typeof options.digits !== "number") { throw new Error("Expecting options.digits to be a number."); } if (!options.algorithm || HASH_ALGORITHMS.indexOf(options.algorithm) < 0) { throw new Error(`Expecting options.algorithm to be one of ${HASH_ALGORITHMS.join(", ")}. Received ${options.algorithm}.`); } if (!options.encoding || KEY_ENCODINGS.indexOf(options.encoding) < 0) { throw new Error(`Expecting options.encoding to be one of ${KEY_ENCODINGS.join(", ")}. Received ${options.encoding}.`); } } function hotpDefaultOptions() { const options = { algorithm: exports.HashAlgorithms.SHA1, createHmacKey: hotpCreateHmacKey, createDigest: createDigestPlaceholder, digits: 6, encoding: exports.KeyEncodings.ASCII }; return options; } function hotpOptions(opt) { const options = { ...hotpDefaultOptions(), ...opt }; hotpOptionsValidator(options); return Object.freeze(options); } function hotpCounter(counter) { const hexCounter = counter.toString(16); return padStart(hexCounter, 16, "0"); } function hotpDigestToToken(hexDigest, digits) { const digest = Buffer.from(hexDigest, "hex"); const offset = digest[digest.length - 1] & 15; const binary = (digest[offset] & 127) << 24 | (digest[offset + 1] & 255) << 16 | (digest[offset + 2] & 255) << 8 | digest[offset + 3] & 255; const token = binary % Math.pow(10, digits); return padStart(String(token), digits, "0"); } function hotpDigest(secret, counter, options) { const hexCounter = hotpCounter(counter); const hmacKey = options.createHmacKey(options.algorithm, secret, options.encoding); return options.createDigest(options.algorithm, hmacKey, hexCounter); } function hotpToken(secret, counter, options) { const hexDigest = options.digest || hotpDigest(secret, counter, options); return hotpDigestToToken(hexDigest, options.digits); } function hotpCheck(token, secret, counter, options) { if (!isTokenValid(token)) { return false; } const systemToken = hotpToken(secret, counter, options); return token === systemToken; } function hotpKeyuri(accountName, issuer, secret, counter, options) { return keyuri({ algorithm: options.algorithm, digits: options.digits, type: exports.Strategy.HOTP, accountName, counter, issuer, secret }); } function parseWindowBounds(win) { if (typeof win === "number") { return [Math.abs(win), Math.abs(win)]; } if (Array.isArray(win)) { const [past, future] = win; if (typeof past === "number" && typeof future === "number") { return [Math.abs(past), Math.abs(future)]; } } throw new Error("Expecting options.window to be an number or [number, number]."); } function totpOptionsValidator(options) { hotpOptionsValidator(options); parseWindowBounds(options.window); if (typeof options.epoch !== "number") { throw new Error("Expecting options.epoch to be a number."); } if (typeof options.step !== "number") { throw new Error("Expecting options.step to be a number."); } } function totpDefaultOptions() { const options = { algorithm: exports.HashAlgorithms.SHA1, createDigest: createDigestPlaceholder, createHmacKey: totpCreateHmacKey, digits: 6, encoding: exports.KeyEncodings.ASCII, epoch: Date.now(), step: 30, window: 0 }; return options; } function totpOptions(opt) { const options = { ...totpDefaultOptions(), ...opt }; totpOptionsValidator(options); return Object.freeze(options); } function totpCounter(epoch, step) { return Math.floor(epoch / step / 1000); } function totpToken(secret, options) { const counter = totpCounter(options.epoch, options.step); return hotpToken(secret, counter, options); } function totpEpochsInWindow(epoch, direction, deltaPerEpoch, numOfEpoches) { const result = []; if (numOfEpoches === 0) { return result; } for (let i = 1;i <= numOfEpoches; i++) { const delta = direction * i * deltaPerEpoch; result.push(epoch + delta); } return result; } function totpEpochAvailable(epoch, step, win) { const bounds = parseWindowBounds(win); const delta = step * 1000; return { current: epoch, past: totpEpochsInWindow(epoch, -1, delta, bounds[0]), future: totpEpochsInWindow(epoch, 1, delta, bounds[1]) }; } function totpCheck(token, secret, options) { if (!isTokenValid(token)) { return false; } const systemToken = totpToken(secret, options); return token === systemToken; } function totpCheckByEpoch(epochs, token, secret, options) { let position = null; epochs.some((epoch, idx) => { if (totpCheck(token, secret, { ...options, epoch })) { position = idx + 1; return true; } return false; }); return position; } function totpCheckWithWindow(token, secret, options) { if (totpCheck(token, secret, options)) { return 0; } const epochs = totpEpochAvailable(options.epoch, options.step, options.window); const backward = totpCheckByEpoch(epochs.past, token, secret, options); if (backward !== null) { return backward * -1; } return totpCheckByEpoch(epochs.future, token, secret, options); } function totpTimeUsed(epoch, step) { return Math.floor(epoch / 1000) % step; } function totpTimeRemaining(epoch, step) { return step - totpTimeUsed(epoch, step); } function totpKeyuri(accountName, issuer, secret, options) { return keyuri({ algorithm: options.algorithm, digits: options.digits, step: options.step, type: exports.Strategy.TOTP, accountName, issuer, secret }); } function authenticatorOptionValidator(options) { totpOptionsValidator(options); if (typeof options.keyDecoder !== "function") { throw new Error("Expecting options.keyDecoder to be a function."); } if (options.keyEncoder && typeof options.keyEncoder !== "function") { throw new Error("Expecting options.keyEncoder to be a function."); } } function authenticatorDefaultOptions() { const options = { algorithm: exports.HashAlgorithms.SHA1, createDigest: createDigestPlaceholder, createHmacKey: totpCreateHmacKey, digits: 6, encoding: exports.KeyEncodings.HEX, epoch: Date.now(), step: 30, window: 0 }; return options; } function authenticatorOptions(opt) { const options = { ...authenticatorDefaultOptions(), ...opt }; authenticatorOptionValidator(options); return Object.freeze(options); } function authenticatorEncoder(secret, options) { return options.keyEncoder(secret, options.encoding); } function authenticatorDecoder(secret, options) { return options.keyDecoder(secret, options.encoding); } function authenticatorGenerateSecret(numberOfBytes, options) { const key = options.createRandomBytes(numberOfBytes, options.encoding); return authenticatorEncoder(key, options); } function authenticatorToken(secret, options) { return totpToken(authenticatorDecoder(secret, options), options); } function authenticatorCheckWithWindow(token, secret, options) { return totpCheckWithWindow(token, authenticatorDecoder(secret, options), options); } Object.defineProperty(exports, "__esModule", { value: true }); (function(HashAlgorithms) { HashAlgorithms["SHA1"] = "sha1"; HashAlgorithms["SHA256"] = "sha256"; HashAlgorithms["SHA512"] = "sha512"; })(exports.HashAlgorithms || (exports.HashAlgorithms = {})); var HASH_ALGORITHMS = objectValues(exports.HashAlgorithms); (function(KeyEncodings) { KeyEncodings["ASCII"] = "ascii"; KeyEncodings["BASE64"] = "base64"; KeyEncodings["HEX"] = "hex"; KeyEncodings["LATIN1"] = "latin1"; KeyEncodings["UTF8"] = "utf8"; })(exports.KeyEncodings || (exports.KeyEncodings = {})); var KEY_ENCODINGS = objectValues(exports.KeyEncodings); (function(Strategy) { Strategy["HOTP"] = "hotp"; Strategy["TOTP"] = "totp"; })(exports.Strategy || (exports.Strategy = {})); var STRATEGY = objectValues(exports.Strategy); var createDigestPlaceholder = () => { throw new Error("Please provide an options.createDigest implementation."); }; class OTP { constructor(defaultOptions = {}) { this._defaultOptions = Object.freeze({ ...defaultOptions }); this._options = Object.freeze({}); } create(defaultOptions = {}) { return new OTP(defaultOptions); } clone(defaultOptions = {}) { const instance = this.create({ ...this._defaultOptions, ...defaultOptions }); instance.options = this._options; return instance; } get options() { return Object.freeze({ ...this._defaultOptions, ...this._options }); } set options(options) { this._options = Object.freeze({ ...this._options, ...options }); } allOptions() { return this.options; } resetOptions() { this._options = Object.freeze({}); } } var hotpCreateHmacKey = (algorithm, secret, encoding) => { return Buffer.from(secret, encoding).toString("hex"); }; class HOTP extends OTP { create(defaultOptions = {}) { return new HOTP(defaultOptions); } allOptions() { return hotpOptions(this.options); } generate(secret, counter) { return hotpToken(secret, counter, this.allOptions()); } check(token, secret, counter) { return hotpCheck(token, secret, counter, this.allOptions()); } verify(opts) { if (typeof opts !== "object") { throw new Error("Expecting argument 0 of verify to be an object"); } return this.check(opts.token, opts.secret, opts.counter); } keyuri(accountName, issuer, secret, counter) { return hotpKeyuri(accountName, issuer, secret, counter, this.allOptions()); } } var totpPadSecret = (secret, encoding, minLength) => { const currentLength = secret.length; const hexSecret = Buffer.from(secret, encoding).toString("hex"); if (currentLength < minLength) { const newSecret = new Array(minLength - currentLength + 1).join(hexSecret); return Buffer.from(newSecret, "hex").slice(0, minLength).toString("hex"); } return hexSecret; }; var totpCreateHmacKey = (algorithm, secret, encoding) => { switch (algorithm) { case exports.HashAlgorithms.SHA1: return totpPadSecret(secret, encoding, 20); case exports.HashAlgorithms.SHA256: return totpPadSecret(secret, encoding, 32); case exports.HashAlgorithms.SHA512: return totpPadSecret(secret, encoding, 64); default: throw new Error(`Expecting algorithm to be one of ${HASH_ALGORITHMS.join(", ")}. Received ${algorithm}.`); } }; class TOTP extends HOTP { create(defaultOptions = {}) { return new TOTP(defaultOptions); } allOptions() { return totpOptions(this.options); } generate(secret) { return totpToken(secret, this.allOptions()); } checkDelta(token, secret) { return totpCheckWithWindow(token, secret, this.allOptions()); } check(token, secret) { const delta = this.checkDelta(token, secret); return typeof delta === "number"; } verify(opts) { if (typeof opts !== "object") { throw new Error("Expecting argument 0 of verify to be an object"); } return this.check(opts.token, opts.secret); } timeRemaining() { const options = this.allOptions(); return totpTimeRemaining(options.epoch, options.step); } timeUsed() { const options = this.allOptions(); return totpTimeUsed(options.epoch, options.step); } keyuri(accountName, issuer, secret) { return totpKeyuri(accountName, issuer, secret, this.allOptions()); } } class Authenticator extends TOTP { create(defaultOptions = {}) { return new Authenticator(defaultOptions); } allOptions() { return authenticatorOptions(this.options); } generate(secret) { return authenticatorToken(secret, this.allOptions()); } checkDelta(token, secret) { return authenticatorCheckWithWindow(token, secret, this.allOptions()); } encode(secret) { return authenticatorEncoder(secret, this.allOptions()); } decode(secret) { return authenticatorDecoder(secret, this.allOptions()); } generateSecret(numberOfBytes = 10) { return authenticatorGenerateSecret(numberOfBytes, this.allOptions()); } } exports.Authenticator = Authenticator; exports.HASH_ALGORITHMS = HASH_ALGORITHMS; exports.HOTP = HOTP; exports.KEY_ENCODINGS = KEY_ENCODINGS; exports.OTP = OTP; exports.STRATEGY = STRATEGY; exports.TOTP = TOTP; exports.authenticatorCheckWithWindow = authenticatorCheckWithWindow; exports.authenticatorDecoder = authenticatorDecoder; exports.authenticatorDefaultOptions = authenticatorDefaultOptions; exports.authenticatorEncoder = authenticatorEncoder; exports.authenticatorGenerateSecret = authenticatorGenerateSecret; exports.authenticatorOptionValidator = authenticatorOptionValidator; exports.authenticatorOptions = authenticatorOptions; exports.authenticatorToken = authenticatorToken; exports.createDigestPlaceholder = createDigestPlaceholder; exports.hotpCheck = hotpCheck; exports.hotpCounter = hotpCounter; exports.hotpCreateHmacKey = hotpCreateHmacKey; exports.hotpDefaultOptions = hotpDefaultOptions; exports.hotpDigestToToken = hotpDigestToToken; exports.hotpKeyuri = hotpKeyuri; exports.hotpOptions = hotpOptions; exports.hotpOptionsValidator = hotpOptionsValidator; exports.hotpToken = hotpToken; exports.isTokenValid = isTokenValid; exports.keyuri = keyuri; exports.objectValues = objectValues; exports.padStart = padStart; exports.totpCheck = totpCheck; exports.totpCheckByEpoch = totpCheckByEpoch; exports.totpCheckWithWindow = totpCheckWithWindow; exports.totpCounter = totpCounter; exports.totpCreateHmacKey = totpCreateHmacKey; exports.totpDefaultOptions = totpDefaultOptions; exports.totpEpochAvailable = totpEpochAvailable; exports.totpKeyuri = totpKeyuri; exports.totpOptions = totpOptions; exports.totpOptionsValidator = totpOptionsValidator; exports.totpPadSecret = totpPadSecret; exports.totpTimeRemaining = totpTimeRemaining; exports.totpTimeUsed = totpTimeUsed; exports.totpToken = totpToken; }); // node_modules/@otplib/preset-default/index.js var require_preset_default = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); var pluginCrypto = require_plugin_crypto(); var pluginThirtyTwo = require_plugin_thirty_two(); var core = require_core(); var hotp = new core.HOTP({ createDigest: pluginCrypto.createDigest }); var totp = new core.TOTP({ createDigest: pluginCrypto.createDigest }); var authenticator = new core.Authenticator({ createDigest: pluginCrypto.createDigest, createRandomBytes: pluginCrypto.createRandomBytes, keyDecoder: pluginThirtyTwo.keyDecoder, keyEncoder: pluginThirtyTwo.keyEncoder }); exports.authenticator = authenticator; exports.hotp = hotp; exports.totp = totp; }); // node_modules/otplib/index.js var require_otplib = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); var presetDefault = require_preset_default(); Object.keys(presetDefault).forEach(function(k) { if (k !== "default") Object.defineProperty(exports, k, { enumerable: true, get: function() { return presetDefault[k]; } }); }); }); // node_modules/discord.js-selfbot-v13/src/client/actions/Action.js var require_Action = __commonJS((exports, module) => { var { PartialTypes } = require_Constants(); class GenericAction { constructor(client) { this.client = client; } handle(data) { return data; } getPayload(data, manager, id, partialType, cache) { const existing = manager.cache.get(id); if (!existing && this.client.options.partials.includes(partialType)) { return manager._add(data, cache); } return existing; } getChannel(data) { const payloadData = {}; const id = data.channel_id ?? data.id; if (!("recipients" in data)) { const recipient = data.author ?? data.user ?? { id: data.user_id }; if (recipient.id !== this.client.user.id) payloadData.recipients = [recipient]; } if (id !== undefined) payloadData.id = id; return data[this.client.actions.injectedChannel] ?? this.getPayload({ ...data, ...payloadData }, this.client.channels, id, PartialTypes.CHANNEL); } getMessage(data, channel, cache) { const id = data.message_id ?? data.id; return data[this.client.actions.injectedMessage] ?? this.getPayload({ id, channel_id: channel.id, guild_id: data.guild_id ?? channel.guild?.id }, channel.messages, id, PartialTypes.MESSAGE, cache); } getReaction(data, message, user) { const id = data.emoji.id ?? decodeURIComponent(data.emoji.name); return this.getPayload({ emoji: data.emoji, count: message.partial ? null : 0, me: user?.id === this.client.user.id }, message.reactions, id, PartialTypes.REACTION); } getMember(data, guild) { return this.getPayload(data, guild.members, data.user.id, PartialTypes.GUILD_MEMBER); } getUser(data) { const id = data.user_id; return data[this.client.actions.injectedUser] ?? this.getPayload({ id }, this.client.users, id, PartialTypes.USER); } getUserFromMember(data) { if (data.guild_id && data.member?.user) { const guild = this.client.guilds.cache.get(data.guild_id); if (guild) { return guild.members._add(data.member).user; } else { return this.client.users._add(data.member.user); } } return this.getUser(data); } getScheduledEvent(data, guild) { const id = data.guild_scheduled_event_id ?? data.id; return this.getPayload({ id, guild_id: data.guild_id ?? guild.id }, guild.scheduledEvents, id, PartialTypes.GUILD_SCHEDULED_EVENT); } } module.exports = GenericAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/ApplicationCommandPermissionsUpdate.js var require_ApplicationCommandPermissionsUpdate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class ApplicationCommandPermissionsUpdateAction extends Action { handle(data) { const client = this.client; client.emit(Events.APPLICATION_COMMAND_PERMISSIONS_UPDATE, { permissions: data.permissions, id: data.id, guildId: data.guild_id, applicationId: data.application_id }); } } module.exports = ApplicationCommandPermissionsUpdateAction; }); // node_modules/discord.js-selfbot-v13/src/structures/AutoModerationActionExecution.js var require_AutoModerationActionExecution = __commonJS((exports, module) => { var { AutoModerationRuleTriggerTypes } = require_Constants(); class AutoModerationActionExecution { constructor(data, guild) { this.guild = guild; this.action = data.action; this.ruleId = data.rule_id; this.ruleTriggerType = AutoModerationRuleTriggerTypes[data.rule_trigger_type]; this.userId = data.user_id; this.channelId = data.channel_id ?? null; this.messageId = data.message_id ?? null; this.alertSystemMessageId = data.alert_system_message_id ?? null; this.content = data.content; this.matchedKeyword = data.matched_keyword ?? null; this.matchedContent = data.matched_content ?? null; } get autoModerationRule() { return this.guild.autoModerationRules.cache.get(this.ruleId) ?? null; } } module.exports = AutoModerationActionExecution; }); // node_modules/discord.js-selfbot-v13/src/client/actions/AutoModerationActionExecution.js var require_AutoModerationActionExecution2 = __commonJS((exports, module) => { var Action = require_Action(); var AutoModerationActionExecution = require_AutoModerationActionExecution(); var { Events } = require_Constants(); class AutoModerationActionExecutionAction extends Action { handle(data) { const { client } = this; const guild = client.guilds.cache.get(data.guild_id); if (guild) { client.emit(Events.AUTO_MODERATION_ACTION_EXECUTION, new AutoModerationActionExecution(data, guild)); } return {}; } } module.exports = AutoModerationActionExecutionAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/AutoModerationRuleCreate.js var require_AutoModerationRuleCreate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class AutoModerationRuleCreateAction extends Action { handle(data) { const { client } = this; const guild = client.guilds.cache.get(data.guild_id); if (guild) { const autoModerationRule = guild.autoModerationRules._add(data); client.emit(Events.AUTO_MODERATION_RULE_CREATE, autoModerationRule); } return {}; } } module.exports = AutoModerationRuleCreateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/AutoModerationRuleDelete.js var require_AutoModerationRuleDelete = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class AutoModerationRuleDeleteAction extends Action { handle(data) { const { client } = this; const guild = client.guilds.cache.get(data.guild_id); if (guild) { const autoModerationRule = guild.autoModerationRules.cache.get(data.id); if (autoModerationRule) { guild.autoModerationRules.cache.delete(autoModerationRule.id); client.emit(Events.AUTO_MODERATION_RULE_DELETE, autoModerationRule); } } return {}; } } module.exports = AutoModerationRuleDeleteAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/AutoModerationRuleUpdate.js var require_AutoModerationRuleUpdate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class AutoModerationRuleUpdateAction extends Action { handle(data) { const { client } = this; const guild = client.guilds.cache.get(data.guild_id); if (guild) { const oldAutoModerationRule = guild.autoModerationRules.cache.get(data.id)?._clone() ?? null; const newAutoModerationRule = guild.autoModerationRules._add(data); client.emit(Events.AUTO_MODERATION_RULE_UPDATE, oldAutoModerationRule, newAutoModerationRule); } return {}; } } module.exports = AutoModerationRuleUpdateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/ChannelCreate.js var require_ChannelCreate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class ChannelCreateAction extends Action { handle(data) { const client = this.client; const existing = client.channels.cache.has(data.id); const channel = client.channels._add(data); if (!existing && channel) { client.emit(Events.CHANNEL_CREATE, channel); } return { channel }; } } module.exports = ChannelCreateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/ChannelDelete.js var require_ChannelDelete = __commonJS((exports, module) => { var Action = require_Action(); var { deletedChannels } = require_Channel(); var DMChannel = require_DMChannel(); var { deletedMessages } = require_Message(); var { Events } = require_Constants(); class ChannelDeleteAction extends Action { constructor(client) { super(client); this.deleted = new Map; } handle(data) { const client = this.client; const channel = client.channels.cache.get(data.id); if (channel) { client.channels._remove(channel.id); deletedChannels.add(channel); if (channel.messages && !(channel instanceof DMChannel)) { for (const message of channel.messages.cache.values()) { deletedMessages.add(message); } } client.emit(Events.CHANNEL_DELETE, channel); } return { channel }; } } module.exports = ChannelDeleteAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/ChannelUpdate.js var require_ChannelUpdate = __commonJS((exports, module) => { var Action = require_Action(); var { Channel } = require_Channel(); var { ChannelTypes } = require_Constants(); class ChannelUpdateAction extends Action { handle(data) { const client = this.client; let channel = client.channels.cache.get(data.id); if (channel) { const old = channel._update(data); if (ChannelTypes[channel.type] !== data.type) { const newChannel = Channel.create(this.client, data, channel.guild); if (!newChannel) { this.client.channels.cache.delete(channel.id); return {}; } if (channel.isText() && newChannel.isText()) { for (const [id, message] of channel.messages.cache) newChannel.messages.cache.set(id, message); } channel = newChannel; this.client.channels.cache.set(channel.id, channel); } return { old, updated: channel }; } else { client.channels._add(data); } return {}; } } module.exports = ChannelUpdateAction; }); // node_modules/discord.js-selfbot-v13/src/managers/ApplicationCommandPermissionsManager.js var require_ApplicationCommandPermissionsManager = __commonJS((exports, module) => { var { Collection } = require_dist(); var BaseManager = require_BaseManager(); var { Error: Error2, TypeError: TypeError2 } = require_errors(); var { ApplicationCommandPermissionTypes, APIErrors } = require_Constants(); class ApplicationCommandPermissionsManager extends BaseManager { constructor(manager) { super(manager.client); this.manager = manager; this.guild = manager.guild ?? null; this.guildId = manager.guildId ?? manager.guild?.id ?? null; this.commandId = manager.id ?? null; } permissionsPath(guildId, commandId) { return this.client.api.applications(this.client.application.id).guilds(guildId).commands(commandId).permissions; } async fetch({ guild, command } = {}) { const { guildId, commandId } = this._validateOptions(guild, command); if (commandId) { const data2 = await this.permissionsPath(guildId, commandId).get(); return data2.permissions.map((perm) => this.constructor.transformPermissions(perm, true)); } const data = await this.permissionsPath(guildId).get(); return data.reduce((coll, perm) => coll.set(perm.id, perm.permissions.map((p) => this.constructor.transformPermissions(p, true))), new Collection); } async set({ guild, command, permissions, fullPermissions } = {}) { const { guildId, commandId } = this._validateOptions(guild, command); if (commandId) { if (!Array.isArray(permissions)) { throw new TypeError2("INVALID_TYPE", "permissions", "Array of ApplicationCommandPermissionData", true); } const data2 = await this.permissionsPath(guildId, commandId).put({ data: { permissions: permissions.map((perm) => this.constructor.transformPermissions(perm)) } }); return data2.permissions.map((perm) => this.constructor.transformPermissions(perm, true)); } if (!Array.isArray(fullPermissions)) { throw new TypeError2("INVALID_TYPE", "fullPermissions", "Array of GuildApplicationCommandPermissionData", true); } const APIPermissions = []; for (const perm of fullPermissions) { if (!Array.isArray(perm.permissions)) throw new TypeError2("INVALID_ELEMENT", "Array", "fullPermissions", perm); APIPermissions.push({ id: perm.id, permissions: perm.permissions.map((p) => this.constructor.transformPermissions(p)) }); } const data = await this.permissionsPath(guildId).put({ data: APIPermissions }); return data.reduce((coll, perm) => coll.set(perm.id, perm.permissions.map((p) => this.constructor.transformPermissions(p, true))), new Collection); } async add({ guild, command, permissions }) { const { guildId, commandId } = this._validateOptions(guild, command); if (!commandId) throw new TypeError2("INVALID_TYPE", "command", "ApplicationCommandResolvable"); if (!Array.isArray(permissions)) { throw new TypeError2("INVALID_TYPE", "permissions", "Array of ApplicationCommandPermissionData", true); } let existing = []; try { existing = await this.fetch({ guild: guildId, command: commandId }); } catch (error) { if (error.code !== APIErrors.UNKNOWN_APPLICATION_COMMAND_PERMISSIONS) throw error; } const newPermissions = permissions.slice(); for (const perm of existing) { if (!newPermissions.some((x) => x.id === perm.id)) { newPermissions.push(perm); } } return this.set({ guild: guildId, command: commandId, permissions: newPermissions }); } async remove({ guild, command, users, roles }) { const { guildId, commandId } = this._validateOptions(guild, command); if (!commandId) throw new TypeError2("INVALID_TYPE", "command", "ApplicationCommandResolvable"); if (!users && !roles) throw new TypeError2("INVALID_TYPE", "users OR roles", "Array or Resolvable", true); let resolvedIds = []; if (Array.isArray(users)) { users.forEach((user) => { const userId = this.client.users.resolveId(user); if (!userId) throw new TypeError2("INVALID_ELEMENT", "Array", "users", user); resolvedIds.push(userId); }); } else if (users) { const userId = this.client.users.resolveId(users); if (!userId) { throw new TypeError2("INVALID_TYPE", "users", "Array or UserResolvable"); } resolvedIds.push(userId); } if (Array.isArray(roles)) { roles.forEach((role) => { if (typeof role === "string") { resolvedIds.push(role); return; } if (!this.guild) throw new Error2("GUILD_UNCACHED_ROLE_RESOLVE"); const roleId = this.guild.roles.resolveId(role); if (!roleId) throw new TypeError2("INVALID_ELEMENT", "Array", "users", role); resolvedIds.push(roleId); }); } else if (roles) { if (typeof roles === "string") { resolvedIds.push(roles); } else { if (!this.guild) throw new Error2("GUILD_UNCACHED_ROLE_RESOLVE"); const roleId = this.guild.roles.resolveId(roles); if (!roleId) { throw new TypeError2("INVALID_TYPE", "users", "Array or RoleResolvable"); } resolvedIds.push(roleId); } } let existing = []; try { existing = await this.fetch({ guild: guildId, command: commandId }); } catch (error) { if (error.code !== APIErrors.UNKNOWN_APPLICATION_COMMAND_PERMISSIONS) throw error; } const permissions = existing.filter((perm) => !resolvedIds.includes(perm.id)); return this.set({ guild: guildId, command: commandId, permissions }); } async has({ guild, command, permissionId }) { const { guildId, commandId } = this._validateOptions(guild, command); if (!commandId) throw new TypeError2("INVALID_TYPE", "command", "ApplicationCommandResolvable"); if (!permissionId) throw new TypeError2("INVALID_TYPE", "permissionId", "UserResolvable or RoleResolvable"); let resolvedId = permissionId; if (typeof permissionId !== "string") { resolvedId = this.client.users.resolveId(permissionId); if (!resolvedId) { if (!this.guild) throw new Error2("GUILD_UNCACHED_ROLE_RESOLVE"); resolvedId = this.guild.roles.resolveId(permissionId); } if (!resolvedId) { throw new TypeError2("INVALID_TYPE", "permissionId", "UserResolvable or RoleResolvable"); } } let existing = []; try { existing = await this.fetch({ guild: guildId, command: commandId }); } catch (error) { if (error.code !== APIErrors.UNKNOWN_APPLICATION_COMMAND_PERMISSIONS) throw error; } return existing.some((perm) => perm.id === resolvedId); } _validateOptions(guild, command) { const guildId = this.guildId ?? this.client.guilds.resolveId(guild); if (!guildId) throw new Error2("GLOBAL_COMMAND_PERMISSIONS"); let commandId = this.commandId; if (command && !commandId) { commandId = this.manager.resolveId?.(command); if (!commandId && this.guild) { commandId = this.guild.commands.resolveId(command); } commandId ??= this.client.application?.commands.resolveId(command); if (!commandId) { throw new TypeError2("INVALID_TYPE", "command", "ApplicationCommandResolvable", true); } } return { guildId, commandId }; } static transformPermissions(permissions, received) { return { id: permissions.id, permission: permissions.permission, type: typeof permissions.type === "number" && !received ? permissions.type : ApplicationCommandPermissionTypes[permissions.type] }; } } module.exports = ApplicationCommandPermissionsManager; }); // node_modules/discord.js-selfbot-v13/src/structures/ApplicationCommand.js var require_ApplicationCommand = __commonJS((exports, module) => { var Base = require_Base(); var ApplicationCommandPermissionsManager = require_ApplicationCommandPermissionsManager(); var { ApplicationCommandOptionTypes, ApplicationCommandTypes, ChannelTypes } = require_Constants(); var Permissions = require_Permissions(); var SnowflakeUtil = require_SnowflakeUtil(); class ApplicationCommand extends Base { constructor(client, data, guild, guildId) { super(client); this.id = data.id; this.applicationId = data.application_id; this.guild = guild ?? null; this.guildId = guild?.id ?? guildId ?? null; this.permissions = new ApplicationCommandPermissionsManager(this); this.type = ApplicationCommandTypes[data.type]; this._patch(data); } _patch(data) { if ("name" in data) { this.name = data.name; } if ("name_localizations" in data) { this.nameLocalizations = data.name_localizations; } else { this.nameLocalizations ??= null; } if ("name_localized" in data) { this.nameLocalized = data.name_localized; } else { this.nameLocalized ??= null; } if ("description" in data) { this.description = data.description; } if ("description_localizations" in data) { this.descriptionLocalizations = data.description_localizations; } else { this.descriptionLocalizations ??= null; } if ("description_localized" in data) { this.descriptionLocalized = data.description_localized; } else { this.descriptionLocalized ??= null; } if ("options" in data) { this.options = data.options.map((o) => this.constructor.transformOption(o, true)); } else { this.options ??= []; } if ("default_permission" in data) { this.defaultPermission = data.default_permission; } if ("default_member_permissions" in data) { this.defaultMemberPermissions = data.default_member_permissions ? new Permissions(BigInt(data.default_member_permissions)).freeze() : null; } else { this.defaultMemberPermissions ??= null; } if ("dm_permission" in data) { this.dmPermission = data.dm_permission; } else { this.dmPermission ??= null; } if ("version" in data) { this.version = data.version; } } get createdTimestamp() { return SnowflakeUtil.timestampFrom(this.id); } get createdAt() { return new Date(this.createdTimestamp); } get manager() { return (this.guild ?? this.client.application).commands; } edit(data) { return this.manager.edit(this, data, this.guildId); } setName(name) { return this.edit({ name }); } setNameLocalizations(nameLocalizations) { return this.edit({ nameLocalizations }); } setDescription(description) { return this.edit({ description }); } setDescriptionLocalizations(descriptionLocalizations) { return this.edit({ descriptionLocalizations }); } setDefaultPermission(defaultPermission = true) { return this.edit({ defaultPermission }); } setDefaultMemberPermissions(defaultMemberPermissions) { return this.edit({ defaultMemberPermissions }); } setDMPermission(dmPermission = true) { return this.edit({ dmPermission }); } setOptions(options) { return this.edit({ options }); } delete() { return this.manager.delete(this, this.guildId); } equals(command, enforceOptionOrder = false) { if (command.id && this.id !== command.id) return false; let defaultMemberPermissions = null; let dmPermission = command.dmPermission ?? command.dm_permission; if ("default_member_permissions" in command) { defaultMemberPermissions = command.default_member_permissions ? new Permissions(BigInt(command.default_member_permissions)).bitfield : null; } if ("defaultMemberPermissions" in command) { defaultMemberPermissions = command.defaultMemberPermissions !== null ? new Permissions(command.defaultMemberPermissions).bitfield : null; } const commandType = typeof command.type === "string" ? command.type : ApplicationCommandTypes[command.type]; if (command.name !== this.name || "description" in command && command.description !== this.description || "version" in command && command.version !== this.version || "autocomplete" in command && command.autocomplete !== this.autocomplete || commandType && commandType !== this.type || defaultMemberPermissions !== (this.defaultMemberPermissions?.bitfield ?? null) || typeof dmPermission !== "undefined" && dmPermission !== this.dmPermission || (command.options?.length ?? 0) !== (this.options?.length ?? 0) || (command.defaultPermission ?? command.default_permission ?? true) !== this.defaultPermission) { return false; } if (command.options) { return this.constructor.optionsEqual(this.options, command.options, enforceOptionOrder); } return true; } static optionsEqual(existing, options, enforceOptionOrder = false) { if (existing.length !== options.length) return false; if (enforceOptionOrder) { return existing.every((option, index) => this._optionEquals(option, options[index], enforceOptionOrder)); } const newOptions = new Map(options.map((option) => [option.name, option])); for (const option of existing) { const foundOption = newOptions.get(option.name); if (!foundOption || !this._optionEquals(option, foundOption)) return false; } return true; } static _optionEquals(existing, option, enforceOptionOrder = false) { const optionType = typeof option.type === "string" ? option.type : ApplicationCommandOptionTypes[option.type]; if (option.name !== existing.name || optionType !== existing.type || option.description !== existing.description || option.autocomplete !== existing.autocomplete || (option.required ?? (["SUB_COMMAND", "SUB_COMMAND_GROUP"].includes(optionType) ? undefined : false)) !== existing.required || option.choices?.length !== existing.choices?.length || option.options?.length !== existing.options?.length || (option.channelTypes ?? option.channel_types)?.length !== existing.channelTypes?.length || (option.minValue ?? option.min_value) !== existing.minValue || (option.maxValue ?? option.max_value) !== existing.maxValue || (option.minLength ?? option.min_length) !== existing.minLength || (option.maxLength ?? option.max_length) !== existing.maxLength) { return false; } if (existing.choices) { if (enforceOptionOrder && !existing.choices.every((choice, index) => choice.name === option.choices[index].name && choice.value === option.choices[index].value)) { return false; } if (!enforceOptionOrder) { const newChoices = new Map(option.choices.map((choice) => [choice.name, choice])); for (const choice of existing.choices) { const foundChoice = newChoices.get(choice.name); if (!foundChoice || foundChoice.value !== choice.value) return false; } } } if (existing.channelTypes) { const newTypes = (option.channelTypes ?? option.channel_types).map((type) => typeof type === "number" ? ChannelTypes[type] : type); for (const type of existing.channelTypes) { if (!newTypes.includes(type)) return false; } } if (existing.options) { return this.optionsEqual(existing.options, option.options, enforceOptionOrder); } return true; } static transformOption(option, received) { const stringType = typeof option.type === "string" ? option.type : ApplicationCommandOptionTypes[option.type]; const channelTypesKey = received ? "channelTypes" : "channel_types"; const minValueKey = received ? "minValue" : "min_value"; const maxValueKey = received ? "maxValue" : "max_value"; const minLengthKey = received ? "minLength" : "min_length"; const maxLengthKey = received ? "maxLength" : "max_length"; const nameLocalizationsKey = received ? "nameLocalizations" : "name_localizations"; const nameLocalizedKey = received ? "nameLocalized" : "name_localized"; const descriptionLocalizationsKey = received ? "descriptionLocalizations" : "description_localizations"; const descriptionLocalizedKey = received ? "descriptionLocalized" : "description_localized"; return { type: typeof option.type === "number" && !received ? option.type : ApplicationCommandOptionTypes[option.type], name: option.name, [nameLocalizationsKey]: option.nameLocalizations ?? option.name_localizations, [nameLocalizedKey]: option.nameLocalized ?? option.name_localized, description: option.description, [descriptionLocalizationsKey]: option.descriptionLocalizations ?? option.description_localizations, [descriptionLocalizedKey]: option.descriptionLocalized ?? option.description_localized, required: option.required ?? (stringType === "SUB_COMMAND" || stringType === "SUB_COMMAND_GROUP" ? undefined : false), autocomplete: option.autocomplete, choices: option.choices?.map((choice) => ({ name: choice.name, [nameLocalizedKey]: choice.nameLocalized ?? choice.name_localized, [nameLocalizationsKey]: choice.nameLocalizations ?? choice.name_localizations, value: choice.value })), options: option.options?.map((o) => this.transformOption(o, received)), [channelTypesKey]: received ? option.channel_types?.map((type) => ChannelTypes[type]) : option.channelTypes?.map((type) => typeof type === "string" ? ChannelTypes[type] : type) ?? option.channel_types, [minValueKey]: option.minValue ?? option.min_value, [maxValueKey]: option.maxValue ?? option.max_value, [minLengthKey]: option.minLength ?? option.min_length, [maxLengthKey]: option.maxLength ?? option.max_length }; } } module.exports = ApplicationCommand; }); // node_modules/discord.js-selfbot-v13/src/structures/AutoModerationRule.js var require_AutoModerationRule = __commonJS((exports, module) => { var { Collection } = require_dist(); var Base = require_Base(); var { AutoModerationRuleKeywordPresetTypes, AutoModerationRuleTriggerTypes, AutoModerationRuleEventTypes, AutoModerationActionTypes } = require_Constants(); class AutoModerationRule extends Base { constructor(client, data, guild) { super(client); this.id = data.id; this.guild = guild; this.creatorId = data.creator_id; this.triggerType = AutoModerationRuleTriggerTypes[data.trigger_type]; this._patch(data); } _patch(data) { if ("name" in data) { this.name = data.name; } if ("event_type" in data) { this.eventType = AutoModerationRuleEventTypes[data.event_type]; } if ("trigger_metadata" in data) { this.triggerMetadata = { keywordFilter: data.trigger_metadata.keyword_filter ?? [], regexPatterns: data.trigger_metadata.regex_patterns ?? [], presets: data.trigger_metadata.presets?.map((preset) => AutoModerationRuleKeywordPresetTypes[preset]) ?? [], allowList: data.trigger_metadata.allow_list ?? [], mentionTotalLimit: data.trigger_metadata.mention_total_limit ?? null, mentionRaidProtectionEnabled: data.trigger_metadata.mention_raid_protection_enabled ?? false }; } if ("actions" in data) { this.actions = data.actions.map((action) => ({ type: AutoModerationActionTypes[action.type], metadata: { durationSeconds: action.metadata.duration_seconds ?? null, channelId: action.metadata.channel_id ?? null, customMessage: action.metadata.custom_message ?? null } })); } if ("enabled" in data) { this.enabled = data.enabled; } if ("exempt_roles" in data) { this.exemptRoles = new Collection(data.exempt_roles.map((exemptRole) => [exemptRole, this.guild.roles.cache.get(exemptRole)])); } if ("exempt_channels" in data) { this.exemptChannels = new Collection(data.exempt_channels.map((exemptChannel) => [exemptChannel, this.guild.channels.cache.get(exemptChannel)])); } } edit(options) { return this.guild.autoModerationRules.edit(this.id, options); } delete(reason) { return this.guild.autoModerationRules.delete(this.id, reason); } setName(name, reason) { return this.edit({ name, reason }); } setEventType(eventType, reason) { return this.edit({ eventType, reason }); } setKeywordFilter(keywordFilter, reason) { return this.edit({ triggerMetadata: { ...this.triggerMetadata, keywordFilter }, reason }); } setRegexPatterns(regexPatterns, reason) { return this.edit({ triggerMetadata: { ...this.triggerMetadata, regexPatterns }, reason }); } setPresets(presets, reason) { return this.edit({ triggerMetadata: { ...this.triggerMetadata, presets }, reason }); } setAllowList(allowList, reason) { return this.edit({ triggerMetadata: { ...this.triggerMetadata, allowList }, reason }); } setMentionTotalLimit(mentionTotalLimit, reason) { return this.edit({ triggerMetadata: { ...this.triggerMetadata, mentionTotalLimit }, reason }); } setMentionRaidProtectionEnabled(mentionRaidProtectionEnabled, reason) { return this.edit({ triggerMetadata: { ...this.triggerMetadata, mentionRaidProtectionEnabled }, reason }); } setActions(actions, reason) { return this.edit({ actions, reason }); } setEnabled(enabled = true, reason) { return this.edit({ enabled, reason }); } setExemptRoles(exemptRoles, reason) { return this.edit({ exemptRoles, reason }); } setExemptChannels(exemptChannels, reason) { return this.edit({ exemptChannels, reason }); } } module.exports = AutoModerationRule; }); // node_modules/discord.js-selfbot-v13/src/structures/Integration.js var require_Integration = __commonJS((exports, module) => { var Base = require_Base(); var IntegrationApplication = require_IntegrationApplication(); class Integration extends Base { constructor(client, data, guild) { super(client); this.guild = guild; this.id = data.id; this.name = data.name; this.type = data.type; this.enabled = data.enabled; this.syncing = data.syncing; this.role = this.guild.roles.cache.get(data.role_id); if ("enable_emoticons" in data) { this.enableEmoticons = data.enable_emoticons; } else { this.enableEmoticons ??= null; } if (data.user) { this.user = this.client.users._add(data.user); } else { this.user = null; } this.account = data.account; this.syncedAt = data.synced_at; if ("subscriber_count" in data) { this.subscriberCount = data.subscriber_count; } else { this.subscriberCount ??= null; } if ("revoked" in data) { this.revoked = data.revoked; } else { this.revoked ??= null; } this._patch(data); } get roles() { const roles = this.guild.roles.cache; return roles.filter((role) => role.tags?.integrationId === this.id); } _patch(data) { if ("expire_behavior" in data) { this.expireBehavior = data.expire_behavior; } if ("expire_grace_period" in data) { this.expireGracePeriod = data.expire_grace_period; } if ("application" in data) { if (this.application) { this.application._patch(data.application); } else { this.application = new IntegrationApplication(this.client, data.application); } } else { this.application ??= null; } } async delete(reason) { await this.client.api.guilds(this.guild.id).integrations(this.id).delete({ reason }); return this; } toJSON() { return super.toJSON({ role: "roleId", guild: "guildId", user: "userId" }); } } module.exports = Integration; }); // node_modules/discord.js-selfbot-v13/src/structures/StageInstance.js var require_StageInstance = __commonJS((exports) => { var process2 = import.meta.require("process"); var Base = require_Base(); var { PrivacyLevels } = require_Constants(); var SnowflakeUtil = require_SnowflakeUtil(); var deletedStageInstances = new WeakSet; var deprecationEmittedForDeleted = false; class StageInstance extends Base { constructor(client, data) { super(client); this.id = data.id; this._patch(data); } _patch(data) { if ("guild_id" in data) { this.guildId = data.guild_id; } if ("channel_id" in data) { this.channelId = data.channel_id; } if ("topic" in data) { this.topic = data.topic; } if ("privacy_level" in data) { this.privacyLevel = PrivacyLevels[data.privacy_level]; } if ("discoverable_disabled" in data) { this.discoverableDisabled = data.discoverable_disabled; } else { this.discoverableDisabled ??= null; } if ("guild_scheduled_event_id" in data) { this.guildScheduledEventId = data.guild_scheduled_event_id; } else { this.guildScheduledEventId ??= null; } } get channel() { return this.client.channels.resolve(this.channelId); } get guildScheduledEvent() { return this.guild?.scheduledEvents.resolve(this.guildScheduledEventId) ?? null; } get deleted() { if (!deprecationEmittedForDeleted) { deprecationEmittedForDeleted = true; process2.emitWarning("StageInstance#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.", "DeprecationWarning"); } return deletedStageInstances.has(this); } set deleted(value) { if (!deprecationEmittedForDeleted) { deprecationEmittedForDeleted = true; process2.emitWarning("StageInstance#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.", "DeprecationWarning"); } if (value) deletedStageInstances.add(this); else deletedStageInstances.delete(this); } get guild() { return this.client.guilds.resolve(this.guildId); } edit(options) { return this.guild.stageInstances.edit(this.channelId, options); } async delete() { await this.guild.stageInstances.delete(this.channelId); const clone = this._clone(); deletedStageInstances.add(clone); return clone; } setTopic(topic) { return this.guild.stageInstances.edit(this.channelId, { topic }); } get createdTimestamp() { return SnowflakeUtil.timestampFrom(this.id); } get createdAt() { return new Date(this.createdTimestamp); } } exports.StageInstance = StageInstance; exports.deletedStageInstances = deletedStageInstances; }); // node_modules/discord.js-selfbot-v13/src/structures/GuildAuditLogs.js var require_GuildAuditLogs = __commonJS((exports, module) => { var { Collection } = require_dist(); var ApplicationCommand = require_ApplicationCommand(); var AutoModerationRule = require_AutoModerationRule(); var { GuildScheduledEvent } = require_GuildScheduledEvent(); var Integration = require_Integration(); var Invite = require_Invite(); var { StageInstance } = require_StageInstance(); var { Sticker } = require_Sticker(); var Webhook = require_Webhook(); var { OverwriteTypes, PartialTypes, AutoModerationRuleTriggerTypes } = require_Constants(); var SnowflakeUtil = require_SnowflakeUtil(); var Util = require_Util(); var Targets = { ALL: "ALL", GUILD: "GUILD", GUILD_SCHEDULED_EVENT: "GUILD_SCHEDULED_EVENT", CHANNEL: "CHANNEL", USER: "USER", ROLE: "ROLE", INVITE: "INVITE", WEBHOOK: "WEBHOOK", EMOJI: "EMOJI", MESSAGE: "MESSAGE", INTEGRATION: "INTEGRATION", STAGE_INSTANCE: "STAGE_INSTANCE", STICKER: "STICKER", THREAD: "THREAD", APPLICATION_COMMAND: "APPLICATION_COMMAND", AUTO_MODERATION: "AUTO_MODERATION", SOUNDBOARD_SOUND: "SOUNDBOARD_SOUND", GUILD_ONBOARDING_PROMPT: "GUILD_ONBOARDING_PROMPT", GUILD_ONBOARDING: "GUILD_ONBOARDING", UNKNOWN: "UNKNOWN" }; var Actions = { ALL: null, GUILD_UPDATE: 1, CHANNEL_CREATE: 10, CHANNEL_UPDATE: 11, CHANNEL_DELETE: 12, CHANNEL_OVERWRITE_CREATE: 13, CHANNEL_OVERWRITE_UPDATE: 14, CHANNEL_OVERWRITE_DELETE: 15, MEMBER_KICK: 20, MEMBER_PRUNE: 21, MEMBER_BAN_ADD: 22, MEMBER_BAN_REMOVE: 23, MEMBER_UPDATE: 24, MEMBER_ROLE_UPDATE: 25, MEMBER_MOVE: 26, MEMBER_DISCONNECT: 27, BOT_ADD: 28, ROLE_CREATE: 30, ROLE_UPDATE: 31, ROLE_DELETE: 32, INVITE_CREATE: 40, INVITE_UPDATE: 41, INVITE_DELETE: 42, WEBHOOK_CREATE: 50, WEBHOOK_UPDATE: 51, WEBHOOK_DELETE: 52, EMOJI_CREATE: 60, EMOJI_UPDATE: 61, EMOJI_DELETE: 62, MESSAGE_DELETE: 72, MESSAGE_BULK_DELETE: 73, MESSAGE_PIN: 74, MESSAGE_UNPIN: 75, INTEGRATION_CREATE: 80, INTEGRATION_UPDATE: 81, INTEGRATION_DELETE: 82, STAGE_INSTANCE_CREATE: 83, STAGE_INSTANCE_UPDATE: 84, STAGE_INSTANCE_DELETE: 85, STICKER_CREATE: 90, STICKER_UPDATE: 91, STICKER_DELETE: 92, GUILD_SCHEDULED_EVENT_CREATE: 100, GUILD_SCHEDULED_EVENT_UPDATE: 101, GUILD_SCHEDULED_EVENT_DELETE: 102, THREAD_CREATE: 110, THREAD_UPDATE: 111, THREAD_DELETE: 112, APPLICATION_COMMAND_PERMISSION_UPDATE: 121, AUTO_MODERATION_RULE_CREATE: 140, AUTO_MODERATION_RULE_UPDATE: 141, AUTO_MODERATION_RULE_DELETE: 142, AUTO_MODERATION_BLOCK_MESSAGE: 143, AUTO_MODERATION_FLAG_TO_CHANNEL: 144, AUTO_MODERATION_USER_COMMUNICATION_DISABLED: 145 }; class GuildAuditLogs { constructor(guild, data) { if (data.users) for (const user of data.users) guild.client.users._add(user); if (data.threads) for (const thread of data.threads) guild.client.channels._add(thread, guild); this.webhooks = new Collection; if (data.webhooks) { for (const hook of data.webhooks) { this.webhooks.set(hook.id, new Webhook(guild.client, hook)); } } this.integrations = new Collection; if (data.integrations) { for (const integration of data.integrations) { this.integrations.set(integration.id, new Integration(guild.client, integration, guild)); } } this.applicationCommands = new Collection; if (data.application_commands) { for (const command of data.application_commands) { this.applicationCommands.set(command.id, new ApplicationCommand(guild.client, command, guild)); } } this.autoModerationRules = data.auto_moderation_rules.reduce((autoModerationRules, autoModerationRule) => autoModerationRules.set(autoModerationRule.id, guild.autoModerationRules._add(autoModerationRule)), new Collection); this.entries = new Collection; for (const item of data.audit_log_entries) { const entry = new GuildAuditLogsEntry(guild, item, this); this.entries.set(entry.id, entry); } } static async build(...args) { const logs = new GuildAuditLogs(...args); await Promise.all(logs.entries.map((e) => e.target)); return logs; } static targetType(target) { if (target < 10) return Targets.GUILD; if (target < 20) return Targets.CHANNEL; if (target < 30) return Targets.USER; if (target < 40) return Targets.ROLE; if (target < 50) return Targets.INVITE; if (target < 60) return Targets.WEBHOOK; if (target < 70) return Targets.EMOJI; if (target < 80) return Targets.MESSAGE; if (target < 83) return Targets.INTEGRATION; if (target < 86) return Targets.STAGE_INSTANCE; if (target < 100) return Targets.STICKER; if (target < 110) return Targets.GUILD_SCHEDULED_EVENT; if (target < 120) return Targets.THREAD; if (target < 130) return Targets.APPLICATION_COMMAND; if (target < 140) return Targets.SOUNDBOARD_SOUND; if (target < 143) return Targets.AUTO_MODERATION; if (target < 146) return Targets.USER; if (target >= 163 && target <= 165) return Targets.GUILD_ONBOARDING_PROMPT; if (target >= 160 && target < 170) return Targets.GUILD_ONBOARDING; return Targets.UNKNOWN; } static actionType(action) { if ([ Actions.CHANNEL_CREATE, Actions.CHANNEL_OVERWRITE_CREATE, Actions.MEMBER_BAN_REMOVE, Actions.BOT_ADD, Actions.ROLE_CREATE, Actions.INVITE_CREATE, Actions.WEBHOOK_CREATE, Actions.EMOJI_CREATE, Actions.MESSAGE_PIN, Actions.INTEGRATION_CREATE, Actions.STAGE_INSTANCE_CREATE, Actions.STICKER_CREATE, Actions.GUILD_SCHEDULED_EVENT_CREATE, Actions.THREAD_CREATE, Actions.AUTO_MODERATION_RULE_CREATE, Actions.AUTO_MODERATION_BLOCK_MESSAGE ].includes(action)) { return "CREATE"; } if ([ Actions.CHANNEL_DELETE, Actions.CHANNEL_OVERWRITE_DELETE, Actions.MEMBER_KICK, Actions.MEMBER_PRUNE, Actions.MEMBER_BAN_ADD, Actions.MEMBER_DISCONNECT, Actions.ROLE_DELETE, Actions.INVITE_DELETE, Actions.WEBHOOK_DELETE, Actions.EMOJI_DELETE, Actions.MESSAGE_DELETE, Actions.MESSAGE_BULK_DELETE, Actions.MESSAGE_UNPIN, Actions.INTEGRATION_DELETE, Actions.STAGE_INSTANCE_DELETE, Actions.STICKER_DELETE, Actions.GUILD_SCHEDULED_EVENT_DELETE, Actions.THREAD_DELETE, Actions.AUTO_MODERATION_RULE_DELETE ].includes(action)) { return "DELETE"; } if ([ Actions.GUILD_UPDATE, Actions.CHANNEL_UPDATE, Actions.CHANNEL_OVERWRITE_UPDATE, Actions.MEMBER_UPDATE, Actions.MEMBER_ROLE_UPDATE, Actions.MEMBER_MOVE, Actions.ROLE_UPDATE, Actions.INVITE_UPDATE, Actions.WEBHOOK_UPDATE, Actions.EMOJI_UPDATE, Actions.INTEGRATION_UPDATE, Actions.STAGE_INSTANCE_UPDATE, Actions.STICKER_UPDATE, Actions.GUILD_SCHEDULED_EVENT_UPDATE, Actions.THREAD_UPDATE, Actions.APPLICATION_COMMAND_PERMISSION_UPDATE, Actions.AUTO_MODERATION_RULE_UPDATE ].includes(action)) { return "UPDATE"; } return "ALL"; } toJSON() { return Util.flatten(this); } } class GuildAuditLogsEntry { constructor(guild, data, logs) { const targetType = GuildAuditLogs.targetType(data.action_type); this.targetType = targetType; this.actionType = GuildAuditLogs.actionType(data.action_type); this.action = Object.keys(Actions).find((k) => Actions[k] === data.action_type); this.reason = data.reason ?? null; this.executorId = data.user_id; this.executor = data.user_id ? guild.client.options.partials.includes(PartialTypes.USER) ? guild.client.users._add({ id: data.user_id }) : guild.client.users.cache.get(data.user_id) ?? null : null; this.changes = data.changes?.map((change) => ({ key: change.key, ..."old_value" in change ? { old: change.old_value } : {}, ..."new_value" in change ? { new: change.new_value } : {} })) ?? []; this.id = data.id; this.extra = null; switch (data.action_type) { case Actions.MEMBER_PRUNE: this.extra = { removed: Number(data.options.members_removed), days: Number(data.options.delete_member_days) }; break; case Actions.MEMBER_MOVE: case Actions.MESSAGE_DELETE: this.extra = { channel: guild.channels.cache.get(data.options.channel_id) ?? { id: data.options.channel_id }, count: Number(data.options.count) }; break; case Actions.MESSAGE_PIN: case Actions.MESSAGE_UNPIN: this.extra = { channel: guild.client.channels.cache.get(data.options.channel_id) ?? { id: data.options.channel_id }, messageId: data.options.message_id }; break; case Actions.MESSAGE_BULK_DELETE: case Actions.MEMBER_DISCONNECT: this.extra = { count: Number(data.options.count) }; break; case Actions.CHANNEL_OVERWRITE_CREATE: case Actions.CHANNEL_OVERWRITE_UPDATE: case Actions.CHANNEL_OVERWRITE_DELETE: switch (Number(data.options.type)) { case OverwriteTypes.role: this.extra = guild.roles.cache.get(data.options.id) ?? { id: data.options.id, name: data.options.role_name, type: OverwriteTypes[OverwriteTypes.role] }; break; case OverwriteTypes.member: this.extra = guild.members.cache.get(data.options.id) ?? { id: data.options.id, type: OverwriteTypes[OverwriteTypes.member] }; break; default: break; } break; case Actions.STAGE_INSTANCE_CREATE: case Actions.STAGE_INSTANCE_DELETE: case Actions.STAGE_INSTANCE_UPDATE: this.extra = { channel: guild.client.channels.cache.get(data.options?.channel_id) ?? { id: data.options?.channel_id } }; break; case Actions.APPLICATION_COMMAND_PERMISSION_UPDATE: this.extra = { applicationId: data.options.application_id }; break; case Actions.AUTO_MODERATION_BLOCK_MESSAGE: case Actions.AUTO_MODERATION_FLAG_TO_CHANNEL: case Actions.AUTO_MODERATION_USER_COMMUNICATION_DISABLED: this.extra = { autoModerationRuleName: data.options.auto_moderation_rule_name, autoModerationRuleTriggerType: AutoModerationRuleTriggerTypes[data.options.auto_moderation_rule_trigger_type], channel: guild.client.channels.cache.get(data.options?.channel_id) ?? { id: data.options?.channel_id } }; break; default: break; } this.targetId = data.target_id; this.target = null; if (targetType === Targets.UNKNOWN) { this.target = this.changes.reduce((o, c) => { o[c.key] = c.new ?? c.old; return o; }, {}); this.target.id = data.target_id; } else if (targetType === Targets.USER && data.target_id) { this.target = guild.client.options.partials.includes(PartialTypes.USER) ? guild.client.users._add({ id: data.target_id }) : guild.client.users.cache.get(data.target_id) ?? null; } else if (targetType === Targets.GUILD) { this.target = guild.client.guilds.cache.get(data.target_id); } else if (targetType === Targets.WEBHOOK) { this.target = logs?.webhooks.get(data.target_id) ?? new Webhook(guild.client, this.changes.reduce((o, c) => { o[c.key] = c.new ?? c.old; return o; }, { id: data.target_id, guild_id: guild.id })); } else if (targetType === Targets.INVITE) { let change = this.changes.find((c) => c.key === "code"); change = change.new ?? change.old; this.target = guild.invites.cache.get(change) ?? new Invite(guild.client, this.changes.reduce((o, c) => { o[c.key] = c.new ?? c.old; return o; }, { guild })); } else if (targetType === Targets.MESSAGE) { this.target = data.action_type === Actions.MESSAGE_BULK_DELETE ? guild.channels.cache.get(data.target_id) ?? { id: data.target_id } : guild.client.users.cache.get(data.target_id) ?? null; } else if (targetType === Targets.INTEGRATION) { this.target = logs?.integrations.get(data.target_id) ?? new Integration(guild.client, this.changes.reduce((o, c) => { o[c.key] = c.new ?? c.old; return o; }, { id: data.target_id }), guild); } else if (targetType === Targets.CHANNEL || targetType === Targets.THREAD) { this.target = guild.channels.cache.get(data.target_id) ?? this.changes.reduce((o, c) => { o[c.key] = c.new ?? c.old; return o; }, { id: data.target_id }); } else if (targetType === Targets.STAGE_INSTANCE) { this.target = guild.stageInstances.cache.get(data.target_id) ?? new StageInstance(guild.client, this.changes.reduce((o, c) => { o[c.key] = c.new ?? c.old; return o; }, { id: data.target_id, channel_id: data.options?.channel_id, guild_id: guild.id })); } else if (targetType === Targets.STICKER) { this.target = guild.stickers.cache.get(data.target_id) ?? new Sticker(guild.client, this.changes.reduce((o, c) => { o[c.key] = c.new ?? c.old; return o; }, { id: data.target_id })); } else if (targetType === Targets.GUILD_SCHEDULED_EVENT) { this.target = guild.scheduledEvents.cache.get(data.target_id) ?? new GuildScheduledEvent(guild.client, this.changes.reduce((o, c) => { o[c.key] = c.new ?? c.old; return o; }, { id: data.target_id, guild_id: guild.id })); } else if (targetType === Targets.APPLICATION_COMMAND) { this.target = logs?.applicationCommands.get(data.target_id) ?? { id: data.target_id }; } else if (targetType === Targets.AUTO_MODERATION) { this.target = guild.autoModerationRules.cache.get(data.target_id) ?? new AutoModerationRule(guild.client, this.changes.reduce((o, c) => { o[c.key] = c.new ?? c.old; return o; }, { id: data.target_id, guild_id: guild.id }), guild); } else if (targetType === Targets.ROLE) { this.target = guild.roles.cache.get(data.target_id) ?? { id: data.target_id }; } else if (targetType === Targets.EMOJI) { this.target = guild.emojis.cache.get(data.target_id) ?? { id: data.target_id }; } else if (data.target_id) { this.target = { id: data.target_id }; } } get createdTimestamp() { return SnowflakeUtil.timestampFrom(this.id); } get createdAt() { return new Date(this.createdTimestamp); } toJSON() { return Util.flatten(this, { createdTimestamp: true }); } } GuildAuditLogs.Actions = Actions; GuildAuditLogs.Targets = Targets; GuildAuditLogs.Entry = GuildAuditLogsEntry; module.exports = GuildAuditLogs; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildAuditLogEntryCreate.js var require_GuildAuditLogEntryCreate = __commonJS((exports, module) => { var Action = require_Action(); var GuildAuditLogsEntry = require_GuildAuditLogs().Entry; var { Events } = require_Constants(); class GuildAuditLogEntryCreateAction extends Action { handle(data) { const client = this.client; const guild = client.guilds.cache.get(data.guild_id); let auditLogEntry; if (guild) { auditLogEntry = new GuildAuditLogsEntry(guild, data); client.emit(Events.GUILD_AUDIT_LOG_ENTRY_CREATE, auditLogEntry, guild); } return { auditLogEntry }; } } module.exports = GuildAuditLogEntryCreateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildBanAdd.js var require_GuildBanAdd = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class GuildBanAdd extends Action { handle(data) { const client = this.client; const guild = client.guilds.cache.get(data.guild_id); if (guild) client.emit(Events.GUILD_BAN_ADD, guild.bans._add(data)); } } module.exports = GuildBanAdd; }); // node_modules/discord.js-selfbot-v13/src/structures/GuildBan.js var require_GuildBan = __commonJS((exports, module) => { var Base = require_Base(); class GuildBan extends Base { constructor(client, data, guild) { super(client); this.guild = guild; this._patch(data); } _patch(data) { if ("user" in data) { this.user = this.client.users._add(data.user, true); } if ("reason" in data) { this.reason = data.reason; } } get partial() { return !("reason" in this); } fetch(force = true) { return this.guild.bans.fetch({ user: this.user, cache: true, force }); } } module.exports = GuildBan; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildBanRemove.js var require_GuildBanRemove = __commonJS((exports, module) => { var Action = require_Action(); var GuildBan = require_GuildBan(); var { Events } = require_Constants(); class GuildBanRemove extends Action { handle(data) { const client = this.client; const guild = client.guilds.cache.get(data.guild_id); if (guild) { const ban = guild.bans.cache.get(data.user.id) ?? new GuildBan(client, data, guild); guild.bans.cache.delete(ban.user.id); client.emit(Events.GUILD_BAN_REMOVE, ban); } } } module.exports = GuildBanRemove; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildChannelsPositionUpdate.js var require_GuildChannelsPositionUpdate = __commonJS((exports, module) => { var Action = require_Action(); class GuildChannelsPositionUpdate extends Action { handle(data) { const client = this.client; const guild = client.guilds.cache.get(data.guild_id); if (guild) { for (const partialChannel of data.channels) { const channel = guild.channels.cache.get(partialChannel.id); if (channel) channel.rawPosition = partialChannel.position; } } return { guild }; } } module.exports = GuildChannelsPositionUpdate; }); // node_modules/discord.js-selfbot-v13/src/structures/GuildPreviewEmoji.js var require_GuildPreviewEmoji = __commonJS((exports, module) => { var BaseGuildEmoji = require_BaseGuildEmoji(); class GuildPreviewEmoji extends BaseGuildEmoji { constructor(client, data, guild) { super(client, data, guild); this.roles = data.roles; } } module.exports = GuildPreviewEmoji; }); // node_modules/discord.js-selfbot-v13/src/structures/GuildPreview.js var require_GuildPreview = __commonJS((exports, module) => { var { Collection } = require_dist(); var Base = require_Base(); var GuildPreviewEmoji = require_GuildPreviewEmoji(); var { Sticker } = require_Sticker(); var SnowflakeUtil = require_SnowflakeUtil(); class GuildPreview extends Base { constructor(client, data) { super(client); if (!data) return; this._patch(data); } _patch(data) { this.id = data.id; if ("name" in data) { this.name = data.name; } if ("icon" in data) { this.icon = data.icon; } if ("splash" in data) { this.splash = data.splash; } if ("discovery_splash" in data) { this.discoverySplash = data.discovery_splash; } if ("features" in data) { this.features = data.features; } if ("approximate_member_count" in data) { this.approximateMemberCount = data.approximate_member_count; } if ("approximate_presence_count" in data) { this.approximatePresenceCount = data.approximate_presence_count; } if ("description" in data) { this.description = data.description; } else { this.description ??= null; } if (!this.emojis) { this.emojis = new Collection; } else { this.emojis.clear(); } for (const emoji of data.emojis) { this.emojis.set(emoji.id, new GuildPreviewEmoji(this.client, emoji, this)); } this.stickers = data.stickers.reduce((stickers, sticker) => stickers.set(sticker.id, new Sticker(this.client, sticker)), new Collection); } get createdTimestamp() { return SnowflakeUtil.timestampFrom(this.id); } get createdAt() { return new Date(this.createdTimestamp); } splashURL({ format, size } = {}) { return this.splash && this.client.rest.cdn.Splash(this.id, this.splash, format, size); } discoverySplashURL({ format, size } = {}) { return this.discoverySplash && this.client.rest.cdn.DiscoverySplash(this.id, this.discoverySplash, format, size); } iconURL({ format, size, dynamic } = {}) { return this.icon && this.client.rest.cdn.Icon(this.id, this.icon, format, size, dynamic); } async fetch() { const data = await this.client.api.guilds(this.id).preview.get(); this._patch(data); return this; } toString() { return this.name; } toJSON() { const json = super.toJSON(); json.iconURL = this.iconURL(); json.splashURL = this.splashURL(); return json; } } module.exports = GuildPreview; }); // node_modules/discord.js-selfbot-v13/src/managers/AutoModerationRuleManager.js var require_AutoModerationRuleManager = __commonJS((exports, module) => { var { Collection } = require_dist(); var CachedManager = require_CachedManager(); var AutoModerationRule = require_AutoModerationRule(); var { AutoModerationRuleEventTypes, AutoModerationRuleTriggerTypes, AutoModerationActionTypes, AutoModerationRuleKeywordPresetTypes } = require_Constants(); class AutoModerationRuleManager extends CachedManager { constructor(guild, iterable) { super(guild.client, AutoModerationRule, iterable); this.guild = guild; } _add(data, cache) { return super._add(data, cache, { extras: [this.guild] }); } async create({ name, eventType, triggerType, triggerMetadata, actions, enabled, exemptRoles, exemptChannels, reason }) { const data = await this.client.api.guilds(this.guild.id)["auto-moderation"].rules.post({ data: { name, event_type: typeof eventType === "number" ? eventType : AutoModerationRuleEventTypes[eventType], trigger_type: typeof triggerType === "number" ? triggerType : AutoModerationRuleTriggerTypes[triggerType], trigger_metadata: triggerMetadata && { keyword_filter: triggerMetadata.keywordFilter, regex_patterns: triggerMetadata.regexPatterns, presets: triggerMetadata.presets?.map((preset) => typeof preset === "number" ? preset : AutoModerationRuleKeywordPresetTypes[preset]), allow_list: triggerMetadata.allowList, mention_total_limit: triggerMetadata.mentionTotalLimit, mention_raid_protection_enabled: triggerMetadata.mentionRaidProtectionEnabled }, actions: actions.map((action) => ({ type: typeof action.type === "number" ? action.type : AutoModerationActionTypes[action.type], metadata: { duration_seconds: action.metadata?.durationSeconds, channel_id: action.metadata?.channel && this.guild.channels.resolveId(action.metadata.channel), custom_message: action.metadata?.customMessage } })), enabled, exempt_roles: exemptRoles?.map((exemptRole) => this.guild.roles.resolveId(exemptRole)), exempt_channels: exemptChannels?.map((exemptChannel) => this.guild.channels.resolveId(exemptChannel)) }, reason }); return this._add(data); } async edit(autoModerationRule, { name, eventType, triggerMetadata, actions, enabled, exemptRoles, exemptChannels, reason }) { const autoModerationRuleId = this.resolveId(autoModerationRule); const data = await this.client.api.guilds(this.guild.id)("auto-moderation").rules(autoModerationRuleId).patch({ data: { name, event_type: typeof eventType === "number" ? eventType : AutoModerationRuleEventTypes[eventType], trigger_metadata: triggerMetadata && { keyword_filter: triggerMetadata.keywordFilter, regex_patterns: triggerMetadata.regexPatterns, presets: triggerMetadata.presets?.map((preset) => typeof preset === "number" ? preset : AutoModerationRuleKeywordPresetTypes[preset]), allow_list: triggerMetadata.allowList, mention_total_limit: triggerMetadata.mentionTotalLimit, mention_raid_protection_enabled: triggerMetadata.mentionRaidProtectionEnabled }, actions: actions?.map((action) => ({ type: typeof action.type === "number" ? action.type : AutoModerationActionTypes[action.type], metadata: { duration_seconds: action.metadata?.durationSeconds, channel_id: action.metadata?.channel && this.guild.channels.resolveId(action.metadata.channel), custom_message: action.metadata?.customMessage } })), enabled, exempt_roles: exemptRoles?.map((exemptRole) => this.guild.roles.resolveId(exemptRole)), exempt_channels: exemptChannels?.map((exemptChannel) => this.guild.channels.resolveId(exemptChannel)) }, reason }); return this._add(data); } fetch(options) { if (!options) return this._fetchMany(); const { autoModerationRule, cache, force } = options; const resolvedAutoModerationRule = this.resolveId(autoModerationRule ?? options); if (resolvedAutoModerationRule) { return this._fetchSingle({ autoModerationRule: resolvedAutoModerationRule, cache, force }); } return this._fetchMany(options); } async _fetchSingle({ autoModerationRule, cache, force = false }) { if (!force) { const existing = this.cache.get(autoModerationRule); if (existing) return existing; } const data = await this.client.api.guilds(this.guild.id)("auto-moderation").rules(autoModerationRule).get(); return this._add(data, cache); } async _fetchMany(options = {}) { const data = await this.client.api.guilds(this.guild.id)("auto-moderation").rules.get(); return data.reduce((col, autoModerationRule) => col.set(autoModerationRule.id, this._add(autoModerationRule, options.cache)), new Collection); } async delete(autoModerationRule, reason) { const autoModerationRuleId = this.resolveId(autoModerationRule); await this.client.api.guilds(this.guild.id)("auto-moderation").rules(autoModerationRuleId).delete({ reason }); } } module.exports = AutoModerationRuleManager; }); // node_modules/discord.js-selfbot-v13/src/managers/GuildBanManager.js var require_GuildBanManager = __commonJS((exports, module) => { var process2 = import.meta.require("process"); var { Collection } = require_dist(); var CachedManager = require_CachedManager(); var { TypeError: TypeError2, Error: Error2 } = require_errors(); var GuildBan = require_GuildBan(); var { GuildMember } = require_GuildMember(); var deprecationEmittedForDays = false; class GuildBanManager extends CachedManager { constructor(guild, iterable) { super(guild.client, GuildBan, iterable); this.guild = guild; } _add(data, cache) { return super._add(data, cache, { id: data.user.id, extras: [this.guild] }); } resolve(ban) { return super.resolve(ban) ?? super.resolve(this.client.users.resolveId(ban)); } async fetch(options) { if (!options) return this._fetchMany(); const { user, cache, force, limit, before, after } = options; const resolvedUser = this.client.users.resolveId(user ?? options); if (resolvedUser) return this._fetchSingle({ user: resolvedUser, cache, force }); if (!before && !after && !limit && typeof cache === "undefined") { throw new Error2("FETCH_BAN_RESOLVE_ID"); } return this._fetchMany(options); } async _fetchSingle({ user, cache, force = false }) { if (!force) { const existing = this.cache.get(user); if (existing && !existing.partial) return existing; } const data = await this.client.api.guilds(this.guild.id).bans(user).get(); return this._add(data, cache); } async _fetchMany(options = {}) { const data = await this.client.api.guilds(this.guild.id).bans.get({ query: options }); return data.reduce((col, ban) => col.set(ban.user.id, this._add(ban, options.cache)), new Collection); } async create(user, options = {}) { if (typeof options !== "object") throw new TypeError2("INVALID_TYPE", "options", "object", true); const id = this.client.users.resolveId(user); if (!id) throw new Error2("BAN_RESOLVE_ID", true); if (typeof options.days !== "undefined" && !deprecationEmittedForDays) { process2.emitWarning("The days option for GuildBanManager#create() is deprecated. Use the deleteMessageSeconds option instead.", "DeprecationWarning"); deprecationEmittedForDays = true; } await this.client.api.guilds(this.guild.id).bans(id).put({ data: { delete_message_seconds: typeof options.deleteMessageSeconds !== "undefined" ? options.deleteMessageSeconds : (options.days ?? 0) * 24 * 60 * 60 }, reason: options.reason }); if (user instanceof GuildMember) return user; const _user = this.client.users.cache.get(id); if (_user) { return this.guild.members.resolve(_user) ?? _user; } return id; } async remove(user, reason) { const id = this.client.users.resolveId(user); if (!id) throw new Error2("BAN_RESOLVE_ID"); await this.client.api.guilds(this.guild.id).bans(id).delete({ reason }); return this.client.users.resolve(user); } async bulkCreate(users, options = {}) { if (!users || !(Array.isArray(users) || users instanceof Collection)) { throw new TypeError2("INVALID_TYPE", "users", "Array or Collection of UserResolvable", true); } if (typeof options !== "object") throw new TypeError2("INVALID_TYPE", "options", "object", true); const userIds = users.map((user) => this.client.users.resolveId(user)); if (userIds.length === 0) throw new Error2("BULK_BAN_USERS_OPTION_EMPTY"); const result = await this.client.api.guilds(this.guild.id)["bulk-ban"].post({ data: { delete_message_days: options.deleteMessageSeconds, user_ids: userIds }, reason: options.reason }); return { bannedUsers: result.banned_users, failedUsers: result.failed_users }; } } module.exports = GuildBanManager; }); // node_modules/discord.js-selfbot-v13/src/managers/GuildChannelManager.js var require_GuildChannelManager = __commonJS((exports, module) => { var process2 = import.meta.require("process"); var { Collection } = require_dist(); var CachedManager = require_CachedManager(); var { Error: Error2, TypeError: TypeError2 } = require_errors(); var GuildChannel = require_GuildChannel(); var PermissionOverwrites = require_PermissionOverwrites(); var ThreadChannel = require_ThreadChannel(); var Webhook = require_Webhook(); var ChannelFlags = require_ChannelFlags(); var { ThreadChannelTypes, ChannelTypes, VideoQualityModes, SortOrderTypes, ForumLayoutTypes } = require_Constants(); var DataResolver = require_DataResolver(); var Util = require_Util(); var { resolveAutoArchiveMaxLimit, transformGuildForumTag, transformGuildDefaultReaction } = require_Util(); var cacheWarningEmitted = false; var storeChannelDeprecationEmitted = false; class GuildChannelManager extends CachedManager { constructor(guild, iterable) { super(guild.client, GuildChannel, iterable); const defaultCaching = this._cache.constructor.name === "Collection" || (this._cache.maxSize === undefined || this._cache.maxSize === Infinity) && (this._cache.sweepFilter === undefined || this._cache.sweepFilter.isDefault); if (!cacheWarningEmitted && !defaultCaching) { cacheWarningEmitted = true; process2.emitWarning(`Overriding the cache handling for ${this.constructor.name} is unsupported and breaks functionality.`, "UnsupportedCacheOverwriteWarning"); } this.guild = guild; } get channelCountWithoutThreads() { return this.cache.reduce((acc, channel) => { if (ThreadChannelTypes.includes(channel.type)) return acc; return ++acc; }, 0); } _add(channel) { const existing = this.cache.get(channel.id); if (existing) return existing; this.cache.set(channel.id, channel); return channel; } resolve(channel) { if (channel instanceof ThreadChannel) return this.cache.get(channel.id) ?? null; return super.resolve(channel); } resolveId(channel) { if (channel instanceof ThreadChannel) return super.resolveId(channel.id); return super.resolveId(channel); } async create(name, { type, topic, nsfw, bitrate, userLimit, parent, permissionOverwrites, position, rateLimitPerUser, rtcRegion, videoQualityMode, availableTags, defaultReactionEmoji, defaultSortOrder, defaultForumLayout, defaultThreadRateLimitPerUser, reason } = {}) { parent &&= this.client.channels.resolveId(parent); permissionOverwrites &&= permissionOverwrites.map((o) => PermissionOverwrites.resolve(o, this.guild)); const intType = typeof type === "number" ? type : ChannelTypes[type] ?? ChannelTypes.GUILD_TEXT; const videoMode = typeof videoQualityMode === "number" ? videoQualityMode : VideoQualityModes[videoQualityMode]; const sortMode = typeof defaultSortOrder === "number" ? defaultSortOrder : SortOrderTypes[defaultSortOrder]; const layoutMode = typeof defaultForumLayout === "number" ? defaultForumLayout : ForumLayoutTypes[defaultForumLayout]; if (intType === ChannelTypes.GUILD_STORE && !storeChannelDeprecationEmitted) { storeChannelDeprecationEmitted = true; process2.emitWarning("Creating store channels is deprecated by Discord and will stop working in March 2022. Check the docs for more info.", "DeprecationWarning"); } const data = await this.client.api.guilds(this.guild.id).channels.post({ data: { name, topic, type: intType, nsfw, bitrate, user_limit: userLimit, parent_id: parent, position, permission_overwrites: permissionOverwrites, rate_limit_per_user: rateLimitPerUser, rtc_region: rtcRegion, video_quality_mode: videoMode, available_tags: availableTags?.map((availableTag) => transformGuildForumTag(availableTag)), default_reaction_emoji: defaultReactionEmoji && transformGuildDefaultReaction(defaultReactionEmoji), default_sort_order: sortMode, default_forum_layout: layoutMode, default_thread_rate_limit_per_user: defaultThreadRateLimitPerUser }, reason }); return this.client.actions.ChannelCreate.handle(data).channel; } async createWebhook(channel, name, { avatar, reason } = {}) { const id = this.resolveId(channel); if (!id) throw new TypeError2("INVALID_TYPE", "channel", "GuildChannelResolvable"); const resolvedImage = await DataResolver.resolveImage(avatar); const data = await this.client.api.channels[id].webhooks.post({ data: { name, avatar: resolvedImage }, reason }); return new Webhook(this.client, data); } async addFollower(channel, targetChannel, reason) { const channelId = this.resolveId(channel); const targetChannelId = this.resolveId(targetChannel); if (!channelId || !targetChannelId) throw new Error2("GUILD_CHANNEL_RESOLVE"); const { webhook_id } = await this.client.api.channels[channelId].followers.post({ data: { webhook_channel_id: targetChannelId }, reason }); return webhook_id; } async edit(channel, data, reason) { channel = this.resolve(channel); if (!channel) throw new TypeError2("INVALID_TYPE", "channel", "GuildChannelResolvable"); const parentId = data.parent && this.client.channels.resolveId(data.parent); if (typeof data.position !== "undefined") await this.setPosition(channel, data.position, { reason }); let permission_overwrites = data.permissionOverwrites?.map((o) => PermissionOverwrites.resolve(o, this.guild)); if (data.lockPermissions) { if (parentId) { const newParent = this.cache.get(parentId); if (newParent?.type === "GUILD_CATEGORY") { permission_overwrites = newParent.permissionOverwrites.cache.map((o) => PermissionOverwrites.resolve(o, this.guild)); } } else if (channel.parent) { permission_overwrites = channel.parent.permissionOverwrites.cache.map((o) => PermissionOverwrites.resolve(o, this.guild)); } } let defaultAutoArchiveDuration = data.defaultAutoArchiveDuration; if (defaultAutoArchiveDuration === "MAX") defaultAutoArchiveDuration = resolveAutoArchiveMaxLimit(this.guild); const newData = await this.client.api.channels(channel.id).patch({ data: { name: (data.name ?? channel.name).trim(), type: data.type, topic: data.topic, nsfw: data.nsfw, bitrate: data.bitrate ?? channel.bitrate, user_limit: data.userLimit ?? channel.userLimit, rtc_region: "rtcRegion" in data ? data.rtcRegion : channel.rtcRegion, video_quality_mode: typeof data.videoQualityMode === "string" ? VideoQualityModes[data.videoQualityMode] : data.videoQualityMode, parent_id: parentId, lock_permissions: data.lockPermissions, rate_limit_per_user: data.rateLimitPerUser, default_auto_archive_duration: defaultAutoArchiveDuration, permission_overwrites, available_tags: data.availableTags?.map((availableTag) => transformGuildForumTag(availableTag)), default_reaction_emoji: data.defaultReactionEmoji && transformGuildDefaultReaction(data.defaultReactionEmoji), default_thread_rate_limit_per_user: data.defaultThreadRateLimitPerUser, flags: "flags" in data ? ChannelFlags.resolve(data.flags) : undefined, default_sort_order: typeof data.defaultSortOrder === "string" ? SortOrderTypes[data.defaultSortOrder] : data.defaultSortOrder }, reason }); return this.client.actions.ChannelUpdate.handle(newData).updated; } async setPosition(channel, position, { relative, reason } = {}) { channel = this.resolve(channel); if (!channel) throw new TypeError2("INVALID_TYPE", "channel", "GuildChannelResolvable"); const updatedChannels = await Util.setPosition(channel, position, relative, this.guild._sortedChannels(channel), this.client.api.guilds(this.guild.id).channels, reason); this.client.actions.GuildChannelsPositionUpdate.handle({ guild_id: this.guild.id, channels: updatedChannels }); return channel; } async fetch(id, { cache = true, force = false } = {}) { if (id && !force) { const existing = this.cache.get(id); if (existing) return existing; } if (id) { const data2 = await this.client.api.channels(id).get(); if (this.guild.id !== data2.guild_id) throw new Error2("GUILD_CHANNEL_UNOWNED"); return this.client.channels._add(data2, this.guild, { cache }); } const data = await this.client.api.guilds(this.guild.id).channels.get(); const channels = new Collection; for (const channel of data) channels.set(channel.id, this.client.channels._add(channel, this.guild, { cache })); return channels; } async fetchWebhooks(channel) { const id = this.resolveId(channel); if (!id) throw new TypeError2("INVALID_TYPE", "channel", "GuildChannelResolvable"); const data = await this.client.api.channels[id].webhooks.get(); return data.reduce((hooks, hook) => hooks.set(hook.id, new Webhook(this.client, hook)), new Collection); } async setPositions(channelPositions) { channelPositions = channelPositions.map((r) => ({ id: this.client.channels.resolveId(r.channel), position: r.position, lock_permissions: r.lockPermissions, parent_id: typeof r.parent !== "undefined" ? this.resolveId(r.parent) : undefined })); await this.client.api.guilds(this.guild.id).channels.patch({ data: channelPositions }); return this.client.actions.GuildChannelsPositionUpdate.handle({ guild_id: this.guild.id, channels: channelPositions }).guild; } async delete(channel, reason) { const id = this.resolveId(channel); if (!id) throw new TypeError2("INVALID_TYPE", "channel", "GuildChannelResolvable"); await this.client.api.channels(id).delete({ reason }); } } module.exports = GuildChannelManager; }); // node_modules/discord.js-selfbot-v13/src/managers/BaseGuildEmojiManager.js var require_BaseGuildEmojiManager = __commonJS((exports, module) => { var CachedManager = require_CachedManager(); var GuildEmoji = require_GuildEmoji(); var ReactionEmoji = require_ReactionEmoji(); var { parseEmoji } = require_Util(); class BaseGuildEmojiManager extends CachedManager { constructor(client, iterable) { super(client, GuildEmoji, iterable); } resolve(emoji) { if (emoji instanceof ReactionEmoji) return this.cache.get(emoji.id) ?? null; return super.resolve(emoji); } resolveId(emoji) { if (emoji instanceof ReactionEmoji) return emoji.id; return super.resolveId(emoji); } resolveIdentifier(emoji) { const emojiResolvable = this.resolve(emoji); if (emojiResolvable) return emojiResolvable.identifier; if (emoji instanceof ReactionEmoji) return emoji.identifier; if (typeof emoji === "string") { const res = parseEmoji(emoji); if (res?.name.length) { emoji = `${res.animated ? "a:" : ""}${res.name}${res.id ? `:${res.id}` : ""}`; } if (!emoji.includes("%")) return encodeURIComponent(emoji); return emoji; } return null; } } module.exports = BaseGuildEmojiManager; }); // node_modules/discord.js-selfbot-v13/src/managers/GuildEmojiManager.js var require_GuildEmojiManager = __commonJS((exports, module) => { var { Collection } = require_dist(); var BaseGuildEmojiManager = require_BaseGuildEmojiManager(); var { Error: Error2, TypeError: TypeError2 } = require_errors(); var DataResolver = require_DataResolver(); var Permissions = require_Permissions(); class GuildEmojiManager extends BaseGuildEmojiManager { constructor(guild, iterable) { super(guild.client, iterable); this.guild = guild; } _add(data, cache) { return super._add(data, cache, { extras: [this.guild] }); } async create(attachment, name, { roles, reason } = {}) { attachment = await DataResolver.resolveImage(attachment); if (!attachment) throw new TypeError2("REQ_RESOURCE_TYPE"); const data = { image: attachment, name }; if (roles) { if (!Array.isArray(roles) && !(roles instanceof Collection)) { throw new TypeError2("INVALID_TYPE", "options.roles", "Array or Collection of Roles or Snowflakes", true); } data.roles = []; for (const role of roles.values()) { const resolvedRole = this.guild.roles.resolveId(role); if (!resolvedRole) throw new TypeError2("INVALID_ELEMENT", "Array or Collection", "options.roles", role); data.roles.push(resolvedRole); } } const emoji = await this.client.api.guilds(this.guild.id).emojis.post({ data, reason }); return this.client.actions.GuildEmojiCreate.handle(this.guild, emoji).emoji; } async fetch(id, { cache = true, force = false } = {}) { if (id) { if (!force) { const existing = this.cache.get(id); if (existing) return existing; } const emoji = await this.client.api.guilds(this.guild.id).emojis(id).get(); return this._add(emoji, cache); } const data = await this.client.api.guilds(this.guild.id).emojis.get(); const emojis = new Collection; for (const emoji of data) emojis.set(emoji.id, this._add(emoji, cache)); return emojis; } async delete(emoji, reason) { const id = this.resolveId(emoji); if (!id) throw new TypeError2("INVALID_TYPE", "emoji", "EmojiResolvable", true); await this.client.api.guilds(this.guild.id).emojis(id).delete({ reason }); } async edit(emoji, data, reason) { const id = this.resolveId(emoji); if (!id) throw new TypeError2("INVALID_TYPE", "emoji", "EmojiResolvable", true); const roles = data.roles?.map((r) => this.guild.roles.resolveId(r)); const newData = await this.client.api.guilds(this.guild.id).emojis(id).patch({ data: { name: data.name, roles }, reason }); const existing = this.cache.get(id); if (existing) { const clone = existing._clone(); clone._patch(newData); return clone; } return this._add(newData); } async fetchAuthor(emoji) { emoji = this.resolve(emoji); if (!emoji) throw new TypeError2("INVALID_TYPE", "emoji", "EmojiResolvable", true); if (emoji.managed) { throw new Error2("EMOJI_MANAGED"); } const { me } = this.guild.members; if (!me) throw new Error2("GUILD_UNCACHED_ME"); if (!me.permissions.has(Permissions.FLAGS.MANAGE_EMOJIS_AND_STICKERS)) { throw new Error2("MISSING_MANAGE_EMOJIS_AND_STICKERS_PERMISSION", this.guild); } const data = await this.client.api.guilds(this.guild.id).emojis(emoji.id).get(); emoji._patch(data); return emoji.author; } } module.exports = GuildEmojiManager; }); // node_modules/discord.js-selfbot-v13/src/managers/GuildInviteManager.js var require_GuildInviteManager = __commonJS((exports, module) => { var { Collection } = require_dist(); var CachedManager = require_CachedManager(); var { Error: Error2 } = require_errors(); var Invite = require_Invite(); var DataResolver = require_DataResolver(); class GuildInviteManager extends CachedManager { constructor(guild, iterable) { super(guild.client, Invite, iterable); this.guild = guild; } _add(data, cache) { return super._add(data, cache, { id: data.code, extras: [this.guild] }); } async fetch(options) { if (!options) return this._fetchMany(); if (typeof options === "string") { const code = DataResolver.resolveInviteCode(options); if (!code) throw new Error2("INVITE_RESOLVE_CODE"); return this._fetchSingle({ code, cache: true }); } if (!options.code) { if (options.channelId) { const id = this.guild.channels.resolveId(options.channelId); if (!id) throw new Error2("GUILD_CHANNEL_RESOLVE"); return this._fetchChannelMany(id, options.cache); } if ("cache" in options) return this._fetchMany(options.cache); throw new Error2("INVITE_RESOLVE_CODE"); } return this._fetchSingle({ ...options, code: DataResolver.resolveInviteCode(options.code) }); } async _fetchSingle({ code, cache, force = false }) { if (!force) { const existing = this.cache.get(code); if (existing) return existing; } const invites = await this._fetchMany(cache); const invite = invites.get(code); if (!invite) throw new Error2("INVITE_NOT_FOUND"); return invite; } async _fetchMany(cache) { const data = await this.client.api.guilds(this.guild.id).invites.get(); return data.reduce((col, invite) => col.set(invite.code, this._add(invite, cache)), new Collection); } async _fetchChannelMany(channelId, cache) { const data = await this.client.api.channels(channelId).invites.get(); return data.reduce((col, invite) => col.set(invite.code, this._add(invite, cache)), new Collection); } async create(channel, { temporary = false, maxAge = 86400, maxUses = 0, unique, targetUser, targetApplication, targetType, reason } = {}) { const id = this.guild.channels.resolveId(channel); if (!id) throw new Error2("GUILD_CHANNEL_RESOLVE"); const invite = await this.client.api.channels(id).invites.post({ data: { temporary, max_age: maxAge, max_uses: maxUses, unique, target_user_id: this.client.users.resolveId(targetUser), target_application_id: targetApplication?.id ?? targetApplication?.applicationId ?? targetApplication, target_type: targetType }, reason }); return new Invite(this.client, invite); } async delete(invite, reason) { const code = DataResolver.resolveInviteCode(invite); await this.client.api.invites(code).delete({ reason }); } } module.exports = GuildInviteManager; }); // node_modules/discord.js-selfbot-v13/src/managers/GuildMemberManager.js var require_GuildMemberManager = __commonJS((exports, module) => { var { Buffer: Buffer2 } = import.meta.require("buffer"); var { setTimeout: setTimeout2 } = import.meta.require("timers"); var { Collection } = require_dist(); var CachedManager = require_CachedManager(); var { Error: Error2, TypeError: TypeError2, RangeError: RangeError2 } = require_errors(); var BaseGuildVoiceChannel = require_BaseGuildVoiceChannel(); var { GuildMember } = require_GuildMember(); var { Role } = require_Role(); var { Events, Opcodes } = require_Constants(); var { PartialTypes } = require_Constants(); var DataResolver = require_DataResolver(); var GuildMemberFlags = require_GuildMemberFlags(); var SnowflakeUtil = require_SnowflakeUtil(); class GuildMemberManager extends CachedManager { constructor(guild, iterable) { super(guild.client, GuildMember, iterable); this.guild = guild; } _add(data, cache = true) { return super._add(data, cache, { id: data.user.id, extras: [this.guild] }); } resolve(member) { const memberResolvable = super.resolve(member); if (memberResolvable) return memberResolvable; const userId = this.client.users.resolveId(member); if (userId) return this.cache.get(userId) ?? null; return null; } resolveId(member) { const memberResolvable = super.resolveId(member); if (memberResolvable) return memberResolvable; const userId = this.client.users.resolveId(member); return this.cache.has(userId) ? userId : null; } async add(user, options) { const userId = this.client.users.resolveId(user); if (!userId) throw new TypeError2("INVALID_TYPE", "user", "UserResolvable"); if (!options.force) { const cachedUser = this.cache.get(userId); if (cachedUser) return cachedUser; } const resolvedOptions = { access_token: options.accessToken, nick: options.nick, mute: options.mute, deaf: options.deaf }; if (options.roles) { if (!Array.isArray(options.roles) && !(options.roles instanceof Collection)) { throw new TypeError2("INVALID_TYPE", "options.roles", "Array or Collection of Roles or Snowflakes", true); } const resolvedRoles = []; for (const role of options.roles.values()) { const resolvedRole = this.guild.roles.resolveId(role); if (!resolvedRole) throw new TypeError2("INVALID_ELEMENT", "Array or Collection", "options.roles", role); resolvedRoles.push(resolvedRole); } resolvedOptions.roles = resolvedRoles; } const data = await this.client.api.guilds(this.guild.id).members(userId).put({ data: resolvedOptions }); return data instanceof Buffer2 ? options.fetchWhenExisting === false ? null : this.fetch(userId) : this._add(data); } get me() { return this.cache.get(this.client.user.id) ?? (this.client.options.partials.includes(PartialTypes.GUILD_MEMBER) ? this._add({ user: { id: this.client.user.id } }, true) : null); } fetch(options) { if (!options) { if (this.me.permissions.has("KICK_MEMBERS") || this.me.permissions.has("BAN_MEMBERS") || this.me.permissions.has("MANAGE_ROLES")) { return this._fetchMany(); } else { return this.fetchByMemberSafety(); } } const user = this.client.users.resolveId(options); if (user) return this._fetchSingle({ user, cache: true }); if (options.user) { if (Array.isArray(options.user)) { options.user = options.user.map((u) => this.client.users.resolveId(u)); return this._fetchMany(options); } else { options.user = this.client.users.resolveId(options.user); } if (!options.limit && !options.withPresences) return this._fetchSingle(options); } return this._fetchMany(options); } fetchMe(options) { return this.fetch({ ...options, user: this.client.user.id }); } async search({ query, limit = 1, cache = true } = {}) { const data = await this.client.api.guilds(this.guild.id).members.search.get({ query: { query, limit } }); return data.reduce((col, member) => col.set(member.user.id, this._add(member, cache)), new Collection); } async edit(user, data, reason) { const id = this.client.users.resolveId(user); if (!id) throw new TypeError2("INVALID_TYPE", "user", "UserResolvable"); const _data = { ...data }; if (_data.channel) { _data.channel = this.guild.channels.resolve(_data.channel); if (!(_data.channel instanceof BaseGuildVoiceChannel)) { throw new Error2("GUILD_VOICE_CHANNEL_RESOLVE"); } _data.channel_id = _data.channel.id; _data.channel = undefined; } else if (_data.channel === null) { _data.channel_id = null; _data.channel = undefined; } _data.roles &&= _data.roles.map((role) => role instanceof Role ? role.id : role); _data.communication_disabled_until = _data.communicationDisabledUntil && new Date(_data.communicationDisabledUntil).toISOString(); _data.flags = _data.flags && GuildMemberFlags.resolve(_data.flags); if (typeof _data.avatar !== "undefined") { _data.avatar = await DataResolver.resolveImage(_data.avatar); } if (typeof _data.banner !== "undefined") { _data.banner = await DataResolver.resolveImage(_data.banner); } let endpoint = this.client.api.guilds(this.guild.id); if (id === this.client.user.id) { const keys = Object.keys(data); if (keys.length === 1 && ["nick", "avatar", "banner", "bio"].includes(keys[0])) { endpoint = endpoint.members("@me"); } else { endpoint = endpoint.members(id); } } else { endpoint = endpoint.members(id); } const d = await endpoint.patch({ data: _data, reason }); const clone = this.cache.get(id)?._clone(); clone?._patch(d); return clone ?? this._add(d, false); } async prune({ days = 7, dry = false, count: compute_prune_count = true, roles = [], reason } = {}) { if (typeof days !== "number") throw new TypeError2("PRUNE_DAYS_TYPE"); const query = { days }; const resolvedRoles = []; for (const role of roles) { const resolvedRole = this.guild.roles.resolveId(role); if (!resolvedRole) { throw new TypeError2("INVALID_ELEMENT", "Array", "options.roles", role); } resolvedRoles.push(resolvedRole); } if (resolvedRoles.length) { query.include_roles = dry ? resolvedRoles.join(",") : resolvedRoles; } const endpoint = this.client.api.guilds(this.guild.id).prune; const { pruned } = await (dry ? endpoint.get({ query, reason }) : endpoint.post({ data: { ...query, compute_prune_count }, reason })); return pruned; } async kick(user, reason) { const id = this.client.users.resolveId(user); if (!id) throw new TypeError2("INVALID_TYPE", "user", "UserResolvable"); await this.client.api.guilds(this.guild.id).members(id).delete({ reason }); return this.resolve(user) ?? this.client.users.resolve(user) ?? id; } ban(user, options) { return this.guild.bans.create(user, options); } unban(user, reason) { return this.guild.bans.remove(user, reason); } async _fetchSingle({ user, cache, force = false }) { if (!force) { const existing = this.cache.get(user); if (existing && !existing.partial) return existing; } const data = await this.client.api.guilds(this.guild.id).members(user).get(); return this._add(data, cache); } async addRole(user, role, reason) { const userId = this.resolveId(user); const roleId = this.guild.roles.resolveId(role); await this.client.api.guilds(this.guild.id).members(userId).roles(roleId).put({ reason }); return this.resolve(user) ?? this.client.users.resolve(user) ?? userId; } async removeRole(user, role, reason) { const userId = this.resolveId(user); const roleId = this.guild.roles.resolveId(role); await this.client.api.guilds(this.guild.id).members(userId).roles(roleId).delete({ reason }); return this.resolve(user) ?? this.client.users.resolve(user) ?? userId; } fetchByMemberSafety(timeout = 15000) { return new Promise((resolve) => { const nonce = SnowflakeUtil.generate(); const fetchedMembers = new Collection; let timeout_ = setTimeout2(() => { this.client.removeListener(Events.GUILD_MEMBERS_CHUNK, handler); resolve(fetchedMembers); }, timeout).unref(); const handler = (members, guild, chunk) => { if (guild.id == this.guild.id && chunk.nonce == nonce) { if (members.size > 0) { for (const member of members.values()) { fetchedMembers.set(member.id, member); } this.client.ws.broadcast({ op: Opcodes.SEARCH_RECENT_MEMBERS, d: { guild_id: this.guild.id, query: "", continuation_token: members.first()?.id, nonce } }); } else { clearTimeout(timeout_); this.client.removeListener(Events.GUILD_MEMBERS_CHUNK, handler); resolve(fetchedMembers); } } }; this.client.on(Events.GUILD_MEMBERS_CHUNK, handler); this.client.ws.broadcast({ op: Opcodes.SEARCH_RECENT_MEMBERS, d: { guild_id: this.guild.id, query: "", continuation_token: null, nonce } }); }); } _fetchMany({ limit = 0, withPresences: presences = true, user: user_ids, query, time = 120000, nonce = SnowflakeUtil.generate() } = {}) { return new Promise((resolve, reject) => { if (!query && !user_ids) query = ""; if (nonce.length > 32) throw new RangeError2("MEMBER_FETCH_NONCE_LENGTH"); this.guild.shard.send({ op: Opcodes.REQUEST_GUILD_MEMBERS, d: { guild_id: this.guild.id, presences, user_ids, query, nonce, limit } }); const fetchedMembers = new Collection; let i = 0; const handler = (members, _, chunk) => { timeout.refresh(); if (chunk.nonce !== nonce) return; i++; for (const member of members.values()) { fetchedMembers.set(member.id, member); } if (members.size < 1000 || limit && fetchedMembers.size >= limit || i === chunk.count) { clearTimeout(timeout); this.client.removeListener(Events.GUILD_MEMBERS_CHUNK, handler); this.client.decrementMaxListeners(); let fetched = fetchedMembers; if (user_ids && !Array.isArray(user_ids) && fetched.size) fetched = fetched.first(); resolve(fetched); } }; const timeout = setTimeout2(() => { this.client.removeListener(Events.GUILD_MEMBERS_CHUNK, handler); this.client.decrementMaxListeners(); reject(new Error2("GUILD_MEMBERS_TIMEOUT")); }, time).unref(); this.client.incrementMaxListeners(); this.client.on(Events.GUILD_MEMBERS_CHUNK, handler); }); } bulkBan(users, options = {}) { return this.guild.bans.bulkCreate(users, options); } } module.exports = GuildMemberManager; }); // node_modules/discord.js-selfbot-v13/src/managers/GuildScheduledEventManager.js var require_GuildScheduledEventManager = __commonJS((exports, module) => { var { Collection } = require_dist(); var CachedManager = require_CachedManager(); var { TypeError: TypeError2, Error: Error2 } = require_errors(); var { GuildScheduledEvent } = require_GuildScheduledEvent(); var { PrivacyLevels, GuildScheduledEventEntityTypes, GuildScheduledEventStatuses } = require_Constants(); var DataResolver = require_DataResolver(); var Util = require_Util(); class GuildScheduledEventManager extends CachedManager { constructor(guild, iterable) { super(guild.client, GuildScheduledEvent, iterable); this.guild = guild; } async create(options) { if (typeof options !== "object") throw new TypeError2("INVALID_TYPE", "options", "object", true); let { privacyLevel, entityType, channel, name, scheduledStartTime, description, scheduledEndTime, entityMetadata, reason, image, recurrenceRule } = options; if (typeof privacyLevel === "string") privacyLevel = PrivacyLevels[privacyLevel]; if (typeof entityType === "string") entityType = GuildScheduledEventEntityTypes[entityType]; let entity_metadata, channel_id; if (entityType === GuildScheduledEventEntityTypes.EXTERNAL) { channel_id = typeof channel === "undefined" ? channel : null; entity_metadata = { location: entityMetadata?.location }; } else { channel_id = this.guild.channels.resolveId(channel); if (!channel_id) throw new Error2("GUILD_VOICE_CHANNEL_RESOLVE"); entity_metadata = typeof entityMetadata === "undefined" ? entityMetadata : null; } const data = await this.client.api.guilds(this.guild.id, "scheduled-events").post({ data: { channel_id, name, privacy_level: privacyLevel, scheduled_start_time: new Date(scheduledStartTime).toISOString(), scheduled_end_time: scheduledEndTime ? new Date(scheduledEndTime).toISOString() : scheduledEndTime, description, image: image && await DataResolver.resolveImage(image), entity_type: entityType, entity_metadata, recurrence_rule: recurrenceRule && Util.transformGuildScheduledEventRecurrenceRule(recurrenceRule) }, reason }); return this._add(data); } async fetch(options = {}) { const id = this.resolveId(options.guildScheduledEvent ?? options); if (id) { if (!options.force) { const existing = this.cache.get(id); if (existing) return existing; } const data2 = await this.client.api.guilds(this.guild.id, "scheduled-events", id).get({ query: { with_user_count: options.withUserCount ?? true } }); return this._add(data2, options.cache); } const data = await this.client.api.guilds(this.guild.id, "scheduled-events").get({ query: { with_user_count: options.withUserCount ?? true } }); return data.reduce((coll, rawGuildScheduledEventData) => coll.set(rawGuildScheduledEventData.id, this._add(rawGuildScheduledEventData, options.cache)), new Collection); } async edit(guildScheduledEvent, options) { const guildScheduledEventId = this.resolveId(guildScheduledEvent); if (!guildScheduledEventId) throw new Error2("GUILD_SCHEDULED_EVENT_RESOLVE"); if (typeof options !== "object") throw new TypeError2("INVALID_TYPE", "options", "object", true); let { privacyLevel, entityType, channel, status, name, scheduledStartTime, description, scheduledEndTime, entityMetadata, reason, image, recurrenceRule } = options; if (typeof privacyLevel === "string") privacyLevel = PrivacyLevels[privacyLevel]; if (typeof entityType === "string") entityType = GuildScheduledEventEntityTypes[entityType]; if (typeof status === "string") status = GuildScheduledEventStatuses[status]; let entity_metadata; if (entityMetadata) { entity_metadata = { location: entityMetadata.location }; } const data = await this.client.api.guilds(this.guild.id, "scheduled-events", guildScheduledEventId).patch({ data: { channel_id: typeof channel === "undefined" ? channel : this.guild.channels.resolveId(channel), name, privacy_level: privacyLevel, scheduled_start_time: scheduledStartTime ? new Date(scheduledStartTime).toISOString() : undefined, scheduled_end_time: scheduledEndTime ? new Date(scheduledEndTime).toISOString() : scheduledEndTime, description, entity_type: entityType, status, image: image && await DataResolver.resolveImage(image), entity_metadata, recurrence_rule: recurrenceRule && Util.transformGuildScheduledEventRecurrenceRule(recurrenceRule) }, reason }); return this._add(data); } async delete(guildScheduledEvent) { const guildScheduledEventId = this.resolveId(guildScheduledEvent); if (!guildScheduledEventId) throw new Error2("GUILD_SCHEDULED_EVENT_RESOLVE"); await this.client.api.guilds(this.guild.id, "scheduled-events", guildScheduledEventId).delete(); } async fetchSubscribers(guildScheduledEvent, options = {}) { const guildScheduledEventId = this.resolveId(guildScheduledEvent); if (!guildScheduledEventId) throw new Error2("GUILD_SCHEDULED_EVENT_RESOLVE"); let { limit, withMember, before, after } = options; const data = await this.client.api.guilds(this.guild.id, "scheduled-events", guildScheduledEventId).users.get({ query: { limit, with_member: withMember, before, after } }); return data.reduce((coll, rawData) => coll.set(rawData.user.id, { guildScheduledEventId: rawData.guild_scheduled_event_id, user: this.client.users._add(rawData.user), member: rawData.member ? this.guild.members._add({ ...rawData.member, user: rawData.user }) : null }), new Collection); } } module.exports = GuildScheduledEventManager; }); // node_modules/discord.js-selfbot-v13/src/managers/GuildSettingManager.js var require_GuildSettingManager = __commonJS((exports, module) => { var BaseManager = require_BaseManager(); class GuildSettingManager extends BaseManager { #rawSetting = {}; constructor(guild) { super(guild.client); this.guildId = guild.id; } get raw() { return this.#rawSetting; } get guild() { return this.client.guilds.cache.get(this.guildId); } _patch(data = {}) { this.#rawSetting = Object.assign(this.#rawSetting, data); this.client.emit("debug", `[SETTING > Guild ${this.guildId}] Sync setting`); if ("suppress_everyone" in data) { this.suppressEveryone = data.suppress_everyone; } if ("suppress_roles" in data) { this.suppressRoles = data.suppress_roles; } if ("mute_scheduled_events" in data) { this.muteScheduledEvents = data.mute_scheduled_events; } if ("message_notifications" in data) { this.messageNotifications = data.message_notifications; } if ("flags" in data) { this.flags = data.flags; } if ("mobile_push" in data) { this.mobilePush = data.mobile_push; } if ("muted" in data) { this.muted = data.muted; } if ("mute_config" in data && data.mute_config !== null) { this.muteConfig = { endTime: new Date(data.mute_config.end_time), selectedTimeWindow: data.mute_config.selected_time_window }; } else { this.muteConfig = null; } if ("hide_muted_channels" in data) { this.hideMutedChannels = data.hide_muted_channels; } if ("channel_overrides" in data) { this.channelOverrides = data.channel_overrides; } if ("notify_highlights" in data) { this.notifyHighlights = data.notify_highlights; } if ("version" in data) { this.version = data.version; } } async edit(data) { const data_ = await this.client.api.users("@me").settings.patch(data); this._patch(data_); return this; } } module.exports = GuildSettingManager; }); // node_modules/discord.js-selfbot-v13/src/managers/GuildStickerManager.js var require_GuildStickerManager = __commonJS((exports, module) => { var { Collection } = require_dist(); var CachedManager = require_CachedManager(); var { TypeError: TypeError2 } = require_errors(); var MessagePayload = require_MessagePayload(); var { Sticker } = require_Sticker(); class GuildStickerManager extends CachedManager { constructor(guild, iterable) { super(guild.client, Sticker, iterable); this.guild = guild; } _add(data, cache) { return super._add(data, cache, { extras: [this.guild] }); } async create(file, name, tags, { description, reason } = {}) { const resolvedFile = await MessagePayload.resolveFile(file); if (!resolvedFile) throw new TypeError2("REQ_RESOURCE_TYPE"); file = { ...resolvedFile, key: "file" }; const data = { name, tags, description: description ?? "" }; const sticker = await this.client.api.guilds(this.guild.id).stickers.post({ data, files: [file], reason, dontUsePayloadJSON: true }); return this.client.actions.GuildStickerCreate.handle(this.guild, sticker).sticker; } async edit(sticker, data, reason) { const stickerId = this.resolveId(sticker); if (!stickerId) throw new TypeError2("INVALID_TYPE", "sticker", "StickerResolvable"); const d = await this.client.api.guilds(this.guild.id).stickers(stickerId).patch({ data, reason }); const existing = this.cache.get(stickerId); if (existing) { const clone = existing._clone(); clone._patch(d); return clone; } return this._add(d); } async delete(sticker, reason) { sticker = this.resolveId(sticker); if (!sticker) throw new TypeError2("INVALID_TYPE", "sticker", "StickerResolvable"); await this.client.api.guilds(this.guild.id).stickers(sticker).delete({ reason }); } async fetch(id, { cache = true, force = false } = {}) { if (id) { if (!force) { const existing = this.cache.get(id); if (existing) return existing; } const sticker = await this.client.api.guilds(this.guild.id).stickers(id).get(); return this._add(sticker, cache); } const data = await this.client.api.guilds(this.guild.id).stickers.get(); return new Collection(data.map((sticker) => [sticker.id, this._add(sticker, cache)])); } async fetchUser(sticker) { sticker = this.resolve(sticker); if (!sticker) throw new TypeError2("INVALID_TYPE", "sticker", "StickerResolvable"); const data = await this.client.api.guilds(this.guild.id).stickers(sticker.id).get(); sticker._patch(data); return sticker.user; } } module.exports = GuildStickerManager; }); // node_modules/discord.js-selfbot-v13/src/structures/Presence.js var require_Presence = __commonJS((exports) => { var { randomUUID } = import.meta.require("crypto"); var Base = require_Base(); var ActivityFlags = require_ActivityFlags(); var { ActivityTypes } = require_Constants(); var Util = require_Util(); class Presence extends Base { constructor(client, data = {}) { super(client); this.userId = data.user.id; this.guild = data.guild ?? null; this._patch(data); } get user() { return this.client.users.resolve(this.userId); } get member() { return this.guild.members.resolve(this.userId); } _patch(data) { if ("status" in data) { this.status = data.status; } else { this.status ??= "offline"; } if ("activities" in data) { this.activities = data.activities.map((activity) => { if (this.userId == this.client.user.id) { if ([ActivityTypes.CUSTOM, "CUSTOM"].includes(activity.type)) { return new CustomStatus(this.client, activity); } else if (activity.id == "spotify:1") { return new SpotifyRPC(this.client, activity); } else { return new RichPresence(this.client, activity); } } else { return new Activity(this, activity); } }); } else { this.activities ??= []; } if ("client_status" in data) { this.clientStatus = data.client_status; } else { this.clientStatus ??= null; } if ("last_modified" in data) { this.lastModified = data.last_modified; } if ("afk" in data) { this.afk = data.afk; } else { this.afk ??= false; } if ("since" in data) { this.since = data.since; } else { this.since ??= 0; } return this; } _clone() { const clone = Object.assign(Object.create(this), this); clone.activities = this.activities.map((activity) => activity._clone()); return clone; } equals(presence) { return this === presence || presence && this.status === presence.status && this.clientStatus?.web === presence.clientStatus?.web && this.clientStatus?.mobile === presence.clientStatus?.mobile && this.clientStatus?.desktop === presence.clientStatus?.desktop && this.activities.length === presence.activities.length && this.activities.every((activity, index) => activity.equals(presence.activities[index])); } toJSON() { return Util.flatten(this); } } class Activity { constructor(presence, data) { if (!(presence instanceof Presence)) { throw new Error("Class constructor Activity cannot be invoked without 'presence'"); } Object.defineProperty(this, "presence", { value: presence }); this._patch(data); } _patch(data = {}) { if ("id" in data) { this.id = data.id; } if ("name" in data) { this.name = data.name; } if ("type" in data) { this.type = typeof data.type === "number" ? ActivityTypes[data.type] : data.type; } if ("url" in data) { this.url = data.url; } else { this.url = null; } if ("created_at" in data || "createdTimestamp" in data) { this.createdTimestamp = data.created_at || data.createdTimestamp; } if ("session_id" in data) { this.sessionId = data.session_id; } else { this.sessionId = this.presence.client?.sessionId; } if ("platform" in data) { this.platform = data.platform; } else { this.platform = null; } if ("timestamps" in data && data.timestamps) { this.timestamps = { start: data.timestamps.start ? new Date(data.timestamps.start).getTime() : null, end: data.timestamps.end ? new Date(data.timestamps.end).getTime() : null }; } else { this.timestamps = null; } if ("application_id" in data || "applicationId" in data) { this.applicationId = data.application_id || data.applicationId; } else { this.applicationId = null; } if ("details" in data) { this.details = data.details; } else { this.details = null; } if ("state" in data) { this.state = data.state; } else { this.state = null; } if ("sync_id" in data || "syncId" in data) { this.syncId = data.sync_id || data.syncId; } else { this.syncId = null; } if ("flags" in data) { this.flags = new ActivityFlags(data.flags).freeze(); } else { this.flags = new ActivityFlags().freeze(); } if ("buttons" in data) { this.buttons = data.buttons; } else { this.buttons = []; } if ("emoji" in data && data.emoji) { this.emoji = Util.resolvePartialEmoji(data.emoji); } else { this.emoji = null; } if ("party" in data) { this.party = data.party; } else { this.party = null; } this.assets = new RichPresenceAssets(this, data.assets); } equals(activity) { return this === activity || activity && this.name === activity.name && this.type === activity.type && this.url === activity.url && this.state === activity.state && this.details === activity.details && this.emoji?.id === activity.emoji?.id && this.emoji?.name === activity.emoji?.name; } get createdAt() { return new Date(this.createdTimestamp); } toString() { return this.name; } _clone() { return Object.assign(Object.create(this), this); } toJSON(...props) { return Util.clearNullOrUndefinedObject({ ...Util.flatten(this, ...props), type: typeof this.type === "number" ? this.type : ActivityTypes[this.type] }); } } class RichPresenceAssets { constructor(activity, assets) { Object.defineProperty(this, "activity", { value: activity }); this._patch(assets); } _patch(assets = {}) { if ("large_text" in assets || "largeText" in assets) { this.largeText = assets.large_text || assets.largeText; } else { this.largeText = null; } if ("small_text" in assets || "smallText" in assets) { this.smallText = assets.small_text || assets.smallText; } else { this.smallText = null; } if ("large_image" in assets || "largeImage" in assets) { this.largeImage = assets.large_image || assets.largeImage; } else { this.largeImage = null; } if ("small_image" in assets || "smallImage" in assets) { this.smallImage = assets.small_image || assets.smallImage; } else { this.smallImage = null; } } smallImageURL({ format, size } = {}) { if (!this.smallImage) return null; if (this.smallImage.includes(":")) { const [platform, id] = this.smallImage.split(":"); switch (platform) { case "mp": return `https://media.discordapp.net/${id}`; case "spotify": return `https://i.scdn.co/image/${id}`; case "youtube": return `https://i.ytimg.com/vi/${id}/hqdefault_live.jpg`; case "twitch": return `https://static-cdn.jtvnw.net/previews-ttv/live_user_${id}.png`; default: return null; } } return this.activity.presence.client.rest.cdn.AppAsset(this.activity.applicationId, this.smallImage, { format, size }); } largeImageURL({ format, size } = {}) { if (!this.largeImage) return null; if (this.largeImage.includes(":")) { const [platform, id] = this.largeImage.split(":"); switch (platform) { case "mp": return `https://media.discordapp.net/${id}`; case "spotify": return `https://i.scdn.co/image/${id}`; case "youtube": return `https://i.ytimg.com/vi/${id}/hqdefault_live.jpg`; case "twitch": return `https://static-cdn.jtvnw.net/previews-ttv/live_user_${id}.png`; default: return null; } } return this.activity.presence.client.rest.cdn.AppAsset(this.activity.applicationId, this.largeImage, { format, size }); } static parseImage(image) { if (typeof image != "string") { image = null; } else if (URL.canParse(image) && ["http:", "https:"].includes(new URL(image).protocol)) { image = image.replace("https://cdn.discordapp.com/", "mp:").replace("http://cdn.discordapp.com/", "mp:").replace("https://media.discordapp.net/", "mp:").replace("http://media.discordapp.net/", "mp:"); if (!image.startsWith("mp:")) { throw new Error("INVALID_URL"); } } else if (/^[0-9]{17,19}$/.test(image)) { } else if (["mp:", "youtube:", "spotify:", "twitch:"].some((v) => image.startsWith(v))) { } else if (image.startsWith("external/")) { image = `mp:${image}`; } return image; } toJSON() { if (!this.largeImage && !this.largeText && !this.smallImage && !this.smallText) return null; return { large_image: RichPresenceAssets.parseImage(this.largeImage), large_text: this.largeText, small_image: RichPresenceAssets.parseImage(this.smallImage), small_text: this.smallText }; } setLargeImage(image) { image = RichPresenceAssets.parseImage(image); this.largeImage = image; return this; } setSmallImage(image) { image = RichPresenceAssets.parseImage(image); this.smallImage = image; return this; } setLargeText(text) { this.largeText = text; return this; } setSmallText(text) { this.smallText = text; return this; } } class CustomStatus extends Activity { constructor(client, data = {}) { if (!client) throw new Error("Class constructor CustomStatus cannot be invoked without 'client'"); super("presence" in client ? client.presence : client, { name: " ", type: ActivityTypes.CUSTOM, ...data }); } setEmoji(emoji) { this.emoji = Util.resolvePartialEmoji(emoji); return this; } setState(state) { if (typeof state == "string" && state.length > 128) throw new Error("State must be less than 128 characters"); this.state = state; return this; } toJSON() { if (!this.emoji & !this.state) throw new Error("CustomStatus must have at least one of emoji or state"); return { name: this.name, emoji: this.emoji, type: ActivityTypes.CUSTOM, state: this.state }; } } class RichPresence extends Activity { constructor(client, data = {}) { if (!client) throw new Error("Class constructor RichPresence cannot be invoked without 'client'"); super("presence" in client ? client.presence : client, { type: 0, ...data }); this.setup(data); } setup(data = {}) { this.secrets = "secrets" in data ? data.secrets : {}; this.metadata = "metadata" in data ? data.metadata : {}; } setAssetsLargeImage(image) { this.assets.setLargeImage(image); return this; } setAssetsSmallImage(image) { this.assets.setSmallImage(image); return this; } setAssetsLargeText(text) { this.assets.setLargeText(text); return this; } setAssetsSmallText(text) { this.assets.setSmallText(text); return this; } setName(name) { this.name = name; return this; } setURL(url) { if (typeof url == "string" && !URL.canParse(url)) throw new Error("URL must be a valid URL"); this.url = url; return this; } setType(type) { this.type = typeof type == "number" ? type : ActivityTypes[type]; return this; } setApplicationId(id) { this.applicationId = id; return this; } setState(state) { this.state = state; return this; } setDetails(details) { this.details = details; return this; } setParty(party) { if (typeof party == "object") { if (!party.max || typeof party.max != "number") throw new Error("Party must have max number"); if (!party.current || typeof party.current != "number") throw new Error("Party must have current"); if (party.current > party.max) throw new Error("Party current must be less than max number"); if (!party.id || typeof party.id != "string") party.id = randomUUID(); this.party = { size: [party.current, party.max], id: party.id }; } else { this.party = null; } return this; } setStartTimestamp(timestamp) { if (!this.timestamps) this.timestamps = {}; if (timestamp instanceof Date) timestamp = timestamp.getTime(); this.timestamps.start = timestamp; return this; } setEndTimestamp(timestamp) { if (!this.timestamps) this.timestamps = {}; if (timestamp instanceof Date) timestamp = timestamp.getTime(); this.timestamps.end = timestamp; return this; } setButtons(...button) { if (button.length == 0) { this.buttons = []; delete this.metadata.button_urls; return this; } else if (button.length > 2) { throw new Error("RichPresence can only have up to 2 buttons"); } this.buttons = []; this.metadata.button_urls = []; button.flat(2).forEach((b) => { if (b.name && b.url) { this.buttons.push(b.name); if (!URL.canParse(b.url)) throw new Error("Button url must be a valid url"); this.metadata.button_urls.push(b.url); } else { throw new Error("Button must have name and url"); } }); return this; } setPlatform(platform) { this.platform = platform; return this; } setJoinSecret(join) { this.secrets.join = join; return this; } addButton(name, url) { if (!name || !url) { throw new Error("Button must have name and url"); } if (typeof name !== "string") throw new Error("Button name must be a string"); if (!URL.canParse(url)) throw new Error("Button url must be a valid url"); this.buttons.push(name); if (Array.isArray(this.metadata.button_urls)) this.metadata.button_urls.push(url); else this.metadata.button_urls = [url]; return this; } toJSON(...props) { return super.toJSON({ applicationId: "application_id", sessionId: "session_id", syncId: "sync_id", createdTimestamp: "created_at" }, ...props); } static async getExternal(client, applicationId, ...images) { if (!client || !client.token || !client.api) throw new Error("Client must be set"); if (!/^[0-9]{17,19}$/.test(applicationId)) { throw new Error("Application id must be a Discord Snowflake"); } if (images.length > 2) { throw new Error("RichPresence can only have up to 2 external images"); } if (images.some((image) => !URL.canParse(image))) { throw new Error("Each image must be a valid URL."); } const res = await client.api.applications[applicationId]["external-assets"].post({ data: { urls: images } }); return res; } toString() { return this.name; } _clone() { return Object.assign(Object.create(this), this); } } class SpotifyRPC extends RichPresence { constructor(client, options = {}) { if (!client) throw new Error("Class constructor SpotifyRPC cannot be invoked without 'client'"); super(client, { name: "Spotify", type: ActivityTypes.LISTENING, party: { id: `spotify:${client.user.id}` }, id: "spotify:1", flags: 48, ...options }); this.setup(options); } setup(options) { this.metadata = { album_id: options.metadata?.album_id || null, artist_ids: options.metadata?.artist_ids || [], context_uri: options.metadata?.context_uri || null }; } setSongId(id) { this.syncId = id; return this; } addArtistId(id) { if (!this.metadata.artist_ids) this.metadata.artist_ids = []; this.metadata.artist_ids.push(id); return this; } setArtistIds(...ids) { if (!ids?.length) { this.metadata.artist_ids = []; return this; } if (!this.metadata.artist_ids) this.metadata.artist_ids = []; ids.flat(2).forEach((id) => this.metadata.artist_ids.push(id)); return this; } setAlbumId(id) { this.metadata.album_id = id; this.metadata.context_uri = `spotify:album:${id}`; return this; } toJSON() { return super.toJSON({ id: false, emoji: false, platform: false, buttons: false }); } } exports.Presence = Presence; exports.Activity = Activity; exports.RichPresenceAssets = RichPresenceAssets; exports.CustomStatus = CustomStatus; exports.RichPresence = RichPresence; exports.SpotifyRPC = SpotifyRPC; }); // node_modules/discord.js-selfbot-v13/src/managers/PresenceManager.js var require_PresenceManager = __commonJS((exports, module) => { var CachedManager = require_CachedManager(); var { Presence } = require_Presence(); class PresenceManager extends CachedManager { constructor(client, iterable) { super(client, Presence, iterable); } _add(data, cache) { return super._add(data, cache, { id: data.user.id }); } resolve(presence) { const presenceResolvable = super.resolve(presence); if (presenceResolvable) return presenceResolvable; const userId = this.client.users.resolveId(presence); return this.cache.get(userId) ?? null; } resolveId(presence) { const presenceResolvable = super.resolveId(presence); if (presenceResolvable) return presenceResolvable; const userId = this.client.users.resolveId(presence); return this.cache.has(userId) ? userId : null; } async fetch() { const data = await this.client.api.presences.get(); data.presences.forEach((presence) => { this._add(presence, true); }); return this.cache; } } module.exports = PresenceManager; }); // node_modules/discord.js-selfbot-v13/src/managers/RoleManager.js var require_RoleManager = __commonJS((exports, module) => { var process2 = import.meta.require("process"); var { Collection } = require_dist(); var CachedManager = require_CachedManager(); var { TypeError: TypeError2 } = require_errors(); var { Role } = require_Role(); var DataResolver = require_DataResolver(); var Permissions = require_Permissions(); var { resolveColor } = require_Util(); var Util = require_Util(); var cacheWarningEmitted = false; var deprecationEmittedForCreate = false; var deprecationEmittedForEdit = false; class RoleManager extends CachedManager { constructor(guild, iterable) { super(guild.client, Role, iterable); if (!cacheWarningEmitted && this._cache.constructor.name !== "Collection") { cacheWarningEmitted = true; process2.emitWarning(`Overriding the cache handling for ${this.constructor.name} is unsupported and breaks functionality.`, "UnsupportedCacheOverwriteWarning"); } this.guild = guild; } _add(data, cache) { return super._add(data, cache, { extras: [this.guild] }); } async fetch(id, { cache = true, force = false } = {}) { if (id && !force) { const existing = this.cache.get(id); if (existing) return existing; } const data = await this.client.api.guilds(this.guild.id).roles.get(); const roles = new Collection; for (const role of data) roles.set(role.id, this._add(role, cache)); return id ? roles.get(id) ?? null : roles; } async fetchMemberCounts() { const data = await this.client.api.guilds(this.guild.id).roles("member-counts").get(); return data; } async fetchMemberIds(role) { const id = this.resolveId(role); if (!id) throw new TypeError2("INVALID_TYPE", "role", "RoleResolvable"); const data = await this.client.api.guilds(this.guild.id).roles(id, "member-ids").get(); return data; } async create(options = {}) { let { permissions, icon } = options; const { name, color, hoist, position, mentionable, reason, unicodeEmoji } = options; if (typeof permissions !== "undefined") permissions = new Permissions(permissions); if (icon) { const guildEmojiURL = this.guild.emojis.resolve(icon)?.url; icon = guildEmojiURL ? await DataResolver.resolveImage(guildEmojiURL) : await DataResolver.resolveImage(icon); if (typeof icon !== "string") icon = undefined; } let colors = options.colors && { primary_color: resolveColor(options.colors.primaryColor), secondary_color: options.colors.secondaryColor && resolveColor(options.colors.secondaryColor), tertiary_color: options.colors.tertiaryColor && resolveColor(options.colors.tertiaryColor) }; if (color !== undefined) { if (!deprecationEmittedForCreate) { process2.emitWarning(`Passing "color" to RoleManager#create() is deprecated. Use "colors" instead.`); } deprecationEmittedForCreate = true; colors = { primary_color: resolveColor(color), secondary_color: null, tertiary_color: null }; } const data = await this.client.api.guilds(this.guild.id).roles.post({ data: { name, colors, hoist, permissions, mentionable, icon, unicode_emoji: unicodeEmoji }, reason }); const { role } = this.client.actions.GuildRoleCreate.handle({ guild_id: this.guild.id, role: data }); if (position) return this.setPosition(role, position, { reason }); return role; } async edit(role, data, reason) { role = this.resolve(role); if (!role) throw new TypeError2("INVALID_TYPE", "role", "RoleResolvable"); if (typeof data.position === "number") await this.setPosition(role, data.position, { reason }); let icon = data.icon; if (icon) { const guildEmojiURL = this.guild.emojis.resolve(icon)?.url; icon = guildEmojiURL ? await DataResolver.resolveImage(guildEmojiURL) : await DataResolver.resolveImage(icon); if (typeof icon !== "string") icon = undefined; } let colors = data.colors && { primary_color: resolveColor(data.colors.primaryColor), secondary_color: data.colors.secondaryColor && resolveColor(data.colors.secondaryColor), tertiary_color: data.colors.tertiaryColor && resolveColor(data.colors.tertiaryColor) }; if (data.color !== undefined) { if (!deprecationEmittedForEdit) { process2.emitWarning(`Passing "color" to RoleManager#edit() is deprecated. Use "colors" instead.`); } deprecationEmittedForEdit = true; colors = { primary_color: resolveColor(data.color), secondary_color: null, tertiary_color: null }; } const _data = { name: data.name, colors, hoist: data.hoist, permissions: typeof data.permissions === "undefined" ? undefined : new Permissions(data.permissions), mentionable: data.mentionable, icon, unicode_emoji: data.unicodeEmoji }; const d = await this.client.api.guilds(this.guild.id).roles(role.id).patch({ data: _data, reason }); const clone = role._clone(); clone._patch(d); return clone; } async delete(role, reason) { const id = this.resolveId(role); await this.client.api.guilds[this.guild.id].roles[id].delete({ reason }); this.client.actions.GuildRoleDelete.handle({ guild_id: this.guild.id, role_id: id }); } async setPosition(role, position, { relative, reason } = {}) { role = this.resolve(role); if (!role) throw new TypeError2("INVALID_TYPE", "role", "RoleResolvable"); const updatedRoles = await Util.setPosition(role, position, relative, this.guild._sortedRoles(), this.client.api.guilds(this.guild.id).roles, reason); this.client.actions.GuildRolesPositionUpdate.handle({ guild_id: this.guild.id, roles: updatedRoles }); return role; } async setPositions(rolePositions) { rolePositions = rolePositions.map((o) => ({ id: this.resolveId(o.role), position: o.position })); await this.client.api.guilds(this.guild.id).roles.patch({ data: rolePositions }); return this.client.actions.GuildRolesPositionUpdate.handle({ guild_id: this.guild.id, roles: rolePositions }).guild; } comparePositions(role1, role2) { const resolvedRole1 = this.resolve(role1); const resolvedRole2 = this.resolve(role2); if (!resolvedRole1 || !resolvedRole2) throw new TypeError2("INVALID_TYPE", "role", "Role nor a Snowflake"); const role1Position = resolvedRole1.position; const role2Position = resolvedRole2.position; if (role1Position === role2Position) { return Number(BigInt(resolvedRole2.id) - BigInt(resolvedRole1.id)); } return role1Position - role2Position; } botRoleFor(user) { const userId = this.client.users.resolveId(user); if (!userId) return null; return this.cache.find((role) => role.tags?.botId === userId) ?? null; } get everyone() { return this.cache.get(this.guild.id); } get premiumSubscriberRole() { return this.cache.find((role) => role.tags?.premiumSubscriberRole) ?? null; } get highest() { return this.cache.reduce((prev, role) => role.comparePositionTo(prev) > 0 ? role : prev, this.cache.first()); } } module.exports = RoleManager; }); // node_modules/discord.js-selfbot-v13/src/managers/StageInstanceManager.js var require_StageInstanceManager = __commonJS((exports, module) => { var CachedManager = require_CachedManager(); var { TypeError: TypeError2, Error: Error2 } = require_errors(); var { StageInstance } = require_StageInstance(); var { PrivacyLevels } = require_Constants(); class StageInstanceManager extends CachedManager { constructor(guild, iterable) { super(guild.client, StageInstance, iterable); this.guild = guild; } async create(channel, options) { const channelId = this.guild.channels.resolveId(channel); if (!channelId) throw new Error2("STAGE_CHANNEL_RESOLVE"); if (typeof options !== "object") throw new TypeError2("INVALID_TYPE", "options", "object", true); let { guildScheduledEvent, topic, privacyLevel, sendStartNotification } = options; privacyLevel &&= typeof privacyLevel === "number" ? privacyLevel : PrivacyLevels[privacyLevel]; const guildScheduledEventId = guildScheduledEvent && this.resolveId(guildScheduledEvent); const data = await this.client.api["stage-instances"].post({ data: { channel_id: channelId, topic, privacy_level: privacyLevel, send_start_notification: sendStartNotification, guild_scheduled_event_id: guildScheduledEventId } }); return this._add(data); } async fetch(channel, { cache = true, force = false } = {}) { const channelId = this.guild.channels.resolveId(channel); if (!channelId) throw new Error2("STAGE_CHANNEL_RESOLVE"); if (!force) { const existing = this.cache.find((stageInstance) => stageInstance.channelId === channelId); if (existing) return existing; } const data = await this.client.api("stage-instances", channelId).get(); return this._add(data, cache); } async edit(channel, options) { if (typeof options !== "object") throw new TypeError2("INVALID_TYPE", "options", "object", true); const channelId = this.guild.channels.resolveId(channel); if (!channelId) throw new Error2("STAGE_CHANNEL_RESOLVE"); let { topic, privacyLevel } = options; privacyLevel &&= typeof privacyLevel === "number" ? privacyLevel : PrivacyLevels[privacyLevel]; const data = await this.client.api("stage-instances", channelId).patch({ data: { topic, privacy_level: privacyLevel } }); if (this.cache.has(data.id)) { const clone = this.cache.get(data.id)._clone(); clone._patch(data); return clone; } return this._add(data); } async delete(channel) { const channelId = this.guild.channels.resolveId(channel); if (!channelId) throw new Error2("STAGE_CHANNEL_RESOLVE"); await this.client.api("stage-instances", channelId).delete(); } } module.exports = StageInstanceManager; }); // node_modules/discord.js-selfbot-v13/src/managers/VoiceStateManager.js var require_VoiceStateManager = __commonJS((exports, module) => { var CachedManager = require_CachedManager(); var VoiceState = require_VoiceState(); class VoiceStateManager extends CachedManager { constructor(guild, iterable) { super(guild.client, VoiceState, iterable); this.guild = guild; } _add(data, cache = true) { const existing = this.cache.get(data.user_id); if (existing) return existing._patch(data); const entry = new this.holds(this.guild, data); if (cache) this.cache.set(data.user_id, entry); return entry; } async fetch(member, { cache = true, force = false } = {}) { if (!this.guild?.id) throw new Error("Guild is not defined"); const id = member === "@me" ? member : this.guild.members.resolveId(member); if (!force) { const existing = this.cache.get(id === "@me" ? this.client.user.id : id); if (existing) return existing; } const data = await this.client.api.guilds(this.guild.id)["voice-states"][id].get(); return this._add(data, cache); } } module.exports = VoiceStateManager; }); // node_modules/discord.js-selfbot-v13/src/util/SystemChannelFlags.js var require_SystemChannelFlags = __commonJS((exports, module) => { var BitField = require_BitField(); class SystemChannelFlags extends BitField { } SystemChannelFlags.FLAGS = { SUPPRESS_JOIN_NOTIFICATIONS: 1 << 0, SUPPRESS_PREMIUM_SUBSCRIPTIONS: 1 << 1, SUPPRESS_GUILD_REMINDER_NOTIFICATIONS: 1 << 2, SUPPRESS_JOIN_NOTIFICATION_REPLIES: 1 << 3, SUPPRESS_ROLE_SUBSCRIPTION_PURCHASE_NOTIFICATIONS: 1 << 4, SUPPRESS_ROLE_SUBSCRIPTION_PURCHASE_NOTIFICATION_REPLIES: 1 << 5 }; module.exports = SystemChannelFlags; }); // node_modules/discord.js-selfbot-v13/src/structures/Guild.js var require_Guild = __commonJS((exports) => { var process2 = import.meta.require("process"); var { Collection } = require_dist(); var AnonymousGuild = require_AnonymousGuild(); var GuildAuditLogs = require_GuildAuditLogs(); var GuildPreview = require_GuildPreview(); var GuildTemplate = require_GuildTemplate(); var Integration = require_Integration(); var Webhook = require_Webhook(); var WelcomeScreen = require_WelcomeScreen(); var { Error: Error2 } = require_errors(); var AutoModerationRuleManager = require_AutoModerationRuleManager(); var GuildBanManager = require_GuildBanManager(); var GuildChannelManager = require_GuildChannelManager(); var GuildEmojiManager = require_GuildEmojiManager(); var GuildInviteManager = require_GuildInviteManager(); var GuildMemberManager = require_GuildMemberManager(); var GuildScheduledEventManager = require_GuildScheduledEventManager(); var GuildSettingManager = require_GuildSettingManager(); var GuildStickerManager = require_GuildStickerManager(); var PresenceManager = require_PresenceManager(); var RoleManager = require_RoleManager(); var StageInstanceManager = require_StageInstanceManager(); var VoiceStateManager = require_VoiceStateManager(); var { ChannelTypes, DefaultMessageNotificationLevels, VerificationLevels, ExplicitContentFilterLevels, Status, MFALevels, PremiumTiers } = require_Constants(); var DataResolver = require_DataResolver(); var SystemChannelFlags = require_SystemChannelFlags(); var Util = require_Util(); var deprecationEmittedForSetChannelPositions = false; var deprecationEmittedForSetRolePositions = false; var deprecationEmittedForDeleted = false; var deprecationEmittedForMe = false; var deletedGuilds = new WeakSet; class Guild extends AnonymousGuild { constructor(client, data) { super(client, data, false); this.members = new GuildMemberManager(this); this.channels = new GuildChannelManager(this); this.bans = new GuildBanManager(this); this.roles = new RoleManager(this); this.presences = new PresenceManager(this.client); this.voiceStates = new VoiceStateManager(this); this.stageInstances = new StageInstanceManager(this); this.invites = new GuildInviteManager(this); this.scheduledEvents = new GuildScheduledEventManager(this); this.autoModerationRules = new AutoModerationRuleManager(this); this.settings = new GuildSettingManager(this); if (!data) return; if (data.unavailable) { this.available = false; } else { this._patch(data); if (!data.channels) this.available = false; } this.shardId = data.shardId; } get deleted() { if (!deprecationEmittedForDeleted) { deprecationEmittedForDeleted = true; process2.emitWarning("Guild#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.", "DeprecationWarning"); } return deletedGuilds.has(this); } set deleted(value) { if (!deprecationEmittedForDeleted) { deprecationEmittedForDeleted = true; process2.emitWarning("Guild#deleted is deprecated, see https://github.com/discordjs/discord.js/issues/7091.", "DeprecationWarning"); } if (value) deletedGuilds.add(this); else deletedGuilds.delete(this); } get shard() { return this.client.ws.shards.get(this.shardId); } _patch(data) { super._patch(data); this.id = data.id; if ("name" in data) this.name = data.name; if ("icon" in data) this.icon = data.icon; if ("unavailable" in data) { this.available = !data.unavailable; } else { this.available ??= true; } if ("discovery_splash" in data) { this.discoverySplash = data.discovery_splash; } if ("member_count" in data) { this.memberCount = data.member_count; } if ("large" in data) { this.large = Boolean(data.large); } if ("premium_progress_bar_enabled" in data) { this.premiumProgressBarEnabled = data.premium_progress_bar_enabled; } if ("application_id" in data) { this.applicationId = data.application_id; } if ("afk_timeout" in data) { this.afkTimeout = data.afk_timeout; } if ("afk_channel_id" in data) { this.afkChannelId = data.afk_channel_id; } if ("system_channel_id" in data) { this.systemChannelId = data.system_channel_id; } if ("premium_tier" in data) { this.premiumTier = PremiumTiers[data.premium_tier]; } if ("widget_enabled" in data) { this.widgetEnabled = data.widget_enabled; } if ("widget_channel_id" in data) { this.widgetChannelId = data.widget_channel_id; } if ("explicit_content_filter" in data) { this.explicitContentFilter = ExplicitContentFilterLevels[data.explicit_content_filter]; } if ("mfa_level" in data) { this.mfaLevel = MFALevels[data.mfa_level]; } if ("joined_at" in data) { this.joinedTimestamp = new Date(data.joined_at).getTime(); } if ("default_message_notifications" in data) { this.defaultMessageNotifications = DefaultMessageNotificationLevels[data.default_message_notifications]; } if ("system_channel_flags" in data) { this.systemChannelFlags = new SystemChannelFlags(data.system_channel_flags).freeze(); } if ("max_members" in data) { this.maximumMembers = data.max_members; } else { this.maximumMembers ??= null; } if ("max_presences" in data) { this.maximumPresences = data.max_presences ?? 25000; } else { this.maximumPresences ??= null; } if ("max_video_channel_users" in data) { this.maxVideoChannelUsers = data.max_video_channel_users; } else { this.maxVideoChannelUsers ??= null; } if ("max_stage_video_channel_users" in data) { this.maxStageVideoChannelUsers = data.max_stage_video_channel_users; } else { this.maxStageVideoChannelUsers ??= null; } if ("approximate_member_count" in data) { this.approximateMemberCount = data.approximate_member_count; } else { this.approximateMemberCount ??= null; } if ("approximate_presence_count" in data) { this.approximatePresenceCount = data.approximate_presence_count; } else { this.approximatePresenceCount ??= null; } this.vanityURLUses ??= null; if ("rules_channel_id" in data) { this.rulesChannelId = data.rules_channel_id; } if ("public_updates_channel_id" in data) { this.publicUpdatesChannelId = data.public_updates_channel_id; } if ("preferred_locale" in data) { this.preferredLocale = data.preferred_locale; } if ("safety_alerts_channel_id" in data) { this.safetyAlertsChannelId = data.safety_alerts_channel_id; } else { this.safetyAlertsChannelId ??= null; } if (data.channels) { this.channels.cache.clear(); for (const rawChannel of data.channels) { this.client.channels._add(rawChannel, this); } } if (data.threads) { for (const rawThread of data.threads) { this.client.channels._add(rawThread, this); } } if (data.roles) { this.roles.cache.clear(); for (const role of data.roles) this.roles._add(role); } if (data.members) { this.members.cache.clear(); for (const guildUser of data.members) this.members._add(guildUser); } if ("owner_id" in data) { this.ownerId = data.owner_id; } if (data.presences) { for (const presence of data.presences) { this.presences._add(Object.assign(presence, { guild: this })); } } if (data.stage_instances) { this.stageInstances.cache.clear(); for (const stageInstance of data.stage_instances) { this.stageInstances._add(stageInstance); } } if (data.guild_scheduled_events) { this.scheduledEvents.cache.clear(); for (const scheduledEvent of data.guild_scheduled_events) { this.scheduledEvents._add(scheduledEvent); } } if (data.voice_states) { this.voiceStates.cache.clear(); for (const voiceState of data.voice_states) { this.voiceStates._add(voiceState); } } if (!this.emojis) { this.emojis = new GuildEmojiManager(this); if (data.emojis) for (const emoji of data.emojis) this.emojis._add(emoji); } else if (data.emojis) { this.client.actions.GuildEmojisUpdate.handle({ guild_id: this.id, emojis: data.emojis }); } if (!this.stickers) { this.stickers = new GuildStickerManager(this); if (data.stickers) for (const sticker of data.stickers) this.stickers._add(sticker); } else if (data.stickers) { this.client.actions.GuildStickersUpdate.handle({ guild_id: this.id, stickers: data.stickers }); } if ("incidents_data" in data) { this.incidentsData = data.incidents_data && Util.transformAPIIncidentsData(data.incidents_data); } else { this.incidentsData ??= null; } } get joinedAt() { return new Date(this.joinedTimestamp); } discoverySplashURL({ format, size } = {}) { return this.discoverySplash && this.client.rest.cdn.DiscoverySplash(this.id, this.discoverySplash, format, size); } fetchOwner(options) { return this.members.fetch({ ...options, user: this.ownerId }); } get afkChannel() { return this.client.channels.resolve(this.afkChannelId); } get systemChannel() { return this.client.channels.resolve(this.systemChannelId); } get safetyAlertsChannel() { return this.client.channels.resolve(this.safetyAlertsChannelId); } get widgetChannel() { return this.client.channels.resolve(this.widgetChannelId); } get rulesChannel() { return this.client.channels.resolve(this.rulesChannelId); } get publicUpdatesChannel() { return this.client.channels.resolve(this.publicUpdatesChannelId); } get me() { if (!deprecationEmittedForMe) { process2.emitWarning("Guild#me is deprecated. Use Guild#members#me instead.", "DeprecationWarning"); deprecationEmittedForMe = true; } return this.members.me; } get maximumBitrate() { if (this.features.includes("VIP_REGIONS")) { return 384000; } switch (PremiumTiers[this.premiumTier]) { case PremiumTiers.TIER_1: return 128000; case PremiumTiers.TIER_2: return 256000; case PremiumTiers.TIER_3: return 384000; default: return 96000; } } async fetchIntegrations() { const data = await this.client.api.guilds(this.id).integrations.get(); return data.reduce((collection, integration) => collection.set(integration.id, new Integration(this.client, integration, this)), new Collection); } async fetchTemplates() { const templates = await this.client.api.guilds(this.id).templates.get(); return templates.reduce((col, data) => col.set(data.code, new GuildTemplate(this.client, data)), new Collection); } async fetchWelcomeScreen() { const data = await this.client.api.guilds(this.id, "welcome-screen").get(); return new WelcomeScreen(this, data); } async createTemplate(name, description) { const data = await this.client.api.guilds(this.id).templates.post({ data: { name, description } }); return new GuildTemplate(this.client, data); } async fetchPreview() { const data = await this.client.api.guilds(this.id).preview.get(); return new GuildPreview(this.client, data); } async fetchVanityData() { const data = await this.client.api.guilds(this.id, "vanity-url").get(); this.vanityURLCode = data.code; this.vanityURLUses = data.uses; return data; } async fetchWebhooks() { const apiHooks = await this.client.api.guilds(this.id).webhooks.get(); const hooks = new Collection; for (const hook of apiHooks) hooks.set(hook.id, new Webhook(this.client, hook)); return hooks; } fetchWidget() { return this.client.fetchGuildWidget(this.id); } async fetchWidgetSettings() { const data = await this.client.api.guilds(this.id).widget.get(); this.widgetEnabled = data.enabled; this.widgetChannelId = data.channel_id; return { enabled: data.enabled, channel: data.channel_id ? this.channels.cache.get(data.channel_id) : null }; } async fetchAuditLogs({ before, after, limit, user, type } = {}) { const data = await this.client.api.guilds(this.id)["audit-logs"].get({ query: { before: before?.id ?? before, after: after?.id ?? after, limit, user_id: this.client.users.resolveId(user), action_type: typeof type === "string" ? GuildAuditLogs.Actions[type] : type } }); return GuildAuditLogs.build(this, data); } async edit(data, reason) { const _data = {}; if (data.name) _data.name = data.name; if (typeof data.verificationLevel !== "undefined") { _data.verification_level = typeof data.verificationLevel === "number" ? data.verificationLevel : VerificationLevels[data.verificationLevel]; } if (typeof data.afkChannel !== "undefined") { _data.afk_channel_id = this.client.channels.resolveId(data.afkChannel); } if (typeof data.systemChannel !== "undefined") { _data.system_channel_id = this.client.channels.resolveId(data.systemChannel); } if (data.afkTimeout) _data.afk_timeout = Number(data.afkTimeout); if (typeof data.icon !== "undefined") _data.icon = await DataResolver.resolveImage(data.icon); if (data.owner) _data.owner_id = this.client.users.resolveId(data.owner); if (typeof data.splash !== "undefined") _data.splash = await DataResolver.resolveImage(data.splash); if (typeof data.discoverySplash !== "undefined") { _data.discovery_splash = await DataResolver.resolveImage(data.discoverySplash); } if (typeof data.banner !== "undefined") _data.banner = await DataResolver.resolveImage(data.banner); if (typeof data.explicitContentFilter !== "undefined") { _data.explicit_content_filter = typeof data.explicitContentFilter === "number" ? data.explicitContentFilter : ExplicitContentFilterLevels[data.explicitContentFilter]; } if (typeof data.defaultMessageNotifications !== "undefined") { _data.default_message_notifications = typeof data.defaultMessageNotifications === "number" ? data.defaultMessageNotifications : DefaultMessageNotificationLevels[data.defaultMessageNotifications]; } if (typeof data.systemChannelFlags !== "undefined") { _data.system_channel_flags = SystemChannelFlags.resolve(data.systemChannelFlags); } if (typeof data.rulesChannel !== "undefined") { _data.rules_channel_id = this.client.channels.resolveId(data.rulesChannel); } if (typeof data.publicUpdatesChannel !== "undefined") { _data.public_updates_channel_id = this.client.channels.resolveId(data.publicUpdatesChannel); } if (typeof data.features !== "undefined") { _data.features = data.features; } if (typeof data.description !== "undefined") { _data.description = data.description; } if (typeof data.preferredLocale !== "undefined") _data.preferred_locale = data.preferredLocale; if (typeof data.safetyAlertsChannel !== "undefined") { _data.safety_alerts_channel_id = this.client.channels.resolveId(data.safetyAlertsChannel); } if ("premiumProgressBarEnabled" in data) _data.premium_progress_bar_enabled = data.premiumProgressBarEnabled; const newData = await this.client.api.guilds(this.id).patch({ data: _data, reason }); return this.client.actions.GuildUpdate.handle(newData).updated; } async editWelcomeScreen(data) { const { enabled, description, welcomeChannels } = data; const welcome_channels = welcomeChannels?.map((welcomeChannelData) => { const emoji = this.emojis.resolve(welcomeChannelData.emoji); return { emoji_id: emoji?.id, emoji_name: emoji?.name ?? welcomeChannelData.emoji, channel_id: this.channels.resolveId(welcomeChannelData.channel), description: welcomeChannelData.description }; }); const patchData = await this.client.api.guilds(this.id, "welcome-screen").patch({ data: { welcome_channels, description, enabled } }); return new WelcomeScreen(this, patchData); } setExplicitContentFilter(explicitContentFilter, reason) { return this.edit({ explicitContentFilter }, reason); } setDefaultMessageNotifications(defaultMessageNotifications, reason) { return this.edit({ defaultMessageNotifications }, reason); } setSystemChannelFlags(systemChannelFlags, reason) { return this.edit({ systemChannelFlags }, reason); } setName(name, reason) { return this.edit({ name }, reason); } setVerificationLevel(verificationLevel, reason) { return this.edit({ verificationLevel }, reason); } setAFKChannel(afkChannel, reason) { return this.edit({ afkChannel }, reason); } setSystemChannel(systemChannel, reason) { return this.edit({ systemChannel }, reason); } setAFKTimeout(afkTimeout, reason) { return this.edit({ afkTimeout }, reason); } setIcon(icon, reason) { return this.edit({ icon }, reason); } setOwner(owner, reason) { return this.edit({ owner }, reason); } setSplash(splash, reason) { return this.edit({ splash }, reason); } setDiscoverySplash(discoverySplash, reason) { return this.edit({ discoverySplash }, reason); } setBanner(banner, reason) { return this.edit({ banner }, reason); } setRulesChannel(rulesChannel, reason) { return this.edit({ rulesChannel }, reason); } setPublicUpdatesChannel(publicUpdatesChannel, reason) { return this.edit({ publicUpdatesChannel }, reason); } setPreferredLocale(preferredLocale, reason) { return this.edit({ preferredLocale }, reason); } setSafetyAlertsChannel(safetyAlertsChannel, reason) { return this.edit({ safetyAlertsChannel }, reason); } setPremiumProgressBarEnabled(enabled = true, reason) { return this.edit({ premiumProgressBarEnabled: enabled }, reason); } setChannelPositions(channelPositions) { if (!deprecationEmittedForSetChannelPositions) { process2.emitWarning("The Guild#setChannelPositions method is deprecated. Use GuildChannelManager#setPositions instead.", "DeprecationWarning"); deprecationEmittedForSetChannelPositions = true; } return this.channels.setPositions(channelPositions); } setRolePositions(rolePositions) { if (!deprecationEmittedForSetRolePositions) { process2.emitWarning("The Guild#setRolePositions method is deprecated. Use RoleManager#setPositions instead.", "DeprecationWarning"); deprecationEmittedForSetRolePositions = true; } return this.roles.setPositions(rolePositions); } async setWidgetSettings(settings, reason) { await this.client.api.guilds(this.id).widget.patch({ data: { enabled: settings.enabled, channel_id: this.channels.resolveId(settings.channel) }, reason }); return this; } disableInvites(disabled = true) { const features = this.features.filter((feature) => feature !== "INVITES_DISABLED"); if (disabled) features.push("INVITES_DISABLED"); return this.edit({ features }); } setIncidentActions(incidentActions) { return this.client.guilds.setIncidentActions(this.id, incidentActions); } async leave() { if (this.ownerId === this.client.user.id) throw new Error2("GUILD_OWNED"); await this.client.api.users("@me").guilds(this.id).delete(); return this.client.actions.GuildDelete.handle({ id: this.id }).guild; } async delete() { await this.client.api.guilds(this.id).delete(); return this.client.actions.GuildDelete.handle({ id: this.id }).guild; } equals(guild) { return guild && guild instanceof this.constructor && this.id === guild.id && this.available === guild.available && this.splash === guild.splash && this.discoverySplash === guild.discoverySplash && this.name === guild.name && this.memberCount === guild.memberCount && this.large === guild.large && this.icon === guild.icon && this.ownerId === guild.ownerId && this.verificationLevel === guild.verificationLevel && (this.features === guild.features || this.features.length === guild.features.length && this.features.every((feat, i) => feat === guild.features[i])); } toJSON() { const json = super.toJSON({ available: false, createdTimestamp: true, nameAcronym: true, presences: false, voiceStates: false }); json.iconURL = this.iconURL(); json.splashURL = this.splashURL(); json.discoverySplashURL = this.discoverySplashURL(); json.bannerURL = this.bannerURL(); return json; } markAsRead() { return this.client.api.guilds(this.id).ack.post(); } async setCommunity(stats = true, publicUpdatesChannel, rulesChannel, reason) { if (stats) { const everyoneRole = this.roles.everyone; if (everyoneRole.mentionable) { await everyoneRole.setMentionable(false, reason); } return this.edit({ defaultMessageNotifications: "ONLY_MENTIONS", explicitContentFilter: "ALL_MEMBERS", features: [...this.features, "COMMUNITY"], publicUpdatesChannel: this.channels.resolveId(publicUpdatesChannel) || "1", rulesChannel: this.channels.resolveId(rulesChannel) || "1", verificationLevel: VerificationLevels[this.verificationLevel] < 1 ? "LOW" : this.verificationLevel }, reason); } else { return this.edit({ publicUpdatesChannel: null, rulesChannel: null, features: this.features.filter((f) => f !== "COMMUNITY"), preferredLocale: this.preferredLocale, description: this.description }, reason); } } topEmojis() { return new Promise((resolve, reject) => { this.client.api.guilds(this.id)["top-emojis"].get().then((data) => { const emojis = new Collection; for (const emoji of data.items) { emojis.set(emoji.emoji_rank, this.emojis.cache.get(emoji.emoji_id)); } resolve(emojis); }).catch(reject); }); } async setVanityCode(code = "") { if (typeof code !== "string") throw new TypeError("INVALID_VANITY_URL_CODE"); const data = await this.client.api.guilds(this.id, "vanity-url").patch({ data: { code } }); this.vanityURLCode = data.code; this.vanityURLUses = data.uses; return data; } get voiceAdapterCreator() { return (methods) => { this.client.voice.adapters.set(this.id, methods); return { sendPayload: (data) => { if (this.shard.status !== Status.READY) return false; this.shard.send(data); return true; }, destroy: () => { this.client.voice.adapters.delete(this.id); } }; }; } _sortedRoles() { return Util.discordSort(this.roles.cache); } _sortedChannels(channel) { const category = channel.type === ChannelTypes.GUILD_CATEGORY; return Util.discordSort(this.channels.cache.filter((c) => (["GUILD_TEXT", "GUILD_NEWS", "GUILD_STORE"].includes(channel.type) ? ["GUILD_TEXT", "GUILD_NEWS", "GUILD_STORE"].includes(c.type) : c.type === channel.type) && (category || c.parent === channel.parent))); } } exports.Guild = Guild; exports.deletedGuilds = deletedGuilds; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildDelete.js var require_GuildDelete = __commonJS((exports, module) => { var { setTimeout: setTimeout2 } = import.meta.require("timers"); var Action = require_Action(); var { deletedGuilds } = require_Guild(); var { Events } = require_Constants(); class GuildDeleteAction extends Action { constructor(client) { super(client); this.deleted = new Map; } handle(data) { const client = this.client; let guild = client.guilds.cache.get(data.id); if (guild) { if (data.unavailable) { guild.available = false; client.emit(Events.GUILD_UNAVAILABLE, guild); return { guild: null }; } for (const channel of guild.channels.cache.values()) this.client.channels._remove(channel.id); client.voice.adapters.get(data.id)?.destroy(); client.guilds.cache.delete(guild.id); deletedGuilds.add(guild); client.emit(Events.GUILD_DELETE, guild); this.deleted.set(guild.id, guild); this.scheduleForDeletion(guild.id); } else { guild = this.deleted.get(data.id) ?? null; } return { guild }; } scheduleForDeletion(id) { setTimeout2(() => this.deleted.delete(id), this.client.options.restWsBridgeTimeout).unref(); } } module.exports = GuildDeleteAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildEmojiCreate.js var require_GuildEmojiCreate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class GuildEmojiCreateAction extends Action { handle(guild, createdEmoji) { const already = guild.emojis.cache.has(createdEmoji.id); const emoji = guild.emojis._add(createdEmoji); if (!already) this.client.emit(Events.GUILD_EMOJI_CREATE, emoji); return { emoji }; } } module.exports = GuildEmojiCreateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildEmojiDelete.js var require_GuildEmojiDelete = __commonJS((exports, module) => { var Action = require_Action(); var { deletedEmojis } = require_Emoji(); var { Events } = require_Constants(); class GuildEmojiDeleteAction extends Action { handle(emoji) { emoji.guild.emojis.cache.delete(emoji.id); deletedEmojis.add(emoji); this.client.emit(Events.GUILD_EMOJI_DELETE, emoji); return { emoji }; } } module.exports = GuildEmojiDeleteAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildEmojiUpdate.js var require_GuildEmojiUpdate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class GuildEmojiUpdateAction extends Action { handle(current, data) { const old = current._update(data); this.client.emit(Events.GUILD_EMOJI_UPDATE, old, current); return { emoji: current }; } } module.exports = GuildEmojiUpdateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildEmojisUpdate.js var require_GuildEmojisUpdate = __commonJS((exports, module) => { var Action = require_Action(); class GuildEmojisUpdateAction extends Action { handle(data) { const guild = this.client.guilds.cache.get(data.guild_id); if (!guild?.emojis) return; const deletions = new Map(guild.emojis.cache); for (const emoji of data.emojis) { const cachedEmoji = guild.emojis.cache.get(emoji.id); if (cachedEmoji) { deletions.delete(emoji.id); if (!cachedEmoji.equals(emoji)) { this.client.actions.GuildEmojiUpdate.handle(cachedEmoji, emoji); } } else { this.client.actions.GuildEmojiCreate.handle(guild, emoji); } } for (const emoji of deletions.values()) { this.client.actions.GuildEmojiDelete.handle(emoji); } } } module.exports = GuildEmojisUpdateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildIntegrationsUpdate.js var require_GuildIntegrationsUpdate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class GuildIntegrationsUpdate extends Action { handle(data) { const client = this.client; const guild = client.guilds.cache.get(data.guild_id); if (guild) client.emit(Events.GUILD_INTEGRATIONS_UPDATE, guild); } } module.exports = GuildIntegrationsUpdate; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildMemberRemove.js var require_GuildMemberRemove = __commonJS((exports, module) => { var Action = require_Action(); var { deletedGuildMembers } = require_GuildMember(); var { Events, Status } = require_Constants(); class GuildMemberRemoveAction extends Action { handle(data, shard) { const client = this.client; const guild = client.guilds.cache.get(data.guild_id); let member = null; if (guild) { member = this.getMember({ user: data.user }, guild); guild.memberCount--; if (member) { deletedGuildMembers.add(member); guild.members.cache.delete(member.id); if (shard.status === Status.READY) client.emit(Events.GUILD_MEMBER_REMOVE, member); } guild.presences.cache.delete(data.user.id); guild.voiceStates.cache.delete(data.user.id); } return { guild, member }; } } module.exports = GuildMemberRemoveAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildMemberUpdate.js var require_GuildMemberUpdate = __commonJS((exports, module) => { var Action = require_Action(); var { Status, Events } = require_Constants(); class GuildMemberUpdateAction extends Action { handle(data, shard) { const { client } = this; if (data.user.username) { const user = client.users.cache.get(data.user.id); if (!user) { client.users._add(data.user); } else if (!user._equals(data.user)) { client.actions.UserUpdate.handle(data.user); } } const guild = client.guilds.cache.get(data.guild_id); if (guild) { const member = this.getMember({ user: data.user }, guild); if (member) { const old = member._update(data); if (shard.status === Status.READY && !member.equals(old)) client.emit(Events.GUILD_MEMBER_UPDATE, old, member); } else { const newMember = guild.members._add(data); this.client.emit(Events.GUILD_MEMBER_AVAILABLE, newMember); } } } } module.exports = GuildMemberUpdateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildRoleCreate.js var require_GuildRoleCreate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class GuildRoleCreate extends Action { handle(data) { const client = this.client; const guild = client.guilds.cache.get(data.guild_id); let role; if (guild) { const already = guild.roles.cache.has(data.role.id); role = guild.roles._add(data.role); if (!already) client.emit(Events.GUILD_ROLE_CREATE, role); } return { role }; } } module.exports = GuildRoleCreate; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildRoleDelete.js var require_GuildRoleDelete = __commonJS((exports, module) => { var Action = require_Action(); var { deletedRoles } = require_Role(); var { Events } = require_Constants(); class GuildRoleDeleteAction extends Action { handle(data) { const client = this.client; const guild = client.guilds.cache.get(data.guild_id); let role; if (guild) { role = guild.roles.cache.get(data.role_id); if (role) { guild.roles.cache.delete(data.role_id); deletedRoles.add(role); client.emit(Events.GUILD_ROLE_DELETE, role); } } return { role }; } } module.exports = GuildRoleDeleteAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildRoleUpdate.js var require_GuildRoleUpdate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class GuildRoleUpdateAction extends Action { handle(data) { const client = this.client; const guild = client.guilds.cache.get(data.guild_id); if (guild) { let old = null; const role = guild.roles.cache.get(data.role.id); if (role) { old = role._update(data.role); client.emit(Events.GUILD_ROLE_UPDATE, old, role); } return { old, updated: role }; } return { old: null, updated: null }; } } module.exports = GuildRoleUpdateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildRolesPositionUpdate.js var require_GuildRolesPositionUpdate = __commonJS((exports, module) => { var Action = require_Action(); class GuildRolesPositionUpdate extends Action { handle(data) { const client = this.client; const guild = client.guilds.cache.get(data.guild_id); if (guild) { for (const partialRole of data.roles) { const role = guild.roles.cache.get(partialRole.id); if (role) role.rawPosition = partialRole.position; } } return { guild }; } } module.exports = GuildRolesPositionUpdate; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildScheduledEventCreate.js var require_GuildScheduledEventCreate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class GuildScheduledEventCreateAction extends Action { handle(data) { const client = this.client; const guild = client.guilds.cache.get(data.guild_id); if (guild) { const guildScheduledEvent = guild.scheduledEvents._add(data); client.emit(Events.GUILD_SCHEDULED_EVENT_CREATE, guildScheduledEvent); return { guildScheduledEvent }; } return {}; } } module.exports = GuildScheduledEventCreateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildScheduledEventDelete.js var require_GuildScheduledEventDelete = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class GuildScheduledEventDeleteAction extends Action { handle(data) { const client = this.client; const guild = client.guilds.cache.get(data.guild_id); if (guild) { const guildScheduledEvent = this.getScheduledEvent(data, guild); if (guildScheduledEvent) { guild.scheduledEvents.cache.delete(guildScheduledEvent.id); client.emit(Events.GUILD_SCHEDULED_EVENT_DELETE, guildScheduledEvent); return { guildScheduledEvent }; } } return {}; } } module.exports = GuildScheduledEventDeleteAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildScheduledEventUpdate.js var require_GuildScheduledEventUpdate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class GuildScheduledEventUpdateAction extends Action { handle(data) { const client = this.client; const guild = client.guilds.cache.get(data.guild_id); if (guild) { const oldGuildScheduledEvent = guild.scheduledEvents.cache.get(data.id)?._clone() ?? null; const newGuildScheduledEvent = guild.scheduledEvents._add(data); client.emit(Events.GUILD_SCHEDULED_EVENT_UPDATE, oldGuildScheduledEvent, newGuildScheduledEvent); return { oldGuildScheduledEvent, newGuildScheduledEvent }; } return {}; } } module.exports = GuildScheduledEventUpdateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildScheduledEventUserAdd.js var require_GuildScheduledEventUserAdd = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class GuildScheduledEventUserAddAction extends Action { handle(data) { const client = this.client; const guild = client.guilds.cache.get(data.guild_id); if (guild) { const guildScheduledEvent = this.getScheduledEvent(data, guild); const user = this.getUser(data); if (guildScheduledEvent && user) { client.emit(Events.GUILD_SCHEDULED_EVENT_USER_ADD, guildScheduledEvent, user); return { guildScheduledEvent, user }; } } return {}; } } module.exports = GuildScheduledEventUserAddAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildScheduledEventUserRemove.js var require_GuildScheduledEventUserRemove = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class GuildScheduledEventUserRemoveAction extends Action { handle(data) { const client = this.client; const guild = client.guilds.cache.get(data.guild_id); if (guild) { const guildScheduledEvent = this.getScheduledEvent(data, guild); const user = this.getUser(data); if (guildScheduledEvent && user) { client.emit(Events.GUILD_SCHEDULED_EVENT_USER_REMOVE, guildScheduledEvent, user); return { guildScheduledEvent, user }; } } return {}; } } module.exports = GuildScheduledEventUserRemoveAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildStickerCreate.js var require_GuildStickerCreate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class GuildStickerCreateAction extends Action { handle(guild, createdSticker) { const already = guild.stickers.cache.has(createdSticker.id); const sticker = guild.stickers._add(createdSticker); if (!already) this.client.emit(Events.GUILD_STICKER_CREATE, sticker); return { sticker }; } } module.exports = GuildStickerCreateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildStickerDelete.js var require_GuildStickerDelete = __commonJS((exports, module) => { var Action = require_Action(); var { deletedStickers } = require_Sticker(); var { Events } = require_Constants(); class GuildStickerDeleteAction extends Action { handle(sticker) { sticker.guild.stickers.cache.delete(sticker.id); deletedStickers.add(sticker); this.client.emit(Events.GUILD_STICKER_DELETE, sticker); return { sticker }; } } module.exports = GuildStickerDeleteAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildStickerUpdate.js var require_GuildStickerUpdate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class GuildStickerUpdateAction extends Action { handle(current, data) { const old = current._update(data); this.client.emit(Events.GUILD_STICKER_UPDATE, old, current); return { sticker: current }; } } module.exports = GuildStickerUpdateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildStickersUpdate.js var require_GuildStickersUpdate = __commonJS((exports, module) => { var Action = require_Action(); class GuildStickersUpdateAction extends Action { handle(data) { const guild = this.client.guilds.cache.get(data.guild_id); if (!guild?.stickers) return; const deletions = new Map(guild.stickers.cache); for (const sticker of data.stickers) { const cachedSticker = guild.stickers.cache.get(sticker.id); if (cachedSticker) { deletions.delete(sticker.id); if (!cachedSticker.equals(sticker)) { this.client.actions.GuildStickerUpdate.handle(cachedSticker, sticker); } } else { this.client.actions.GuildStickerCreate.handle(guild, sticker); } } for (const sticker of deletions.values()) { this.client.actions.GuildStickerDelete.handle(sticker); } } } module.exports = GuildStickersUpdateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/GuildUpdate.js var require_GuildUpdate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class GuildUpdateAction extends Action { handle(data) { const client = this.client; const guild = client.guilds.cache.get(data.id); if (guild) { const old = guild._update(data); client.emit(Events.GUILD_UPDATE, old, guild); return { old, updated: guild }; } return { old: null, updated: null }; } } module.exports = GuildUpdateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/InviteCreate.js var require_InviteCreate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class InviteCreateAction extends Action { handle(data) { const client = this.client; const channel = client.channels.cache.get(data.channel_id); const guild = client.guilds.cache.get(data.guild_id); if (!channel) return false; const inviteData = Object.assign(data, { channel, guild }); const invite = guild.invites._add(inviteData); client.emit(Events.INVITE_CREATE, invite); return { invite }; } } module.exports = InviteCreateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/InviteDelete.js var require_InviteDelete = __commonJS((exports, module) => { var Action = require_Action(); var Invite = require_Invite(); var { Events } = require_Constants(); class InviteDeleteAction extends Action { handle(data) { const client = this.client; const channel = client.channels.cache.get(data.channel_id); const guild = client.guilds.cache.get(data.guild_id); if (!channel) return false; const inviteData = Object.assign(data, { channel, guild }); const invite = new Invite(client, inviteData); guild.invites.cache.delete(invite.code); client.emit(Events.INVITE_DELETE, invite); return { invite }; } } module.exports = InviteDeleteAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/MessageCreate.js var require_MessageCreate = __commonJS((exports, module) => { var process2 = import.meta.require("process"); var Action = require_Action(); var { Events } = require_Constants(); var deprecationEmitted = false; class MessageCreateAction extends Action { handle(data) { const client = this.client; const channel = this.getChannel({ id: data.channel_id, author: data.author, ..."guild_id" in data && { guild_id: data.guild_id } }); if (channel) { if (!channel.isText()) return {}; const existing = channel.messages.cache.get(data.id); if (existing && existing.author?.id !== this.client.user.id) return { message: existing }; const message = existing ?? channel.messages._add(data); channel.lastMessageId = data.id; client.emit(Events.MESSAGE_CREATE, message); if (client.emit("message", message) && !deprecationEmitted) { deprecationEmitted = true; process2.emitWarning("The message event is deprecated. Use messageCreate instead", "DeprecationWarning"); } return { message }; } return {}; } } module.exports = MessageCreateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/MessageDelete.js var require_MessageDelete = __commonJS((exports, module) => { var Action = require_Action(); var { deletedMessages } = require_Message(); var { Events } = require_Constants(); class MessageDeleteAction extends Action { handle(data) { const client = this.client; const channel = this.getChannel({ id: data.channel_id, ..."guild_id" in data && { guild_id: data.guild_id } }); let message; if (channel) { if (!channel.isText()) return {}; message = this.getMessage(data, channel); if (message) { channel.messages.cache.delete(message.id); deletedMessages.add(message); client.emit(Events.MESSAGE_DELETE, message); } } return { message }; } } module.exports = MessageDeleteAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/MessageDeleteBulk.js var require_MessageDeleteBulk = __commonJS((exports, module) => { var { Collection } = require_dist(); var Action = require_Action(); var { deletedMessages } = require_Message(); var { Events } = require_Constants(); class MessageDeleteBulkAction extends Action { handle(data) { const client = this.client; const channel = client.channels.cache.get(data.channel_id); if (channel) { if (!channel.isText()) return {}; const ids = data.ids; const messages = new Collection; for (const id of ids) { const message = this.getMessage({ id, guild_id: data.guild_id }, channel, false); if (message) { deletedMessages.add(message); messages.set(message.id, message); channel.messages.cache.delete(id); } } if (messages.size > 0) client.emit(Events.MESSAGE_BULK_DELETE, messages); return { messages }; } return {}; } } module.exports = MessageDeleteBulkAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/MessagePollVoteAdd.js var require_MessagePollVoteAdd = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class MessagePollVoteAddAction extends Action { handle(data) { const channel = this.getChannel(data); if (!channel?.isText()) return false; const message = this.getMessage(data, channel); if (!message) return false; const { poll } = message; const answer = poll?.answers.get(data.answer_id); if (!answer) return false; answer.voteCount++; this.client.emit(Events.MESSAGE_POLL_VOTE_ADD, answer, data.user_id); return { poll }; } } module.exports = MessagePollVoteAddAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/MessagePollVoteRemove.js var require_MessagePollVoteRemove = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class MessagePollVoteRemoveAction extends Action { handle(data) { const channel = this.getChannel(data); if (!channel?.isText()) return false; const message = this.getMessage(data, channel); if (!message) return false; const { poll } = message; const answer = poll?.answers.get(data.answer_id); if (!answer) return false; answer.voteCount--; this.client.emit(Events.MESSAGE_POLL_VOTE_REMOVE, answer, data.user_id); return { poll }; } } module.exports = MessagePollVoteRemoveAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/MessageReactionAdd.js var require_MessageReactionAdd = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); var { PartialTypes } = require_Constants(); class MessageReactionAdd extends Action { handle(data, fromStructure = false) { if (!data.emoji) return false; const user = this.getUserFromMember(data); if (!user) return false; const channel = this.getChannel({ id: data.channel_id, user_id: data.user_id, ..."guild_id" in data && { guild_id: data.guild_id } }); if (!channel || !channel.isText()) return false; const message = this.getMessage(data, channel); if (!message) return false; const includePartial = this.client.options.partials.includes(PartialTypes.REACTION); if (message.partial && !includePartial) return false; const reaction = message.reactions._add({ emoji: data.emoji, count: message.partial ? null : 0, me: user.id === this.client.user.id, ...data }); if (!reaction) return false; reaction._add(user, data.burst); if (fromStructure) return { message, reaction, user }; this.client.emit(Events.MESSAGE_REACTION_ADD, reaction, user, { type: data.type, burst: data.burst }); return { message, reaction, user }; } } module.exports = MessageReactionAdd; }); // node_modules/discord.js-selfbot-v13/src/client/actions/MessageReactionRemove.js var require_MessageReactionRemove = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class MessageReactionRemove extends Action { handle(data) { if (!data.emoji) return false; const user = this.getUser(data); if (!user) return false; const channel = this.getChannel({ id: data.channel_id, user_id: data.user_id, ..."guild_id" in data && { guild_id: data.guild_id } }); if (!channel || !channel.isText()) return false; const message = this.getMessage(data, channel); if (!message) return false; const reaction = this.getReaction(data, message, user); if (!reaction) return false; reaction._remove(user, data.burst); this.client.emit(Events.MESSAGE_REACTION_REMOVE, reaction, user, { type: data.type, burst: data.burst }); return { message, reaction, user }; } } module.exports = MessageReactionRemove; }); // node_modules/discord.js-selfbot-v13/src/client/actions/MessageReactionRemoveAll.js var require_MessageReactionRemoveAll = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class MessageReactionRemoveAll extends Action { handle(data) { const channel = this.getChannel({ id: data.channel_id, ..."guild_id" in data && { guild_id: data.guild_id } }); if (!channel || !channel.isText()) return false; const message = this.getMessage(data, channel); if (!message) return false; const removed = message.reactions.cache.clone(); message.reactions.cache.clear(); this.client.emit(Events.MESSAGE_REACTION_REMOVE_ALL, message, removed); return { message }; } } module.exports = MessageReactionRemoveAll; }); // node_modules/discord.js-selfbot-v13/src/client/actions/MessageReactionRemoveEmoji.js var require_MessageReactionRemoveEmoji = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class MessageReactionRemoveEmoji extends Action { handle(data) { const channel = this.getChannel({ id: data.channel_id, ..."guild_id" in data && { guild_id: data.guild_id } }); if (!channel || !channel.isText()) return false; const message = this.getMessage(data, channel); if (!message) return false; const reaction = this.getReaction(data, message); if (!reaction) return false; if (!message.partial) message.reactions.cache.delete(reaction.emoji.id ?? reaction.emoji.name); this.client.emit(Events.MESSAGE_REACTION_REMOVE_EMOJI, reaction); return { reaction }; } } module.exports = MessageReactionRemoveEmoji; }); // node_modules/discord.js-selfbot-v13/src/client/actions/MessageUpdate.js var require_MessageUpdate = __commonJS((exports, module) => { var Action = require_Action(); class MessageUpdateAction extends Action { handle(data) { const channel = this.getChannel({ id: data.channel_id, ..."guild_id" in data && { guild_id: data.guild_id } }); if (channel) { if (!channel.isText()) return {}; const { id, channel_id, guild_id, author, timestamp, type } = data; const message = this.getMessage({ id, channel_id, guild_id, author, timestamp, type }, channel); if (message) { const old = message._update(data); return { old, updated: message }; } } return {}; } } module.exports = MessageUpdateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/PresenceUpdate.js var require_PresenceUpdate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); var { PartialTypes } = require_Constants(); class PresenceUpdateAction extends Action { handle(data) { let user = this.client.users.cache.get(data.user.id); if (!user && data.user?.username) user = this.client.users._add(data.user); if (!user && (("username" in data.user) || this.client.options.partials.includes(PartialTypes.USER))) { user = this.client.users._add(data.user); } if (!user) return; if (data.user?.username) { if (!user._equals(data.user)) this.client.actions.UserUpdate.handle(data.user); } const guild = this.client.guilds.cache.get(data.guild_id); if (guild) { let member = guild.members.cache.get(user.id); if (!member && data.status !== "offline") { member = guild.members._add({ user, deaf: false, mute: false }); this.client.emit(Events.GUILD_MEMBER_AVAILABLE, member); } } const oldPresence = (guild || this.client).presences.cache.get(user.id)?._clone() ?? null; const newPresence = (guild || this.client).presences._add(Object.assign(data, { guild })); if (this.client.listenerCount(Events.PRESENCE_UPDATE) && !newPresence.equals(oldPresence)) { this.client.emit(Events.PRESENCE_UPDATE, oldPresence, newPresence); } } } module.exports = PresenceUpdateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/StageInstanceCreate.js var require_StageInstanceCreate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class StageInstanceCreateAction extends Action { handle(data) { const client = this.client; const channel = this.getChannel({ id: data.channel_id, guild_id: data.guild_id }); if (channel) { const stageInstance = channel.guild.stageInstances._add(data); client.emit(Events.STAGE_INSTANCE_CREATE, stageInstance); return { stageInstance }; } return {}; } } module.exports = StageInstanceCreateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/StageInstanceDelete.js var require_StageInstanceDelete = __commonJS((exports, module) => { var Action = require_Action(); var { deletedStageInstances } = require_StageInstance(); var { Events } = require_Constants(); class StageInstanceDeleteAction extends Action { handle(data) { const client = this.client; const channel = this.getChannel({ id: data.channel_id, guild_id: data.guild_id }); if (channel) { const stageInstance = channel.guild.stageInstances._add(data); if (stageInstance) { channel.guild.stageInstances.cache.delete(stageInstance.id); deletedStageInstances.add(stageInstance); client.emit(Events.STAGE_INSTANCE_DELETE, stageInstance); return { stageInstance }; } } return {}; } } module.exports = StageInstanceDeleteAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/StageInstanceUpdate.js var require_StageInstanceUpdate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class StageInstanceUpdateAction extends Action { handle(data) { const client = this.client; const channel = this.getChannel({ id: data.channel_id, guild_id: data.guild_id }); if (channel) { const oldStageInstance = channel.guild.stageInstances.cache.get(data.id)?._clone() ?? null; const newStageInstance = channel.guild.stageInstances._add(data); client.emit(Events.STAGE_INSTANCE_UPDATE, oldStageInstance, newStageInstance); return { oldStageInstance, newStageInstance }; } return {}; } } module.exports = StageInstanceUpdateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/ThreadCreate.js var require_ThreadCreate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class ThreadCreateAction extends Action { handle(data) { const client = this.client; const existing = client.channels.cache.has(data.id); const thread = client.channels._add(data); if (!existing && thread) { client.emit(Events.THREAD_CREATE, thread, data.newly_created ?? false); } return { thread }; } } module.exports = ThreadCreateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/ThreadDelete.js var require_ThreadDelete = __commonJS((exports, module) => { var Action = require_Action(); var { deletedChannels } = require_Channel(); var { deletedMessages } = require_Message(); var { Events } = require_Constants(); class ThreadDeleteAction extends Action { handle(data) { const client = this.client; const thread = client.channels.cache.get(data.id); if (thread) { client.channels._remove(thread.id); deletedChannels.add(thread); for (const message of thread.messages.cache.values()) { deletedMessages.add(message); } client.emit(Events.THREAD_DELETE, thread); } return { thread }; } } module.exports = ThreadDeleteAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/ThreadListSync.js var require_ThreadListSync = __commonJS((exports, module) => { var { Collection } = require_dist(); var Action = require_Action(); var { Events } = require_Constants(); class ThreadListSyncAction extends Action { handle(data) { const client = this.client; const guild = client.guilds.cache.get(data.guild_id); if (!guild) return {}; if (data.channel_ids) { for (const id of data.channel_ids) { const channel = client.channels.cache.get(id); if (channel) this.removeStale(channel); } } else { for (const channel of guild.channels.cache.values()) { this.removeStale(channel); } } const syncedThreads = data.threads.reduce((coll, rawThread) => { const thread = client.channels._add(rawThread); return coll.set(thread.id, thread); }, new Collection); for (const rawMember of Object.values(data.members || {})) { const thread = client.channels.cache.get(rawMember.id); if (thread) { thread.members._add(rawMember); } } client.emit(Events.THREAD_LIST_SYNC, syncedThreads); return { syncedThreads }; } removeStale(channel) { channel.threads?.cache.forEach((thread) => { if (!thread.archived) { this.client.channels._remove(thread.id); } }); } } module.exports = ThreadListSyncAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/ThreadMemberUpdate.js var require_ThreadMemberUpdate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class ThreadMemberUpdateAction extends Action { handle(data) { const client = this.client; const thread = client.channels.cache.get(data.id); if (thread) { const member = thread.members.cache.get(data.user_id); if (!member) { const newMember = thread.members._add(data); return { newMember }; } const old = member._update(data); client.emit(Events.THREAD_MEMBER_UPDATE, old, member); } return {}; } } module.exports = ThreadMemberUpdateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/ThreadMembersUpdate.js var require_ThreadMembersUpdate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class ThreadMembersUpdateAction extends Action { handle(data) { const client = this.client; const thread = client.channels.cache.get(data.id); if (thread) { const old = thread.members.cache.clone(); thread.memberCount = data.member_count; data.added_members?.forEach((rawMember) => { thread.members._add(rawMember); }); data.removed_member_ids?.forEach((memberId) => { thread.members.cache.delete(memberId); }); client.emit(Events.THREAD_MEMBERS_UPDATE, old, thread.members.cache); } return {}; } } module.exports = ThreadMembersUpdateAction; }); // node_modules/discord.js-selfbot-v13/src/structures/Typing.js var require_Typing = __commonJS((exports, module) => { var Base = require_Base(); class Typing extends Base { constructor(channel, user, data) { super(channel.client); this.channel = channel; this.user = user; this._patch(data); } _patch(data) { if ("timestamp" in data) { this.startedTimestamp = data.timestamp * 1000; } } inGuild() { return this.guild !== null; } get startedAt() { return new Date(this.startedTimestamp); } get guild() { return this.channel.guild ?? null; } get member() { return this.guild?.members.resolve(this.user) ?? null; } } module.exports = Typing; }); // node_modules/discord.js-selfbot-v13/src/client/actions/TypingStart.js var require_TypingStart = __commonJS((exports, module) => { var Action = require_Action(); var Typing = require_Typing(); var { Events } = require_Constants(); class TypingStart extends Action { handle(data) { const channel = this.getChannel({ id: data.channel_id, ..."guild_id" in data && { guild_id: data.guild_id } }); if (!channel) return; if (!channel.isText()) { this.client.emit(Events.WARN, `Discord sent a typing packet to a ${channel.type} channel ${channel.id}`); return; } const user = this.getUserFromMember(data); if (user) { this.client.emit(Events.TYPING_START, new Typing(channel, user, data)); } } } module.exports = TypingStart; }); // node_modules/discord.js-selfbot-v13/src/client/actions/UserUpdate.js var require_UserUpdate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class UserUpdateAction extends Action { handle(data) { const client = this.client; const newUser = data.id === client.user.id ? client.user : client.users.cache.get(data.id); const oldUser = newUser._update(data); if (!oldUser.equals(newUser)) { client.emit(Events.USER_UPDATE, oldUser, newUser); return { old: oldUser, updated: newUser }; } return { old: null, updated: null }; } } module.exports = UserUpdateAction; }); // node_modules/discord.js-selfbot-v13/src/client/actions/VoiceStateUpdate.js var require_VoiceStateUpdate = __commonJS((exports, module) => { var Action = require_Action(); var VoiceState = require_VoiceState(); var { Events } = require_Constants(); class VoiceStateUpdate extends Action { handle(data) { const client = this.client; const guild = client.guilds.cache.get(data.guild_id); if (guild) { const oldState = guild.voiceStates.cache.get(data.user_id)?._clone() ?? new VoiceState(guild, { user_id: data.user_id }); const newState = guild.voiceStates._add(data); let member = guild.members.cache.get(data.user_id); if (member && data.member) { member._patch(data.member); } else if (data.member?.user && data.member.joined_at) { member = guild.members._add(data.member); } client.emit(Events.VOICE_STATE_UPDATE, oldState, newState); } else { const oldState = client.voiceStates.cache.get(data.user_id)?._clone() ?? new VoiceState({ client }, { user_id: data.user_id }); const newState = client.voiceStates._add(data); client.emit(Events.VOICE_STATE_UPDATE, oldState, newState); } if (data.user_id === client.user?.id) { client.emit("debug", `[VOICE] received voice state update: ${JSON.stringify(data)}`); client.voice.onVoiceStateUpdate(data); } } } module.exports = VoiceStateUpdate; }); // node_modules/discord.js-selfbot-v13/src/client/actions/WebhooksUpdate.js var require_WebhooksUpdate = __commonJS((exports, module) => { var Action = require_Action(); var { Events } = require_Constants(); class WebhooksUpdate extends Action { handle(data) { const client = this.client; const channel = client.channels.cache.get(data.channel_id); if (channel) client.emit(Events.WEBHOOKS_UPDATE, channel); } } module.exports = WebhooksUpdate; }); // node_modules/discord.js-selfbot-v13/src/client/actions/ActionsManager.js var require_ActionsManager = __commonJS((exports, module) => { class ActionsManager { constructor(client) { this.client = client; this.injectedUser = Symbol("djs.actions.injectedUser"); this.injectedChannel = Symbol("djs.actions.injectedChannel"); this.injectedMessage = Symbol("djs.actions.injectedMessage"); this.register(require_ApplicationCommandPermissionsUpdate()); this.register(require_AutoModerationActionExecution2()); this.register(require_AutoModerationRuleCreate()); this.register(require_AutoModerationRuleDelete()); this.register(require_AutoModerationRuleUpdate()); this.register(require_ChannelCreate()); this.register(require_ChannelDelete()); this.register(require_ChannelUpdate()); this.register(require_GuildAuditLogEntryCreate()); this.register(require_GuildBanAdd()); this.register(require_GuildBanRemove()); this.register(require_GuildChannelsPositionUpdate()); this.register(require_GuildDelete()); this.register(require_GuildEmojiCreate()); this.register(require_GuildEmojiDelete()); this.register(require_GuildEmojiUpdate()); this.register(require_GuildEmojisUpdate()); this.register(require_GuildIntegrationsUpdate()); this.register(require_GuildMemberRemove()); this.register(require_GuildMemberUpdate()); this.register(require_GuildRoleCreate()); this.register(require_GuildRoleDelete()); this.register(require_GuildRoleUpdate()); this.register(require_GuildRolesPositionUpdate()); this.register(require_GuildScheduledEventCreate()); this.register(require_GuildScheduledEventDelete()); this.register(require_GuildScheduledEventUpdate()); this.register(require_GuildScheduledEventUserAdd()); this.register(require_GuildScheduledEventUserRemove()); this.register(require_GuildStickerCreate()); this.register(require_GuildStickerDelete()); this.register(require_GuildStickerUpdate()); this.register(require_GuildStickersUpdate()); this.register(require_GuildUpdate()); this.register(require_InviteCreate()); this.register(require_InviteDelete()); this.register(require_MessageCreate()); this.register(require_MessageDelete()); this.register(require_MessageDeleteBulk()); this.register(require_MessagePollVoteAdd()); this.register(require_MessagePollVoteRemove()); this.register(require_MessageReactionAdd()); this.register(require_MessageReactionRemove()); this.register(require_MessageReactionRemoveAll()); this.register(require_MessageReactionRemoveEmoji()); this.register(require_MessageUpdate()); this.register(require_PresenceUpdate()); this.register(require_StageInstanceCreate()); this.register(require_StageInstanceDelete()); this.register(require_StageInstanceUpdate()); this.register(require_ThreadCreate()); this.register(require_ThreadDelete()); this.register(require_ThreadListSync()); this.register(require_ThreadMemberUpdate()); this.register(require_ThreadMembersUpdate()); this.register(require_TypingStart()); this.register(require_UserUpdate()); this.register(require_VoiceStateUpdate()); this.register(require_WebhooksUpdate()); } register(Action) { this[Action.name.replace(/Action$/, "")] = new Action(this.client); } } module.exports = ActionsManager; }); // node_modules/discord.js-selfbot-v13/src/client/voice/networking/VoiceUDPClient.js var require_VoiceUDPClient = __commonJS((exports, module) => { function parseLocalPacket(message) { try { const packet = Buffer2.from(message); const address = packet.subarray(8, packet.indexOf(0, 8)).toString("utf8"); if (!isIP(address)) { throw new Error2("UDP_ADDRESS_MALFORMED"); } const port = packet.readUInt16BE(packet.length - 2); return { address, port }; } catch (error) { return { error }; } } var udp = import.meta.require("dgram"); var EventEmitter = import.meta.require("events"); var { isIP } = import.meta.require("net"); var { Buffer: Buffer2 } = import.meta.require("buffer"); var { Error: Error2 } = require_errors(); var { VoiceOpcodes } = require_Constants(); var Util = require_Util(); class VoiceConnectionUDPClient extends EventEmitter { constructor(voiceConnection) { super(); this.voiceConnection = voiceConnection; this.socket = null; this.discordAddress = null; this.localAddress = null; this.localPort = null; this.voiceConnection.on("closing", this.shutdown.bind(this)); } shutdown() { this.emit("debug", `[UDP] shutdown requested`); if (this.socket) { this.socket.removeAllListeners("message"); try { this.socket.close(); } finally { this.socket = null; } } } get discordPort() { return this.voiceConnection.authentication.port; } send(packet) { return new Promise((resolve, reject) => { if (!this.socket) throw new Error2("UDP_SEND_FAIL"); if (!this.discordAddress || !this.discordPort) throw new Error2("UDP_ADDRESS_MALFORMED"); this.socket.send(packet, 0, packet.length, this.discordPort, this.discordAddress, (error) => { if (error) { this.emit("debug", `[UDP] >> ERROR: ${error}`); reject(error); } else { resolve(packet); } }); }); } async createUDPSocket(address) { this.discordAddress = address; const socket = this.socket = udp.createSocket("udp4"); socket.on("error", (e) => { this.emit("debug", `[UDP] Error: ${e}`); this.emit("error", e); }); socket.on("close", () => { this.emit("debug", "[UDP] socket closed"); }); this.emit("debug", `[UDP] created socket`); socket.once("message", (message) => { this.emit("debug", `[UDP] message: [${[...message]}] (${message})`); if (message.readUInt16BE(0) !== 2) { throw new Error2("UDP_WRONG_HANDSHAKE"); } if (!this.voiceConnection.sockets.ws) return; const packet = parseLocalPacket(message); if (packet.error) { this.emit("debug", `[UDP] ERROR: ${packet.error}`); this.emit("error", packet.error); return; } this.emit("debug", `[UDP] Parse local packet: ${packet.address}:${packet.port}`); this.localAddress = packet.address; this.localPort = packet.port; this.voiceConnection.sockets.ws.sendPacket({ op: VoiceOpcodes.SELECT_PROTOCOL, d: { protocol: "udp", codecs: Util.getAllPayloadType(), data: { address: packet.address, port: packet.port, mode: this.voiceConnection.authentication.mode } } }); Object.defineProperty(this.voiceConnection, "videoCodec", { value: this.voiceConnection.videoCodec, writable: false }); this.emit("debug", `[UDP] << ${JSON.stringify(packet)}`); socket.on("message", (buffer) => this.voiceConnection.receiver.packets.push(buffer)); }); const blankMessage = Buffer2.alloc(74); blankMessage.writeUInt16BE(1, 0); blankMessage.writeUInt16BE(70, 2); blankMessage.writeUInt32BE(this.voiceConnection.authentication.ssrc, 4); this.emit("debug", `Sending IP discovery packet: [${[...blankMessage]}]`); await this.send(blankMessage); this.emit("debug", `Successfully sent IP discovery packet`); } } module.exports = VoiceConnectionUDPClient; }); // node_modules/discord.js-selfbot-v13/src/WebSocket.js var require_WebSocket = __commonJS((exports) => { var erlpack; var { Buffer: Buffer2 } = import.meta.require("buffer"); try { erlpack = (()=>{throw new Error(`Cannot require module "erlpack"`);})(); if (!erlpack.pack) erlpack = null; } catch { } exports.WebSocket = import.meta.require("ws"); var ab = new TextDecoder; exports.encoding = erlpack ? "etf" : "json"; exports.pack = erlpack ? erlpack.pack : JSON.stringify; exports.unpack = (data, type) => { if (exports.encoding === "json" || type === "json") { if (typeof data !== "string") { data = ab.decode(data); } return JSON.parse(data); } if (!Buffer2.isBuffer(data)) data = Buffer2.from(new Uint8Array(data)); return erlpack.unpack(data); }; exports.create = (gateway, query = {}, ...args) => { const [g, q] = gateway.split("?"); query.encoding = exports.encoding; query = new URLSearchParams(query); if (q) new URLSearchParams(q).forEach((v, k) => query.set(k, v)); const ws = new exports.WebSocket(`${g}?${query}`, ...args); return ws; }; for (const state of ["CONNECTING", "OPEN", "CLOSING", "CLOSED"]) exports[state] = exports.WebSocket[state]; }); // node_modules/discord.js-selfbot-v13/src/client/voice/networking/VoiceWebSocket.js var require_VoiceWebSocket = __commonJS((exports, module) => { var EventEmitter = import.meta.require("events"); var { setTimeout: setTimeout2, setInterval: setInterval2 } = import.meta.require("timers"); var WebSocket = require_WebSocket(); var { Error: Error2 } = require_errors(); var { Opcodes, VoiceOpcodes } = require_Constants(); class VoiceWebSocket extends EventEmitter { constructor(connection) { super(); this.connection = connection; this.attempts = 0; this._sequenceNumber = -1; this.dead = false; this.connection.on("closing", this.shutdown.bind(this)); } get client() { return this.connection.client; } shutdown() { this.emit("debug", `[WS] shutdown requested`); this.dead = true; this.reset(); } reset() { this.emit("debug", `[WS] reset requested`); if (this.ws) { if (this.ws.readyState !== WebSocket.CLOSED) this.ws.close(); this.ws = null; } this.clearHeartbeat(); } connect() { this.emit("debug", `[WS] connect requested`); if (this.dead) return; if (this.ws) this.reset(); if (this.attempts >= 5) { this.emit("debug", new Error2("VOICE_CONNECTION_ATTEMPTS_EXCEEDED", this.attempts)); return; } this.attempts++; this.ws = WebSocket.create(`wss://${this.connection.authentication.endpoint}/`, { v: 8 }); this.emit("debug", `[WS] connecting, ${this.attempts} attempts, ${this.ws.url}`); this.ws.onopen = this.onOpen.bind(this); this.ws.onmessage = this.onMessage.bind(this); this.ws.onclose = this.onClose.bind(this); this.ws.onerror = this.onError.bind(this); } send(data) { this.emit("debug", `[WS] >> ${data}`); return new Promise((resolve, reject) => { if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error2("WS_NOT_OPEN", data); this.ws.send(data, null, (error) => { if (error) reject(error); else resolve(data); }); }); } async sendPacket(packet) { packet = JSON.stringify(packet); return this.send(packet); } onOpen() { this.emit("debug", `[WS] opened at gateway ${this.connection.authentication.endpoint}`); this.sendPacket({ op: Opcodes.DISPATCH, d: { server_id: this.connection.serverId || this.connection.channel.guild?.id || this.connection.channel.id, user_id: this.client.user.id, token: this.connection.authentication.token, session_id: this.connection.authentication.sessionId, streams: [{ type: "screen", rid: "100", quality: 100 }], video: true } }).catch(() => { this.emit("error", new Error2("VOICE_JOIN_SOCKET_CLOSED")); }); } onMessage(event) { try { return this.onPacket(WebSocket.unpack(event.data, "json")); } catch (error) { return this.onError(error); } } onClose(event) { this.emit("debug", `[WS] closed with code ${event.code} and reason: ${event.reason}`); if (!this.dead) setTimeout2(this.connect.bind(this), this.attempts * 1000).unref(); } onError(error) { this.emit("debug", `[WS] Error: ${error}`); this.emit("error", error); } onPacket(packet) { this.emit("debug", `[WS] << ${JSON.stringify(packet)}`); if (packet.seq) this._sequenceNumber = packet.seq; switch (packet.op) { case VoiceOpcodes.HELLO: this.setHeartbeat(packet.d.heartbeat_interval); break; case VoiceOpcodes.READY: this.emit("ready", packet.d); this.connection.setVideoStatus(false); break; case VoiceOpcodes.SESSION_DESCRIPTION: packet.d.secret_key = new Uint8Array(packet.d.secret_key); this.emit("sessionDescription", packet.d); break; case VoiceOpcodes.CLIENT_CONNECT: this.connection.ssrcMap.set(+packet.d.audio_ssrc, { userId: packet.d.user_id, speaking: 0, hasVideo: Boolean(packet.d.video_ssrc) }); break; case VoiceOpcodes.CLIENT_DISCONNECT: const streamInfo = this.connection.receiver && this.connection.receiver.packets.streams.get(packet.d.user_id); if (streamInfo) { this.connection.receiver.packets.streams.delete(packet.d.user_id); streamInfo.stream.push(null); } break; case VoiceOpcodes.SPEAKING: this.emit("startSpeaking", packet.d); break; case VoiceOpcodes.SOURCES: this.emit("startStreaming", packet.d); break; default: this.emit("unknownPacket", packet); break; } } setHeartbeat(interval) { if (!interval || isNaN(interval)) { this.onError(new Error2("VOICE_INVALID_HEARTBEAT")); return; } if (this.heartbeatInterval) { this.emit("warn", "A voice heartbeat interval is being overwritten"); clearInterval(this.heartbeatInterval); } this.heartbeatInterval = setInterval2(this.sendHeartbeat.bind(this), interval).unref(); } clearHeartbeat() { if (!this.heartbeatInterval) { this.emit("warn", "Tried to clear a heartbeat interval that does not exist"); return; } clearInterval(this.heartbeatInterval); this.heartbeatInterval = null; } sendHeartbeat() { this.sendPacket({ op: VoiceOpcodes.HEARTBEAT, d: { t: Date.now(), seq_ack: this._sequenceNumber } }).catch(() => { this.emit("warn", "Tried to send heartbeat, but connection is not open"); this.clearHeartbeat(); }); } } module.exports = VoiceWebSocket; }); // node_modules/discord.js-selfbot-v13/node_modules/prism-media/src/util/loader.js var require_loader = __commonJS((exports) => { exports.require = function loader(list) { const errorLog = []; for (const [name, fn] of list) { try { const data = fn(import.meta.require(name)); data.name = name; return data; } catch (e) { errorLog.push(e); } } throw new Error(errorLog.join("\n")); }; }); // node_modules/discord.js-selfbot-v13/node_modules/prism-media/src/opus/Opus.js var require_Opus = __commonJS((exports, module) => { function loadOpus(refresh = false) { if (Opus.Encoder && !refresh) return Opus; Opus = loader.require([ ["@discordjs/opus", (opus) => ({ Encoder: opus.OpusEncoder })], ["node-opus", (opus) => ({ Encoder: opus.OpusEncoder })], ["opusscript", (opus) => ({ Encoder: opus })] ]); return Opus; } var { Transform } = import.meta.require("stream"); var loader = require_loader(); var CTL = { BITRATE: 4002, FEC: 4012, PLP: 4014 }; var Opus = {}; var charCode = (x) => x.charCodeAt(0); var OPUS_HEAD = Buffer.from([..."OpusHead"].map(charCode)); var OPUS_TAGS = Buffer.from([..."OpusTags"].map(charCode)); class OpusStream extends Transform { constructor(options = {}) { if (!loadOpus().Encoder) { throw Error("Could not find an Opus module! Please install @discordjs/opus, node-opus, or opusscript."); } super(Object.assign({ readableObjectMode: true }, options)); if (Opus.name === "opusscript") { options.application = Opus.Encoder.Application[options.application]; } this.encoder = new Opus.Encoder(options.rate, options.channels, options.application); this._options = options; this._required = this._options.frameSize * this._options.channels * 2; } _encode(buffer) { return this.encoder.encode(buffer, this._options.frameSize); } _decode(buffer) { return this.encoder.decode(buffer, Opus.name === "opusscript" ? null : this._options.frameSize); } static get type() { return Opus.name; } setBitrate(bitrate) { (this.encoder.applyEncoderCTL || this.encoder.encoderCTL).apply(this.encoder, [CTL.BITRATE, Math.min(128000, Math.max(16000, bitrate))]); } setFEC(enabled) { (this.encoder.applyEncoderCTL || this.encoder.encoderCTL).apply(this.encoder, [CTL.FEC, enabled ? 1 : 0]); } setPLP(percentage) { (this.encoder.applyEncoderCTL || this.encoder.encoderCTL).apply(this.encoder, [CTL.PLP, Math.min(100, Math.max(0, percentage * 100))]); } _final(cb) { this._cleanup(); cb(); } _destroy(err, cb) { this._cleanup(); return cb ? cb(err) : undefined; } _cleanup() { if (Opus.name === "opusscript" && this.encoder) this.encoder.delete(); this.encoder = null; } } class Encoder extends OpusStream { constructor(options) { super(options); this._buffer = Buffer.alloc(0); } _transform(chunk, encoding, done) { this._buffer = Buffer.concat([this._buffer, chunk]); let n = 0; while (this._buffer.length >= this._required * (n + 1)) { const buf = this._encode(this._buffer.slice(n * this._required, (n + 1) * this._required)); this.push(buf); n++; } if (n > 0) this._buffer = this._buffer.slice(n * this._required); return done(); } _destroy(err, cb) { super._destroy(err, cb); this._buffer = null; } } class Decoder extends OpusStream { _transform(chunk, encoding, done) { const signature = chunk.slice(0, 8); if (chunk.length >= 8 && signature.equals(OPUS_HEAD)) { this.emit("format", { channels: this._options.channels, sampleRate: this._options.rate, bitDepth: 16, float: false, signed: true, version: chunk.readUInt8(8), preSkip: chunk.readUInt16LE(10), gain: chunk.readUInt16LE(16) }); return done(); } if (chunk.length >= 8 && signature.equals(OPUS_TAGS)) { this.emit("tags", chunk); return done(); } try { this.push(this._decode(chunk)); } catch (e) { return done(e); } return done(); } } module.exports = { Decoder, Encoder }; }); // node_modules/discord.js-selfbot-v13/node_modules/prism-media/src/opus/OggDemuxer.js var require_OggDemuxer = __commonJS((exports, module) => { var { Transform } = import.meta.require("stream"); var OGG_PAGE_HEADER_SIZE = 26; var STREAM_STRUCTURE_VERSION = 0; var charCode = (x) => x.charCodeAt(0); var OGGS_HEADER = Buffer.from([..."OggS"].map(charCode)); var OPUS_HEAD = Buffer.from([..."OpusHead"].map(charCode)); var OPUS_TAGS = Buffer.from([..."OpusTags"].map(charCode)); class OggDemuxer extends Transform { constructor(options = {}) { super(Object.assign({ readableObjectMode: true }, options)); this._remainder = null; this._head = null; this._bitstream = null; } _transform(chunk, encoding, done) { if (this._remainder) { chunk = Buffer.concat([this._remainder, chunk]); this._remainder = null; } try { while (chunk) { const result = this._readPage(chunk); if (result) chunk = result; else break; } } catch (error) { done(error); return; } this._remainder = chunk; done(); } _readPage(chunk) { if (chunk.length < OGG_PAGE_HEADER_SIZE) { return false; } if (!chunk.slice(0, 4).equals(OGGS_HEADER)) { throw Error(`capture_pattern is not ${OGGS_HEADER}`); } if (chunk.readUInt8(4) !== STREAM_STRUCTURE_VERSION) { throw Error(`stream_structure_version is not ${STREAM_STRUCTURE_VERSION}`); } if (chunk.length < 27) return false; const pageSegments = chunk.readUInt8(26); if (chunk.length < 27 + pageSegments) return false; const table = chunk.slice(27, 27 + pageSegments); const bitstream = chunk.readUInt32BE(14); let sizes = [], totalSize = 0; for (let i = 0;i < pageSegments; ) { let size = 0, x = 255; while (x === 255) { if (i >= table.length) return false; x = table.readUInt8(i); i++; size += x; } sizes.push(size); totalSize += size; } if (chunk.length < 27 + pageSegments + totalSize) return false; let start = 27 + pageSegments; for (const size of sizes) { const segment = chunk.slice(start, start + size); const header = segment.slice(0, 8); if (this._head) { if (header.equals(OPUS_TAGS)) this.emit("tags", segment); else if (this._bitstream === bitstream) this.push(segment); } else if (header.equals(OPUS_HEAD)) { this.emit("head", segment); this._head = segment; this._bitstream = bitstream; } else { this.emit("unknownSegment", segment); } start += size; } return chunk.slice(start); } _destroy(err, cb) { this._cleanup(); return cb ? cb(err) : undefined; } _final(cb) { this._cleanup(); cb(); } _cleanup() { this._remainder = null; this._head = null; this._bitstream = null; } } module.exports = OggDemuxer; }); // node_modules/discord.js-selfbot-v13/node_modules/prism-media/src/core/WebmBase.js var require_WebmBase = __commonJS((exports, module) => { function vintLength(buffer, index) { if (index < 0 || index > buffer.length - 1) { return TOO_SHORT; } let i = 0; for (;i < 8; i++) if (1 << 7 - i & buffer[index]) break; i++; if (index + i > buffer.length) { return TOO_SHORT; } return i; } function expandVint(buffer, start, end) { const length = vintLength(buffer, start); if (end > buffer.length || length === TOO_SHORT) return TOO_SHORT; let mask = (1 << 8 - length) - 1; let value = buffer[start] & mask; for (let i = start + 1;i < end; i++) { value = (value << 8) + buffer[i]; } return value; } var { Transform } = import.meta.require("stream"); class WebmBaseDemuxer extends Transform { constructor(options = {}) { super(Object.assign({ readableObjectMode: true }, options)); this._remainder = null; this._length = 0; this._count = 0; this._skipUntil = null; this._track = null; this._incompleteTrack = {}; this._ebmlFound = false; } _transform(chunk, encoding, done) { this._length += chunk.length; if (this._remainder) { chunk = Buffer.concat([this._remainder, chunk]); this._remainder = null; } let offset = 0; if (this._skipUntil && this._length > this._skipUntil) { offset = this._skipUntil - this._count; this._skipUntil = null; } else if (this._skipUntil) { this._count += chunk.length; done(); return; } let result; while (result !== TOO_SHORT) { try { result = this._readTag(chunk, offset); } catch (error) { done(error); return; } if (result === TOO_SHORT) break; if (result._skipUntil) { this._skipUntil = result._skipUntil; break; } if (result.offset) offset = result.offset; else break; } this._count += offset; this._remainder = chunk.slice(offset); done(); return; } _readEBMLId(chunk, offset) { const idLength = vintLength(chunk, offset); if (idLength === TOO_SHORT) return TOO_SHORT; return { id: chunk.slice(offset, offset + idLength), offset: offset + idLength }; } _readTagDataSize(chunk, offset) { const sizeLength = vintLength(chunk, offset); if (sizeLength === TOO_SHORT) return TOO_SHORT; const dataLength = expandVint(chunk, offset, offset + sizeLength); return { offset: offset + sizeLength, dataLength, sizeLength }; } _readTag(chunk, offset) { const idData = this._readEBMLId(chunk, offset); if (idData === TOO_SHORT) return TOO_SHORT; const ebmlID = idData.id.toString("hex"); if (!this._ebmlFound) { if (ebmlID === "1a45dfa3") this._ebmlFound = true; else throw Error("Did not find the EBML tag at the start of the stream"); } offset = idData.offset; const sizeData = this._readTagDataSize(chunk, offset); if (sizeData === TOO_SHORT) return TOO_SHORT; const { dataLength } = sizeData; offset = sizeData.offset; if (typeof TAGS[ebmlID] === "undefined") { if (chunk.length > offset + dataLength) { return { offset: offset + dataLength }; } return { offset, _skipUntil: this._count + offset + dataLength }; } const tagHasChildren = TAGS[ebmlID]; if (tagHasChildren) { return { offset }; } if (offset + dataLength > chunk.length) return TOO_SHORT; const data = chunk.slice(offset, offset + dataLength); if (!this._track) { if (ebmlID === "ae") this._incompleteTrack = {}; if (ebmlID === "d7") this._incompleteTrack.number = data[0]; if (ebmlID === "83") this._incompleteTrack.type = data[0]; if (this._incompleteTrack.type === 2 && typeof this._incompleteTrack.number !== "undefined") { this._track = this._incompleteTrack; } } if (ebmlID === "63a2") { this._checkHead(data); this.emit("head", data); } else if (ebmlID === "a3") { if (!this._track) throw Error("No audio track in this webm!"); if ((data[0] & 15) === this._track.number) { this.push(data.slice(4)); } } return { offset: offset + dataLength }; } _destroy(err, cb) { this._cleanup(); return cb ? cb(err) : undefined; } _final(cb) { this._cleanup(); cb(); } _cleanup() { this._remainder = null; this._incompleteTrack = {}; } } var TOO_SHORT = WebmBaseDemuxer.TOO_SHORT = Symbol("TOO_SHORT"); var TAGS = WebmBaseDemuxer.TAGS = { "1a45dfa3": true, "18538067": true, "1f43b675": true, "1654ae6b": true, ae: true, d7: false, "83": false, a3: false, "63a2": false }; module.exports = WebmBaseDemuxer; }); // node_modules/discord.js-selfbot-v13/node_modules/prism-media/src/opus/WebmDemuxer.js var require_WebmDemuxer = __commonJS((exports, module) => { var WebmBaseDemuxer = require_WebmBase(); var OPUS_HEAD = Buffer.from([..."OpusHead"].map((x) => x.charCodeAt(0))); class WebmDemuxer extends WebmBaseDemuxer { _checkHead(data) { if (!data.slice(0, 8).equals(OPUS_HEAD)) { throw Error("Audio codec is not Opus!"); } } } module.exports = WebmDemuxer; }); // node_modules/discord.js-selfbot-v13/node_modules/prism-media/src/opus/index.js var require_opus = __commonJS((exports, module) => { module.exports = { ...require_Opus(), OggDemuxer: require_OggDemuxer(), WebmDemuxer: require_WebmDemuxer() }; }); // node_modules/discord.js-selfbot-v13/node_modules/prism-media/src/vorbis/WebmDemuxer.js var require_WebmDemuxer2 = __commonJS((exports, module) => { var WebmBaseDemuxer = require_WebmBase(); var VORBIS_HEAD = Buffer.from([..."vorbis"].map((x) => x.charCodeAt(0))); class WebmDemuxer extends WebmBaseDemuxer { _checkHead(data) { if (data.readUInt8(0) !== 2 || !data.slice(4, 10).equals(VORBIS_HEAD)) { throw Error("Audio codec is not Vorbis!"); } this.push(data.slice(3, 3 + data.readUInt8(1))); this.push(data.slice(3 + data.readUInt8(1), 3 + data.readUInt8(1) + data.readUInt8(2))); this.push(data.slice(3 + data.readUInt8(1) + data.readUInt8(2))); } } module.exports = WebmDemuxer; }); // node_modules/discord.js-selfbot-v13/node_modules/prism-media/src/vorbis/index.js var require_vorbis = __commonJS((exports, module) => { module.exports = { WebmDemuxer: require_WebmDemuxer2() }; }); // node_modules/ffmpeg-static/package.json var require_package = __commonJS((exports, module) => { module.exports = { name: "ffmpeg-static", version: "5.3.0", description: "ffmpeg binaries for macOS, Linux and Windows", scripts: { install: "node install.js", prepublishOnly: "npm run install" }, "ffmpeg-static": { "binary-path-env-var": "FFMPEG_BIN", "binary-release-tag-env-var": "FFMPEG_BINARY_RELEASE", "binary-release-tag": "b6.1.1", "binaries-url-env-var": "FFMPEG_BINARIES_URL", "executable-base-name": "ffmpeg" }, repository: { type: "git", url: "https://github.com/eugeneware/ffmpeg-static" }, keywords: [ "ffmpeg", "static", "binary", "binaries", "mac", "linux", "windows" ], authors: [ "Eugene Ware ", "Jannis R " ], contributors: [ "Thefrank (https://github.com/Thefrank)", "Emil Sivervik " ], license: "GPL-3.0-or-later", bugs: { url: "https://github.com/eugeneware/ffmpeg-static/issues" }, engines: { node: ">=16" }, dependencies: { "@derhuerst/http-basic": "^8.2.0", "env-paths": "^2.2.0", "https-proxy-agent": "^5.0.0", progress: "^2.0.3" }, devDependencies: { "any-shell-escape": "^0.1.1" }, main: "index.js", files: [ "index.js", "install.js", "example.js", "types" ], types: "types/index.d.ts" }; }); // node_modules/ffmpeg-static/index.js var require_ffmpeg_static = __commonJS((exports, module) => { var __dirname = "/home/baharsah/Documents/pro/bot/node_modules/ffmpeg-static"; var pkg = require_package(); var { "binary-path-env-var": BINARY_PATH_ENV_VAR, "executable-base-name": executableBaseName } = pkg[pkg.name]; if (typeof BINARY_PATH_ENV_VAR !== "string") { throw new Error(`package.json: invalid/missing ${pkg.name}.binary-path-env-var entry`); } if (typeof executableBaseName !== "string") { throw new Error(`package.json: invalid/missing ${pkg.name}.executable-base-name entry`); } if (process.env[BINARY_PATH_ENV_VAR]) { module.exports = process.env[BINARY_PATH_ENV_VAR]; } else { os = import.meta.require("os"); path = import.meta.require("path"); binaries = Object.assign(Object.create(null), { darwin: ["x64", "arm64"], freebsd: ["x64"], linux: ["x64", "ia32", "arm64", "arm"], win32: ["x64", "ia32"] }); platform = process.env.npm_config_platform || os.platform(); arch = process.env.npm_config_arch || os.arch(); let binaryPath = path.join(__dirname, executableBaseName + (platform === "win32" ? ".exe" : "")); if (!binaries[platform] || binaries[platform].indexOf(arch) === -1) { binaryPath = null; } module.exports = binaryPath; } var os; var path; var binaries; var platform; var arch; }); // node_modules/discord.js-selfbot-v13/node_modules/prism-media/src/core/FFmpeg.js var require_FFmpeg = __commonJS((exports, module) => { var ChildProcess = import.meta.require("child_process"); var { Duplex } = import.meta.require("stream"); var FFMPEG = { command: null, output: null }; var VERSION_REGEX = /version (.+) Copyright/mi; Object.defineProperty(FFMPEG, "version", { get() { return VERSION_REGEX.exec(FFMPEG.output)[1]; }, enumerable: true }); class FFmpeg extends Duplex { constructor(options = {}) { super(); this.process = FFmpeg.create({ shell: false, ...options }); const EVENTS = { readable: this._reader, data: this._reader, end: this._reader, unpipe: this._reader, finish: this._writer, drain: this._writer }; this._readableState = this._reader._readableState; this._writableState = this._writer._writableState; this._copy(["write", "end"], this._writer); this._copy(["read", "setEncoding", "pipe", "unpipe"], this._reader); for (const method of ["on", "once", "removeListener", "removeListeners", "listeners"]) { this[method] = (ev, fn) => EVENTS[ev] ? EVENTS[ev][method](ev, fn) : Duplex.prototype[method].call(this, ev, fn); } const processError = (error) => this.emit("error", error); this._reader.on("error", processError); this._writer.on("error", processError); } get _reader() { return this.process.stdout; } get _writer() { return this.process.stdin; } _copy(methods, target) { for (const method of methods) { this[method] = target[method].bind(target); } } _destroy(err, cb) { this._cleanup(); return cb ? cb(err) : undefined; } _final(cb) { this._cleanup(); cb(); } _cleanup() { if (this.process) { this.once("error", () => { }); this.process.kill("SIGKILL"); this.process = null; } } static getInfo(force = false) { if (FFMPEG.command && !force) return FFMPEG; const sources = [() => { const ffmpegStatic = require_ffmpeg_static(); return ffmpegStatic.path || ffmpegStatic; }, "ffmpeg", "avconv", "./ffmpeg", "./avconv"]; for (let source of sources) { try { if (typeof source === "function") source = source(); const result = ChildProcess.spawnSync(source, ["-h"], { windowsHide: true }); if (result.error) throw result.error; Object.assign(FFMPEG, { command: source, output: Buffer.concat(result.output.filter(Boolean)).toString() }); return FFMPEG; } catch (error) { } } throw new Error("FFmpeg/avconv not found!"); } static create({ args = [], shell = false } = {}) { if (!args.includes("-i")) args.unshift("-i", "-"); return ChildProcess.spawn(FFmpeg.getInfo().command, args.concat(["pipe:1"]), { windowsHide: true, shell }); } } module.exports = FFmpeg; }); // node_modules/discord.js-selfbot-v13/node_modules/prism-media/src/core/VolumeTransformer.js var require_VolumeTransformer = __commonJS((exports, module) => { var { Transform } = import.meta.require("stream"); class VolumeTransformer extends Transform { constructor(options = {}) { super(options); switch (options.type) { case "s16le": this._readInt = (buffer, index) => buffer.readInt16LE(index); this._writeInt = (buffer, int, index) => buffer.writeInt16LE(int, index); this._bits = 16; break; case "s16be": this._readInt = (buffer, index) => buffer.readInt16BE(index); this._writeInt = (buffer, int, index) => buffer.writeInt16BE(int, index); this._bits = 16; break; case "s32le": this._readInt = (buffer, index) => buffer.readInt32LE(index); this._writeInt = (buffer, int, index) => buffer.writeInt32LE(int, index); this._bits = 32; break; case "s32be": this._readInt = (buffer, index) => buffer.readInt32BE(index); this._writeInt = (buffer, int, index) => buffer.writeInt32BE(int, index); this._bits = 32; break; default: throw new Error("VolumeTransformer type should be one of s16le, s16be, s32le, s32be"); } this._bytes = this._bits / 8; this._extremum = Math.pow(2, this._bits - 1); this.volume = typeof options.volume === "undefined" ? 1 : options.volume; this._chunk = Buffer.alloc(0); } _readInt(buffer, index) { return index; } _writeInt(buffer, int, index) { return index; } _transform(chunk, encoding, done) { if (this.volume === 1) { this.push(chunk); return done(); } const { _bytes, _extremum } = this; chunk = this._chunk = Buffer.concat([this._chunk, chunk]); if (chunk.length < _bytes) return done(); const complete = Math.floor(chunk.length / _bytes) * _bytes; for (let i = 0;i < complete; i += _bytes) { const int = Math.min(_extremum - 1, Math.max(-_extremum, Math.floor(this.volume * this._readInt(chunk, i)))); this._writeInt(chunk, int, i); } this._chunk = chunk.slice(complete); this.push(chunk.slice(0, complete)); return done(); } _destroy(err, cb) { super._destroy(err, cb); this._chunk = null; } setVolume(volume) { this.volume = volume; } setVolumeDecibels(db) { this.setVolume(Math.pow(10, db / 20)); } setVolumeLogarithmic(value) { this.setVolume(Math.pow(value, 1.660964)); } get volumeDecibels() { return Math.log10(this.volume) * 20; } get volumeLogarithmic() { return Math.pow(this.volume, 1 / 1.660964); } } module.exports = VolumeTransformer; }); // node_modules/discord.js-selfbot-v13/node_modules/prism-media/src/core/index.js var require_core2 = __commonJS((exports, module) => { module.exports = { FFmpeg: require_FFmpeg(), VolumeTransformer: require_VolumeTransformer() }; }); // node_modules/discord.js-selfbot-v13/node_modules/prism-media/src/index.js var require_src = __commonJS((exports, module) => { module.exports = { opus: require_opus(), vorbis: require_vorbis(), ...require_core2() }; }); // node_modules/discord.js-selfbot-v13/src/client/voice/player/processing/AnnexBNalSplitter.js var require_AnnexBNalSplitter = __commonJS((exports, module) => { var { Buffer: Buffer2 } = import.meta.require("buffer"); var { Transform } = import.meta.require("stream"); var H264NalUnitTypes = { Unspecified: 0, CodedSliceNonIDR: 1, CodedSlicePartitionA: 2, CodedSlicePartitionB: 3, CodedSlicePartitionC: 4, CodedSliceIdr: 5, SEI: 6, SPS: 7, PPS: 8, AccessUnitDelimiter: 9, EndOfSequence: 10, EndOfStream: 11, FillerData: 12, SEIExtenstion: 13, PrefixNalUnit: 14, SubsetSPS: 15 }; var H265NalUnitTypes = { TRAIL_N: 0, TRAIL_R: 1, TSA_N: 2, TSA_R: 3, STSA_N: 4, STSA_R: 5, RADL_N: 6, RADL_R: 7, RASL_N: 8, RASL_R: 9, RSV_VCL_N10: 10, RSV_VCL_R11: 11, RSV_VCL_N12: 12, RSV_VCL_R13: 13, RSV_VCL_N14: 14, RSV_VCL_R15: 15, BLA_W_LP: 16, BLA_W_RADL: 17, BLA_N_LP: 18, IDR_W_RADL: 19, IDR_N_LP: 20, CRA_NUT: 21, RSV_IRAP_VCL22: 22, RSV_IRAP_VCL23: 23, RSV_VCL24: 24, RSV_VCL25: 25, RSV_VCL26: 26, RSV_VCL27: 27, RSV_VCL28: 28, RSV_VCL29: 29, RSV_VCL30: 30, RSV_VCL31: 31, VPS_NUT: 32, SPS_NUT: 33, PPS_NUT: 34, AUD_NUT: 35, EOS_NUT: 36, EOB_NUT: 37, FD_NUT: 38, PREFIX_SEI_NUT: 39, SUFFIX_SEI_NUT: 40, RSV_NVCL41: 41, RSV_NVCL42: 42, RSV_NVCL43: 43, RSV_NVCL44: 44, RSV_NVCL45: 45, RSV_NVCL46: 46, RSV_NVCL47: 47, UNSPEC48: 48, UNSPEC49: 49, UNSPEC50: 50, UNSPEC51: 51, UNSPEC52: 52, UNSPEC53: 53, UNSPEC54: 54, UNSPEC55: 55, UNSPEC56: 56, UNSPEC57: 57, UNSPEC58: 58, UNSPEC59: 59, UNSPEC60: 60, UNSPEC61: 61, UNSPEC62: 62, UNSPEC63: 63 }; var H264Helpers = { getUnitType(frame) { return frame[0] & 31; }, splitHeader(frame) { return [frame.subarray(0, 1), frame.subarray(1)]; }, isAUD(unitType) { return unitType === H264NalUnitTypes.AccessUnitDelimiter; } }; var H265Helpers = { getUnitType(frame) { return frame[0] >> 1 & 63; }, splitHeader(frame) { return [frame.subarray(0, 2), frame.subarray(2)]; }, isAUD(unitType) { return unitType === H265NalUnitTypes.AUD_NUT; } }; var emptyBuffer = Buffer2.allocUnsafe(0); var epbPrefix = Buffer2.from([0, 0, 3]); var nalSuffix = Buffer2.from([0, 0, 1]); class AnnexBNalSplitter extends Transform { constructor(nalFunctions) { super(); this._buffer = null; this._accessUnit = []; this._nalFunctions = nalFunctions; } rbsp(data) { const newData = Buffer2.allocUnsafe(data.length); let newLength = 0; while (true) { const epbsPos = data.indexOf(epbPrefix); if (epbsPos === -1) { data.copy(newData, newLength); newLength += data.length; break; } const copyRange = data[epbsPos + 3] <= 3 ? epbsPos + 2 : epbsPos + 3; data.copy(newData, newLength, 0, copyRange); newLength += copyRange; data = data.subarray(epbsPos + 3); } return newData.subarray(0, newLength); } findNalStart(buf) { const pos = buf.indexOf(nalSuffix); if (pos === -1) return null; return pos > 0 && buf[pos - 1] === 0 ? { index: pos - 1, length: 4 } : { index: pos, length: 3 }; } processFrame(frame) { if (frame.length === 0) return; const unitType = this._nalFunctions.getUnitType(frame); if (this._nalFunctions.isAUD(unitType) && this._accessUnit.length > 0) { const sizeOfAccessUnit = this._accessUnit.reduce((acc, nalu) => acc + nalu.length + 4, 0); const accessUnitBuf = Buffer2.allocUnsafe(sizeOfAccessUnit); let offset = 0; this._accessUnit.forEach((nalu) => { accessUnitBuf.writeUint32BE(nalu.length, offset); offset += 4; nalu.copy(accessUnitBuf, offset); offset += nalu.length; }); this.push(accessUnitBuf); this._accessUnit = []; } else { this._accessUnit.push(this.removeEpbs(frame, unitType)); } } _transform(chunk, encoding, callback) { let nalStart = this.findNalStart(chunk); if (!this._buffer) { if (!nalStart) { callback(); return; } chunk = chunk.subarray(nalStart.index + nalStart.length); this._buffer = emptyBuffer; } chunk = Buffer2.concat([this._buffer, chunk]); while (nalStart = this.findNalStart(chunk)) { const frame = chunk.subarray(0, nalStart.index); this.processFrame(frame); chunk = chunk.subarray(nalStart.index + nalStart.length); } this._buffer = chunk; callback(); } } class H264NalSplitter extends AnnexBNalSplitter { constructor() { super(H264Helpers); } removeEpbs(frame, unitType) { return unitType === H264NalUnitTypes.SPS || unitType === H264NalUnitTypes.SEI ? this.rbsp(frame) : frame; } } class H265NalSplitter extends AnnexBNalSplitter { constructor() { super(H265Helpers); } removeEpbs(frame) { return frame; } } module.exports = { H264NalUnitTypes, H265NalUnitTypes, H264Helpers, H265Helpers, H264NalSplitter, H265NalSplitter }; }); // node_modules/discord.js-selfbot-v13/src/client/voice/player/processing/IvfSplitter.js var require_IvfSplitter = __commonJS((exports, module) => { var { Buffer: Buffer2 } = import.meta.require("buffer"); var { Transform } = import.meta.require("stream"); class IvfTransformer extends Transform { constructor(options) { super(options); this.headerSize = 32; this.frameHeaderSize = 12; this.header = null; this.buf = null; this.retFullFrame = options && options.fullframe ? options.fullframe : false; } _parseHeader(header) { this.header = { signature: header.subarray(0, 4).toString(), version: header.readUIntLE(4, 2), headerLength: header.readUIntLE(6, 2), codec: header.subarray(8, 12).toString(), width: header.readUIntLE(12, 2), height: header.readUIntLE(14, 2), timeDenominator: header.readUIntLE(16, 4), timeNumerator: header.readUIntLE(20, 4), frameCount: header.readUIntLE(24, 4) }; } _getFrameSize(buf) { return buf.readUIntLE(0, 4); } _parseFrame(frame) { const size = this._getFrameSize(frame); if (this.retFullFrame) return this.push(frame.subarray(0, 12 + size)); const out = { size, timestamp: frame.readBigUInt64LE(4), data: frame.subarray(12, 12 + size) }; return this.push(out.data); } _appendChunkToBuf(chunk) { if (this.buf) this.buf = Buffer2.concat([this.buf, chunk]); else this.buf = chunk; } _updateBufLen(size) { if (this.buf.length > size) this.buf = this.buf.subarray(size, this.buf.length); else this.buf = null; } _transform(chunk, encoding, callback) { this._appendChunkToBuf(chunk); if (!this.header) { if (this.buf.length >= this.headerSize) { this._parseHeader(this.buf.subarray(0, this.headerSize)); this._updateBufLen(this.headerSize); } else { callback(); return; } } while (this.buf && this.buf.length >= this.frameHeaderSize) { const size = this._getFrameSize(this.buf) + this.frameHeaderSize; if (this.buf.length >= size) { this._parseFrame(this.buf.subarray(0, size)); this._updateBufLen(size); } else { break; } } callback(); } } module.exports = { IvfTransformer }; }); // node_modules/discord.js-selfbot-v13/src/client/voice/util/Secretbox.js var require_Secretbox = __commonJS((exports) => { function NoLib() { throw new Error("Cannot play audio as no valid encryption package is installed.\n- Install sodium, libsodium-wrappers, or @stablelib/xchacha20poly1305."); } async function importModule(name, usingImport = false) { try { if (usingImport) { return await import(name); } else { return import.meta.require(name); } } catch (e) { if (e.code == "ERR_REQUIRE_ESM") { return importModule(name, true); } else { throw e; } } } var libs = { sodium: (sodium) => ({ crypto_aead_xchacha20poly1305_ietf_encrypt: (plaintext, additionalData, nonce, key) => sodium.api.crypto_aead_xchacha20poly1305_ietf_encrypt(plaintext, additionalData, null, nonce, key), crypto_aead_xchacha20poly1305_ietf_decrypt: (plaintext, additionalData, nonce, key) => sodium.api.crypto_aead_xchacha20poly1305_ietf_decrypt(plaintext, additionalData, null, nonce, key) }), "libsodium-wrappers": (sodium) => ({ crypto_aead_xchacha20poly1305_ietf_encrypt: (plaintext, additionalData, nonce, key) => sodium.crypto_aead_xchacha20poly1305_ietf_encrypt(plaintext, additionalData, null, nonce, key), crypto_aead_xchacha20poly1305_ietf_decrypt: (plaintext, additionalData, nonce, key) => sodium.crypto_aead_xchacha20poly1305_ietf_decrypt(null, plaintext, additionalData, nonce, key) }), "@stablelib/xchacha20poly1305": (stablelib) => ({ crypto_aead_xchacha20poly1305_ietf_encrypt(cipherText, additionalData, nonce, key) { const crypto = new stablelib.XChaCha20Poly1305(key); return crypto.seal(nonce, cipherText, additionalData); }, crypto_aead_xchacha20poly1305_ietf_decrypt(plaintext, additionalData, nonce, key) { const crypto = new stablelib.XChaCha20Poly1305(key); return crypto.open(nonce, plaintext, additionalData); } }) }; exports.methods = { crypto_aead_xchacha20poly1305_ietf_encrypt: NoLib, crypto_aead_xchacha20poly1305_ietf_decrypt: NoLib }; (async () => { for (const libName of Object.keys(libs)) { try { const lib = await importModule(libName); if (libName === "libsodium-wrappers" && lib.ready) await lib.ready; exports.methods = libs[libName](lib); break; } catch { } } })(); }); // node_modules/discord.js-selfbot-v13/src/client/voice/dispatcher/BaseDispatcher.js var require_BaseDispatcher = __commonJS((exports, module) => { var { Buffer: Buffer2 } = import.meta.require("buffer"); var crypto = import.meta.require("crypto"); var { Writable } = import.meta.require("stream"); var { setTimeout: setTimeout2 } = import.meta.require("timers"); var secretbox = require_Secretbox(); var MAX_UINT_16 = 2 ** 16 - 1; var MAX_UINT_32 = 2 ** 32 - 1; var extensions = [{ id: 5, length: 2, value: 0 }]; class BaseDispatcher extends Writable { constructor(player, highWaterMark = 12, payloadType, extensionEnabled, streams = {}) { super({ highWaterMark }); this.streams = streams; this.player = player; this.payloadType = payloadType; this.extensionEnabled = extensionEnabled; this._nonce = 0; this._nonceBuffer = null; this.pausedSince = null; this._writeCallback = null; this._pausedTime = 0; this._silentPausedTime = 0; this.count = 0; this.sequence = 0; this.timestamp = 0; const streamError = (type, err) => { if (type && err) { err.message = `${type} stream: ${err.message}`; this.emit(this.player.dispatcher === this ? "error" : "debug", err); } this.destroy(); }; this.on("error", () => streamError()); if (this.streams.input) this.streams.input.on("error", (err) => streamError("input", err)); if (this.streams.ffmpeg) this.streams.ffmpeg.on("error", (err) => streamError("ffmpeg", err)); if (this.streams.opus) this.streams.opus.on("error", (err) => streamError("opus", err)); if (this.streams.volume) this.streams.volume.on("error", (err) => streamError("volume", err)); this.on("finish", () => { this._cleanup(); this._setSpeaking(0); this._setVideoStatus(false); this._setStreamStatus(true); }); } getTypeDispatcher() { return "base"; } resetNonceBuffer() { this._nonceBuffer = this.player.voiceConnection.authentication.mode === "aead_aes256_gcm_rtpsize" ? Buffer2.alloc(12) : Buffer2.alloc(24); } getNewSequence() { const currentSeq = this.sequence; this.sequence++; if (this.sequence > MAX_UINT_16) this.sequence = 0; return currentSeq; } _write(chunk, enc, done) { if (!this.startTime) { this.emit("start"); this.startTime = performance.now(); } if (this._syncDispatcher && !this._syncDispatcher.startTime) { this.pause(); const cb = () => { this.resume(); clearTimeout(timeout); }; this._syncDispatcher.once("start", cb); let timeout = setTimeout2(() => { this.removeListener("start", cb); this.resume(); }, 1e4).unref(); } if (this.getTypeDispatcher() === "video") { this._codecCallback(chunk); } else { this._playChunk(chunk); } this._step(done); } _destroy(err, cb) { this._cleanup(); super._destroy(err, cb); } _cleanup() { if (this.player.dispatcher === this) { this.player.dispatcher.destroy(); this.player.dispatcher = null; } if (this.player.videoDispatcher === this) { this.player.videoDispatcher.destroy(); this.player.videoDispatcher = null; } const { streams } = this; if (streams.opus) streams.opus.destroy(); streams.ffmpeg?.destroy(); } pause(silence = false) { if (this.paused) return; if (this.streams.opus) this.streams.opus.unpipe(this); if (this.streams.video) { this.streams.ffmpeg.pause(); this.streams.video.unpipe(this); } if (this.getTypeDispatcher() === "audio") { if (silence) { this.streams.silence.pipe(this); this._silence = true; } else { this._setSpeaking(0); } } this.pausedSince = performance.now(); } get paused() { return Boolean(this.pausedSince); } get pausedTime() { return this._silentPausedTime + this._pausedTime + (this.paused ? performance.now() - this.pausedSince : 0); } resume() { if (!this.pausedSince) return; if (this.getTypeDispatcher() === "audio") this.streams.silence.unpipe(this); if (this.streams.opus) this.streams.opus.pipe(this); if (this.streams.video) { this.streams.ffmpeg.resume(); this.streams.video.pipe(this); } if (this._silence) { this._silentPausedTime += performance.now() - this.pausedSince; this._silence = false; } else { this._pausedTime += performance.now() - this.pausedSince; } this.pausedSince = null; if (typeof this._writeCallback === "function") this._writeCallback(); } get totalStreamTime() { return performance.now() - this.startTime; } _step(done) { this._writeCallback = () => { this._writeCallback = null; done(); }; const next = (this.count + 1) * this.FRAME_LENGTH - (performance.now() - this.startTime - this._pausedTime); setTimeout2(() => { if ((!this.pausedSince || this._silence) && this._writeCallback) this._writeCallback(); }, next).unref(); this.timestamp += this.TIMESTAMP_INC; if (this.timestamp > MAX_UINT_32) this.timestamp = 0; this.count++; if (this.count > MAX_UINT_16) this.count = 0; } _final(callback) { this._writeCallback = null; callback(); } _playChunk(chunk, isLastPacket = false) { if (this.player.dispatcher !== this && this.player.videoDispatcher !== this || !this.player.voiceConnection.authentication.secret_key) { return; } const packet = this._createPacket(chunk, isLastPacket); if (packet) this._sendPacket(packet); } createHeaderExtension() { const profile = Buffer2.alloc(4); profile[0] = 190; profile[1] = 222; profile.writeInt16BE(extensions.length, 2); return profile; } createPayloadExtension() { const extensionsData = []; for (let ext of extensions) { const data = Buffer2.alloc(4); if (ext.id === 5) { data.writeUIntBE(ext.value, 1, 2); } extensionsData.push(data); } return Buffer2.concat(extensionsData); } _encrypt(buffer, additionalData) { const { secret_key, mode } = this.player.voiceConnection.authentication; this._nonce++; if (this._nonce > MAX_UINT_32) this._nonce = 0; if (!this._nonceBuffer) { this.resetNonceBuffer(); } this._nonceBuffer.writeUInt32BE(this._nonce, 0); const noncePadding = this._nonceBuffer.slice(0, 4); let encrypted; switch (mode) { case "aead_aes256_gcm_rtpsize": { const cipher = crypto.createCipheriv("aes-256-gcm", secret_key, this._nonceBuffer); cipher.setAAD(additionalData); encrypted = Buffer2.concat([cipher.update(buffer), cipher.final(), cipher.getAuthTag()]); return [encrypted, noncePadding]; } case "aead_xchacha20_poly1305_rtpsize": { encrypted = secretbox.methods.crypto_aead_xchacha20poly1305_ietf_encrypt(buffer, additionalData, this._nonceBuffer, secret_key); return [encrypted, noncePadding]; } default: { throw new RangeError(`Unsupported encryption method: ${mode}`); } } } _createPacket(buffer, isLastPacket) { let rtpHeader = Buffer2.alloc(12); rtpHeader[0] = 128; rtpHeader[1] = this.payloadType; if (this.extensionEnabled) { rtpHeader = Buffer2.concat([rtpHeader, this.createHeaderExtension()]); rtpHeader[0] |= 1 << 4; } if (this.getTypeDispatcher() === "video" && isLastPacket) { rtpHeader[1] |= 1 << 7; } rtpHeader.writeUIntBE(this.getNewSequence(), 2, 2); rtpHeader.writeUIntBE(this.timestamp, 4, 4); rtpHeader.writeUIntBE(this.player.voiceConnection.authentication.ssrc + Number(this.getTypeDispatcher() === "video"), 8, 4); return Buffer2.concat([rtpHeader, ...this._encrypt(buffer, rtpHeader)]); } _sendPacket(packet) { if (this.getTypeDispatcher() === "audio") { this._setSpeaking(this.player.isScreenSharing ? 1 << 1 : 1 << 0); } else if (this.getTypeDispatcher() === "video") { this._setVideoStatus(true); this._setStreamStatus(false); } if (!this.player.voiceConnection.sockets.udp) { this.emit("debug", "Failed to send a packet - no UDP socket"); return; } this.player.voiceConnection.sockets.udp.send(packet).catch((e) => { if (this.getTypeDispatcher() === "audio") { this._setSpeaking(this._setSpeaking(0)); } else if (this.getTypeDispatcher() === "video") { this._setVideoStatus(false); this._setStreamStatus(true); } this.emit("debug", `Failed to send a packet - ${e}`); }); } _setSpeaking(value) { if (typeof this.player.voiceConnection !== "undefined") { this.player.voiceConnection.setSpeaking(value); } this.emit("speaking", value); } _setVideoStatus(value) { if (typeof this.player.voiceConnection !== "undefined") { this.player.voiceConnection.setVideoStatus(value); } this.emit("videoStatus", value); } _setStreamStatus(value) { if (typeof this.player.voiceConnection?.sendScreenshareState !== "undefined") { this.player.voiceConnection.sendScreenshareState(value); } this.emit("streamStatus", value); } } module.exports = BaseDispatcher; }); // node_modules/discord.js-selfbot-v13/src/client/voice/dispatcher/VideoDispatcher.js var require_VideoDispatcher = __commonJS((exports, module) => { var BaseDispatcher = require_BaseDispatcher(); class VideoDispatcher extends BaseDispatcher { constructor(player, highWaterMark = 12, streams, fps, payloadType) { super(player, highWaterMark, payloadType, true, streams); this.fps = fps; this.mtu = 1200; } get TIMESTAMP_INC() { return 90000 / this.fps; } get FRAME_LENGTH() { return 1000 / this.fps; } getTypeDispatcher() { return "video"; } partitionMtu(data) { const out = []; const dataLength = data.length; for (let i = 0;i < dataLength; i += this.mtu) { out.push(data.slice(i, i + this.mtu)); } return out; } setFPSSource(value) { this.fps = value; } _codecCallback() { throw new Error("The _codecCallback method must be implemented"); } } module.exports = VideoDispatcher; }); // node_modules/discord.js-selfbot-v13/src/client/voice/dispatcher/AnnexBDispatcher.js var require_AnnexBDispatcher = __commonJS((exports, module) => { var { Buffer: Buffer2 } = import.meta.require("buffer"); var VideoDispatcher = require_VideoDispatcher(); var Util = require_Util(); var { H264Helpers, H265Helpers } = require_AnnexBNalSplitter(); class AnnexBDispatcher extends VideoDispatcher { constructor(player, highWaterMark = 12, streams, fps, nalFunctions, payloadType) { super(player, highWaterMark, streams, fps, payloadType); this._nalFunctions = nalFunctions; } _codecCallback(frame) { let accessUnit = frame; let offset = 0; while (offset < accessUnit.length) { const naluSize = accessUnit.readUInt32BE(offset); offset += 4; const nalu = accessUnit.subarray(offset, offset + naluSize); const isLastNal = offset + naluSize >= accessUnit.length; if (nalu.length <= this.mtu) { this._playChunk(Buffer2.concat([this.createPayloadExtension(), nalu]), isLastNal); } else { const [naluHeader, naluData] = this._nalFunctions.splitHeader(nalu); const dataFragments = this.partitionMtu(naluData); for (let fragmentIndex = 0;fragmentIndex < dataFragments.length; fragmentIndex++) { const data = dataFragments[fragmentIndex]; const isFirstPacket = fragmentIndex === 0; const isFinalPacket = fragmentIndex === dataFragments.length - 1; this._playChunk(Buffer2.concat([ this.createPayloadExtension(), this.makeFragmentationUnitHeader(isFirstPacket, isFinalPacket, naluHeader), data ]), isLastNal && isFinalPacket); } } offset += naluSize; } } } class H264Dispatcher extends AnnexBDispatcher { constructor(player, highWaterMark = 12, streams, fps) { super(player, highWaterMark, streams, fps, H264Helpers, Util.getPayloadType("H264")); } makeFragmentationUnitHeader(isFirstPacket, isLastPacket, naluHeader) { const nal0 = naluHeader[0]; const fuPayloadHeader = Buffer2.alloc(2); const nalType = H264Helpers.getUnitType(naluHeader); const fnri = nal0 & 224; fuPayloadHeader[0] = 28 | fnri; if (isFirstPacket) { fuPayloadHeader[1] = 128 | nalType; } else if (isLastPacket) { fuPayloadHeader[1] = 64 | nalType; } else { fuPayloadHeader[1] = nalType; } return fuPayloadHeader; } } class H265Dispatcher extends AnnexBDispatcher { constructor(player, highWaterMark = 12, streams, fps) { super(player, highWaterMark, streams, fps, H265Helpers, Util.getPayloadType("H265")); } makeFragmentationUnitHeader(isFirstPacket, isLastPacket, naluHeader) { const fuIndicatorHeader = Buffer2.allocUnsafe(3); naluHeader.copy(fuIndicatorHeader); const nalType = H265Helpers.getUnitType(naluHeader); fuIndicatorHeader[0] = fuIndicatorHeader[0] & 129 | 49 << 1; if (isFirstPacket) { fuIndicatorHeader[2] = 128 | nalType; } else if (isLastPacket) { fuIndicatorHeader[2] = 64 | nalType; } else { fuIndicatorHeader[2] = nalType; } return fuIndicatorHeader; } } module.exports = { H264Dispatcher, H265Dispatcher }; }); // node_modules/discord.js-selfbot-v13/src/client/voice/util/Silence.js var require_Silence = __commonJS((exports, module) => { var { Buffer: Buffer2 } = import.meta.require("buffer"); var { Readable } = import.meta.require("stream"); var SILENCE_FRAME = Buffer2.from([248, 255, 254]); class Silence extends Readable { _read() { this.push(SILENCE_FRAME); } } Silence.SILENCE_FRAME = SILENCE_FRAME; module.exports = Silence; }); // node_modules/discord.js-selfbot-v13/src/client/voice/util/VolumeInterface.js var require_VolumeInterface = __commonJS((exports) => { var EventEmitter = import.meta.require("events"); var { Buffer: Buffer2 } = import.meta.require("buffer"); class VolumeInterface extends EventEmitter { constructor({ volume = 1 } = {}) { super(); this.setVolume(volume); } get volumeEditable() { return true; } get volume() { return this._volume; } get volumeDecibels() { return Math.log10(this.volume) * 20; } get volumeLogarithmic() { return Math.pow(this.volume, 1 / 1.660964); } applyVolume(buffer, volume) { volume = volume || this._volume; if (volume === 1) return buffer; const out = Buffer2.alloc(buffer.length); for (let i = 0;i < buffer.length; i += 2) { if (i >= buffer.length - 1) break; const uint = Math.min(32767, Math.max(-32767, Math.floor(volume * buffer.readInt16LE(i)))); out.writeInt16LE(uint, i); } return out; } setVolume(volume) { this.emit("volumeChange", this._volume, volume); this._volume = volume; } setVolumeDecibels(db) { this.setVolume(Math.pow(10, db / 20)); } setVolumeLogarithmic(value) { this.setVolume(Math.pow(value, 1.660964)); } } var props = ["volumeDecibels", "volumeLogarithmic", "setVolumeDecibels", "setVolumeLogarithmic"]; exports.applyToClass = function applyToClass(structure) { for (const prop of props) { Object.defineProperty(structure.prototype, prop, Object.getOwnPropertyDescriptor(VolumeInterface.prototype, prop)); } }; }); // node_modules/discord.js-selfbot-v13/src/client/voice/dispatcher/AudioDispatcher.js var require_AudioDispatcher = __commonJS((exports, module) => { var BaseDispatcher = require_BaseDispatcher(); var Util = require_Util(); var Silence = require_Silence(); var VolumeInterface = require_VolumeInterface(); var CHANNELS = 2; class AudioDispatcher extends BaseDispatcher { constructor(player, { seek = 0, volume = 1, fec, plp, bitrate = 96, highWaterMark = 12 } = {}, streams) { const streamOptions = { seek, volume, fec, plp, bitrate, highWaterMark }; super(player, highWaterMark, Util.getPayloadType("opus"), false, streams); this.streamOptions = streamOptions; this.streams.silence = new Silence; this.setVolume(volume); this.setBitrate(bitrate); if (typeof fec !== "undefined") this.setFEC(fec); if (typeof plp !== "undefined") this.setPLP(plp); } get TIMESTAMP_INC() { return 480 * CHANNELS; } get FRAME_LENGTH() { return 20; } getTypeDispatcher() { return "audio"; } setBitrate(value) { if (!value || !this.bitrateEditable) return false; const bitrate = value === "auto" ? this.player.voiceConnection.channel.bitrate : value; this.streams.opus.setBitrate(bitrate * 1000); return true; } setPLP(value) { if (!this.bitrateEditable) return false; this.streams.opus.setPLP(value); return true; } setFEC(enabled) { if (!this.bitrateEditable) return false; this.streams.opus.setFEC(enabled); return true; } get volumeEditable() { return Boolean(this.streams.volume); } get bitrateEditable() { return this.streams.opus && this.streams.opus.setBitrate; } get volume() { return this.streams.volume ? this.streams.volume.volume : 1; } setVolume(value) { if (!this.streams.volume) return false; this.emit("volumeChange", this.volume, value); this.streams.volume.setVolume(value); return true; } setSyncVideoDispatcher(otherDispatcher) { if (otherDispatcher.getTypeDispatcher() !== "video") { throw new Error("Dispatcher must be a video dispatcher"); } this._syncDispatcher = otherDispatcher; } get volumeDecibels() { } get volumeLogarithmic() { } setVolumeDecibels() { } setVolumeLogarithmic() { } } VolumeInterface.applyToClass(AudioDispatcher); module.exports = AudioDispatcher; }); // node_modules/discord.js-selfbot-v13/src/client/voice/dispatcher/VPxDispatcher.js var require_VPxDispatcher = __commonJS((exports, module) => { var { Buffer: Buffer2 } = import.meta.require("buffer"); var VideoDispatcher = require_VideoDispatcher(); var Util = require_Util(); class VP8Dispatcher extends VideoDispatcher { constructor(player, highWaterMark = 12, streams, fps) { super(player, highWaterMark, streams, fps, Util.getPayloadType("VP8")); } makeChunk(buffer, isFirstPacket) { const payloadDescriptorBuf = Buffer2.alloc(2); payloadDescriptorBuf[0] = 128; payloadDescriptorBuf[1] = 128; if (isFirstPacket) { payloadDescriptorBuf[0] |= 1 << 4; } const pictureIdBuf = Buffer2.alloc(2); pictureIdBuf.writeUintBE(this.count, 0, 2); pictureIdBuf[0] |= 128; return Buffer2.concat([this.createPayloadExtension(), payloadDescriptorBuf, pictureIdBuf, buffer]); } _codecCallback(chunk) { const chunkSplit = this.partitionMtu(chunk).map((c, i) => this.makeChunk(c, i === 0)); for (let i = 0;i < chunkSplit.length; i++) { this._playChunk(chunkSplit[i], i + 1 === chunkSplit.length); } } } module.exports = { VP8Dispatcher }; }); // node_modules/discord.js-selfbot-v13/src/client/voice/player/MediaPlayer.js var require_MediaPlayer = __commonJS((exports, module) => { var EventEmitter = import.meta.require("events"); var { Readable: ReadableStream } = import.meta.require("stream"); var prism = require_src(); var { H264NalSplitter, H265NalSplitter } = require_AnnexBNalSplitter(); var { IvfTransformer } = require_IvfSplitter(); var { H264Dispatcher } = require_AnnexBDispatcher(); var AudioDispatcher = require_AudioDispatcher(); var { VP8Dispatcher } = require_VPxDispatcher(); var FFMPEG_OUTPUT_PREFIX = ["-use_wallclock_as_timestamps", "1", "-copyts", "-analyzeduration", "0"]; var FFMPEG_INPUT_PREFIX = [ "-reconnect", "1", "-reconnect_at_eof", "1", "-reconnect_streamed", "1", "-reconnect_delay_max", "4294" ]; var FFMPEG_PCM_ARGUMENTS = ["-f", "s16le", "-ar", "48000", "-ac", "2"]; var FFMPEG_VP8_ARGUMENTS = ["-f", "ivf", "-deadline", "realtime", "-c:v", "libvpx"]; var FFMPEG_H264_ARGUMENTS = (options) => [ "-c:v", "libx264", "-f", "h264", "-tune", "zerolatency", "-preset", options?.presetH26x || "faster", "-profile:v", "baseline", "-bf", "0", "-bsf:v", "h264_metadata=aud=insert" ]; var FFMPEG_H265_ARGUMENTS = (options) => [ "-c:v", "libx265", "-f", "hevc", "-preset", options?.presetH265 || "faster", "-profile:v", "main", "-bf", "0" ]; class MediaPlayer extends EventEmitter { constructor(voiceConnection, isScreenSharing) { super(); this.dispatcher = null; this.videoDispatcher = null; this.voiceConnection = voiceConnection; this.isScreenSharing = isScreenSharing; } destroy() { this.destroyDispatcher(); this.destroyVideoDispatcher(); } destroyDispatcher() { if (this.dispatcher) { this.dispatcher.destroy(); this.dispatcher = null; } } destroyVideoDispatcher() { if (this.videoDispatcher) { this.videoDispatcher.destroy(); this.videoDispatcher = null; } } playUnknown(input, options, streams = {}) { this.destroyDispatcher(); const isStream = input instanceof ReadableStream; const args = [...FFMPEG_OUTPUT_PREFIX, ...FFMPEG_PCM_ARGUMENTS]; if (!isStream) args.unshift("-i", input); if (options.seek) args.unshift("-ss", String(options.seek)); if (typeof input == "string" && input.startsWith("http")) { args.unshift(...FFMPEG_INPUT_PREFIX); } const ffmpeg = new prism.FFmpeg({ args }); this.emit("debug", `[ffmpeg-audio_process] Spawn process with args:\n${args.join(" ")}`); ffmpeg.process.stderr.on("data", (data) => { this.emit("debug", `[ffmpeg-audio_process]: ${data.toString()}`); }); streams.ffmpeg = ffmpeg; if (isStream) { streams.input = input; input.pipe(ffmpeg); } return this.playPCMStream(ffmpeg, options, streams); } playPCMStream(stream, options, streams = {}) { this.destroyDispatcher(); const opus = streams.opus = new prism.opus.Encoder({ channels: 2, rate: 48000, frameSize: 960 }); if (options && options.volume === false) { stream.pipe(opus); return this.playOpusStream(opus, options, streams); } streams.volume = new prism.VolumeTransformer({ type: "s16le", volume: options ? options.volume : 1 }); stream.pipe(streams.volume).pipe(opus); return this.playOpusStream(opus, options, streams); } playOpusStream(stream, options, streams = {}) { this.destroyDispatcher(); streams.opus = stream; if (options.volume !== false && !streams.input) { streams.input = stream; const decoder = new prism.opus.Decoder({ channels: 2, rate: 48000, frameSize: 960 }); streams.volume = new prism.VolumeTransformer({ type: "s16le", volume: options ? options.volume : 1 }); streams.opus = stream.pipe(decoder).pipe(streams.volume).pipe(new prism.opus.Encoder({ channels: 2, rate: 48000, frameSize: 960 })); } const dispatcher = this.createDispatcher(options, streams); streams.opus.pipe(dispatcher); return dispatcher; } playUnknownVideo(input, options = {}) { this.destroyVideoDispatcher(); const isStream = input instanceof ReadableStream; if (!options?.fps) options.fps = 30; const args = [ "-i", isStream ? "-" : input, ...FFMPEG_OUTPUT_PREFIX, "-flags", "low_delay", "-r", `${options?.fps}` ]; if (options?.bitrate && typeof options?.bitrate === "number") { args.push("-b:v", `${options?.bitrate}K`); } if (options?.hwAccel === true) { args.unshift("-hwaccel", "auto"); } if (options.seek) args.unshift("-ss", String(options.seek)); if (typeof input == "string" && input.startsWith("http")) { args.unshift(...FFMPEG_INPUT_PREFIX); } if (this.voiceConnection.videoCodec === "VP8") { args.push(...FFMPEG_VP8_ARGUMENTS); } if (this.voiceConnection.videoCodec === "H264") { args.push(...FFMPEG_H264_ARGUMENTS(options)); } if (this.voiceConnection.videoCodec === "H265") { args.push(...FFMPEG_H265_ARGUMENTS(options)); } args.push("-force_key_frames", "00:02"); if (options?.inputFFmpegArgs) { args.unshift(...options.inputFFmpegArgs); } if (options?.outputFFmpegArgs) { args.push(...options.outputFFmpegArgs); } const ffmpeg = new prism.FFmpeg({ args }); const streams = { ffmpeg }; if (isStream) { streams.input = input; input.pipe(ffmpeg); } this.emit("debug", `[ffmpeg-video_process] Spawn process with args:\n${args.join(" ")}`); ffmpeg.process.stderr.on("data", (data) => { this.emit("debug", `[ffmpeg-video_process]: ${data.toString()}`); }); switch (this.voiceConnection.videoCodec) { case "VP8": { return this.playIvfVideo(ffmpeg, options, streams); } case "H264": { return this.playAnnexBVideo(ffmpeg, options, streams, "H264"); } default: { throw new Error("Invalid codec (Supported: VP8, H264)"); } } } playIvfVideo(stream, options, streams) { this.destroyVideoDispatcher(); const videoStream = new IvfTransformer; stream.pipe(videoStream); streams.video = videoStream; const dispatcher = this.createVideoDispatcher(options, streams); videoStream.pipe(dispatcher); return dispatcher; } playAnnexBVideo(stream, options, streams, type) { this.destroyVideoDispatcher(); let videoStream; if (type === "H264") { videoStream = new H264NalSplitter; } else if (type === "H265") { videoStream = new H265NalSplitter; } stream.pipe(videoStream); streams.video = videoStream; const dispatcher = this.createVideoDispatcher(options, streams); videoStream.pipe(dispatcher); return dispatcher; } createDispatcher(options, streams) { this.destroyDispatcher(); const dispatcher = this.dispatcher = new AudioDispatcher(this, options, streams); return dispatcher; } createVideoDispatcher(options, streams) { this.destroyVideoDispatcher(); switch (this.voiceConnection.videoCodec) { case "VP8": { const dispatcher = this.videoDispatcher = new VP8Dispatcher(this, options?.highWaterMark, streams, options?.fps); return dispatcher; } case "H264": { const dispatcher = this.videoDispatcher = new H264Dispatcher(this, options?.highWaterMark, streams, options?.fps); return dispatcher; } default: { throw new Error("Invalid codec"); } } } } module.exports = MediaPlayer; }); // node_modules/werift-rtp/lib/rtp/src/srtp/const.js var require_const = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.saltLength = exports.keyLength = exports.Profiles = exports.ProtectionProfileAeadAes128Gcm = exports.ProtectionProfileAes128CmHmacSha1_80 = undefined; exports.ProtectionProfileAes128CmHmacSha1_80 = 1; exports.ProtectionProfileAeadAes128Gcm = 7; exports.Profiles = [ exports.ProtectionProfileAes128CmHmacSha1_80, exports.ProtectionProfileAeadAes128Gcm ]; var keyLength = (profile) => { switch (profile) { case exports.ProtectionProfileAes128CmHmacSha1_80: case exports.ProtectionProfileAeadAes128Gcm: return 16; } }; exports.keyLength = keyLength; var saltLength = (profile) => { switch (profile) { case exports.ProtectionProfileAes128CmHmacSha1_80: return 14; case exports.ProtectionProfileAeadAes128Gcm: return 12; } }; exports.saltLength = saltLength; }); // node_modules/@shinyoshiaki/jspack/jspack.js var require_jspack = __commonJS((exports) => { function JSPack() { var el; var bBE = false; var m = this; m._DeArray = function(a, p, l) { return [a.slice(p, p + l)]; }; m._EnArray = function(a, p, l, v) { for (var i = 0;i < l; a[p + i] = v[i] ? v[i] : 0, i++) { } }; m._DeChar = function(a, p) { return String.fromCharCode(a[p]); }; m._EnChar = function(a, p, v) { a[p] = v.charCodeAt(0); }; m._DeInt = function(a, p) { var lsb = bBE ? el.len - 1 : 0; var nsb = bBE ? -1 : 1; var stop = lsb + nsb * el.len; var rv, i, f; for (rv = 0, i = lsb, f = 1;i != stop; rv += a[p + i] * f, i += nsb, f *= 256) { } if (el.bSigned && rv & Math.pow(2, el.len * 8 - 1)) { rv -= Math.pow(2, el.len * 8); } return rv; }; m._EnInt = function(a, p, v) { var lsb = bBE ? el.len - 1 : 0; var nsb = bBE ? -1 : 1; var stop = lsb + nsb * el.len; var i; v = v < el.min ? el.min : v > el.max ? el.max : v; for (i = lsb;i != stop; a[p + i] = v & 255, i += nsb, v >>= 8) { } }; m._DeString = function(a, p, l) { for (var rv = new Array(l), i = 0;i < l; rv[i] = String.fromCharCode(a[p + i]), i++) { } return rv.join(""); }; m._EnString = function(a, p, l, v) { for (var t, i = 0;i < l; a[p + i] = (t = v.charCodeAt(i)) ? t : 0, i++) { } }; m._De754 = function(a, p) { var s, e, m2, i, d, nBits, mLen, eLen, eBias, eMax; mLen = el.mLen, eLen = el.len * 8 - el.mLen - 1, eMax = (1 << eLen) - 1, eBias = eMax >> 1; i = bBE ? 0 : el.len - 1; d = bBE ? 1 : -1; s = a[p + i]; i += d; nBits = -7; for (e = s & (1 << -nBits) - 1, s >>= -nBits, nBits += eLen;nBits > 0; e = e * 256 + a[p + i], i += d, nBits -= 8) { } for (m2 = e & (1 << -nBits) - 1, e >>= -nBits, nBits += mLen;nBits > 0; m2 = m2 * 256 + a[p + i], i += d, nBits -= 8) { } switch (e) { case 0: e = 1 - eBias; break; case eMax: return m2 ? NaN : (s ? -1 : 1) * Infinity; default: m2 = m2 + Math.pow(2, mLen); e = e - eBias; break; } return (s ? -1 : 1) * m2 * Math.pow(2, e - mLen); }; m._En754 = function(a, p, v) { var s, e, m2, i, d, c, mLen, eLen, eBias, eMax; mLen = el.mLen, eLen = el.len * 8 - el.mLen - 1, eMax = (1 << eLen) - 1, eBias = eMax >> 1; s = v < 0 ? 1 : 0; v = Math.abs(v); if (isNaN(v) || v == Infinity) { m2 = isNaN(v) ? 1 : 0; e = eMax; } else { e = Math.floor(Math.log(v) / Math.LN2); if (v * (c = Math.pow(2, -e)) < 1) { e--; c *= 2; } if (e + eBias >= 1) { v += el.rt / c; } else { v += el.rt * Math.pow(2, 1 - eBias); } if (v * c >= 2) { e++; c /= 2; } if (e + eBias >= eMax) { m2 = 0; e = eMax; } else if (e + eBias >= 1) { m2 = (v * c - 1) * Math.pow(2, mLen); e = e + eBias; } else { m2 = v * Math.pow(2, eBias - 1) * Math.pow(2, mLen); e = 0; } } for (i = bBE ? el.len - 1 : 0, d = bBE ? -1 : 1;mLen >= 8; a[p + i] = m2 & 255, i += d, m2 /= 256, mLen -= 8) { } for (e = e << mLen | m2, eLen += mLen;eLen > 0; a[p + i] = e & 255, i += d, e /= 256, eLen -= 8) { } a[p + i - d] |= s * 128; }; m._DeInt64 = function(a, p) { var start = bBE ? 0 : 7; var nsb = bBE ? 1 : -1; var stop = start + nsb * 8; var rv = [0, 0, !el.bSigned]; var i, f, rvi; for (i = start, rvi = 1, f = 0;i != stop; rv[rvi] = (rv[rvi] << 8 >>> 0) + a[p + i], i += nsb, f++, rvi = f < 4 ? 1 : 0) { } return rv; }; m._EnInt64 = function(a, p, v) { var start = bBE ? 0 : 7; var nsb = bBE ? 1 : -1; var stop = start + nsb * 8; var i, f, rvi, s; for (i = start, rvi = 1, f = 0, s = 24;i != stop; a[p + i] = v[rvi] >> s & 255, i += nsb, f++, rvi = f < 4 ? 1 : 0, s = 24 - 8 * (f % 4)) { } }; m._sPattern = "(\\d + )?([AxcbBhHsfdiIlLqQ])"; m._lenLut = { A: 1, x: 1, c: 1, b: 1, B: 1, h: 2, H: 2, s: 1, f: 4, d: 8, i: 4, I: 4, l: 4, L: 4, q: 8, Q: 8 }; m._elLut = { A: { en: m._EnArray, de: m._DeArray }, s: { en: m._EnString, de: m._DeString }, c: { en: m._EnChar, de: m._DeChar }, b: { en: m._EnInt, de: m._DeInt, len: 1, bSigned: true, min: -Math.pow(2, 7), max: Math.pow(2, 7) - 1 }, B: { en: m._EnInt, de: m._DeInt, len: 1, bSigned: false, min: 0, max: Math.pow(2, 8) - 1 }, h: { en: m._EnInt, de: m._DeInt, len: 2, bSigned: true, min: -Math.pow(2, 15), max: Math.pow(2, 15) - 1 }, H: { en: m._EnInt, de: m._DeInt, len: 2, bSigned: false, min: 0, max: Math.pow(2, 16) - 1 }, i: { en: m._EnInt, de: m._DeInt, len: 4, bSigned: true, min: -Math.pow(2, 31), max: Math.pow(2, 31) - 1 }, I: { en: m._EnInt, de: m._DeInt, len: 4, bSigned: false, min: 0, max: Math.pow(2, 32) - 1 }, l: { en: m._EnInt, de: m._DeInt, len: 4, bSigned: true, min: -Math.pow(2, 31), max: Math.pow(2, 31) - 1 }, L: { en: m._EnInt, de: m._DeInt, len: 4, bSigned: false, min: 0, max: Math.pow(2, 32) - 1 }, f: { en: m._En754, de: m._De754, len: 4, mLen: 23, rt: Math.pow(2, -24) - Math.pow(2, -77) }, d: { en: m._En754, de: m._De754, len: 8, mLen: 52, rt: 0 }, q: { en: m._EnInt64, de: m._DeInt64, bSigned: true }, Q: { en: m._EnInt64, de: m._DeInt64, bSigned: false } }; m._UnpackSeries = function(n, s, a, p) { for (var fxn = el.de, rv = [], i = 0;i < n; rv.push(fxn(a, p + i * s)), i++) { } return rv; }; m._PackSeries = function(n, s, a, p, v, i) { for (var fxn = el.en, o = 0;o < n; fxn(a, p + o * s, v[i + o]), o++) { } }; m.Unpack = function(fmt, a, p) { bBE = fmt.charAt(0) != "<"; p = p ? p : 0; var re = new RegExp(this._sPattern, "g"); var m2, n, s; var rv = []; while (m2 = re.exec(fmt)) { n = m2[1] == undefined || m2[1] == "" ? 1 : parseInt(m2[1]); s = this._lenLut[m2[2]]; if (p + n * s > a.length) { return; } switch (m2[2]) { case "A": case "s": rv.push(this._elLut[m2[2]].de(a, p, n)); break; case "c": case "b": case "B": case "h": case "H": case "i": case "I": case "l": case "L": case "f": case "d": case "q": case "Q": el = this._elLut[m2[2]]; rv.push(this._UnpackSeries(n, s, a, p)); break; } p += n * s; } return Array.prototype.concat.apply([], rv); }; m.PackTo = function(fmt, a, p, values) { bBE = fmt.charAt(0) != "<"; var re = new RegExp(this._sPattern, "g"); var m2, n, s, j; var i = 0; while (m2 = re.exec(fmt)) { n = m2[1] == undefined || m2[1] == "" ? 1 : parseInt(m2[1]); s = this._lenLut[m2[2]]; if (p + n * s > a.length) { return false; } switch (m2[2]) { case "A": case "s": if (i + 1 > values.length) { return false; } this._elLut[m2[2]].en(a, p, n, values[i]); i += 1; break; case "c": case "b": case "B": case "h": case "H": case "i": case "I": case "l": case "L": case "f": case "d": case "q": case "Q": el = this._elLut[m2[2]]; if (i + n > values.length) { return false; } this._PackSeries(n, s, a, p, values, i); i += n; break; case "x": for (j = 0;j < n; j++) { a[p + j] = 0; } break; } p += n * s; } return a; }; m.Pack = function(fmt, values) { return this.PackTo(fmt, new Array(this.CalcLength(fmt)), 0, values); }; m.CalcLength = function(fmt) { var re = new RegExp(this._sPattern, "g"); var sum = 0; var m2; while (m2 = re.exec(fmt)) { sum += (m2[1] == undefined || m2[1] == "" ? 1 : parseInt(m2[1])) * this._lenLut[m2[2]]; } return sum; }; } exports.jspack = new JSPack; }); // node_modules/werift-rtp/lib/common/src/binary.js var require_binary = __commonJS((exports) => { function random16() { return jspack_1.jspack.Unpack("!H", (0, crypto_1.randomBytes)(2))[0]; } function random32() { return jspack_1.jspack.Unpack("!L", (0, crypto_1.randomBytes)(4))[0]; } function bufferXor(a, b) { if (a.length !== b.length) { throw new TypeError("[webrtc-stun] You can not XOR buffers which length are different"); } const length = a.length; const buffer = Buffer.allocUnsafe(length); for (let i = 0;i < length; i++) { buffer[i] = a[i] ^ b[i]; } return buffer; } function bufferArrayXor(arr) { const length = [...arr].sort((a, b) => a.length - b.length).reverse()[0].length; const xored = Buffer.allocUnsafe(length); for (let i = 0;i < length; i++) { xored[i] = 0; arr.forEach((buffer) => { xored[i] ^= buffer[i] ?? 0; }); } return xored; } function getBit(bits, startIndex, length = 1) { let bin = bits.toString(2).split(""); bin = [...Array(8 - bin.length).fill("0"), ...bin]; const s = bin.slice(startIndex, startIndex + length).join(""); const v = Number.parseInt(s, 2); return v; } function paddingByte(bits) { const dec = bits.toString(2).split(""); return [...[...Array(8 - dec.length)].map(() => "0"), ...dec].join(""); } function paddingBits(bits, expectLength) { const dec = bits.toString(2); return [...[...Array(expectLength - dec.length)].map(() => "0"), ...dec].join(""); } function bufferWriter(bytes, values) { return createBufferWriter(bytes)(values); } function createBufferWriter(bytes, singleBuffer) { const length = bytes.reduce((acc, cur) => acc + cur, 0); const reuseBuffer = singleBuffer ? Buffer.alloc(length) : undefined; return (values) => { const buf = reuseBuffer || Buffer.alloc(length); let offset = 0; values.forEach((v, i) => { const size = bytes[i]; if (size === 8) buf.writeBigUInt64BE(v, offset); else buf.writeUIntBE(v, offset, size); offset += size; }); return buf; }; } function bufferWriterLE(bytes, values) { const length = bytes.reduce((acc, cur) => acc + cur, 0); const buf = Buffer.alloc(length); let offset = 0; values.forEach((v, i) => { const size = bytes[i]; if (size === 8) buf.writeBigUInt64LE(v, offset); else buf.writeUIntLE(v, offset, size); offset += size; }); return buf; } function bufferReader(buf, bytes) { let offset = 0; return bytes.map((v) => { let read; if (v === 8) { read = buf.readBigUInt64BE(offset); } else { read = buf.readUIntBE(offset, v); } offset += v; return read; }); } function buffer2ArrayBuffer(buf) { return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); } Object.defineProperty(exports, "__esModule", { value: true }); exports.BitStream = exports.dumpBuffer = exports.BufferChain = exports.BitWriter2 = exports.BitWriter = undefined; exports.random16 = random16; exports.random32 = random32; exports.bufferXor = bufferXor; exports.bufferArrayXor = bufferArrayXor; exports.getBit = getBit; exports.paddingByte = paddingByte; exports.paddingBits = paddingBits; exports.bufferWriter = bufferWriter; exports.createBufferWriter = createBufferWriter; exports.bufferWriterLE = bufferWriterLE; exports.bufferReader = bufferReader; exports.buffer2ArrayBuffer = buffer2ArrayBuffer; var crypto_1 = import.meta.require("crypto"); var jspack_1 = require_jspack(); class BitWriter { constructor(bitLength) { Object.defineProperty(this, "bitLength", { enumerable: true, configurable: true, writable: true, value: bitLength }); Object.defineProperty(this, "value", { enumerable: true, configurable: true, writable: true, value: 0 }); } set(size, startIndex, value) { value &= (1 << size) - 1; this.value |= value << this.bitLength - size - startIndex; return this; } get buffer() { const length = Math.ceil(this.bitLength / 8); const buf = Buffer.alloc(length); buf.writeUIntBE(this.value, 0, length); return buf; } } exports.BitWriter = BitWriter; class BitWriter2 { constructor(bitLength) { Object.defineProperty(this, "bitLength", { enumerable: true, configurable: true, writable: true, value: bitLength }); Object.defineProperty(this, "_value", { enumerable: true, configurable: true, writable: true, value: 0n }); Object.defineProperty(this, "offset", { enumerable: true, configurable: true, writable: true, value: 0n }); if (bitLength > 32) { throw new Error; } } set(value, size = 1) { let value_b = BigInt(value); const size_b = BigInt(size); value_b &= (1n << size_b) - 1n; this._value |= value_b << BigInt(this.bitLength) - size_b - this.offset; this.offset += size_b; return this; } get value() { return Number(this._value); } get buffer() { const length = Math.ceil(this.bitLength / 8); const buf = Buffer.alloc(length); buf.writeUIntBE(this.value, 0, length); return buf; } } exports.BitWriter2 = BitWriter2; class BufferChain { constructor(size) { Object.defineProperty(this, "buffer", { enumerable: true, configurable: true, writable: true, value: undefined }); this.buffer = Buffer.alloc(size); } writeInt16BE(value, offset) { this.buffer.writeInt16BE(value, offset); return this; } writeUInt8(value, offset) { this.buffer.writeUInt8(value, offset); return this; } } exports.BufferChain = BufferChain; var dumpBuffer = (data) => "0x" + data.toString("hex").replace(/(.)(.)/g, "$1$2 ").split(" ").filter((s) => s != null && s.length > 0).join(",0x"); exports.dumpBuffer = dumpBuffer; class BitStream { constructor(uint8Array) { Object.defineProperty(this, "uint8Array", { enumerable: true, configurable: true, writable: true, value: uint8Array }); Object.defineProperty(this, "position", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "bitsPending", { enumerable: true, configurable: true, writable: true, value: 0 }); } writeBits(bits, value) { if (bits == 0) { return this; } value &= 4294967295 >>> 32 - bits; let bitsConsumed; if (this.bitsPending > 0) { if (this.bitsPending > bits) { this.uint8Array[this.position - 1] |= value << this.bitsPending - bits; bitsConsumed = bits; this.bitsPending -= bits; } else if (this.bitsPending == bits) { this.uint8Array[this.position - 1] |= value; bitsConsumed = bits; this.bitsPending = 0; } else { this.uint8Array[this.position - 1] |= value >> bits - this.bitsPending; bitsConsumed = this.bitsPending; this.bitsPending = 0; } } else { bitsConsumed = Math.min(8, bits); this.bitsPending = 8 - bitsConsumed; this.uint8Array[this.position++] = value >> bits - bitsConsumed << this.bitsPending; } bits -= bitsConsumed; if (bits > 0) { this.writeBits(bits, value); } return this; } readBits(bits) { return this._readBits(bits); } _readBits(bits, bitBuffer) { if (typeof bitBuffer == "undefined") { bitBuffer = 0; } if (bits == 0) { return bitBuffer; } let partial; let bitsConsumed; if (this.bitsPending > 0) { const byte = this.uint8Array[this.position - 1] & 255 >> 8 - this.bitsPending; bitsConsumed = Math.min(this.bitsPending, bits); this.bitsPending -= bitsConsumed; partial = byte >> this.bitsPending; } else { bitsConsumed = Math.min(8, bits); this.bitsPending = 8 - bitsConsumed; partial = this.uint8Array[this.position++] >> this.bitsPending; } bits -= bitsConsumed; bitBuffer = bitBuffer << bitsConsumed | partial; return bits > 0 ? this._readBits(bits, bitBuffer) : bitBuffer; } seekTo(bitPos) { this.position = bitPos / 8 | 0; this.bitsPending = bitPos % 8; if (this.bitsPending > 0) { this.bitsPending = 8 - this.bitsPending; this.position++; } } } exports.BitStream = BitStream; }); // node_modules/werift-rtp/lib/common/src/number.js var require_number = __commonJS((exports) => { function uint8Add(a, b) { return a + b & 255; } function uint16Add(a, b) { return a + b & 65535; } function uint32Add(a, b) { return Number(BigInt(a) + BigInt(b) & 0xffffffffn); } function uint24(v) { return v & 16777215; } function uint16Gt(a, b) { const halfMod = 32768; return a < b && b - a > halfMod || a > b && a - b < halfMod; } function uint16Gte(a, b) { return a === b || uint16Gt(a, b); } function uint32Gt(a, b) { const halfMod = 2147483648; return a < b && b - a > halfMod || a > b && a - b < halfMod; } function uint32Gte(a, b) { return a === b || uint32Gt(a, b); } Object.defineProperty(exports, "__esModule", { value: true }); exports.int = undefined; exports.uint8Add = uint8Add; exports.uint16Add = uint16Add; exports.uint32Add = uint32Add; exports.uint24 = uint24; exports.uint16Gt = uint16Gt; exports.uint16Gte = uint16Gte; exports.uint32Gt = uint32Gt; exports.uint32Gte = uint32Gte; var int = (n) => Number.parseInt(n, 10); exports.int = int; }); // node_modules/werift-rtp/lib/common/src/promise.js var require_promise = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.PromiseQueue = undefined; class PromiseQueue { constructor() { Object.defineProperty(this, "queue", { enumerable: true, configurable: true, writable: true, value: [] }); Object.defineProperty(this, "running", { enumerable: true, configurable: true, writable: true, value: false }); Object.defineProperty(this, "push", { enumerable: true, configurable: true, writable: true, value: (promise) => new Promise((r, f) => { this.queue.push({ promise, done: r, failed: f }); if (!this.running) { this.run(); } }) }); } async run() { const task = this.queue.shift(); if (task) { this.running = true; try { const res = await task.promise(); task.done(res); } catch (error) { task.failed(error); } this.run(); } else { this.running = false; } } cancel() { this.queue = []; } } exports.PromiseQueue = PromiseQueue; }); // node_modules/werift-rtp/lib/common/src/network.js var require_network = __commonJS((exports) => { async function randomPort(protocol = "udp4", interfaceAddresses) { const socket = (0, dgram_1.createSocket)(protocol); setImmediate(() => socket.bind({ port: 0, address: (0, exports.interfaceAddress)(protocol, interfaceAddresses) })); await new Promise((r) => { socket.once("error", r); socket.once("listening", r); }); const port = socket.address()?.port; await new Promise((r) => socket.close(() => r())); return port; } async function randomPorts(num, protocol = "udp4", interfaceAddresses) { return Promise.all([...Array(num)].map(() => randomPort(protocol, interfaceAddresses))); } async function findPort(min, max, protocol = "udp4", interfaceAddresses) { let port; for (let i = min;i <= max; i++) { const socket = (0, dgram_1.createSocket)(protocol); setImmediate(() => socket.bind({ port: i, address: (0, exports.interfaceAddress)(protocol, interfaceAddresses) })); const err = await new Promise((r) => { socket.once("error", (e) => r(e)); socket.once("listening", () => r()); }); if (err) { await new Promise((r) => socket.close(() => r())); continue; } port = socket.address()?.port; await new Promise((r) => socket.close(() => r())); if (min <= port && port <= max) { break; } } if (!port) throw new Error("port not found"); return port; } function normalizeFamilyNodeV18(family) { if (family === "IPv4") return 4; if (family === "IPv6") return 6; return family; } Object.defineProperty(exports, "__esModule", { value: true }); exports.interfaceAddress = undefined; exports.randomPort = randomPort; exports.randomPorts = randomPorts; exports.findPort = findPort; exports.normalizeFamilyNodeV18 = normalizeFamilyNodeV18; var dgram_1 = import.meta.require("dgram"); var interfaceAddress = (type, interfaceAddresses) => interfaceAddresses ? interfaceAddresses[type] : undefined; exports.interfaceAddress = interfaceAddress; }); // node_modules/werift-rtp/lib/common/src/type.js var require_type = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); }); // node_modules/ms/index.js var require_ms = __commonJS((exports, module) => { function parse(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; } } function fmtShort(ms) { var msAbs = Math.abs(ms); if (msAbs >= d) { return Math.round(ms / d) + "d"; } if (msAbs >= h) { return Math.round(ms / h) + "h"; } if (msAbs >= m) { return Math.round(ms / m) + "m"; } if (msAbs >= s) { return Math.round(ms / s) + "s"; } return ms + "ms"; } function fmtLong(ms) { var msAbs = Math.abs(ms); if (msAbs >= d) { return plural(ms, msAbs, d, "day"); } if (msAbs >= h) { return plural(ms, msAbs, h, "hour"); } if (msAbs >= m) { return plural(ms, msAbs, m, "minute"); } if (msAbs >= s) { return plural(ms, msAbs, s, "second"); } return ms + " ms"; } function plural(ms, msAbs, n, name) { var isPlural = msAbs >= n * 1.5; return Math.round(ms / n) + " " + name + (isPlural ? "s" : ""); } var s = 1000; var m = s * 60; var h = m * 60; var d = h * 24; var w = d * 7; var y = d * 365.25; module.exports = function(val, options) { options = options || {}; var type = typeof val; if (type === "string" && val.length > 0) { return parse(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)); }; }); // node_modules/debug/src/common.js var require_common = __commonJS((exports, module) => { function setup(env) { createDebug.debug = createDebug; createDebug.default = createDebug; createDebug.coerce = coerce; createDebug.disable = disable; createDebug.enable = enable; createDebug.enabled = enabled; createDebug.humanize = require_ms(); 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 debug(...args) { if (!debug.enabled) { return; } const self2 = debug; const curr = Number(new Date); const ms = curr - (prevTime || curr); self2.diff = ms; self2.prev = prevTime; self2.curr = curr; prevTime = curr; args[0] = createDebug.coerce(args[0]); if (typeof args[0] !== "string") { args.unshift("%O"); } let index = 0; args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { if (match === "%%") { return "%"; } index++; const formatter = createDebug.formatters[format]; if (typeof formatter === "function") { const val = args[index]; match = formatter.call(self2, val); args.splice(index, 1); index--; } return match; }); createDebug.formatArgs.call(self2, args); const logFn = self2.log || createDebug.log; logFn.apply(self2, args); } debug.namespace = namespace; debug.useColors = createDebug.useColors(); debug.color = createDebug.selectColor(namespace); debug.extend = extend; debug.destroy = createDebug.destroy; Object.defineProperty(debug, "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(debug); } return debug; } function extend(namespace, delimiter) { const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace); newDebug.log = this.log; return newDebug; } function enable(namespaces) { createDebug.save(namespaces); createDebug.namespaces = namespaces; createDebug.names = []; createDebug.skips = []; const split = (typeof namespaces === "string" ? namespaces : "").trim().replace(/\s+/g, ",").split(",").filter(Boolean); for (const ns of split) { 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 disable() { 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; } module.exports = setup; }); // node_modules/debug/src/browser.js var require_browser = __commonJS((exports, module) => { 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 || typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator !== "undefined" && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31 || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); } function formatArgs(args) { args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module.exports.humanize(this.diff); if (!this.useColors) { return; } const c = "color: " + this.color; args.splice(1, 0, c, "color: inherit"); let index = 0; let lastC = 0; args[0].replace(/%[a-zA-Z%]/g, (match) => { if (match === "%%") { return; } index++; if (match === "%c") { lastC = index; } }); args.splice(lastC, 0, c); } function save(namespaces) { try { if (namespaces) { exports.storage.setItem("debug", namespaces); } else { exports.storage.removeItem("debug"); } } catch (error) { } } function load() { let r; try { r = exports.storage.getItem("debug") || exports.storage.getItem("DEBUG"); } catch (error) { } if (!r && typeof process !== "undefined" && "env" in process) { r = "release"; } return r; } function localstorage() { try { return localStorage; } catch (error) { } } exports.formatArgs = formatArgs; exports.save = save; exports.load = load; exports.useColors = useColors; exports.storage = localstorage(); exports.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`."); } }; })(); exports.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" ]; exports.log = console.debug || console.log || (() => { }); module.exports = require_common()(exports); var { formatters } = module.exports; formatters.j = function(v) { try { return JSON.stringify(v); } catch (error) { return "[UnexpectedJSONParseError]: " + error.message; } }; }); // node_modules/has-flag/index.js var require_has_flag = __commonJS((exports, module) => { module.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/supports-color/index.js var require_supports_color = __commonJS((exports, module) => { 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 === undefined) { return 0; } const min = forceColor || 0; if (env.TERM === "dumb") { return min; } if (process.platform === "win32") { const osRelease = os.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 version = parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10); switch (env.TERM_PROGRAM) { case "iTerm.app": return version >= 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); } var os = import.meta.require("os"); var tty = import.meta.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); } } module.exports = { supportsColor: getSupportLevel, stdout: translateLevel(supportsColor(true, tty.isatty(1))), stderr: translateLevel(supportsColor(true, tty.isatty(2))) }; }); // node_modules/debug/src/node.js var require_node = __commonJS((exports, module) => { function useColors() { return "colors" in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(process.stderr.fd); } function formatArgs(args) { 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`; args[0] = prefix + args[0].split("\n").join("\n" + prefix); args.push(colorCode + "m+" + module.exports.humanize(this.diff) + "\x1B[0m"); } else { args[0] = getDate() + name + " " + args[0]; } } function getDate() { if (exports.inspectOpts.hideDate) { return ""; } return new Date().toISOString() + " "; } function log(...args) { return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + "\n"); } function save(namespaces) { if (namespaces) { process.env.DEBUG = namespaces; } else { delete "release"; } } function load() { return "release"; } function init(debug) { debug.inspectOpts = {}; const keys = Object.keys(exports.inspectOpts); for (let i = 0;i < keys.length; i++) { debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; } } var tty = import.meta.require("tty"); var util = import.meta.require("util"); exports.init = init; exports.log = log; exports.formatArgs = formatArgs; exports.save = save; exports.load = load; exports.useColors = useColors; exports.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`."); exports.colors = [6, 2, 3, 4, 5, 1]; try { const supportsColor = require_supports_color(); if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { exports.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 (error) { } exports.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; }, {}); module.exports = require_common()(exports); var { formatters } = module.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/debug/src/index.js var require_src2 = __commonJS((exports, module) => { if (typeof process === "undefined" || process.type === "renderer" || false || process.__nwjs) { module.exports = require_browser(); } else { module.exports = require_node(); } }); // node_modules/werift-rtp/lib/common/src/log.js var require_log = __commonJS((exports) => { var __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.debug = exports.WeriftError = undefined; var debug_1 = __importDefault(require_src2()); class WeriftError extends Error { constructor(props) { super(props.message); Object.defineProperty(this, "message", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "payload", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "path", { enumerable: true, configurable: true, writable: true, value: undefined }); } toJSON() { return { message: this.message, payload: JSON.parse(JSON.stringify(this.payload)), path: this.path }; } } exports.WeriftError = WeriftError; exports.debug = debug_1.default.debug; }); // node_modules/werift-rtp/lib/common/src/event.js var require_event = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.EventDisposer = exports.Event = undefined; class Event { constructor() { Object.defineProperty(this, "event", { enumerable: true, configurable: true, writable: true, value: { stack: [], promiseStack: [], eventId: 0 } }); Object.defineProperty(this, "ended", { enumerable: true, configurable: true, writable: true, value: false }); Object.defineProperty(this, "onended", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "onerror", { enumerable: true, configurable: true, writable: true, value: (e) => { } }); Object.defineProperty(this, "execute", { enumerable: true, configurable: true, writable: true, value: (...args) => { if (this.ended) { return; } for (const item of this.event.stack) { item.execute(...args); } (async () => { for (const item of this.event.promiseStack) { await item.execute(...args); } })().catch((e) => { this.onerror(e); }); } }); Object.defineProperty(this, "complete", { enumerable: true, configurable: true, writable: true, value: () => { if (this.ended) { return; } for (const item of this.event.stack) { if (item.complete) { item.complete(); } } this.allUnsubscribe(); this.ended = true; if (this.onended) { this.onended(); this.onended = undefined; } } }); Object.defineProperty(this, "error", { enumerable: true, configurable: true, writable: true, value: (e) => { if (this.ended) { return; } for (const item of this.event.stack) { if (item.error) { item.error(e); } } this.allUnsubscribe(); } }); Object.defineProperty(this, "allUnsubscribe", { enumerable: true, configurable: true, writable: true, value: () => { if (this.ended) { throw new Error("event completed"); } this.event = { stack: [], promiseStack: [], eventId: 0 }; } }); Object.defineProperty(this, "subscribe", { enumerable: true, configurable: true, writable: true, value: (execute, complete, error) => { const id = this.event.eventId; this.event.stack.push({ execute, id, complete, error }); this.event.eventId++; const unSubscribe = () => { this.event.stack = this.event.stack.filter((item) => item.id !== id && item); }; const disposer = (disposer2) => { disposer2.push(unSubscribe); }; return { unSubscribe, disposer }; } }); Object.defineProperty(this, "queuingSubscribe", { enumerable: true, configurable: true, writable: true, value: (execute, complete, error) => { if (this.ended) throw new Error("event completed"); const id = this.event.eventId; this.event.promiseStack.push({ execute, id, complete, error }); this.event.eventId++; const unSubscribe = () => { this.event.stack = this.event.stack.filter((item) => item.id !== id && item); }; const disposer = (disposer2) => { disposer2.push(unSubscribe); }; return { unSubscribe, disposer }; } }); Object.defineProperty(this, "once", { enumerable: true, configurable: true, writable: true, value: (execute, complete, error) => { const off = this.subscribe((...args) => { off.unSubscribe(); execute(...args); }, complete, error); } }); Object.defineProperty(this, "watch", { enumerable: true, configurable: true, writable: true, value: (cb, timeLimit) => new Promise((resolve, reject) => { const timeout = timeLimit && setTimeout(() => { reject("Event watch timeout"); }, timeLimit); const { unSubscribe } = this.subscribe((...args) => { const done = cb(...args); if (done) { if (timeout) clearTimeout(timeout); unSubscribe(); resolve(args); } }); }) }); Object.defineProperty(this, "asPromise", { enumerable: true, configurable: true, writable: true, value: (timeLimit) => new Promise((resolve, reject) => { const timeout = timeLimit && setTimeout(() => { reject("Event asPromise timeout"); }, timeLimit); this.once((...args) => { if (timeout) clearTimeout(timeout); resolve(args); }, () => { if (timeout) clearTimeout(timeout); resolve([]); }, (err) => { if (timeout) clearTimeout(timeout); reject(err); }); }) }); } pipe(e) { this.subscribe((...args) => { e.execute(...args); }); } get returnTrigger() { const { execute, error, complete } = this; return { execute, error, complete }; } get returnListener() { const { subscribe, once, asPromise } = this; return { subscribe, once, asPromise }; } get length() { return this.event.stack.length; } } exports.Event = Event; class EventDisposer { constructor() { Object.defineProperty(this, "_disposer", { enumerable: true, configurable: true, writable: true, value: [] }); } push(disposer) { this._disposer.push(disposer); } dispose() { this._disposer.forEach((d) => d()); this._disposer = []; } } exports.EventDisposer = EventDisposer; }); // node_modules/werift-rtp/lib/common/src/transport.js var require_transport = __commonJS((exports) => { var __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TcpTransport = exports.UdpTransport = undefined; var dgram_1 = import.meta.require("dgram"); var net_1 = __importDefault(import.meta.require("net")); var net_2 = import.meta.require("net"); var log_1 = require_log(); var network_1 = require_network(); var log = (0, log_1.debug)("werift-ice:packages/ice/src/transport.ts"); class UdpTransport { constructor(socketType, options = {}) { Object.defineProperty(this, "socketType", { enumerable: true, configurable: true, writable: true, value: socketType }); Object.defineProperty(this, "options", { enumerable: true, configurable: true, writable: true, value: options }); Object.defineProperty(this, "type", { enumerable: true, configurable: true, writable: true, value: "udp" }); Object.defineProperty(this, "socket", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "rinfo", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "onData", { enumerable: true, configurable: true, writable: true, value: () => { } }); Object.defineProperty(this, "closed", { enumerable: true, configurable: true, writable: true, value: false }); Object.defineProperty(this, "send", { enumerable: true, configurable: true, writable: true, value: async (data, addr) => { if (addr && !net_1.default.isIP(addr[0])) { return new Promise((r, f) => { this.socket.send(data, addr[1], addr[0], (error) => { if (error) { log("send error", addr, data); f(error); } else { r(); } }); }); } else { addr = addr ?? [this.rinfo?.address, this.rinfo?.port]; this.socket.send(data, addr[1], addr[0]); } } }); Object.defineProperty(this, "close", { enumerable: true, configurable: true, writable: true, value: () => new Promise((r) => { this.closed = true; this.socket.once("close", r); try { this.socket.close(); } catch (error) { r(); } }) }); this.socket = (0, dgram_1.createSocket)(socketType); this.socket.on("message", (data, info) => { if ((0, network_1.normalizeFamilyNodeV18)(info.family) === 6) { [info.address] = info.address.split("%"); } this.rinfo = info; try { this.onData(data, [info.address, info.port]); } catch (error) { log("onData error", error); } }); } static async init(type, options = {}) { const transport = new UdpTransport(type, options); await transport.init(); return transport; } async init() { const address = (0, network_1.interfaceAddress)(this.socketType, this.options.interfaceAddresses); if (this.options.port) { this.socket.bind({ port: this.options.port, address }); } else if (this.options.portRange) { const port = await (0, network_1.findPort)(this.options.portRange[0], this.options.portRange[1], this.socketType, this.options.interfaceAddresses); this.socket.bind({ port, address }); } else { this.socket.bind({ address }); } await new Promise((r) => this.socket.once("listening", r)); } get address() { return this.socket.address(); } get host() { return this.socket.address().address; } get port() { return this.socket.address().port; } } exports.UdpTransport = UdpTransport; class TcpTransport { constructor(addr) { Object.defineProperty(this, "addr", { enumerable: true, configurable: true, writable: true, value: addr }); Object.defineProperty(this, "type", { enumerable: true, configurable: true, writable: true, value: "tcp" }); Object.defineProperty(this, "connecting", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "client", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "onData", { enumerable: true, configurable: true, writable: true, value: () => { } }); Object.defineProperty(this, "closed", { enumerable: true, configurable: true, writable: true, value: false }); Object.defineProperty(this, "send", { enumerable: true, configurable: true, writable: true, value: async (data, addr2) => { await this.connecting; this.client.write(data, (err) => { if (err) { console.log("err", err); } }); } }); Object.defineProperty(this, "close", { enumerable: true, configurable: true, writable: true, value: async () => { this.closed = true; this.client.destroy(); } }); this.connect(); } connect() { if (this.closed) { return; } if (this.client) { this.client.destroy(); } this.connecting = new Promise((r, f) => { try { this.client = (0, net_2.connect)({ port: this.addr[1], host: this.addr[0] }, r); } catch (error) { f(error); } }); this.client.on("data", (data) => { const addr = [ this.client.remoteAddress, this.client.remotePort ]; this.onData(data, addr); }); this.client.on("end", () => { this.connect(); }); this.client.on("error", (error) => { console.log("error", error); }); } async init() { await this.connecting; } static async init(addr) { const transport = new TcpTransport(addr); await transport.init(); return transport; } get address() { return {}; } } exports.TcpTransport = TcpTransport; }); // node_modules/werift-rtp/lib/common/src/index.js var require_src3 = __commonJS((exports) => { var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === undefined) 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 === undefined) k2 = k; o[k2] = m[k]; }); var __exportStar = exports && exports.__exportStar || function(m, exports2) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require_binary(), exports); __exportStar(require_number(), exports); __exportStar(require_promise(), exports); __exportStar(require_network(), exports); __exportStar(require_type(), exports); __exportStar(require_log(), exports); __exportStar(require_event(), exports); __exportStar(require_transport(), exports); }); // node_modules/@minhducsun2002/leb128/dist/index.js var require_dist3 = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.LEB128 = exports.SignedLEB128 = exports.UnsignedLEB128 = undefined; var Mask; (function(Mask2) { Mask2[Mask2["LOWER_7"] = 127] = "LOWER_7"; Mask2[Mask2["UPPER_1"] = 128] = "UPPER_1"; })(Mask || (Mask = {})); var int = (a) => Number.isSafeInteger(a); class UnsignedLEB128 { static decode(buf, offset = 0) { const mp = this.$scanForNullBytes(buf, offset); let result = 0, shift = 0; for (let d = 0;d <= mp - offset; d++) { const a = buf[offset + d] & Mask.LOWER_7; result |= a << shift; shift += 8 - 1; } return result; } static encode(number) { this.check(number); if (number < 0) throw new Error(`An unsigned number must NOT be negative, ${number} is!`); let out = [], a = number; do { let byte = a & Mask.LOWER_7; a >>= 8 - 1; if (a) byte = byte | Mask.UPPER_1; out.push(byte); } while (a); return Uint8Array.from(out); } static check(n) { if (!int(n)) throw new Error(`${n} is not a safe integer!`); } static $scanForNullBytes(buf, offset = 0) { let count = offset, tmp = 0; do { if (count >= buf.byteLength) throw new Error("This is not a LEB128-encoded Uint8Array, no ending found!"); tmp = buf.slice(count, count + 1)[0]; count++; } while (tmp & Mask.UPPER_1); return count - 1; } static getLength(buf, offset = 0) { return this.$scanForNullBytes(buf, offset) - offset; } } exports.UnsignedLEB128 = UnsignedLEB128; class SignedLEB128 { static $ceil7mul(n) { let a = n; while (a % 7) a++; return a; } static check(n) { if (!int(n)) throw new Error(`${n} is not a safe integer!`); } static encode(number) { this.check(number); if (number >= 0) throw new Error(`A signed number must be negative, ${number} isn't!`); const bitCount = Math.ceil(Math.log2(-number)); return UnsignedLEB128.encode((1 << this.$ceil7mul(bitCount)) + number); } static decode(buf, offset = 0) { const r = UnsignedLEB128.decode(buf, offset); const bitCount = Math.ceil(Math.log2(r)); const mask = 1 << bitCount; return -(mask - r); } } exports.SignedLEB128 = SignedLEB128; class LEB128 { } exports.LEB128 = LEB128; LEB128.encode = (n) => (n >= 0 ? UnsignedLEB128 : SignedLEB128).encode(n); LEB128.decode = (buf, offset = 0, s = false) => (s ? SignedLEB128 : UnsignedLEB128).decode(buf, offset); }); // node_modules/werift-rtp/lib/rtp/src/imports/common.js var require_common2 = __commonJS((exports) => { var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === undefined) 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 === undefined) k2 = k; o[k2] = m[k]; }); var __exportStar = exports && exports.__exportStar || function(m, exports2) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); __exportStar(require_src3(), exports); }); // node_modules/werift-rtp/lib/rtp/src/codec/av1.js var require_av1 = __commonJS((exports) => { function leb128decode(buf) { let value = 0; let leb128bytes = 0; for (let i = 0;i < 8; i++) { const leb128byte = buf.readUInt8(i); value |= (leb128byte & 127) << i * 7; leb128bytes++; if (!(leb128byte & 128)) { break; } } return [value, leb128bytes]; } Object.defineProperty(exports, "__esModule", { value: true }); exports.AV1Obu = exports.AV1RtpPayload = undefined; exports.leb128decode = leb128decode; var leb128_1 = require_dist3(); var common_1 = require_common2(); var log = (0, common_1.debug)("werift-rtp : packages/rtp/src/codec/av1.ts"); class AV1RtpPayload { constructor() { Object.defineProperty(this, "zBit_RtpStartsWithFragment", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "yBit_RtpEndsWithFragment", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "w_RtpNumObus", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "nBit_RtpStartsNewCodedVideoSequence", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "obu_or_fragment", { enumerable: true, configurable: true, writable: true, value: [] }); } static isDetectedFinalPacketInSequence(header) { return header.marker; } get isKeyframe() { return this.nBit_RtpStartsNewCodedVideoSequence === 1; } static getFrame(payloads) { const frames = []; const objects = payloads.flatMap((p) => p.obu_or_fragment).reduce((acc, cur, i) => { acc[i] = cur; return acc; }, {}); const length = Object.keys(objects).length; for (const i of Object.keys(objects).map(Number)) { const exist = objects[i]; if (!exist) continue; const { data, isFragment } = exist; if (isFragment) { let fragments = []; for (let head = i;head < length; head++) { const target = objects[head]; if (target.isFragment) { fragments.push(target.data); delete objects[head]; } else { break; } } if (fragments.length <= 1) { log("fragment lost, maybe packet lost"); fragments = []; } frames.push(Buffer.concat(fragments)); } else { frames.push(data); } } const obus = frames.map((f) => AV1Obu.deSerialize(f)); const lastObu = obus.pop(); return Buffer.concat([ ...obus.map((o) => { o.obu_has_size_field = 1; return o.serialize(); }), lastObu.serialize() ]); } } exports.AV1RtpPayload = AV1RtpPayload; Object.defineProperty(AV1RtpPayload, "deSerialize", { enumerable: true, configurable: true, writable: true, value: (buf) => { const p = new AV1RtpPayload; let offset = 0; p.zBit_RtpStartsWithFragment = (0, common_1.getBit)(buf[offset], 0); p.yBit_RtpEndsWithFragment = (0, common_1.getBit)(buf[offset], 1); p.w_RtpNumObus = (0, common_1.getBit)(buf[offset], 2, 2); p.nBit_RtpStartsNewCodedVideoSequence = (0, common_1.getBit)(buf[offset], 4); offset++; if (p.nBit_RtpStartsNewCodedVideoSequence && p.zBit_RtpStartsWithFragment) { throw new Error; } [...Array(p.w_RtpNumObus - 1).keys()].forEach((i) => { const [elementSize, bytes] = leb128decode(buf.subarray(offset)); const start = offset + bytes; const end = start + elementSize; let isFragment2 = false; if (p.zBit_RtpStartsWithFragment && i === 0) { isFragment2 = true; } p.obu_or_fragment.push({ data: buf.subarray(start, end), isFragment: isFragment2 }); offset += bytes + elementSize; }); let isFragment = false; if (p.yBit_RtpEndsWithFragment || p.w_RtpNumObus === 1 && p.zBit_RtpStartsWithFragment) { isFragment = true; } p.obu_or_fragment.push({ data: buf.subarray(offset), isFragment }); return p; } }); class AV1Obu { constructor() { Object.defineProperty(this, "obu_forbidden_bit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "obu_type", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "obu_extension_flag", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "obu_has_size_field", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "obu_reserved_1bit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "payload", { enumerable: true, configurable: true, writable: true, value: undefined }); } static deSerialize(buf) { const obu = new AV1Obu; let offset = 0; obu.obu_forbidden_bit = (0, common_1.getBit)(buf[offset], 0); obu.obu_type = OBU_TYPES[(0, common_1.getBit)(buf[offset], 1, 4)]; obu.obu_extension_flag = (0, common_1.getBit)(buf[offset], 5); obu.obu_has_size_field = (0, common_1.getBit)(buf[offset], 6); obu.obu_reserved_1bit = (0, common_1.getBit)(buf[offset], 7); offset++; obu.payload = buf.subarray(offset); return obu; } serialize() { const header = new common_1.BitWriter2(8).set(this.obu_forbidden_bit).set(OBU_TYPE_IDS[this.obu_type], 4).set(this.obu_extension_flag).set(this.obu_has_size_field).set(this.obu_reserved_1bit).buffer; let obuSize = Buffer.alloc(0); if (this.obu_has_size_field) { obuSize = leb128_1.LEB128.encode(this.payload.length); } return Buffer.concat([header, obuSize, this.payload]); } } exports.AV1Obu = AV1Obu; var OBU_TYPES = { 0: "Reserved", 1: "OBU_SEQUENCE_HEADER", 2: "OBU_TEMPORAL_DELIMITER", 3: "OBU_FRAME_HEADER", 4: "OBU_TILE_GROUP", 5: "OBU_METADATA", 6: "OBU_FRAME", 7: "OBU_REDUNDANT_FRAME_HEADER", 8: "OBU_TILE_LIST", 15: "OBU_PADDING" }; var OBU_TYPE_IDS = Object.entries(OBU_TYPES).reduce((acc, [key, value]) => { acc[value] = Number(key); return acc; }, {}); }); // node_modules/werift-rtp/lib/rtp/src/codec/h264.js var require_h264 = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.NalUnitType = exports.H264RtpPayload = undefined; var src_1 = require_src3(); class H264RtpPayload { constructor() { Object.defineProperty(this, "f", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "nri", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "nalUnitType", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "s", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "e", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "r", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "nalUnitPayloadType", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "payload", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "fragment", { enumerable: true, configurable: true, writable: true, value: undefined }); } static deSerialize(buf, fragment) { const h264 = new H264RtpPayload; let offset = 0; const naluHeader = buf[offset]; h264.f = (0, src_1.getBit)(naluHeader, 0); h264.nri = (0, src_1.getBit)(naluHeader, 1, 2); h264.nalUnitType = (0, src_1.getBit)(naluHeader, 3, 5); offset++; h264.s = (0, src_1.getBit)(buf[offset], 0); h264.e = (0, src_1.getBit)(buf[offset], 1); h264.r = (0, src_1.getBit)(buf[offset], 2); h264.nalUnitPayloadType = (0, src_1.getBit)(buf[offset], 3, 5); offset++; if (0 < h264.nalUnitType && h264.nalUnitType < exports.NalUnitType.stap_a) { h264.payload = this.packaging(buf); } else if (h264.nalUnitType === exports.NalUnitType.stap_a) { let offset2 = stap_aHeaderSize; let result = Buffer.alloc(0); while (offset2 < buf.length) { const naluSize = buf.readUInt16BE(offset2); offset2 += stap_aNALULengthSize; result = Buffer.concat([ result, this.packaging(buf.subarray(offset2, offset2 + naluSize)) ]); offset2 += naluSize; } h264.payload = result; } else if (h264.nalUnitType === exports.NalUnitType.fu_a) { if (!fragment) { fragment = Buffer.alloc(0); } const fu = buf.subarray(offset); h264.fragment = Buffer.concat([fragment, fu]); if (h264.e) { const bitStream = new src_1.BitStream(Buffer.alloc(1)).writeBits(1, 0).writeBits(2, h264.nri).writeBits(5, h264.nalUnitPayloadType); const nalu = Buffer.concat([bitStream.uint8Array, h264.fragment]); h264.fragment = undefined; h264.payload = this.packaging(nalu); } } return h264; } static packaging(buf) { return Buffer.concat([annex_bNALUStartCode, buf]); } static isDetectedFinalPacketInSequence(header) { return header.marker; } get isKeyframe() { return this.nalUnitType === exports.NalUnitType.idrSlice || this.nalUnitPayloadType === exports.NalUnitType.idrSlice; } get isPartitionHead() { if (this.nalUnitType === exports.NalUnitType.fu_a || this.nalUnitType === exports.NalUnitType.fu_b) { return this.s !== 0; } return true; } } exports.H264RtpPayload = H264RtpPayload; exports.NalUnitType = { idrSlice: 5, stap_a: 24, stap_b: 25, mtap16: 26, mtap24: 27, fu_a: 28, fu_b: 29 }; var annex_bNALUStartCode = Buffer.from([0, 0, 0, 1]); var stap_aHeaderSize = 1; var stap_aNALULengthSize = 2; }); // node_modules/werift-rtp/lib/rtp/src/codec/opus.js var require_opus2 = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.OpusRtpPayload = undefined; var src_1 = require_src3(); class OpusRtpPayload { constructor() { Object.defineProperty(this, "payload", { enumerable: true, configurable: true, writable: true, value: undefined }); } static deSerialize(buf) { const opus = new OpusRtpPayload; opus.payload = buf; return opus; } static isDetectedFinalPacketInSequence(header) { return true; } get isKeyframe() { return true; } static createCodecPrivate(samplingFrequency = 48000) { return Buffer.concat([ Buffer.from("OpusHead"), (0, src_1.bufferWriter)([1, 1], [1, 2]), (0, src_1.bufferWriterLE)([2, 4, 2, 1], [312, samplingFrequency, 0, 0]) ]); } } exports.OpusRtpPayload = OpusRtpPayload; }); // node_modules/werift-rtp/lib/rtp/src/codec/vp8.js var require_vp8 = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.Vp8RtpPayload = undefined; var src_1 = require_src3(); class Vp8RtpPayload { constructor() { Object.defineProperty(this, "xBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "nBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "sBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "pid", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "iBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "lBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "tBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "kBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "mBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "pictureId", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "payload", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "size0", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "hBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "ver", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "pBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "size1", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "size2", { enumerable: true, configurable: true, writable: true, value: 0 }); } static deSerialize(buf) { const p = new Vp8RtpPayload; let offset = 0; p.xBit = (0, src_1.getBit)(buf[offset], 0); p.nBit = (0, src_1.getBit)(buf[offset], 2); p.sBit = (0, src_1.getBit)(buf[offset], 3); p.pid = (0, src_1.getBit)(buf[offset], 5, 3); offset++; if (p.xBit) { p.iBit = (0, src_1.getBit)(buf[offset], 0); p.lBit = (0, src_1.getBit)(buf[offset], 1); p.tBit = (0, src_1.getBit)(buf[offset], 2); p.kBit = (0, src_1.getBit)(buf[offset], 3); offset++; } if (p.iBit) { p.mBit = (0, src_1.getBit)(buf[offset], 0); if (p.mBit) { const _7 = (0, src_1.paddingByte)((0, src_1.getBit)(buf[offset], 1, 7)); const _8 = (0, src_1.paddingByte)(buf[offset + 1]); p.pictureId = Number.parseInt(_7 + _8, 2); offset += 2; } else { p.pictureId = (0, src_1.getBit)(buf[offset], 1, 7); offset++; } } if (p.lBit) { offset++; } if (p.lBit || p.kBit) { if (p.tBit) { } if (p.kBit) { } offset++; } p.payload = buf.subarray(offset); if (p.payloadHeaderExist) { p.size0 = (0, src_1.getBit)(buf[offset], 0, 3); p.hBit = (0, src_1.getBit)(buf[offset], 3); p.ver = (0, src_1.getBit)(buf[offset], 4, 3); p.pBit = (0, src_1.getBit)(buf[offset], 7); offset++; p.size1 = buf[offset]; offset++; p.size2 = buf[offset]; } return p; } static isDetectedFinalPacketInSequence(header) { return header.marker; } get isKeyframe() { return this.pBit === 0; } get isPartitionHead() { return this.sBit === 1; } get payloadHeaderExist() { return this.sBit === 1 && this.pid === 0; } get size() { if (this.payloadHeaderExist) { const size = this.size0 + 8 * this.size1 + 2048 * this.size2; return size; } return 0; } } exports.Vp8RtpPayload = Vp8RtpPayload; }); // node_modules/werift-rtp/lib/rtp/src/codec/vp9.js var require_vp9 = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.Vp9RtpPayload = undefined; var src_1 = require_src3(); class Vp9RtpPayload { constructor() { Object.defineProperty(this, "iBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "pBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "lBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "fBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "bBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "eBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "vBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "zBit", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "m", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "pictureId", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "tid", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "u", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "sid", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "d", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "tl0PicIdx", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "pDiff", { enumerable: true, configurable: true, writable: true, value: [] }); Object.defineProperty(this, "n_s", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "y", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "g", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "width", { enumerable: true, configurable: true, writable: true, value: [] }); Object.defineProperty(this, "height", { enumerable: true, configurable: true, writable: true, value: [] }); Object.defineProperty(this, "n_g", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "pgT", { enumerable: true, configurable: true, writable: true, value: [] }); Object.defineProperty(this, "pgU", { enumerable: true, configurable: true, writable: true, value: [] }); Object.defineProperty(this, "pgP_Diff", { enumerable: true, configurable: true, writable: true, value: [] }); Object.defineProperty(this, "payload", { enumerable: true, configurable: true, writable: true, value: undefined }); } static deSerialize(buf) { const { p, offset } = this.parseRtpPayload(buf); p.payload = buf.subarray(offset); return p; } static parseRtpPayload(buf) { const p = new Vp9RtpPayload; let offset = 0; p.iBit = (0, src_1.getBit)(buf[offset], 0); p.pBit = (0, src_1.getBit)(buf[offset], 1); p.lBit = (0, src_1.getBit)(buf[offset], 2); p.fBit = (0, src_1.getBit)(buf[offset], 3); p.bBit = (0, src_1.getBit)(buf[offset], 4); p.eBit = (0, src_1.getBit)(buf[offset], 5); p.vBit = (0, src_1.getBit)(buf[offset], 6); p.zBit = (0, src_1.getBit)(buf[offset], 7); offset++; if (p.iBit) { p.m = (0, src_1.getBit)(buf[offset], 0); if (p.m) { const _7 = (0, src_1.paddingByte)((0, src_1.getBit)(buf[offset], 1, 7)); const _8 = (0, src_1.paddingByte)(buf[offset + 1]); p.pictureId = Number.parseInt(_7 + _8, 2); offset += 2; } else { p.pictureId = (0, src_1.getBit)(buf[offset], 1, 7); offset++; } } if (p.lBit) { p.tid = (0, src_1.getBit)(buf[offset], 0, 3); p.u = (0, src_1.getBit)(buf[offset], 3); p.sid = (0, src_1.getBit)(buf[offset], 4, 3); p.d = (0, src_1.getBit)(buf[offset], 7); offset++; if (p.fBit === 0) { p.tl0PicIdx = buf[offset]; offset++; } } if (p.fBit && p.pBit) { for (;; ) { p.pDiff = [...p.pDiff, (0, src_1.getBit)(buf[offset], 0, 7)]; const n = (0, src_1.getBit)(buf[offset], 7); offset++; if (n === 0) break; } } if (p.vBit) { p.n_s = (0, src_1.getBit)(buf[offset], 0, 3); p.y = (0, src_1.getBit)(buf[offset], 3); p.g = (0, src_1.getBit)(buf[offset], 4); offset++; if (p.y) { [...Array(p.n_s + 1)].forEach(() => { p.width.push(buf.readUInt16BE(offset)); offset += 2; p.height.push(buf.readUInt16BE(offset)); offset += 2; }); } if (p.g) { p.n_g = buf[offset]; offset++; } if (p.n_g > 0) { [...Array(p.n_g).keys()].forEach((i) => { p.pgT.push((0, src_1.getBit)(buf[offset], 0, 3)); p.pgU.push((0, src_1.getBit)(buf[offset], 3)); const r = (0, src_1.getBit)(buf[offset], 4, 2); offset++; p.pgP_Diff[i] = []; if (r > 0) { [...Array(r)].forEach(() => { p.pgP_Diff[i].push(buf[offset]); offset++; }); } }); } } return { offset, p }; } static isDetectedFinalPacketInSequence(header) { return header.marker; } get isKeyframe() { return !!(!this.pBit && this.bBit && (!this.sid || !this.lBit)); } get isPartitionHead() { return this.bBit && (!this.lBit || !this.d); } } exports.Vp9RtpPayload = Vp9RtpPayload; }); // node_modules/werift-rtp/lib/rtp/src/codec/base.js var require_base = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.DePacketizerBase = undefined; class DePacketizerBase { constructor() { Object.defineProperty(this, "payload", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "fragment", { enumerable: true, configurable: true, writable: true, value: undefined }); } static deSerialize(buf, fragment) { return {}; } static isDetectedFinalPacketInSequence(header) { return true; } get isKeyframe() { return true; } } exports.DePacketizerBase = DePacketizerBase; }); // node_modules/werift-rtp/lib/rtp/src/codec/index.js var require_codec = __commonJS((exports) => { function dePacketizeRtpPackets(codec, packets, frameFragmentBuffer) { const basicCodecParser = (Depacketizer) => { const partitions = []; for (const p of packets) { const codec2 = Depacketizer.deSerialize(p.payload, frameFragmentBuffer); if (codec2.fragment) { frameFragmentBuffer ?? (frameFragmentBuffer = Buffer.alloc(0)); frameFragmentBuffer = codec2.fragment; } else if (codec2.payload) { frameFragmentBuffer = undefined; } partitions.push(codec2); } const isKeyframe = !!partitions.find((f) => f.isKeyframe); const data = Buffer.concat(partitions.map((f) => f.payload).filter((p) => p)); return { isKeyframe, data, sequence: packets.at(-1)?.header.sequenceNumber ?? 0, timestamp: packets.at(-1)?.header.timestamp ?? 0, frameFragmentBuffer }; }; switch (codec.toUpperCase()) { case "AV1": { const chunks = packets.map((p) => av1_1.AV1RtpPayload.deSerialize(p.payload)); const isKeyframe = !!chunks.find((f) => f.isKeyframe); const data = av1_1.AV1RtpPayload.getFrame(chunks); return { isKeyframe, data, sequence: packets.at(-1)?.header.sequenceNumber ?? 0, timestamp: packets.at(-1)?.header.timestamp ?? 0 }; } case "MPEG4/ISO/AVC": return basicCodecParser(h264_1.H264RtpPayload); case "VP8": return basicCodecParser(vp8_1.Vp8RtpPayload); case "VP9": return basicCodecParser(vp9_1.Vp9RtpPayload); case "OPUS": return basicCodecParser(opus_1.OpusRtpPayload); default: throw new Error; } } var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === undefined) 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 === undefined) k2 = k; o[k2] = m[k]; }); var __exportStar = exports && exports.__exportStar || function(m, exports2) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.depacketizerCodecs = undefined; exports.dePacketizeRtpPackets = dePacketizeRtpPackets; var av1_1 = require_av1(); var h264_1 = require_h264(); var opus_1 = require_opus2(); var vp8_1 = require_vp8(); var vp9_1 = require_vp9(); __exportStar(require_av1(), exports); __exportStar(require_base(), exports); __exportStar(require_h264(), exports); __exportStar(require_opus2(), exports); __exportStar(require_vp8(), exports); __exportStar(require_vp9(), exports); exports.depacketizerCodecs = [ "MPEG4/ISO/AVC", "VP8", "VP9", "OPUS", "AV1" ]; }); // node_modules/werift-rtp/lib/rtp/src/helper.js var require_helper = __commonJS((exports) => { function enumerate(arr) { return arr.map((v, i) => [i, v]); } function growBufferSize(buf, size) { const glow = Buffer.alloc(size); buf.copy(glow); return glow; } function Int(v) { return Number.parseInt(v.toString(), 10); } function isMedia(buf) { const firstByte = buf[0]; return firstByte > 127 && firstByte < 192; } Object.defineProperty(exports, "__esModule", { value: true }); exports.timer = undefined; exports.enumerate = enumerate; exports.growBufferSize = growBufferSize; exports.Int = Int; exports.isMedia = isMedia; exports.timer = { setTimeout: (...args) => { const id = setTimeout(...args); return () => clearTimeout(id); }, setInterval: (...args) => { const id = setInterval(() => { args[0](); }, ...args.slice(1)); return () => clearInterval(id); } }; }); // node_modules/werift-rtp/lib/rtp/src/rtcp/header.js var require_header = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.RtcpHeader = exports.RTCP_HEADER_SIZE = undefined; var src_1 = require_src3(); exports.RTCP_HEADER_SIZE = 4; class RtcpHeader { constructor(props = {}) { Object.defineProperty(this, "version", { enumerable: true, configurable: true, writable: true, value: 2 }); Object.defineProperty(this, "padding", { enumerable: true, configurable: true, writable: true, value: false }); Object.defineProperty(this, "count", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "type", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "length", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.assign(this, props); } serialize() { const v_p_rc = new src_1.BitWriter(8); v_p_rc.set(2, 0, this.version); if (this.padding) v_p_rc.set(1, 2, 1); v_p_rc.set(5, 3, this.count); const buf = (0, src_1.bufferWriter)([1, 1, 2], [v_p_rc.value, this.type, this.length]); return buf; } static deSerialize(buf) { const [v_p_rc, type, length] = (0, src_1.bufferReader)(buf, [1, 1, 2]); const version = (0, src_1.getBit)(v_p_rc, 0, 2); const padding = (0, src_1.getBit)(v_p_rc, 2, 1) > 0; const count = (0, src_1.getBit)(v_p_rc, 3, 5); return new RtcpHeader({ version, padding, count, type, length }); } } exports.RtcpHeader = RtcpHeader; }); // node_modules/werift-rtp/lib/rtp/src/rtcp/rr.js var require_rr = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.RtcpReceiverInfo = exports.RtcpRrPacket = undefined; var src_1 = require_src3(); var rtcp_1 = require_rtcp(); class RtcpRrPacket { constructor(props = {}) { Object.defineProperty(this, "ssrc", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "reports", { enumerable: true, configurable: true, writable: true, value: [] }); Object.defineProperty(this, "type", { enumerable: true, configurable: true, writable: true, value: RtcpRrPacket.type }); Object.assign(this, props); } serialize() { let payload = (0, src_1.bufferWriter)([4], [this.ssrc]); payload = Buffer.concat([ payload, ...this.reports.map((report) => report.serialize()) ]); return rtcp_1.RtcpPacketConverter.serialize(RtcpRrPacket.type, this.reports.length, payload, Math.floor(payload.length / 4)); } static deSerialize(data, count) { const [ssrc] = (0, src_1.bufferReader)(data, [4]); let pos = 4; const reports = []; for (let _ = 0;_ < count; _++) { reports.push(RtcpReceiverInfo.deSerialize(data.slice(pos, pos + 24))); pos += 24; } return new RtcpRrPacket({ ssrc, reports }); } } exports.RtcpRrPacket = RtcpRrPacket; Object.defineProperty(RtcpRrPacket, "type", { enumerable: true, configurable: true, writable: true, value: 201 }); class RtcpReceiverInfo { constructor(props = {}) { Object.defineProperty(this, "ssrc", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "fractionLost", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "packetsLost", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "highestSequence", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "jitter", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "lsr", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "dlsr", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.assign(this, props); } toJSON() { return { ssrc: this.ssrc, fractionLost: this.fractionLost, packetsLost: this.packetsLost, highestSequence: this.highestSequence, jitter: this.jitter, lsr: this.lsr, dlsr: this.dlsr }; } serialize() { return (0, src_1.bufferWriter)([4, 1, 3, 4, 4, 4, 4], [ this.ssrc, this.fractionLost, this.packetsLost, this.highestSequence, this.jitter, this.lsr, this.dlsr ]); } static deSerialize(data) { const [ssrc, fractionLost, packetsLost, highestSequence, jitter, lsr, dlsr] = (0, src_1.bufferReader)(data, [4, 1, 3, 4, 4, 4, 4]); return new RtcpReceiverInfo({ ssrc, fractionLost, packetsLost, highestSequence, jitter, lsr, dlsr }); } } exports.RtcpReceiverInfo = RtcpReceiverInfo; }); // node_modules/werift-rtp/lib/rtp/src/rtcp/rtpfb/nack.js var require_nack = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.GenericNack = undefined; var _1 = require_rtpfb(); var src_1 = require_src3(); var header_1 = require_header(); class GenericNack { toJSON() { return { lost: this.lost, senderSsrc: this.senderSsrc, mediaSourceSsrc: this.mediaSourceSsrc }; } constructor(props = {}) { Object.defineProperty(this, "count", { enumerable: true, configurable: true, writable: true, value: GenericNack.count }); Object.defineProperty(this, "header", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "senderSsrc", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "mediaSourceSsrc", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "lost", { enumerable: true, configurable: true, writable: true, value: [] }); Object.assign(this, props); if (!this.header) { this.header = new header_1.RtcpHeader({ type: _1.RtcpTransportLayerFeedback.type, count: this.count, version: 2 }); } } static deSerialize(data, header) { const [senderSsrc, mediaSourceSsrc] = (0, src_1.bufferReader)(data, [4, 4]); const lost = []; for (let pos = 8;pos < data.length; pos += 4) { const [pid, blp] = (0, src_1.bufferReader)(data.subarray(pos), [2, 2]); lost.push(pid); for (let diff = 0;diff < 16; diff++) { if (blp >> diff & 1) { lost.push(pid + diff + 1); } } } return new GenericNack({ header, senderSsrc, mediaSourceSsrc, lost }); } serialize() { const ssrcPair = (0, src_1.bufferWriter)([4, 4], [this.senderSsrc, this.mediaSourceSsrc]); const fci = []; if (this.lost.length > 0) { let headPid = this.lost[0], blp = 0; this.lost.slice(1).forEach((pid) => { const diff = pid - headPid - 1; if (diff >= 0 && diff < 16) { blp |= 1 << diff; } else { fci.push((0, src_1.bufferWriter)([2, 2], [headPid, blp])); headPid = pid; blp = 0; } }); fci.push((0, src_1.bufferWriter)([2, 2], [headPid, blp])); } const buf = Buffer.concat([ssrcPair, Buffer.concat(fci)]); this.header.length = buf.length / 4; return Buffer.concat([this.header.serialize(), buf]); } } exports.GenericNack = GenericNack; Object.defineProperty(GenericNack, "count", { enumerable: true, configurable: true, writable: true, value: 1 }); }); // node_modules/werift-rtp/lib/rtp/src/rtcp/rtpfb/twcc.js var require_twcc = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.PacketResult = exports.PacketStatus = exports.PacketChunk = exports.RecvDelta = exports.StatusVectorChunk = exports.RunLengthChunk = exports.TransportWideCC = undefined; var common_1 = require_common2(); var header_1 = require_header(); var log = (0, common_1.debug)("werift/rtp/rtcp/rtpfb/twcc"); class TransportWideCC { constructor(props = {}) { Object.defineProperty(this, "count", { enumerable: true, configurable: true, writable: true, value: TransportWideCC.count }); Object.defineProperty(this, "length", { enumerable: true, configurable: true, writable: true, value: 2 }); Object.defineProperty(this, "senderSsrc", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "mediaSourceSsrc", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "baseSequenceNumber", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "packetStatusCount", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "referenceTime", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "fbPktCount", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "packetChunks", { enumerable: true, configurable: true, writable: true, value: [] }); Object.defineProperty(this, "recvDeltas", { enumerable: true, configurable: true, writable: true, value: [] }); Object.defineProperty(this, "header", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.assign(this, props); if (!this.header) { this.header = new header_1.RtcpHeader({ type: 205, count: this.count, version: 2 }); } } static deSerialize(data, header) { const [senderSsrc, mediaSsrc, baseSequenceNumber, packetStatusCount, referenceTime, fbPktCount] = (0, common_1.bufferReader)(data, [4, 4, 2, 2, 3, 1]); const packetChunks = []; const recvDeltas = []; let packetStatusPos = 16; for (let processedPacketNum = 0;processedPacketNum < packetStatusCount; ) { const type = (0, common_1.getBit)(data.slice(packetStatusPos, packetStatusPos + 1)[0], 0, 1); let iPacketStatus; switch (type) { case PacketChunk.TypeTCCRunLengthChunk: { const packetStatus = RunLengthChunk.deSerialize(data.slice(packetStatusPos, packetStatusPos + 2)); iPacketStatus = packetStatus; const packetNumberToProcess = Math.min(packetStatusCount - processedPacketNum, packetStatus.runLength); if (packetStatus.packetStatus === PacketStatus.TypeTCCPacketReceivedSmallDelta || packetStatus.packetStatus === PacketStatus.TypeTCCPacketReceivedLargeDelta) { for (let _ = 0;_ < packetNumberToProcess; _++) { recvDeltas.push(new RecvDelta({ type: packetStatus.packetStatus })); } } processedPacketNum += packetNumberToProcess; } break; case PacketChunk.TypeTCCStatusVectorChunk: { const packetStatus = StatusVectorChunk.deSerialize(data.slice(packetStatusPos, packetStatusPos + 2)); iPacketStatus = packetStatus; if (packetStatus.symbolSize === 0) { packetStatus.symbolList.forEach((v) => { if (v === PacketStatus.TypeTCCPacketReceivedSmallDelta) { recvDeltas.push(new RecvDelta({ type: PacketStatus.TypeTCCPacketReceivedSmallDelta })); } }); } if (packetStatus.symbolSize === 1) { packetStatus.symbolList.forEach((v) => { if (v === PacketStatus.TypeTCCPacketReceivedSmallDelta || v === PacketStatus.TypeTCCPacketReceivedLargeDelta) { recvDeltas.push(new RecvDelta({ type: v })); } }); } processedPacketNum += packetStatus.symbolList.length; } break; } if (!iPacketStatus) throw new Error; packetStatusPos += 2; packetChunks.push(iPacketStatus); } let recvDeltaPos = packetStatusPos; recvDeltas.forEach((delta) => { if (delta.type === PacketStatus.TypeTCCPacketReceivedSmallDelta) { delta.deSerialize(data.slice(recvDeltaPos, recvDeltaPos + 1)); recvDeltaPos++; } if (delta.type === PacketStatus.TypeTCCPacketReceivedLargeDelta) { delta.deSerialize(data.slice(recvDeltaPos, recvDeltaPos + 2)); recvDeltaPos += 2; } }); return new TransportWideCC({ senderSsrc, mediaSourceSsrc: mediaSsrc, baseSequenceNumber, packetStatusCount, referenceTime, fbPktCount, recvDeltas, packetChunks, header }); } serialize() { const constBuf = (0, common_1.bufferWriter)([4, 4, 2, 2, 3, 1], [ this.senderSsrc, this.mediaSourceSsrc, this.baseSequenceNumber, this.packetStatusCount, this.referenceTime, this.fbPktCount ]); const chunks = Buffer.concat(this.packetChunks.map((chunk) => chunk.serialize())); const deltas = Buffer.concat(this.recvDeltas.map((delta) => { try { return delta.serialize(); } catch (error) { log(error?.message); return; } }).filter((v) => v)); const buf = Buffer.concat([constBuf, chunks, deltas]); if (this.header.padding && buf.length % 4 !== 0) { const rest = 4 - buf.length % 4; const padding = Buffer.alloc(rest); padding[padding.length - 1] = padding.length; this.header.length = Math.floor((buf.length + padding.length) / 4); return Buffer.concat([this.header.serialize(), buf, padding]); } this.header.length = Math.floor(buf.length / 4); return Buffer.concat([this.header.serialize(), buf]); } get packetResults() { const currentSequenceNumber = this.baseSequenceNumber - 1; const results = this.packetChunks.filter((v) => v instanceof RunLengthChunk).flatMap((chunk) => chunk.results(currentSequenceNumber)); let deltaIdx = 0; const referenceTime = BigInt(this.referenceTime) * 64n; let currentReceivedAtMs = referenceTime; for (const result of results) { const recvDelta = this.recvDeltas[deltaIdx]; if (!result.received || !recvDelta) { continue; } currentReceivedAtMs += BigInt(recvDelta.delta) / 1000n; result.delta = recvDelta.delta; result.receivedAtMs = Number(currentReceivedAtMs); deltaIdx++; } return results; } } exports.TransportWideCC = TransportWideCC; Object.defineProperty(TransportWideCC, "count", { enumerable: true, configurable: true, writable: true, value: 15 }); class RunLengthChunk { constructor(props = {}) { Object.defineProperty(this, "type", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "packetStatus", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "runLength", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.assign(this, props); this.type = PacketChunk.TypeTCCRunLengthChunk; } static deSerialize(data) { const packetStatus = (0, common_1.getBit)(data[0], 1, 2); const runLength = ((0, common_1.getBit)(data[0], 3, 5) << 8) + data[1]; return new RunLengthChunk({ type: 0, packetStatus, runLength }); } serialize() { const buf = new common_1.BitWriter2(16).set(0).set(this.packetStatus, 2).set(this.runLength, 13).buffer; return buf; } results(currentSequenceNumber) { const received = this.packetStatus === PacketStatus.TypeTCCPacketReceivedSmallDelta || this.packetStatus === PacketStatus.TypeTCCPacketReceivedLargeDelta; const results = []; for (let i = 0;i <= this.runLength; ++i) { results.push(new PacketResult({ sequenceNumber: ++currentSequenceNumber, received })); } return results; } } exports.RunLengthChunk = RunLengthChunk; class StatusVectorChunk { constructor(props = {}) { Object.defineProperty(this, "type", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "symbolSize", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "symbolList", { enumerable: true, configurable: true, writable: true, value: [] }); Object.assign(this, props); } static deSerialize(data) { const type = PacketChunk.TypeTCCStatusVectorChunk; let symbolSize = (0, common_1.getBit)(data[0], 1, 1); const symbolList = []; function range(n, cb) { for (let i = 0;i < n; i++) { cb(i); } } switch (symbolSize) { case 0: range(6, (i) => symbolList.push((0, common_1.getBit)(data[0], 2 + i, 1))); range(8, (i) => symbolList.push((0, common_1.getBit)(data[1], i, 1))); break; case 1: range(3, (i) => symbolList.push((0, common_1.getBit)(data[0], 2 + i * 2, 2))); range(4, (i) => symbolList.push((0, common_1.getBit)(data[1], i * 2, 2))); break; default: symbolSize = ((0, common_1.getBit)(data[0], 2, 6) << 8) + data[1]; } return new StatusVectorChunk({ type, symbolSize, symbolList }); } serialize() { const buf = Buffer.alloc(2); const writer = new common_1.BitWriter2(16).set(1).set(this.symbolSize); const bits = this.symbolSize === 0 ? 1 : 2; this.symbolList.forEach((v) => { writer.set(v, bits); }); buf.writeUInt16BE(writer.value); return buf; } } exports.StatusVectorChunk = StatusVectorChunk; class RecvDelta { constructor(props = {}) { Object.defineProperty(this, "type", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "delta", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "parsed", { enumerable: true, configurable: true, writable: true, value: false }); Object.assign(this, props); } static deSerialize(data) { let type; let delta; if (data.length === 1) { type = PacketStatus.TypeTCCPacketReceivedSmallDelta; delta = 250 * data[0]; } else if (data.length === 2) { type = PacketStatus.TypeTCCPacketReceivedLargeDelta; delta = 250 * data.readInt16BE(); } if (type === undefined || delta === undefined) throw new Error; return new RecvDelta({ type, delta }); } deSerialize(data) { const res = RecvDelta.deSerialize(data); this.delta = res.delta; } parseDelta() { this.delta = Math.floor(this.delta / 250); if (this.delta < 0 || this.delta > 255) { if (this.delta > 32767) this.delta = 32767; if (this.delta < -32768) this.delta = -32768; if (!this.type) this.type = PacketStatus.TypeTCCPacketReceivedLargeDelta; } else { if (!this.type) this.type = PacketStatus.TypeTCCPacketReceivedSmallDelta; } this.parsed = true; } serialize() { if (!this.parsed) this.parseDelta(); if (this.type === PacketStatus.TypeTCCPacketReceivedSmallDelta) { const buf = Buffer.alloc(1); buf.writeUInt8(this.delta); return buf; } else if (this.type === PacketStatus.TypeTCCPacketReceivedLargeDelta) { const buf = Buffer.alloc(2); buf.writeInt16BE(this.delta); return buf; } throw new Error("errDeltaExceedLimit " + this.delta + " " + this.type); } } exports.RecvDelta = RecvDelta; var PacketChunk; (function(PacketChunk2) { PacketChunk2[PacketChunk2["TypeTCCRunLengthChunk"] = 0] = "TypeTCCRunLengthChunk"; PacketChunk2[PacketChunk2["TypeTCCStatusVectorChunk"] = 1] = "TypeTCCStatusVectorChunk"; PacketChunk2[PacketChunk2["packetStatusChunkLength"] = 2] = "packetStatusChunkLength"; })(PacketChunk || (exports.PacketChunk = PacketChunk = {})); var PacketStatus; (function(PacketStatus2) { PacketStatus2[PacketStatus2["TypeTCCPacketNotReceived"] = 0] = "TypeTCCPacketNotReceived"; PacketStatus2[PacketStatus2["TypeTCCPacketReceivedSmallDelta"] = 1] = "TypeTCCPacketReceivedSmallDelta"; PacketStatus2[PacketStatus2["TypeTCCPacketReceivedLargeDelta"] = 2] = "TypeTCCPacketReceivedLargeDelta"; PacketStatus2[PacketStatus2["TypeTCCPacketReceivedWithoutDelta"] = 3] = "TypeTCCPacketReceivedWithoutDelta"; })(PacketStatus || (exports.PacketStatus = PacketStatus = {})); class PacketResult { constructor(props) { Object.defineProperty(this, "sequenceNumber", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "delta", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "received", { enumerable: true, configurable: true, writable: true, value: false }); Object.defineProperty(this, "receivedAtMs", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.assign(this, props); } } exports.PacketResult = PacketResult; }); // node_modules/werift-rtp/lib/rtp/src/rtcp/rtpfb/index.js var require_rtpfb = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.RtcpTransportLayerFeedback = undefined; var common_1 = require_common2(); var nack_1 = require_nack(); var twcc_1 = require_twcc(); var log = (0, common_1.debug)("werift-rtp:packages/rtp/rtcp/rtpfb/index"); class RtcpTransportLayerFeedback { constructor(props = {}) { Object.defineProperty(this, "type", { enumerable: true, configurable: true, writable: true, value: RtcpTransportLayerFeedback.type }); Object.defineProperty(this, "feedback", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "header", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.assign(this, props); } serialize() { const payload = this.feedback.serialize(); return payload; } static deSerialize(data, header) { let feedback; switch (header.count) { case nack_1.GenericNack.count: feedback = nack_1.GenericNack.deSerialize(data, header); break; case twcc_1.TransportWideCC.count: feedback = twcc_1.TransportWideCC.deSerialize(data, header); break; default: log("unknown rtpfb packet", header.count); break; } return new RtcpTransportLayerFeedback({ feedback, header }); } } exports.RtcpTransportLayerFeedback = RtcpTransportLayerFeedback; Object.defineProperty(RtcpTransportLayerFeedback, "type", { enumerable: true, configurable: true, writable: true, value: 205 }); }); // node_modules/werift-rtp/lib/rtp/src/rtcp/sdes.js var require_sdes = __commonJS((exports) => { function getPadding(len) { if (len % 4 == 0) { return 0; } return 4 - len % 4; } Object.defineProperty(exports, "__esModule", { value: true }); exports.SourceDescriptionItem = exports.SourceDescriptionChunk = exports.RtcpSourceDescriptionPacket = undefined; var src_1 = require_src3(); var rtcp_1 = require_rtcp(); class RtcpSourceDescriptionPacket { constructor(props) { Object.defineProperty(this, "type", { enumerable: true, configurable: true, writable: true, value: RtcpSourceDescriptionPacket.type }); Object.defineProperty(this, "chunks", { enumerable: true, configurable: true, writable: true, value: [] }); Object.assign(this, props); } get length() { let length = 0; this.chunks.forEach((chunk) => length += chunk.length); return length; } serialize() { let payload = Buffer.concat(this.chunks.map((chunk) => chunk.serialize())); while (payload.length % 4) payload = Buffer.concat([payload, Buffer.from([0])]); return rtcp_1.RtcpPacketConverter.serialize(this.type, this.chunks.length, payload, payload.length / 4); } static deSerialize(payload, header) { const chunks = []; for (let i = 0;i < payload.length; ) { const chunk = SourceDescriptionChunk.deSerialize(payload.slice(i)); chunks.push(chunk); i += chunk.length; } return new RtcpSourceDescriptionPacket({ chunks }); } } exports.RtcpSourceDescriptionPacket = RtcpSourceDescriptionPacket; Object.defineProperty(RtcpSourceDescriptionPacket, "type", { enumerable: true, configurable: true, writable: true, value: 202 }); class SourceDescriptionChunk { constructor(props = {}) { Object.defineProperty(this, "source", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "items", { enumerable: true, configurable: true, writable: true, value: [] }); Object.assign(this, props); } get length() { let length = 4; this.items.forEach((item) => length += item.length); length += 1; length += getPadding(length); return length; } serialize() { const data = Buffer.concat([ (0, src_1.bufferWriter)([4], [this.source]), Buffer.concat(this.items.map((item) => item.serialize())) ]); const res = Buffer.concat([data, Buffer.alloc(getPadding(data.length))]); return res; } static deSerialize(data) { const source = data.readUInt32BE(); const items = []; for (let i = 4;i < data.length; ) { const type = data[i]; if (type === 0) break; const item = SourceDescriptionItem.deSerialize(data.slice(i)); items.push(item); i += item.length; } return new SourceDescriptionChunk({ source, items }); } } exports.SourceDescriptionChunk = SourceDescriptionChunk; class SourceDescriptionItem { constructor(props) { Object.defineProperty(this, "type", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "text", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.assign(this, props); } get length() { return 1 + 1 + Buffer.from(this.text).length; } serialize() { const text = Buffer.from(this.text); return Buffer.concat([ (0, src_1.bufferWriter)([1, 1], [this.type, text.length]), text ]); } static deSerialize(data) { const type = data[0]; const octetCount = data[1]; const text = data.slice(2, 2 + octetCount).toString(); return new SourceDescriptionItem({ type, text }); } } exports.SourceDescriptionItem = SourceDescriptionItem; }); // node_modules/werift-rtp/lib/rtp/src/rtcp/sr.js var require_sr = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.ntpTime2Sec = exports.RtcpSenderInfo = exports.RtcpSrPacket = undefined; var src_1 = require_src3(); var rr_1 = require_rr(); var rtcp_1 = require_rtcp(); class RtcpSrPacket { constructor(props) { Object.defineProperty(this, "ssrc", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "senderInfo", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "reports", { enumerable: true, configurable: true, writable: true, value: [] }); Object.defineProperty(this, "type", { enumerable: true, configurable: true, writable: true, value: RtcpSrPacket.type }); Object.assign(this, props); } toJSON() { return { ssrc: this.ssrc, senderInfo: this.senderInfo.toJSON(), reports: this.reports.map((r) => r.toJSON()) }; } serialize() { let payload = Buffer.alloc(4); payload.writeUInt32BE(this.ssrc); payload = Buffer.concat([payload, this.senderInfo.serialize()]); payload = Buffer.concat([ payload, ...this.reports.map((report) => report.serialize()) ]); return rtcp_1.RtcpPacketConverter.serialize(RtcpSrPacket.type, this.reports.length, payload, Math.floor(payload.length / 4)); } static deSerialize(payload, count) { const ssrc = payload.readUInt32BE(); const senderInfo = RtcpSenderInfo.deSerialize(payload.subarray(4, 24)); let pos = 24; const reports = []; for (let _ = 0;_ < count; _++) { reports.push(rr_1.RtcpReceiverInfo.deSerialize(payload.subarray(pos, pos + 24))); pos += 24; } const packet = new RtcpSrPacket({ ssrc, senderInfo, reports }); return packet; } } exports.RtcpSrPacket = RtcpSrPacket; Object.defineProperty(RtcpSrPacket, "type", { enumerable: true, configurable: true, writable: true, value: 200 }); class RtcpSenderInfo { constructor(props = {}) { Object.defineProperty(this, "ntpTimestamp", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "rtpTimestamp", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "packetCount", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "octetCount", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.assign(this, props); } toJSON() { return { ntpTimestamp: (0, exports.ntpTime2Sec)(this.ntpTimestamp), rtpTimestamp: this.rtpTimestamp }; } serialize() { return (0, src_1.bufferWriter)([8, 4, 4, 4], [this.ntpTimestamp, this.rtpTimestamp, this.packetCount, this.octetCount]); } static deSerialize(data) { const [ntpTimestamp, rtpTimestamp, packetCount, octetCount] = (0, src_1.bufferReader)(data, [8, 4, 4, 4]); return new RtcpSenderInfo({ ntpTimestamp, rtpTimestamp, packetCount, octetCount }); } } exports.RtcpSenderInfo = RtcpSenderInfo; var ntpTime2Sec = (ntp) => { const [ntpSec, ntpMsec] = (0, src_1.bufferReader)((0, src_1.bufferWriter)([8], [ntp]), [4, 4]); return Number(`${ntpSec}.${ntpMsec}`); }; exports.ntpTime2Sec = ntpTime2Sec; }); // node_modules/werift-rtp/lib/rtp/src/rtcp/rtcp.js var require_rtcp = __commonJS((exports) => { function isRtcp(buf) { return buf.length >= 2 && buf[1] >= 192 && buf[1] <= 208; } Object.defineProperty(exports, "__esModule", { value: true }); exports.RtcpPacketConverter = undefined; exports.isRtcp = isRtcp; var common_1 = require_common2(); var header_1 = require_header(); var psfb_1 = require_psfb(); var rr_1 = require_rr(); var rtpfb_1 = require_rtpfb(); var sdes_1 = require_sdes(); var sr_1 = require_sr(); var log = (0, common_1.debug)("werift-rtp:packages/rtp/src/rtcp/rtcp.ts"); class RtcpPacketConverter { static serialize(type, count, payload, length) { const header = new header_1.RtcpHeader({ type, count, version: 2, length }); const buf = header.serialize(); return Buffer.concat([buf, payload]); } static deSerialize(data) { let pos = 0; const packets = []; while (pos < data.length) { const header = header_1.RtcpHeader.deSerialize(data.subarray(pos, pos + header_1.RTCP_HEADER_SIZE)); pos += header_1.RTCP_HEADER_SIZE; let payload = data.subarray(pos); pos += header.length * 4; if (header.padding) { payload = payload.subarray(0, payload.length - payload.subarray(-1)[0]); } try { switch (header.type) { case sr_1.RtcpSrPacket.type: packets.push(sr_1.RtcpSrPacket.deSerialize(payload, header.count)); break; case rr_1.RtcpRrPacket.type: packets.push(rr_1.RtcpRrPacket.deSerialize(payload, header.count)); break; case sdes_1.RtcpSourceDescriptionPacket.type: packets.push(sdes_1.RtcpSourceDescriptionPacket.deSerialize(payload, header)); break; case rtpfb_1.RtcpTransportLayerFeedback.type: packets.push(rtpfb_1.RtcpTransportLayerFeedback.deSerialize(payload, header)); break; case psfb_1.RtcpPayloadSpecificFeedback.type: packets.push(psfb_1.RtcpPayloadSpecificFeedback.deSerialize(payload, header)); break; default: break; } } catch (error) { log("deSerialize RTCP", error); } } return packets; } } exports.RtcpPacketConverter = RtcpPacketConverter; }); // node_modules/werift-rtp/lib/rtp/src/rtcp/psfb/fullIntraRequest.js var require_fullIntraRequest = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.FullIntraRequest = undefined; var src_1 = require_src3(); class FullIntraRequest { constructor(props = {}) { Object.defineProperty(this, "count", { enumerable: true, configurable: true, writable: true, value: FullIntraRequest.count }); Object.defineProperty(this, "senderSsrc", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "mediaSsrc", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "fir", { enumerable: true, configurable: true, writable: true, value: [] }); Object.assign(this, props); } get length() { return Math.floor(this.serialize().length / 4 - 1); } static deSerialize(data) { const [senderSsrc, mediaSsrc] = (0, src_1.bufferReader)(data, [4, 4]); const fir = []; for (let i = 8;i < data.length; i += 8) { fir.push({ ssrc: data.readUInt32BE(i), sequenceNumber: data[i + 4] }); } return new FullIntraRequest({ senderSsrc, mediaSsrc, fir }); } serialize() { const ssrcs = (0, src_1.bufferWriter)([4, 4], [this.senderSsrc, this.mediaSsrc]); const fir = Buffer.alloc(this.fir.length * 8); this.fir.forEach(({ ssrc, sequenceNumber }, i) => { fir.writeUInt32BE(ssrc, i * 8); fir[i * 8 + 4] = sequenceNumber; }); return Buffer.concat([ssrcs, fir]); } } exports.FullIntraRequest = FullIntraRequest; Object.defineProperty(FullIntraRequest, "count", { enumerable: true, configurable: true, writable: true, value: 4 }); }); // node_modules/werift-rtp/lib/rtp/src/rtcp/psfb/pictureLossIndication.js var require_pictureLossIndication = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.PictureLossIndication = undefined; var src_1 = require_src3(); class PictureLossIndication { constructor(props = {}) { Object.defineProperty(this, "count", { enumerable: true, configurable: true, writable: true, value: PictureLossIndication.count }); Object.defineProperty(this, "length", { enumerable: true, configurable: true, writable: true, value: 2 }); Object.defineProperty(this, "senderSsrc", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "mediaSsrc", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.assign(this, props); } static deSerialize(data) { const [senderSsrc, mediaSsrc] = (0, src_1.bufferReader)(data, [4, 4]); return new PictureLossIndication({ senderSsrc, mediaSsrc }); } serialize() { return (0, src_1.bufferWriter)([4, 4], [this.senderSsrc, this.mediaSsrc]); } } exports.PictureLossIndication = PictureLossIndication; Object.defineProperty(PictureLossIndication, "count", { enumerable: true, configurable: true, writable: true, value: 1 }); }); // node_modules/werift-rtp/lib/rtp/src/rtcp/psfb/remb.js var require_remb = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.ReceiverEstimatedMaxBitrate = undefined; var src_1 = require_src3(); class ReceiverEstimatedMaxBitrate { constructor(props = {}) { Object.defineProperty(this, "length", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "count", { enumerable: true, configurable: true, writable: true, value: ReceiverEstimatedMaxBitrate.count }); Object.defineProperty(this, "senderSsrc", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "mediaSsrc", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "uniqueID", { enumerable: true, configurable: true, writable: true, value: "REMB" }); Object.defineProperty(this, "ssrcNum", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "brExp", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "brMantissa", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "bitrate", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "ssrcFeedbacks", { enumerable: true, configurable: true, writable: true, value: [] }); Object.assign(this, props); } static deSerialize(data) { const [senderSsrc, mediaSsrc, uniqueID, ssrcNum, e_m] = (0, src_1.bufferReader)(data, [4, 4, 4, 1, 1]); const brExp = (0, src_1.getBit)(e_m, 0, 6); const brMantissa = ((0, src_1.getBit)(e_m, 6, 2) << 16) + (data[14] << 8) + data[15]; const bitrate = brExp > 46 ? 18446744073709551615n : BigInt(brMantissa) << BigInt(brExp); const ssrcFeedbacks = []; for (let i = 16;i < data.length; i += 4) { const feedback = data.slice(i).readUIntBE(0, 4); ssrcFeedbacks.push(feedback); } return new ReceiverEstimatedMaxBitrate({ senderSsrc, mediaSsrc, uniqueID: (0, src_1.bufferWriter)([4], [uniqueID]).toString(), ssrcNum, brExp, brMantissa, ssrcFeedbacks, bitrate }); } serialize() { const constant = Buffer.concat([ (0, src_1.bufferWriter)([4, 4], [this.senderSsrc, this.mediaSsrc]), Buffer.from(this.uniqueID), (0, src_1.bufferWriter)([1], [this.ssrcNum]) ]); const writer = new src_1.BitWriter(24); writer.set(6, 0, this.brExp).set(18, 6, this.brMantissa); const feedbacks = Buffer.concat(this.ssrcFeedbacks.map((feedback) => (0, src_1.bufferWriter)([4], [feedback]))); const buf = Buffer.concat([ constant, (0, src_1.bufferWriter)([3], [writer.value]), feedbacks ]); this.length = buf.length / 4; return buf; } } exports.ReceiverEstimatedMaxBitrate = ReceiverEstimatedMaxBitrate; Object.defineProperty(ReceiverEstimatedMaxBitrate, "count", { enumerable: true, configurable: true, writable: true, value: 15 }); }); // node_modules/werift-rtp/lib/rtp/src/rtcp/psfb/index.js var require_psfb = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.RtcpPayloadSpecificFeedback = undefined; var common_1 = require_common2(); var rtcp_1 = require_rtcp(); var fullIntraRequest_1 = require_fullIntraRequest(); var pictureLossIndication_1 = require_pictureLossIndication(); var remb_1 = require_remb(); var log = (0, common_1.debug)("werift-rtp: /rtcp/psfb/index"); class RtcpPayloadSpecificFeedback { constructor(props = {}) { Object.defineProperty(this, "type", { enumerable: true, configurable: true, writable: true, value: RtcpPayloadSpecificFeedback.type }); Object.defineProperty(this, "feedback", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.assign(this, props); } serialize() { const payload = this.feedback.serialize(); return rtcp_1.RtcpPacketConverter.serialize(this.type, this.feedback.count, payload, this.feedback.length); } static deSerialize(data, header) { let feedback; switch (header.count) { case fullIntraRequest_1.FullIntraRequest.count: feedback = fullIntraRequest_1.FullIntraRequest.deSerialize(data); break; case pictureLossIndication_1.PictureLossIndication.count: feedback = pictureLossIndication_1.PictureLossIndication.deSerialize(data); break; case remb_1.ReceiverEstimatedMaxBitrate.count: feedback = remb_1.ReceiverEstimatedMaxBitrate.deSerialize(data); break; default: log("unknown psfb packet", header.count); break; } return new RtcpPayloadSpecificFeedback({ feedback }); } } exports.RtcpPayloadSpecificFeedback = RtcpPayloadSpecificFeedback; Object.defineProperty(RtcpPayloadSpecificFeedback, "type", { enumerable: true, configurable: true, writable: true, value: 206 }); }); // node_modules/werift-rtp/lib/rtp/src/rtp/headerExtension.js var require_headerExtension = __commonJS((exports) => { function rtpHeaderExtensionsParser(extensions, extIdUriMap) { return extensions.map((extension) => { const uri = extIdUriMap[extension.id]; if (!uri) { return { uri: "unknown", value: extension.payload }; } switch (uri) { case exports.RTP_EXTENSION_URI.sdesMid: case exports.RTP_EXTENSION_URI.sdesRTPStreamID: case exports.RTP_EXTENSION_URI.repairedRtpStreamId: return { uri, value: deserializeString(extension.payload) }; case exports.RTP_EXTENSION_URI.transportWideCC: return { uri, value: deserializeUint16BE(extension.payload) }; case exports.RTP_EXTENSION_URI.absSendTime: return { uri, value: deserializeAbsSendTime(extension.payload) }; case exports.RTP_EXTENSION_URI.audioLevelIndication: { return { uri, value: deserializeAudioLevelIndication(extension.payload) }; } case exports.RTP_EXTENSION_URI.videoOrientation: return { uri, value: deserializeVideoOrientation(extension.payload) }; default: return { uri, value: extension.payload }; } }).reduce((acc, cur) => { if (cur) acc[cur.uri] = cur.value; return acc; }, {}); } function serializeSdesMid(id) { return Buffer.from(id); } function serializeSdesRTPStreamID(id) { return Buffer.from(id); } function serializeRepairedRtpStreamId(id) { return Buffer.from(id); } function serializeTransportWideCC(transportSequenceNumber) { return (0, src_1.bufferWriter)([2], [transportSequenceNumber]); } function serializeAbsSendTime(ntpTime) { const buf = Buffer.alloc(3); const time = ntpTime >> 14n & 0x00ffffffn; buf.writeUIntBE(Number(time), 0, 3); return buf; } function serializeAudioLevelIndication(level) { const stream = new src_1.BitStream(Buffer.alloc(1)); stream.writeBits(1, 1); stream.writeBits(7, level); return stream.uint8Array; } function deserializeString(buf) { return buf.toString(); } function deserializeUint16BE(buf) { return buf.readUInt16BE(); } function deserializeAbsSendTime(buf) { return (0, src_1.bufferReader)(buf, [3])[0]; } function deserializeAudioLevelIndication(buf) { const stream = new src_1.BitStream(buf); const value = { v: stream.readBits(1) === 1, level: stream.readBits(7) }; return value; } function deserializeVideoOrientation(payload) { const stream = new src_1.BitStream(payload); stream.readBits(4); const value = { c: stream.readBits(1), f: stream.readBits(1), r1: stream.readBits(1), r0: stream.readBits(1) }; return value; } Object.defineProperty(exports, "__esModule", { value: true }); exports.RTP_EXTENSION_URI = undefined; exports.rtpHeaderExtensionsParser = rtpHeaderExtensionsParser; exports.serializeSdesMid = serializeSdesMid; exports.serializeSdesRTPStreamID = serializeSdesRTPStreamID; exports.serializeRepairedRtpStreamId = serializeRepairedRtpStreamId; exports.serializeTransportWideCC = serializeTransportWideCC; exports.serializeAbsSendTime = serializeAbsSendTime; exports.serializeAudioLevelIndication = serializeAudioLevelIndication; exports.deserializeString = deserializeString; exports.deserializeUint16BE = deserializeUint16BE; exports.deserializeAbsSendTime = deserializeAbsSendTime; exports.deserializeAudioLevelIndication = deserializeAudioLevelIndication; exports.deserializeVideoOrientation = deserializeVideoOrientation; var src_1 = require_src3(); exports.RTP_EXTENSION_URI = { sdesMid: "urn:ietf:params:rtp-hdrext:sdes:mid", sdesRTPStreamID: "urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id", repairedRtpStreamId: "urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id", transportWideCC: "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01", absSendTime: "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time", dependencyDescriptor: "https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension", audioLevelIndication: "urn:ietf:params:rtp-hdrext:ssrc-audio-level", videoOrientation: "urn:3gpp:video-orientation" }; }); // node_modules/werift-rtp/lib/rtp/src/rtp/red/packet.js var require_packet = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.RedHeader = exports.Red = undefined; var common_1 = require_common2(); var log = (0, common_1.debug)("packages/rtp/src/rtp/red/packet.ts"); class Red { constructor() { Object.defineProperty(this, "header", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "blocks", { enumerable: true, configurable: true, writable: true, value: [] }); } static deSerialize(bufferOrArrayBuffer) { const buf = bufferOrArrayBuffer instanceof ArrayBuffer ? Buffer.from(bufferOrArrayBuffer) : bufferOrArrayBuffer; const red = new Red; let offset = 0; [red.header, offset] = RedHeader.deSerialize(buf); red.header.fields.forEach(({ blockLength, timestampOffset, blockPT }) => { if (blockLength && timestampOffset) { const block = buf.subarray(offset, offset + blockLength); red.blocks.push({ block, blockPT, timestampOffset }); offset += blockLength; } else { const block = buf.subarray(offset); red.blocks.push({ block, blockPT }); } }); return red; } serialize() { this.header = new RedHeader; for (const { timestampOffset, blockPT, block } of this.blocks) { if (timestampOffset) { this.header.fields.push({ fBit: 1, blockPT, blockLength: block.length, timestampOffset }); } else { this.header.fields.push({ fBit: 0, blockPT }); } } let buf = this.header.serialize(); for (const { block } of this.blocks) { buf = Buffer.concat([buf, block]); } return buf; } } exports.Red = Red; class RedHeader { constructor() { Object.defineProperty(this, "fields", { enumerable: true, configurable: true, writable: true, value: [] }); } static deSerialize(buf) { let offset = 0; const header = new RedHeader; for (;; ) { const field = {}; header.fields.push(field); const bitStream = new common_1.BitStream(buf.subarray(offset)); field.fBit = bitStream.readBits(1); field.blockPT = bitStream.readBits(7); offset++; if (field.fBit === 0) { break; } field.timestampOffset = bitStream.readBits(14); field.blockLength = bitStream.readBits(10); offset += 3; } return [header, offset]; } serialize() { let buf = Buffer.alloc(0); for (const field of this.fields) { try { if (field.timestampOffset && field.blockLength) { const bitStream = new common_1.BitStream(Buffer.alloc(4)).writeBits(1, field.fBit).writeBits(7, field.blockPT).writeBits(14, field.timestampOffset).writeBits(10, field.blockLength); buf = Buffer.concat([buf, bitStream.uint8Array]); } else { const bitStream = new common_1.BitStream(Buffer.alloc(1)).writeBits(1, 0).writeBits(7, field.blockPT); buf = Buffer.concat([buf, bitStream.uint8Array]); } } catch (error) { log(error?.message); } } return buf; } } exports.RedHeader = RedHeader; }); // node_modules/werift-rtp/lib/rtp/src/rtp/red/encoder.js var require_encoder = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.RedEncoder = undefined; var src_1 = require_src3(); var packet_1 = require_packet(); class RedEncoder { constructor(distance = 1) { Object.defineProperty(this, "distance", { enumerable: true, configurable: true, writable: true, value: distance }); Object.defineProperty(this, "cache", { enumerable: true, configurable: true, writable: true, value: [] }); Object.defineProperty(this, "cacheSize", { enumerable: true, configurable: true, writable: true, value: 10 }); } push(payload) { this.cache.push(payload); if (this.cache.length > this.cacheSize) { this.cache.shift(); } } build() { const red = new packet_1.Red; const redundantPayloads = this.cache.slice(-(this.distance + 1)); const presentPayload = redundantPayloads.pop(); if (!presentPayload) { return red; } redundantPayloads.forEach((redundant) => { const timestampOffset = (0, src_1.uint32Add)(presentPayload.timestamp, -redundant.timestamp); if (timestampOffset > Max14Uint) { return; } red.blocks.push({ block: redundant.block, blockPT: redundant.blockPT, timestampOffset }); }); red.blocks.push({ block: presentPayload.block, blockPT: presentPayload.blockPT }); return red; } } exports.RedEncoder = RedEncoder; var Max14Uint = (1 << 14) - 1; }); // node_modules/werift-rtp/lib/rtp/src/rtp/red/handler.js var require_handler = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.RedHandler = undefined; var __1 = require_src4(); class RedHandler { constructor() { Object.defineProperty(this, "size", { enumerable: true, configurable: true, writable: true, value: 150 }); Object.defineProperty(this, "sequenceNumbers", { enumerable: true, configurable: true, writable: true, value: [] }); } push(red, base) { const packets = []; red.blocks.forEach(({ blockPT, timestampOffset, block }, i) => { const sequenceNumber = (0, __1.uint16Add)(base.header.sequenceNumber, -(red.blocks.length - (i + 1))); if (timestampOffset) { packets.push(new __1.RtpPacket(new __1.RtpHeader({ timestamp: (0, __1.uint32Add)(base.header.timestamp, -timestampOffset), payloadType: blockPT, ssrc: base.header.ssrc, sequenceNumber, marker: true }), block)); } else { packets.push(new __1.RtpPacket(new __1.RtpHeader({ timestamp: base.header.timestamp, payloadType: blockPT, ssrc: base.header.ssrc, sequenceNumber, marker: true }), block)); } }); const filtered = packets.filter((p) => { if (this.sequenceNumbers.includes(p.header.sequenceNumber)) { return false; } else { if (this.sequenceNumbers.length > this.size) { this.sequenceNumbers.shift(); } this.sequenceNumbers.push(p.header.sequenceNumber); return true; } }); return filtered; } } exports.RedHandler = RedHandler; }); // node_modules/werift-rtp/lib/rtp/src/rtp/rtp.js var require_rtp = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.RtpPacket = exports.RtpHeader = exports.ExtensionProfiles = undefined; var src_1 = require_src3(); exports.ExtensionProfiles = { OneByte: 48862, TwoByte: 4096 }; var seqNumOffset = 2; var timestampOffset = 4; var ssrcOffset = 8; var csrcOffset = 12; var csrcSize = 4; class RtpHeader { constructor(props = {}) { Object.defineProperty(this, "version", { enumerable: true, configurable: true, writable: true, value: 2 }); Object.defineProperty(this, "padding", { enumerable: true, configurable: true, writable: true, value: false }); Object.defineProperty(this, "paddingSize", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "extension", { enumerable: true, configurable: true, writable: true, value: false }); Object.defineProperty(this, "marker", { enumerable: true, configurable: true, writable: true, value: false }); Object.defineProperty(this, "payloadOffset", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "payloadType", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "sequenceNumber", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "timestamp", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "ssrc", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "csrcLength", { enumerable: true, configurable: true, writable: true, value: 0 }); Object.defineProperty(this, "csrc", { enumerable: true, configurable: true, writable: true, value: [] }); Object.defineProperty(this, "extensionProfile", { enumerable: true, configurable: true, writable: true, value: exports.ExtensionProfiles.OneByte }); Object.defineProperty(this, "extensionLength", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "extensions", { enumerable: true, configurable: true, writable: true, value: [] }); Object.assign(this, props); } static deSerialize(rawPacket) { const h = new RtpHeader; let currOffset = 0; const v_p_x_cc = rawPacket[currOffset++]; h.version = (0, src_1.getBit)(v_p_x_cc, 0, 2); h.padding = (0, src_1.getBit)(v_p_x_cc, 2) > 0; h.extension = (0, src_1.getBit)(v_p_x_cc, 3) > 0; h.csrcLength = (0, src_1.getBit)(v_p_x_cc, 4, 4); h.csrc = [...Array(h.csrcLength)].map(() => { const csrc = rawPacket.readUInt32BE(currOffset); currOffset += 4; return csrc; }); currOffset += csrcOffset - 1; const m_pt = rawPacket[1]; h.marker = (0, src_1.getBit)(m_pt, 0) > 0; h.payloadType = (0, src_1.getBit)(m_pt, 1, 7); h.sequenceNumber = rawPacket.readUInt16BE(seqNumOffset); h.timestamp = rawPacket.readUInt32BE(timestampOffset); h.ssrc = rawPacket.readUInt32BE(ssrcOffset); for (let i = 0;i < h.csrc.length; i++) { const offset = csrcOffset + i * csrcSize; h.csrc[i] = rawPacket.subarray(offset).readUInt32BE(); } if (h.extension) { h.extensionProfile = rawPacket.subarray(currOffset).readUInt16BE(); currOffset += 2; const extensionLength = rawPacket.subarray(currOffset).readUInt16BE() * 4; h.extensionLength = extensionLength; currOffset += 2; switch (h.extensionProfile) { case exports.ExtensionProfiles.OneByte: { const end = currOffset + extensionLength; while (currOffset < end) { if (rawPacket[currOffset] === 0) { currOffset++; continue; } const extId = rawPacket[currOffset] >> 4; const len = (rawPacket[currOffset] & (rawPacket[currOffset] ^ 240)) + 1; currOffset++; if (extId === 15) { break; } const extension = { id: extId, payload: rawPacket.subarray(currOffset, currOffset + len) }; h.extensions = [...h.extensions, extension]; currOffset += len; } } break; case exports.ExtensionProfiles.TwoByte: { const end = currOffset + extensionLength; while (currOffset < end) { if (rawPacket[currOffset] === 0) { currOffset++; continue; } const extId = rawPacket[currOffset]; currOffset++; const len = rawPacket[currOffset]; currOffset++; const extension = { id: extId, payload: rawPacket.subarray(currOffset, currOffset + len) }; h.extensions = [...h.extensions, extension]; currOffset += len; } } break; default: { const extension = { id: 0, payload: rawPacket.subarray(currOffset, currOffset + extensionLength) }; h.extensions = [...h.extensions, extension]; currOffset += h.extensions[0].payload.length; } break; } } h.payloadOffset = currOffset; if (h.padding) { h.paddingSize = rawPacket[rawPacket.length - 1]; } return h; } get serializeSize() { const { csrc, extensionProfile, extensions } = this; let size = 12 + csrc.length * csrcSize; if (extensions.length > 0 || this.extension === true) { let extSize = 4; switch (extensionProfile) { case exports.ExtensionProfiles.OneByte: for (const extension of extensions) { extSize += 1 + extension.payload.length; } break; case exports.ExtensionProfiles.TwoByte: for (const extension of extensions) { extSize += 2 + extension.payload.length; } break; default: extSize += extensions[0].payload.length; } size += Math.floor((extSize + 3) / 4) * 4; } return size; } serialize(size) { const buf = Buffer.alloc(size); let offset = 0; const v_p_x_cc = new src_1.BitWriter(8); v_p_x_cc.set(2, 0, this.version); if (this.padding) v_p_x_cc.set(1, 2, 1); if (this.extensions.length > 0) this.extension = true; if (this.extension) v_p_x_cc.set(1, 3, 1); v_p_x_cc.set(4, 4, this.csrc.length); buf.writeUInt8(v_p_x_cc.value, offset++); const m_pt = new src_1.BitWriter(8); if (this.marker) m_pt.set(1, 0, 1); m_pt.set(7, 1, this.payloadType); buf.writeUInt8(m_pt.value, offset++); buf.writeUInt16BE(this.sequenceNumber, seqNumOffset); offset += 2; buf.writeUInt32BE(this.timestamp, timestampOffset); offset += 4; buf.writeUInt32BE(this.ssrc, ssrcOffset); offset += 4; for (const csrc of this.csrc) { buf.writeUInt32BE(csrc, offset); offset += 4; } if (this.extension) { const extHeaderPos = offset; buf.writeUInt16BE(this.extensionProfile, offset); offset += 4; const startExtensionsPos = offset; switch (this.extensionProfile) { case exports.ExtensionProfiles.OneByte: for (const extension of this.extensions) { buf.writeUInt8(extension.id << 4 | extension.payload.length - 1, offset++); extension.payload.copy(buf, offset); offset += extension.payload.length; } break; case exports.ExtensionProfiles.TwoByte: for (const extension of this.extensions) { buf.writeUInt8(extension.id, offset++); buf.writeUInt8(extension.payload.length, offset++); extension.payload.copy(buf, offset); offset += extension.payload.length; } break; default: { const extLen = this.extensions[0].payload.length; if (extLen % 4 != 0) { throw new Error; } this.extensions[0].payload.copy(buf, offset); offset += extLen; } } const extSize = offset - startExtensionsPos; const roundedExtSize = Math.trunc((extSize + 3) / 4) * 4; buf.writeUInt16BE(Math.trunc(roundedExtSize / 4), extHeaderPos + 2); for (let i = 0;i < roundedExtSize - extSize; i++) { buf.writeUInt8(0, offset); offset++; } } this.payloadOffset = offset; return buf; } } exports.RtpHeader = RtpHeader; class RtpPacket { constructor(header, payload) { Object.defineProperty(this, "header", { enumerable: true, configurable: true, writable: true, value: header }); Object.defineProperty(this, "payload", { enumerable: true, configurable: true, writable: true, value: payload }); } get serializeSize() { return this.header.serializeSize + this.payload.length; } clone() { return new RtpPacket(new RtpHeader({ ...this.header }), this.payload); } serialize() { let buf = this.header.serialize(this.header.serializeSize + this.payload.length); const { payloadOffset } = this.header; this.payload.copy(buf, payloadOffset); if (this.header.padding) { const padding = Buffer.alloc(this.header.paddingSize); padding.writeUInt8(this.header.paddingSize, this.header.paddingSize - 1); buf = Buffer.concat([buf, padding]); } return buf; } static deSerialize(buf) { const header = RtpHeader.deSerialize(buf); const p = new RtpPacket(header, buf.subarray(header.payloadOffset, buf.length - header.paddingSize)); return p; } clear() { this.payload = null; } } exports.RtpPacket = RtpPacket; }); // node_modules/werift-rtp/lib/rtp/src/rtp/rtx.js var require_rtx = __commonJS((exports) => { function unwrapRtx(rtx, payloadType, ssrc) { const packet = new rtp_1.RtpPacket(new rtp_1.RtpHeader({ payloadType, marker: rtx.header.marker, sequenceNumber: jspack_1.jspack.Unpack("!H", rtx.payload.subarray(0, 2))[0], timestamp: rtx.header.timestamp, ssrc }), rtx.payload.subarray(2)); return packet; } function wrapRtx(packet, payloadType, sequenceNumber, ssrc) { const rtx = new rtp_1.RtpPacket(new rtp_1.RtpHeader({ payloadType, marker: packet.header.marker, sequenceNumber, timestamp: packet.header.timestamp, ssrc, csrc: packet.header.csrc, extensions: packet.header.extensions }), Buffer.concat([ Buffer.from(jspack_1.jspack.Pack("!H", [packet.header.sequenceNumber])), packet.payload ])); return rtx; } Object.defineProperty(exports, "__esModule", { value: true }); exports.unwrapRtx = unwrapRtx; exports.wrapRtx = wrapRtx; var jspack_1 = require_jspack(); var rtp_1 = require_rtp(); }); // node_modules/aes-js/index.js var require_aes_js = __commonJS((exports, module) => { /*! MIT License. Copyright 2015-2018 Richard Moore . See LICENSE.txt. */ (function(root) { function checkInt(value) { return parseInt(value) === value; } function checkInts(arrayish) { if (!checkInt(arrayish.length)) { return false; } for (var i = 0;i < arrayish.length; i++) { if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) { return false; } } return true; } function coerceArray(arg, copy) { if (arg.buffer && arg.name === "Uint8Array") { if (copy) { if (arg.slice) { arg = arg.slice(); } else { arg = Array.prototype.slice.call(arg); } } return arg; } if (Array.isArray(arg)) { if (!checkInts(arg)) { throw new Error("Array contains invalid value: " + arg); } return new Uint8Array(arg); } if (checkInt(arg.length) && checkInts(arg)) { return new Uint8Array(arg); } throw new Error("unsupported array-like object"); } function createArray(length) { return new Uint8Array(length); } function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) { if (sourceStart != null || sourceEnd != null) { if (sourceArray.slice) { sourceArray = sourceArray.slice(sourceStart, sourceEnd); } else { sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd); } } targetArray.set(sourceArray, targetStart); } var convertUtf8 = function() { function toBytes(text) { var result = [], i = 0; text = encodeURI(text); while (i < text.length) { var c = text.charCodeAt(i++); if (c === 37) { result.push(parseInt(text.substr(i, 2), 16)); i += 2; } else { result.push(c); } } return coerceArray(result); } function fromBytes(bytes) { var result = [], i = 0; while (i < bytes.length) { var c = bytes[i]; if (c < 128) { result.push(String.fromCharCode(c)); i++; } else if (c > 191 && c < 224) { result.push(String.fromCharCode((c & 31) << 6 | bytes[i + 1] & 63)); i += 2; } else { result.push(String.fromCharCode((c & 15) << 12 | (bytes[i + 1] & 63) << 6 | bytes[i + 2] & 63)); i += 3; } } return result.join(""); } return { toBytes, fromBytes }; }(); var convertHex = function() { function toBytes(text) { var result = []; for (var i = 0;i < text.length; i += 2) { result.push(parseInt(text.substr(i, 2), 16)); } return result; } var Hex = "0123456789abcdef"; function fromBytes(bytes) { var result = []; for (var i = 0;i < bytes.length; i++) { var v = bytes[i]; result.push(Hex[(v & 240) >> 4] + Hex[v & 15]); } return result.join(""); } return { toBytes, fromBytes }; }(); var numberOfRounds = { 16: 10, 24: 12, 32: 14 }; var rcon = [1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145]; var S = [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22]; var Si = [82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125]; var T1 = [3328402341, 4168907908, 4000806809, 4135287693, 4294111757, 3597364157, 3731845041, 2445657428, 1613770832, 33620227, 3462883241, 1445669757, 3892248089, 3050821474, 1303096294, 3967186586, 2412431941, 528646813, 2311702848, 4202528135, 4026202645, 2992200171, 2387036105, 4226871307, 1101901292, 3017069671, 1604494077, 1169141738, 597466303, 1403299063, 3832705686, 2613100635, 1974974402, 3791519004, 1033081774, 1277568618, 1815492186, 2118074177, 4126668546, 2211236943, 1748251740, 1369810420, 3521504564, 4193382664, 3799085459, 2883115123, 1647391059, 706024767, 134480908, 2512897874, 1176707941, 2646852446, 806885416, 932615841, 168101135, 798661301, 235341577, 605164086, 461406363, 3756188221, 3454790438, 1311188841, 2142417613, 3933566367, 302582043, 495158174, 1479289972, 874125870, 907746093, 3698224818, 3025820398, 1537253627, 2756858614, 1983593293, 3084310113, 2108928974, 1378429307, 3722699582, 1580150641, 327451799, 2790478837, 3117535592, 0, 3253595436, 1075847264, 3825007647, 2041688520, 3059440621, 3563743934, 2378943302, 1740553945, 1916352843, 2487896798, 2555137236, 2958579944, 2244988746, 3151024235, 3320835882, 1336584933, 3992714006, 2252555205, 2588757463, 1714631509, 293963156, 2319795663, 3925473552, 67240454, 4269768577, 2689618160, 2017213508, 631218106, 1269344483, 2723238387, 1571005438, 2151694528, 93294474, 1066570413, 563977660, 1882732616, 4059428100, 1673313503, 2008463041, 2950355573, 1109467491, 537923632, 3858759450, 4260623118, 3218264685, 2177748300, 403442708, 638784309, 3287084079, 3193921505, 899127202, 2286175436, 773265209, 2479146071, 1437050866, 4236148354, 2050833735, 3362022572, 3126681063, 840505643, 3866325909, 3227541664, 427917720, 2655997905, 2749160575, 1143087718, 1412049534, 999329963, 193497219, 2353415882, 3354324521, 1807268051, 672404540, 2816401017, 3160301282, 369822493, 2916866934, 3688947771, 1681011286, 1949973070, 336202270, 2454276571, 201721354, 1210328172, 3093060836, 2680341085, 3184776046, 1135389935, 3294782118, 965841320, 831886756, 3554993207, 4068047243, 3588745010, 2345191491, 1849112409, 3664604599, 26054028, 2983581028, 2622377682, 1235855840, 3630984372, 2891339514, 4092916743, 3488279077, 3395642799, 4101667470, 1202630377, 268961816, 1874508501, 4034427016, 1243948399, 1546530418, 941366308, 1470539505, 1941222599, 2546386513, 3421038627, 2715671932, 3899946140, 1042226977, 2521517021, 1639824860, 227249030, 260737669, 3765465232, 2084453954, 1907733956, 3429263018, 2420656344, 100860677, 4160157185, 470683154, 3261161891, 1781871967, 2924959737, 1773779408, 394692241, 2579611992, 974986535, 664706745, 3655459128, 3958962195, 731420851, 571543859, 3530123707, 2849626480, 126783113, 865375399, 765172662, 1008606754, 361203602, 3387549984, 2278477385, 2857719295, 1344809080, 2782912378, 59542671, 1503764984, 160008576, 437062935, 1707065306, 3622233649, 2218934982, 3496503480, 2185314755, 697932208, 1512910199, 504303377, 2075177163, 2824099068, 1841019862, 739644986]; var T2 = [2781242211, 2230877308, 2582542199, 2381740923, 234877682, 3184946027, 2984144751, 1418839493, 1348481072, 50462977, 2848876391, 2102799147, 434634494, 1656084439, 3863849899, 2599188086, 1167051466, 2636087938, 1082771913, 2281340285, 368048890, 3954334041, 3381544775, 201060592, 3963727277, 1739838676, 4250903202, 3930435503, 3206782108, 4149453988, 2531553906, 1536934080, 3262494647, 484572669, 2923271059, 1783375398, 1517041206, 1098792767, 49674231, 1334037708, 1550332980, 4098991525, 886171109, 150598129, 2481090929, 1940642008, 1398944049, 1059722517, 201851908, 1385547719, 1699095331, 1587397571, 674240536, 2704774806, 252314885, 3039795866, 151914247, 908333586, 2602270848, 1038082786, 651029483, 1766729511, 3447698098, 2682942837, 454166793, 2652734339, 1951935532, 775166490, 758520603, 3000790638, 4004797018, 4217086112, 4137964114, 1299594043, 1639438038, 3464344499, 2068982057, 1054729187, 1901997871, 2534638724, 4121318227, 1757008337, 0, 750906861, 1614815264, 535035132, 3363418545, 3988151131, 3201591914, 1183697867, 3647454910, 1265776953, 3734260298, 3566750796, 3903871064, 1250283471, 1807470800, 717615087, 3847203498, 384695291, 3313910595, 3617213773, 1432761139, 2484176261, 3481945413, 283769337, 100925954, 2180939647, 4037038160, 1148730428, 3123027871, 3813386408, 4087501137, 4267549603, 3229630528, 2315620239, 2906624658, 3156319645, 1215313976, 82966005, 3747855548, 3245848246, 1974459098, 1665278241, 807407632, 451280895, 251524083, 1841287890, 1283575245, 337120268, 891687699, 801369324, 3787349855, 2721421207, 3431482436, 959321879, 1469301956, 4065699751, 2197585534, 1199193405, 2898814052, 3887750493, 724703513, 2514908019, 2696962144, 2551808385, 3516813135, 2141445340, 1715741218, 2119445034, 2872807568, 2198571144, 3398190662, 700968686, 3547052216, 1009259540, 2041044702, 3803995742, 487983883, 1991105499, 1004265696, 1449407026, 1316239930, 504629770, 3683797321, 168560134, 1816667172, 3837287516, 1570751170, 1857934291, 4014189740, 2797888098, 2822345105, 2754712981, 936633572, 2347923833, 852879335, 1133234376, 1500395319, 3084545389, 2348912013, 1689376213, 3533459022, 3762923945, 3034082412, 4205598294, 133428468, 634383082, 2949277029, 2398386810, 3913789102, 403703816, 3580869306, 2297460856, 1867130149, 1918643758, 607656988, 4049053350, 3346248884, 1368901318, 600565992, 2090982877, 2632479860, 557719327, 3717614411, 3697393085, 2249034635, 2232388234, 2430627952, 1115438654, 3295786421, 2865522278, 3633334344, 84280067, 33027830, 303828494, 2747425121, 1600795957, 4188952407, 3496589753, 2434238086, 1486471617, 658119965, 3106381470, 953803233, 334231800, 3005978776, 857870609, 3151128937, 1890179545, 2298973838, 2805175444, 3056442267, 574365214, 2450884487, 550103529, 1233637070, 4289353045, 2018519080, 2057691103, 2399374476, 4166623649, 2148108681, 387583245, 3664101311, 836232934, 3330556482, 3100665960, 3280093505, 2955516313, 2002398509, 287182607, 3413881008, 4238890068, 3597515707, 975967766]; var T3 = [1671808611, 2089089148, 2006576759, 2072901243, 4061003762, 1807603307, 1873927791, 3310653893, 810573872, 16974337, 1739181671, 729634347, 4263110654, 3613570519, 2883997099, 1989864566, 3393556426, 2191335298, 3376449993, 2106063485, 4195741690, 1508618841, 1204391495, 4027317232, 2917941677, 3563566036, 2734514082, 2951366063, 2629772188, 2767672228, 1922491506, 3227229120, 3082974647, 4246528509, 2477669779, 644500518, 911895606, 1061256767, 4144166391, 3427763148, 878471220, 2784252325, 3845444069, 4043897329, 1905517169, 3631459288, 827548209, 356461077, 67897348, 3344078279, 593839651, 3277757891, 405286936, 2527147926, 84871685, 2595565466, 118033927, 305538066, 2157648768, 3795705826, 3945188843, 661212711, 2999812018, 1973414517, 152769033, 2208177539, 745822252, 439235610, 455947803, 1857215598, 1525593178, 2700827552, 1391895634, 994932283, 3596728278, 3016654259, 695947817, 3812548067, 795958831, 2224493444, 1408607827, 3513301457, 0, 3979133421, 543178784, 4229948412, 2982705585, 1542305371, 1790891114, 3410398667, 3201918910, 961245753, 1256100938, 1289001036, 1491644504, 3477767631, 3496721360, 4012557807, 2867154858, 4212583931, 1137018435, 1305975373, 861234739, 2241073541, 1171229253, 4178635257, 33948674, 2139225727, 1357946960, 1011120188, 2679776671, 2833468328, 1374921297, 2751356323, 1086357568, 2408187279, 2460827538, 2646352285, 944271416, 4110742005, 3168756668, 3066132406, 3665145818, 560153121, 271589392, 4279952895, 4077846003, 3530407890, 3444343245, 202643468, 322250259, 3962553324, 1608629855, 2543990167, 1154254916, 389623319, 3294073796, 2817676711, 2122513534, 1028094525, 1689045092, 1575467613, 422261273, 1939203699, 1621147744, 2174228865, 1339137615, 3699352540, 577127458, 712922154, 2427141008, 2290289544, 1187679302, 3995715566, 3100863416, 339486740, 3732514782, 1591917662, 186455563, 3681988059, 3762019296, 844522546, 978220090, 169743370, 1239126601, 101321734, 611076132, 1558493276, 3260915650, 3547250131, 2901361580, 1655096418, 2443721105, 2510565781, 3828863972, 2039214713, 3878868455, 3359869896, 928607799, 1840765549, 2374762893, 3580146133, 1322425422, 2850048425, 1823791212, 1459268694, 4094161908, 3928346602, 1706019429, 2056189050, 2934523822, 135794696, 3134549946, 2022240376, 628050469, 779246638, 472135708, 2800834470, 3032970164, 3327236038, 3894660072, 3715932637, 1956440180, 522272287, 1272813131, 3185336765, 2340818315, 2323976074, 1888542832, 1044544574, 3049550261, 1722469478, 1222152264, 50660867, 4127324150, 236067854, 1638122081, 895445557, 1475980887, 3117443513, 2257655686, 3243809217, 489110045, 2662934430, 3778599393, 4162055160, 2561878936, 288563729, 1773916777, 3648039385, 2391345038, 2493985684, 2612407707, 505560094, 2274497927, 3911240169, 3460925390, 1442818645, 678973480, 3749357023, 2358182796, 2717407649, 2306869641, 219617805, 3218761151, 3862026214, 1120306242, 1756942440, 1103331905, 2578459033, 762796589, 252780047, 2966125488, 1425844308, 3151392187, 372911126]; var T4 = [1667474886, 2088535288, 2004326894, 2071694838, 4075949567, 1802223062, 1869591006, 3318043793, 808472672, 16843522, 1734846926, 724270422, 4278065639, 3621216949, 2880169549, 1987484396, 3402253711, 2189597983, 3385409673, 2105378810, 4210693615, 1499065266, 1195886990, 4042263547, 2913856577, 3570689971, 2728590687, 2947541573, 2627518243, 2762274643, 1920112356, 3233831835, 3082273397, 4261223649, 2475929149, 640051788, 909531756, 1061110142, 4160160501, 3435941763, 875846760, 2779116625, 3857003729, 4059105529, 1903268834, 3638064043, 825316194, 353713962, 67374088, 3351728789, 589522246, 3284360861, 404236336, 2526454071, 84217610, 2593830191, 117901582, 303183396, 2155911963, 3806477791, 3958056653, 656894286, 2998062463, 1970642922, 151591698, 2206440989, 741110872, 437923380, 454765878, 1852748508, 1515908788, 2694904667, 1381168804, 993742198, 3604373943, 3014905469, 690584402, 3823320797, 791638366, 2223281939, 1398011302, 3520161977, 0, 3991743681, 538992704, 4244381667, 2981218425, 1532751286, 1785380564, 3419096717, 3200178535, 960056178, 1246420628, 1280103576, 1482221744, 3486468741, 3503319995, 4025428677, 2863326543, 4227536621, 1128514950, 1296947098, 859002214, 2240123921, 1162203018, 4193849577, 33687044, 2139062782, 1347481760, 1010582648, 2678045221, 2829640523, 1364325282, 2745433693, 1077985408, 2408548869, 2459086143, 2644360225, 943212656, 4126475505, 3166494563, 3065430391, 3671750063, 555836226, 269496352, 4294908645, 4092792573, 3537006015, 3452783745, 202118168, 320025894, 3974901699, 1600119230, 2543297077, 1145359496, 387397934, 3301201811, 2812801621, 2122220284, 1027426170, 1684319432, 1566435258, 421079858, 1936954854, 1616945344, 2172753945, 1330631070, 3705438115, 572679748, 707427924, 2425400123, 2290647819, 1179044492, 4008585671, 3099120491, 336870440, 3739122087, 1583276732, 185277718, 3688593069, 3772791771, 842159716, 976899700, 168435220, 1229577106, 101059084, 606366792, 1549591736, 3267517855, 3553849021, 2897014595, 1650632388, 2442242105, 2509612081, 3840161747, 2038008818, 3890688725, 3368567691, 926374254, 1835907034, 2374863873, 3587531953, 1313788572, 2846482505, 1819063512, 1448540844, 4109633523, 3941213647, 1701162954, 2054852340, 2930698567, 134748176, 3132806511, 2021165296, 623210314, 774795868, 471606328, 2795958615, 3031746419, 3334885783, 3907527627, 3722280097, 1953799400, 522133822, 1263263126, 3183336545, 2341176845, 2324333839, 1886425312, 1044267644, 3048588401, 1718004428, 1212733584, 50529542, 4143317495, 235803164, 1633788866, 892690282, 1465383342, 3115962473, 2256965911, 3250673817, 488449850, 2661202215, 3789633753, 4177007595, 2560144171, 286339874, 1768537042, 3654906025, 2391705863, 2492770099, 2610673197, 505291324, 2273808917, 3924369609, 3469625735, 1431699370, 673740880, 3755965093, 2358021891, 2711746649, 2307489801, 218961690, 3217021541, 3873845719, 1111672452, 1751693520, 1094828930, 2576986153, 757954394, 252645662, 2964376443, 1414855848, 3149649517, 370555436]; var T5 = [1374988112, 2118214995, 437757123, 975658646, 1001089995, 530400753, 2902087851, 1273168787, 540080725, 2910219766, 2295101073, 4110568485, 1340463100, 3307916247, 641025152, 3043140495, 3736164937, 632953703, 1172967064, 1576976609, 3274667266, 2169303058, 2370213795, 1809054150, 59727847, 361929877, 3211623147, 2505202138, 3569255213, 1484005843, 1239443753, 2395588676, 1975683434, 4102977912, 2572697195, 666464733, 3202437046, 4035489047, 3374361702, 2110667444, 1675577880, 3843699074, 2538681184, 1649639237, 2976151520, 3144396420, 4269907996, 4178062228, 1883793496, 2403728665, 2497604743, 1383856311, 2876494627, 1917518562, 3810496343, 1716890410, 3001755655, 800440835, 2261089178, 3543599269, 807962610, 599762354, 33778362, 3977675356, 2328828971, 2809771154, 4077384432, 1315562145, 1708848333, 101039829, 3509871135, 3299278474, 875451293, 2733856160, 92987698, 2767645557, 193195065, 1080094634, 1584504582, 3178106961, 1042385657, 2531067453, 3711829422, 1306967366, 2438237621, 1908694277, 67556463, 1615861247, 429456164, 3602770327, 2302690252, 1742315127, 2968011453, 126454664, 3877198648, 2043211483, 2709260871, 2084704233, 4169408201, 0, 159417987, 841739592, 504459436, 1817866830, 4245618683, 260388950, 1034867998, 908933415, 168810852, 1750902305, 2606453969, 607530554, 202008497, 2472011535, 3035535058, 463180190, 2160117071, 1641816226, 1517767529, 470948374, 3801332234, 3231722213, 1008918595, 303765277, 235474187, 4069246893, 766945465, 337553864, 1475418501, 2943682380, 4003061179, 2743034109, 4144047775, 1551037884, 1147550661, 1543208500, 2336434550, 3408119516, 3069049960, 3102011747, 3610369226, 1113818384, 328671808, 2227573024, 2236228733, 3535486456, 2935566865, 3341394285, 496906059, 3702665459, 226906860, 2009195472, 733156972, 2842737049, 294930682, 1206477858, 2835123396, 2700099354, 1451044056, 573804783, 2269728455, 3644379585, 2362090238, 2564033334, 2801107407, 2776292904, 3669462566, 1068351396, 742039012, 1350078989, 1784663195, 1417561698, 4136440770, 2430122216, 775550814, 2193862645, 2673705150, 1775276924, 1876241833, 3475313331, 3366754619, 270040487, 3902563182, 3678124923, 3441850377, 1851332852, 3969562369, 2203032232, 3868552805, 2868897406, 566021896, 4011190502, 3135740889, 1248802510, 3936291284, 699432150, 832877231, 708780849, 3332740144, 899835584, 1951317047, 4236429990, 3767586992, 866637845, 4043610186, 1106041591, 2144161806, 395441711, 1984812685, 1139781709, 3433712980, 3835036895, 2664543715, 1282050075, 3240894392, 1181045119, 2640243204, 25965917, 4203181171, 4211818798, 3009879386, 2463879762, 3910161971, 1842759443, 2597806476, 933301370, 1509430414, 3943906441, 3467192302, 3076639029, 3776767469, 2051518780, 2631065433, 1441952575, 404016761, 1942435775, 1408749034, 1610459739, 3745345300, 2017778566, 3400528769, 3110650942, 941896748, 3265478751, 371049330, 3168937228, 675039627, 4279080257, 967311729, 135050206, 3635733660, 1683407248, 2076935265, 3576870512, 1215061108, 3501741890]; var T6 = [1347548327, 1400783205, 3273267108, 2520393566, 3409685355, 4045380933, 2880240216, 2471224067, 1428173050, 4138563181, 2441661558, 636813900, 4233094615, 3620022987, 2149987652, 2411029155, 1239331162, 1730525723, 2554718734, 3781033664, 46346101, 310463728, 2743944855, 3328955385, 3875770207, 2501218972, 3955191162, 3667219033, 768917123, 3545789473, 692707433, 1150208456, 1786102409, 2029293177, 1805211710, 3710368113, 3065962831, 401639597, 1724457132, 3028143674, 409198410, 2196052529, 1620529459, 1164071807, 3769721975, 2226875310, 486441376, 2499348523, 1483753576, 428819965, 2274680428, 3075636216, 598438867, 3799141122, 1474502543, 711349675, 129166120, 53458370, 2592523643, 2782082824, 4063242375, 2988687269, 3120694122, 1559041666, 730517276, 2460449204, 4042459122, 2706270690, 3446004468, 3573941694, 533804130, 2328143614, 2637442643, 2695033685, 839224033, 1973745387, 957055980, 2856345839, 106852767, 1371368976, 4181598602, 1033297158, 2933734917, 1179510461, 3046200461, 91341917, 1862534868, 4284502037, 605657339, 2547432937, 3431546947, 2003294622, 3182487618, 2282195339, 954669403, 3682191598, 1201765386, 3917234703, 3388507166, 0, 2198438022, 1211247597, 2887651696, 1315723890, 4227665663, 1443857720, 507358933, 657861945, 1678381017, 560487590, 3516619604, 975451694, 2970356327, 261314535, 3535072918, 2652609425, 1333838021, 2724322336, 1767536459, 370938394, 182621114, 3854606378, 1128014560, 487725847, 185469197, 2918353863, 3106780840, 3356761769, 2237133081, 1286567175, 3152976349, 4255350624, 2683765030, 3160175349, 3309594171, 878443390, 1988838185, 3704300486, 1756818940, 1673061617, 3403100636, 272786309, 1075025698, 545572369, 2105887268, 4174560061, 296679730, 1841768865, 1260232239, 4091327024, 3960309330, 3497509347, 1814803222, 2578018489, 4195456072, 575138148, 3299409036, 446754879, 3629546796, 4011996048, 3347532110, 3252238545, 4270639778, 915985419, 3483825537, 681933534, 651868046, 2755636671, 3828103837, 223377554, 2607439820, 1649704518, 3270937875, 3901806776, 1580087799, 4118987695, 3198115200, 2087309459, 2842678573, 3016697106, 1003007129, 2802849917, 1860738147, 2077965243, 164439672, 4100872472, 32283319, 2827177882, 1709610350, 2125135846, 136428751, 3874428392, 3652904859, 3460984630, 3572145929, 3593056380, 2939266226, 824852259, 818324884, 3224740454, 930369212, 2801566410, 2967507152, 355706840, 1257309336, 4148292826, 243256656, 790073846, 2373340630, 1296297904, 1422699085, 3756299780, 3818836405, 457992840, 3099667487, 2135319889, 77422314, 1560382517, 1945798516, 788204353, 1521706781, 1385356242, 870912086, 325965383, 2358957921, 2050466060, 2388260884, 2313884476, 4006521127, 901210569, 3990953189, 1014646705, 1503449823, 1062597235, 2031621326, 3212035895, 3931371469, 1533017514, 350174575, 2256028891, 2177544179, 1052338372, 741876788, 1606591296, 1914052035, 213705253, 2334669897, 1107234197, 1899603969, 3725069491, 2631447780, 2422494913, 1635502980, 1893020342, 1950903388, 1120974935]; var T7 = [2807058932, 1699970625, 2764249623, 1586903591, 1808481195, 1173430173, 1487645946, 59984867, 4199882800, 1844882806, 1989249228, 1277555970, 3623636965, 3419915562, 1149249077, 2744104290, 1514790577, 459744698, 244860394, 3235995134, 1963115311, 4027744588, 2544078150, 4190530515, 1608975247, 2627016082, 2062270317, 1507497298, 2200818878, 567498868, 1764313568, 3359936201, 2305455554, 2037970062, 1047239000, 1910319033, 1337376481, 2904027272, 2892417312, 984907214, 1243112415, 830661914, 861968209, 2135253587, 2011214180, 2927934315, 2686254721, 731183368, 1750626376, 4246310725, 1820824798, 4172763771, 3542330227, 48394827, 2404901663, 2871682645, 671593195, 3254988725, 2073724613, 145085239, 2280796200, 2779915199, 1790575107, 2187128086, 472615631, 3029510009, 4075877127, 3802222185, 4107101658, 3201631749, 1646252340, 4270507174, 1402811438, 1436590835, 3778151818, 3950355702, 3963161475, 4020912224, 2667994737, 273792366, 2331590177, 104699613, 95345982, 3175501286, 2377486676, 1560637892, 3564045318, 369057872, 4213447064, 3919042237, 1137477952, 2658625497, 1119727848, 2340947849, 1530455833, 4007360968, 172466556, 266959938, 516552836, 0, 2256734592, 3980931627, 1890328081, 1917742170, 4294704398, 945164165, 3575528878, 958871085, 3647212047, 2787207260, 1423022939, 775562294, 1739656202, 3876557655, 2530391278, 2443058075, 3310321856, 547512796, 1265195639, 437656594, 3121275539, 719700128, 3762502690, 387781147, 218828297, 3350065803, 2830708150, 2848461854, 428169201, 122466165, 3720081049, 1627235199, 648017665, 4122762354, 1002783846, 2117360635, 695634755, 3336358691, 4234721005, 4049844452, 3704280881, 2232435299, 574624663, 287343814, 612205898, 1039717051, 840019705, 2708326185, 793451934, 821288114, 1391201670, 3822090177, 376187827, 3113855344, 1224348052, 1679968233, 2361698556, 1058709744, 752375421, 2431590963, 1321699145, 3519142200, 2734591178, 188127444, 2177869557, 3727205754, 2384911031, 3215212461, 2648976442, 2450346104, 3432737375, 1180849278, 331544205, 3102249176, 4150144569, 2952102595, 2159976285, 2474404304, 766078933, 313773861, 2570832044, 2108100632, 1668212892, 3145456443, 2013908262, 418672217, 3070356634, 2594734927, 1852171925, 3867060991, 3473416636, 3907448597, 2614737639, 919489135, 164948639, 2094410160, 2997825956, 590424639, 2486224549, 1723872674, 3157750862, 3399941250, 3501252752, 3625268135, 2555048196, 3673637356, 1343127501, 4130281361, 3599595085, 2957853679, 1297403050, 81781910, 3051593425, 2283490410, 532201772, 1367295589, 3926170974, 895287692, 1953757831, 1093597963, 492483431, 3528626907, 1446242576, 1192455638, 1636604631, 209336225, 344873464, 1015671571, 669961897, 3375740769, 3857572124, 2973530695, 3747192018, 1933530610, 3464042516, 935293895, 3454686199, 2858115069, 1863638845, 3683022916, 4085369519, 3292445032, 875313188, 1080017571, 3279033885, 621591778, 1233856572, 2504130317, 24197544, 3017672716, 3835484340, 3247465558, 2220981195, 3060847922, 1551124588, 1463996600]; var T8 = [4104605777, 1097159550, 396673818, 660510266, 2875968315, 2638606623, 4200115116, 3808662347, 821712160, 1986918061, 3430322568, 38544885, 3856137295, 718002117, 893681702, 1654886325, 2975484382, 3122358053, 3926825029, 4274053469, 796197571, 1290801793, 1184342925, 3556361835, 2405426947, 2459735317, 1836772287, 1381620373, 3196267988, 1948373848, 3764988233, 3385345166, 3263785589, 2390325492, 1480485785, 3111247143, 3780097726, 2293045232, 548169417, 3459953789, 3746175075, 439452389, 1362321559, 1400849762, 1685577905, 1806599355, 2174754046, 137073913, 1214797936, 1174215055, 3731654548, 2079897426, 1943217067, 1258480242, 529487843, 1437280870, 3945269170, 3049390895, 3313212038, 923313619, 679998000, 3215307299, 57326082, 377642221, 3474729866, 2041877159, 133361907, 1776460110, 3673476453, 96392454, 878845905, 2801699524, 777231668, 4082475170, 2330014213, 4142626212, 2213296395, 1626319424, 1906247262, 1846563261, 562755902, 3708173718, 1040559837, 3871163981, 1418573201, 3294430577, 114585348, 1343618912, 2566595609, 3186202582, 1078185097, 3651041127, 3896688048, 2307622919, 425408743, 3371096953, 2081048481, 1108339068, 2216610296, 0, 2156299017, 736970802, 292596766, 1517440620, 251657213, 2235061775, 2933202493, 758720310, 265905162, 1554391400, 1532285339, 908999204, 174567692, 1474760595, 4002861748, 2610011675, 3234156416, 3693126241, 2001430874, 303699484, 2478443234, 2687165888, 585122620, 454499602, 151849742, 2345119218, 3064510765, 514443284, 4044981591, 1963412655, 2581445614, 2137062819, 19308535, 1928707164, 1715193156, 4219352155, 1126790795, 600235211, 3992742070, 3841024952, 836553431, 1669664834, 2535604243, 3323011204, 1243905413, 3141400786, 4180808110, 698445255, 2653899549, 2989552604, 2253581325, 3252932727, 3004591147, 1891211689, 2487810577, 3915653703, 4237083816, 4030667424, 2100090966, 865136418, 1229899655, 953270745, 3399679628, 3557504664, 4118925222, 2061379749, 3079546586, 2915017791, 983426092, 2022837584, 1607244650, 2118541908, 2366882550, 3635996816, 972512814, 3283088770, 1568718495, 3499326569, 3576539503, 621982671, 2895723464, 410887952, 2623762152, 1002142683, 645401037, 1494807662, 2595684844, 1335535747, 2507040230, 4293295786, 3167684641, 367585007, 3885750714, 1865862730, 2668221674, 2960971305, 2763173681, 1059270954, 2777952454, 2724642869, 1320957812, 2194319100, 2429595872, 2815956275, 77089521, 3973773121, 3444575871, 2448830231, 1305906550, 4021308739, 2857194700, 2516901860, 3518358430, 1787304780, 740276417, 1699839814, 1592394909, 2352307457, 2272556026, 188821243, 1729977011, 3687994002, 274084841, 3594982253, 3613494426, 2701949495, 4162096729, 322734571, 2837966542, 1640576439, 484830689, 1202797690, 3537852828, 4067639125, 349075736, 3342319475, 4157467219, 4255800159, 1030690015, 1155237496, 2951971274, 1757691577, 607398968, 2738905026, 499347990, 3794078908, 1011452712, 227885567, 2818666809, 213114376, 3034881240, 1455525988, 3414450555, 850817237, 1817998408, 3092726480]; var U1 = [0, 235474187, 470948374, 303765277, 941896748, 908933415, 607530554, 708780849, 1883793496, 2118214995, 1817866830, 1649639237, 1215061108, 1181045119, 1417561698, 1517767529, 3767586992, 4003061179, 4236429990, 4069246893, 3635733660, 3602770327, 3299278474, 3400528769, 2430122216, 2664543715, 2362090238, 2193862645, 2835123396, 2801107407, 3035535058, 3135740889, 3678124923, 3576870512, 3341394285, 3374361702, 3810496343, 3977675356, 4279080257, 4043610186, 2876494627, 2776292904, 3076639029, 3110650942, 2472011535, 2640243204, 2403728665, 2169303058, 1001089995, 899835584, 666464733, 699432150, 59727847, 226906860, 530400753, 294930682, 1273168787, 1172967064, 1475418501, 1509430414, 1942435775, 2110667444, 1876241833, 1641816226, 2910219766, 2743034109, 2976151520, 3211623147, 2505202138, 2606453969, 2302690252, 2269728455, 3711829422, 3543599269, 3240894392, 3475313331, 3843699074, 3943906441, 4178062228, 4144047775, 1306967366, 1139781709, 1374988112, 1610459739, 1975683434, 2076935265, 1775276924, 1742315127, 1034867998, 866637845, 566021896, 800440835, 92987698, 193195065, 429456164, 395441711, 1984812685, 2017778566, 1784663195, 1683407248, 1315562145, 1080094634, 1383856311, 1551037884, 101039829, 135050206, 437757123, 337553864, 1042385657, 807962610, 573804783, 742039012, 2531067453, 2564033334, 2328828971, 2227573024, 2935566865, 2700099354, 3001755655, 3168937228, 3868552805, 3902563182, 4203181171, 4102977912, 3736164937, 3501741890, 3265478751, 3433712980, 1106041591, 1340463100, 1576976609, 1408749034, 2043211483, 2009195472, 1708848333, 1809054150, 832877231, 1068351396, 766945465, 599762354, 159417987, 126454664, 361929877, 463180190, 2709260871, 2943682380, 3178106961, 3009879386, 2572697195, 2538681184, 2236228733, 2336434550, 3509871135, 3745345300, 3441850377, 3274667266, 3910161971, 3877198648, 4110568485, 4211818798, 2597806476, 2497604743, 2261089178, 2295101073, 2733856160, 2902087851, 3202437046, 2968011453, 3936291284, 3835036895, 4136440770, 4169408201, 3535486456, 3702665459, 3467192302, 3231722213, 2051518780, 1951317047, 1716890410, 1750902305, 1113818384, 1282050075, 1584504582, 1350078989, 168810852, 67556463, 371049330, 404016761, 841739592, 1008918595, 775550814, 540080725, 3969562369, 3801332234, 4035489047, 4269907996, 3569255213, 3669462566, 3366754619, 3332740144, 2631065433, 2463879762, 2160117071, 2395588676, 2767645557, 2868897406, 3102011747, 3069049960, 202008497, 33778362, 270040487, 504459436, 875451293, 975658646, 675039627, 641025152, 2084704233, 1917518562, 1615861247, 1851332852, 1147550661, 1248802510, 1484005843, 1451044056, 933301370, 967311729, 733156972, 632953703, 260388950, 25965917, 328671808, 496906059, 1206477858, 1239443753, 1543208500, 1441952575, 2144161806, 1908694277, 1675577880, 1842759443, 3610369226, 3644379585, 3408119516, 3307916247, 4011190502, 3776767469, 4077384432, 4245618683, 2809771154, 2842737049, 3144396420, 3043140495, 2673705150, 2438237621, 2203032232, 2370213795]; var U2 = [0, 185469197, 370938394, 487725847, 741876788, 657861945, 975451694, 824852259, 1483753576, 1400783205, 1315723890, 1164071807, 1950903388, 2135319889, 1649704518, 1767536459, 2967507152, 3152976349, 2801566410, 2918353863, 2631447780, 2547432937, 2328143614, 2177544179, 3901806776, 3818836405, 4270639778, 4118987695, 3299409036, 3483825537, 3535072918, 3652904859, 2077965243, 1893020342, 1841768865, 1724457132, 1474502543, 1559041666, 1107234197, 1257309336, 598438867, 681933534, 901210569, 1052338372, 261314535, 77422314, 428819965, 310463728, 3409685355, 3224740454, 3710368113, 3593056380, 3875770207, 3960309330, 4045380933, 4195456072, 2471224067, 2554718734, 2237133081, 2388260884, 3212035895, 3028143674, 2842678573, 2724322336, 4138563181, 4255350624, 3769721975, 3955191162, 3667219033, 3516619604, 3431546947, 3347532110, 2933734917, 2782082824, 3099667487, 3016697106, 2196052529, 2313884476, 2499348523, 2683765030, 1179510461, 1296297904, 1347548327, 1533017514, 1786102409, 1635502980, 2087309459, 2003294622, 507358933, 355706840, 136428751, 53458370, 839224033, 957055980, 605657339, 790073846, 2373340630, 2256028891, 2607439820, 2422494913, 2706270690, 2856345839, 3075636216, 3160175349, 3573941694, 3725069491, 3273267108, 3356761769, 4181598602, 4063242375, 4011996048, 3828103837, 1033297158, 915985419, 730517276, 545572369, 296679730, 446754879, 129166120, 213705253, 1709610350, 1860738147, 1945798516, 2029293177, 1239331162, 1120974935, 1606591296, 1422699085, 4148292826, 4233094615, 3781033664, 3931371469, 3682191598, 3497509347, 3446004468, 3328955385, 2939266226, 2755636671, 3106780840, 2988687269, 2198438022, 2282195339, 2501218972, 2652609425, 1201765386, 1286567175, 1371368976, 1521706781, 1805211710, 1620529459, 2105887268, 1988838185, 533804130, 350174575, 164439672, 46346101, 870912086, 954669403, 636813900, 788204353, 2358957921, 2274680428, 2592523643, 2441661558, 2695033685, 2880240216, 3065962831, 3182487618, 3572145929, 3756299780, 3270937875, 3388507166, 4174560061, 4091327024, 4006521127, 3854606378, 1014646705, 930369212, 711349675, 560487590, 272786309, 457992840, 106852767, 223377554, 1678381017, 1862534868, 1914052035, 2031621326, 1211247597, 1128014560, 1580087799, 1428173050, 32283319, 182621114, 401639597, 486441376, 768917123, 651868046, 1003007129, 818324884, 1503449823, 1385356242, 1333838021, 1150208456, 1973745387, 2125135846, 1673061617, 1756818940, 2970356327, 3120694122, 2802849917, 2887651696, 2637442643, 2520393566, 2334669897, 2149987652, 3917234703, 3799141122, 4284502037, 4100872472, 3309594171, 3460984630, 3545789473, 3629546796, 2050466060, 1899603969, 1814803222, 1730525723, 1443857720, 1560382517, 1075025698, 1260232239, 575138148, 692707433, 878443390, 1062597235, 243256656, 91341917, 409198410, 325965383, 3403100636, 3252238545, 3704300486, 3620022987, 3874428392, 3990953189, 4042459122, 4227665663, 2460449204, 2578018489, 2226875310, 2411029155, 3198115200, 3046200461, 2827177882, 2743944855]; var U3 = [0, 218828297, 437656594, 387781147, 875313188, 958871085, 775562294, 590424639, 1750626376, 1699970625, 1917742170, 2135253587, 1551124588, 1367295589, 1180849278, 1265195639, 3501252752, 3720081049, 3399941250, 3350065803, 3835484340, 3919042237, 4270507174, 4085369519, 3102249176, 3051593425, 2734591178, 2952102595, 2361698556, 2177869557, 2530391278, 2614737639, 3145456443, 3060847922, 2708326185, 2892417312, 2404901663, 2187128086, 2504130317, 2555048196, 3542330227, 3727205754, 3375740769, 3292445032, 3876557655, 3926170974, 4246310725, 4027744588, 1808481195, 1723872674, 1910319033, 2094410160, 1608975247, 1391201670, 1173430173, 1224348052, 59984867, 244860394, 428169201, 344873464, 935293895, 984907214, 766078933, 547512796, 1844882806, 1627235199, 2011214180, 2062270317, 1507497298, 1423022939, 1137477952, 1321699145, 95345982, 145085239, 532201772, 313773861, 830661914, 1015671571, 731183368, 648017665, 3175501286, 2957853679, 2807058932, 2858115069, 2305455554, 2220981195, 2474404304, 2658625497, 3575528878, 3625268135, 3473416636, 3254988725, 3778151818, 3963161475, 4213447064, 4130281361, 3599595085, 3683022916, 3432737375, 3247465558, 3802222185, 4020912224, 4172763771, 4122762354, 3201631749, 3017672716, 2764249623, 2848461854, 2331590177, 2280796200, 2431590963, 2648976442, 104699613, 188127444, 472615631, 287343814, 840019705, 1058709744, 671593195, 621591778, 1852171925, 1668212892, 1953757831, 2037970062, 1514790577, 1463996600, 1080017571, 1297403050, 3673637356, 3623636965, 3235995134, 3454686199, 4007360968, 3822090177, 4107101658, 4190530515, 2997825956, 3215212461, 2830708150, 2779915199, 2256734592, 2340947849, 2627016082, 2443058075, 172466556, 122466165, 273792366, 492483431, 1047239000, 861968209, 612205898, 695634755, 1646252340, 1863638845, 2013908262, 1963115311, 1446242576, 1530455833, 1277555970, 1093597963, 1636604631, 1820824798, 2073724613, 1989249228, 1436590835, 1487645946, 1337376481, 1119727848, 164948639, 81781910, 331544205, 516552836, 1039717051, 821288114, 669961897, 719700128, 2973530695, 3157750862, 2871682645, 2787207260, 2232435299, 2283490410, 2667994737, 2450346104, 3647212047, 3564045318, 3279033885, 3464042516, 3980931627, 3762502690, 4150144569, 4199882800, 3070356634, 3121275539, 2904027272, 2686254721, 2200818878, 2384911031, 2570832044, 2486224549, 3747192018, 3528626907, 3310321856, 3359936201, 3950355702, 3867060991, 4049844452, 4234721005, 1739656202, 1790575107, 2108100632, 1890328081, 1402811438, 1586903591, 1233856572, 1149249077, 266959938, 48394827, 369057872, 418672217, 1002783846, 919489135, 567498868, 752375421, 209336225, 24197544, 376187827, 459744698, 945164165, 895287692, 574624663, 793451934, 1679968233, 1764313568, 2117360635, 1933530610, 1343127501, 1560637892, 1243112415, 1192455638, 3704280881, 3519142200, 3336358691, 3419915562, 3907448597, 3857572124, 4075877127, 4294704398, 3029510009, 3113855344, 2927934315, 2744104290, 2159976285, 2377486676, 2594734927, 2544078150]; var U4 = [0, 151849742, 303699484, 454499602, 607398968, 758720310, 908999204, 1059270954, 1214797936, 1097159550, 1517440620, 1400849762, 1817998408, 1699839814, 2118541908, 2001430874, 2429595872, 2581445614, 2194319100, 2345119218, 3034881240, 3186202582, 2801699524, 2951971274, 3635996816, 3518358430, 3399679628, 3283088770, 4237083816, 4118925222, 4002861748, 3885750714, 1002142683, 850817237, 698445255, 548169417, 529487843, 377642221, 227885567, 77089521, 1943217067, 2061379749, 1640576439, 1757691577, 1474760595, 1592394909, 1174215055, 1290801793, 2875968315, 2724642869, 3111247143, 2960971305, 2405426947, 2253581325, 2638606623, 2487810577, 3808662347, 3926825029, 4044981591, 4162096729, 3342319475, 3459953789, 3576539503, 3693126241, 1986918061, 2137062819, 1685577905, 1836772287, 1381620373, 1532285339, 1078185097, 1229899655, 1040559837, 923313619, 740276417, 621982671, 439452389, 322734571, 137073913, 19308535, 3871163981, 4021308739, 4104605777, 4255800159, 3263785589, 3414450555, 3499326569, 3651041127, 2933202493, 2815956275, 3167684641, 3049390895, 2330014213, 2213296395, 2566595609, 2448830231, 1305906550, 1155237496, 1607244650, 1455525988, 1776460110, 1626319424, 2079897426, 1928707164, 96392454, 213114376, 396673818, 514443284, 562755902, 679998000, 865136418, 983426092, 3708173718, 3557504664, 3474729866, 3323011204, 4180808110, 4030667424, 3945269170, 3794078908, 2507040230, 2623762152, 2272556026, 2390325492, 2975484382, 3092726480, 2738905026, 2857194700, 3973773121, 3856137295, 4274053469, 4157467219, 3371096953, 3252932727, 3673476453, 3556361835, 2763173681, 2915017791, 3064510765, 3215307299, 2156299017, 2307622919, 2459735317, 2610011675, 2081048481, 1963412655, 1846563261, 1729977011, 1480485785, 1362321559, 1243905413, 1126790795, 878845905, 1030690015, 645401037, 796197571, 274084841, 425408743, 38544885, 188821243, 3613494426, 3731654548, 3313212038, 3430322568, 4082475170, 4200115116, 3780097726, 3896688048, 2668221674, 2516901860, 2366882550, 2216610296, 3141400786, 2989552604, 2837966542, 2687165888, 1202797690, 1320957812, 1437280870, 1554391400, 1669664834, 1787304780, 1906247262, 2022837584, 265905162, 114585348, 499347990, 349075736, 736970802, 585122620, 972512814, 821712160, 2595684844, 2478443234, 2293045232, 2174754046, 3196267988, 3079546586, 2895723464, 2777952454, 3537852828, 3687994002, 3234156416, 3385345166, 4142626212, 4293295786, 3841024952, 3992742070, 174567692, 57326082, 410887952, 292596766, 777231668, 660510266, 1011452712, 893681702, 1108339068, 1258480242, 1343618912, 1494807662, 1715193156, 1865862730, 1948373848, 2100090966, 2701949495, 2818666809, 3004591147, 3122358053, 2235061775, 2352307457, 2535604243, 2653899549, 3915653703, 3764988233, 4219352155, 4067639125, 3444575871, 3294430577, 3746175075, 3594982253, 836553431, 953270745, 600235211, 718002117, 367585007, 484830689, 133361907, 251657213, 2041877159, 1891211689, 1806599355, 1654886325, 1568718495, 1418573201, 1335535747, 1184342925]; function convertToInt32(bytes) { var result = []; for (var i = 0;i < bytes.length; i += 4) { result.push(bytes[i] << 24 | bytes[i + 1] << 16 | bytes[i + 2] << 8 | bytes[i + 3]); } return result; } var AES = function(key) { if (!(this instanceof AES)) { throw Error("AES must be instanitated with `new`"); } Object.defineProperty(this, "key", { value: coerceArray(key, true) }); this._prepare(); }; AES.prototype._prepare = function() { var rounds = numberOfRounds[this.key.length]; if (rounds == null) { throw new Error("invalid key size (must be 16, 24 or 32 bytes)"); } this._Ke = []; this._Kd = []; for (var i = 0;i <= rounds; i++) { this._Ke.push([0, 0, 0, 0]); this._Kd.push([0, 0, 0, 0]); } var roundKeyCount = (rounds + 1) * 4; var KC = this.key.length / 4; var tk = convertToInt32(this.key); var index; for (var i = 0;i < KC; i++) { index = i >> 2; this._Ke[index][i % 4] = tk[i]; this._Kd[rounds - index][i % 4] = tk[i]; } var rconpointer = 0; var t = KC, tt; while (t < roundKeyCount) { tt = tk[KC - 1]; tk[0] ^= S[tt >> 16 & 255] << 24 ^ S[tt >> 8 & 255] << 16 ^ S[tt & 255] << 8 ^ S[tt >> 24 & 255] ^ rcon[rconpointer] << 24; rconpointer += 1; if (KC != 8) { for (var i = 1;i < KC; i++) { tk[i] ^= tk[i - 1]; } } else { for (var i = 1;i < KC / 2; i++) { tk[i] ^= tk[i - 1]; } tt = tk[KC / 2 - 1]; tk[KC / 2] ^= S[tt & 255] ^ S[tt >> 8 & 255] << 8 ^ S[tt >> 16 & 255] << 16 ^ S[tt >> 24 & 255] << 24; for (var i = KC / 2 + 1;i < KC; i++) { tk[i] ^= tk[i - 1]; } } var i = 0, r, c; while (i < KC && t < roundKeyCount) { r = t >> 2; c = t % 4; this._Ke[r][c] = tk[i]; this._Kd[rounds - r][c] = tk[i++]; t++; } } for (var r = 1;r < rounds; r++) { for (var c = 0;c < 4; c++) { tt = this._Kd[r][c]; this._Kd[r][c] = U1[tt >> 24 & 255] ^ U2[tt >> 16 & 255] ^ U3[tt >> 8 & 255] ^ U4[tt & 255]; } } }; AES.prototype.encrypt = function(plaintext) { if (plaintext.length != 16) { throw new Error("invalid plaintext size (must be 16 bytes)"); } var rounds = this._Ke.length - 1; var a = [0, 0, 0, 0]; var t = convertToInt32(plaintext); for (var i = 0;i < 4; i++) { t[i] ^= this._Ke[0][i]; } for (var r = 1;r < rounds; r++) { for (var i = 0;i < 4; i++) { a[i] = T1[t[i] >> 24 & 255] ^ T2[t[(i + 1) % 4] >> 16 & 255] ^ T3[t[(i + 2) % 4] >> 8 & 255] ^ T4[t[(i + 3) % 4] & 255] ^ this._Ke[r][i]; } t = a.slice(); } var result = createArray(16), tt; for (var i = 0;i < 4; i++) { tt = this._Ke[rounds][i]; result[4 * i] = (S[t[i] >> 24 & 255] ^ tt >> 24) & 255; result[4 * i + 1] = (S[t[(i + 1) % 4] >> 16 & 255] ^ tt >> 16) & 255; result[4 * i + 2] = (S[t[(i + 2) % 4] >> 8 & 255] ^ tt >> 8) & 255; result[4 * i + 3] = (S[t[(i + 3) % 4] & 255] ^ tt) & 255; } return result; }; AES.prototype.decrypt = function(ciphertext) { if (ciphertext.length != 16) { throw new Error("invalid ciphertext size (must be 16 bytes)"); } var rounds = this._Kd.length - 1; var a = [0, 0, 0, 0]; var t = convertToInt32(ciphertext); for (var i = 0;i < 4; i++) { t[i] ^= this._Kd[0][i]; } for (var r = 1;r < rounds; r++) { for (var i = 0;i < 4; i++) { a[i] = T5[t[i] >> 24 & 255] ^ T6[t[(i + 3) % 4] >> 16 & 255] ^ T7[t[(i + 2) % 4] >> 8 & 255] ^ T8[t[(i + 1) % 4] & 255] ^ this._Kd[r][i]; } t = a.slice(); } var result = createArray(16), tt; for (var i = 0;i < 4; i++) { tt = this._Kd[rounds][i]; result[4 * i] = (Si[t[i] >> 24 & 255] ^ tt >> 24) & 255; result[4 * i + 1] = (Si[t[(i + 3) % 4] >> 16 & 255] ^ tt >> 16) & 255; result[4 * i + 2] = (Si[t[(i + 2) % 4] >> 8 & 255] ^ tt >> 8) & 255; result[4 * i + 3] = (Si[t[(i + 1) % 4] & 255] ^ tt) & 255; } return result; }; var ModeOfOperationECB = function(key) { if (!(this instanceof ModeOfOperationECB)) { throw Error("AES must be instanitated with `new`"); } this.description = "Electronic Code Block"; this.name = "ecb"; this._aes = new AES(key); }; ModeOfOperationECB.prototype.encrypt = function(plaintext) { plaintext = coerceArray(plaintext); if (plaintext.length % 16 !== 0) { throw new Error("invalid plaintext size (must be multiple of 16 bytes)"); } var ciphertext = createArray(plaintext.length); var block = createArray(16); for (var i = 0;i < plaintext.length; i += 16) { copyArray(plaintext, block, 0, i, i + 16); block = this._aes.encrypt(block); copyArray(block, ciphertext, i); } return ciphertext; }; ModeOfOperationECB.prototype.decrypt = function(ciphertext) { ciphertext = coerceArray(ciphertext); if (ciphertext.length % 16 !== 0) { throw new Error("invalid ciphertext size (must be multiple of 16 bytes)"); } var plaintext = createArray(ciphertext.length); var block = createArray(16); for (var i = 0;i < ciphertext.length; i += 16) { copyArray(ciphertext, block, 0, i, i + 16); block = this._aes.decrypt(block); copyArray(block, plaintext, i); } return plaintext; }; var ModeOfOperationCBC = function(key, iv) { if (!(this instanceof ModeOfOperationCBC)) { throw Error("AES must be instanitated with `new`"); } this.description = "Cipher Block Chaining"; this.name = "cbc"; if (!iv) { iv = createArray(16); } else if (iv.length != 16) { throw new Error("invalid initialation vector size (must be 16 bytes)"); } this._lastCipherblock = coerceArray(iv, true); this._aes = new AES(key); }; ModeOfOperationCBC.prototype.encrypt = function(plaintext) { plaintext = coerceArray(plaintext); if (plaintext.length % 16 !== 0) { throw new Error("invalid plaintext size (must be multiple of 16 bytes)"); } var ciphertext = createArray(plaintext.length); var block = createArray(16); for (var i = 0;i < plaintext.length; i += 16) { copyArray(plaintext, block, 0, i, i + 16); for (var j = 0;j < 16; j++) { block[j] ^= this._lastCipherblock[j]; } this._lastCipherblock = this._aes.encrypt(block); copyArray(this._lastCipherblock, ciphertext, i); } return ciphertext; }; ModeOfOperationCBC.prototype.decrypt = function(ciphertext) { ciphertext = coerceArray(ciphertext); if (ciphertext.length % 16 !== 0) { throw new Error("invalid ciphertext size (must be multiple of 16 bytes)"); } var plaintext = createArray(ciphertext.length); var block = createArray(16); for (var i = 0;i < ciphertext.length; i += 16) { copyArray(ciphertext, block, 0, i, i + 16); block = this._aes.decrypt(block); for (var j = 0;j < 16; j++) { plaintext[i + j] = block[j] ^ this._lastCipherblock[j]; } copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16); } return plaintext; }; var ModeOfOperationCFB = function(key, iv, segmentSize) { if (!(this instanceof ModeOfOperationCFB)) { throw Error("AES must be instanitated with `new`"); } this.description = "Cipher Feedback"; this.name = "cfb"; if (!iv) { iv = createArray(16); } else if (iv.length != 16) { throw new Error("invalid initialation vector size (must be 16 size)"); } if (!segmentSize) { segmentSize = 1; } this.segmentSize = segmentSize; this._shiftRegister = coerceArray(iv, true); this._aes = new AES(key); }; ModeOfOperationCFB.prototype.encrypt = function(plaintext) { if (plaintext.length % this.segmentSize != 0) { throw new Error("invalid plaintext size (must be segmentSize bytes)"); } var encrypted = coerceArray(plaintext, true); var xorSegment; for (var i = 0;i < encrypted.length; i += this.segmentSize) { xorSegment = this._aes.encrypt(this._shiftRegister); for (var j = 0;j < this.segmentSize; j++) { encrypted[i + j] ^= xorSegment[j]; } copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize); copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize); } return encrypted; }; ModeOfOperationCFB.prototype.decrypt = function(ciphertext) { if (ciphertext.length % this.segmentSize != 0) { throw new Error("invalid ciphertext size (must be segmentSize bytes)"); } var plaintext = coerceArray(ciphertext, true); var xorSegment; for (var i = 0;i < plaintext.length; i += this.segmentSize) { xorSegment = this._aes.encrypt(this._shiftRegister); for (var j = 0;j < this.segmentSize; j++) { plaintext[i + j] ^= xorSegment[j]; } copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize); copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize); } return plaintext; }; var ModeOfOperationOFB = function(key, iv) { if (!(this instanceof ModeOfOperationOFB)) { throw Error("AES must be instanitated with `new`"); } this.description = "Output Feedback"; this.name = "ofb"; if (!iv) { iv = createArray(16); } else if (iv.length != 16) { throw new Error("invalid initialation vector size (must be 16 bytes)"); } this._lastPrecipher = coerceArray(iv, true); this._lastPrecipherIndex = 16; this._aes = new AES(key); }; ModeOfOperationOFB.prototype.encrypt = function(plaintext) { var encrypted = coerceArray(plaintext, true); for (var i = 0;i < encrypted.length; i++) { if (this._lastPrecipherIndex === 16) { this._lastPrecipher = this._aes.encrypt(this._lastPrecipher); this._lastPrecipherIndex = 0; } encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++]; } return encrypted; }; ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt; var Counter = function(initialValue) { if (!(this instanceof Counter)) { throw Error("Counter must be instanitated with `new`"); } if (initialValue !== 0 && !initialValue) { initialValue = 1; } if (typeof initialValue === "number") { this._counter = createArray(16); this.setValue(initialValue); } else { this.setBytes(initialValue); } }; Counter.prototype.setValue = function(value) { if (typeof value !== "number" || parseInt(value) != value) { throw new Error("invalid counter value (must be an integer)"); } if (value > Number.MAX_SAFE_INTEGER) { throw new Error("integer value out of safe range"); } for (var index = 15;index >= 0; --index) { this._counter[index] = value % 256; value = parseInt(value / 256); } }; Counter.prototype.setBytes = function(bytes) { bytes = coerceArray(bytes, true); if (bytes.length != 16) { throw new Error("invalid counter bytes size (must be 16 bytes)"); } this._counter = bytes; }; Counter.prototype.increment = function() { for (var i = 15;i >= 0; i--) { if (this._counter[i] === 255) { this._counter[i] = 0; } else { this._counter[i]++; break; } } }; var ModeOfOperationCTR = function(key, counter) { if (!(this instanceof ModeOfOperationCTR)) { throw Error("AES must be instanitated with `new`"); } this.description = "Counter"; this.name = "ctr"; if (!(counter instanceof Counter)) { counter = new Counter(counter); } this._counter = counter; this._remainingCounter = null; this._remainingCounterIndex = 16; this._aes = new AES(key); }; ModeOfOperationCTR.prototype.encrypt = function(plaintext) { var encrypted = coerceArray(plaintext, true); for (var i = 0;i < encrypted.length; i++) { if (this._remainingCounterIndex === 16) { this._remainingCounter = this._aes.encrypt(this._counter._counter); this._remainingCounterIndex = 0; this._counter.increment(); } encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++]; } return encrypted; }; ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt; function pkcs7pad(data) { data = coerceArray(data, true); var padder = 16 - data.length % 16; var result = createArray(data.length + padder); copyArray(data, result); for (var i = data.length;i < result.length; i++) { result[i] = padder; } return result; } function pkcs7strip(data) { data = coerceArray(data, true); if (data.length < 16) { throw new Error("PKCS#7 invalid length"); } var padder = data[data.length - 1]; if (padder > 16) { throw new Error("PKCS#7 padding byte out of range"); } var length = data.length - padder; for (var i = 0;i < padder; i++) { if (data[length + i] !== padder) { throw new Error("PKCS#7 invalid padding byte"); } } var result = createArray(length); copyArray(data, result, 0, 0, length); return result; } var aesjs = { AES, Counter, ModeOfOperation: { ecb: ModeOfOperationECB, cbc: ModeOfOperationCBC, cfb: ModeOfOperationCFB, ofb: ModeOfOperationOFB, ctr: ModeOfOperationCTR }, utils: { hex: convertHex, utf8: convertUtf8 }, padding: { pkcs7: { pad: pkcs7pad, strip: pkcs7strip } }, _arrayTest: { coerceArray, createArray, copyArray } }; if (typeof exports !== "undefined") { module.exports = aesjs; } else if (typeof define === "function" && define.amd) { define([], function() { return aesjs; }); } else { if (root.aesjs) { aesjs._aesjs = root.aesjs; } root.aesjs = aesjs; } })(exports); }); // node_modules/werift-rtp/lib/rtp/src/srtp/cipher/index.js var require_cipher = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.CipherAesBase = undefined; class CipherAesBase { constructor(srtpSessionKey, srtpSessionSalt, srtcpSessionKey, srtcpSessionSalt) { Object.defineProperty(this, "srtpSessionKey", { enumerable: true, configurable: true, writable: true, value: srtpSessionKey }); Object.defineProperty(this, "srtpSessionSalt", { enumerable: true, configurable: true, writable: true, value: srtpSessionSalt }); Object.defineProperty(this, "srtcpSessionKey", { enumerable: true, configurable: true, writable: true, value: srtcpSessionKey }); Object.defineProperty(this, "srtcpSessionSalt", { enumerable: true, configurable: true, writable: true, value: srtcpSessionSalt }); } encryptRtp(header, payload, rolloverCounter) { return Buffer.from([]); } decryptRtp(cipherText, rolloverCounter) { return []; } encryptRTCP(rawRtcp, srtcpIndex) { return Buffer.from([]); } decryptRTCP(encrypted) { return []; } } exports.CipherAesBase = CipherAesBase; }); // node_modules/werift-rtp/lib/rtp/src/srtp/cipher/ctr.js var require_ctr = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.CipherAesCtr = undefined; var crypto_1 = import.meta.require("crypto"); var _1 = require_cipher(); var header_1 = require_header(); var rtp_1 = require_rtp(); class CipherAesCtr extends _1.CipherAesBase { constructor(srtpSessionKey, srtpSessionSalt, srtcpSessionKey, srtcpSessionSalt, srtpSessionAuthTag, srtcpSessionAuthTag) { super(srtpSessionKey, srtpSessionSalt, srtcpSessionKey, srtcpSessionSalt); Object.defineProperty(this, "srtpSessionAuthTag", { enumerable: true, configurable: true, writable: true, value: srtpSessionAuthTag }); Object.defineProperty(this, "srtcpSessionAuthTag", { enumerable: true, configurable: true, writable: true, value: srtcpSessionAuthTag }); Object.defineProperty(this, "authTagLength", { enumerable: true, configurable: true, writable: true, value: 10 }); } encryptRtp(header, payload, rolloverCounter) { const headerBuffer = header.serialize(header.serializeSize); const counter = this.generateCounter(header.sequenceNumber, rolloverCounter, header.ssrc, this.srtpSessionSalt); const cipher = (0, crypto_1.createCipheriv)("aes-128-ctr", this.srtpSessionKey, counter); const enc = cipher.update(payload); const authTag = this.generateSrtpAuthTag(rolloverCounter, headerBuffer, enc); return Buffer.concat([headerBuffer, enc, authTag]); } decryptRtp(cipherText, rolloverCounter) { const header = rtp_1.RtpHeader.deSerialize(cipherText); const size = cipherText.length - this.authTagLength; cipherText = cipherText.subarray(0, cipherText.length - this.authTagLength); const counter = this.generateCounter(header.sequenceNumber, rolloverCounter, header.ssrc, this.srtpSessionSalt); const cipher = (0, crypto_1.createDecipheriv)("aes-128-ctr", this.srtpSessionKey, counter); const payload = cipherText.subarray(header.payloadOffset); const buf = cipher.update(payload); const dst = Buffer.concat([ cipherText.subarray(0, header.payloadOffset), buf, Buffer.alloc(size - header.payloadOffset - buf.length) ]); return [dst, header]; } encryptRTCP(rtcpPacket, srtcpIndex) { let out = Buffer.from(rtcpPacket); const ssrc = out.readUInt32BE(4); const counter = this.generateCounter(srtcpIndex & 65535, srtcpIndex >> 16, ssrc, this.srtcpSessionSalt); const cipher = (0, crypto_1.createCipheriv)("aes-128-ctr", this.srtcpSessionKey, counter); const buf = cipher.update(out.slice(8)); buf.copy(out, 8); out = Buffer.concat([out, Buffer.alloc(4)]); out.writeUInt32BE(srtcpIndex, out.length - 4); out[out.length - 4] |= 128; const authTag = this.generateSrtcpAuthTag(out); out = Buffer.concat([out, authTag]); return out; } decryptRTCP(encrypted) { const header = header_1.RtcpHeader.deSerialize(encrypted); const tailOffset = encrypted.length - (this.authTagLength + srtcpIndexSize); const out = Buffer.from(encrypted).slice(0, tailOffset); const isEncrypted = encrypted[tailOffset] >> 7; if (isEncrypted === 0) return [out, header]; let srtcpIndex = encrypted.readUInt32BE(tailOffset); srtcpIndex &= ~(1 << 31); const ssrc = encrypted.readUInt32BE(4); const actualTag = encrypted.subarray(encrypted.length - 10); const counter = this.generateCounter(srtcpIndex & 65535, srtcpIndex >> 16, ssrc, this.srtcpSessionSalt); const cipher = (0, crypto_1.createDecipheriv)("aes-128-ctr", this.srtcpSessionKey, counter); const buf = cipher.update(out.subarray(8)); buf.copy(out, 8); return [out, header]; } generateSrtcpAuthTag(buf) { const srtcpSessionAuth = (0, crypto_1.createHmac)("sha1", this.srtcpSessionAuthTag); return srtcpSessionAuth.update(buf).digest().slice(0, 10); } generateCounter(sequenceNumber, rolloverCounter, ssrc, sessionSalt) { const counter = Buffer.alloc(16); counter.writeUInt32BE(ssrc, 4); counter.writeUInt32BE(rolloverCounter, 8); counter.writeUInt32BE(Number(BigInt(sequenceNumber) << 16n), 12); for (let i = 0;i < sessionSalt.length; i++) { counter[i] ^= sessionSalt[i]; } return counter; } generateSrtpAuthTag(roc, ...buffers) { const srtpSessionAuth = (0, crypto_1.createHmac)("sha1", this.srtpSessionAuthTag); const rocRaw = Buffer.alloc(4); rocRaw.writeUInt32BE(roc); for (const buf of buffers) { srtpSessionAuth.update(buf); } return srtpSessionAuth.update(rocRaw).digest().subarray(0, 10); } } exports.CipherAesCtr = CipherAesCtr; var srtcpIndexSize = 4; }); // node_modules/werift-rtp/lib/rtp/src/srtp/cipher/gcm.js var require_gcm = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.CipherAesGcm = undefined; var crypto_1 = import.meta.require("crypto"); var _1 = require_cipher(); var src_1 = require_src3(); var helper_1 = require_helper(); var header_1 = require_header(); var rtp_1 = require_rtp(); class CipherAesGcm extends _1.CipherAesBase { constructor(srtpSessionKey, srtpSessionSalt, srtcpSessionKey, srtcpSessionSalt) { super(srtpSessionKey, srtpSessionSalt, srtcpSessionKey, srtcpSessionSalt); Object.defineProperty(this, "aeadAuthTagLen", { enumerable: true, configurable: true, writable: true, value: 16 }); Object.defineProperty(this, "rtpIvWriter", { enumerable: true, configurable: true, writable: true, value: (0, src_1.createBufferWriter)([2, 4, 4, 2], true) }); Object.defineProperty(this, "rtcpIvWriter", { enumerable: true, configurable: true, writable: true, value: (0, src_1.createBufferWriter)([2, 4, 2, 4], true) }); Object.defineProperty(this, "aadWriter", { enumerable: true, configurable: true, writable: true, value: (0, src_1.createBufferWriter)([4], true) }); } encryptRtp(header, payload, rolloverCounter) { const hdr = header.serialize(header.serializeSize); const iv = this.rtpInitializationVector(header, rolloverCounter); const cipher = (0, crypto_1.createCipheriv)("aes-128-gcm", this.srtpSessionKey, iv); cipher.setAAD(hdr); const enc = cipher.update(payload); cipher.final(); const authTag = cipher.getAuthTag(); const dst = Buffer.concat([hdr, enc, authTag]); return dst; } decryptRtp(cipherText, rolloverCounter) { const header = rtp_1.RtpHeader.deSerialize(cipherText); let dst = Buffer.from([]); dst = (0, helper_1.growBufferSize)(dst, cipherText.length - this.aeadAuthTagLen); cipherText.slice(0, header.payloadOffset).copy(dst); const iv = this.rtpInitializationVector(header, rolloverCounter); const enc = cipherText.slice(header.payloadOffset, cipherText.length - this.aeadAuthTagLen); const cipher = (0, crypto_1.createDecipheriv)("aes-128-gcm", this.srtpSessionKey, iv); const dec = cipher.update(enc); dec.copy(dst, header.payloadOffset); return [dst, header]; } encryptRTCP(rtcpPacket, srtcpIndex) { const ssrc = rtcpPacket.readUInt32BE(4); const addPos = rtcpPacket.length + this.aeadAuthTagLen; let dst = Buffer.from([]); dst = (0, helper_1.growBufferSize)(dst, addPos + srtcpIndexSize); rtcpPacket.slice(0, 8).copy(dst); const iv = this.rtcpInitializationVector(ssrc, srtcpIndex); const aad = this.rtcpAdditionalAuthenticatedData(rtcpPacket, srtcpIndex); const cipher = (0, crypto_1.createCipheriv)("aes-128-gcm", this.srtcpSessionKey, iv); cipher.setAAD(aad); const enc = cipher.update(rtcpPacket.slice(8)); cipher.final(); enc.copy(dst, 8); const authTag = cipher.getAuthTag(); authTag.copy(dst, 8 + enc.length); aad.slice(8, 12).copy(dst, addPos); return dst; } decryptRTCP(encrypted) { const header = header_1.RtcpHeader.deSerialize(encrypted); const aadPos = encrypted.length - srtcpIndexSize; const dst = Buffer.alloc(aadPos - this.aeadAuthTagLen); encrypted.slice(0, 8).copy(dst); const ssrc = encrypted.readUInt32BE(4); let srtcpIndex = encrypted.readUInt32BE(encrypted.length - 4); srtcpIndex &= ~(rtcpEncryptionFlag << 24); const iv = this.rtcpInitializationVector(ssrc, srtcpIndex); const aad = this.rtcpAdditionalAuthenticatedData(encrypted, srtcpIndex); const cipher = (0, crypto_1.createDecipheriv)("aes-128-gcm", this.srtcpSessionKey, iv); cipher.setAAD(aad); const dec = cipher.update(encrypted.slice(8, aadPos)); dec.copy(dst, 8); return [dst, header]; } rtpInitializationVector(header, rolloverCounter) { const iv = this.rtpIvWriter([ 0, header.ssrc, rolloverCounter, header.sequenceNumber ]); for (let i = 0;i < iv.length; i++) { iv[i] ^= this.srtpSessionSalt[i]; } return iv; } rtcpInitializationVector(ssrc, srtcpIndex) { const iv = this.rtcpIvWriter([0, ssrc, 0, srtcpIndex]); for (let i = 0;i < iv.length; i++) { iv[i] ^= this.srtcpSessionSalt[i]; } return iv; } rtcpAdditionalAuthenticatedData(rtcpPacket, srtcpIndex) { const aad = Buffer.concat([ rtcpPacket.subarray(0, 8), this.aadWriter([srtcpIndex]) ]); aad[8] |= rtcpEncryptionFlag; return aad; } } exports.CipherAesGcm = CipherAesGcm; var srtcpIndexSize = 4; var rtcpEncryptionFlag = 128; }); // node_modules/werift-rtp/lib/rtp/src/srtp/context/context.js var require_context = __commonJS((exports) => { var __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Context = undefined; var crypto_1 = import.meta.require("crypto"); var aes_js_1 = __importDefault(require_aes_js()); var ctr_1 = require_ctr(); var gcm_1 = require_gcm(); var const_1 = require_const(); class Context { constructor(masterKey, masterSalt, profile) { Object.defineProperty(this, "masterKey", { enumerable: true, configurable: true, writable: true, value: masterKey }); Object.defineProperty(this, "masterSalt", { enumerable: true, configurable: true, writable: true, value: masterSalt }); Object.defineProperty(this, "profile", { enumerable: true, configurable: true, writable: true, value: profile }); Object.defineProperty(this, "srtpSSRCStates", { enumerable: true, configurable: true, writable: true, value: {} }); Object.defineProperty(this, "srtpSessionKey", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "srtpSessionSalt", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "srtpSessionAuthTag", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "srtpSessionAuth", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "srtcpSSRCStates", { enumerable: true, configurable: true, writable: true, value: {} }); Object.defineProperty(this, "srtcpSessionKey", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "srtcpSessionSalt", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "srtcpSessionAuthTag", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "srtcpSessionAuth", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "cipher", { enumerable: true, configurable: true, writable: true, value: undefined }); { const diff = 14 - masterSalt.length; if (diff > 0) { this.masterSalt = Buffer.concat([masterSalt, Buffer.alloc(diff)]); } } this.srtpSessionKey = this.generateSessionKey(0); this.srtpSessionSalt = this.generateSessionSalt(2); this.srtpSessionAuthTag = this.generateSessionAuthTag(1); this.srtpSessionAuth = (0, crypto_1.createHmac)("sha1", this.srtpSessionAuthTag); this.srtcpSessionKey = this.generateSessionKey(3); this.srtcpSessionSalt = this.generateSessionSalt(5); this.srtcpSessionAuthTag = this.generateSessionAuthTag(4); this.srtcpSessionAuth = (0, crypto_1.createHmac)("sha1", this.srtcpSessionAuthTag); switch (profile) { case const_1.ProtectionProfileAes128CmHmacSha1_80: this.cipher = new ctr_1.CipherAesCtr(this.srtpSessionKey, this.srtpSessionSalt, this.srtcpSessionKey, this.srtcpSessionSalt, this.srtpSessionAuthTag, this.srtcpSessionAuthTag); break; case const_1.ProtectionProfileAeadAes128Gcm: this.cipher = new gcm_1.CipherAesGcm(this.srtpSessionKey, this.srtpSessionSalt, this.srtcpSessionKey, this.srtcpSessionSalt); break; } } generateSessionKey(label) { let sessionKey = Buffer.from(this.masterSalt); const labelAndIndexOverKdr = Buffer.from([ label, 0, 0, 0, 0, 0, 0 ]); for (let i = labelAndIndexOverKdr.length - 1, j = sessionKey.length - 1;i >= 0; i--, j--) { sessionKey[j] = sessionKey[j] ^ labelAndIndexOverKdr[i]; } sessionKey = Buffer.concat([sessionKey, Buffer.from([0, 0])]); const block = new aes_js_1.default.AES(this.masterKey); return Buffer.from(block.encrypt(sessionKey)); } generateSessionSalt(label) { let sessionSalt = Buffer.from(this.masterSalt); const labelAndIndexOverKdr = Buffer.from([ label, 0, 0, 0, 0, 0, 0 ]); for (let i = labelAndIndexOverKdr.length - 1, j = sessionSalt.length - 1;i >= 0; i--, j--) { sessionSalt[j] = sessionSalt[j] ^ labelAndIndexOverKdr[i]; } sessionSalt = Buffer.concat([sessionSalt, Buffer.from([0, 0])]); const block = new aes_js_1.default.AES(this.masterKey); sessionSalt = Buffer.from(block.encrypt(sessionSalt)); return sessionSalt.subarray(0, 14); } generateSessionAuthTag(label) { const sessionAuthTag = Buffer.from(this.masterSalt); const labelAndIndexOverKdr = Buffer.from([ label, 0, 0, 0, 0, 0, 0 ]); for (let i = labelAndIndexOverKdr.length - 1, j = sessionAuthTag.length - 1;i >= 0; i--, j--) { sessionAuthTag[j] = sessionAuthTag[j] ^ labelAndIndexOverKdr[i]; } let firstRun = Buffer.concat([ sessionAuthTag, Buffer.from([0, 0]) ]); let secondRun = Buffer.concat([ sessionAuthTag, Buffer.from([0, 1]) ]); const block = new aes_js_1.default.AES(this.masterKey); firstRun = Buffer.from(block.encrypt(firstRun)); secondRun = Buffer.from(block.encrypt(secondRun)); return Buffer.concat([firstRun, secondRun.subarray(0, 4)]); } getSrtpSsrcState(ssrc) { let s = this.srtpSSRCStates[ssrc]; if (s) return s; s = { ssrc, rolloverCounter: 0, lastSequenceNumber: 0 }; this.srtpSSRCStates[ssrc] = s; return s; } getSrtcpSsrcState(ssrc) { let s = this.srtcpSSRCStates[ssrc]; if (s) return s; s = { srtcpIndex: 0, ssrc }; this.srtcpSSRCStates[ssrc] = s; return s; } updateRolloverCount(sequenceNumber, s) { if (!s.rolloverHasProcessed) { s.rolloverHasProcessed = true; } else if (sequenceNumber === 0) { if (s.lastSequenceNumber > MaxROCDisorder) { s.rolloverCounter++; } } else if (s.lastSequenceNumber < MaxROCDisorder && sequenceNumber > MaxSequenceNumber - MaxROCDisorder) { if (s.rolloverCounter > 0) { s.rolloverCounter--; } } else if (sequenceNumber < MaxROCDisorder && s.lastSequenceNumber > MaxSequenceNumber - MaxROCDisorder) { s.rolloverCounter++; } s.lastSequenceNumber = sequenceNumber; } generateSrtpAuthTag(buf, roc) { this.srtpSessionAuth = (0, crypto_1.createHmac)("sha1", this.srtpSessionAuthTag); const rocRaw = Buffer.alloc(4); rocRaw.writeUInt32BE(roc); return this.srtpSessionAuth.update(buf).update(rocRaw).digest().slice(0, 10); } index(ssrc) { const s = this.srtcpSSRCStates[ssrc]; if (!s) { return 0; } return s.srtcpIndex; } setIndex(ssrc, index) { const s = this.getSrtcpSsrcState(ssrc); s.srtcpIndex = index % 2147483647; } } exports.Context = Context; var MaxROCDisorder = 100; var MaxSequenceNumber = 65535; }); // node_modules/werift-rtp/lib/rtp/src/srtp/context/srtcp.js var require_srtcp = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.SrtcpContext = undefined; var context_1 = require_context(); class SrtcpContext extends context_1.Context { constructor(masterKey, masterSalt, profile) { super(masterKey, masterSalt, profile); } encryptRTCP(rawRtcp) { const ssrc = rawRtcp.readUInt32BE(4); const s = this.getSrtcpSsrcState(ssrc); s.srtcpIndex++; if (s.srtcpIndex >> maxSRTCPIndex) { s.srtcpIndex = 0; } const enc = this.cipher.encryptRTCP(rawRtcp, s.srtcpIndex); return enc; } decryptRTCP(encrypted) { const dec = this.cipher.decryptRTCP(encrypted); return dec; } } exports.SrtcpContext = SrtcpContext; var maxSRTCPIndex = 2147483647; }); // node_modules/werift-rtp/lib/rtp/src/srtp/session.js var require_session = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.Session = undefined; class Session { constructor(ContextCls) { Object.defineProperty(this, "ContextCls", { enumerable: true, configurable: true, writable: true, value: ContextCls }); Object.defineProperty(this, "localContext", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "remoteContext", { enumerable: true, configurable: true, writable: true, value: undefined }); Object.defineProperty(this, "onData", { enumerable: true, configurable: true, writable: true, value: undefined }); } start(localMasterKey, localMasterSalt, remoteMasterKey, remoteMasterSalt, profile) { this.localContext = new this.ContextCls(localMasterKey, localMasterSalt, profile); this.remoteContext = new this.ContextCls(remoteMasterKey, remoteMasterSalt, profile); } } exports.Session = Session; }); // node_modules/werift-rtp/lib/rtp/src/srtp/srtcp.js var require_srtcp2 = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.SrtcpSession = undefined; var srtcp_1 = require_srtcp(); var session_1 = require_session(); class SrtcpSession extends session_1.Session { constructor(config) { super(srtcp_1.SrtcpContext); Object.defineProperty(this, "config", { enumerable: true, configurable: true, writable: true, value: config }); Object.defineProperty(this, "decrypt", { enumerable: true, configurable: true, writable: true, value: (buf) => { const [decrypted] = this.remoteContext.decryptRTCP(buf); return decrypted; } }); this.start(config.keys.localMasterKey, config.keys.localMasterSalt, config.keys.remoteMasterKey, config.keys.remoteMasterSalt, config.profile); } encrypt(rawRtcp) { const enc = this.localContext.encryptRTCP(rawRtcp); return enc; } } exports.SrtcpSession = SrtcpSession; }); // node_modules/werift-rtp/lib/rtp/src/srtp/context/srtp.js var require_srtp = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.SrtpContext = undefined; var rtp_1 = require_rtp(); var context_1 = require_context(); class SrtpContext extends context_1.Context { constructor(masterKey, masterSalt, profile) { super(masterKey, masterSalt, profile); } encryptRtp(payload, header) { const s = this.getSrtpSsrcState(header.ssrc); this.updateRolloverCount(header.sequenceNumber, s); const enc = this.cipher.encryptRtp(header, payload, s.rolloverCounter); return enc; } decryptRtp(cipherText) { const header = rtp_1.RtpHeader.deSerialize(cipherText); const s = this.getSrtpSsrcState(header.ssrc); this.updateRolloverCount(header.sequenceNumber, s); const dec = this.cipher.decryptRtp(cipherText, s.rolloverCounter); return dec; } } exports.SrtpContext = SrtpContext; }); // node_modules/werift-rtp/lib/rtp/src/srtp/srtp.js var require_srtp2 = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.SrtpSession = undefined; var srtp_1 = require_srtp(); var session_1 = require_session(); class SrtpSession extends session_1.Session { constructor(config) { super(srtp_1.SrtpContext); Object.defineProperty(this, "config", { enumerable: true, configurable: true, writable: true, value: config }); Object.defineProperty(this, "decrypt", { enumerable: true, configurable: true, writable: true, value: (buf) => { const [decrypted] = this.remoteContext.decryptRtp(buf); return decrypted; } }); this.start(config.keys.localMasterKey, config.keys.localMasterSalt, config.keys.remoteMasterKey, config.keys.remoteMasterSalt, config.profile); } encrypt(payload, header) { return this.localContext.encryptRtp(payload, header); } } exports.SrtpSession = SrtpSession; }); // node_modules/werift-rtp/lib/rtp/src/util.js var require_util = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.RtpBuilder = undefined; var src_1 = require_src3(); var rtp_1 = require_rtp(); class RtpBuilder { constructor(props) { Object.defineProperty(this, "props", { enumerable: true, configurable: true, writable: true, value: props }); Object.defineProperty(this, "sequenceNumber", { enumerable: true, configurable: true, writable: true, value: (0, src_1.random16)() }); Object.defineProperty(this, "timestamp", { enumerable: true, configurable: true, writable: true, value: (0, src_1.random32)() }); } create(payload) { this.sequenceNumber = (0, src_1.uint16Add)(this.sequenceNumber, 1); const elapsed = this.props.between * this.props.clockRate / 1000; this.timestamp = (0, src_1.uint32Add)(this.timestamp, elapsed); const header = new rtp_1.RtpHeader({ sequenceNumber: this.sequenceNumber, timestamp: Number(this.timestamp), payloadType: 96, extension: true, marker: false, padding: false }); const rtp = new rtp_1.RtpPacket(header, payload); return rtp; } } exports.RtpBuilder = RtpBuilder; }); // node_modules/werift-rtp/lib/rtp/src/index.js var require_src4 = __commonJS((exports) => { var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === undefined) 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 === undefined) k2 = k; o[k2] = m[k]; }); var __exportStar = exports && exports.__exportStar || function(m, exports2) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); import.meta.require("buffer"); __exportStar(require_const(), exports); __exportStar(require_src3(), exports); __exportStar(require_codec(), exports); __exportStar(require_helper(), exports); __exportStar(require_header(), exports); __exportStar(require_psfb(), exports); __exportStar(require_pictureLossIndication(), exports); __exportStar(require_remb(), exports); __exportStar(require_rr(), exports); __exportStar(require_rtcp(), exports); __exportStar(require_rtpfb(), exports); __exportStar(require_nack(), exports); __exportStar(require_twcc(), exports); __exportStar(require_sdes(), exports); __exportStar(require_sr(), exports); __exportStar(require_headerExtension(), exports); __exportStar(require_encoder(), exports); __exportStar(require_handler(), exports); __exportStar(require_packet(), exports); __exportStar(require_rtp(), exports); __exportStar(require_rtx(), exports); __exportStar(require_srtcp2(), exports); __exportStar(require_srtp2(), exports); __exportStar(require_util(), exports); }); // node_modules/loglevel/lib/loglevel.js var require_loglevel = __commonJS((exports, module) => { (function(root, definition) { if (typeof define === "function" && define.amd) { define(definition); } else if (typeof module === "object" && module.exports) { module.exports = definition(); } else { root.log = definition(); } })(exports, function() { var noop = function() { }; var undefinedType = "undefined"; var isIE = typeof window !== undefinedType && typeof window.navigator !== undefinedType && /Trident\/|MSIE /.test(window.navigator.userAgent); var logMethods = [ "trace", "debug", "info", "warn", "error" ]; var _loggersByName = {}; var defaultLogger = null; function bindMethod(obj, methodName) { var method = obj[methodName]; if (typeof method.bind === "function") { return method.bind(obj); } else { try { return Function.prototype.bind.call(method, obj); } catch (e) { return function() { return Function.prototype.apply.apply(method, [obj, arguments]); }; } } } function traceForIE() { if (console.log) { if (console.log.apply) { console.log.apply(console, arguments); } else { Function.prototype.apply.apply(console.log, [console, arguments]); } } if (console.trace) console.trace(); } function realMethod(methodName) { if (methodName === "debug") { methodName = "log"; } if (typeof console === undefinedType) { return false; } else if (methodName === "trace" && isIE) { return traceForIE; } else if (console[methodName] !== undefined) { return bindMethod(console, methodName); } else if (console.log !== undefined) { return bindMethod(console, "log"); } else { return noop; } } function replaceLoggingMethods() { var level = this.getLevel(); for (var i = 0;i < logMethods.length; i++) { var methodName = logMethods[i]; this[methodName] = i < level ? noop : this.methodFactory(methodName, level, this.name); } this.log = this.debug; if (typeof console === undefinedType && level < this.levels.SILENT) { return "No console available for logging"; } } function enableLoggingWhenConsoleArrives(methodName) { return function() { if (typeof console !== undefinedType) { replaceLoggingMethods.call(this); this[methodName].apply(this, arguments); } }; } function defaultMethodFactory(methodName, _level, _loggerName) { return realMethod(methodName) || enableLoggingWhenConsoleArrives.apply(this, arguments); } function Logger(name, factory) { var self2 = this; var inheritedLevel; var defaultLevel; var userLevel; var storageKey = "loglevel"; if (typeof name === "string") { storageKey += ":" + name; } else if (typeof name === "symbol") { storageKey = undefined; } function persistLevelIfPossible(levelNum) { var levelName = (logMethods[levelNum] || "silent").toUpperCase(); if (typeof window === undefinedType || !storageKey) return; try { window.localStorage[storageKey] = levelName; return; } catch (ignore) { } try { window.document.cookie = encodeURIComponent(storageKey) + "=" + levelName + ";"; } catch (ignore) { } } function getPersistedLevel() { var storedLevel; if (typeof window === undefinedType || !storageKey) return; try { storedLevel = window.localStorage[storageKey]; } catch (ignore) { } if (typeof storedLevel === undefinedType) { try { var cookie = window.document.cookie; var cookieName = encodeURIComponent(storageKey); var location = cookie.indexOf(cookieName + "="); if (location !== -1) { storedLevel = /^([^;]+)/.exec(cookie.slice(location + cookieName.length + 1))[1]; } } catch (ignore) { } } if (self2.levels[storedLevel] === undefined) { storedLevel = undefined; } return storedLevel; } function clearPersistedLevel() { if (typeof window === undefinedType || !storageKey) return; try { window.localStorage.removeItem(storageKey); } catch (ignore) { } try { window.document.cookie = encodeURIComponent(storageKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC"; } catch (ignore) { } } function normalizeLevel(input) { var level = input; if (typeof level === "string" && self2.levels[level.toUpperCase()] !== undefined) { level = self2.levels[level.toUpperCase()]; } if (typeof level === "number" && level >= 0 && level <= self2.levels.SILENT) { return level; } else { throw new TypeError("log.setLevel() called with invalid level: " + input); } } self2.name = name; self2.levels = { TRACE: 0, DEBUG: 1, INFO: 2, WARN: 3, ERROR: 4, SILENT: 5 }; self2.methodFactory = factory || defaultMethodFactory; self2.getLevel = function() { if (userLevel != null) { return userLevel; } else if (defaultLevel != null) { return defaultLevel; } else { return inheritedLevel; } }; self2.setLevel = function(level, persist) { userLevel = normalizeLevel(level); if (persist !== false) { persistLevelIfPossible(userLevel); } return replaceLoggingMethods.call(self2); }; self2.setDefaultLevel = function(level) { defaultLevel = normalizeLevel(level); if (!getPersistedLevel()) { self2.setLevel(level, false); } }; self2.resetLevel = function() { userLevel = null; clearPersistedLevel(); replaceLoggingMethods.call(self2); }; self2.enableAll = function(persist) { self2.setLevel(self2.levels.TRACE, persist); }; self2.disableAll = function(persist) { self2.setLevel(self2.levels.SILENT, persist); }; self2.rebuild = function() { if (defaultLogger !== self2) { inheritedLevel = normalizeLevel(defaultLogger.getLevel()); } replaceLoggingMethods.call(self2); if (defaultLogger === self2) { for (var childName in _loggersByName) { _loggersByName[childName].rebuild(); } } }; inheritedLevel = normalizeLevel(defaultLogger ? defaultLogger.getLevel() : "WARN"); var initialLevel = getPersistedLevel(); if (initialLevel != null) { userLevel = normalizeLevel(initialLevel); } replaceLoggingMethods.call(self2); } defaultLogger = new Logger; defaultLogger.getLogger = function getLogger(name) { if (typeof name !== "symbol" && typeof name !== "string" || name === "") { throw new TypeError("You must supply a name when creating a logger."); } var logger = _loggersByName[name]; if (!logger) { logger = _loggersByName[name] = new Logger(name, defaultLogger.methodFactory); } return logger; }; var _log = typeof window !== undefinedType ? window.log : undefined; defaultLogger.noConflict = function() { if (typeof window !== undefinedType && window.log === defaultLogger) { window.log = _log; } return defaultLogger; }; defaultLogger.getLoggers = function getLoggers() { return _loggersByName; }; defaultLogger["default"] = defaultLogger; return defaultLogger; }); }); // node_modules/find-process/dist/cjs/logger.js var require_logger = __commonJS((exports) => { var __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var loglevel_1 = __importDefault(require_loglevel()); exports.default = loglevel_1.default; }); // node_modules/color-name/index.js var require_color_name = __commonJS((exports, module) => { module.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/color-convert/conversions.js var require_conversions = __commonJS((exports, module) => { function comparativeDistance(x, y) { return (x[0] - y[0]) ** 2 + (x[1] - y[1]) ** 2 + (x[2] - y[2]) ** 2; } 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"] } }; module.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]; }; 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 distance = comparativeDistance(rgb, value); if (distance < currentClosestDistance) { currentClosestDistance = distance; 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 > 0.008856 ? x ** (1 / 3) : 7.787 * x + 16 / 116; y = y > 0.008856 ? y ** (1 / 3) : 7.787 * y + 16 / 116; z = z > 0.008856 ? 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 > 0.0031308 ? 1.055 * r ** (1 / 2.4) - 0.055 : r * 12.92; g = g > 0.0031308 ? 1.055 * g ** (1 / 2.4) - 0.055 : g * 12.92; b = b > 0.0031308 ? 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 > 0.008856 ? x ** (1 / 3) : 7.787 * x + 16 / 116; y = y > 0.008856 ? y ** (1 / 3) : 7.787 * y + 16 / 116; z = z > 0.008856 ? 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 > 0.008856 ? y2 : (y - 16 / 116) / 7.787; x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787; z = z2 > 0.008856 ? 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(args, saturation = null) { const [r, g, b] = args; let value = saturation === null ? convert.rgb.hsv(args)[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(args) { return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]); }; convert.rgb.ansi256 = function(args) { const r = args[0]; const g = args[1]; const b = args[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(args) { let color = args % 10; if (color === 0 || color === 7) { if (args > 50) { color += 3.5; } color = color / 10.5 * 255; return [color, color, color]; } const mult = (~~(args > 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(args) { if (args >= 232) { const c = (args - 232) * 10 + 8; return [c, c, c]; } args -= 16; let rem; const r = Math.floor(args / 36) / 5 * 255; const g = Math.floor((rem = args % 36) / 6) / 5 * 255; const b = rem % 6 / 5 * 255; return [r, g, b]; }; convert.rgb.hex = function(args) { const integer = ((Math.round(args[0]) & 255) << 16) + ((Math.round(args[1]) & 255) << 8) + (Math.round(args[2]) & 255); const string = integer.toString(16).toUpperCase(); return "000000".substring(string.length) + string; }; convert.hex.rgb = function(args) { const match = args.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(args) { return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; }; convert.gray.hsl = function(args) { return [0, 0, args[0]]; }; convert.gray.hsv = convert.gray.hsl; convert.gray.hwb = function(gray) { return [0, 100, gray[0]]; }; convert.gray.cmyk = function(gray) { return [0, 0, 0, gray[0]]; }; convert.gray.lab = function(gray) { return [gray[0], 0, 0]; }; convert.gray.hex = function(gray) { const val = Math.round(gray[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/color-convert/route.js var require_route = __commonJS((exports, module) => { function buildGraph() { const graph = {}; const models = Object.keys(conversions); for (let len = models.length, i = 0;i < len; i++) { graph[models[i]] = { 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 link(from, to) { return function(args) { return to(from(args)); }; } function wrapConversion(toModel, graph) { const path = [graph[toModel].parent, toModel]; let fn = conversions[graph[toModel].parent][toModel]; let cur = graph[toModel].parent; while (graph[cur].parent) { path.unshift(graph[cur].parent); fn = link(conversions[graph[cur].parent][cur], fn); cur = graph[cur].parent; } fn.conversion = path; return fn; } var conversions = require_conversions(); module.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/color-convert/index.js var require_color_convert = __commonJS((exports, module) => { function wrapRaw(fn) { const wrappedFn = function(...args) { const arg0 = args[0]; if (arg0 === undefined || arg0 === null) { return arg0; } if (arg0.length > 1) { args = arg0; } return fn(args); }; if ("conversion" in fn) { wrappedFn.conversion = fn.conversion; } return wrappedFn; } function wrapRounded(fn) { const wrappedFn = function(...args) { const arg0 = args[0]; if (arg0 === undefined || arg0 === null) { return arg0; } if (arg0.length > 1) { args = arg0; } const result = fn(args); 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 fn) { wrappedFn.conversion = fn.conversion; } return wrappedFn; } var conversions = require_conversions(); var route = require_route(); var convert = {}; var models = Object.keys(conversions); models.forEach((fromModel) => { convert[fromModel] = {}; Object.defineProperty(convert[fromModel], "channels", { value: conversions[fromModel].channels }); Object.defineProperty(convert[fromModel], "labels", { value: conversions[fromModel].labels }); const routes = route(fromModel); const routeModels = Object.keys(routes); routeModels.forEach((toModel) => { const fn = routes[toModel]; convert[fromModel][toModel] = wrapRounded(fn); convert[fromModel][toModel].raw = wrapRaw(fn); }); }); module.exports = convert; }); // node_modules/ansi-styles/index.js var require_ansi_styles = __commonJS((exports, module) => { function assembleStyles() { const codes = new Map; const styles = { modifier: { reset: [0, 0], 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], 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], 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; } var wrapAnsi16 = (fn, offset) => (...args) => { const code = fn(...args); return `\x1B[${code + offset}m`; }; var wrapAnsi256 = (fn, offset) => (...args) => { const code = fn(...args); return `\x1B[${38 + offset};5;${code}m`; }; var wrapAnsi16m = (fn, offset) => (...args) => { const rgb = fn(...args); 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 === undefined) { 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; }; Object.defineProperty(module, "exports", { enumerable: true, get: assembleStyles }); }); // node_modules/chalk/source/util.js var require_util2 = __commonJS((exports, module) => { 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; }; module.exports = { stringReplaceAll, stringEncaseCRLFWithFirstIndex }; }); // node_modules/chalk/source/templates.js var require_templates = __commonJS((exports, module) => { 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 parseArguments(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, escape, character) => escape ? unescape2(escape) : 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 args = parseArguments(name, matches[2]); results.push([name].concat(args)); } else { results.push([name]); } } return results; } function buildStyle(chalk, 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 = chalk; 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; } 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 = new Map([ ["n", "\n"], ["r", "\r"], ["t", "\t"], ["b", "\b"], ["f", "\f"], ["v", "\v"], ["0", "\0"], ["\\", "\\"], ["e", "\x1B"], ["a", "\x07"] ]); module.exports = (chalk, temporary) => { const styles = []; const chunks = []; let chunk = []; temporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => { if (escapeCharacter) { chunk.push(unescape2(escapeCharacter)); } else if (style) { const string = chunk.join(""); chunk = []; chunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string)); styles.push({ inverse, styles: parseStyle(style) }); } else if (close) { if (styles.length === 0) { throw new Error("Found extraneous } in Chalk template literal"); } chunks.push(buildStyle(chalk, 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/chalk/source/index.js var require_source = __commonJS((exports, module) => { function Chalk(options) { return chalkFactory(options); } 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 = 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 === undefined ? colorLevel : options.level; }; class ChalkClass { constructor(options) { return chalkFactory(options); } } var chalkFactory = (options) => { const chalk2 = {}; applyOptions(chalk2, options); chalk2.template = (...arguments_) => chalkTag(chalk2.template, ...arguments_); Object.setPrototypeOf(chalk2, Chalk.prototype); Object.setPrototypeOf(chalk2.template, chalk2); chalk2.template.constructor = () => { throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead."); }; chalk2.template.Instance = ChalkClass; return chalk2.template; }; 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 = (open, close, parent) => { let openAll; let closeAll; if (parent === undefined) { openAll = open; closeAll = close; } else { openAll = parent.openAll + open; closeAll = close + parent.closeAll; } return { open, close, 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 === undefined) { return string; } const { openAll, closeAll } = styler; if (string.indexOf("\x1B") !== -1) { while (styler !== undefined) { 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 = (chalk2, ...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 === undefined) { template = require_templates(); } return template(chalk2, parts.join("")); }; Object.defineProperties(Chalk.prototype, styles); var chalk = Chalk(); chalk.supportsColor = stdoutColor; chalk.stderr = Chalk({ level: stderrColor ? stderrColor.level : 0 }); chalk.stderr.supportsColor = stderrColor; module.exports = chalk; }); // node_modules/find-process/dist/cjs/utils.js var require_utils2 = __commonJS((exports) => { function debugLog(debug, cmd, stdout, stderr) { if (!debug) return; const text = `[debug] Command: ${cmd}\n` + `[debug] stdout:\n${stdout.trim() || "(empty)"}\n` + `[debug] stderr:\n${stderr.trim() || "(empty)"}\n\n`; process.stderr.write(chalk_1.default.gray(text)); } var __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.debugLog = debugLog; var child_process_1 = import.meta.require("child_process"); var chalk_1 = __importDefault(require_source()); var UNIT_MB = 1024 * 1024; var utils = { exec(cmd, callback) { const options = { maxBuffer: 2 * UNIT_MB, windowsHide: true, encoding: "utf8" }; (0, child_process_1.exec)(cmd, options, callback); }, spawn(cmd, args, options) { return (0, child_process_1.spawn)(cmd, args, options); }, stripLine(text, num) { let idx = 0; while (num-- > 0) { const nIdx = text.indexOf("\n", idx); if (nIdx >= 0) { idx = nIdx + 1; } } return idx > 0 ? text.substring(idx) : text; }, split(line, max) { const cols = line.trim().split(/\s+/); if (cols.length > max) { cols[max - 1] = cols.slice(max - 1).join(" "); } return cols; }, extractColumns(text, idxes, max) { const lines = text.split(/(\r\n|\n|\r)/); const columns = []; if (!max) { max = Math.max.apply(null, idxes) + 1; } lines.forEach((line) => { const cols = utils.split(line, max); const column = []; idxes.forEach((idx) => { column.push(cols[idx] || ""); }); columns.push(column); }); return columns; }, parseTable(data) { const lines = data.split(/(\r\n\r\n|\r\n\n|\n\r\n|\n\n)/).filter((line) => { return line && line.trim().length > 0; }).map((e) => e.split(/(\r\n|\n|\r)/).filter((line) => line.trim().length > 0)); lines.forEach((line) => { for (let index = 0;line[index]; ) { const entry = line[index]; if (entry.startsWith(" ")) { line[index - 1] += entry.trimLeft(); line.splice(index, 1); } else { index += 1; } } }); return lines.map((line) => { const row = {}; line.forEach((string) => { const splitterIndex = string.indexOf(":"); const key = string.slice(0, splitterIndex).trim(); row[key] = string.slice(splitterIndex + 1).trim(); }); return row; }); } }; exports.default = utils; }); // node_modules/find-process/dist/cjs/find_pid.js var require_find_pid = __commonJS((exports) => { function findPidByPort(port, config = {}) { const platform = process.platform; return new Promise((resolve, reject) => { if (!(platform in finders)) { return reject(new Error(`platform ${platform} is unsupported`)); } const finder = finders[platform]; finder(port, config).then(resolve, reject); }); } var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === undefined) 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 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function(o, v) { o["default"] = v; }); var __importStar = exports && exports.__importStar || function() { var 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); }; return function(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; }; }(); var __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var fs = __importStar(import.meta.require("fs")); var os = __importStar(import.meta.require("os")); var logger_1 = __importDefault(require_logger()); var utils_1 = __importStar(require_utils2()); var ensureDir = (path) => new Promise((resolve, reject) => { if (fs.existsSync(path)) { resolve(); } else { fs.mkdir(path, (err) => { err ? reject(err) : resolve(); }); } }); var finders = { darwin(port, config) { return new Promise((resolve, reject) => { const cmd = "netstat -anv -p TCP && netstat -anv -p UDP"; utils_1.default.exec(cmd, function(err, stdout, stderr) { (0, utils_1.debugLog)(!!config.debug, cmd, stdout || "", stderr || ""); if (err) { reject(err); } else { const stderrStr = stderr.toString().trim(); if (stderrStr) { reject(new Error(stderrStr)); return; } const table = utils_1.default.stripLine(stdout.toString(), 1); const headers = table.slice(0, table.indexOf("\n")); const body = utils_1.default.stripLine(table, 1); const pidColumn = headers.indexOf("rxbytes") >= 0 ? 10 : 8; const found = utils_1.default.extractColumns(body, [0, 3, pidColumn], 10).filter((row) => { return !!String(row[0]).match(/^(udp|tcp)/); }).find((row) => { const matches = String(row[1]).match(/\.(\d+)$/); if (matches && matches[1] === String(port)) { return true; } return false; }); if (found && found[2].length) { const pidCell = String(found[2]); const pidMatch = pidCell.match(/:(\d+)$/); const pid = pidMatch ? parseInt(pidMatch[1], 10) : parseInt(pidCell, 10); if (!isNaN(pid)) { resolve(pid); } } reject(new Error(`pid of port (${port}) not found`)); } }); }); }, linux(port, config) { return new Promise((resolve, reject) => { const cmd = "netstat -tunlp"; utils_1.default.exec(cmd, function(err, stdout, stderr) { (0, utils_1.debugLog)(!!config.debug, cmd, stdout || "", stderr || ""); if (err) { reject(err); } else { const warn = stderr.toString().trim(); if (warn) { logger_1.default.warn(warn); } const data = utils_1.default.stripLine(stdout.toString(), 2); const columns = utils_1.default.extractColumns(data, [3, 6], 7).find((column) => { const matches = String(column[0]).match(/:(\d+)$/); if (matches && matches[1] === String(port)) { return true; } return false; }); if (columns && columns[1]) { const pid = columns[1].split("/", 1)[0]; if (pid.length) { resolve(parseInt(pid, 10)); } else { reject(new Error(`pid of port (${port}) not found`)); } } else { reject(new Error(`pid of port (${port}) not found`)); } } }); }); }, win32(port, config) { return new Promise((resolve, reject) => { const cmd = "netstat -ano"; utils_1.default.exec(cmd, function(err, stdout, stderr) { (0, utils_1.debugLog)(!!config.debug, cmd, stdout || "", stderr || ""); if (err) { reject(err); } else { const stderrStr = stderr.toString().trim(); if (stderrStr) { reject(new Error(stderrStr)); return; } const data = utils_1.default.stripLine(stdout.toString(), 4); const columns = utils_1.default.extractColumns(data, [1, 4], 5).find((column) => { const matches = String(column[0]).match(/:(\d+)$/); if (matches && matches[1] === String(port)) { return true; } return false; }); if (columns && columns[1].length && parseInt(columns[1], 10) > 0) { resolve(parseInt(columns[1], 10)); } else { reject(new Error(`pid of port (${port}) not found`)); } } }); }); }, android(port, config) { return new Promise((resolve, reject) => { const dir = os.tmpdir() + "/.find-process"; const file = dir + "/" + process.pid; const cmd = 'netstat -tunp >> "' + file + '"'; ensureDir(dir).then(() => { utils_1.default.exec(cmd, (_execErr, execStdout, execStderr) => { (0, utils_1.debugLog)(!!config.debug, cmd, execStdout || "", execStderr || ""); fs.readFile(file, "utf8", (err, data) => { fs.unlink(file, () => { }); if (err) { reject(err); } else { data = utils_1.default.stripLine(data, 2); const columns = utils_1.default.extractColumns(data, [3, 6], 7).find((column) => { const matches = String(column[0]).match(/:(\d+)$/); if (matches && matches[1] === String(port)) { return true; } return false; }); if (columns && columns[1]) { const pid = columns[1].split("/", 1)[0]; if (pid.length) { resolve(parseInt(pid, 10)); } else { reject(new Error(`pid of port (${port}) not found`)); } } else { reject(new Error(`pid of port (${port}) not found`)); } } }); }); }); }); } }; finders.freebsd = finders.darwin; finders.sunos = finders.darwin; exports.default = findPidByPort; }); // node_modules/find-process/dist/cjs/find_process.js var require_find_process = __commonJS((exports) => { function matchName(text, name) { if (!name) { return true; } if (text && text.match) { return text.match(name) !== null; } return false; } function fetchBin(cmd) { const pieces = cmd.split(path.sep); const last = pieces[pieces.length - 1]; if (last) { pieces[pieces.length - 1] = last.split(" ")[0]; } const fixed = []; for (const part of pieces) { const optIdx = part.indexOf(" -"); if (optIdx >= 0) { fixed.push(part.substring(0, optIdx).trim()); break; } else if (part.endsWith(" ")) { fixed.push(part.trim()); break; } fixed.push(part); } return fixed.join(path.sep); } function fetchName(fullpath) { if (process.platform === "darwin") { const idx = fullpath.indexOf(".app/"); if (idx >= 0) { return path.basename(fullpath.substring(0, idx)); } } return path.basename(fullpath); } function findProcess(cond) { const platform = process.platform; const finder = finders[platform]; if (!finder) { return Promise.reject(new Error(`Platform "${platform}" is not supported`)); } return finder(cond); } var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === undefined) 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 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function(o, v) { o["default"] = v; }); var __importStar = exports && exports.__importStar || function() { var 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); }; return function(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; }; }(); Object.defineProperty(exports, "__esModule", { value: true }); var path = __importStar(import.meta.require("path")); var utils_1 = __importStar(require_utils2()); var finders = { darwin(cond) { return new Promise((resolve, reject) => { let cmd; if ("pid" in cond && cond.pid !== undefined) { cmd = `ps -p ${cond.pid} -ww -o pid,ppid,uid,gid,args`; } else { cmd = "ps ax -ww -o pid,ppid,uid,gid,args"; } if (cond.config.verbose) { console.info("Query command: " + cmd); } utils_1.default.exec(cmd, function(err, stdout, stderr) { (0, utils_1.debugLog)(!!cond.config.debug, cmd, stdout || "", stderr || ""); if (err) { if ("pid" in cond && cond.pid !== undefined) { resolve([]); } else { reject(err); } } else { const stderrStr = stderr.toString().trim(); if (stderrStr) { reject(new Error(stderrStr)); return; } const data = utils_1.default.stripLine(stdout.toString(), 1); const columns = utils_1.default.extractColumns(data, [0, 1, 2, 3, 4], 5).filter((column) => { if (column[0] && cond.pid !== undefined) { return column[0] === String(cond.pid); } else if (column[4] && cond.name) { return matchName(column[4], cond.name); } else { return !!column[0]; } }); let list = columns.map((column) => { const cmd2 = String(column[4]); const bin = fetchBin(cmd2); return { pid: parseInt(column[0], 10), ppid: parseInt(column[1], 10), uid: parseInt(column[2], 10), gid: parseInt(column[3], 10), name: fetchName(bin), bin, cmd: column[4] }; }); if (cond.config.strict && cond.name) { list = list.filter((item) => item.name === cond.name); } resolve(list); } }); }); }, win32(cond) { return new Promise((resolve, reject) => { const cmd = "[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; Get-CimInstance -className win32_process | select Name,ProcessId,ParentProcessId,CommandLine,ExecutablePath"; const lines = []; if (cond.config.verbose) { console.info("Query command: " + cmd); } const proc = utils_1.default.spawn("powershell.exe", ["/c", cmd], { detached: false, windowsHide: true }); proc.stdout.on("data", (data) => { lines.push(data.toString()); }); proc.on("error", (err) => { reject(new Error("Command \'" + cmd + "\' failed with reason: " + err.toString())); }); proc.on("close", (code) => { (0, utils_1.debugLog)(!!cond.config.debug, cmd, lines.join(""), ""); if (code !== 0) { return reject(new Error("Command \'" + cmd + "\' terminated with code: " + code)); } const list = utils_1.default.parseTable(lines.join("")).filter((row) => { if (cond.pid !== undefined) { return row.ProcessId === String(cond.pid); } else if (cond.name) { const rowName = row.Name || ""; if (cond.config.strict) { return rowName === cond.name || rowName.endsWith(".exe") && rowName.slice(0, -4) === cond.name; } else { return matchName(row.CommandLine || rowName, cond.name); } } else { return true; } }).map((row) => ({ pid: parseInt(row.ProcessId, 10), ppid: parseInt(row.ParentProcessId, 10), bin: row.ExecutablePath, name: row.Name || "", cmd: row.CommandLine })); resolve(list); }); }); }, android(cond) { return new Promise((resolve, reject) => { const cmd = "ps"; if (cond.config.verbose) { console.info("Query command: " + cmd); } utils_1.default.exec(cmd, function(err, stdout, stderr) { (0, utils_1.debugLog)(!!cond.config.debug, cmd, stdout || "", stderr || ""); if (err) { if (cond.pid !== undefined) { resolve([]); } else { reject(err); } } else { const stderrStr = stderr.toString().trim(); if (stderrStr) { reject(new Error(stderrStr)); return; } const data = utils_1.default.stripLine(stdout.toString(), 1); const columns = utils_1.default.extractColumns(data, [0, 3], 4).filter((column) => { if (column[0] && cond.pid !== undefined) { return column[0] === String(cond.pid); } else if (column[1] && cond.name) { return matchName(column[1], cond.name); } else { return !!column[0]; } }); let list = columns.map((column) => { const cmd2 = String(column[1]); const bin = fetchBin(cmd2); return { pid: parseInt(column[0], 10), ppid: 0, name: fetchName(bin), bin, cmd: column[1] }; }); if (cond.config.strict && cond.name) { list = list.filter((item) => item.name === cond.name); } resolve(list); } }); }); } }; finders.linux = finders.darwin; finders.sunos = finders.darwin; finders.freebsd = finders.darwin; exports.default = findProcess; }); // node_modules/find-process/dist/cjs/find.js var require_find = __commonJS((exports) => { function find(by, value, options) { const config = Object.assign({ logLevel: "warn", strict: typeof options === "boolean" ? options : false }, typeof options === "object" ? options : {}); if (by !== "name" || typeof value !== "string") { config.strict = false; } if (config.logLevel) { logger_1.default.setLevel(config.logLevel); } return new Promise((resolve, reject) => { if (!(by in findBy)) { reject(new Error(`do not support find by "${by}"`)); } else { const isNumber = /^\d+$/.test(String(value)); if (by === "pid" && !isNumber) { reject(new Error("pid must be a number")); } else if (by === "port" && !isNumber) { reject(new Error("port must be a number")); } else { findBy[by](value, config).then(resolve, reject); } } }); } var __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var find_pid_1 = __importDefault(require_find_pid()); var find_process_1 = __importDefault(require_find_process()); var logger_1 = __importDefault(require_logger()); var findBy = { port(port, config) { return (0, find_pid_1.default)(port, config).then((pid) => { return findBy.pid(pid, config); }, () => { return []; }); }, pid(pid, config) { return (0, find_process_1.default)({ pid, config }); }, name(name, config) { return (0, find_process_1.default)({ name, config }); } }; exports.default = find; }); // node_modules/find-process/dist/cjs/types.js var require_types = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); }); // node_modules/find-process/dist/cjs/index.js var require_cjs6 = __commonJS((exports) => { var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === undefined) 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 === undefined) k2 = k; o[k2] = m[k]; }); var __exportStar = exports && exports.__exportStar || function(m, exports2) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p); }; var __importDefault = exports && exports.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = undefined; var find_1 = require_find(); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return __importDefault(find_1).default; } }); __exportStar(require_types(), exports); }); // node_modules/tree-kill/index.js var require_tree_kill = __commonJS((exports, module) => { 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(code) { delete pidsToProcess[parentPid]; if (code != 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); } var childProcess = import.meta.require("child_process"); var spawn = childProcess.spawn; var exec = childProcess.exec; module.exports = function(pid, signal, callback) { if (typeof signal === "function" && callback === undefined) { callback = signal; signal = undefined; } 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": exec("taskkill /pid " + pid + " /T /F", callback); break; case "darwin": buildProcessTree(pid, tree, pidsToProcess, function(parentPid) { return spawn("pgrep", ["-P", parentPid]); }, function() { killAll(tree, signal, callback); }); break; default: buildProcessTree(pid, tree, pidsToProcess, function(parentPid) { return spawn("ps", ["-o", "pid", "--no-headers", "--ppid", parentPid]); }, function() { killAll(tree, signal, callback); }); break; } }; }); // node_modules/discord.js-selfbot-v13/src/client/voice/util/Function.js var require_Function = __commonJS((exports, module) => { function interfaceAddress(type, interfaceAddresses) { return interfaceAddresses ? interfaceAddresses[type] : undefined; } async function randomPort(protocol = "udp4", interfaceAddresses) { const socket = dgram.createSocket(protocol); setImmediate2(() => socket.bind({ port: 0, address: interfaceAddress(protocol, interfaceAddresses) })); await new Promise((resolve, reject) => { socket.once("error", reject); socket.once("listening", resolve); }); const port = socket.address()?.port; await new Promise((resolve) => socket.close(resolve)); return port; } async function randomPorts(num, protocol = "udp4", interfaceAddresses) { return Promise.all(Array.from({ length: num }).map(() => randomPort(protocol, interfaceAddresses))); } async function findPort(min, max, protocol = "udp4", interfaceAddresses) { let port; for (let i = min;i <= max; i++) { const socket = dgram.createSocket(protocol); setImmediate2(() => socket.bind({ port: i, address: interfaceAddress(protocol, interfaceAddresses) })); const error = await new Promise((resolve) => { socket.once("error", resolve); socket.once("listening", () => resolve(null)); }); await new Promise((resolve) => socket.close(resolve)); if (error) continue; const addressInfo = socket.address(); if (addressInfo && addressInfo.port >= min && addressInfo.port <= max) { port = addressInfo.port; break; } } if (!port) throw new Error("port not found"); return port; } function parseStreamKey(key) { const Arr = key.split(":"); const type = Arr[0]; const guildId = type == "guild" ? Arr[1] : null; const channelId = type == "guild" ? Arr[2] : Arr[1]; const userId = type == "guild" ? Arr[3] : Arr[2]; return { type, guildId, channelId, userId }; } var dgram = import.meta.require("dgram"); var { setImmediate: setImmediate2 } = import.meta.require("timers"); module.exports = { randomPort, randomPorts, findPort, interfaceAddress, parseStreamKey }; }); // node_modules/discord.js-selfbot-v13/src/client/voice/util/Socket.js var require_Socket = __commonJS((exports, module) => { function StreamInput(stream) { return new UnixStream(stream, (socket) => stream.pipe(socket)); } function StreamOutput(stream) { return new UnixStream(stream, (socket) => socket.pipe(stream)); } var fs = import.meta.require("fs"); var net = import.meta.require("net"); var path = import.meta.require("path"); var process2 = import.meta.require("process"); var counter = 0; class UnixStream { constructor(stream, onSocket) { if (process2.platform === "win32") { const pipePrefix = "\\\\.\\pipe\\"; const pipeName = `node-webrtc.${++counter}.sock`; this.socketPath = path.join(pipePrefix, pipeName); this.url = this.socketPath; } else { this.socketPath = `./${++counter}.sock`; this.url = `unix:${this.socketPath}`; } try { fs.statSync(this.socketPath); fs.unlinkSync(this.socketPath); } catch (err) { } const server = net.createServer(onSocket); stream.on("finish", () => { server.close(); }); server.listen(this.socketPath); } } module.exports = { StreamOutput, StreamInput, UnixStream }; }); // node_modules/discord.js-selfbot-v13/src/client/voice/receiver/Recorder.js var require_Recorder = __commonJS((exports, module) => { var { spawn } = import.meta.require("child_process"); var { createSocket } = import.meta.require("dgram"); var { EventEmitter } = import.meta.require("events"); var { Buffer: Buffer2 } = import.meta.require("buffer"); var { Writable } = import.meta.require("stream"); var find = require_cjs6(); var kill = require_tree_kill(); var { RtpPacket } = require_src4(); var Util = require_Util(); var { randomPorts } = require_Function(); var { StreamOutput } = require_Socket(); class Recorder extends EventEmitter { constructor(receiver, { userId, portUdpH264, portUdpOpus, output } = {}) { super(); Object.defineProperty(this, "receiver", { value: receiver }); this.userId = userId; this.portUdpH264 = portUdpH264; this.portUdpH265 = null; this.portUdpOpus = portUdpOpus; this.promise = null; if (!portUdpH264 || !portUdpOpus) { this.promise = randomPorts(6, "udp4").then((ports) => { ports = ports.filter((port) => port % 2 === 0); this.portUdpH264 ??= ports[0]; this.portUdpOpus ??= ports[1]; }); } this.output = output; this.ready = false; this.socket = createSocket("udp4"); this.init(output); } async init(output) { await this.promise; const sdpData = Util.getSDPCodecName(this.portUdpH264, this.portUdpH265, this.portUdpOpus); const isStream = output instanceof Writable; if (isStream) { this.outputStream = StreamOutput(output); } const stream = spawn("ffmpeg", [ "-reorder_queue_size", "500", "-thread_queue_size", "500", "-err_detect", "ignore_err", "-flags2", "+export_mvs", "-fflags", "+genpts+discardcorrupt", "-use_wallclock_as_timestamps", "1", "-f", "sdp", "-analyzeduration", "1M", "-probesize", "1M", "-protocol_whitelist", "file,udp,rtp,pipe,fd", "-i", "-", "-buffer_size", "4M", "-max_delay", "500000", "-rtbufsize", "4M", "-c", "copy", "-y", "-f", "matroska", isStream ? this.outputStream.url : output ]); this.stream = stream; this.stream.stdin.write(sdpData); this.stream.stdin.end(); this.stream.stderr.once("data", (data) => { this.emit("debug", `stderr: ${data}`); this.ready = true; this.emit("ready"); }); } feed(payload, callback = (e) => { if (e) { console.error("Error sending packet:", e); } }) { if (!(payload instanceof RtpPacket)) { payload = RtpPacket.deSerialize(Buffer2.isBuffer(payload) ? payload : Buffer2.from(payload)); } const message = payload.serialize(); let port; if (payload.header.payloadType === Util.getPayloadType("opus")) { port = this.portUdpOpus; } else if (payload.header.payloadType === Util.getPayloadType("H264")) { port = this.portUdpH264; } else if (payload.header.payloadType === Util.getPayloadType("H265")) { port = this.portUdpH265; } else { return; } this.socket.send(message, 0, message.length, port, "127.0.0.1", callback); } destroy() { const ffmpegPid = this.stream.pid; const args = this.stream.spawnargs.slice(1).join(" "); find("name", "ffmpeg", true).then((list) => { let process2 = list.find((o) => o.pid === ffmpegPid || o.ppid === ffmpegPid || o.cmd.includes(args)); if (process2) { kill(process2.pid); this.receiver?.videoStreams?.delete(this.userId); this.emit("closed"); } }); } } module.exports = Recorder; }); // node_modules/discord.js-selfbot-v13/src/util/Speaking.js var require_Speaking = __commonJS((exports, module) => { var BitField = require_BitField(); class Speaking extends BitField { } Speaking.FLAGS = { SPEAKING: 1 << 0, SOUNDSHARE: 1 << 1, PRIORITY_SPEAKING: 1 << 2 }; module.exports = Speaking; }); // node_modules/discord.js-selfbot-v13/src/client/voice/receiver/PacketHandler.js var require_PacketHandler = __commonJS((exports, module) => { var EventEmitter = import.meta.require("events"); var { Buffer: Buffer2 } = import.meta.require("buffer"); var crypto = import.meta.require("crypto"); var { setTimeout: setTimeout2 } = import.meta.require("timers"); var { RtpPacket } = require_src4(); var Recorder = require_Recorder(); var Speaking = require_Speaking(); var Util = require_Util(); var secretbox = require_Secretbox(); var { SILENCE_FRAME } = require_Silence(); var DISCORD_SPEAKING_DELAY = 250; var UNPADDED_NONCE_LENGTH = 4; var AUTH_TAG_LENGTH = 16; class Readable extends import.meta.require("stream").Readable { _read() { } } class PacketHandler extends EventEmitter { constructor(receiver) { super(); this.receiver = receiver; this.streams = new Map; this.videoStreams = new Map; this.speakingTimeouts = new Map; } getNonceBuffer() { return this.receiver.connection.authentication.mode === "aead_aes256_gcm_rtpsize" ? Buffer2.alloc(12) : Buffer2.alloc(24); } get connection() { return this.receiver.connection; } _stoppedSpeaking(userId) { const streamInfo = this.streams.get(userId); if (streamInfo && streamInfo.end === "silence") { this.streams.delete(userId); streamInfo.stream.push(null); } } makeStream(user, end) { if (this.streams.has(user)) return this.streams.get(user).stream; const stream = new Readable; stream.on("end", () => this.streams.delete(user)); this.streams.set(user, { stream, end }); return stream; } makeVideoStream(user, output) { if (this.videoStreams.has(user)) return this.videoStreams.get(user); const stream = new Recorder(this, { userId: user, output, portUdpH264: 65506, portUdpOpus: 65510 }); stream.on("ready", () => { this.videoStreams.set(user, stream); }); return stream; } parseBuffer(buffer) { const { secret_key, mode } = this.receiver.connection.authentication; if (!secret_key) return new Error("secret_key cannot be null or undefined"); const nonce = this.getNonceBuffer(); buffer.copy(nonce, 0, buffer.length - UNPADDED_NONCE_LENGTH); let headerSize = 12; const first = buffer.readUint8(); if (first >> 4 & 1) headerSize += 4; const header = buffer.slice(0, headerSize); const encrypted = buffer.slice(headerSize, buffer.length - AUTH_TAG_LENGTH - UNPADDED_NONCE_LENGTH); const authTag = buffer.slice(buffer.length - AUTH_TAG_LENGTH - UNPADDED_NONCE_LENGTH, buffer.length - UNPADDED_NONCE_LENGTH); let packet; switch (mode) { case "aead_aes256_gcm_rtpsize": { const decipheriv = crypto.createDecipheriv("aes-256-gcm", secret_key, nonce); decipheriv.setAAD(header); decipheriv.setAuthTag(authTag); packet = Buffer2.concat([decipheriv.update(encrypted), decipheriv.final()]); break; } case "aead_xchacha20_poly1305_rtpsize": { packet = secretbox.methods.crypto_aead_xchacha20poly1305_ietf_decrypt(Buffer2.concat([encrypted, authTag]), header, nonce, secret_key); packet = Buffer2.from(packet); break; } default: { return new RangeError(`Unsupported decryption method: ${mode}`); } } return RtpPacket.deSerialize(Buffer2.concat([header, packet])); } audioReceiver(ssrc, userStat, opusPacket) { const streamInfo = this.streams.get(userStat.userId); if (userStat.hasVideo) { if (opusPacket instanceof Error) { if (streamInfo) { this.emit("error", opusPacket); } return; } if (opusPacket.header.payloadType !== Util.getPayloadType("opus")) { return; } if (!opusPacket.payload) { return; } if (SILENCE_FRAME.equals(opusPacket.payload)) { return; } } let speakingTimeout = this.speakingTimeouts.get(ssrc); if (typeof speakingTimeout === "undefined") { if (userStat.speaking === 0) { userStat.speaking = Speaking.FLAGS.SPEAKING; } this.connection.onSpeaking({ user_id: userStat.userId, ssrc, speaking: userStat.speaking }); speakingTimeout = setTimeout2(() => { try { this.connection.onSpeaking({ user_id: userStat.userId, ssrc, speaking: 0 }); clearTimeout(speakingTimeout); this.speakingTimeouts.delete(ssrc); } catch { } }, DISCORD_SPEAKING_DELAY).unref(); this.speakingTimeouts.set(ssrc, speakingTimeout); } else { speakingTimeout.refresh(); } if (streamInfo) { const { stream } = streamInfo; if (opusPacket instanceof Error) { this.emit("error", opusPacket); return; } if (opusPacket.header.payloadType !== Util.getPayloadType("opus")) { return; } stream.push(opusPacket.payload); } } audioReceiverForStream(ssrc, userStat, packet) { const streamInfo = this.videoStreams.get(userStat.userId); if (!streamInfo) return; if (packet instanceof Error) { return; } if (packet.header.payloadType !== Util.getPayloadType("opus")) { return; } streamInfo.feed(packet); } videoReceiver(ssrc, userStat, packet) { const streamInfo = this.videoStreams.get(userStat.userId); if (userStat.hasVideo) { if (packet instanceof Error) { return; } if (packet.header.payloadType === Util.getPayloadType("opus")) { return; } if (streamInfo) { streamInfo.feed(packet); } } } push(buffer) { const ssrc = buffer.readUInt32BE(8); let userStat, packet; if (this.connection.ssrcMap.has(ssrc)) { userStat = this.connection.ssrcMap.get(ssrc); packet = this.parseBuffer(buffer); this.audioReceiver(ssrc, userStat, packet); this.audioReceiverForStream(ssrc, userStat, packet); } else if (this.connection.ssrcMap.has(ssrc - 1)) { userStat = this.connection.ssrcMap.get(ssrc - 1); packet = this.parseBuffer(buffer); this.videoReceiver(ssrc, userStat, packet); } if (userStat && !(packet instanceof Error)) this.receiver.emit("receiverData", userStat, packet); } destroyAllStream() { for (const stream of this.streams.values()) { stream.stream.destroy(); } this.streams.clear(); for (const stream of this.videoStreams.values()) { stream.destroy(); } this.videoStreams.clear(); } } module.exports = PacketHandler; }); // node_modules/discord.js-selfbot-v13/src/client/voice/player/processing/PCMInsertSilence.js var require_PCMInsertSilence = __commonJS((exports, module) => { var { Buffer: Buffer2 } = import.meta.require("buffer"); var { Transform } = import.meta.require("stream"); class PCMInsertSilence extends Transform { constructor(options) { super(options); this.sampleRate = 48000; this.channels = 2; this.bytesPerFrame = this.channels * 2; this.lastChunkTime = Date.now(); this.silenceThresholdMs = 50; } _transform(chunk, encoding, callback) { const now = Date.now(); const gap = now - this.lastChunkTime; if (gap >= this.silenceThresholdMs) { const missingFrames = Math.floor(gap / 1000 * this.sampleRate); const silenceBuffer = Buffer2.alloc(missingFrames * this.bytesPerFrame, 0); this.push(silenceBuffer); } this.lastChunkTime = now; this.push(chunk); callback(); } } module.exports = { PCMInsertSilence }; }); // node_modules/discord.js-selfbot-v13/src/client/voice/receiver/Receiver.js var require_Receiver = __commonJS((exports, module) => { var EventEmitter = import.meta.require("events"); var prism = require_src(); var PacketHandler = require_PacketHandler(); var { Error: Error2 } = require_errors(); var { PCMInsertSilence } = require_PCMInsertSilence(); class VoiceReceiver extends EventEmitter { constructor(connection) { super(); this.connection = connection; this.packets = new PacketHandler(this); this.packets.on("error", (err) => this.emit("debug", err)); } createStream(user, { mode = "opus", end = "silence", paddingSilence = false } = {}) { user = this.connection.client.users.resolve(user); if (end === "silence") paddingSilence = false; if (!user) throw new Error2("VOICE_USER_MISSING"); const stream = this.packets.makeStream(user.id, end); if (paddingSilence) { const decoder = new prism.opus.Decoder({ channels: 2, rate: 48000, frameSize: 960 }); const pcmTransformer = new PCMInsertSilence; stream.pipe(decoder).pipe(pcmTransformer); if (mode === "opus") { const encoder = new prism.opus.Encoder({ channels: 2, rate: 48000, frameSize: 960 }); pcmTransformer.pipe(encoder); return encoder; } return pcmTransformer; } else { if (mode === "pcm") { const decoder = new prism.opus.Decoder({ channels: 2, rate: 48000, frameSize: 960 }); stream.pipe(decoder); return decoder; } return stream; } } createVideoStream(user, output) { user = this.connection.client.users.resolve(user); if (!user) throw new Error2("VOICE_USER_MISSING"); const stream = this.packets.makeVideoStream(user.id, output); return stream; } } module.exports = VoiceReceiver; }); // node_modules/discord.js-selfbot-v13/src/client/voice/util/PlayInterface.js var require_PlayInterface = __commonJS((exports, module) => { var { Readable } = import.meta.require("stream"); var prism = require_src(); var { Error: Error2 } = require_errors(); class PlayInterface { constructor(player) { this.player = player; } playAudio(resource, options = {}) { if (resource instanceof Readable || typeof resource === "string") { const type = options.type || "unknown"; if (type === "unknown") { return this.player.playUnknown(resource, options); } else if (type === "converted") { return this.player.playPCMStream(resource, options); } else if (type === "opus") { return this.player.playOpusStream(resource, options); } else if (type === "ogg/opus") { if (!(resource instanceof Readable)) throw new Error2("VOICE_PRISM_DEMUXERS_NEED_STREAM"); return this.player.playOpusStream(resource.pipe(new prism.opus.OggDemuxer), options); } else if (type === "webm/opus") { if (!(resource instanceof Readable)) throw new Error2("VOICE_PRISM_DEMUXERS_NEED_STREAM"); return this.player.playOpusStream(resource.pipe(new prism.opus.WebmDemuxer), options); } } throw new Error2("VOICE_PLAY_INTERFACE_BAD_TYPE"); } playVideo(resource, options = {}) { if (resource instanceof Readable || typeof resource === "string") { return this.player.playUnknownVideo(resource, options); } throw new Error2("VOICE_PLAY_INTERFACE_BAD_TYPE"); } static applyToClass(structure) { for (const prop of ["playAudio", "playVideo"]) { Object.defineProperty(structure.prototype, prop, Object.getOwnPropertyDescriptor(PlayInterface.prototype, prop)); } } } module.exports = PlayInterface; }); // node_modules/discord.js-selfbot-v13/src/client/voice/VoiceConnection.js var require_VoiceConnection = __commonJS((exports, module) => { var EventEmitter = import.meta.require("events"); var { getCiphers } = import.meta.require("crypto"); var { setTimeout: setTimeout2 } = import.meta.require("timers"); var { Collection } = require_dist(); var VoiceUDP = require_VoiceUDPClient(); var VoiceWebSocket = require_VoiceWebSocket(); var MediaPlayer = require_MediaPlayer(); var VoiceReceiver = require_Receiver(); var { parseStreamKey } = require_Function(); var PlayInterface = require_PlayInterface(); var Silence = require_Silence(); var { Error: Error2 } = require_errors(); var { Opcodes, VoiceOpcodes, VoiceStatus, Events } = require_Constants(); var Speaking = require_Speaking(); var Util = require_Util(); class SingleSilence extends Silence { _read() { super._read(); this.push(null); } } var SUPPORTED_MODES = ["aead_xchacha20_poly1305_rtpsize"]; if (getCiphers().includes("aes-256-gcm")) { SUPPORTED_MODES.unshift("aead_aes256_gcm_rtpsize"); } var SUPPORTED_CODECS = ["VP8", "H264"]; class VoiceConnection extends EventEmitter { constructor(voiceManager, channel) { super(); this.voiceManager = voiceManager; this.channel = channel; this.status = VoiceStatus.AUTHENTICATING; this.speaking = new Speaking().freeze(); this.videoStatus = null; this.authentication = {}; this.player = new MediaPlayer(this, this.constructor.name === "StreamConnection"); this.player.on("debug", (m) => { this.emit("debug", `media player - ${m}`); }); this.player.on("error", (e) => { this.emit("warn", e); }); this.once("closing", () => this.player.destroy()); this.ssrcMap = new Map; this._speaking = new Map; this.sockets = {}; this.receiver = new VoiceReceiver(this); this.videoCodec = "H264"; this.streamConnection = null; this.streamWatchConnection = new Collection; } get client() { return this.voiceManager.client; } get dispatcher() { return this.player.dispatcher; } get videoDispatcher() { return this.player.videoDispatcher; } setSpeaking(value) { if (this.speaking.equals(value)) return; if (this.status !== VoiceStatus.CONNECTED) return; this.speaking = new Speaking(value).freeze(); this.sockets.ws.sendPacket({ op: VoiceOpcodes.SPEAKING, d: { speaking: this.speaking.bitfield, delay: 0, ssrc: this.authentication.ssrc } }).catch((e) => { this.emit("debug", e); }); } setVideoCodec(value) { if (!SUPPORTED_CODECS.includes(value)) throw new Error2("INVALID_VIDEO_CODEC", SUPPORTED_CODECS); this.videoCodec = value; return this; } setVideoStatus(value) { if (value === this.videoStatus) return; if (this.status !== VoiceStatus.CONNECTED) return; this.videoStatus = value; if (!value) { this.sockets.ws.sendPacket({ op: VoiceOpcodes.SOURCES, d: { audio_ssrc: this.authentication.ssrc, video_ssrc: 0, rtx_ssrc: 0, streams: [] } }).catch((e) => { this.emit("debug", e); }); } else { this.sockets.ws.sendPacket({ op: VoiceOpcodes.SOURCES, d: { audio_ssrc: this.authentication.ssrc, video_ssrc: this.authentication.ssrc + 1, rtx_ssrc: this.authentication.ssrc + 2, streams: [ { type: "video", rid: "100", ssrc: this.authentication.ssrc + 1, active: true, quality: 100, rtx_ssrc: this.authentication.ssrc + 2, max_bitrate: 8000000, max_framerate: 60, max_resolution: { type: "source", width: 0, height: 0 } } ] } }).catch((e) => { this.emit("debug", e); }); } } get voice() { return this.client.user.voice; } sendVoiceStateUpdate(options = {}) { options = Util.mergeDefault({ guild_id: this.channel.guild?.id || null, channel_id: this.channel.id, self_mute: this.voice ? this.voice.selfMute : false, self_deaf: this.voice ? this.voice.selfDeaf : false, self_video: this.voice ? this.voice.selfVideo : false, flags: 2 }, options); this.emit("debug", `Sending voice state update: ${JSON.stringify(options)}`); return this.channel.client.ws.broadcast({ op: Opcodes.VOICE_STATE_UPDATE, d: options }); } setTokenAndEndpoint(token, endpoint) { this.emit("debug", `Token "${token}" and endpoint "${endpoint}"`); if (!endpoint) { return; } if (!token) { this.authenticateFailed("VOICE_TOKEN_ABSENT"); return; } endpoint = endpoint.match(/([^:]*)/)[0]; this.emit("debug", `Endpoint resolved as ${endpoint}`); if (!endpoint) { this.authenticateFailed("VOICE_INVALID_ENDPOINT"); return; } if (this.status === VoiceStatus.AUTHENTICATING) { this.authentication.token = token; this.authentication.endpoint = endpoint; this.checkAuthenticated(); } else if (token !== this.authentication.token || endpoint !== this.authentication.endpoint) { this.reconnect(token, endpoint); } } setSessionId(sessionId) { this.emit("debug", `Setting sessionId ${sessionId} (stored as "${this.authentication.sessionId}")`); if (!sessionId) { this.authenticateFailed("VOICE_SESSION_ABSENT"); return; } if (this.status === VoiceStatus.AUTHENTICATING) { this.authentication.sessionId = sessionId; this.checkAuthenticated(); } else if (sessionId !== this.authentication.sessionId) { this.authentication.sessionId = sessionId; this.emit("newSession", sessionId); } } checkAuthenticated() { const { token, endpoint, sessionId } = this.authentication; this.emit("debug", `Authenticated with sessionId ${sessionId}`); if (token && endpoint && sessionId) { this.status = VoiceStatus.CONNECTING; this.emit("authenticated"); this.connect(); } } authenticateFailed(reason) { clearTimeout(this.connectTimeout); this.emit("debug", `Authenticate failed - ${reason}`); if (this.status === VoiceStatus.AUTHENTICATING) { this.emit("failed", new Error2(reason)); } else { this.emit("error", new Error2(reason)); } this.status = VoiceStatus.DISCONNECTED; } updateChannel(channel) { this.channel = channel; this.sendVoiceStateUpdate(); } authenticate(options = {}) { this.sendVoiceStateUpdate(options); this.connectTimeout = setTimeout2(() => this.authenticateFailed("VOICE_CONNECTION_TIMEOUT"), 15000).unref(); } reconnect(token, endpoint) { this.authentication.token = token; this.authentication.endpoint = endpoint; this.speaking = new Speaking().freeze(); this.status = VoiceStatus.RECONNECTING; this.emit("debug", `Reconnecting to ${endpoint}`); this.emit("reconnecting"); this.connect(); } disconnect() { this.emit("closing"); this.emit("debug", "disconnect() triggered"); clearTimeout(this.connectTimeout); const conn = this.voiceManager.connection; if (conn === this) this.voiceManager.connection = null; this.sendVoiceStateUpdate({ channel_id: null }); this._disconnect(); } _disconnect() { this.cleanup(); this.status = VoiceStatus.DISCONNECTED; this.emit("disconnect"); } cleanup() { this.player.destroy(); this.speaking = new Speaking().freeze(); const { ws, udp } = this.sockets; this.emit("debug", "Connection clean up"); if (ws) { ws.removeAllListeners("error"); ws.removeAllListeners("ready"); ws.removeAllListeners("sessionDescription"); ws.removeAllListeners("speaking"); ws.shutdown(); } if (udp) udp.removeAllListeners("error"); this.sockets.ws = null; this.sockets.udp = null; } connect() { this.emit("debug", `Connect triggered`); if (this.status !== VoiceStatus.RECONNECTING) { if (this.sockets.ws) throw new Error2("WS_CONNECTION_EXISTS"); if (this.sockets.udp) throw new Error2("UDP_CONNECTION_EXISTS"); } if (this.sockets.ws) this.sockets.ws.shutdown(); if (this.sockets.udp) this.sockets.udp.shutdown(); this.sockets.ws = new VoiceWebSocket(this); this.sockets.udp = new VoiceUDP(this); const { ws, udp } = this.sockets; ws.on("debug", (msg) => this.emit("debug", msg)); udp.on("debug", (msg) => this.emit("debug", msg)); ws.on("error", (err) => this.emit("error", err)); udp.on("error", (err) => this.emit("error", err)); ws.on("ready", this.onReady.bind(this)); ws.on("sessionDescription", this.onSessionDescription.bind(this)); ws.on("startSpeaking", this.onStartSpeaking.bind(this)); ws.on("startStreaming", this.onStartStreaming.bind(this)); this.sockets.ws.connect(); } onReady(data) { Object.assign(this.authentication, data); for (let mode of data.modes) { if (SUPPORTED_MODES.includes(mode)) { this.authentication.mode = mode; this.emit("debug", `Selecting the ${mode} mode`); break; } } this.sockets.udp.createUDPSocket(data.ip); } onSessionDescription(data) { Object.assign(this.authentication, data); this.status = VoiceStatus.CONNECTED; const ready = () => { clearTimeout(this.connectTimeout); this.emit("debug", `Ready with authentication details: ${JSON.stringify(this.authentication)}`); this.emit("ready"); }; if (this.dispatcher || this.videoDispatcher) { ready(); } else { const dispatcher = this.playAudio(new SingleSilence, { type: "opus", volume: false }); dispatcher.once("finish", ready); } } onStartSpeaking({ user_id, ssrc, speaking }) { this.ssrcMap.set(+ssrc, { ...this.ssrcMap.get(+ssrc) || {}, userId: user_id, speaking }); } onStartStreaming({ video_ssrc, user_id, audio_ssrc }) { this.ssrcMap.set(+audio_ssrc, { ...this.ssrcMap.get(+audio_ssrc) || {}, userId: user_id, hasVideo: Boolean(video_ssrc) }); } onSpeaking({ user_id, speaking }) { speaking = new Speaking(speaking).freeze(); const guild = this.channel.guild; const user = this.client.users.cache.get(user_id); const old = this._speaking.get(user_id) || new Speaking(0).freeze(); this._speaking.set(user_id, speaking); if (this.status === VoiceStatus.CONNECTED) { this.emit("speaking", user, speaking); if (!speaking.has(Speaking.FLAGS.SPEAKING)) { this.receiver.packets._stoppedSpeaking(user_id); } } if (guild && user && !speaking.equals(old)) { const member = guild.members.cache.get(user); if (member) { this.client.emit(Events.GUILD_MEMBER_SPEAKING, member, speaking); } } } playAudio() { } playVideo() { } createStreamConnection() { return new Promise((resolve, reject) => { if (this.streamConnection) { return resolve(this.streamConnection); } else { const connection = this.streamConnection = new StreamConnection(this.voiceManager, this.channel, this); connection.setVideoCodec(this.videoCodec); if (!this.eventHook) { this.eventHook = true; this.channel.client.on("raw", (packet) => { if (typeof packet !== "object" || !packet.t || !packet.d || !packet.d?.stream_key) { return; } const { t: event, d: data } = packet; const StreamKey = parseStreamKey(data.stream_key); if (StreamKey.userId === this.channel.client.user.id && this.channel.id == StreamKey.channelId && this.streamConnection) { switch (event) { case "STREAM_CREATE": { this.streamConnection.setSessionId(this.authentication.sessionId); this.streamConnection.serverId = data.rtc_server_id; break; } case "STREAM_SERVER_UPDATE": { this.streamConnection.setTokenAndEndpoint(data.token, data.endpoint); break; } case "STREAM_DELETE": { this.streamConnection.disconnect(); break; } case "STREAM_UPDATE": { this.streamConnection.update(data); break; } } } if (this.streamWatchConnection.has(StreamKey.userId) && this.channel.id == StreamKey.channelId) { const streamConnection = this.streamWatchConnection.get(StreamKey.userId); switch (event) { case "STREAM_CREATE": { streamConnection.setSessionId(this.authentication.sessionId); streamConnection.serverId = data.rtc_server_id; break; } case "STREAM_SERVER_UPDATE": { streamConnection.setTokenAndEndpoint(data.token, data.endpoint); break; } case "STREAM_DELETE": { streamConnection.disconnect(); streamConnection.receiver.packets.destroyAllStream(); break; } case "STREAM_UPDATE": { streamConnection.update(data); break; } } } }); } connection.sendSignalScreenshare(); connection.sendScreenshareState(true); connection.on("debug", (msg) => this.channel.client.emit("debug", `[VOICE STREAM (${this.channel.guild?.id || this.channel.id}:${connection.status})]: ${msg}`)); connection.once("failed", (reason) => { this.streamConnection = null; reject(reason); }); connection.on("error", reject); connection.once("authenticated", () => { connection.once("ready", () => { resolve(connection); connection.removeListener("error", reject); }); connection.once("disconnect", () => { this.streamConnection = null; }); }); } }); } async joinStreamConnection(user) { const userId = this.client.users.resolveId(user); if (!userId) { throw new Error2("VOICE_USER_MISSING"); } const voiceState = this.channel.guild?.voiceStates.cache.get(userId) || this.client.voiceStates.cache.get(userId); if (!voiceState || !voiceState.streaming) { throw new Error2("VOICE_USER_NOT_STREAMING"); } return new Promise((resolve, reject) => { if (this.streamWatchConnection.has(userId)) { return resolve(this.streamWatchConnection.get(userId)); } else { const connection = new StreamConnectionReadonly(this.voiceManager, this.channel, this, userId); this.streamWatchConnection.set(userId, connection); connection.setVideoCodec(this.videoCodec); if (!this.eventHook) { this.eventHook = true; this.channel.client.on("raw", (packet) => { if (typeof packet !== "object" || !packet.t || !packet.d || !packet.d?.stream_key) { return; } const { t: event, d: data } = packet; const StreamKey = parseStreamKey(data.stream_key); if (StreamKey.userId === this.channel.client.user.id && this.channel.id == StreamKey.channelId && this.streamConnection) { switch (event) { case "STREAM_CREATE": { this.streamConnection.setSessionId(this.authentication.sessionId); this.streamConnection.serverId = data.rtc_server_id; break; } case "STREAM_SERVER_UPDATE": { this.streamConnection.setTokenAndEndpoint(data.token, data.endpoint); break; } case "STREAM_DELETE": { this.streamConnection.disconnect(); break; } case "STREAM_UPDATE": { this.streamConnection.update(data); break; } } } if (this.streamWatchConnection.has(StreamKey.userId) && this.channel.id == StreamKey.channelId) { const streamConnection = this.streamWatchConnection.get(StreamKey.userId); switch (event) { case "STREAM_CREATE": { streamConnection.setSessionId(this.authentication.sessionId); streamConnection.serverId = data.rtc_server_id; break; } case "STREAM_SERVER_UPDATE": { streamConnection.setTokenAndEndpoint(data.token, data.endpoint); break; } case "STREAM_DELETE": { streamConnection.disconnect(); streamConnection.receiver.packets.destroyAllStream(); break; } case "STREAM_UPDATE": { streamConnection.update(data); break; } } } }); } connection.sendSignalScreenshare(); connection.on("debug", (msg) => this.channel.client.emit("debug", `[VOICE STREAM WATCH (${userId}>${this.channel.guild?.id || this.channel.id}:${connection.status})]: ${msg}`)); connection.once("failed", (reason) => { this.streamWatchConnection.delete(userId); reject(reason); }); connection.on("error", reject); connection.once("authenticated", () => { connection.once("ready", () => { resolve(connection); connection.removeListener("error", reject); }); connection.once("disconnect", () => { this.streamWatchConnection.delete(userId); }); }); } }); } } class StreamConnection extends VoiceConnection { #requestDisconnect = false; constructor(voiceManager, channel, voiceConnection) { super(voiceManager, channel); this.voiceConnection = voiceConnection; Object.defineProperty(this, "voiceConnection", { value: voiceConnection, writable: false }); this.serverId = null; this.isPaused = null; this.viewerIds = []; this.region = null; } createStreamConnection() { return Promise.resolve(this); } joinStreamConnection() { throw new Error2("STREAM_CANNOT_JOIN"); } get streamConnection() { return this; } set streamConnection(value) { } get streamWatchConnection() { return new Collection; } set streamWatchConnection(value) { } disconnect() { if (this.#requestDisconnect) return; this.emit("closing"); this.emit("debug", "Stream: disconnect() triggered"); clearTimeout(this.connectTimeout); if (this.voiceConnection.streamConnection === this) this.voiceConnection.streamConnection = null; this.sendStopScreenshare(); this._disconnect(); } sendSignalScreenshare() { const data = { type: ["DM", "GROUP_DM"].includes(this.channel.type) ? "call" : "guild", guild_id: this.channel.guild?.id || null, channel_id: this.channel.id, preferred_region: null }; this.emit("debug", `Signal Stream: ${JSON.stringify(data)}`); return this.channel.client.ws.broadcast({ op: Opcodes.STREAM_CREATE, d: data }); } sendScreenshareState(isPaused = false) { if (isPaused == this.isPaused) return; this.emit("streamUpdate", { isPaused: this.isPaused, region: this.region, viewerIds: this.viewerIds }, { isPaused, region: this.region, viewerIds: this.viewerIds }); this.isPaused = isPaused; this.channel.client.ws.broadcast({ op: Opcodes.STREAM_SET_PAUSED, d: { stream_key: this.streamKey, paused: isPaused } }); } sendStopScreenshare() { this.#requestDisconnect = true; this.channel.client.ws.broadcast({ op: Opcodes.STREAM_DELETE, d: { stream_key: this.streamKey } }); } update(data) { this.emit("streamUpdate", { isPaused: this.isPaused, region: this.region, viewerIds: this.viewerIds.slice() }, { isPaused: data.paused, region: data.region, viewerIds: data.viewer_ids }); this.viewerIds = data.viewer_ids; this.region = data.region; } get streamKey() { return `${["DM", "GROUP_DM"].includes(this.channel.type) ? "call" : `guild:${this.channel.guild.id}`}:${this.channel.id}:${this.channel.client.user.id}`; } } class StreamConnectionReadonly extends VoiceConnection { #requestDisconnect = false; constructor(voiceManager, channel, voiceConnection, userId) { super(voiceManager, channel); this.voiceConnection = voiceConnection; this.userId = userId; Object.defineProperty(this, "voiceConnection", { value: voiceConnection, writable: false }); this.serverId = null; this.isPaused = false; this.viewerIds = []; this.region = null; } createStreamConnection() { throw new Error2("STREAM_CONNECTION_READONLY"); } joinStreamConnection() { return Promise.resolve(this); } get streamConnection() { return null; } set streamConnection(value) { } get streamWatchConnection() { return new Collection; } set streamWatchConnection(value) { } disconnect() { if (this.#requestDisconnect) return; this.emit("closing"); this.emit("debug", "Stream: disconnect() triggered"); clearTimeout(this.connectTimeout); this.voiceConnection.streamWatchConnection.delete(this.userId); this.sendStopScreenshare(); this._disconnect(); } sendSignalScreenshare() { this.emit("debug", `Signal Stream Watch: ${this.streamKey}`); return this.channel.client.ws.broadcast({ op: Opcodes.STREAM_WATCH, d: { stream_key: this.streamKey } }); } sendStopScreenshare() { this.#requestDisconnect = true; this.channel.client.ws.broadcast({ op: Opcodes.STREAM_DELETE, d: { stream_key: this.streamKey } }); } update(data) { this.emit("streamUpdate", { isPaused: this.isPaused, region: this.region, viewerIds: this.viewerIds.slice() }, { isPaused: data.paused, region: data.region, viewerIds: data.viewer_ids }); this.isPaused = data.paused; this.viewerIds = data.viewer_ids; this.region = data.region; } get streamKey() { return `${["DM", "GROUP_DM"].includes(this.channel.type) ? "call" : `guild:${this.channel.guild.id}`}:${this.channel.id}:${this.userId}`; } } PlayInterface.applyToClass(VoiceConnection); PlayInterface.applyToClass(StreamConnection); module.exports = VoiceConnection; }); // node_modules/discord.js-selfbot-v13/src/client/voice/ClientVoiceManager.js var require_ClientVoiceManager = __commonJS((exports, module) => { var VoiceConnection = require_VoiceConnection(); var { Error: Error2 } = require_errors(); var { Events } = require_Constants(); class ClientVoiceManager { constructor(client) { Object.defineProperty(this, "client", { value: client }); this.connection = null; this.adapters = new Map; client.on(Events.SHARD_DISCONNECT, (_, shardId) => { for (const [guildId, adapter] of this.adapters.entries()) { if (client.guilds.cache.get(guildId)?.shardId === shardId) { } adapter.destroy(); } }); } onVoiceServer(payload) { const { guild_id, channel_id, token, endpoint } = payload; this.client.emit("debug", `[VOICE] voiceServer ${channel_id ? "channel" : "guild"}: ${channel_id || guild_id} token: ${token} endpoint: ${endpoint}`); const connection = this.connection; if (connection) connection.setTokenAndEndpoint(token, endpoint); if (payload.guild_id) { this.adapters.get(payload.guild_id)?.onVoiceServerUpdate(payload); } else { this.adapters.get(payload.channel_id)?.onVoiceServerUpdate(payload); } } onVoiceStateUpdate(payload) { const { guild_id, session_id, channel_id } = payload; if (payload.guild_id && payload.session_id && payload.user_id === this.client.user?.id) { this.adapters.get(payload.guild_id)?.onVoiceStateUpdate(payload); } else if (payload.channel_id && payload.session_id && payload.user_id === this.client.user?.id) { this.adapters.get(payload.channel_id)?.onVoiceStateUpdate(payload); } const connection = this.connection; this.client.emit("debug", `[VOICE] connection? ${!!connection}, ${guild_id} ${session_id} ${channel_id}`); if (!connection) return; if (!channel_id) { connection._disconnect(); this.connection = null; return; } const channel = this.client.channels.cache.get(channel_id); if (channel) { connection.channel = channel; connection.setSessionId(session_id); } else { this.client.emit("debug", `[VOICE] disconnecting from guild ${guild_id} as channel ${channel_id} is uncached`); connection.disconnect(); } } joinChannel(channel, config = {}) { return new Promise((resolve, reject) => { channel = this.client.channels.resolve(channel); if (!["DM", "GROUP_DM"].includes(channel?.type) && !channel.joinable) { throw new Error2("VOICE_JOIN_CHANNEL", channel.full); } let connection = this.connection; if (connection) { if (connection.channel.id !== channel.id) { this.connection.updateChannel(channel); } resolve(connection); return; } else { connection = new VoiceConnection(this, channel); if (config?.videoCodec) connection.setVideoCodec(config.videoCodec); connection.on("debug", (msg) => this.client.emit("debug", `[VOICE (${channel.guild?.id || channel.id}:${connection.status})]: ${msg}`)); connection.authenticate({ self_mute: Boolean(config.selfMute), self_deaf: Boolean(config.selfDeaf), self_video: Boolean(config.selfVideo) }); this.connection = connection; } connection.once("failed", (reason) => { this.connection = null; reject(reason); }); connection.on("error", reject); connection.once("authenticated", () => { connection.once("ready", () => { resolve(connection); connection.removeListener("error", reject); }); connection.once("disconnect", () => { this.connection = null; }); }); }); } } module.exports = ClientVoiceManager; }); // node_modules/discord-api-types/gateway/v10.js var require_v10 = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.VoiceChannelEffectSendAnimationType = exports.GatewayDispatchEvents = exports.GatewayIntentBits = exports.GatewayCloseCodes = exports.GatewayOpcodes = exports.GatewayVersion = undefined; exports.GatewayVersion = "10"; var GatewayOpcodes; (function(GatewayOpcodes2) { GatewayOpcodes2[GatewayOpcodes2["Dispatch"] = 0] = "Dispatch"; GatewayOpcodes2[GatewayOpcodes2["Heartbeat"] = 1] = "Heartbeat"; GatewayOpcodes2[GatewayOpcodes2["Identify"] = 2] = "Identify"; GatewayOpcodes2[GatewayOpcodes2["PresenceUpdate"] = 3] = "PresenceUpdate"; GatewayOpcodes2[GatewayOpcodes2["VoiceStateUpdate"] = 4] = "VoiceStateUpdate"; GatewayOpcodes2[GatewayOpcodes2["Resume"] = 6] = "Resume"; GatewayOpcodes2[GatewayOpcodes2["Reconnect"] = 7] = "Reconnect"; GatewayOpcodes2[GatewayOpcodes2["RequestGuildMembers"] = 8] = "RequestGuildMembers"; GatewayOpcodes2[GatewayOpcodes2["InvalidSession"] = 9] = "InvalidSession"; GatewayOpcodes2[GatewayOpcodes2["Hello"] = 10] = "Hello"; GatewayOpcodes2[GatewayOpcodes2["HeartbeatAck"] = 11] = "HeartbeatAck"; GatewayOpcodes2[GatewayOpcodes2["RequestSoundboardSounds"] = 31] = "RequestSoundboardSounds"; })(GatewayOpcodes || (exports.GatewayOpcodes = GatewayOpcodes = {})); var GatewayCloseCodes; (function(GatewayCloseCodes2) { GatewayCloseCodes2[GatewayCloseCodes2["UnknownError"] = 4000] = "UnknownError"; GatewayCloseCodes2[GatewayCloseCodes2["UnknownOpcode"] = 4001] = "UnknownOpcode"; GatewayCloseCodes2[GatewayCloseCodes2["DecodeError"] = 4002] = "DecodeError"; GatewayCloseCodes2[GatewayCloseCodes2["NotAuthenticated"] = 4003] = "NotAuthenticated"; GatewayCloseCodes2[GatewayCloseCodes2["AuthenticationFailed"] = 4004] = "AuthenticationFailed"; GatewayCloseCodes2[GatewayCloseCodes2["AlreadyAuthenticated"] = 4005] = "AlreadyAuthenticated"; GatewayCloseCodes2[GatewayCloseCodes2["InvalidSeq"] = 4007] = "InvalidSeq"; GatewayCloseCodes2[GatewayCloseCodes2["RateLimited"] = 4008] = "RateLimited"; GatewayCloseCodes2[GatewayCloseCodes2["SessionTimedOut"] = 4009] = "SessionTimedOut"; GatewayCloseCodes2[GatewayCloseCodes2["InvalidShard"] = 4010] = "InvalidShard"; GatewayCloseCodes2[GatewayCloseCodes2["ShardingRequired"] = 4011] = "ShardingRequired"; GatewayCloseCodes2[GatewayCloseCodes2["InvalidAPIVersion"] = 4012] = "InvalidAPIVersion"; GatewayCloseCodes2[GatewayCloseCodes2["InvalidIntents"] = 4013] = "InvalidIntents"; GatewayCloseCodes2[GatewayCloseCodes2["DisallowedIntents"] = 4014] = "DisallowedIntents"; })(GatewayCloseCodes || (exports.GatewayCloseCodes = GatewayCloseCodes = {})); var GatewayIntentBits; (function(GatewayIntentBits2) { GatewayIntentBits2[GatewayIntentBits2["Guilds"] = 1] = "Guilds"; GatewayIntentBits2[GatewayIntentBits2["GuildMembers"] = 2] = "GuildMembers"; GatewayIntentBits2[GatewayIntentBits2["GuildModeration"] = 4] = "GuildModeration"; GatewayIntentBits2[GatewayIntentBits2["GuildBans"] = 4] = "GuildBans"; GatewayIntentBits2[GatewayIntentBits2["GuildExpressions"] = 8] = "GuildExpressions"; GatewayIntentBits2[GatewayIntentBits2["GuildEmojisAndStickers"] = 8] = "GuildEmojisAndStickers"; GatewayIntentBits2[GatewayIntentBits2["GuildIntegrations"] = 16] = "GuildIntegrations"; GatewayIntentBits2[GatewayIntentBits2["GuildWebhooks"] = 32] = "GuildWebhooks"; GatewayIntentBits2[GatewayIntentBits2["GuildInvites"] = 64] = "GuildInvites"; GatewayIntentBits2[GatewayIntentBits2["GuildVoiceStates"] = 128] = "GuildVoiceStates"; GatewayIntentBits2[GatewayIntentBits2["GuildPresences"] = 256] = "GuildPresences"; GatewayIntentBits2[GatewayIntentBits2["GuildMessages"] = 512] = "GuildMessages"; GatewayIntentBits2[GatewayIntentBits2["GuildMessageReactions"] = 1024] = "GuildMessageReactions"; GatewayIntentBits2[GatewayIntentBits2["GuildMessageTyping"] = 2048] = "GuildMessageTyping"; GatewayIntentBits2[GatewayIntentBits2["DirectMessages"] = 4096] = "DirectMessages"; GatewayIntentBits2[GatewayIntentBits2["DirectMessageReactions"] = 8192] = "DirectMessageReactions"; GatewayIntentBits2[GatewayIntentBits2["DirectMessageTyping"] = 16384] = "DirectMessageTyping"; GatewayIntentBits2[GatewayIntentBits2["MessageContent"] = 32768] = "MessageContent"; GatewayIntentBits2[GatewayIntentBits2["GuildScheduledEvents"] = 65536] = "GuildScheduledEvents"; GatewayIntentBits2[GatewayIntentBits2["AutoModerationConfiguration"] = 1048576] = "AutoModerationConfiguration"; GatewayIntentBits2[GatewayIntentBits2["AutoModerationExecution"] = 2097152] = "AutoModerationExecution"; GatewayIntentBits2[GatewayIntentBits2["GuildMessagePolls"] = 16777216] = "GuildMessagePolls"; GatewayIntentBits2[GatewayIntentBits2["DirectMessagePolls"] = 33554432] = "DirectMessagePolls"; })(GatewayIntentBits || (exports.GatewayIntentBits = GatewayIntentBits = {})); var GatewayDispatchEvents; (function(GatewayDispatchEvents2) { GatewayDispatchEvents2["ApplicationCommandPermissionsUpdate"] = "APPLICATION_COMMAND_PERMISSIONS_UPDATE"; GatewayDispatchEvents2["AutoModerationActionExecution"] = "AUTO_MODERATION_ACTION_EXECUTION"; GatewayDispatchEvents2["AutoModerationRuleCreate"] = "AUTO_MODERATION_RULE_CREATE"; GatewayDispatchEvents2["AutoModerationRuleDelete"] = "AUTO_MODERATION_RULE_DELETE"; GatewayDispatchEvents2["AutoModerationRuleUpdate"] = "AUTO_MODERATION_RULE_UPDATE"; GatewayDispatchEvents2["ChannelCreate"] = "CHANNEL_CREATE"; GatewayDispatchEvents2["ChannelDelete"] = "CHANNEL_DELETE"; GatewayDispatchEvents2["ChannelPinsUpdate"] = "CHANNEL_PINS_UPDATE"; GatewayDispatchEvents2["ChannelUpdate"] = "CHANNEL_UPDATE"; GatewayDispatchEvents2["EntitlementCreate"] = "ENTITLEMENT_CREATE"; GatewayDispatchEvents2["EntitlementDelete"] = "ENTITLEMENT_DELETE"; GatewayDispatchEvents2["EntitlementUpdate"] = "ENTITLEMENT_UPDATE"; GatewayDispatchEvents2["GuildAuditLogEntryCreate"] = "GUILD_AUDIT_LOG_ENTRY_CREATE"; GatewayDispatchEvents2["GuildBanAdd"] = "GUILD_BAN_ADD"; GatewayDispatchEvents2["GuildBanRemove"] = "GUILD_BAN_REMOVE"; GatewayDispatchEvents2["GuildCreate"] = "GUILD_CREATE"; GatewayDispatchEvents2["GuildDelete"] = "GUILD_DELETE"; GatewayDispatchEvents2["GuildEmojisUpdate"] = "GUILD_EMOJIS_UPDATE"; GatewayDispatchEvents2["GuildIntegrationsUpdate"] = "GUILD_INTEGRATIONS_UPDATE"; GatewayDispatchEvents2["GuildMemberAdd"] = "GUILD_MEMBER_ADD"; GatewayDispatchEvents2["GuildMemberRemove"] = "GUILD_MEMBER_REMOVE"; GatewayDispatchEvents2["GuildMembersChunk"] = "GUILD_MEMBERS_CHUNK"; GatewayDispatchEvents2["GuildMemberUpdate"] = "GUILD_MEMBER_UPDATE"; GatewayDispatchEvents2["GuildRoleCreate"] = "GUILD_ROLE_CREATE"; GatewayDispatchEvents2["GuildRoleDelete"] = "GUILD_ROLE_DELETE"; GatewayDispatchEvents2["GuildRoleUpdate"] = "GUILD_ROLE_UPDATE"; GatewayDispatchEvents2["GuildScheduledEventCreate"] = "GUILD_SCHEDULED_EVENT_CREATE"; GatewayDispatchEvents2["GuildScheduledEventDelete"] = "GUILD_SCHEDULED_EVENT_DELETE"; GatewayDispatchEvents2["GuildScheduledEventUpdate"] = "GUILD_SCHEDULED_EVENT_UPDATE"; GatewayDispatchEvents2["GuildScheduledEventUserAdd"] = "GUILD_SCHEDULED_EVENT_USER_ADD"; GatewayDispatchEvents2["GuildScheduledEventUserRemove"] = "GUILD_SCHEDULED_EVENT_USER_REMOVE"; GatewayDispatchEvents2["GuildSoundboardSoundCreate"] = "GUILD_SOUNDBOARD_SOUND_CREATE"; GatewayDispatchEvents2["GuildSoundboardSoundDelete"] = "GUILD_SOUNDBOARD_SOUND_DELETE"; GatewayDispatchEvents2["GuildSoundboardSoundsUpdate"] = "GUILD_SOUNDBOARD_SOUNDS_UPDATE"; GatewayDispatchEvents2["GuildSoundboardSoundUpdate"] = "GUILD_SOUNDBOARD_SOUND_UPDATE"; GatewayDispatchEvents2["SoundboardSounds"] = "SOUNDBOARD_SOUNDS"; GatewayDispatchEvents2["GuildStickersUpdate"] = "GUILD_STICKERS_UPDATE"; GatewayDispatchEvents2["GuildUpdate"] = "GUILD_UPDATE"; GatewayDispatchEvents2["IntegrationCreate"] = "INTEGRATION_CREATE"; GatewayDispatchEvents2["IntegrationDelete"] = "INTEGRATION_DELETE"; GatewayDispatchEvents2["IntegrationUpdate"] = "INTEGRATION_UPDATE"; GatewayDispatchEvents2["InteractionCreate"] = "INTERACTION_CREATE"; GatewayDispatchEvents2["InviteCreate"] = "INVITE_CREATE"; GatewayDispatchEvents2["InviteDelete"] = "INVITE_DELETE"; GatewayDispatchEvents2["MessageCreate"] = "MESSAGE_CREATE"; GatewayDispatchEvents2["MessageDelete"] = "MESSAGE_DELETE"; GatewayDispatchEvents2["MessageDeleteBulk"] = "MESSAGE_DELETE_BULK"; GatewayDispatchEvents2["MessagePollVoteAdd"] = "MESSAGE_POLL_VOTE_ADD"; GatewayDispatchEvents2["MessagePollVoteRemove"] = "MESSAGE_POLL_VOTE_REMOVE"; GatewayDispatchEvents2["MessageReactionAdd"] = "MESSAGE_REACTION_ADD"; GatewayDispatchEvents2["MessageReactionRemove"] = "MESSAGE_REACTION_REMOVE"; GatewayDispatchEvents2["MessageReactionRemoveAll"] = "MESSAGE_REACTION_REMOVE_ALL"; GatewayDispatchEvents2["MessageReactionRemoveEmoji"] = "MESSAGE_REACTION_REMOVE_EMOJI"; GatewayDispatchEvents2["MessageUpdate"] = "MESSAGE_UPDATE"; GatewayDispatchEvents2["PresenceUpdate"] = "PRESENCE_UPDATE"; GatewayDispatchEvents2["RateLimited"] = "RATE_LIMITED"; GatewayDispatchEvents2["Ready"] = "READY"; GatewayDispatchEvents2["Resumed"] = "RESUMED"; GatewayDispatchEvents2["StageInstanceCreate"] = "STAGE_INSTANCE_CREATE"; GatewayDispatchEvents2["StageInstanceDelete"] = "STAGE_INSTANCE_DELETE"; GatewayDispatchEvents2["StageInstanceUpdate"] = "STAGE_INSTANCE_UPDATE"; GatewayDispatchEvents2["SubscriptionCreate"] = "SUBSCRIPTION_CREATE"; GatewayDispatchEvents2["SubscriptionDelete"] = "SUBSCRIPTION_DELETE"; GatewayDispatchEvents2["SubscriptionUpdate"] = "SUBSCRIPTION_UPDATE"; GatewayDispatchEvents2["ThreadCreate"] = "THREAD_CREATE"; GatewayDispatchEvents2["ThreadDelete"] = "THREAD_DELETE"; GatewayDispatchEvents2["ThreadListSync"] = "THREAD_LIST_SYNC"; GatewayDispatchEvents2["ThreadMembersUpdate"] = "THREAD_MEMBERS_UPDATE"; GatewayDispatchEvents2["ThreadMemberUpdate"] = "THREAD_MEMBER_UPDATE"; GatewayDispatchEvents2["ThreadUpdate"] = "THREAD_UPDATE"; GatewayDispatchEvents2["TypingStart"] = "TYPING_START"; GatewayDispatchEvents2["UserUpdate"] = "USER_UPDATE"; GatewayDispatchEvents2["VoiceChannelEffectSend"] = "VOICE_CHANNEL_EFFECT_SEND"; GatewayDispatchEvents2["VoiceServerUpdate"] = "VOICE_SERVER_UPDATE"; GatewayDispatchEvents2["VoiceStateUpdate"] = "VOICE_STATE_UPDATE"; GatewayDispatchEvents2["WebhooksUpdate"] = "WEBHOOKS_UPDATE"; })(GatewayDispatchEvents || (exports.GatewayDispatchEvents = GatewayDispatchEvents = {})); var VoiceChannelEffectSendAnimationType; (function(VoiceChannelEffectSendAnimationType2) { VoiceChannelEffectSendAnimationType2[VoiceChannelEffectSendAnimationType2["Premium"] = 0] = "Premium"; VoiceChannelEffectSendAnimationType2[VoiceChannelEffectSendAnimationType2["Basic"] = 1] = "Basic"; })(VoiceChannelEffectSendAnimationType || (exports.VoiceChannelEffectSendAnimationType = VoiceChannelEffectSendAnimationType = {})); }); // node_modules/discord-api-types/globals.js var require_globals = __commonJS((exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.FormattingPatterns = undefined; var timestampStyles = "DFRSTdfst"; var timestampLength = 13; exports.FormattingPatterns = { User: /<@(?\d{17,20})>/, UserWithNickname: /<@!(?\d{17,20})>/, UserWithOptionalNickname: /<@!?(?\d{17,20})>/, Channel: /<#(?\d{17,20})>/, Role: /<@&(?\d{17,20})>/, SlashCommand: /<\/(?(?[-_\p{Letter}\p{Number}\p{sc=Deva}\p{sc=Thai}]{1,32})(?: (?[-_\p{Letter}\p{Number}\p{sc=Deva}\p{sc=Thai}]{1,32}))?(?: (?[-_\p{Letter}\p{Number}\p{sc=Deva}\p{sc=Thai}]{1,32}))?):(?\d{17,20})>/u, Emoji: /<(?a)?:(?\w{2,32}):(?\d{17,20})>/, AnimatedEmoji: /<(?a):(?\w{2,32}):(?\d{17,20})>/, StaticEmoji: /<:(?\w{2,32}):(?\d{17,20})>/, Timestamp: new RegExp(`-?\\d{1,${timestampLength}})(:(?