@overlayed/app 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -12,6 +12,6 @@ Defaulting to 2020, but this will stop working in the future.`)),t.ecmaVersion=1
12
12
  `;break;default:e+=String.fromCharCode(n)}this.options.locations&&(++this.curLine,this.lineStart=this.pos),t=this.pos}else++this.pos}},U.readInvalidTemplateToken=function(){for(;this.pos<this.input.length;this.pos++)switch(this.input[this.pos]){case`\\`:++this.pos;break;case`$`:if(this.input[this.pos+1]!==`{`)break;case"`":return this.finishToken(b.invalidTemplate,this.input.slice(this.start,this.pos));case`\r`:this.input[this.pos+1]===`
13
13
  `&&++this.pos;case`
14
14
  `:case`\u2028`:case`\u2029`:++this.curLine,this.lineStart=this.pos+1}this.raise(this.start,`Unterminated template`)},U.readEscapedChar=function(e){var t=this.input.charCodeAt(++this.pos);switch(++this.pos,t){case 110:return`
15
- `;case 114:return`\r`;case 120:return String.fromCharCode(this.readHexChar(2));case 117:return O(this.readCodePoint());case 116:return` `;case 98:return`\b`;case 118:return`\v`;case 102:return`\f`;case 13:this.input.charCodeAt(this.pos)===10&&++this.pos;case 10:return this.options.locations&&(this.lineStart=this.pos,++this.curLine),``;case 56:case 57:if(this.strict&&this.invalidStringToken(this.pos-1,`Invalid escape sequence`),e){var n=this.pos-1;this.invalidStringToken(n,`Invalid escape sequence in template string`)}default:if(t>=48&&t<=55){var r=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],i=parseInt(r,8);return i>255&&(r=r.slice(0,-1),i=parseInt(r,8)),this.pos+=r.length-1,t=this.input.charCodeAt(this.pos),r===`0`&&t!==56&&t!==57||!this.strict&&!e||this.invalidStringToken(this.pos-1-r.length,e?`Octal literal in template string`:`Octal literal in strict mode`),String.fromCharCode(i)}return C(t)?(this.options.locations&&(this.lineStart=this.pos,++this.curLine),``):String.fromCharCode(t)}},U.readHexChar=function(e){var t=this.pos,n=this.readInt(16,e);return n===null&&this.invalidStringToken(t,`Bad character escape sequence`),n},U.readWord1=function(){this.containsEsc=!1;for(var e=``,t=!0,n=this.pos,r=this.options.ecmaVersion>=6;this.pos<this.input.length;){var i=this.fullCharCodeAtPos();if(m(i,r))this.pos+=i<=65535?1:2;else{if(i!==92)break;this.containsEsc=!0,e+=this.input.slice(n,this.pos);var a=this.pos;this.input.charCodeAt(++this.pos)!==117&&this.invalidStringToken(this.pos,`Expecting Unicode escape sequence \\uXXXX`),++this.pos;var o=this.readCodePoint();(t?p:m)(o,r)||this.invalidStringToken(a,`Invalid Unicode escape`),e+=O(o),n=this.pos}t=!1}return e+this.input.slice(n,this.pos)},U.readWord=function(){var e=this.readWord1(),t=b.name;return this.keywords.test(e)&&(t=ee[e]),this.finishToken(t,e)},M.acorn={Parser:M,version:`8.16.0`,defaultOptions:ue,Position:ce,SourceLocation:A,getLineInfo:le,Node:Ae,TokenType:h,tokTypes:b,keywordTypes:ee,TokContext:R,tokContexts:z,isIdentifierChar:m,isIdentifierStart:p,Token:at,isNewLine:C,lineBreak:x,lineBreakG:S,nonASCIIwhitespace:te};var ct=r(`node:module`),W=r(`node:fs`);String.fromCharCode;let lt=/\/$|\/\?|\/#/,ut=/^\.?\//;function dt(e=``,t){return t?lt.test(e):e.endsWith(`/`)}function ft(e=``,t){if(!t)return e.endsWith(`/`)?e:e+`/`;if(dt(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);if(i!==-1&&(n=e.slice(0,i),r=e.slice(i),!n))return r;let[a,...o]=n.split(`?`);return a+`/`+(o.length>0?`?${o.join(`?`)}`:``)+r}function pt(e){return e&&e!==`/`}function mt(e,...t){let n=e||``;for(let e of t.filter(e=>pt(e)))if(n){let t=e.replace(ut,``);n=ft(n)+t}else n=e;return n}let ht=/^[A-Za-z]:\//;function gt(e=``){return e&&e.replace(/\\/g,`/`).replace(ht,e=>e.toUpperCase())}let _t=/^[/\\]{2}/,vt=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,yt=/^[A-Za-z]:$/,bt=/.(\.[^./]+|\.)$/,xt=function(e){if(e.length===0)return`.`;let t=(e=gt(e)).match(_t),n=Et(e),r=e[e.length-1]===`/`;return(e=Tt(e,!n)).length===0?n?`/`:r?`./`:`.`:(r&&(e+=`/`),yt.test(e)&&(e+=`/`),t?n?`//${e}`:`//./${e}`:n&&!Et(e)?`/${e}`:e)},St=function(...e){let t=``;for(let n of e)if(n)if(t.length>0){let e=t[t.length-1]===`/`,r=n[0]===`/`;t+=e&&r?n.slice(1):e||r?n:`/${n}`}else t+=n;return xt(t)};function Ct(){return typeof process<`u`&&typeof process.cwd==`function`?process.cwd().replace(/\\/g,`/`):`/`}let wt=function(...e){let t=``,n=!1;for(let r=(e=e.map(e=>gt(e))).length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:Ct();i&&i.length!==0&&(t=`${i}/${t}`,n=Et(i))}return t=Tt(t,!n),n&&!Et(t)?`/${t}`:t.length>0?t:`.`};function Tt(e,t){let n=``,r=0,i=-1,a=0,o=null;for(let s=0;s<=e.length;++s){if(s<e.length)o=e[s];else{if(o===`/`)break;o=`/`}if(o===`/`){if(!(i===s-1||a===1))if(a===2){if(n.length<2||r!==2||n[n.length-1]!==`.`||n[n.length-2]!==`.`){if(n.length>2){let e=n.lastIndexOf(`/`);e===-1?(n=``,r=0):(n=n.slice(0,e),r=n.length-1-n.lastIndexOf(`/`)),i=s,a=0;continue}if(n.length>0){n=``,r=0,i=s,a=0;continue}}t&&(n+=n.length>0?`/..`:`..`,r=2)}else n.length>0?n+=`/${e.slice(i+1,s)}`:n=e.slice(i+1,s),r=s-i-1;i=s,a=0}else o===`.`&&a!==-1?++a:a=-1}return n}let Et=function(e){return vt.test(e)},Dt=function(e){if(e===`..`)return``;let t=bt.exec(gt(e));return t&&t[1]||``},G=function(e){let t=gt(e).replace(/\/$/,``).split(`/`).slice(0,-1);return t.length===1&&yt.test(t[0])&&(t[0]+=`/`),t.join(`/`)||(Et(e)?`/`:`.`)},Ot=function(e,t){let n=gt(e).split(`/`),r=``;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t){r=t;break}}return t&&r.endsWith(t)?r.slice(0,-t.length):r},K=k(`node:url`),kt=k(`node:assert`),At=k(`node:process`);var jt=r(`node:path`);let Mt=k(`node:v8`),Nt=k(`node:util`),Pt=new Set(ct.builtinModules);function Ft(e){return e.replace(/\\/g,`/`)}let It={}.hasOwnProperty,Lt=/^([A-Z][a-z\d]*)+$/,Rt=new Set([`string`,`function`,`number`,`object`,`Function`,`Object`,`boolean`,`bigint`,`symbol`]),q={};function zt(e,t=`and`){return e.length<3?e.join(` ${t} `):`${e.slice(0,-1).join(`, `)}, ${t} ${e[e.length-1]}`}let Bt=new Map,Vt;function Ht(e,t,n){return Bt.set(e,t),function(e,t){return n;function n(...n){let r=Error.stackTraceLimit;Ut()&&(Error.stackTraceLimit=0);let i=new e;Ut()&&(Error.stackTraceLimit=r);let a=function(e,t,n){let r=Bt.get(e);if(kt.ok(r!==void 0,"expected `message` to be found"),typeof r==`function`)return kt.ok(r.length<=t.length,`Code: ${e}; The provided arguments length (${t.length}) does not match the required ones (${r.length}).`),Reflect.apply(r,n,t);let i=/%[dfijoOs]/g,a=0;for(;i.exec(r)!==null;)a++;return kt.ok(a===t.length,`Code: ${e}; The provided arguments length (${t.length}) does not match the required ones (${a}).`),t.length===0?r:(t.unshift(r),Reflect.apply(Nt.format,null,t))}(t,n,i);return Object.defineProperties(i,{message:{value:a,enumerable:!1,writable:!0,configurable:!0},toString:{value(){return`${this.name} [${t}]: ${this.message}`},enumerable:!1,writable:!0,configurable:!0}}),J(i),i.code=t,i}}(n,e)}function Ut(){try{if(Mt.startupSnapshot.isBuildingSnapshot())return!1}catch{}let e=Object.getOwnPropertyDescriptor(Error,`stackTraceLimit`);return e===void 0?Object.isExtensible(Error):It.call(e,`writable`)&&e.writable!==void 0?e.writable:e.set!==void 0}q.ERR_INVALID_ARG_TYPE=Ht(`ERR_INVALID_ARG_TYPE`,(e,t,n)=>{kt.ok(typeof e==`string`,`'name' must be a string`),Array.isArray(t)||(t=[t]);let r=`The `;if(e.endsWith(` argument`))r+=`${e} `;else{let t=e.includes(`.`)?`property`:`argument`;r+=`"${e}" ${t} `}r+=`must be `;let i=[],a=[],o=[];for(let e of t)kt.ok(typeof e==`string`,`All expected entries have to be of type string`),Rt.has(e)?i.push(e.toLowerCase()):Lt.exec(e)===null?(kt.ok(e!==`object`,`The value "object" should be written as "Object"`),o.push(e)):a.push(e);if(a.length>0){let e=i.indexOf(`object`);e!==-1&&(i.slice(e,1),a.push(`Object`))}return i.length>0&&(r+=`${i.length>1?`one of type`:`of type`} ${zt(i,`or`)}`,(a.length>0||o.length>0)&&(r+=` or `)),a.length>0&&(r+=`an instance of ${zt(a,`or`)}`,o.length>0&&(r+=` or `)),o.length>0&&(o.length>1?r+=`one of ${zt(o,`or`)}`:(o[0].toLowerCase()!==o[0]&&(r+=`an `),r+=`${o[0]}`)),r+=`. Received ${function(e){if(e==null)return String(e);if(typeof e==`function`&&e.name)return`function ${e.name}`;if(typeof e==`object`)return e.constructor&&e.constructor.name?`an instance of ${e.constructor.name}`:`${(0,Nt.inspect)(e,{depth:-1})}`;let t=(0,Nt.inspect)(e,{colors:!1});return t.length>28&&(t=`${t.slice(0,25)}...`),`type ${typeof e} (${t})`}(n)}`,r},TypeError),q.ERR_INVALID_MODULE_SPECIFIER=Ht(`ERR_INVALID_MODULE_SPECIFIER`,(e,t,n=void 0)=>`Invalid module "${e}" ${t}${n?` imported from ${n}`:``}`,TypeError),q.ERR_INVALID_PACKAGE_CONFIG=Ht(`ERR_INVALID_PACKAGE_CONFIG`,(e,t,n)=>`Invalid package config ${e}${t?` while importing ${t}`:``}${n?`. ${n}`:``}`,Error),q.ERR_INVALID_PACKAGE_TARGET=Ht(`ERR_INVALID_PACKAGE_TARGET`,(e,t,n,r=!1,i=void 0)=>{let a=typeof n==`string`&&!r&&n.length>0&&!n.startsWith(`./`);return t===`.`?(kt.ok(!1===r),`Invalid "exports" main target ${JSON.stringify(n)} defined in the package config ${e}package.json${i?` imported from ${i}`:``}${a?`; targets must start with "./"`:``}`):`Invalid "${r?`imports`:`exports`}" target ${JSON.stringify(n)} defined for '${t}' in the package config ${e}package.json${i?` imported from ${i}`:``}${a?`; targets must start with "./"`:``}`},Error),q.ERR_MODULE_NOT_FOUND=Ht(`ERR_MODULE_NOT_FOUND`,(e,t,n=!1)=>`Cannot find ${n?`module`:`package`} '${e}' imported from ${t}`,Error),q.ERR_NETWORK_IMPORT_DISALLOWED=Ht(`ERR_NETWORK_IMPORT_DISALLOWED`,`import of '%s' by %s is not supported: %s`,Error),q.ERR_PACKAGE_IMPORT_NOT_DEFINED=Ht(`ERR_PACKAGE_IMPORT_NOT_DEFINED`,(e,t,n)=>`Package import specifier "${e}" is not defined${t?` in package ${t}package.json`:``} imported from ${n}`,TypeError),q.ERR_PACKAGE_PATH_NOT_EXPORTED=Ht(`ERR_PACKAGE_PATH_NOT_EXPORTED`,(e,t,n=void 0)=>t===`.`?`No "exports" main defined in ${e}package.json${n?` imported from ${n}`:``}`:`Package subpath '${t}' is not defined by "exports" in ${e}package.json${n?` imported from ${n}`:``}`,Error),q.ERR_UNSUPPORTED_DIR_IMPORT=Ht(`ERR_UNSUPPORTED_DIR_IMPORT`,`Directory import '%s' is not supported resolving ES modules imported from %s`,Error),q.ERR_UNSUPPORTED_RESOLVE_REQUEST=Ht(`ERR_UNSUPPORTED_RESOLVE_REQUEST`,`Failed to resolve module specifier "%s" from "%s": Invalid relative URL or base scheme is not hierarchical.`,TypeError),q.ERR_UNKNOWN_FILE_EXTENSION=Ht(`ERR_UNKNOWN_FILE_EXTENSION`,(e,t)=>`Unknown file extension "${e}" for ${t}`,TypeError),q.ERR_INVALID_ARG_VALUE=Ht(`ERR_INVALID_ARG_VALUE`,(e,t,n=`is invalid`)=>{let r=(0,Nt.inspect)(t);return r.length>128&&(r=`${r.slice(0,128)}...`),`The ${e.includes(`.`)?`property`:`argument`} '${e}' ${n}. Received ${r}`},TypeError);let J=function(e){let t=`__node_internal_`+e.name;return Object.defineProperty(e,"name",{value:t}),e}(function(e){let t=Ut();return t&&(Vt=Error.stackTraceLimit,Error.stackTraceLimit=1/0),Error.captureStackTrace(e),t&&(Error.stackTraceLimit=Vt),e}),Wt={}.hasOwnProperty,{ERR_INVALID_PACKAGE_CONFIG:Gt}=q,Kt=new Map;function qt(e,{base:t,specifier:n}){let r=Kt.get(e);if(r)return r;let i;try{i=W.readFileSync(jt.toNamespacedPath(e),`utf8`)}catch(e){let t=e;if(t.code!==`ENOENT`)throw t}let a={exists:!1,pjsonPath:e,main:void 0,name:void 0,type:`none`,exports:void 0,imports:void 0};if(i!==void 0){let r;try{r=JSON.parse(i)}catch(r){let i=r,a=new Gt(e,(t?`"${n}" from `:``)+(0,K.fileURLToPath)(t||n),i.message);throw a.cause=i,a}a.exists=!0,Wt.call(r,`name`)&&typeof r.name==`string`&&(a.name=r.name),Wt.call(r,`main`)&&typeof r.main==`string`&&(a.main=r.main),Wt.call(r,`exports`)&&(a.exports=r.exports),Wt.call(r,`imports`)&&(a.imports=r.imports),!Wt.call(r,`type`)||r.type!==`commonjs`&&r.type!==`module`||(a.type=r.type)}return Kt.set(e,a),a}function Jt(e){let t=new URL(`package.json`,e);for(;!t.pathname.endsWith(`node_modules/package.json`);){let n=qt((0,K.fileURLToPath)(t),{specifier:e});if(n.exists)return n;let r=t;if(t=new URL(`../package.json`,t),t.pathname===r.pathname)break}return{pjsonPath:(0,K.fileURLToPath)(t),exists:!1,type:`none`}}function Yt(e){return Jt(e).type}let{ERR_UNKNOWN_FILE_EXTENSION:Xt}=q,Zt={}.hasOwnProperty,Qt={__proto__:null,".cjs":`commonjs`,".js":`module`,".json":`json`,".mjs":`module`},$t={__proto__:null,"data:":function(e){let{1:t}=/^([^/]+\/[^;,]+)[^,]*?(;base64)?,/.exec(e.pathname)||[null,null,null];return function(e){return e&&/\s*(text|application)\/javascript\s*(;\s*charset=utf-?8\s*)?/i.test(e)?`module`:e===`application/json`?`json`:null}(t)},"file:":function(e,t,n){let r=function(e){let t=e.pathname,n=t.length;for(;n--;){let e=t.codePointAt(n);if(e===47)return``;if(e===46)return t.codePointAt(n-1)===47?``:t.slice(n)}return``}(e);if(r===`.js`){let t=Yt(e);return t===`none`?`commonjs`:t}if(r===``){let t=Yt(e);return t===`none`||t===`commonjs`?`commonjs`:`module`}let i=Qt[r];if(i)return i;if(n)return;let a=(0,K.fileURLToPath)(e);throw new Xt(r,a)},"http:":en,"https:":en,"node:":()=>`builtin`};function en(){}let tn=Object.freeze([`node`,`import`]),nn=new Set(tn);function Y(e){return nn}let rn=RegExp.prototype[Symbol.replace],{ERR_INVALID_MODULE_SPECIFIER:an,ERR_INVALID_PACKAGE_CONFIG:on,ERR_INVALID_PACKAGE_TARGET:sn,ERR_MODULE_NOT_FOUND:cn,ERR_PACKAGE_IMPORT_NOT_DEFINED:ln,ERR_PACKAGE_PATH_NOT_EXPORTED:un,ERR_UNSUPPORTED_DIR_IMPORT:dn,ERR_UNSUPPORTED_RESOLVE_REQUEST:fn}=q,pn={}.hasOwnProperty,mn=/(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))?(\\|\/|$)/i,hn=/(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i,gn=/^\.|%|\\/,_n=/\*/g,vn=/%2f|%5c/i,yn=new Set,bn=/[/\\]{2}/;function xn(e,t,n,r,i,a,o){if(At.noDeprecation)return;let s=(0,K.fileURLToPath)(r),c=bn.exec(o?e:t)!==null;At.emitWarning(`Use of deprecated ${c?`double slash`:`leading or trailing slash matching`} resolving "${e}" for module request "${t}" ${t===n?``:`matched to "${n}" `}in the "${i?`imports`:`exports`}" field module resolution of the package at ${s}${a?` imported from ${(0,K.fileURLToPath)(a)}`:``}.`,`DeprecationWarning`,`DEP0166`)}function Sn(e,t,n,r){if(At.noDeprecation||function(e,t){let n=e.protocol;return Zt.call($t,n)&&$t[n](e,t,!0)||null}(e,{parentURL:n.href})!==`module`)return;let i=(0,K.fileURLToPath)(e.href),a=(0,K.fileURLToPath)(new URL(`.`,t)),o=(0,K.fileURLToPath)(n);r?jt.resolve(a,r)!==i&&At.emitWarning(`Package ${a} has a "main" field set to "${r}", excluding the full filename and extension to the resolved file at "${i.slice(a.length)}", imported from ${o}.\n Automatic extension resolution of the "main" field is deprecated for ES modules.`,`DeprecationWarning`,`DEP0151`):At.emitWarning(`No "main" or "exports" field defined in the package.json for ${a} resolving the main entry point "${i.slice(a.length)}", imported from ${o}.\nDefault "index" lookups for the main are deprecated for ES modules.`,`DeprecationWarning`,`DEP0151`)}function Cn(e){try{return(0,W.statSync)(e)}catch{}}function wn(e){let t=(0,W.statSync)(e,{throwIfNoEntry:!1}),n=t?t.isFile():void 0;return n!=null&&n}function Tn(e,t,n){let r;if(t.main!==void 0){if(r=new URL(t.main,e),wn(r))return r;let i=[`./${t.main}.js`,`./${t.main}.json`,`./${t.main}.node`,`./${t.main}/index.js`,`./${t.main}/index.json`,`./${t.main}/index.node`],a=-1;for(;++a<i.length&&(r=new URL(i[a],e),!wn(r));)r=void 0;if(r)return Sn(r,e,n,t.main),r}let i=[`./index.js`,`./index.json`,`./index.node`],a=-1;for(;++a<i.length&&(r=new URL(i[a],e),!wn(r));)r=void 0;if(r)return Sn(r,e,n,t.main),r;throw new cn((0,K.fileURLToPath)(new URL(`.`,e)),(0,K.fileURLToPath)(n))}function En(e,t,n){return new un((0,K.fileURLToPath)(new URL(`.`,t)),e,n&&(0,K.fileURLToPath)(n))}function Dn(e,t,n,r,i){return t=typeof t==`object`&&t?JSON.stringify(t,null,``):`${t}`,new sn((0,K.fileURLToPath)(new URL(`.`,n)),e,t,r,i&&(0,K.fileURLToPath)(i))}function On(e,t,n,r,i,a,o,s,c){if(t!==``&&!a&&e[e.length-1]!==`/`)throw Dn(n,e,r,o,i);if(!e.startsWith(`./`)){if(o&&!e.startsWith(`../`)&&!e.startsWith(`/`)){let n=!1;try{new URL(e),n=!0}catch{}if(!n)return Pn(a?rn.call(_n,e,()=>t):e+t,r,c)}throw Dn(n,e,r,o,i)}if(mn.exec(e.slice(2))!==null){if(hn.exec(e.slice(2))!==null)throw Dn(n,e,r,o,i);if(!s){let s=a?n.replace(`*`,()=>t):n+t;xn(a?rn.call(_n,e,()=>t):e,s,n,r,o,i,!0)}}let l=new URL(e,r),u=l.pathname,d=new URL(`.`,r).pathname;if(!u.startsWith(d))throw Dn(n,e,r,o,i);if(t===``)return l;if(mn.exec(t)!==null){let c=a?n.replace(`*`,()=>t):n+t;hn.exec(t)===null?s||xn(a?rn.call(_n,e,()=>t):e,c,n,r,o,i,!1):(function(e,t,n,r,i){let a=`request is not a valid match in pattern "${t}" for the "${r?`imports`:`exports`}" resolution of ${(0,K.fileURLToPath)(n)}`;throw new an(e,a,i&&(0,K.fileURLToPath)(i))})(c,n,r,o,i)}return a?new URL(rn.call(_n,l.href,()=>t)):new URL(t,l)}function kn(e){let t=Number(e);return`${t}`===e&&t>=0&&t<4294967295}function An(e,t,n,r,i,a,o,s,c){if(typeof t==`string`)return On(t,n,r,e,i,a,o,s,c);if(Array.isArray(t)){let l=t;if(l.length===0)return null;let u,d=-1;for(;++d<l.length;){let t=l[d],f;try{f=An(e,t,n,r,i,a,o,s,c)}catch(e){if(u=e,e.code===`ERR_INVALID_PACKAGE_TARGET`)continue;throw e}if(f!==void 0){if(f!==null)return f;u=null}}if(u==null)return null;throw u}if(typeof t==`object`&&t){let l=Object.getOwnPropertyNames(t),u=-1;for(;++u<l.length;)if(kn(l[u]))throw new on((0,K.fileURLToPath)(e),i,`"exports" cannot contain numeric property keys.`);for(u=-1;++u<l.length;){let d=l[u];if(d==="default"||c&&c.has(d)){let l=An(e,t[d],n,r,i,a,o,s,c);if(l===void 0)continue;return l}}return null}if(t===null)return null;throw Dn(r,t,e,o,i)}function X(e,t,n){if(At.noDeprecation)return;let r=(0,K.fileURLToPath)(t);yn.has(r+`|`+e)||(yn.add(r+`|`+e),At.emitWarning(`Use of deprecated trailing slash pattern mapping "${e}" in the "exports" field module resolution of the package at ${r}${n?` imported from ${(0,K.fileURLToPath)(n)}`:``}. Mapping specifiers ending in "/" is no longer supported.`,`DeprecationWarning`,`DEP0155`))}function jn(e,t,n,r,i){let a=n.exports;if(function(e,t,n){if(typeof e==`string`||Array.isArray(e))return!0;if(typeof e!=`object`||!e)return!1;let r=Object.getOwnPropertyNames(e),i=!1,a=0,o=-1;for(;++o<r.length;){let e=r[o],s=e===``||e[0]!==`.`;if(a++===0)i=s;else if(i!==s)throw new on((0,K.fileURLToPath)(t),n,`"exports" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.`)}return i}(a,e,r)&&(a={".":a}),pn.call(a,t)&&!t.includes(`*`)&&!t.endsWith(`/`)){let n=An(e,a[t],``,t,r,!1,!1,!1,i);if(n==null)throw En(t,e,r);return n}let o=``,s=``,c=Object.getOwnPropertyNames(a),l=-1;for(;++l<c.length;){let n=c[l],i=n.indexOf(`*`);if(i!==-1&&t.startsWith(n.slice(0,i))){t.endsWith(`/`)&&X(t,e,r);let a=n.slice(i+1);t.length>=n.length&&t.endsWith(a)&&Mn(o,n)===1&&n.lastIndexOf(`*`)===i&&(o=n,s=t.slice(i,t.length-a.length))}}if(o){let n=An(e,a[o],s,o,r,!0,!1,t.endsWith(`/`),i);if(n==null)throw En(t,e,r);return n}throw En(t,e,r)}function Mn(e,t){let n=e.indexOf(`*`),r=t.indexOf(`*`),i=n===-1?e.length:n+1,a=r===-1?t.length:r+1;return i>a?-1:a>i||n===-1?1:r===-1||e.length>t.length?-1:+(t.length>e.length)}function Nn(e,t,n){if(e===`#`||e.startsWith(`#/`)||e.endsWith(`/`))throw new an(e,`is not a valid internal imports specifier name`,(0,K.fileURLToPath)(t));let r,i=Jt(t);if(i.exists){r=(0,K.pathToFileURL)(i.pjsonPath);let a=i.imports;if(a)if(pn.call(a,e)&&!e.includes(`*`)){let i=An(r,a[e],``,e,t,!1,!0,!1,n);if(i!=null)return i}else{let i=``,o=``,s=Object.getOwnPropertyNames(a),c=-1;for(;++c<s.length;){let t=s[c],n=t.indexOf(`*`);if(n!==-1&&e.startsWith(t.slice(0,-1))){let r=t.slice(n+1);e.length>=t.length&&e.endsWith(r)&&Mn(i,t)===1&&t.lastIndexOf(`*`)===n&&(i=t,o=e.slice(n,e.length-r.length))}}if(i){let e=An(r,a[i],o,i,t,!0,!0,!1,n);if(e!=null)return e}}}throw function(e,t,n){return new ln(e,t&&(0,K.fileURLToPath)(new URL(`.`,t)),(0,K.fileURLToPath)(n))}(e,r,t)}function Pn(e,t,n){if(ct.builtinModules.includes(e))return new URL(`node:`+e);let{packageName:r,packageSubpath:i,isScoped:a}=function(e,t){let n=e.indexOf(`/`),r=!0,i=!1;e[0]===`@`&&(i=!0,n===-1||e.length===0?r=!1:n=e.indexOf(`/`,n+1));let a=n===-1?e:e.slice(0,n);if(gn.exec(a)!==null&&(r=!1),!r)throw new an(e,`is not a valid package name`,(0,K.fileURLToPath)(t));return{packageName:a,packageSubpath:`.`+(n===-1?``:e.slice(n)),isScoped:i}}(e,t),o=Jt(t);if(o.exists){let e=(0,K.pathToFileURL)(o.pjsonPath);if(o.name===r&&o.exports!==void 0&&o.exports!==null)return jn(e,i,o,t,n)}let s,c=new URL(`./node_modules/`+r+`/package.json`,t),l=(0,K.fileURLToPath)(c);do{let o=Cn(l.slice(0,-13));if(!o||!o.isDirectory()){s=l,c=new URL((a?`../../../../node_modules/`:`../../../node_modules/`)+r+`/package.json`,c),l=(0,K.fileURLToPath)(c);continue}let u=qt(l,{base:t,specifier:e});return u.exports!==void 0&&u.exports!==null?jn(c,i,u,t,n):i===`.`?Tn(c,u,t):new URL(i,c)}while(l.length!==s.length)}function Fn(e,t,n,r){n===void 0&&(n=Y());let i=t.protocol,a=i===`data:`||i===`http:`||i===`https:`,o;if(function(e){return e!==``&&(e[0]===`/`||function(e){return e[0]===`.`&&(e.length===1||e[1]===`/`||e[1]===`.`&&(e.length===2||e[2]===`/`))}(e))}(e))try{o=new URL(e,t)}catch(n){let r=new fn(e,t);throw r.cause=n,r}else if(i===`file:`&&e[0]===`#`)o=Nn(e,t,n);else try{o=new URL(e)}catch(r){if(a&&!ct.builtinModules.includes(e)){let n=new fn(e,t);throw n.cause=r,n}o=Pn(e,t,n)}return kt.ok(o!==void 0,`expected to be defined`),o.protocol===`file:`?function(e,t){if(vn.exec(e.pathname)!==null)throw new an(e.pathname,`must not include encoded "/" or "\\" characters`,(0,K.fileURLToPath)(t));let n;try{n=(0,K.fileURLToPath)(e)}catch(n){let r=n;throw Object.defineProperty(r,"input",{value:String(e)}),Object.defineProperty(r,"module",{value:String(t)}),r}let r=Cn(n.endsWith(`/`)?n.slice(-1):n);if(r&&r.isDirectory()){let r=new dn(n,(0,K.fileURLToPath)(t));throw r.url=String(e),r}if(!r||!r.isFile()){let r=new cn(n||e.pathname,t&&(0,K.fileURLToPath)(t),!0);throw r.url=String(e),r}{let t=(0,W.realpathSync)(n),{search:r,hash:i}=e;(e=(0,K.pathToFileURL)(t+(n.endsWith(jt.sep)?`/`:``))).search=r,e.hash=i}return e}(o,t):o}function In(e){return typeof e!=`string`||e.startsWith(`file://`)?Ft((0,K.fileURLToPath)(e)):Ft(e)}function Ln(e){return(0,K.pathToFileURL)(In(e)).toString()}let Rn=new Set([`node`,`import`]),zn=[`.mjs`,`.cjs`,`.js`,`.json`],Bn=new Set([`ERR_MODULE_NOT_FOUND`,`ERR_UNSUPPORTED_DIR_IMPORT`,`MODULE_NOT_FOUND`,`ERR_PACKAGE_PATH_NOT_EXPORTED`]);function Vn(e,t,n){try{return Fn(e,t,n)}catch(e){if(!Bn.has(e?.code))throw e}}function Hn(e,t={}){if(typeof e!=`string`){if(!(e instanceof URL))throw TypeError("input must be a `string` or `URL`");e=In(e)}if(/(?:node|data|http|https):/.test(e))return e;if(Pt.has(e))return`node:`+e;if(e.startsWith(`file://`)&&(e=In(e)),Et(e))try{if((0,W.statSync)(e).isFile())return Ln(e)}catch(e){if(e?.code!==`ENOENT`)throw e}let n=t.conditions?new Set(t.conditions):Rn,r=(Array.isArray(t.url)?t.url:[t.url]).filter(Boolean).map(e=>new URL(function(e){return typeof e!=`string`&&(e=e.toString()),/(?:node|data|http|https|file):/.test(e)?e:Pt.has(e)?`node:`+e:`file://`+encodeURI(Ft(e))}(e.toString())));r.length===0&&r.push(new URL(Ln(process.cwd())));let i=[...r];for(let e of r)e.protocol===`file:`&&i.push(new URL(`./`,e),new URL(mt(e.pathname,`_index.js`),e),new URL(`node_modules`,e));let a;for(let r of i){if(a=Vn(e,r,n),a)break;for(let i of[``,`/index`]){for(let o of t.extensions||zn)if(a=Vn(mt(e,i)+o,r,n),a)break;if(a)break}if(a)break}if(!a){let t=Error(`Cannot find module ${e} imported from ${i.join(`, `)}`);throw t.code=`ERR_MODULE_NOT_FOUND`,t}return Ln(a)}function Un(e,t){return Hn(e,t)}function Wn(e,t){return In(Un(e,t))}let Gn=/(?:[\s;]|^)(?:import[\s\w*,{}]*from|import\s*["'*{]|export\b\s*(?:[*{]|default|class|type|function|const|var|let|async function)|import\.meta\b)/m,Kn=/\/\*.+?\*\/|\/\/.*(?=[nr])/g;function qn(e,t={}){return t.stripComments&&(e=e.replace(Kn,``)),Gn.test(e)}function Jn(e){if(typeof e!=`string`)throw TypeError(`Expected a string`);return e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`)}let Yn=new Set([`/`,`\\`,void 0]),Xn=Symbol.for(`pathe:normalizedAlias`),Zn=/[/\\]/;function Qn(e){if(e[Xn])return e;let t=Object.fromEntries(Object.entries(e).sort(([e],[t])=>function(e,t){return t.split(`/`).length-e.split(`/`).length}(e,t)));for(let e in t)for(let n in t)n===e||e.startsWith(n)||t[e]?.startsWith(n)&&Yn.has(t[e][n.length])&&(t[e]=t[n]+t[e].slice(n.length));return Object.defineProperty(t,Xn,{value:!0,enumerable:!1}),t}function $n(e=`/`){let t=e[e.length-1];return t===`/`||t===`\\`}var er={rE:`2.6.1`};let tr=k(`node:crypto`);var nr=r.n(tr);let Z=globalThis.process?.env||Object.create(null),rr=globalThis.process||{env:Z},ir=rr!==void 0&&rr.env&&rr.env.NODE_ENV||void 0,ar=[[`claude`,[`CLAUDECODE`,`CLAUDE_CODE`]],[`replit`,[`REPL_ID`]],[`gemini`,[`GEMINI_CLI`]],[`codex`,[`CODEX_SANDBOX`,`CODEX_THREAD_ID`]],[`opencode`,[`OPENCODE`]],[`pi`,[or(`PATH`,/\.pi[\\/]agent/)]],[`auggie`,[`AUGMENT_AGENT`]],[`goose`,[`GOOSE_PROVIDER`]],[`devin`,[or(`EDITOR`,/devin/)]],[`cursor`,[`CURSOR_AGENT`]],[`kiro`,[or(`TERM_PROGRAM`,/kiro/)]]];function or(e,t){return()=>{let n=Z[e];return!!n&&t.test(n)}}let sr=function(){let e=Z.AI_AGENT;if(e)return{name:e.toLowerCase()};for(let[e,t]of ar)for(let n of t)if(typeof n==`string`?Z[n]:n())return{name:e};return{}}(),cr=(sr.name,sr.name,[[`APPVEYOR`],[`AWS_AMPLIFY`,`AWS_APP_ID`,{ci:!0}],[`AZURE_PIPELINES`,`SYSTEM_TEAMFOUNDATIONCOLLECTIONURI`],[`AZURE_STATIC`,`INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN`],[`APPCIRCLE`,`AC_APPCIRCLE`],[`BAMBOO`,`bamboo_planKey`],[`BITBUCKET`,`BITBUCKET_COMMIT`],[`BITRISE`,`BITRISE_IO`],[`BUDDY`,`BUDDY_WORKSPACE_ID`],[`BUILDKITE`],[`CIRCLE`,`CIRCLECI`],[`CIRRUS`,`CIRRUS_CI`],[`CLOUDFLARE_PAGES`,`CF_PAGES`,{ci:!0}],[`CLOUDFLARE_WORKERS`,`WORKERS_CI`,{ci:!0}],[`GOOGLE_CLOUDRUN`,`K_SERVICE`],[`GOOGLE_CLOUDRUN_JOB`,`CLOUD_RUN_JOB`],[`CODEBUILD`,`CODEBUILD_BUILD_ARN`],[`CODEFRESH`,`CF_BUILD_ID`],[`DRONE`],[`DRONE`,`DRONE_BUILD_EVENT`],[`DSARI`],[`GITHUB_ACTIONS`],[`GITLAB`,`GITLAB_CI`],[`GITLAB`,`CI_MERGE_REQUEST_ID`],[`GOCD`,`GO_PIPELINE_LABEL`],[`LAYERCI`],[`JENKINS`,`JENKINS_URL`],[`HUDSON`,`HUDSON_URL`],[`MAGNUM`],[`NETLIFY`],[`NETLIFY`,`NETLIFY_LOCAL`,{ci:!1}],[`NEVERCODE`],[`RENDER`],[`SAIL`,`SAILCI`],[`SEMAPHORE`],[`SCREWDRIVER`],[`SHIPPABLE`],[`SOLANO`,`TDDIUM`],[`STRIDER`],[`TEAMCITY`,`TEAMCITY_VERSION`],[`TRAVIS`],[`VERCEL`,`NOW_BUILDER`],[`VERCEL`,`VERCEL`,{ci:!1}],[`VERCEL`,`VERCEL_ENV`,{ci:!1}],[`APPCENTER`,`APPCENTER_BUILD_ID`],[`CODESANDBOX`,`CODESANDBOX_SSE`,{ci:!1}],[`CODESANDBOX`,`CODESANDBOX_HOST`,{ci:!1}],[`STACKBLITZ`],[`STORMKIT`],[`CLEAVR`],[`ZEABUR`],[`CODESPHERE`,`CODESPHERE_APP_ID`,{ci:!0}],[`RAILWAY`,`RAILWAY_PROJECT_ID`],[`RAILWAY`,`RAILWAY_SERVICE_ID`],[`DENO-DEPLOY`,`DENO_DEPLOY`],[`DENO-DEPLOY`,`DENO_DEPLOYMENT_ID`],[`FIREBASE_APP_HOSTING`,`FIREBASE_APP_HOSTING`,{ci:!0}],[`EDGEONE_PAGES`,`EO_PAGES_CI`,{ci:!0}]]),lr=function(){for(let e of cr)if(Z[e[1]||e[0]])return{name:e[0].toLowerCase(),...e[2]};return Z.SHELL===`/bin/jsh`&&rr.versions?.webcontainer?{name:`stackblitz`,ci:!1}:{name:``,ci:!1}}(),ur=(lr.name,rr.platform||``);Z.CI||lr.ci;let dr=!!rr.stdout?.isTTY;Z.DEBUG,ir===`test`||Z.TEST;let fr=(ir===`production`||Z.MODE,ir===`dev`||ir===`development`||Z.MODE,Z.MINIMAL,/^win/i.test(ur)),pr=(/^linux/i.test(ur),/^darwin/i.test(ur),!Z.NO_COLOR&&(Z.FORCE_COLOR||(dr||fr)&&Z.TERM),(rr.versions?.node||``).replace(/^v/,``)||null),mr=(Number(pr?.split(`.`)[0]),!!rr?.versions?.node),hr=`Bun`in globalThis,gr=`Deno`in globalThis,_r=`fastly`in globalThis,vr=[[`Netlify`in globalThis,`netlify`],[`EdgeRuntime`in globalThis,`edge-light`],[globalThis.navigator?.userAgent===`Cloudflare-Workers`,`workerd`],[_r,`fastly`],[gr,`deno`],[hr,`bun`],[mr,`node`]];(function(){let e=vr.find(e=>e[0]);e&&e[1]})();let yr=k(`node:tty`)?.WriteStream?.prototype?.hasColors?.()??!1,Q=(e,t)=>{if(!yr)return e=>e;let n=`[${e}m`,r=`[${t}m`;return e=>{let i=e+``,a=i.indexOf(r);if(a===-1)return n+i+r;let o=n,s=0,c=(t===22?r:``)+n;for(;a!==-1;)o+=i.slice(s,a)+c,s=a+r.length,a=i.indexOf(r,s);return o+=i.slice(s)+r,o}},br=(Q(0,0),Q(1,22),Q(2,22),Q(3,23),Q(4,24),Q(53,55),Q(7,27),Q(8,28),Q(9,29),Q(30,39),Q(31,39)),xr=Q(32,39),Sr=Q(33,39),Cr=Q(34,39),wr=(Q(35,39),Q(36,39)),Tr=(Q(37,39),Q(90,39));Q(40,49),Q(41,49),Q(42,49),Q(43,49),Q(44,49),Q(45,49),Q(46,49),Q(47,49),Q(100,49),Q(91,39),Q(92,39),Q(93,39),Q(94,39),Q(95,39),Q(96,39),Q(97,39),Q(101,49),Q(102,49),Q(103,49),Q(104,49),Q(105,49),Q(106,49),Q(107,49);function Er(e){if(typeof e!=`string`||e.startsWith(`file://`))return!1;try{return(0,W.lstatSync)(e).isDirectory()}catch{return!1}}function Dr(e,t=8){return(function(){if(Ar!==void 0)return Ar;try{return Ar=!!nr().getFips?.(),Ar}catch{return Ar=!1,Ar}}()?nr().createHash(`sha256`):nr().createHash(`md5`)).update(e).digest(`hex`).slice(0,t)}let Or={true:xr(`true`),false:Sr(`false`),"[rebuild]":Sr(`[rebuild]`),"[esm]":Cr(`[esm]`),"[cjs]":xr(`[cjs]`),"[import]":Cr(`[import]`),"[require]":xr(`[require]`),"[native]":wr(`[native]`),"[transpile]":Sr(`[transpile]`),"[fallback]":br(`[fallback]`),"[unknown]":br(`[unknown]`),"[hit]":xr(`[hit]`),"[miss]":Sr(`[miss]`),"[json]":xr(`[json]`),"[data]":xr(`[data]`)};function $(e,...t){if(!e.opts.debug)return;let n=process.cwd();console.log(Tr([`[jiti]`,...t.map(e=>e in Or?Or[e]:typeof e==`string`?e.replace(n,`.`):JSON.stringify(e))].join(` `)))}function kr(e,t){return e.opts.interopDefault?function(e){let t=typeof e;if(e===null||t!==`object`&&t!==`function`)return e;let n=e.default,r=typeof n,i=n==null,a=r===`object`||r===`function`;if(i&&e instanceof Promise)return e;let o=r===`function`&&t!==`function`,s=a&&!(n instanceof Promise),c=new Map;return new Proxy(e,{get(t,r){if(c.has(r))return c.get(r);let a;return r==="__esModule"?a=!0:r==="default"?a=i?e:typeof n?.default==`function`&&e.__esModule?n.default:n:r in t?a=t[r]:s&&(a=n[r],typeof a==`function`&&(a=a.bind(n))),c.set(r,a),a},apply:o?(e,t,r)=>Reflect.apply(n,t,r):void 0})}(t):t}let Ar;function jr(e,t){return!!Mr(e,t)}function Mr(e,t,n){let r=process.env[e];if(!(e in process.env))return t;try{return JSON.parse(r)}catch{return n?r:t}}let Nr=/\.(c|m)?j(sx?)$/,Pr=/\.(c|m)?t(sx?)$/;function Fr(e,t,n){let r,i;if(e.isNativeRe.test(t))return t;if(e.resolveTsConfigPaths&&!n.skipTsConfigPaths){let r=e.resolveTsConfigPaths(t);for(let t of r){let r=Fr(e,t,{...n,try:!0,skipTsConfigPaths:!0});if(r)return r}}e.alias&&(t=function(e,t){let n=gt(e);t=Qn(t);for(let[e,r]of Object.entries(t))if(n.startsWith(e)&&$n(n[($n(e)?e.slice(0,-1):e).length]))return St(r,n.slice(e.length));return n}(t,e.alias));let a=n?.parentURL||e.url;Er(a)&&(a=St(a,`_index.js`));let o=(n?.async?[n?.conditions,[`node`,`import`],[`node`,`require`]]:[n?.conditions,[`node`,`require`],[`node`,`import`]]).filter(Boolean);for(let n of o){try{r=Wn(t,{url:a,conditions:n,extensions:e.opts.extensions})}catch(e){i=e}if(r)return r}try{return e.nativeRequire.resolve(t,{paths:n.paths})}catch(e){i=e}for(let i of e.additionalExts)if(r=Ir(e,t+i,a,n)||Ir(e,t+`/index`+i,a,n),r||(Pr.test(e.filename)||Pr.test(e.parentModule?.filename||``)||Nr.test(t))&&(r=Ir(e,t.replace(Nr,`.$1t$2`),a,n),r))return r;if(!n?.try)throw i}function Ir(e,t,n,r){try{return e.nativeRequire.resolve(t,{...r,paths:[G(In(n)),...r?.paths||[]]})}catch{}}let Lr=k(`node:fs/promises`),Rr=k(`node:perf_hooks`),zr=k(`node:vm`);var Br=r.n(zr);function Vr(e,t,n){let r=e.parentCache||{};if(t.startsWith(`node:`))return Hr(e,t,n.async);if(t.startsWith(`file:`))t=(0,K.fileURLToPath)(t);else if(t.startsWith(`data:`)){if(!n.async)throw Error("`data:` URLs are only supported in ESM context. Use `import` or `jiti.import` instead.");return $(e,`[native]`,`[data]`,`[import]`,t),Hr(e,t,!0)}if(ct.builtinModules.includes(t)||t===`.pnp.js`)return Hr(e,t,n.async);if(e.opts.virtualModules&&t in e.opts.virtualModules){$(e,`[virtual]`,t);let r=e.opts.virtualModules[t];return n.async?Promise.resolve(kr(e,r)):kr(e,r)}if(e.opts.tryNative&&!e.opts.transformOptions)try{if(!(t=Fr(e,t,n))&&n.try)return;if($(e,`[try-native]`,n.async&&e.nativeImport?`[import]`:`[require]`,t),n.async&&e.nativeImport)return e.nativeImport(t).then(n=>(!1===e.opts.moduleCache&&delete e.nativeRequire.cache[t],kr(e,n))).catch(r=>($(e,`[try-native] Using fallback for ${t} because of an error:`,r),Vr({...e,opts:{...e.opts,tryNative:!1}},t,n)));{let n=e.nativeRequire(t);return!1===e.opts.moduleCache&&delete e.nativeRequire.cache[t],kr(e,n)}}catch(n){$(e,`[try-native] Using fallback for ${t} because of an error:`,n)}let i=Fr(e,t,n);if(!i&&n.try)return;let a=Dt(i);if(a===`.json`){$(e,`[json]`,i);let t=e.nativeRequire(i);return t&&!(`default`in t)&&Object.defineProperty(t,"default",{value:t,enumerable:!1}),t}if(a&&!e.opts.extensions.includes(a))return $(e,`[native]`,`[unknown]`,n.async?`[import]`:`[require]`,i),Hr(e,i,n.async);if(e.isNativeRe.test(i))return $(e,`[native]`,n.async?`[import]`:`[require]`,i),Hr(e,i,n.async);if(r[i])return kr(e,r[i]?.exports);if(e.opts.moduleCache){let t=e.nativeRequire.cache[i];if(t?.loaded)return kr(e,t.exports)}return Kr(e,(0,W.readFileSync)(i,`utf8`),{id:t,filename:i,ext:a,cache:r,async:n.async})}function Hr(e,t,n){return n&&e.nativeImport?e.nativeImport(function(e){return fr&&Et(e)?Ln(e):e}(t)).then(t=>kr(e,t)):kr(e,e.nativeRequire(t))}function Ur(e,t,n){if(!e.opts.fsCache||!t.filename)return n();let r=` /* v9-${Dr(t.source,16)} */\n`,i=`${Ot(G(t.filename))}-${function(e){let t=e.split(Zn).pop();if(!t)return;let n=t.lastIndexOf(`.`);return n<=0?t:t.slice(0,n)}(t.filename)}`+(e.opts.sourceMaps?`+map`:``)+(t.interopDefault?`.i`:``)+`.${Dr(t.filename)}`+(t.async?`.mjs`:`.cjs`);t.jsx&&t.filename.endsWith(`x`)&&(i+=`x`);let a=e.opts.fsCache,o=St(a,i);if(!e.opts.rebuildFsCache&&(0,W.existsSync)(o)){let n=(0,W.readFileSync)(o,`utf8`);if(n.endsWith(r))return $(e,`[cache]`,`[hit]`,t.filename,`~>`,o),n}$(e,`[cache]`,`[miss]`,t.filename);let s=n();return s.includes(`__JITI_ERROR__`)||((0,W.writeFileSync)(o,s+r,`utf8`),$(e,`[cache]`,`[store]`,t.filename,`~>`,o)),s}function Wr(t){if(!0===t.opts.fsCache&&(t.opts.fsCache=function(t){let n=t.filename&&wt(t.filename,`../node_modules`);if(n&&(0,W.existsSync)(n))return St(n,`.cache/jiti`);let r=(0,e.tmpdir)();if(process.env.TMPDIR&&r===process.cwd()&&!process.env.JITI_RESPECT_TMPDIR_ENV){let t=process.env.TMPDIR;delete process.env.TMPDIR,r=(0,e.tmpdir)(),process.env.TMPDIR=t}return St(r,`jiti`)}(t)),t.opts.fsCache)try{if((0,W.mkdirSync)(t.opts.fsCache,{recursive:!0}),!function(e){try{return(0,W.accessSync)(e,W.constants.W_OK),!0}catch{return!1}}(t.opts.fsCache))throw Error(`directory is not writable!`)}catch(e){$(t,`Error creating cache directory at `,t.opts.fsCache,e),t.opts.fsCache=!1}}function Gr(e,t){let n=Ur(e,t,()=>{let n=e.opts.transform({...e.opts.transformOptions,babel:{...e.opts.sourceMaps?{sourceFileName:t.filename,sourceMaps:`inline`}:{},...e.opts.transformOptions?.babel},interopDefault:e.opts.interopDefault,...t});return n.error&&e.opts.debug&&$(e,n.error),n.code});return n.startsWith(`#!`)&&(n=`// `+n),n}function Kr(t,n,r={}){let i=r.id||(r.filename?Ot(r.filename):`_jitiEval.${r.ext||(r.async?`mjs`:`js`)}`),a=r.filename||Fr(t,i,{async:r.async}),o=r.ext||Dt(a),s=r.cache||t.parentCache||{},c=/\.[cm]?tsx?$/.test(o),l=o===`.mjs`||o===`.js`&&function(e){for(;e&&e!==`.`&&e!==`/`;){e=St(e,`..`);try{let t=(0,W.readFileSync)(St(e,`package.json`),`utf8`);try{return JSON.parse(t)}catch{}break}catch{}}}(a)?.type===`module`,u=o===`.cjs`,d=r.forceTranspile??(!u&&!(l&&r.async)&&(c||l||t.isTransformRe.test(a)||qn(n))),f=Rr.performance.now();if(d){n=Gr(t,{filename:a,source:n,ts:c,async:r.async??!1,jsx:t.opts.jsx});let e=Math.round(1e3*(Rr.performance.now()-f))/1e3;$(t,`[transpile]`,r.async?`[esm]`:`[cjs]`,a,`(${e}ms)`)}else{if($(t,`[native]`,r.async?`[import]`:`[require]`,a),r.async)return Promise.resolve(Hr(t,a,r.async)).catch(e=>($(t,`Native import error:`,e),$(t,`[fallback]`,a),Kr(t,n,{...r,forceTranspile:!0})));try{return Hr(t,a,r.async)}catch(e){$(t,`Native require error:`,e),$(t,`[fallback]`,a),n=Gr(t,{filename:a,source:n,ts:c,async:r.async??!1,jsx:t.opts.jsx})}}let p=new ct.Module(a);p.filename=a,t.parentModule&&(p.parent=t.parentModule,Array.isArray(t.parentModule.children)&&!t.parentModule.children.includes(p)&&t.parentModule.children.push(p));let m=Jr(a,t.opts,{parentModule:p,parentCache:s,nativeImport:t.nativeImport,onError:t.onError,createRequire:t.createRequire},!0),h;p.require=m,p.path=G(a),p.paths=ct.Module._nodeModulePaths(p.path),s[a]=p,t.opts.moduleCache&&(t.nativeRequire.cache[a]=p);let g=function(e,t){return`(${t?.async?`async `:``}function (exports, require, module, __filename, __dirname, jitiImport, jitiESMResolve) { ${e}\n});`}(n,{async:r.async});try{h=Br().runInThisContext(g,{filename:a,lineOffset:0,displayErrors:!1})}catch(n){n.name===`SyntaxError`&&r.async&&t.nativeImport?($(t,`[esm]`,`[import]`,`[fallback]`,a),h=function(t,n,r,i,a){let o=`export default ${n}`,s=a?void 0:`data:text/javascript;base64,${Buffer.from(o).toString(`base64`)}`;return(...n)=>{let a,c=()=>(a=function(t,n){let r=St((0,e.tmpdir)(),`jiti-esm`);try{(0,W.mkdirSync)(r,{recursive:!0})}catch{}let i=St(r,`${Ot(n,Dt(n))}-${Date.now()}-${Math.random().toString(36).slice(2)}.mjs`);return(0,W.writeFileSync)(i,t),i}(o,r),$(t,`[esm]`,`[tempfile]`,a),i(Ln(a)));return(s?i(s).catch(e=>{if(e?.code!==`ENAMETOOLONG`)throw e;return c()}):c()).then(e=>e.default(...n)).finally(()=>{a&&(0,Lr.unlink)(a).catch(()=>{})})}}(t,g,a,t.nativeImport,t.opts.esmEvalTempFile)):(t.opts.moduleCache&&delete t.nativeRequire.cache[a],t.onError(n))}let _;try{_=h(p.exports,p.require,p,p.filename,G(p.filename),m.import,m.esmResolve)}catch(e){t.opts.moduleCache&&delete t.nativeRequire.cache[a],t.onError(e)}function v(){if(p.exports&&p.exports.__JITI_ERROR__){let{filename:e,line:n,column:r,code:i,message:a}=p.exports.__JITI_ERROR__,o=Error(`${i}: ${a} \n ${`${e}:${n}:${r}`}`);Error.captureStackTrace(o,Vr),t.onError(o)}return p.loaded=!0,kr(t,p.exports)}return r.async?Promise.resolve(_).then(v):v()}let qr=(0,e.platform)()===`win32`;function Jr(e,t={},n,i=!1){let a=i?t:function(e){let t={fsCache:jr(`JITI_FS_CACHE`,jr(`JITI_CACHE`,!0)),rebuildFsCache:jr(`JITI_REBUILD_FS_CACHE`,!1),moduleCache:jr(`JITI_MODULE_CACHE`,jr(`JITI_REQUIRE_CACHE`,!0)),debug:jr(`JITI_DEBUG`,!1),sourceMaps:jr(`JITI_SOURCE_MAPS`,!1),interopDefault:jr(`JITI_INTEROP_DEFAULT`,!0),extensions:Mr(`JITI_EXTENSIONS`,[`.js`,`.mjs`,`.cjs`,`.ts`,`.tsx`,`.mts`,`.cts`,`.mtsx`,`.ctsx`]),alias:Mr(`JITI_ALIAS`,{}),nativeModules:Mr(`JITI_NATIVE_MODULES`,[]),transformModules:Mr(`JITI_TRANSFORM_MODULES`,[]),tryNative:Mr(`JITI_TRY_NATIVE`,`Bun`in globalThis),esmEvalTempFile:jr(`JITI_ESM_EVAL_TEMP_FILE`,!1),jsx:jr(`JITI_JSX`,!1),tsconfigPaths:Mr(`JITI_TSCONFIG_PATHS`,!1,!0)};t.jsx&&t.extensions.push(`.jsx`,`.tsx`);let n={};return e.cache!==void 0&&(n.fsCache=e.cache),e.requireCache!==void 0&&(n.moduleCache=e.requireCache),{...t,...n,...e}}(t);typeof e==`string`&&e.startsWith(`file://`)&&(e=In(e));let o=a.alias&&Object.keys(a.alias).length>0?Qn(a.alias||{}):void 0,s;if(a.tsconfigPaths){let{getTsconfig:t,createPathsMatcher:n}=r(`./node_modules/.pnpm/get-tsconfig@4.14.0/node_modules/get-tsconfig/dist/index.cjs`),i=t(typeof a.tsconfigPaths==`string`?a.tsconfigPaths:G(e));i&&(s=n(i))}let c=[`typescript`,`jiti`,...a.nativeModules||[]],l=RegExp(`node_modules/(${c.map(e=>Jn(e)).join(`|`)})/`),u=[...a.transformModules||[]],d=RegExp(`node_modules/(${u.map(e=>Jn(e)).join(`|`)})/`);e||=process.cwd(),!i&&Er(e)&&(e=St(e,`_index.js`));let f=Ln(e),p=[...a.extensions].filter(e=>e!==`.js`),m=n.createRequire(qr?e.replace(/\//g,`\\`):e),h={filename:e,url:f,opts:a,alias:o,resolveTsConfigPaths:s,nativeModules:c,transformModules:u,isNativeRe:l,isTransformRe:d,additionalExts:p,nativeRequire:m,onError:n.onError,parentModule:n.parentModule,parentCache:n.parentCache,nativeImport:n.nativeImport,createRequire:n.createRequire};return i||$(h,`[init]`,...[[`version:`,er.rE],[`module-cache:`,a.moduleCache],[`fs-cache:`,a.fsCache],[`rebuild-fs-cache:`,a.rebuildFsCache],[`interop-defaults:`,a.interopDefault]].flat()),i||Wr(h),Object.assign(function(e){return Vr(h,e,{async:!1})},{cache:a.moduleCache?m.cache:Object.create(null),extensions:m.extensions,main:m.main,options:a,resolve:Object.assign(function(e,t){return Fr(h,e,{...t,async:!1})},{paths:m.resolve.paths}),transform:e=>Gr(h,e),evalModule:(e,t)=>Kr(h,e,t),async import(e,t){let n=await Vr(h,e,{...t,async:!0});return t?.default?n?.default??n:n},esmResolve(e,t){typeof t==`string`&&(t={parentURL:t});let n=Fr(h,e,{parentURL:f,...t,async:!0});return!n||typeof n!=`string`||n.startsWith(`file://`)?n:Ln(n)}})}})(),t.exports=i.default})()}))();var de=class{emitter;constructor(){this.emitter=r()}on(e,t){A(e).forEach(e=>{this.emitter.on(e,t)})}off(e,t){A(e).forEach(e=>{this.emitter.off(e,t)})}emit(e,t){A(e).forEach(e=>{this.emitter.emit(e,t)})}removeAllListeners(){this.emitter.all.clear()}},fe=class{listeners;constructor(){this.listeners=new Map}on(e,t){A(e).forEach(e=>{let n=this.listeners.get(e)||new Set;n.add(t),this.listeners.set(e,n)})}off(e,t){A(e).forEach(e=>{let n=this.listeners.get(e);n&&n.delete(t)})}async emit(e,...t){let n=A(e).flatMap(e=>{let t=this.listeners.get(e)||new Set,n=this.listeners.get(`*`)||new Set;return[...Array.from(t),...Array.from(n)]});return n.length===0?[]:await Promise.all(n.map(async n=>{try{let e=n(...t);return e instanceof Promise?await e:e}catch(t){console.error(`Error in event listener for ${String(e)}:`,t);return}}))}removeAllListeners(){this.listeners.clear()}};function j(e,...t){return class extends e{static _instance;static getInstance(){return this._instance||=new e(...t),this._instance}static clearInstance(){this._instance=void 0}}}const pe=j(class extends de{destroy(){this.removeAllListeners()}fatal(e,t,n){this.emit(`fatal`,{code:t,message:e,data:n,timestamp:Date.now()})}error(e,t,n){this.emit(`error`,{code:t,message:e,data:n,timestamp:Date.now()})}warn(e,t,n){this.emit(`warning`,{code:t,message:e,data:n,timestamp:Date.now()})}});var me=class{data;_schema;_defaultValue;_path;constructor(e){let{schema:t,default:n,path:r}=e;this._schema=t,this._defaultValue=n,this._path=r}set(e){let t=this._schema[`~standard`].validate(e);if(t instanceof Promise)throw Error(`StructuredConfigFile does not support async validation`);if(t.issues)throw this.reportInvalidConfigFile(t.issues),Error(`Invalid config data for ${this._path}: ${t.issues.map(e=>e.message).join(`; `)}`);this.data=this.onBeforeSave(e),this.save(e)}get(e={}){return this.data?this.data:this.load(e)}getKey(e,t={}){return this.get(t)[e]}save(e){let t=this.onBeforeSave(e);try{d(this.getFilePath()),i.writeFileSync(this.getFilePath(),JSON.stringify(t,void 0,2))}catch{return}return this.data=t}load(e={}){let{createIfMissing:t=!0}=e;if(!this.fileExists(this.getFilePath())||!this.canReadWriteFile(this.getFilePath())){t&&this.save(this._defaultValue);let e=this.onAfterLoad(this._defaultValue);return t&&(this.data=e),e}try{let e=i.readFileSync(this.getFilePath(),`utf8`),t=this.onAfterLoad(this.parseStoredData(e));return this.data=t,t}catch{return this.data=this._defaultValue}}onBeforeSave(e){return e}onAfterLoad(e){return e}getFilePath(){return this._path}parseStoredData(e){try{let t=n(`string.json.parse`).to(`object`)(e);if(t instanceof n.errors)return this._defaultValue;let r=this._schema[`~standard`].validate(t);if(r instanceof Promise)throw Error(`StructuredConfigFile does not support async validation`);return r.issues?this.migrate(t,this._defaultValue):this.migrate(r.value,this._defaultValue)}catch{return this._defaultValue}}canReadWriteFile(e){try{return i.accessSync(e,i.constants.R_OK|i.constants.W_OK),!0}catch{return!1}}fileExists(e){try{return i.accessSync(e,i.constants.F_OK),!0}catch{return!1}}migrate(e,t){let n={...e};for(let r in t)Object.prototype.hasOwnProperty.call(t,r)&&(r in e?e[r]!==null&&t[r]!==null&&typeof e[r]==`object`&&typeof t[r]==`object`&&!Array.isArray(e[r])&&!Array.isArray(t[r])?n[r]=this.migrate(e[r],t[r]):Array.isArray(t[r])&&(n[r]=e[r]):n[r]=t[r]);return n}reportInvalidConfigFile(e){pe.getInstance().error(`Invalid config file`,`INVALID_CONFIG_FILE`,{issues:e.map(e=>e.message),filePath:this._path,data:this.data})}};function M(e,t,n){return typeof e!=`object`||!e?String(e):e instanceof Error?JSON.stringify(e,(e,t)=>{if(t instanceof Error){let e={};for(let n of Object.getOwnPropertyNames(t))e[n]=t[n];return e}return t},n):e instanceof Map?JSON.stringify(Object.fromEntries(e.entries()),t,n):e instanceof Set?JSON.stringify(Array.from(e),t,n):JSON.stringify(e,t,n)}const N=/\x1b\[[0-9;]*m/g;function P(e){return e.replace(N,``)}var he=class e extends de{stream;logPath;baseFileName;currentDate;rotationCheckInterval;isRotating=!1;constructor(e,t){super(),this.logPath=e,this.baseFileName=t.replace(`.log`,``),this.currentDate=this.getDateString(new Date),this.ensureLogDirectory(),this.ensureLogFile(),this.stream=this.createStream(),this.rotationCheckInterval=this.startRotationCheck(),this.cleanupOldLogs()}static scope(t,n){return new e(t,n)}log(...e){this.write(`info`,...e)}error(...e){this.write(`error`,...e)}warn(...e){this.write(`warn`,...e)}info(...e){this.write(`info`,...e)}debug(...e){this.write(`debug`,...e)}async close(){clearInterval(this.rotationCheckInterval),await new Promise(e=>{this.stream.end(()=>e())})}getCurrentFileName(){return this.getFileName(this.currentDate)}static getMessageElements(e,...t){let n=new Date;return{timestamp:n.toISOString().replace(`T`,` `).replace(/\.\d+Z$/,``)+`.${n.getUTCMilliseconds().toString().padStart(3,`0`)}`,level:e,message:t.map(e=>M(e)).join(` `)}}getFileName(e){return`${this.baseFileName}-${e}.log`}ensureLogDirectory(){try{s(this.logPath,{recursive:!0})}catch(e){throw console.error(`Failed to create log directory ${this.logPath}:`,e),e}}ensureLogFile(){let e=p(this.logPath,this.getFileName(this.currentDate));if(!o(e))try{u(e,``,`utf8`)}catch(t){throw console.error(`Failed to create log file ${e}:`,t),t}}getDateString(e){return`${e.getUTCFullYear()}-${(e.getUTCMonth()+1).toString().padStart(2,`0`)}-${e.getUTCDate().toString().padStart(2,`0`)}`}createStream(){return a(p(this.logPath,this.getFileName(this.currentDate)),{flags:`a`,encoding:`utf8`})}async rotateLogs(){if(this.isRotating)return;this.isRotating=!0;let e=this.getDateString(new Date);e!==this.currentDate&&await new Promise(t=>{this.stream.end(()=>{this.currentDate=e,this.stream=this.createStream(),this.cleanupOldLogs(),t()})}),this.isRotating=!1}startRotationCheck(){return setInterval(()=>this.rotateLogs(),6e4)}cleanupOldLogs(){let e=c(this.logPath),t=new Date,n=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()-7));e.filter(e=>e.startsWith(this.baseFileName)&&e.endsWith(`.log`)).filter(e=>{let[t,r,i]=e.replace(`${this.baseFileName}-`,``).replace(`.log`,``).split(`-`).map(Number);return new Date(Date.UTC(t,r-1,i))<=n}).forEach(e=>{try{l(p(this.logPath,e))}catch(t){console.error(`Failed to delete old log file ${e}:`,t)}})}ensureStreamValid(){if(!this.stream.writable||this.stream.destroyed)try{this.stream=this.createStream()}catch(e){this.emit(`error`,e instanceof Error?e:Error(String(e)))}}write(t,...n){let{timestamp:r,message:i}=e.getMessageElements(t,...n),a=`[${r}] [${t}] ${P(i)}\n`;this.ensureStreamValid(),this.stream.write(a,e=>{if(e)if(e.code===`ERR_STREAM_WRITE_AFTER_END`||!this.stream.writable)try{this.stream=this.createStream(),this.stream.write(a,e=>{e?this.emit(`error`,e):this.emit(`write`,a)})}catch(e){this.emit(`error`,e instanceof Error?e:Error(String(e)))}else this.emit(`error`,e);else this.emit(`write`,a)})}};const ge=()=>h.join(process.env.APPDATA??``,`overlayed`),F=()=>h.join(ge(),`logs`),_e=e=>h.join(ge(),`apps`,e),ve=e=>h.join(_e(e),`logs`),ye=()=>h.join(ge(),`meta.json`),be=()=>h.join(ge(),`crash-dumps`);var xe=class{fileLogger;path;appId;messageQueue=new ue;fileName;_debug=!1;silent=!1;forceSilent=!1;constructor(e){this.fileName=e}init(e,t=!1,n=!1,r=!1){this.appId=e,this._debug=t,this.silent=n,this.forceSilent=r,this.path=ve(e),this.fileLogger=new he(this.path,this.fileName),this.messageQueue.flush().forEach(e=>{this.fileLogger?.[e.type](...e.args)})}scope(e){if(!this.appId||!this.path)throw Error(`Logger not initialized`);let t=v.cyan(`[${e}]`);return{scope:e=>this.scope(e),error:(...e)=>this.error(t,...e),warn:(...e)=>this.warn(t,...e),info:(...e)=>this.info(t,...e),log:(...e)=>this.log(t,...e),debug:(...e)=>this.debug(t,...e)}}error(...e){this.handle(`error`,...e)}warn(...e){this.handle(`warn`,...e)}info(...e){this.handle(`log`,...e)}debug(...e){this._debug&&this.handle(`debug`,...e)}log(...e){this.handle(`log`,...e)}handle(e,...t){this.logToConsole(e,...t),this.fileLogger?this.fileLogger[e](...t):this.messageQueue.add({type:e,args:t})}logToConsole(e,...t){let n={error:v.red,warn:v.yellow,debug:v.blue,log:v.white};if(this.forceSilent||this.silent&&!this._debug)return;let{timestamp:r,message:i}=he.getMessageElements(e,...t),a=console[e],o=n[e];a(`${v.gray(r)} ${o(i)}`)}};const I=j(xe,`overlayed.log`);var Se=class extends ee{blob;chunkSizeMb;maxConcurrent;shouldStop=!1;constructor(e,t){super(),this.blob=e,this.chunkSizeMb=t.chunkSizeMb,this.maxConcurrent=t.maxConcurrent??3}get totalChunks(){return Math.ceil(this.blob.size/(this.chunkSizeMb*1024*1024))}async chunk(e){let t=this.chunkSizeMb*1024*1024,n=this.totalChunks;if(n===0)return;let r=new Map,i=new Set,a=new Set,o=[];for(let e=0;e<n;e++)o.push(e);let s=async n=>{let s=n*t,c=Math.min(s+t,this.blob.size),l=this.blob.slice(s,c);try{await e(l,n),a.add(n),this.emit(`chunkComplete`,n),i.delete(n)}catch(e){let t=r.get(n)||0;t<5?(r.set(n,t+1),await new Promise(e=>setTimeout(e,(t+1)*1e3)),o.push(n)):(a.add(n),this.emit(`error`,e),this.shouldStop=!0,i.delete(n))}},c=[],l=async()=>{for(;(o.length>0||i.size>0)&&!this.shouldStop;){if(o.length===0){await new Promise(e=>setTimeout(e,10));continue}let e=o.shift();a.has(e)||i.has(e)||(i.add(e),await s(e))}};for(let e=0;e<this.maxConcurrent;e++)c.push(l());await Promise.all(c)}};function L(e,t){let{recursive:n}=R(t);return S(e)?n?z(e).map(t=>[e,t]):te(e).map(t=>[e,t]):[]}function R(e){return{recursive:e?.recursive??!0}}function z(e){return te(e,{withFileTypes:!0}).flatMap(t=>{let n=h.join(e,t.name);return t.isDirectory()?z(n):[n]})}function Ce(e){return B(e),e}function B(e){if(!le(e.applicationId))throw Error(`Invalid applicationId, must be a valid ULID.`)}function we(e,t){let n=t?.cwd??process.cwd(),r=m.join(n,`.overlayed`);y.existsSync(r)||y.mkdirSync(r,{recursive:!0});let i={application:{id:e.id,name:e.name,slug:e.slug,siteUrl:e.siteUrl},release:{id:null,channel:`local`,version:`0.0.0`}},a=m.join(r,`meta.json`);return y.writeFileSync(a,JSON.stringify(i,null,2)),i}const{PipeEventServer:Te,PipeEventClient:Ee,PipeEventBase:De,GameMonitor:Oe,GameInstance:ke,HardwareInterface:Ae}=e(import.meta.url)(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`),je=j(class extends de{server=null;_hasConnection=!1;pipeId;get hasConnection(){return this._hasConnection}constructor(e){super(),this.pipeId=e,this.init()}destroy(){this.server&&=(this._hasConnection=!1,this.server?.removeAllListeners(),null)}init(){this.server=new Te(this.pipeId,{clientCount:1,access:1}),this.server.on(`event`,e=>{try{let t=JSON.parse(e);this.emit(`data`,[t])}catch(e){this.emit(`error`,e)}}),this.server.on(`connected`,()=>{this._hasConnection=!0,this.emit(`connected`,void 0)}),this.server.on(`disconnected`,()=>{this._hasConnection=!1,this.emit(`disconnected`,void 0)})}},`overlayed-event-server`),{RenderInterface:Me,renderHookPath:Ne}=e(import.meta.url)(`@overlayed/app/dist/render-interface/build/overlayed_render_interface_x64.node`);let Pe=function(e){return e[e.LeftButton=1]=`LeftButton`,e[e.RightButton=2]=`RightButton`,e[e.Cancel=3]=`Cancel`,e[e.MiddleButton=4]=`MiddleButton`,e[e.ExtraButton1=5]=`ExtraButton1`,e[e.ExtraButton2=6]=`ExtraButton2`,e[e.Back=8]=`Back`,e[e.Tab=9]=`Tab`,e[e.Clear=12]=`Clear`,e[e.Return=13]=`Return`,e[e.Shift=16]=`Shift`,e[e.Control=17]=`Control`,e[e.Menu=18]=`Menu`,e[e.Pause=19]=`Pause`,e[e.CapsLock=20]=`CapsLock`,e[e.Kana=21]=`Kana`,e[e.Hangeul=21]=`Hangeul`,e[e.Hangul=21]=`Hangul`,e[e.Junja=23]=`Junja`,e[e.Final=24]=`Final`,e[e.Hanja=25]=`Hanja`,e[e.Kanji=25]=`Kanji`,e[e.Escape=27]=`Escape`,e[e.Convert=28]=`Convert`,e[e.NonConvert=29]=`NonConvert`,e[e.Accept=30]=`Accept`,e[e.ModeChange=31]=`ModeChange`,e[e.Space=32]=`Space`,e[e.Prior=33]=`Prior`,e[e.Next=34]=`Next`,e[e.End=35]=`End`,e[e.Home=36]=`Home`,e[e.Left=37]=`Left`,e[e.Up=38]=`Up`,e[e.Right=39]=`Right`,e[e.Down=40]=`Down`,e[e.Select=41]=`Select`,e[e.Print=42]=`Print`,e[e.Execute=43]=`Execute`,e[e.Snapshot=44]=`Snapshot`,e[e.Insert=45]=`Insert`,e[e.Delete=46]=`Delete`,e[e.Help=47]=`Help`,e[e.N0=48]=`N0`,e[e.N1=49]=`N1`,e[e.N2=50]=`N2`,e[e.N3=51]=`N3`,e[e.N4=52]=`N4`,e[e.N5=53]=`N5`,e[e.N6=54]=`N6`,e[e.N7=55]=`N7`,e[e.N8=56]=`N8`,e[e.N9=57]=`N9`,e[e.A=65]=`A`,e[e.B=66]=`B`,e[e.C=67]=`C`,e[e.D=68]=`D`,e[e.E=69]=`E`,e[e.F=70]=`F`,e[e.G=71]=`G`,e[e.H=72]=`H`,e[e.I=73]=`I`,e[e.J=74]=`J`,e[e.K=75]=`K`,e[e.L=76]=`L`,e[e.M=77]=`M`,e[e.N=78]=`N`,e[e.O=79]=`O`,e[e.P=80]=`P`,e[e.Q=81]=`Q`,e[e.R=82]=`R`,e[e.S=83]=`S`,e[e.T=84]=`T`,e[e.U=85]=`U`,e[e.V=86]=`V`,e[e.W=87]=`W`,e[e.X=88]=`X`,e[e.Y=89]=`Y`,e[e.Z=90]=`Z`,e[e.LeftWindows=91]=`LeftWindows`,e[e.RightWindows=92]=`RightWindows`,e[e.Application=93]=`Application`,e[e.Sleep=95]=`Sleep`,e[e.Numpad0=96]=`Numpad0`,e[e.Numpad1=97]=`Numpad1`,e[e.Numpad2=98]=`Numpad2`,e[e.Numpad3=99]=`Numpad3`,e[e.Numpad4=100]=`Numpad4`,e[e.Numpad5=101]=`Numpad5`,e[e.Numpad6=102]=`Numpad6`,e[e.Numpad7=103]=`Numpad7`,e[e.Numpad8=104]=`Numpad8`,e[e.Numpad9=105]=`Numpad9`,e[e.Multiply=106]=`Multiply`,e[e.Add=107]=`Add`,e[e.Separator=108]=`Separator`,e[e.Subtract=109]=`Subtract`,e[e.Decimal=110]=`Decimal`,e[e.Divide=111]=`Divide`,e[e.F1=112]=`F1`,e[e.F2=113]=`F2`,e[e.F3=114]=`F3`,e[e.F4=115]=`F4`,e[e.F5=116]=`F5`,e[e.F6=117]=`F6`,e[e.F7=118]=`F7`,e[e.F8=119]=`F8`,e[e.F9=120]=`F9`,e[e.F10=121]=`F10`,e[e.F11=122]=`F11`,e[e.F12=123]=`F12`,e[e.F13=124]=`F13`,e[e.F14=125]=`F14`,e[e.F15=126]=`F15`,e[e.F16=127]=`F16`,e[e.F17=128]=`F17`,e[e.F18=129]=`F18`,e[e.F19=130]=`F19`,e[e.F20=131]=`F20`,e[e.F21=132]=`F21`,e[e.F22=133]=`F22`,e[e.F23=134]=`F23`,e[e.F24=135]=`F24`,e[e.NumLock=144]=`NumLock`,e[e.ScrollLock=145]=`ScrollLock`,e[e.NEC_Equal=146]=`NEC_Equal`,e[e.Fujitsu_Jisho=146]=`Fujitsu_Jisho`,e[e.Fujitsu_Masshou=147]=`Fujitsu_Masshou`,e[e.Fujitsu_Touroku=148]=`Fujitsu_Touroku`,e[e.Fujitsu_Loya=149]=`Fujitsu_Loya`,e[e.Fujitsu_Roya=150]=`Fujitsu_Roya`,e[e.LeftShift=160]=`LeftShift`,e[e.RightShift=161]=`RightShift`,e[e.LeftControl=162]=`LeftControl`,e[e.RightControl=163]=`RightControl`,e[e.LeftMenu=164]=`LeftMenu`,e[e.RightMenu=165]=`RightMenu`,e[e.BrowserBack=166]=`BrowserBack`,e[e.BrowserForward=167]=`BrowserForward`,e[e.BrowserRefresh=168]=`BrowserRefresh`,e[e.BrowserStop=169]=`BrowserStop`,e[e.BrowserSearch=170]=`BrowserSearch`,e[e.BrowserFavorites=171]=`BrowserFavorites`,e[e.BrowserHome=172]=`BrowserHome`,e[e.VolumeMute=173]=`VolumeMute`,e[e.VolumeDown=174]=`VolumeDown`,e[e.VolumeUp=175]=`VolumeUp`,e[e.MediaNextTrack=176]=`MediaNextTrack`,e[e.MediaPrevTrack=177]=`MediaPrevTrack`,e[e.MediaStop=178]=`MediaStop`,e[e.MediaPlayPause=179]=`MediaPlayPause`,e[e.LaunchMail=180]=`LaunchMail`,e[e.LaunchMediaSelect=181]=`LaunchMediaSelect`,e[e.LaunchApplication1=182]=`LaunchApplication1`,e[e.LaunchApplication2=183]=`LaunchApplication2`,e[e.OEM1=186]=`OEM1`,e[e.OEMPlus=187]=`OEMPlus`,e[e.OEMComma=188]=`OEMComma`,e[e.OEMMinus=189]=`OEMMinus`,e[e.OEMPeriod=190]=`OEMPeriod`,e[e.OEM2=191]=`OEM2`,e[e.OEM3=192]=`OEM3`,e[e.OEM4=219]=`OEM4`,e[e.OEM5=220]=`OEM5`,e[e.OEM6=221]=`OEM6`,e[e.OEM7=222]=`OEM7`,e[e.OEM8=223]=`OEM8`,e[e.OEMAX=225]=`OEMAX`,e[e.OEM102=226]=`OEM102`,e[e.ICOHelp=227]=`ICOHelp`,e[e.ICO00=228]=`ICO00`,e[e.ProcessKey=229]=`ProcessKey`,e[e.ICOClear=230]=`ICOClear`,e[e.Packet=231]=`Packet`,e[e.OEMReset=233]=`OEMReset`,e[e.OEMJump=234]=`OEMJump`,e[e.OEMPA1=235]=`OEMPA1`,e[e.OEMPA2=236]=`OEMPA2`,e[e.OEMPA3=237]=`OEMPA3`,e[e.OEMWSCtrl=238]=`OEMWSCtrl`,e[e.OEMCUSel=239]=`OEMCUSel`,e[e.OEMATTN=240]=`OEMATTN`,e[e.OEMFinish=241]=`OEMFinish`,e[e.OEMCopy=242]=`OEMCopy`,e[e.OEMAuto=243]=`OEMAuto`,e[e.OEMENLW=244]=`OEMENLW`,e[e.OEMBackTab=245]=`OEMBackTab`,e[e.ATTN=246]=`ATTN`,e[e.CRSel=247]=`CRSel`,e[e.EXSel=248]=`EXSel`,e[e.EREOF=249]=`EREOF`,e[e.Play=250]=`Play`,e[e.Zoom=251]=`Zoom`,e[e.Noname=252]=`Noname`,e[e.PA1=253]=`PA1`,e[e.OEMClear=254]=`OEMClear`,e}({});const Fe=n({game:`string`,type:`string`,creation_time:`number`}),Ie=Fe.and({game:`'siege' | 'tft'`,type:`'logged_in'`,content:{account_id:`string`}}),Le=Fe.and({game:`'sand'`,type:`'logged_in'`,content:{account_id:`string`,display_name:`string`,platform_id:`string`,playfab_id:`string`}}).or(Ie),Re=Fe.and({game:`'siege' | 'tft' | 'sand'`}),ze=t({"#event1":`logged_in | module_loaded | module_unloaded | unsupported_game_version`,event:`event1`,logged_in:Le,module_loaded:Re.and({type:`'module_loaded'`,content:{game_version:`string`,process_hash:`string`}}),module_unloaded:Re.and({type:`'module_unloaded'`}),unsupported_game_version:Re.and({type:`'unsupported_game_version'`,content:{game_version:`string`,process_hash:`string`}})}).export(),Be=Object.keys(ze).filter(e=>e!==`event`);function Ve(){return{key:`universal`,events:ze}}var He=class{options=null;logger;initialized=!1;constructor(e){this.logger=I.getInstance().scope(e)}init(e){this.logger.log(`Initializing`),this.options=e||null,this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1}},Ue=class extends de{options=null;logger;initialized=!1;constructor(e){super(),this.logger=I.getInstance().scope(e)}init(e){this.logger.log(`Initializing`),this.options=e||null,this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}},We=class extends fe{options=null;logger;initialized=!1;constructor(e){super(),this.logger=I.getInstance().scope(e)}init(e){this.logger.log(`Initializing`),this.options=e||null,this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}};const Ge=`https://api.overlayed.gg`,V=re.create({baseURL:Ge,headers:{Accept:`application/json`,"Accept-Encoding":`gzip, deflate, br`}});let Ke;function qe(e){Ke=e}let H;function Je(e){H=e}function Ye(e){return`overlayed/app (${Object.entries(e).map(([e,t])=>`${e}=${t}`).join(`, `)})`}V.interceptors.request.use(e=>{let t=Ke?.();e.headers??={},t&&(e.headers[`X-Api-Key`]=t);let n=H?.();return n&&(e.headers[`User-Agent`]=Ye(n)),e});function Xe(e,t){if(t<=0)throw Error(`Chunk size must be greater than 0`);if(e.length===0)return[];let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function Ze(e){return e}function Qe(e){return e?t=>(e(t),t):Ze}const $e=Qe();function et(e){return V.get(`/v1/public/applications/${e}`)}function tt(e,t){return V.get(`/v1/public/applications/${e}/releases/check`,{params:t})}function nt(e,t){return V.post(`/v1/public/applications/${e}/game-crash-reports`,t)}function rt(e,t,n){return V.post(`/v1/public/applications/${e}/game-crash-reports/${t}/confirm`,n)}function it(e,t){let n=new FormData;return n.append(`file`,new Blob([t.file],{type:`application/zip`}),`logs.zip`),n.append(`data`,JSON.stringify(t.data)),V.post(`/v1/public/applications/${e}/feedbacks`,n)}function at(e,t){return V.get(`/v1/public/applications/${e}/feature-flags`,{params:t})}function U(e,t){return V.get(`/v1/public/applications/${e}/notices`,{params:t})}const ot=Qe();function st(e,t){return V.get(`/v1/public/modules/${e}/release`,{params:{cortex_user_id:t}})}function ct(e,t,n){return V.post(`/v1/public/modules/${e}/releases/${t}/download`,n)}async function W(e,t){if(e.method!==`GET`)throw Error(`Unsupported presigned request method: ${e.method}`);let n=await fetch(e.url,{method:e.method,headers:e.headers,signal:t?.signal});if(!n.ok){let e=await ut(n);throw Error(`Presigned download failed (${n.status} ${n.statusText})${e?`: ${e}`:``}`)}let r=await n.arrayBuffer();return new Uint8Array(r)}async function lt(e,t){if(e.method!==`PUT`)throw Error(`Unsupported presigned request method: ${e.method}`);let n=await fetch(e.url,{method:e.method,headers:{...e.headers,"Content-Length":t.byteLength.toString()},body:t});if(!n.ok){let e=await ut(n);throw Error(`Presigned upload failed (${n.status} ${n.statusText})${e?`: ${e}`:``}`)}}async function ut(e){try{let t=(await e.text()).trim();if(t.length===0)return;let n=2048;return t.length>n?`${t.slice(0,n)}…`:t}catch{return}}function dt(){return V.get(`/v1/public/raven/config`)}const ft=Qe();function pt(e,t){return V.get(`/v1/public/raven/games/${e}/builds/${t}`)}function mt(e,t){return V.post(`/v1/public/raven/games/${e}/builds/upload`,null,{params:t})}function ht(e,t){let n=new FormData;return n.append(`file`,t.chunk),V.patch(`/v1/public/raven/games/${e}/builds/upload`,n,{params:t})}function gt(e){let t=Date.now(),n=e.messages.filter(e=>t-e.created_at.getTime()<6e5),r=e.messages.length-n.length;r>0&&console.warn(`Dropped ${r} cortex event(s) older than 600s`);let i=Xe(n.map(e=>_t(t,e)),50),a=Promise.all(i.map(async t=>V.post(`/v1/public/cortex/events`,{...e,messages:t})));return a.catch(e=>{let t=e?.response?.data||e?.message||e;console.error(`Failed to submit cortex events`,t)}),a}function _t(e,t){let n=e-t.created_at.getTime(),r=Math.max(0,Math.floor(n/1e3));return{properties:t.properties,type:t.type,seconds_offset:r}}function vt(e){return e instanceof Error&&(e.name===`XiorError`||e.name===`XiorTimeoutError`)}function yt(e){return!!(e&&`kind`in e.data&&`message`in e.data)}const{PipeEventServer:bt,PipeEventClient:xt,PipeEventBase:St,GameMonitor:Ct,GameInstance:wt,HardwareInterface:Tt}=e(import.meta.url)(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`);function Et(e=[]){return h.normalize(h.join(_e(global.OVERLAYED.APPLICATION_ID),...e))}const Dt=n({game:`string`,type:`string`,creation_time:`number`}),G=new me({path:ye(),schema:n({userId:`string | undefined`,sessionId:`string | undefined`,sessionLastUsed:`number | undefined`,accessToken:`string | undefined`,"debug?":{"ri_disabled?":`boolean`,"gm_disabled?":`boolean`}}),default:{userId:void 0,sessionId:void 0,sessionLastUsed:void 0,accessToken:void 0}});function Ot(){let{debug:e}=G.get();return e?{ri_disabled:e.ri_disabled??!1,gm_disabled:e.gm_disabled??!1}:{ri_disabled:!1,gm_disabled:!1}}function K(){let e=G.get().userId;if(e)return e;let t=Nt();return G.set({...G.get(),userId:t}),t}function kt(){let e=G.get();if(e.sessionId&&typeof e.sessionLastUsed==`number`&&Date.now()-e.sessionLastUsed<=300*1e3)return e.sessionId;let t=crypto.randomUUID();return G.set({...e,sessionId:t,sessionLastUsed:Date.now()}),t}function At(){try{let e=G.get();G.set({...e,sessionLastUsed:Date.now()})}catch(e){I.getInstance().log(`Failed to update sessionLastUsed`,e)}}function jt(){return G.get().accessToken}function Mt(e){try{let t=G.get();G.set({...t,accessToken:e??void 0})}catch(e){I.getInstance().log(`Failed to set accessToken`,e)}}function Nt(){try{return Tt.generateUniqueIdentifier()}catch{return crypto.randomUUID()}}const Pt=j(class extends Ue{UPDATE_CHECK_INTERVAL_MS=1e3*60*5;targetDir;updateInterval;constructor(){super(`NativeModuleManager`),this.targetDir=h.join(ge(),`resources`),this.logger.log(`Target directory`,this.targetDir)}async initWithDlls(e){super.init(),await D.mkdir(this.targetDir,{recursive:!0}),await this.checkForUpdates(e),clearInterval(this.updateInterval),this.updateInterval=setInterval(()=>this.checkForUpdates(e),this.UPDATE_CHECK_INTERVAL_MS)}destroy(){this.updateInterval&&=(clearInterval(this.updateInterval),void 0),super.destroy()}async getDllFile(e){let t=await this.getCurrentBuildInfo(e);if(!t){this.logger.error(`No build found for module`,{moduleId:e});return}let n=this.getBuildPath(e,t.buildId);if(!S(n)){this.logger.error(`No build file found for module`,{moduleId:e});return}let r=h.join(n,t.buildFileName);if(!S(r)){this.logger.error(`No DLL file found for module`,{moduleId:e});return}return r}async getCurrentBuildInfo(e){try{let t=h.join(this.targetDir,e,`build.json`),n=await D.readFile(t,`utf-8`);return JSON.parse(n)}catch{return null}}getModulePath(e){return h.join(this.targetDir,e)}getBuildPath(e,t){return h.join(this.getModulePath(e),t)}async checkForUpdates(e){this.logger.log(`Checking for updates`);let t=K();if(!t){this.logger.error(`Failed to resolve cortex user id`);return}this.logger.log(`Cortex User ID`,t);for(let n of e)try{let{data:e}=await st(n,t);this.logger.log(`Release`,e);let r=(await this.getCurrentBuildInfo(n))?.buildId||null;this.logger.log(`${n} > Performing update check. current: ${r}, requested: ${e.build_id}`),e.build_id!==r||await this.isDownloadCorrupted(this.getBuildPath(n,e.build_id),e)?(this.logger.log(`${n} > Update found. current: ${r}, requested: ${e.build_id}`),this.logger.log(`${n} > Downloading and extracting DLLs`),await this.downloadAndExtractDll(n,e),this.logger.log(`${n} > Cleaning up other builds`),await this.cleanupExistingBuilds(n,e.build_id),this.emit(`dllUpdated`,{moduleId:n,buildId:e.build_id,releaseId:e.release_id})):this.logger.log(`${n} > No update found`)}catch(e){this.logger.error(`${n} > Error checking/updating`,e)}}async downloadAndExtractDll(e,t){this.logger.log(`${e} > Requesting download for build ${t.build_id}`);let n=K();if(!n){this.logger.error(`Failed to resolve cortex user id`);return}let{data:r}=await ct(e,t.release_id,{download_token:t.download_token,cortex_user_id:n});this.logger.log(`${e} > Downloading DLLs for build ${t.build_id}`);let i=await W(r,{signal:AbortSignal.timeout(1e3*60*5)});this.logger.log(`${e} > Downloaded zip file for build ${t.build_id}`);let a=this.getBuildPath(e,t.build_id);await D.mkdir(a,{recursive:!0});let o=new ie;await o.loadAsync(i);let s=Object.keys(o.files).map(e=>({name:e,file:o.files[e]})).filter(({file:e})=>!e.dir);if(s.length!==1){this.logger.error(`${e} > Zip must contain exactly 1 file, got ${s.length}`);return}let c=s[0],l=h.basename(c.name),u=h.normalize(l),d=h.isAbsolute(u),f=u.startsWith(`..`)||u.includes(`..${h.sep}`);if(l===``||l===`.`||l===`..`){this.logger.error(`${e} > Zip contained an invalid file name: ${c.name}`);return}if(!l.toLowerCase().endsWith(`.dll`)){this.logger.error(`${e} > Zip contained a non-dll file: ${c.name}`);return}if(d||f){this.logger.error(`${e} > Zip entry path is unsafe: ${c.name}`);return}let p=h.join(a,u),m=await c.file.async(`nodebuffer`);await D.writeFile(p,m),this.logger.log(`${e} > Extracted 1 file to ${p}`);let g={buildId:t.build_id,buildFileName:t.build_file_name},_=h.join(this.getModulePath(e),`build.json`);await D.writeFile(_,JSON.stringify(g),`utf-8`),this.logger.log(`${e} > Saved buildId to file: ${t.build_id}`)}async cleanupExistingBuilds(e,t){let n=this.getModulePath(e),r=this.getBuildPath(e,t),i=await D.readdir(n,{withFileTypes:!0});for(let t of i)t.isDirectory()&&h.join(n,t.name)!==r&&(await D.rm(h.join(n,t.name),{recursive:!0,force:!0}),this.logger.log(`${e} > Cleaned up build: ${t.name}`))}async hasPathAccess(e){try{return await D.access(e,D.constants.F_OK),!0}catch{return!1}}async isDownloadCorrupted(e,t){if(!await this.hasPathAccess(e))return this.logger.error(`Download is corrupted. Path does not exist: ${e}`),!0;let n=t.build_file_name,r=h.join(e,n);if(!S(r))return this.logger.error(`Download is corrupted. Build file not found: ${r}`),!0;if(t.build_hash){let e=await D.readFile(r),i=ne(`sha256`).update(e).digest(`hex`);if(i.toLowerCase()!==t.build_hash.toLowerCase())return this.logger.error(`Download is corrupted. Build file hash mismatch: ${n} ${i.toLowerCase()} !== ${t.build_hash.toLowerCase()}`),!0}return!1}}),Ft=j(class extends Ue{_gameMonitor;_games=new Map;constructor(){super(`GameManager`),this._gameMonitor=new Ct}get hasAnyActiveGames(){return this._games.size>0}init(){super.init(),this._gameMonitor.on(`launch`,e=>{this.logger.log(`Game launched`,e.identifier,e.processId),this._games.set(e.processId,e),this.logger.log(`Active Game Count: ${this._games.size}`),this.emit(`launch`,{game:e})}),this._gameMonitor.on(`close`,e=>{this.logger.log(`Game closed`,e.identifier,e.processId),this._games.delete(e.processId),this.logger.log(`Active Game Count: ${this._games.size}`),this.emit(`close`,{game:e})})}destroy(){this._games.clear(),this._gameMonitor.removeAllListeners(),super.destroy()}}),It=j(class extends Ue{REFETCH_INTERVAL=1e3*60*5;FAILED_REFETCH_INTERVAL=1e3*30;_refetchIntervalHandler=null;_failedRefetchTimeoutHandler=null;_ready;_resolveReady;constructor(){super(`RavenManager`),this._ready=new Promise(e=>{this._resolveReady=e})}get ready(){return this._ready}init(){super.init(),this.fetchRavenConfig(),this._refetchIntervalHandler=setInterval(()=>{this._failedRefetchTimeoutHandler&&=(clearTimeout(this._failedRefetchTimeoutHandler),null),this.fetchRavenConfig()},this.REFETCH_INTERVAL)}destroy(){this._refetchIntervalHandler&&clearInterval(this._refetchIntervalHandler),this._failedRefetchTimeoutHandler&&clearTimeout(this._failedRefetchTimeoutHandler),Pt.getInstance().destroy(),super.destroy()}async fetchRavenConfig(){try{let e=await dt(),t=new Set;for(let n of e.data.games)n.modules.forEach(e=>t.add(e));await Pt.getInstance().initWithDlls(Array.from(t)),this.logger.log(`Raven updated, tracking ${t.size} game modules`),this._resolveReady()}catch(e){this.logger.error(`Failed to fetch Raven config`,e),this._failedRefetchTimeoutHandler=setTimeout(()=>this.fetchRavenConfig(),this.FAILED_REFETCH_INTERVAL)}}});var Lt=class{_instance;_resolution;boundOnResolutionChanged=this.onResolutionChanged.bind(this);constructor(e){this._instance=e,this._resolution={width:0,height:0},this._instance.on(`resolution`,this.boundOnResolutionChanged)}destroy(){this._instance.off(`resolution`,this.boundOnResolutionChanged)}get instance(){return this._instance}get resolution(){return this._resolution}onResolutionChanged(e,t){this._resolution={width:e,height:t}}};const Rt=j(class{interfaces={};constructor(){}createInterface(e){return this.interfaces[e]||(this.interfaces[e]=new Lt(new Me(e,{access:1}))),this.interfaces[e]}getInterface(e){return this.interfaces[e]?this.interfaces[e]:this.createInterface(e)}}),q=j(class{options;eventQueue;meta=null;enabled=!0;constructor(e){this.options=this.resolveOptions(e),this.eventQueue=new ue,this.setupFlushInterval()}track(e,t){this.enabled&&this.eventQueue.add({type:e,properties:t,created_at:new Date})}flush(){if(!this.enabled)return[];let e=Array.from(this.eventQueue.flush()).concat({type:`ping`,properties:{},created_at:new Date});if(!this.meta)throw Error(`Tried to flush Cortex events before meta was set`);try{gt({...this.meta,messages:e})}catch{}return e}setupFlushInterval(){this.enabled&&setInterval(()=>{this.flush()},this.options.batchIntervalSeconds*1e3)}resolveOptions(e){return{batchIntervalSeconds:e?.batchIntervalSeconds??15}}}),zt=e(import.meta.url),Bt=zt.resolve(`@overlayed/app/dist/render-interface/build/overlayed_render_hook_x64.dll`),Vt=zt.resolve(`@overlayed/app/dist/render-interface/build/overlayed_render_hook_x86.dll`),Ht=zt.resolve(`@overlayed/app/dist/native-interface/build/overlayed_injector_x64.exe`),Ut=zt.resolve(`@overlayed/app/dist/native-interface/build/overlayed_injector_x86.exe`),J=j(class extends We{boundOnGameLaunch=this.onGameLaunch.bind(this);boundOnGameClose=this.onGameClose.bind(this);subscribedGames=new Set;activeGames=new Map;pendingLaunches=new Map;get isInGame(){return this.activeGames.size>0}constructor(){super(`GameLaunchManager`)}setSubscribedGames(e){this.subscribedGames=new Set(e)}getActiveGames(){return Array.from(new Set(Array.from(this.activeGames.values()).map(e=>e.game)))}init(){super.init(),Rt.getInstance().createInterface(`OGG_SIEGE`),Ft.getInstance().on(`launch`,this.boundOnGameLaunch),Ft.getInstance().on(`close`,this.boundOnGameClose)}destroy(){Ft.getInstance().off(`launch`,this.boundOnGameLaunch),Ft.getInstance().off(`close`,this.boundOnGameClose),super.destroy()}on(e,t){super.on(e,t);let n=A(e);if(!(n.includes(`gameReady`)||n.includes(`*`))||this.activeGames.size===0)return;let r=t;for(let e of this.activeGames.values())this.logger.log(`Late calling gameReady callback for game`,e.game),r(e)}async onGameLaunch({game:e}){this.logger.log(`On game launch`,e.identifier,e.executableName,e.processId);let t=ft(e.identifier);if(q.getInstance().track(`game_launch`,{game:t}),this.subscribedGames.size===0){this.logger.warn(`No subscribed games, skipping`);return}if(!this.subscribedGames.has(t)&&!this.subscribedGames.has(`*`))return;let n=new AbortController;if(this.pendingLaunches.set(e.processId,n),await this.emit(`gameLaunch`,{game:t,processId:e.processId,reject:()=>n.abort()}),n.signal.aborted)return;if(this.logger.log(`Game Launched`,e.identifier),this.logger.log(`Game is elevated: `,e.isElevated),e.hasElevationMismatch){pe.getInstance().fatal(`Game is elevated but the App is not`,`ELEVATION_MISMATCH`,{appElevated:!1,gameElevated:!0}),this.logger.log(`Game elevated but App is not`);return}if(e.injectionDelayMs>0){if(this.logger.log(`Delaying injection for ${e.injectionDelayMs}ms to allow game to be ready`),await new Promise(t=>{let r=setTimeout(t,e.injectionDelayMs);n.signal.addEventListener(`abort`,()=>{clearTimeout(r),t()},{once:!0})}),n.signal.aborted){this.logger.log(`Game closed during the injection delay, skipping injection`);return}this.logger.log(`Finished delay`)}let{ri_disabled:r,gm_disabled:i}=Ot(),a=!1;if(!r&&e.hasRenderSupport&&e.allowDllInjections?a=await this.injectRenderInterface(e):this.logger.log(`Skipping render interface injection`,{has_render_support:e.hasRenderSupport,allow_dll_injections:e.allowDllInjections,ri_disabled:r}),!i&&e.allowDllInjections?await this.injectGameModules(e):this.logger.log(`Skipping game module(s) injection`,{allow_dll_injections:e.allowDllInjections,gm_disabled:i}),n.signal.aborted){this.logger.log(`Game closed during injection, skipping ready`);return}this.pendingLaunches.delete(e.processId);let o={game:t,processId:e.processId,inGameRenderingSupported:a};this.activeGames.set(e.processId,o),this.logger.debug(`Active games`,this.getActiveGames().join(`, `)),this.logger.log(`Game Ready`),this.emit(`gameReadyInternal`,{game:e}),this.emit(`gameReady`,o),q.getInstance().track(`game_ready`,{game:t})}copyInjectors(){let e=this.copyDll(Ht),t=this.copyDll(Ut);return!e||!t?(this.logger.error(`Failed to copy injector executables`),!1):h.dirname(e)}copyDll(e){let t=h.basename(e),n=_(e),r=h.join(ge(),`resources`),i=h.join(r,t);this.logger.info(`Copying`,n,`to`,i);try{S(r)||C(r,{recursive:!0}),b(n,i)}catch(e){return e.code===`EBUSY`?i:(this.logger.error(`Failed to copy`,e),this.logger.error(`Failed to copy`,{originalPath:n,targetPath:i}),!1)}return i}async injectRenderInterface(e){this.logger.log(`Injecting render interface`,{is32Bit:e.is32Bit,game:e.identifier});let t=e.is32Bit?Vt:Bt;this.logger.log(`Render hook path`,t);let n=this.copyDll(t);if(!n)return this.logger.error(`Failed to copy render hook DLL`,{renderHookPath:t}),!1;let r=this.copyInjectors();if(!r)return!1;this.logger.log(`Resolved injector path`,r);try{return this.logger.log(`Injecting render interface`,n),await e.injectDll(n,r),this.logger.log(`Render Interface Injection Successful`,n),!0}catch(e){return this.logger.error(`Render Interface Injection Failed`,e),this.logger.error(`Render Interface Injection Failed`,{renderHookPathCopied:n}),!1}}async injectGameModules(e){let t=this.copyInjectors();if(t){this.logger.log(`Resolved injector path`,t),await It.getInstance().ready;for(let n of e.modules){let r=await Pt.getInstance().getDllFile(n);if(!r){this.logger.error(`No DLL file found for module`,{moduleId:n});continue}try{this.logger.log(`Injecting game module`,r),await e.injectDll(r,t),this.logger.log(`Injection Successful`,r)}catch(e){this.logger.error(`Injection Failed`,{dllFile:r},e)}}}}async onGameClose({game:e}){let t=ft(e.identifier);this.pendingLaunches.get(e.processId)?.abort(),this.pendingLaunches.delete(e.processId),this.activeGames.delete(e.processId),this.logger.debug(`Active games`,this.getActiveGames().join(`, `)),this.emit(`gameCloseInternal`,{game:e}),this.emit(`gameClose`,{game:t,processId:e.processId}),q.getInstance().track(`game_close`,{game:t})}}),Wt=j(class extends He{boundOnGameLaunch=this.onGameLaunch.bind(this);constructor(){super(`GameBuildManager`)}init(){super.init(),J.getInstance().on(`gameReadyInternal`,this.boundOnGameLaunch)}destroy(){J.getInstance().off(`gameReadyInternal`,this.boundOnGameLaunch),super.destroy()}async onGameLaunch(...e){let[{game:t}]=e;if(!t.executablePath||!t.executableName){this.logger.error(`Executable path or name not found, could not check for build hash`,void 0,t.identifier);return}let n=ft(t.identifier),r=w(t.executablePath),i=ne(`sha256`).update(r).digest(`hex`);this.logger.log(`Executable Path`,t.executablePath),this.logger.log(`Executable Name`,t.executableName),this.logger.log(`Build Hash`,i);let a=!1;try{a=(await pt(n,i)).data.upload}catch(e){this.logger.error(`Error checking game build hash`,e);return}if(!a){this.logger.log(`Build hash already exists, skipping upload`);return}let o=new ie;o.file(t.executableName,r);let s=await o.generateAsync({type:`blob`});try{this.logger.log(`Uploading build (size: `,s.size,` bytes)`);let e=new Se(s,{chunkSizeMb:25,maxConcurrent:1}),t=await mt(n,{build_hash:i,chunk_count:e.totalChunks,file_size_bytes:s.size});await e.chunk(async(e,r)=>{this.logger.log(`Uploading chunk`,r),await ht(n,{chunk:e,build_hash:i,chunk_index:r,upload_token:t.data.upload_token})}),this.logger.log(`Build uploaded successfully`)}catch(e){vt(e)?yt(e.response)?this.logger.error(`Error uploading build hash, api error`,e):this.logger.error(`Error uploading build hash, request error`,e):this.logger.error(`Error uploading build hash, unknown error`,e)}}}),Gt=j(class extends He{constructor(){super(`CampaignManager`)}async check(e){let t=h.join(_e(e),`campaign_code.txt`);try{let e=(await E.readFile(t,`utf-8`)).trim().replace(/ \(\d+\)/g,``);e&&(this.logger.log(`UTM campaign code found`,e),q.getInstance().track(`utm_attribution`,{campaign_code:e}),q.getInstance().flush())}catch{}}}),Kt=new me({path:f.normalize(`${process.env.APPDATA||process.env.HOME||`.`}/.overlayed/config.json`),default:void 0,schema:t({Account:n({email:`string`,apiKey:`string`,"applicationId?":`string`,"baseUrl?":`string`})}).type({currentAccount:`Account | undefined`,accounts:`Account[]`}).or(`undefined`)});function qt(e,t){let n=t.applicationId===void 0||e.applicationId===void 0||e.applicationId===t.applicationId,r=(e.baseUrl??`https://api.overlayed.gg`)===t.baseUrl;return n&&r}function Jt(e){let{currentAccount:t,accounts:n,expected:r}=e;if(t&&qt(t,r))return{account:t,source:`current`};let i=n.find(e=>qt(e,r));if(i)return{account:i,source:`other`}}function Yt(e,t){return`${e}:${t}`}function Xt(e,t,n){return e.reduce((e,r)=>{let i=r.key;return e[i]={on(e,n){let r=Yt(i,e),a=t.get(r)??new Set;a.add(n),t.set(r,a)},onAny(e){let n=Yt(i,`*`),r=t.get(n)??new Set;r.add(e),t.set(n,r)},off(e,n){let r=Yt(i,e),a=t.get(r);a&&(a.delete(n),a.size===0&&t.delete(r))},offAny(e){let n=Yt(i,`*`),r=t.get(n);r&&(r.delete(e),r.size===0&&t.delete(n))},readyForGameEvents:()=>{n.emit(`flushEvents`,i)}},e},{})}function Zt(){let e=pe.getInstance(),t=J.getInstance();return{on:(n,r)=>{switch(n){case`fatal`:e.on(`fatal`,r);break;case`error`:e.on(`error`,r);break;case`warning`:e.on(`warning`,r);break;case`gameLaunch`:t.on(`gameLaunch`,r);break;case`gameClose`:t.on(`gameClose`,r);break;case`gameReady`:t.on(`gameReady`,r);break;default:throw Error(`Event type not implemented ${n}`,{cause:[n,r]})}},off:(n,r)=>{switch(n){case`fatal`:e.off(`fatal`,r);break;case`error`:e.off(`error`,r);break;case`warning`:e.off(`warning`,r);break;case`gameLaunch`:t.off(`gameLaunch`,r);break;case`gameClose`:t.off(`gameClose`,r);break;case`gameReady`:t.off(`gameReady`,r);break;default:throw Error(`Event type not implemented ${n}`,{cause:[n,r]})}}}}const Qt=new Map([[1,`LeftButton`],[2,`RightButton`],[3,`Cancel`],[4,`MiddleButton`],[5,`ExtraButton1`],[6,`ExtraButton2`],[8,`Backspace`],[9,`Tab`],[12,`Clear`],[13,`Enter`],[16,`ShiftLeft`],[17,`ControlLeft`],[18,`AltLeft`],[19,`Pause`],[20,`CapsLock`],[21,`KanaMode`],[23,`JunjaMode`],[24,`Finalize`],[25,`HanjaMode`],[27,`Escape`],[28,`Convert`],[29,`NonConvert`],[30,`Accept`],[31,`ModeChange`],[32,`Space`],[33,`PageUp`],[34,`PageDown`],[35,`End`],[36,`Home`],[37,`ArrowLeft`],[38,`ArrowUp`],[39,`ArrowRight`],[40,`ArrowDown`],[41,`Select`],[42,`PrintScreen`],[43,`Execute`],[44,`Snapshot`],[45,`Insert`],[46,`Delete`],[47,`Help`],[48,`Digit0`],[49,`Digit1`],[50,`Digit2`],[51,`Digit3`],[52,`Digit4`],[53,`Digit5`],[54,`Digit6`],[55,`Digit7`],[56,`Digit8`],[57,`Digit9`],[65,`KeyA`],[66,`KeyB`],[67,`KeyC`],[68,`KeyD`],[69,`KeyE`],[70,`KeyF`],[71,`KeyG`],[72,`KeyH`],[73,`KeyI`],[74,`KeyJ`],[75,`KeyK`],[76,`KeyL`],[77,`KeyM`],[78,`KeyN`],[79,`KeyO`],[80,`KeyP`],[81,`KeyQ`],[82,`KeyR`],[83,`KeyS`],[84,`KeyT`],[85,`KeyU`],[86,`KeyV`],[87,`KeyW`],[88,`KeyX`],[89,`KeyY`],[90,`KeyZ`],[91,`MetaLeft`],[92,`MetaRight`],[93,`ContextMenu`],[95,`Sleep`],[96,`Numpad0`],[97,`Numpad1`],[98,`Numpad2`],[99,`Numpad3`],[100,`Numpad4`],[101,`Numpad5`],[102,`Numpad6`],[103,`Numpad7`],[104,`Numpad8`],[105,`Numpad9`],[106,`NumpadMultiply`],[107,`NumpadAdd`],[108,`NumpadSeparator`],[109,`NumpadSubtract`],[110,`NumpadDecimal`],[111,`NumpadDivide`],[112,`F1`],[113,`F2`],[114,`F3`],[115,`F4`],[116,`F5`],[117,`F6`],[118,`F7`],[119,`F8`],[120,`F9`],[121,`F10`],[122,`F11`],[123,`F12`],[124,`F13`],[125,`F14`],[126,`F15`],[127,`F16`],[128,`F17`],[129,`F18`],[130,`F19`],[131,`F20`],[132,`F21`],[133,`F22`],[134,`F23`],[135,`F24`],[144,`NumLock`],[145,`ScrollLock`],[146,`NEC_Equal`],[147,`Fujitsu_Masshou`],[148,`Fujitsu_Touroku`],[149,`Fujitsu_Loya`],[150,`Fujitsu_Roya`],[160,`ShiftLeft`],[161,`ShiftRight`],[162,`ControlLeft`],[163,`ControlRight`],[164,`AltLeft`],[165,`AltRight`],[166,`BrowserBack`],[167,`BrowserForward`],[168,`BrowserRefresh`],[169,`BrowserStop`],[170,`BrowserSearch`],[171,`BrowserFavorites`],[172,`BrowserHome`],[173,`VolumeMute`],[174,`VolumeDown`],[175,`VolumeUp`],[176,`MediaTrackNext`],[177,`MediaTrackPrevious`],[178,`MediaStop`],[179,`MediaPlayPause`],[180,`LaunchMail`],[181,`LaunchMediaSelect`],[182,`LaunchApplication1`],[183,`LaunchApplication2`],[186,`OEM_1`],[187,`Equal`],[188,`Comma`],[189,`Minus`],[190,`Period`],[191,`Slash`],[192,`Backquote`],[219,`BracketLeft`],[220,`Backslash`],[221,`BracketRight`],[222,`Quote`],[223,`IntlRo`],[225,`OEM_AX`],[226,`IntlBackslash`],[227,`ICO_HELP`],[228,`ICO_00`],[229,`Process`],[230,`ICO_CLEAR`],[231,`Packet`],[233,`OEM_Reset`],[234,`OEM_Jump`],[235,`OEM_PA1`],[236,`OEM_PA2`],[237,`OEM_PA3`],[238,`OEM_WS_Ctrl`],[239,`OEM_CU_Sel`],[240,`OEM_ATTN`],[241,`OEM_Finish`],[242,`OEM_Copy`],[243,`OEM_Auto`],[244,`OEM_ENLW`],[245,`BackTab`],[246,`ATTN`],[247,`CRSel`],[248,`EXSel`],[249,`EREOF`],[250,`MediaPlay`],[251,`Zoom`],[252,`Noname`],[253,`PA1`],[254,`OEM_Clear`]]),$t=new Map(Qt.entries().map(([e,t])=>[t,e])),en=n({"[string]":{keys:`string[]`,mode:n(`'toggle' | 'hold'`).pipe(e=>e??`toggle`)}});var tn=class extends Ue{preferencesKeybindToCallbacks=new Map;pressedKeys=new Set;activeKeybinds=new Set;triggeredToggleKeybinds=new Set;boundHandleKeyboardFocus=this.handleKeyboardFocus.bind(this);boundHandleKeyDown=this.handleKeyDown.bind(this);boundHandleKeyUp=this.handleKeyUp.bind(this);keybindsFile;keybindListeningPaused=!1;constructor(e){super(`KeybindManager`),this.keybindsFile=new me({path:Et([`keybinds.json`]),schema:en,default:e})}init(){super.init();let e=Rt.getInstance().getInterface(`OGG_SIEGE`);e.instance.on(`keyboardFocus`,this.boundHandleKeyboardFocus),e.instance.on(`keyDown`,this.boundHandleKeyDown),e.instance.on(`keyUp`,this.boundHandleKeyUp)}async onKeybindToggled(e,t){let n=this.preferencesKeybindToCallbacks.get(e)??{toggle:[],down:[],up:[]};n.toggle.push(t),this.preferencesKeybindToCallbacks.set(e,n)}async onKeybindDown(e,t){let n=this.preferencesKeybindToCallbacks.get(e)??{toggle:[],down:[],up:[]};n.down.push(t),this.preferencesKeybindToCallbacks.set(e,n)}async onKeybindUp(e,t){let n=this.preferencesKeybindToCallbacks.get(e)??{toggle:[],down:[],up:[]};n.up.push(t),this.preferencesKeybindToCallbacks.set(e,n)}async updateKeybind(e,t){this.keybindsFile.set({[e]:t})}async updateKeybinds(e){let t=Object.fromEntries(Object.entries(e).filter(([e,t])=>t!==void 0));this.keybindsFile.set({...this.keybindsFile.get(),...t})}getConfig(){return this.keybindsFile.get()}destroy(){let e=Rt.getInstance().getInterface(`OGG_SIEGE`);e.instance.off(`keyboardFocus`,this.boundHandleKeyboardFocus),e.instance.off(`keyDown`,this.boundHandleKeyDown),e.instance.off(`keyUp`,this.boundHandleKeyUp),super.destroy()}handleKeyDown(e){if(this.keybindListeningPaused)return;let t=Qt.get(e.key);if(!t){this.logger.error(`Unknown key down`,e);return}this.pressedKeys.add(t),this.checkKeybindings()}handleKeyboardFocus(){this.pressedKeys.clear(),this.activeKeybinds.clear(),this.triggeredToggleKeybinds.clear()}async handleKeyUp(e){if(this.keybindListeningPaused)return;let t=Qt.get(e.key);if(!t)return;this.pressedKeys.delete(t);let n=this.keybindsFile.get();for(let[e]of this.preferencesKeybindToCallbacks.entries())n[e].keys.includes(t)&&this.triggeredToggleKeybinds.delete(e);this.checkKeybindUps()}async checkKeybindUps(){let e=this.keybindsFile.get();for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){if(!n.up||n.up.length===0)continue;let r=e[t];if(this.activeKeybinds.has(t)&&r.keys.some(e=>!this.pressedKeys.has(e))){this.activeKeybinds.delete(t);for(let e of n.up)e();this.logger.log(`Keybind up triggered`,this.getKeybindToString(r))}}}async checkKeybindings(){let e=this.keybindsFile.get();for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){let r=e[t];if(r.keys.length===this.pressedKeys.size&&r.keys.every(e=>$t.has(e)?this.pressedKeys.has(e):!1)){this.triggerKeybind(r,n,t);return}}for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){let r=e[t];r.keys.every(e=>$t.has(e)?this.pressedKeys.has(e):(this.logger.error(`Unknown key`,e,r),!1))&&this.triggerKeybind(r,n,t)}}triggerKeybind(e,t,n){let r=e.mode;if(r===`toggle`&&t.toggle&&t.toggle.length>0&&!this.triggeredToggleKeybinds.has(n)){let r;for(let e of t.toggle){let t=e();typeof t==`string`&&r===void 0&&(r=t)}this.triggeredToggleKeybinds.add(n),this.logger.log(r?`Keybind pressed rejected: ${r}`:`Keybind pressed accepted`,this.getKeybindToString(e))}if(r===`hold`&&t.down&&t.down.length>0&&!this.activeKeybinds.has(n)){let r;for(let e of t.down){let t=e();if(typeof t==`string`){r=t;break}}r?this.logger.log(`Keybind down rejected: ${r}`,this.getKeybindToString(e)):(this.activeKeybinds.add(n),this.logger.log(`Keybind down accepted`,this.getKeybindToString(e)))}}getKeybindToString(e){return`(${e.keys.join(`+`)}${e.mode?` ${e.mode}`:``})`}};function nn(e){let t=new tn(e),n={};for(let r in e)n[r]={on:(e,n)=>{switch(e){case`down`:t.onKeybindDown(r,n);break;case`up`:t.onKeybindUp(r,n);break;case`toggle`:t.onKeybindToggled(r,n);break;default:throw Error(`Event type not implemented ${e}`,{cause:[e,n]})}}};let r={...n,getConfig:()=>t.getConfig(),pauseKeybindListening:()=>{t.keybindListeningPaused=!0},resumeKeybindListening:()=>{t.keybindListeningPaused=!1},updateKeybind:(e,n)=>{t.updateKeybind(e,n)},updateKeybinds:e=>{t.updateKeybinds(e)}};return t.init(),ae.on(`quit`,()=>{t.destroy()}),r}function Y(){return Rt.getInstance().getInterface(`OGG_SIEGE`)}function rn(){let e=J.getInstance(),t=pe.getInstance(),n=q.getInstance();if(!ae.isPackaged){I.getInstance().info(`Cortex is disabled in development`),n.enabled=!1;return}try{n.meta=an()}catch(e){I.getInstance().error(`Failed to setup cortex`,e);return}e.on([`gameReady`,`gameClose`],()=>{n.meta||=an(),n.meta.in_game=e.isInGame}),t.on(`fatal`,e=>{n.track(`fatal`,{message:e.message,code:e.code,data:JSON.stringify(e.data)})}),t.on(`error`,e=>{n.track(`error`,{code:e.code,message:e.message,data:JSON.stringify(e.data)})}),t.on(`warning`,e=>{n.track(`warning`,{message:e.message,code:e.code,data:JSON.stringify(e.data)})})}function an(){if(!global.OVERLAYED_META.release.id)throw Error(`Release ID is required`);return{app_id:global.OVERLAYED.APPLICATION_ID,user_id:K(),release_id:global.OVERLAYED_META.release.id,app_channel:global.OVERLAYED.APP_BUILD_CHANNEL,app_version:global.OVERLAYED.APP_VERSION,package_version:global.OVERLAYED.PACKAGE_VERSION,frontend_version:global.OVERLAYED.FRONTEND_VERSION,frontend_release_id:global.OVERLAYED.FRONTEND_RELEASE_ID,session_id:global.OVERLAYED.sessionId,in_game:!1}}const on=j(class extends Ue{CHECK_INTERVAL=1e3*60*15;RETRY_INTERVAL=1e3*15;_updateCheckInterval=null;_latestCheckResponse=null;_activeCheckResponse=null;initialReleaseId=null;get manualUpdatesEnabled(){return this.options?.manualUpdates??!1}get activeReleaseId(){return this._activeCheckResponse?.release_id??this.initialReleaseId}constructor(){super(`SiteManager`)}init(e){super.init(e),e?.manualUpdates&&this.enableManualUpdates()}destroy(){super.destroy(),this._updateCheckInterval&&=(clearInterval(this._updateCheckInterval),null)}allowSiteUpdateOnNextLoad(){if(!this.options?.manualUpdates){this.logger.warn(`allowSiteUpdateOnNextLoad called but manual updates are disabled`);return}if(!this._latestCheckResponse){this.logger.warn(`allowSiteUpdateOnNextLoad called but no update has been checked yet`);return}if(this._activeCheckResponse?.release_id===this._latestCheckResponse.release_id){this.logger.warn(`allowSiteUpdateOnNextLoad called but theres no update available`);return}this._activeCheckResponse=this._latestCheckResponse,q.getInstance().track(`site_update_applied`,{version:this._latestCheckResponse.version,release_id:this._latestCheckResponse.release_id}),this.setFrontendCortexMeta(this._latestCheckResponse.release_id,this._latestCheckResponse.version)}setFrontendCortexMeta(e,t){let n=q.getInstance();n.meta||=an(),e&&(global.OVERLAYED.FRONTEND_RELEASE_ID=e,n.meta.frontend_release_id=e),t&&(global.OVERLAYED.FRONTEND_VERSION=t,n.meta.frontend_version=t),e&&t&&n.track(`frontend_version_changed`,{version:t,release_id:e})}enableManualUpdates(){this.logger.log(`Enabling manual site updates`),this.checkForUpdates(),this._updateCheckInterval=setInterval(()=>{this.checkForUpdates(!0)},this.CHECK_INTERVAL)}async checkForUpdates(e=!1){let t=global.OVERLAYED_META?.application?.siteUrl;if(!t){this.logger.log(`No siteUrl configured, skipping check`);return}q.getInstance().track(`site_check_for_update`,{});try{let n=new URL(`/check`,t).toString();this.logger.log(`Checking site URL`,n);let r={"Overlayed-User-Agent":Ye({package_version:global.OVERLAYED.PACKAGE_VERSION,application_id:global.OVERLAYED.APPLICATION_ID,application_version:global.OVERLAYED.APP_VERSION}),"Overlayed-Cortex-User-Id":global.OVERLAYED_RUNTIME.userId},i=jt();i&&(r[`Overlayed-Access-Token`]=i);let a=global.OVERLAYED_META.release.channelId;a&&(r[`Overlayed-Channel-Id`]=a);let o=await fetch(n,{headers:r});if(!o.ok){this.logger.warn(`Site check failed with status`,o.status),q.getInstance().track(`site_check_error`,{status:o.status}),e&&this.scheduleRetry();return}let s=await o.json();if(this.logger.log(`Site check response`,s),!s.release_id){this.logger.error(`Site check response missing release_id`);return}if(!this._latestCheckResponse){this._latestCheckResponse=s;return}return this._latestCheckResponse.release_id===s.release_id?void 0:(this.logger.log(`New site version detected`,s),this._latestCheckResponse=s,q.getInstance().track(`site_update_ready`,{version:s.version,release_id:s.release_id}),this.emit(`siteUpdateReady`,{releaseId:s.release_id,version:s.version}),s)}catch(e){let t=e instanceof Error?e.message:String(e);q.getInstance().track(`site_check_error`,{message:t}),this.logger.error(`Site check failed`,{error:e,message:t}),this.scheduleRetry()}}scheduleRetry(){setTimeout(()=>{this.checkForUpdates()},this.RETRY_INTERVAL)}}),sn=j(xe,`browser-windows.log`);let cn;function ln(){return cn||(cn=class e extends global.OVERLAYED.electron.BrowserWindow{static session=void 0;constructor(t){let n=e.resolveCustomOptions(t);super(n)}static resolveCustomOptions(t){let n=global.OVERLAYED_META,r=global.OVERLAYED_RUNTIME;return{...t,webPreferences:{...t.webPreferences,session:e.getSession(),additionalArguments:[...t.webPreferences?.additionalArguments||[],...global.OVERLAYED.electron.app.isPackaged?[]:[`--overlayed-meta=${JSON.stringify(n)}`],`--overlayed-runtime=${JSON.stringify(r)}`]}}}static getSession(){if(!global.OVERLAYED_META?.application?.siteUrl)return;if(e.session)return e.session;e.session=global.OVERLAYED.electron.session.fromPartition(`persist:overlayed-${global.OVERLAYED.APPLICATION_ID}`);let t=on.getInstance(),n=Ye({package_version:global.OVERLAYED.PACKAGE_VERSION,application_id:global.OVERLAYED.APPLICATION_ID,application_version:global.OVERLAYED.APP_VERSION}),r={urls:[global.OVERLAYED_META.application.siteUrl+`/*`]},i=global.OVERLAYED_RUNTIME.userId;return e.session.webRequest.onBeforeSendHeaders(r,(e,r)=>{let a=jt();a&&(e.requestHeaders[`Overlayed-Access-Token`]=a);let o=global.OVERLAYED_META.release.channelId;o&&(e.requestHeaders[`Overlayed-Channel-Id`]=o),t.manualUpdatesEnabled&&t.activeReleaseId&&(e.requestHeaders[`Overlayed-Release-Id`]=t.activeReleaseId),e.requestHeaders[`Overlayed-Cortex-User-Id`]=i,e.requestHeaders[`Overlayed-User-Agent`]=n,r({requestHeaders:e.requestHeaders})}),t.manualUpdatesEnabled&&e.session.webRequest.onHeadersReceived(r,(e,n)=>{if(t.initialReleaseId){n(e);return}let r=e.responseHeaders?.[`Overlayed-Release-Id`]?.[0];r&&(t.initialReleaseId=ot(r));let i=e.responseHeaders?.[`Overlayed-Release-Version`]?.[0];t.setFrontendCortexMeta(r,i),n(e)}),e.session}},cn)}function un(){function e(e,t){let n=sn.getInstance();return e.once(`closed`,()=>{e.isDestroyed()||q.getInstance().track(`window_closed`,{url:e.webContents.getURL(),in_game:t})}),e.on(`unresponsive`,()=>{e.isDestroyed()||q.getInstance().track(`window_unresponsive`,{url:e.webContents.getURL(),in_game:t})}),e.webContents.on(`console-message`,(t,r,i,a,o)=>{let s=e.isDestroyed()?`destroyed`:e.webContents.getURL();n[r===3?`error`:r===2?`warn`:`log`](`[${s}] [${o}:${a}] ${i}`)}),q.getInstance().track(`window_created`,{url:e.webContents.getURL(),in_game:t}),e}return{getProductionSiteUrl:()=>{let e=global.OVERLAYED_META.application.siteUrl;return URL.canParse(e)?new URL(e):new URL(`https://default.overlayedapps.com`)},createWindow:t=>e(new(ln())(t),!1),createInGameWindow:t=>{let n=ln();return e(Y().instance.newWindowInternal(n,t),!0)},on:(e,t)=>Y().instance.on(e,t),off:(e,t)=>Y().instance.off(e,t),once:(e,t)=>Y().instance.once(e,t),addListener:(e,t)=>Y().instance.addListener(e,t),removeListener:(e,t)=>Y().instance.removeListener(e,t),removeAllListeners:()=>Y().instance.removeAllListeners(),prependListener:(e,t)=>Y().instance.prependListener(e,t),prependOnceListener:(e,t)=>Y().instance.prependOnceListener(e,t),getActiveGameInfo:()=>{let e=Y(),t=je.getInstance();return{resolution:e.resolution,isConnected:t.hasConnection}}}}const dn=j(class extends He{renderInterface;globalCursorOverrideCount=new Set;globalMouseBlockCount=new Set;globalKeyboardBlockCount=new Set;keyInputBlocks={};constructor(e){super(`OverridesManager`),this.renderInterface=Rt.getInstance().getInterface(e)}scope(e){return{setGlobalCursorOverride:t=>this.setGlobalCursorOverride(e,t),setGlobalMouseBlock:t=>this.setGlobalMouseBlock(e,t),setGlobalKeyboardBlock:t=>this.setGlobalKeyboardBlock(e,t),setKeyInputBlock:(t,n)=>this.setKeyInputBlock(e,t,n)}}setGlobalCursorOverride(e,t){t?this.globalCursorOverrideCount.add(e):this.globalCursorOverrideCount.delete(e),t&&this.globalCursorOverrideCount.size===1?this.renderInterface.instance.setGlobalCursorOverride(!0):!t&&this.globalCursorOverrideCount.size===0&&this.renderInterface.instance.setGlobalCursorOverride(!1)}setGlobalMouseBlock(e,t){t?this.globalMouseBlockCount.add(e):this.globalMouseBlockCount.delete(e),t&&this.globalMouseBlockCount.size===1?this.renderInterface.instance.setGlobalMouseBlock(!0):!t&&this.globalMouseBlockCount.size===0&&this.renderInterface.instance.setGlobalMouseBlock(!1)}setGlobalKeyboardBlock(e,t){t?this.globalKeyboardBlockCount.add(e):this.globalKeyboardBlockCount.delete(e),t&&this.globalKeyboardBlockCount.size===1?this.renderInterface.instance.setGlobalKeyboardBlock(!0):!t&&this.globalKeyboardBlockCount.size===0&&this.renderInterface.instance.setGlobalKeyboardBlock(!1)}setKeyInputBlock(e,t,n){this.keyInputBlocks[t]||(this.keyInputBlocks[t]=new Set),n?this.keyInputBlocks[t].add(e):this.keyInputBlocks[t].delete(e),n&&this.keyInputBlocks[t].size===1?this.renderInterface.instance.setKeyInputBlock(t,!0):!n&&this.keyInputBlocks[t].size===0&&this.renderInterface.instance.setKeyInputBlock(t,!1)}},`OGG_SIEGE`);function fn(){return{scope:e=>dn.getInstance().scope(e),raw:{setGlobalMouseBlock:e=>Y().instance.setGlobalMouseBlock(e),setGlobalKeyboardBlock:e=>Y().instance.setGlobalKeyboardBlock(e),setGlobalCursorOverride:e=>Y().instance.setGlobalCursorOverride(e),setKeyInputBlock:(e,t)=>Y().instance.setKeyInputBlock(e,t),getGlobalMouseBlock:()=>Y().instance.getGlobalMouseBlock(),getGlobalKeyboardBlock:()=>Y().instance.getGlobalKeyboardBlock(),getGlobalCursorOverride:()=>Y().instance.getGlobalCursorOverride(),getKeyInputBlock:e=>Y().instance.getKeyInputBlock(e)}}}function pn(){return{track:(e,t)=>{q.getInstance().track(`custom__${String(e)}`,t)}}}function mn(){return{registerWindow:()=>{}}}const hn=/(\d{4})-(\d{2})-(\d{2})\.log$/;function gn(e){let t=e.match(hn);if(!t)return!1;let[,n,r,i]=t,a=Number(n),o=Number(r),s=Number(i);if(o<1||o>12||s<1||s>31)return!1;let c=new Date(a,o-1,s);if(isNaN(c.getTime())||c.getFullYear()!==a||c.getMonth()!==o-1||c.getDate()!==s)return!1;let l=new Date;return l.setDate(l.getDate()-7),l.setHours(0,0,0,0),c>=l}function _n(e){let{silent:t=!1,additionalFiles:n}=e??{},r=ve(global.OVERLAYED.APPLICATION_ID),i=L(r,{recursive:!0}),a=F(),o=L(a,{recursive:!0});t||(I.getInstance().info(`Logs path: `,r),I.getInstance().info(`Overlayed logs path: `,a));let s=new ie;return i.forEach(([e,n])=>{t||I.getInstance().info(`Zipping: `,n);let r=x(n);s.file(g(n),r,{compression:`DEFLATE`})}),o.forEach(([e,n])=>{if(!gn(g(n))){t||I.getInstance().info(`Skipping old/unrecognized log: `,n);return}t||I.getInstance().info(`Zipping: `,n);let r=x(n);s.file(g(n),r,{compression:`DEFLATE`})}),n&&Object.entries(n).forEach(([e,n])=>{t||I.getInstance().info(`Zipping extra file: `,e),s.file(e,n,{compression:`DEFLATE`})}),s}async function vn(e,t,n){let r=global.OVERLAYED_META.release.id?ot(global.OVERLAYED_META.release.id):void 0,i=K();return it(global.OVERLAYED.APPLICATION_ID,{file:Buffer.from(n,`base64`),data:{release_id:r,type:e,cortex_user_id:i,...t}}).then(e=>(I.getInstance().info(`Feedback submitted`,e),e.data.id)).catch(e=>{console.error(JSON.stringify(e,null,2)),I.getInstance().error(`Failed to submit feedback`,e)})}function yn(e){let t=new xe(`app.log`);return t.init(global.OVERLAYED.APPLICATION_ID,e.debug),{scope:e=>t.scope(e),info:e=>t.info(e),warn:e=>t.warn(e),error:e=>t.error(e),debug:e=>t.debug(e),submitFeedback:async(e,t,n)=>{let r=global.OVERLAYED_META.release.id?ot(global.OVERLAYED_META.release.id):void 0;return r&&ae.isPackaged&&q.getInstance().track(e===`bug_report`?`bug_report_submitted`:`suggestion_submitted`,{release_id:r}),await vn(e,t,await _n(n).generateAsync({type:`base64`}))},getLogsZip:e=>_n(e)}}const bn=1e3;function xn(e,t,r,i,a){let o=je.getInstance(),s=I.getInstance().scope(`SetupPipeServer`);s.log(`Initializing`);function c(e,t){let n=r.get(t);if(!n)r.set(t,[e]);else{if(n.length>=bn){pe.getInstance().warn(`Event buffer full, removing oldest event`,`EVENT_BUFFER_FULL`,{summary:`Event buffer overflow for module ${t}. Buffer size: ${n.length}, max: ${bn}`});return}n.push(e)}}function l(e,r,i){let o=i.events.event,l=o(e);if(l instanceof n.errors){if(`type`in l.byPath)return;s.warn(`Invalid event`,{summary:l.summary}),q.getInstance().track(`invalid_game_event`,{game:r.game,type:r.type,summary:l.summary}),pe.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:l.summary});return}if(!a[i.key]){c(e,i.key);return}if(l.type===`unsupported_game_version`){let{content:e}=l;q.getInstance().track(`unsupported_game_version`,{game:l.game,hash:e.process_hash,version:e.game_version})}let u=Yt(i.key,l.type),d=Yt(i.key,`*`),f=t.get(u),p=t.get(d),m=[...Array.from(f??[]),...Array.from(p??[])];if(m.length===0){s.info(`No handlers found for event`,{event:l});return}m.forEach(e=>{e(l)})}function u(t){s.info(t);let r=Dt(t);if(r instanceof n.errors){q.getInstance().track(`invalid_game_event`,{}),pe.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:r.summary});return}let i=Be.includes(r.type),a=e.modules.find(e=>e.key===`universal`),o=e.modules.find(e=>e.key===r.game),c=[];if(i&&a&&c.push(a),o&&o!==a&&(!i||r.type in o.events)&&c.push(o),c.length===0){s.warn(`Invalid module`,{module:i?`universal`:r.game});return}c.forEach(e=>l(t,r,e))}return i.on(`flushEvents`,t=>{if(a[t])return;a[t]=!0;let i=r.get(t);if(!i)return;I.getInstance().info(`Flushing ${i.length} events for module ${t}`);let o=e.modules.find(e=>e.key===t);o&&i.forEach(e=>{let t=Dt(e);t instanceof n.errors||l(e,t,o)}),r.delete(t)}),o.on(`data`,e=>e.forEach(u)),o.on(`error`,e=>{s.error(`Pipe server error`,e),pe.getInstance().error(`Pipe server error`,`PIPE_SERVER_ERROR`,{error:e})}),o.on(`connected`,()=>{s.log(`Pipe server connected`)}),o.on(`disconnected`,()=>{s.log(`Pipe server disconnected`)}),o}const Sn=j(class extends Ue{FETCH_INTERVAL=1e3*60*10;_fetchInterval=null;_flags=new Map;_overrides=new Map;_defaults=new Map;_boundOnGameReady=this.onGameEvent.bind(this);_boundOnGameClose=this.onGameEvent.bind(this);_readyResolve;ready;constructor(){super(`FeatureFlagManager`),this.ready=new Promise(e=>{this._readyResolve=e}),this.fetchFlags(),this.setupInterval(),J.getInstance().on(`gameReady`,this._boundOnGameReady),J.getInstance().on(`gameClose`,this._boundOnGameClose)}destroy(){this._fetchInterval&&=(clearInterval(this._fetchInterval),null),J.getInstance().off(`gameReady`,this._boundOnGameReady),J.getInstance().off(`gameClose`,this._boundOnGameClose),super.destroy()}setDefaults(e){this._defaults=new Map(Object.entries(e))}async refresh(){await this.fetchFlags()}override(e,t){let n=this.get(e);this._overrides.set(e,t),n!==t&&(this.emit(e,t),this.emit(`updated`,!0))}clearOverride(e){if(!this._overrides.has(e))return;let t=this.get(e);this._overrides.delete(e);let n=this.get(e);t!==n&&(this.emit(e,n),this.emit(`updated`,!0))}clearOverrides(){if(this._overrides.size===0)return;let e=new Map;for(let t of this._overrides.keys())e.set(t,this.get(t));this._overrides.clear();let t=!1;for(let[n,r]of e){let e=this.get(n);r!==e&&(this.emit(n,e),t=!0)}t&&this.emit(`updated`,!0)}isOverridden(e){return this._overrides.has(e)}getAllOverrides(){return Object.fromEntries(this._overrides)}inspect(e){let t=this._overrides.get(e),n=this._flags.get(e),r=this._defaults.get(e);return{effective:t??n??r??!1,override:t,actual:n,default:r}}get(e){let t=this._overrides.get(e),n=this._flags.get(e),r=this._defaults.get(e);return t??n??r??!1}getAll(){let e=Object.fromEntries(this._defaults);for(let[t,n]of this._flags)e[t]=n;for(let[t,n]of this._overrides)e[t]=n;return e}onGameEvent(){this.fetchFlags()}setupInterval(){this._fetchInterval=setInterval(()=>{this.fetchFlags()},this.FETCH_INTERVAL)}async fetchFlags(){try{let e=J.getInstance().getActiveGames(),{data:t}=await at(global.OVERLAYED.APPLICATION_ID,{cortex_user_id:global.OVERLAYED_RUNTIME.userId,release_id:global.OVERLAYED_META.release.id??void 0,channel_id:global.OVERLAYED_META.release.channelId??void 0,active_games:e.map(e=>e.toString())??void 0}),n=new Map;for(let e of t)n.set(e.name,e.enabled);for(let[e,t]of n){if(this._overrides.has(e))continue;let n=this._flags.get(e);n!==void 0&&n!==t&&this.emit(e,t)}for(let[e]of this._flags)this._overrides.has(e)||n.has(e)||this.emit(e,this._defaults.get(e)??!1);this._flags=n;for(let e of this._defaults.keys())this._flags.has(e)||this.logger.warn(`Registered feature flag "${e}" was not found in the API response`);this.emit(`updated`,!0)}catch(e){this.logger.error(`Failed to fetch feature flags`,e)}finally{this._readyResolve()}}});function Cn(e){let t=Sn.getInstance();return e&&t.setDefaults(e),{on:(e,n)=>t.on(e,n),off:(e,n)=>t.off(e,n),ready:t.ready,get:e=>t.get(e),getAll:()=>t.getAll(),refresh:()=>t.refresh(),override:(e,n)=>t.override(e,n),clearOverride:e=>t.clearOverride(e),clearOverrides:()=>t.clearOverrides(),isOverridden:e=>t.isOverridden(e),getAllOverrides:()=>t.getAllOverrides(),inspect:e=>t.inspect(e)}}function wn(){let e=on.getInstance();return{on:(t,n)=>{e.on(t,n)},off:(t,n)=>{e.off(t,n)},allowSiteUpdateOnNextLoad:()=>{e.allowSiteUpdateOnNextLoad()}}}const Tn=n({dismissedNotices:ce(n.string).array()}),En=j(class extends Ue{NOTICE_FETCH_INTERVAL=1e3*60*10;MAX_DISMISSED_NOTICES=100;_noticeFetchInterval=null;_notices=[];_noticesFile;_boundOnGameReady=this.onGameReady.bind(this);get notices(){let e=this._noticesFile.get().dismissedNotices;return this._notices.filter(t=>!e.includes(t.id))}constructor(){super(`NoticeManager`),this._noticesFile=this.getNoticesFile(),this._noticesFile.load(),this.fetchNotices(),this.setupNoticeInterval(),J.getInstance().on(`gameReady`,this._boundOnGameReady)}destroy(){this._noticeFetchInterval&&=(clearInterval(this._noticeFetchInterval),null),J.getInstance().off(`gameReady`,this._boundOnGameReady),super.destroy()}dismissNotice(e){let t=this._notices.find(t=>t.id===e);if(!t||!t.dismissible)return;let n=this._noticesFile.get().dismissedNotices;n.unshift(e),this._noticesFile.set({dismissedNotices:n.slice(0,this.MAX_DISMISSED_NOTICES)}),this.emitNoticesUpdated()}onGameReady(){this.fetchNotices()}setupNoticeInterval(){this._noticeFetchInterval=setInterval(()=>{this.fetchNotices()},this.NOTICE_FETCH_INTERVAL)}getNoticesFile(){return new me({path:Et([`notices.json`]),schema:Tn,default:{dismissedNotices:[]}})}async fetchNotices(){let e=J.getInstance().getActiveGames();try{let{data:t}=await U(global.OVERLAYED.APPLICATION_ID,{release_id:global.OVERLAYED_META.release.id?ot(global.OVERLAYED_META.release.id):void 0,channel:global.OVERLAYED_META.release.channel,version:global.OVERLAYED_META.release.version,games:e});this._notices=t,this.emitNoticesUpdated()}catch(e){this.logger.error(`Failed to fetch notices`,e)}}emitNoticesUpdated(){this.emit(`noticesUpdated`,{notices:this.notices})}});function Dn(){let e=En.getInstance();return{on:(t,n)=>{e.on(t,n)},off:(t,n)=>{e.off(t,n)},dismissNotice:t=>{e.dismissNotice(t)},getNotices:()=>e.notices}}const{Provider:On}=O;var kn=class extends On{options;updater;logger=I.getInstance().scope(`OverlayedProvider`);constructor(e,t,n){super(n),this.options=e,this.updater=t}async getLatestVersion(){try{let e=await tt(this.options.application_id,{release_id:this.options.release_id,cortex_user_id:this.options.cortex_user_id,access_token:this.options.access_token,requested_channel:this.options.requested_channel});return this.logger.log(`checkApplicationRelease response`,e.data),q.getInstance().track(`update_release_check_success`,{version:e.data.release.version,channel:e.data.release.channel,fallback:!!e.data.fallback}),e.data.fallback&&this.logger.warn(`Update fallback detected, switching to default channel`),{path:``,sha512:e.data.download_hash??``,version:`${e.data.release.version}-${e.data.release.channel}`,releaseName:e.data.release.id,releaseDate:e.data.release.created_at,files:[{url:e.data.download_url,sha512:e.data.download_hash??``}]}}catch(e){let t=e instanceof Error?e.stack||e.message:String(e);throw q.getInstance().track(`update_release_check_error`,{message:t}),Error(`Unable to find the latest version (${this.options.release_id}), please ensure release exists. ${t}`)}}resolveFiles(e){return[{info:e.files[0],url:new URL(e.files[0].url)}]}};function An(e){return{provider:`custom`,updateProvider:kn,...e}}function X(){return O.autoUpdater}const jn=j(class extends Ue{DEFAULT_CHANNEL=`public`;TOKEN_REFRESH_INTERVAL=1e3*60*15;accessTokenFetcher=void 0;_tokenRefreshInterval=null;_downloadStarted=!1;constructor(){super(`UpdateManager`)}init(){super.init(),this.registerListenerForwarders(),this.setupTokenRefreshInterval(),X().disableDifferentialDownload=!0}destroy(){X().removeAllListeners(),this._tokenRefreshInterval&&=(clearInterval(this._tokenRefreshInterval),null),super.destroy()}setupTokenRefreshInterval(){this._tokenRefreshInterval=setInterval(()=>{this.checkAndRefreshToken()},this.TOKEN_REFRESH_INTERVAL)}async checkAndRefreshToken(){let e=global.OVERLAYED_META.release.channel;e!==this.DEFAULT_CHANNEL&&(this.logger.log(`Refreshing access token for channel`,e),await this.setAndGetLatestAccessToken(e))}async checkForUpdates(e){this.logger.log(`Starting checkForUpdates`);let t=e??global.OVERLAYED_META.release.channel;return q.getInstance().track(`check_for_update`,{channel:t}),this._downloadStarted=!1,await this.setAndGetLatestAccessToken(t),e?(X().allowDowngrade=!0,X().channel=e,this.setFeedUrl({requestedChannel:e})):(X().allowDowngrade=!1,X().channel=global.OVERLAYED_META.release.channel,this.setFeedUrl({})),this.logger.log(`Checking for updates`),X().checkForUpdates()}async switchChannel(e){return this.logger.log(`Switching channel`,e),q.getInstance().track(`update_channel_switch`,{from_channel:global.OVERLAYED_META.release.channel,to_channel:e}),this._downloadStarted=!1,await this.setAndGetLatestAccessToken(e),X().allowDowngrade=!0,X().channel=e,this.setFeedUrl({requestedChannel:e}),X().checkForUpdates()}quitAndInstall(e,t){this.logger.log(`quitAndInstall`,{isSilent:e,isForceRunAfter:t});let[n,r]=this.canUpdate();if(!n)throw this.logger.warn(`Cannot update`,{denialReason:r}),q.getInstance().track(`update_install_blocked`,{reason:r}),Error(r);return this.logger.log(`Quitting and installing`),q.getInstance().track(`update_install`,{}),X().quitAndInstall(e,t)}canUpdate(){return J.getInstance().isInGame?[!1,`User is in game`]:[!0,null]}downloadUpdate(e){return X().downloadUpdate(e)}setAccessTokenFetcher(e){this.accessTokenFetcher=e}async setAndGetLatestAccessToken(e){if(this.logger.log(`Fetching new token`),!this.accessTokenFetcher)return this.logger.warn(`accessTokenFetcher is not set, private channels will not work.`),Mt(null),null;if(this.logger.log(`Setting and getting latest access token for channel`,e),e===this.DEFAULT_CHANNEL)return this.logger.log(`Default channel, skipping`),Mt(null),null;if(e!==global.OVERLAYED_META.release.channel)return this.forceFetchNewAccessToken(e);this.logger.log(`Access token exists, checking expiration`);let t=jt();if(t){let e=this.getAccessTokenExpirationDate(t);if(!e)this.logger.log(`Invalid token, setting to null`),Mt(null);else if(e.getTime()>=Date.now()+300*1e3)return this.logger.log(`Token is not expired, using it.`),t}return this.forceFetchNewAccessToken(e)}async forceFetchNewAccessToken(e){this.accessTokenFetcher||this.logger.warn(`accessTokenFetcher is not set [2], private channels will not work.`);try{let t=await this.accessTokenFetcher?.(e)??null;this.logger.log(`New token fetched`,t?.slice(0,5)+`...`);let n=jt();if(t==null||n===t){q.getInstance().track(`update_token_invalid`,{channel:e}),this.emit(`authTokenInvalid`,{}),Mt(null);return}return Mt(t),t}catch(e){let t=e instanceof Error?e.message:String(e);return q.getInstance().track(`update_token_fetch_error`,{message:t}),this.logger.error(`Error fetching new token`,{error:e,message:t}),Mt(null),null}}setFeedUrl(e){if(!global.OVERLAYED_META.release.id){this.logger.warn(`Tried to set feed URL in development mode`);return}X().setFeedURL(An({application_id:global.OVERLAYED.APPLICATION_ID,release_id:global.OVERLAYED_META.release.id,cortex_user_id:global.OVERLAYED_RUNTIME.userId,access_token:jt(),requested_channel:e.requestedChannel}))}registerListenerForwarders(){X().on(`checking-for-update`,()=>{this.logger.info(`Checking for updates`),this.emit(`checkingForUpdates`,{})}),X().on(`download-progress`,e=>{this._downloadStarted||(this._downloadStarted=!0,q.getInstance().track(`update_download_started`,{version:X().currentVersion?.version??``})),this.emit(`downloadProgress`,{info:e});let t=`Download speed: ${e.bytesPerSecond} - Downloaded ${e.percent}%`;t+=` (${e.transferred}/${e.total})`,this.logger.log(t)}),X().on(`error`,(e,t)=>{this.logger.error(`Error`,e,t),q.getInstance().track(`update_download_error`,{message:t??e.message}),this.emit(`error`,{error:e,message:t})}),X().on(`update-not-available`,e=>{this.logger.info(`Update not available`,e),q.getInstance().track(`update_not_available`,{version:e.version}),this.emit(`updateNotAvailable`,{info:e})}),X().on(`update-available`,e=>{this.logger.info(`Update available`,e),q.getInstance().track(`update_available`,{version:e.version,channel:X().channel??``}),this.emit(`updateAvailable`,{info:e})}),X().on(`update-downloaded`,e=>{this.logger.info(`Update downloaded`,e),q.getInstance().track(`update_download_complete`,{version:e.version}),this.emit(`updateDownloaded`,{event:e})}),X().on(`update-cancelled`,e=>{this.logger.info(`Update cancelled`,e),q.getInstance().track(`update_cancelled`,{version:e.version}),this.emit(`updateCancelled`,{info:e})})}getAccessTokenExpirationDate(e){try{let t=e.split(`.`)[1];if(!t)return null;let n=atob(t.replace(/-/g,`+`).replace(/_/g,`/`)),r=JSON.parse(n);return r.exp?new Date(r.exp*1e3):null}catch{return null}}});function Mn(){let e=jn.getInstance();return{site:wn(),on:(t,n)=>{e.on(t,n)},off:(t,n)=>{e.off(t,n)},setAccessTokenFetcher:t=>e.setAccessTokenFetcher(t),checkForUpdates:()=>e.checkForUpdates(),switchChannel:t=>e.checkForUpdates(t),quitAndInstall:(t,n)=>e.quitAndInstall(t,n),canUpdate:()=>e.canUpdate(),downloadUpdate:t=>e.downloadUpdate(t)}}function Nn(){return{getChannel:()=>global.OVERLAYED_META.release.channel,getVersion:()=>global.OVERLAYED_META.release.version,getReleaseId:()=>global.OVERLAYED_META.release.id}}const Pn=j(class extends Ue{_knownModificationTimes=new Map;_confirmedDumps=new Set;_pendingReports=new Map;_snapshotTimestamp=0;boundOnGameReady=this.onGameReady.bind(this);boundOnGameClose=this.onGameClose.bind(this);constructor(){super(`CrashDumpManager`)}init(){super.init(),this.logger.debug(`init() registering game event listeners`),J.getInstance().on(`gameReadyInternal`,this.boundOnGameReady),J.getInstance().on(`gameCloseInternal`,this.boundOnGameClose),this.logger.debug(`init() complete`)}destroy(){this.logger.debug(`destroy() called`,{pendingReports:this._pendingReports.size,confirmedDumps:this._confirmedDumps.size,knownModificationTimes:this._knownModificationTimes.size}),J.getInstance().off(`gameReadyInternal`,this.boundOnGameReady),J.getInstance().off(`gameCloseInternal`,this.boundOnGameClose),this._knownModificationTimes.clear(),this._confirmedDumps.clear(),this._pendingReports.clear(),this._snapshotTimestamp=0,this.logger.debug(`destroy() cleanup complete`),super.destroy()}async submit(e){this.logger.debug(`submit() called`,{id:e,pendingCount:this._pendingReports.size});let t=this._pendingReports.get(e);if(!t){this.logger.warn(`submit called with unknown id`,e);return}let{response:n,dumpPath:r}=t;this.logger.debug(`Resolved pending report for submission`,{id:e,dumpPath:r});let i=global.OVERLAYED.APPLICATION_ID,a=K();if(this.logger.debug(`Resolved identifiers for submission`,{applicationId:i,cortexUserId:a}),n.crash_dump_upload_request)try{this.logger.debug(`Reading crash dump file`,{dumpPath:r});let t=await E.readFile(r);this.logger.debug(`Uploading crash dump`,{dumpPath:r,size:t.byteLength}),await lt(n.crash_dump_upload_request,new Uint8Array(t)),this.logger.debug(`Crash dump uploaded, confirming`,{id:e}),await rt(i,e,{cortex_user_id:a,file_type:`crash_dump`}),this.logger.debug(`Crash dump confirmed`,{id:e})}catch(e){this.logger.error(`Failed to upload crash dump`,{dumpPath:r,error:e})}else this.logger.warn(`No crash dump upload request in response`,{id:e});this._pendingReports.delete(e),this._confirmedDumps.add(r),this.logger.debug(`Report state updated, attempting dump file cleanup`,{id:e,dumpPath:r});try{await E.unlink(r),this.logger.debug(`Dump file cleaned up successfully`,{dumpPath:r})}catch(e){this.logger.warn(`Failed to clean up dump file after submission`,{dumpPath:r,error:e})}this.logger.log(`Crash report submitted successfully`,r)}async onGameReady({game:e}){this.logger.debug(`onGameReady() fired`,{game:e.identifier}),await this.snapshotModificationTimes(),this.logger.debug(`onGameReady() snapshot complete`,{game:e.identifier})}async onGameClose({game:e}){this.logger.debug(`onGameClose() fired`,{game:e.identifier}),await this.scanForNewDumps(ft(e.identifier)),this.logger.debug(`onGameClose() scan complete`,{game:e.identifier})}async snapshotModificationTimes(){let e=be();this._snapshotTimestamp=Date.now(),this.logger.debug(`snapshotModificationTimes() called`,{crashDumpsPath:e,snapshotTimestamp:this._snapshotTimestamp});try{await E.access(e)}catch{this.logger.debug(`Crash dumps directory does not exist, skipping snapshot`,{crashDumpsPath:e});return}let t=await this.findAllDumps(e);this.logger.debug(`Found dumps for snapshot`,{count:t.length});for(let e of t)try{let t=await E.stat(e);if(t.mtimeMs>=this._snapshotTimestamp-3e4){this.logger.debug(`Skipping recent dump from snapshot`,{dumpPath:e,mtimeMs:t.mtimeMs,snapshotTimestamp:this._snapshotTimestamp});continue}this._knownModificationTimes.set(e,t.mtimeMs),this.logger.debug(`Recorded modification time`,{dumpPath:e,mtimeMs:t.mtimeMs})}catch(t){this.logger.warn(`Failed to stat dump file during snapshot`,{dumpPath:e,error:t})}this.logger.debug(`Snapshot complete`,{totalTracked:this._knownModificationTimes.size})}async scanForNewDumps(e){let t=be();this.logger.debug(`scanForNewDumps() called`,{game:e,crashDumpsPath:t});try{await E.access(t)}catch{this.logger.debug(`Crash dumps directory does not exist, skipping scan`,{crashDumpsPath:t});return}let n=new Set([...this._pendingReports.values()].map(e=>e.dumpPath)),r=await this.findAllDumps(t);this.logger.debug(`Scan found dumps`,{total:r.length,pendingCount:n.size,confirmedCount:this._confirmedDumps.size});for(let t of r){if(this._confirmedDumps.has(t)){this.logger.debug(`Skipping already confirmed dump`,{dumpPath:t});continue}if(n.has(t)){this.logger.debug(`Skipping already pending dump`,{dumpPath:t});continue}let r;try{r=await E.stat(t)}catch(e){this.logger.warn(`Failed to stat dump file during scan`,{dumpPath:t,error:e});continue}let i=r.mtimeMs,a=this._knownModificationTimes.get(t);if(this.logger.debug(`Comparing modification times`,{dumpPath:t,modificationTime:i,knownModificationTime:a}),a===void 0||i>a){this.logger.debug(`Dump is new or modified`,{dumpPath:t,isNew:a===void 0});try{let n=r.size,i=m.basename(m.dirname(t)),a=m.basename(t,m.extname(t));this.logger.debug(`Preparing crash report`,{dumpPath:t,crashDumpSize:n,crashSource:i});let o=(await _n().generateAsync({type:`uint8array`})).byteLength,s=global.OVERLAYED.APPLICATION_ID,c=K(),l=global.OVERLAYED_META.release.id;this.logger.debug(`Creating game crash report via API`,{applicationId:s,cortexUserId:c,game:e,crashSource:i,crashDumpSize:n,logsSize:o});let{data:u}=await nt(s,{cortex_user_id:c,game:e,crash_source:i,crash_identifier:a,release_id:l,logs_size:o,crash_dump_size:n});this._pendingReports.set(u.id,{response:u,dumpPath:t}),this.logger.debug(`Crash report created, emitting 'new' event`,{id:u.id,game:e}),this.logger.log(`New crash dump detected`,{dumpPath:t,game:e,id:u.id}),this.emit(`new`,{id:u.id,game:e})}catch(e){this.logger.error(`Failed to create game crash report`,{dumpPath:t,error:e})}}else this.logger.debug(`Dump unchanged, skipping`,{dumpPath:t});this._knownModificationTimes.set(t,i)}this.logger.debug(`scanForNewDumps() complete`,{game:e,pendingReports:this._pendingReports.size})}async findAllDumps(e){this.logger.debug(`findAllDumps() called`,{basePath:e});let t=[],n;try{n=await E.readdir(e,{withFileTypes:!0})}catch(n){return this.logger.warn(`Failed to read crash dumps directory`,{basePath:e,error:n}),t}this.logger.debug(`Top-level entries in crash dumps directory`,{count:n.length,directories:n.filter(e=>e.isDirectory()).map(e=>e.name)});for(let r of n)if(r.isDirectory()){let n=m.join(e,r.name),i;try{i=await E.readdir(n,{withFileTypes:!0})}catch(e){this.logger.warn(`Failed to read crash dump subdirectory`,{subPath:n,error:e});continue}let a=i.filter(e=>e.isFile()&&e.name.endsWith(`.dmp`));this.logger.debug(`Scanned subdirectory`,{subPath:n,totalEntries:i.length,dmpCount:a.length});for(let e of a)t.push(m.join(n,e.name))}return this.logger.debug(`findAllDumps() complete`,{totalFound:t.length}),t}});let Fn=!1,In={},Ln,Rn=new de,zn;function Bn(e){Hn(e);let t=Vn(e),{init:n=!0,debug:r=!1,silent:i=!0}=t,a=Wn(e);if(I.getInstance().init(e.applicationId,r,i),sn.getInstance().init(e.applicationId,r,!0,!0),a&&qn($e(e.applicationId),!1).catch(()=>{}),Fn)return Ln;function o(){if(Fn){I.getInstance().warn(`Overlayed already initialized`);return}rn();let n=Kt.get({createIfMissing:!1});if(n){let t=Jt({currentAccount:n.currentAccount,accounts:n.accounts,expected:{applicationId:e.applicationId,baseUrl:Ge}});t&&qe(()=>t.account.apiKey)}let r=new Map,i=new Map,a=Mn(),s=Xt(t.modules,r,Rn),c=Zt(),l=nn(t.keybinds),u=un(),d=fn(),f=mn(),p=pn(),m=yn(t),h=Dn(),g=Cn(t.featureFlags),_=Nn();I.getInstance().log(`Overlayed initialized`),Gn(t),xn(t,r,i,Rn,In),Fn=!0,Ln={...s,...c,ads:f,keybinds:l,windows:u,input:d,cortex:p,hasAnyActiveProcesses:()=>Ft.getInstance().hasAnyActiveGames,hasAnyActiveGames:()=>J.getInstance().isInGame,init:o,log:m,initialized:Fn,notices:h,featureFlags:g,updater:a,application:_,crashDumps:{on:(e,t)=>Pn.getInstance().on(e,t),off:(e,t)=>Pn.getInstance().off(e,t),submit:e=>Pn.getInstance().submit(e)}},Ln.universal.on(`logged_in`,e=>{q.getInstance().track(`account_id`,{account_id:e.content.account_id,game:e.game})})}return n&&a?(o(),Ln):new Proxy({init:o},{get:(e,t)=>{if(t===`init`)return e[t];if(!Fn)throw Error(a?`overlayed was called before initialized: ${t}`:Un);return Ln[t]}})}function Vn(e){return{...e,modules:[...e.modules,Ve()]}}global.OVERLAYED=new Proxy({},{get:()=>{throw Error(`function overlayed was not called`)}});function Hn(e){if(!le(e.applicationId))throw Error(`Invalid applicationId, must be a valid ULID.`)}const Un="Overlayed metadata has not been initialized yet. Run `overlayed init` to set up your local development environment.";function Wn(e){let t=Kn(),n=`1.6.0`,r=$e(e.applicationId);function i(){return{package_version:n,application_id:r,application_version:t?.release.version??`0.0.0`}}return I.getInstance().log(`ua object`,i()),Je(()=>i()),t===null?(global.OVERLAYED=new Proxy({},{get:()=>{throw Error(Un)}}),qn(r,!0),!1):(global.OVERLAYED={APPLICATION_ID:r,APP_BUILD_CHANNEL:t.release.channel,APP_VERSION:t.release.version,PACKAGE_VERSION:n,FRONTEND_VERSION:`0.0.0`,sessionId:kt(),electron:e.electron},global.OVERLAYED_META=t,global.OVERLAYED_RUNTIME={userId:K()},I.getInstance().log(`meta`,t),!0)}function Gn(e){I.getInstance().warn(`Bootstrapping`);let t=e.universal?[`*`]:e.modules.map(e=>e.key);J.getInstance().setSubscribedGames(t),I.getInstance().warn(`Initializing update manager`),jn.getInstance().init(),I.getInstance().warn(`Initialized update manager`),on.getInstance().init({manualUpdates:e.site?.manualUpdates??!1}),Wt.getInstance().init(),J.getInstance().init(),Pn.getInstance().init(),Ft.getInstance().init(),It.getInstance().init(),q.getInstance().track(`start`,{}),Gt.getInstance().check(e.applicationId);try{zn&&clearInterval(zn),zn=setInterval(()=>{try{At()}catch{}},3e4),zn.unref()}catch(e){I.getInstance().log(`failed to start sessionLastUsed interval`,e)}async function n(){let e={};e.os=T.platform().trim(),e.os_version=process.getSystemVersion().trim(),e.architecture=T.arch().trim();let t=T.cpus();t.length>0?(e.cpu=t[0].model.trim(),e.cpu_cores=t.length,e.cpu_speed=t[0].speed):I.getInstance().warn(`Failed to collect CPU info`);let n=await oe.graphics();I.getInstance().info(`GPU info`,n);let r=n.controllers.sort((e,t)=>(t.vram??0)-(e.vram??0))[0];r?(e.gpu=r.model.trim(),e.gpu_memory=r.vram??0):I.getInstance().warn(`Failed to find primary GPU`),e.display_count=n.displays.length;let i=n.displays.find(e=>e.main)??n.displays[0];i?(e.primary_display_resolution_x=i.resolutionX??void 0,e.primary_display_resolution_y=i.resolutionY??void 0,e.primary_display_refresh_rate=i.currentRefreshRate??void 0):I.getInstance().warn(`Failed to find main display`),e.ram=process.getSystemMemoryInfo().total;let a=T.homedir(),o=await E.statfs(a);return o&&`blocks`in o&&`bsize`in o&&`bavail`in o?(e.disk=o.blocks*o.bsize,e.disk_free=o.bavail*o.bsize):I.getInstance().warn(`Failed to collect disk info`),I.getInstance().log(`Retrieved system information`,e),e}ae.on(`ready`,()=>{n().then(e=>{q.getInstance().track(`system_info`,e)}).catch(e=>{I.getInstance().log(`Failed to retrieve system information`,e)})}),ae.on(`quit`,()=>{q.getInstance().track(`electron_quit`,{}),Jn()}),process.on(`exit`,()=>{q.getInstance().track(`exit`,{}),Jn()})}function Kn(){if(ae.isPackaged)try{let e=m.join(process.resourcesPath,`meta.json`);return JSON.parse(y.readFileSync(e,`utf-8`))}catch(e){throw Error(`Failed to read application metadata from resources/meta.json`,{cause:e})}else{let e=m.join(process.cwd(),`.overlayed`,`meta.json`);return y.existsSync(e)?JSON.parse(y.readFileSync(e,`utf-8`)):null}}async function qn(e,t=!1){if(!ae.isPackaged)try{I.getInstance().log(`Fetching application metadata from API...`);let n=we({...(await et(e)).data,siteUrl:``});t&&(I.getInstance().log(v.yellowBright(`Uninitialized development environment detected. Created .overlayed folder. In the future, run ${v.bold(`overlayed init`)} to do so. \n\nThe process will now exit to load the cached metadata.\n\n${v.italic(`Note: This will never happen in a packaged application, and will only happen once in local development so long as the .overlayed folder exists.`)}`)),process.exit(0)),global.OVERLAYED_META=n}catch(e){I.getInstance().error(`Failed to fetch application meta`,e),t&&(console.error(`
15
+ `;case 114:return`\r`;case 120:return String.fromCharCode(this.readHexChar(2));case 117:return O(this.readCodePoint());case 116:return` `;case 98:return`\b`;case 118:return`\v`;case 102:return`\f`;case 13:this.input.charCodeAt(this.pos)===10&&++this.pos;case 10:return this.options.locations&&(this.lineStart=this.pos,++this.curLine),``;case 56:case 57:if(this.strict&&this.invalidStringToken(this.pos-1,`Invalid escape sequence`),e){var n=this.pos-1;this.invalidStringToken(n,`Invalid escape sequence in template string`)}default:if(t>=48&&t<=55){var r=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],i=parseInt(r,8);return i>255&&(r=r.slice(0,-1),i=parseInt(r,8)),this.pos+=r.length-1,t=this.input.charCodeAt(this.pos),r===`0`&&t!==56&&t!==57||!this.strict&&!e||this.invalidStringToken(this.pos-1-r.length,e?`Octal literal in template string`:`Octal literal in strict mode`),String.fromCharCode(i)}return C(t)?(this.options.locations&&(this.lineStart=this.pos,++this.curLine),``):String.fromCharCode(t)}},U.readHexChar=function(e){var t=this.pos,n=this.readInt(16,e);return n===null&&this.invalidStringToken(t,`Bad character escape sequence`),n},U.readWord1=function(){this.containsEsc=!1;for(var e=``,t=!0,n=this.pos,r=this.options.ecmaVersion>=6;this.pos<this.input.length;){var i=this.fullCharCodeAtPos();if(m(i,r))this.pos+=i<=65535?1:2;else{if(i!==92)break;this.containsEsc=!0,e+=this.input.slice(n,this.pos);var a=this.pos;this.input.charCodeAt(++this.pos)!==117&&this.invalidStringToken(this.pos,`Expecting Unicode escape sequence \\uXXXX`),++this.pos;var o=this.readCodePoint();(t?p:m)(o,r)||this.invalidStringToken(a,`Invalid Unicode escape`),e+=O(o),n=this.pos}t=!1}return e+this.input.slice(n,this.pos)},U.readWord=function(){var e=this.readWord1(),t=b.name;return this.keywords.test(e)&&(t=ee[e]),this.finishToken(t,e)},M.acorn={Parser:M,version:`8.16.0`,defaultOptions:ue,Position:ce,SourceLocation:A,getLineInfo:le,Node:Ae,TokenType:h,tokTypes:b,keywordTypes:ee,TokContext:R,tokContexts:z,isIdentifierChar:m,isIdentifierStart:p,Token:at,isNewLine:C,lineBreak:x,lineBreakG:S,nonASCIIwhitespace:te};var ct=r(`node:module`),W=r(`node:fs`);String.fromCharCode;let lt=/\/$|\/\?|\/#/,ut=/^\.?\//;function dt(e=``,t){return t?lt.test(e):e.endsWith(`/`)}function ft(e=``,t){if(!t)return e.endsWith(`/`)?e:e+`/`;if(dt(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);if(i!==-1&&(n=e.slice(0,i),r=e.slice(i),!n))return r;let[a,...o]=n.split(`?`);return a+`/`+(o.length>0?`?${o.join(`?`)}`:``)+r}function pt(e){return e&&e!==`/`}function mt(e,...t){let n=e||``;for(let e of t.filter(e=>pt(e)))if(n){let t=e.replace(ut,``);n=ft(n)+t}else n=e;return n}let ht=/^[A-Za-z]:\//;function gt(e=``){return e&&e.replace(/\\/g,`/`).replace(ht,e=>e.toUpperCase())}let _t=/^[/\\]{2}/,vt=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,yt=/^[A-Za-z]:$/,bt=/.(\.[^./]+|\.)$/,xt=function(e){if(e.length===0)return`.`;let t=(e=gt(e)).match(_t),n=Et(e),r=e[e.length-1]===`/`;return(e=Tt(e,!n)).length===0?n?`/`:r?`./`:`.`:(r&&(e+=`/`),yt.test(e)&&(e+=`/`),t?n?`//${e}`:`//./${e}`:n&&!Et(e)?`/${e}`:e)},St=function(...e){let t=``;for(let n of e)if(n)if(t.length>0){let e=t[t.length-1]===`/`,r=n[0]===`/`;t+=e&&r?n.slice(1):e||r?n:`/${n}`}else t+=n;return xt(t)};function Ct(){return typeof process<`u`&&typeof process.cwd==`function`?process.cwd().replace(/\\/g,`/`):`/`}let wt=function(...e){let t=``,n=!1;for(let r=(e=e.map(e=>gt(e))).length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:Ct();i&&i.length!==0&&(t=`${i}/${t}`,n=Et(i))}return t=Tt(t,!n),n&&!Et(t)?`/${t}`:t.length>0?t:`.`};function Tt(e,t){let n=``,r=0,i=-1,a=0,o=null;for(let s=0;s<=e.length;++s){if(s<e.length)o=e[s];else{if(o===`/`)break;o=`/`}if(o===`/`){if(!(i===s-1||a===1))if(a===2){if(n.length<2||r!==2||n[n.length-1]!==`.`||n[n.length-2]!==`.`){if(n.length>2){let e=n.lastIndexOf(`/`);e===-1?(n=``,r=0):(n=n.slice(0,e),r=n.length-1-n.lastIndexOf(`/`)),i=s,a=0;continue}if(n.length>0){n=``,r=0,i=s,a=0;continue}}t&&(n+=n.length>0?`/..`:`..`,r=2)}else n.length>0?n+=`/${e.slice(i+1,s)}`:n=e.slice(i+1,s),r=s-i-1;i=s,a=0}else o===`.`&&a!==-1?++a:a=-1}return n}let Et=function(e){return vt.test(e)},Dt=function(e){if(e===`..`)return``;let t=bt.exec(gt(e));return t&&t[1]||``},G=function(e){let t=gt(e).replace(/\/$/,``).split(`/`).slice(0,-1);return t.length===1&&yt.test(t[0])&&(t[0]+=`/`),t.join(`/`)||(Et(e)?`/`:`.`)},Ot=function(e,t){let n=gt(e).split(`/`),r=``;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t){r=t;break}}return t&&r.endsWith(t)?r.slice(0,-t.length):r},K=k(`node:url`),kt=k(`node:assert`),At=k(`node:process`);var jt=r(`node:path`);let Mt=k(`node:v8`),Nt=k(`node:util`),Pt=new Set(ct.builtinModules);function Ft(e){return e.replace(/\\/g,`/`)}let It={}.hasOwnProperty,Lt=/^([A-Z][a-z\d]*)+$/,Rt=new Set([`string`,`function`,`number`,`object`,`Function`,`Object`,`boolean`,`bigint`,`symbol`]),q={};function zt(e,t=`and`){return e.length<3?e.join(` ${t} `):`${e.slice(0,-1).join(`, `)}, ${t} ${e[e.length-1]}`}let Bt=new Map,Vt;function Ht(e,t,n){return Bt.set(e,t),function(e,t){return n;function n(...n){let r=Error.stackTraceLimit;Ut()&&(Error.stackTraceLimit=0);let i=new e;Ut()&&(Error.stackTraceLimit=r);let a=function(e,t,n){let r=Bt.get(e);if(kt.ok(r!==void 0,"expected `message` to be found"),typeof r==`function`)return kt.ok(r.length<=t.length,`Code: ${e}; The provided arguments length (${t.length}) does not match the required ones (${r.length}).`),Reflect.apply(r,n,t);let i=/%[dfijoOs]/g,a=0;for(;i.exec(r)!==null;)a++;return kt.ok(a===t.length,`Code: ${e}; The provided arguments length (${t.length}) does not match the required ones (${a}).`),t.length===0?r:(t.unshift(r),Reflect.apply(Nt.format,null,t))}(t,n,i);return Object.defineProperties(i,{message:{value:a,enumerable:!1,writable:!0,configurable:!0},toString:{value(){return`${this.name} [${t}]: ${this.message}`},enumerable:!1,writable:!0,configurable:!0}}),J(i),i.code=t,i}}(n,e)}function Ut(){try{if(Mt.startupSnapshot.isBuildingSnapshot())return!1}catch{}let e=Object.getOwnPropertyDescriptor(Error,`stackTraceLimit`);return e===void 0?Object.isExtensible(Error):It.call(e,`writable`)&&e.writable!==void 0?e.writable:e.set!==void 0}q.ERR_INVALID_ARG_TYPE=Ht(`ERR_INVALID_ARG_TYPE`,(e,t,n)=>{kt.ok(typeof e==`string`,`'name' must be a string`),Array.isArray(t)||(t=[t]);let r=`The `;if(e.endsWith(` argument`))r+=`${e} `;else{let t=e.includes(`.`)?`property`:`argument`;r+=`"${e}" ${t} `}r+=`must be `;let i=[],a=[],o=[];for(let e of t)kt.ok(typeof e==`string`,`All expected entries have to be of type string`),Rt.has(e)?i.push(e.toLowerCase()):Lt.exec(e)===null?(kt.ok(e!==`object`,`The value "object" should be written as "Object"`),o.push(e)):a.push(e);if(a.length>0){let e=i.indexOf(`object`);e!==-1&&(i.slice(e,1),a.push(`Object`))}return i.length>0&&(r+=`${i.length>1?`one of type`:`of type`} ${zt(i,`or`)}`,(a.length>0||o.length>0)&&(r+=` or `)),a.length>0&&(r+=`an instance of ${zt(a,`or`)}`,o.length>0&&(r+=` or `)),o.length>0&&(o.length>1?r+=`one of ${zt(o,`or`)}`:(o[0].toLowerCase()!==o[0]&&(r+=`an `),r+=`${o[0]}`)),r+=`. Received ${function(e){if(e==null)return String(e);if(typeof e==`function`&&e.name)return`function ${e.name}`;if(typeof e==`object`)return e.constructor&&e.constructor.name?`an instance of ${e.constructor.name}`:`${(0,Nt.inspect)(e,{depth:-1})}`;let t=(0,Nt.inspect)(e,{colors:!1});return t.length>28&&(t=`${t.slice(0,25)}...`),`type ${typeof e} (${t})`}(n)}`,r},TypeError),q.ERR_INVALID_MODULE_SPECIFIER=Ht(`ERR_INVALID_MODULE_SPECIFIER`,(e,t,n=void 0)=>`Invalid module "${e}" ${t}${n?` imported from ${n}`:``}`,TypeError),q.ERR_INVALID_PACKAGE_CONFIG=Ht(`ERR_INVALID_PACKAGE_CONFIG`,(e,t,n)=>`Invalid package config ${e}${t?` while importing ${t}`:``}${n?`. ${n}`:``}`,Error),q.ERR_INVALID_PACKAGE_TARGET=Ht(`ERR_INVALID_PACKAGE_TARGET`,(e,t,n,r=!1,i=void 0)=>{let a=typeof n==`string`&&!r&&n.length>0&&!n.startsWith(`./`);return t===`.`?(kt.ok(!1===r),`Invalid "exports" main target ${JSON.stringify(n)} defined in the package config ${e}package.json${i?` imported from ${i}`:``}${a?`; targets must start with "./"`:``}`):`Invalid "${r?`imports`:`exports`}" target ${JSON.stringify(n)} defined for '${t}' in the package config ${e}package.json${i?` imported from ${i}`:``}${a?`; targets must start with "./"`:``}`},Error),q.ERR_MODULE_NOT_FOUND=Ht(`ERR_MODULE_NOT_FOUND`,(e,t,n=!1)=>`Cannot find ${n?`module`:`package`} '${e}' imported from ${t}`,Error),q.ERR_NETWORK_IMPORT_DISALLOWED=Ht(`ERR_NETWORK_IMPORT_DISALLOWED`,`import of '%s' by %s is not supported: %s`,Error),q.ERR_PACKAGE_IMPORT_NOT_DEFINED=Ht(`ERR_PACKAGE_IMPORT_NOT_DEFINED`,(e,t,n)=>`Package import specifier "${e}" is not defined${t?` in package ${t}package.json`:``} imported from ${n}`,TypeError),q.ERR_PACKAGE_PATH_NOT_EXPORTED=Ht(`ERR_PACKAGE_PATH_NOT_EXPORTED`,(e,t,n=void 0)=>t===`.`?`No "exports" main defined in ${e}package.json${n?` imported from ${n}`:``}`:`Package subpath '${t}' is not defined by "exports" in ${e}package.json${n?` imported from ${n}`:``}`,Error),q.ERR_UNSUPPORTED_DIR_IMPORT=Ht(`ERR_UNSUPPORTED_DIR_IMPORT`,`Directory import '%s' is not supported resolving ES modules imported from %s`,Error),q.ERR_UNSUPPORTED_RESOLVE_REQUEST=Ht(`ERR_UNSUPPORTED_RESOLVE_REQUEST`,`Failed to resolve module specifier "%s" from "%s": Invalid relative URL or base scheme is not hierarchical.`,TypeError),q.ERR_UNKNOWN_FILE_EXTENSION=Ht(`ERR_UNKNOWN_FILE_EXTENSION`,(e,t)=>`Unknown file extension "${e}" for ${t}`,TypeError),q.ERR_INVALID_ARG_VALUE=Ht(`ERR_INVALID_ARG_VALUE`,(e,t,n=`is invalid`)=>{let r=(0,Nt.inspect)(t);return r.length>128&&(r=`${r.slice(0,128)}...`),`The ${e.includes(`.`)?`property`:`argument`} '${e}' ${n}. Received ${r}`},TypeError);let J=function(e){let t=`__node_internal_`+e.name;return Object.defineProperty(e,"name",{value:t}),e}(function(e){let t=Ut();return t&&(Vt=Error.stackTraceLimit,Error.stackTraceLimit=1/0),Error.captureStackTrace(e),t&&(Error.stackTraceLimit=Vt),e}),Wt={}.hasOwnProperty,{ERR_INVALID_PACKAGE_CONFIG:Gt}=q,Kt=new Map;function qt(e,{base:t,specifier:n}){let r=Kt.get(e);if(r)return r;let i;try{i=W.readFileSync(jt.toNamespacedPath(e),`utf8`)}catch(e){let t=e;if(t.code!==`ENOENT`)throw t}let a={exists:!1,pjsonPath:e,main:void 0,name:void 0,type:`none`,exports:void 0,imports:void 0};if(i!==void 0){let r;try{r=JSON.parse(i)}catch(r){let i=r,a=new Gt(e,(t?`"${n}" from `:``)+(0,K.fileURLToPath)(t||n),i.message);throw a.cause=i,a}a.exists=!0,Wt.call(r,`name`)&&typeof r.name==`string`&&(a.name=r.name),Wt.call(r,`main`)&&typeof r.main==`string`&&(a.main=r.main),Wt.call(r,`exports`)&&(a.exports=r.exports),Wt.call(r,`imports`)&&(a.imports=r.imports),!Wt.call(r,`type`)||r.type!==`commonjs`&&r.type!==`module`||(a.type=r.type)}return Kt.set(e,a),a}function Jt(e){let t=new URL(`package.json`,e);for(;!t.pathname.endsWith(`node_modules/package.json`);){let n=qt((0,K.fileURLToPath)(t),{specifier:e});if(n.exists)return n;let r=t;if(t=new URL(`../package.json`,t),t.pathname===r.pathname)break}return{pjsonPath:(0,K.fileURLToPath)(t),exists:!1,type:`none`}}function Yt(e){return Jt(e).type}let{ERR_UNKNOWN_FILE_EXTENSION:Xt}=q,Zt={}.hasOwnProperty,Qt={__proto__:null,".cjs":`commonjs`,".js":`module`,".json":`json`,".mjs":`module`},$t={__proto__:null,"data:":function(e){let{1:t}=/^([^/]+\/[^;,]+)[^,]*?(;base64)?,/.exec(e.pathname)||[null,null,null];return function(e){return e&&/\s*(text|application)\/javascript\s*(;\s*charset=utf-?8\s*)?/i.test(e)?`module`:e===`application/json`?`json`:null}(t)},"file:":function(e,t,n){let r=function(e){let t=e.pathname,n=t.length;for(;n--;){let e=t.codePointAt(n);if(e===47)return``;if(e===46)return t.codePointAt(n-1)===47?``:t.slice(n)}return``}(e);if(r===`.js`){let t=Yt(e);return t===`none`?`commonjs`:t}if(r===``){let t=Yt(e);return t===`none`||t===`commonjs`?`commonjs`:`module`}let i=Qt[r];if(i)return i;if(n)return;let a=(0,K.fileURLToPath)(e);throw new Xt(r,a)},"http:":en,"https:":en,"node:":()=>`builtin`};function en(){}let tn=Object.freeze([`node`,`import`]),nn=new Set(tn);function Y(e){return nn}let rn=RegExp.prototype[Symbol.replace],{ERR_INVALID_MODULE_SPECIFIER:an,ERR_INVALID_PACKAGE_CONFIG:on,ERR_INVALID_PACKAGE_TARGET:sn,ERR_MODULE_NOT_FOUND:cn,ERR_PACKAGE_IMPORT_NOT_DEFINED:ln,ERR_PACKAGE_PATH_NOT_EXPORTED:un,ERR_UNSUPPORTED_DIR_IMPORT:dn,ERR_UNSUPPORTED_RESOLVE_REQUEST:fn}=q,pn={}.hasOwnProperty,mn=/(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))?(\\|\/|$)/i,hn=/(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i,gn=/^\.|%|\\/,_n=/\*/g,vn=/%2f|%5c/i,yn=new Set,bn=/[/\\]{2}/;function xn(e,t,n,r,i,a,o){if(At.noDeprecation)return;let s=(0,K.fileURLToPath)(r),c=bn.exec(o?e:t)!==null;At.emitWarning(`Use of deprecated ${c?`double slash`:`leading or trailing slash matching`} resolving "${e}" for module request "${t}" ${t===n?``:`matched to "${n}" `}in the "${i?`imports`:`exports`}" field module resolution of the package at ${s}${a?` imported from ${(0,K.fileURLToPath)(a)}`:``}.`,`DeprecationWarning`,`DEP0166`)}function Sn(e,t,n,r){if(At.noDeprecation||function(e,t){let n=e.protocol;return Zt.call($t,n)&&$t[n](e,t,!0)||null}(e,{parentURL:n.href})!==`module`)return;let i=(0,K.fileURLToPath)(e.href),a=(0,K.fileURLToPath)(new URL(`.`,t)),o=(0,K.fileURLToPath)(n);r?jt.resolve(a,r)!==i&&At.emitWarning(`Package ${a} has a "main" field set to "${r}", excluding the full filename and extension to the resolved file at "${i.slice(a.length)}", imported from ${o}.\n Automatic extension resolution of the "main" field is deprecated for ES modules.`,`DeprecationWarning`,`DEP0151`):At.emitWarning(`No "main" or "exports" field defined in the package.json for ${a} resolving the main entry point "${i.slice(a.length)}", imported from ${o}.\nDefault "index" lookups for the main are deprecated for ES modules.`,`DeprecationWarning`,`DEP0151`)}function Cn(e){try{return(0,W.statSync)(e)}catch{}}function wn(e){let t=(0,W.statSync)(e,{throwIfNoEntry:!1}),n=t?t.isFile():void 0;return n!=null&&n}function Tn(e,t,n){let r;if(t.main!==void 0){if(r=new URL(t.main,e),wn(r))return r;let i=[`./${t.main}.js`,`./${t.main}.json`,`./${t.main}.node`,`./${t.main}/index.js`,`./${t.main}/index.json`,`./${t.main}/index.node`],a=-1;for(;++a<i.length&&(r=new URL(i[a],e),!wn(r));)r=void 0;if(r)return Sn(r,e,n,t.main),r}let i=[`./index.js`,`./index.json`,`./index.node`],a=-1;for(;++a<i.length&&(r=new URL(i[a],e),!wn(r));)r=void 0;if(r)return Sn(r,e,n,t.main),r;throw new cn((0,K.fileURLToPath)(new URL(`.`,e)),(0,K.fileURLToPath)(n))}function En(e,t,n){return new un((0,K.fileURLToPath)(new URL(`.`,t)),e,n&&(0,K.fileURLToPath)(n))}function Dn(e,t,n,r,i){return t=typeof t==`object`&&t?JSON.stringify(t,null,``):`${t}`,new sn((0,K.fileURLToPath)(new URL(`.`,n)),e,t,r,i&&(0,K.fileURLToPath)(i))}function On(e,t,n,r,i,a,o,s,c){if(t!==``&&!a&&e[e.length-1]!==`/`)throw Dn(n,e,r,o,i);if(!e.startsWith(`./`)){if(o&&!e.startsWith(`../`)&&!e.startsWith(`/`)){let n=!1;try{new URL(e),n=!0}catch{}if(!n)return Pn(a?rn.call(_n,e,()=>t):e+t,r,c)}throw Dn(n,e,r,o,i)}if(mn.exec(e.slice(2))!==null){if(hn.exec(e.slice(2))!==null)throw Dn(n,e,r,o,i);if(!s){let s=a?n.replace(`*`,()=>t):n+t;xn(a?rn.call(_n,e,()=>t):e,s,n,r,o,i,!0)}}let l=new URL(e,r),u=l.pathname,d=new URL(`.`,r).pathname;if(!u.startsWith(d))throw Dn(n,e,r,o,i);if(t===``)return l;if(mn.exec(t)!==null){let c=a?n.replace(`*`,()=>t):n+t;hn.exec(t)===null?s||xn(a?rn.call(_n,e,()=>t):e,c,n,r,o,i,!1):(function(e,t,n,r,i){let a=`request is not a valid match in pattern "${t}" for the "${r?`imports`:`exports`}" resolution of ${(0,K.fileURLToPath)(n)}`;throw new an(e,a,i&&(0,K.fileURLToPath)(i))})(c,n,r,o,i)}return a?new URL(rn.call(_n,l.href,()=>t)):new URL(t,l)}function kn(e){let t=Number(e);return`${t}`===e&&t>=0&&t<4294967295}function An(e,t,n,r,i,a,o,s,c){if(typeof t==`string`)return On(t,n,r,e,i,a,o,s,c);if(Array.isArray(t)){let l=t;if(l.length===0)return null;let u,d=-1;for(;++d<l.length;){let t=l[d],f;try{f=An(e,t,n,r,i,a,o,s,c)}catch(e){if(u=e,e.code===`ERR_INVALID_PACKAGE_TARGET`)continue;throw e}if(f!==void 0){if(f!==null)return f;u=null}}if(u==null)return null;throw u}if(typeof t==`object`&&t){let l=Object.getOwnPropertyNames(t),u=-1;for(;++u<l.length;)if(kn(l[u]))throw new on((0,K.fileURLToPath)(e),i,`"exports" cannot contain numeric property keys.`);for(u=-1;++u<l.length;){let d=l[u];if(d==="default"||c&&c.has(d)){let l=An(e,t[d],n,r,i,a,o,s,c);if(l===void 0)continue;return l}}return null}if(t===null)return null;throw Dn(r,t,e,o,i)}function X(e,t,n){if(At.noDeprecation)return;let r=(0,K.fileURLToPath)(t);yn.has(r+`|`+e)||(yn.add(r+`|`+e),At.emitWarning(`Use of deprecated trailing slash pattern mapping "${e}" in the "exports" field module resolution of the package at ${r}${n?` imported from ${(0,K.fileURLToPath)(n)}`:``}. Mapping specifiers ending in "/" is no longer supported.`,`DeprecationWarning`,`DEP0155`))}function jn(e,t,n,r,i){let a=n.exports;if(function(e,t,n){if(typeof e==`string`||Array.isArray(e))return!0;if(typeof e!=`object`||!e)return!1;let r=Object.getOwnPropertyNames(e),i=!1,a=0,o=-1;for(;++o<r.length;){let e=r[o],s=e===``||e[0]!==`.`;if(a++===0)i=s;else if(i!==s)throw new on((0,K.fileURLToPath)(t),n,`"exports" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.`)}return i}(a,e,r)&&(a={".":a}),pn.call(a,t)&&!t.includes(`*`)&&!t.endsWith(`/`)){let n=An(e,a[t],``,t,r,!1,!1,!1,i);if(n==null)throw En(t,e,r);return n}let o=``,s=``,c=Object.getOwnPropertyNames(a),l=-1;for(;++l<c.length;){let n=c[l],i=n.indexOf(`*`);if(i!==-1&&t.startsWith(n.slice(0,i))){t.endsWith(`/`)&&X(t,e,r);let a=n.slice(i+1);t.length>=n.length&&t.endsWith(a)&&Mn(o,n)===1&&n.lastIndexOf(`*`)===i&&(o=n,s=t.slice(i,t.length-a.length))}}if(o){let n=An(e,a[o],s,o,r,!0,!1,t.endsWith(`/`),i);if(n==null)throw En(t,e,r);return n}throw En(t,e,r)}function Mn(e,t){let n=e.indexOf(`*`),r=t.indexOf(`*`),i=n===-1?e.length:n+1,a=r===-1?t.length:r+1;return i>a?-1:a>i||n===-1?1:r===-1||e.length>t.length?-1:+(t.length>e.length)}function Nn(e,t,n){if(e===`#`||e.startsWith(`#/`)||e.endsWith(`/`))throw new an(e,`is not a valid internal imports specifier name`,(0,K.fileURLToPath)(t));let r,i=Jt(t);if(i.exists){r=(0,K.pathToFileURL)(i.pjsonPath);let a=i.imports;if(a)if(pn.call(a,e)&&!e.includes(`*`)){let i=An(r,a[e],``,e,t,!1,!0,!1,n);if(i!=null)return i}else{let i=``,o=``,s=Object.getOwnPropertyNames(a),c=-1;for(;++c<s.length;){let t=s[c],n=t.indexOf(`*`);if(n!==-1&&e.startsWith(t.slice(0,-1))){let r=t.slice(n+1);e.length>=t.length&&e.endsWith(r)&&Mn(i,t)===1&&t.lastIndexOf(`*`)===n&&(i=t,o=e.slice(n,e.length-r.length))}}if(i){let e=An(r,a[i],o,i,t,!0,!0,!1,n);if(e!=null)return e}}}throw function(e,t,n){return new ln(e,t&&(0,K.fileURLToPath)(new URL(`.`,t)),(0,K.fileURLToPath)(n))}(e,r,t)}function Pn(e,t,n){if(ct.builtinModules.includes(e))return new URL(`node:`+e);let{packageName:r,packageSubpath:i,isScoped:a}=function(e,t){let n=e.indexOf(`/`),r=!0,i=!1;e[0]===`@`&&(i=!0,n===-1||e.length===0?r=!1:n=e.indexOf(`/`,n+1));let a=n===-1?e:e.slice(0,n);if(gn.exec(a)!==null&&(r=!1),!r)throw new an(e,`is not a valid package name`,(0,K.fileURLToPath)(t));return{packageName:a,packageSubpath:`.`+(n===-1?``:e.slice(n)),isScoped:i}}(e,t),o=Jt(t);if(o.exists){let e=(0,K.pathToFileURL)(o.pjsonPath);if(o.name===r&&o.exports!==void 0&&o.exports!==null)return jn(e,i,o,t,n)}let s,c=new URL(`./node_modules/`+r+`/package.json`,t),l=(0,K.fileURLToPath)(c);do{let o=Cn(l.slice(0,-13));if(!o||!o.isDirectory()){s=l,c=new URL((a?`../../../../node_modules/`:`../../../node_modules/`)+r+`/package.json`,c),l=(0,K.fileURLToPath)(c);continue}let u=qt(l,{base:t,specifier:e});return u.exports!==void 0&&u.exports!==null?jn(c,i,u,t,n):i===`.`?Tn(c,u,t):new URL(i,c)}while(l.length!==s.length)}function Fn(e,t,n,r){n===void 0&&(n=Y());let i=t.protocol,a=i===`data:`||i===`http:`||i===`https:`,o;if(function(e){return e!==``&&(e[0]===`/`||function(e){return e[0]===`.`&&(e.length===1||e[1]===`/`||e[1]===`.`&&(e.length===2||e[2]===`/`))}(e))}(e))try{o=new URL(e,t)}catch(n){let r=new fn(e,t);throw r.cause=n,r}else if(i===`file:`&&e[0]===`#`)o=Nn(e,t,n);else try{o=new URL(e)}catch(r){if(a&&!ct.builtinModules.includes(e)){let n=new fn(e,t);throw n.cause=r,n}o=Pn(e,t,n)}return kt.ok(o!==void 0,`expected to be defined`),o.protocol===`file:`?function(e,t){if(vn.exec(e.pathname)!==null)throw new an(e.pathname,`must not include encoded "/" or "\\" characters`,(0,K.fileURLToPath)(t));let n;try{n=(0,K.fileURLToPath)(e)}catch(n){let r=n;throw Object.defineProperty(r,"input",{value:String(e)}),Object.defineProperty(r,"module",{value:String(t)}),r}let r=Cn(n.endsWith(`/`)?n.slice(-1):n);if(r&&r.isDirectory()){let r=new dn(n,(0,K.fileURLToPath)(t));throw r.url=String(e),r}if(!r||!r.isFile()){let r=new cn(n||e.pathname,t&&(0,K.fileURLToPath)(t),!0);throw r.url=String(e),r}{let t=(0,W.realpathSync)(n),{search:r,hash:i}=e;(e=(0,K.pathToFileURL)(t+(n.endsWith(jt.sep)?`/`:``))).search=r,e.hash=i}return e}(o,t):o}function In(e){return typeof e!=`string`||e.startsWith(`file://`)?Ft((0,K.fileURLToPath)(e)):Ft(e)}function Ln(e){return(0,K.pathToFileURL)(In(e)).toString()}let Rn=new Set([`node`,`import`]),zn=[`.mjs`,`.cjs`,`.js`,`.json`],Bn=new Set([`ERR_MODULE_NOT_FOUND`,`ERR_UNSUPPORTED_DIR_IMPORT`,`MODULE_NOT_FOUND`,`ERR_PACKAGE_PATH_NOT_EXPORTED`]);function Vn(e,t,n){try{return Fn(e,t,n)}catch(e){if(!Bn.has(e?.code))throw e}}function Hn(e,t={}){if(typeof e!=`string`){if(!(e instanceof URL))throw TypeError("input must be a `string` or `URL`");e=In(e)}if(/(?:node|data|http|https):/.test(e))return e;if(Pt.has(e))return`node:`+e;if(e.startsWith(`file://`)&&(e=In(e)),Et(e))try{if((0,W.statSync)(e).isFile())return Ln(e)}catch(e){if(e?.code!==`ENOENT`)throw e}let n=t.conditions?new Set(t.conditions):Rn,r=(Array.isArray(t.url)?t.url:[t.url]).filter(Boolean).map(e=>new URL(function(e){return typeof e!=`string`&&(e=e.toString()),/(?:node|data|http|https|file):/.test(e)?e:Pt.has(e)?`node:`+e:`file://`+encodeURI(Ft(e))}(e.toString())));r.length===0&&r.push(new URL(Ln(process.cwd())));let i=[...r];for(let e of r)e.protocol===`file:`&&i.push(new URL(`./`,e),new URL(mt(e.pathname,`_index.js`),e),new URL(`node_modules`,e));let a;for(let r of i){if(a=Vn(e,r,n),a)break;for(let i of[``,`/index`]){for(let o of t.extensions||zn)if(a=Vn(mt(e,i)+o,r,n),a)break;if(a)break}if(a)break}if(!a){let t=Error(`Cannot find module ${e} imported from ${i.join(`, `)}`);throw t.code=`ERR_MODULE_NOT_FOUND`,t}return Ln(a)}function Un(e,t){return Hn(e,t)}function Wn(e,t){return In(Un(e,t))}let Gn=/(?:[\s;]|^)(?:import[\s\w*,{}]*from|import\s*["'*{]|export\b\s*(?:[*{]|default|class|type|function|const|var|let|async function)|import\.meta\b)/m,Kn=/\/\*.+?\*\/|\/\/.*(?=[nr])/g;function qn(e,t={}){return t.stripComments&&(e=e.replace(Kn,``)),Gn.test(e)}function Jn(e){if(typeof e!=`string`)throw TypeError(`Expected a string`);return e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`)}let Yn=new Set([`/`,`\\`,void 0]),Xn=Symbol.for(`pathe:normalizedAlias`),Zn=/[/\\]/;function Qn(e){if(e[Xn])return e;let t=Object.fromEntries(Object.entries(e).sort(([e],[t])=>function(e,t){return t.split(`/`).length-e.split(`/`).length}(e,t)));for(let e in t)for(let n in t)n===e||e.startsWith(n)||t[e]?.startsWith(n)&&Yn.has(t[e][n.length])&&(t[e]=t[n]+t[e].slice(n.length));return Object.defineProperty(t,Xn,{value:!0,enumerable:!1}),t}function $n(e=`/`){let t=e[e.length-1];return t===`/`||t===`\\`}var er={rE:`2.6.1`};let tr=k(`node:crypto`);var nr=r.n(tr);let Z=globalThis.process?.env||Object.create(null),rr=globalThis.process||{env:Z},ir=rr!==void 0&&rr.env&&rr.env.NODE_ENV||void 0,ar=[[`claude`,[`CLAUDECODE`,`CLAUDE_CODE`]],[`replit`,[`REPL_ID`]],[`gemini`,[`GEMINI_CLI`]],[`codex`,[`CODEX_SANDBOX`,`CODEX_THREAD_ID`]],[`opencode`,[`OPENCODE`]],[`pi`,[or(`PATH`,/\.pi[\\/]agent/)]],[`auggie`,[`AUGMENT_AGENT`]],[`goose`,[`GOOSE_PROVIDER`]],[`devin`,[or(`EDITOR`,/devin/)]],[`cursor`,[`CURSOR_AGENT`]],[`kiro`,[or(`TERM_PROGRAM`,/kiro/)]]];function or(e,t){return()=>{let n=Z[e];return!!n&&t.test(n)}}let sr=function(){let e=Z.AI_AGENT;if(e)return{name:e.toLowerCase()};for(let[e,t]of ar)for(let n of t)if(typeof n==`string`?Z[n]:n())return{name:e};return{}}(),cr=(sr.name,sr.name,[[`APPVEYOR`],[`AWS_AMPLIFY`,`AWS_APP_ID`,{ci:!0}],[`AZURE_PIPELINES`,`SYSTEM_TEAMFOUNDATIONCOLLECTIONURI`],[`AZURE_STATIC`,`INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN`],[`APPCIRCLE`,`AC_APPCIRCLE`],[`BAMBOO`,`bamboo_planKey`],[`BITBUCKET`,`BITBUCKET_COMMIT`],[`BITRISE`,`BITRISE_IO`],[`BUDDY`,`BUDDY_WORKSPACE_ID`],[`BUILDKITE`],[`CIRCLE`,`CIRCLECI`],[`CIRRUS`,`CIRRUS_CI`],[`CLOUDFLARE_PAGES`,`CF_PAGES`,{ci:!0}],[`CLOUDFLARE_WORKERS`,`WORKERS_CI`,{ci:!0}],[`GOOGLE_CLOUDRUN`,`K_SERVICE`],[`GOOGLE_CLOUDRUN_JOB`,`CLOUD_RUN_JOB`],[`CODEBUILD`,`CODEBUILD_BUILD_ARN`],[`CODEFRESH`,`CF_BUILD_ID`],[`DRONE`],[`DRONE`,`DRONE_BUILD_EVENT`],[`DSARI`],[`GITHUB_ACTIONS`],[`GITLAB`,`GITLAB_CI`],[`GITLAB`,`CI_MERGE_REQUEST_ID`],[`GOCD`,`GO_PIPELINE_LABEL`],[`LAYERCI`],[`JENKINS`,`JENKINS_URL`],[`HUDSON`,`HUDSON_URL`],[`MAGNUM`],[`NETLIFY`],[`NETLIFY`,`NETLIFY_LOCAL`,{ci:!1}],[`NEVERCODE`],[`RENDER`],[`SAIL`,`SAILCI`],[`SEMAPHORE`],[`SCREWDRIVER`],[`SHIPPABLE`],[`SOLANO`,`TDDIUM`],[`STRIDER`],[`TEAMCITY`,`TEAMCITY_VERSION`],[`TRAVIS`],[`VERCEL`,`NOW_BUILDER`],[`VERCEL`,`VERCEL`,{ci:!1}],[`VERCEL`,`VERCEL_ENV`,{ci:!1}],[`APPCENTER`,`APPCENTER_BUILD_ID`],[`CODESANDBOX`,`CODESANDBOX_SSE`,{ci:!1}],[`CODESANDBOX`,`CODESANDBOX_HOST`,{ci:!1}],[`STACKBLITZ`],[`STORMKIT`],[`CLEAVR`],[`ZEABUR`],[`CODESPHERE`,`CODESPHERE_APP_ID`,{ci:!0}],[`RAILWAY`,`RAILWAY_PROJECT_ID`],[`RAILWAY`,`RAILWAY_SERVICE_ID`],[`DENO-DEPLOY`,`DENO_DEPLOY`],[`DENO-DEPLOY`,`DENO_DEPLOYMENT_ID`],[`FIREBASE_APP_HOSTING`,`FIREBASE_APP_HOSTING`,{ci:!0}],[`EDGEONE_PAGES`,`EO_PAGES_CI`,{ci:!0}]]),lr=function(){for(let e of cr)if(Z[e[1]||e[0]])return{name:e[0].toLowerCase(),...e[2]};return Z.SHELL===`/bin/jsh`&&rr.versions?.webcontainer?{name:`stackblitz`,ci:!1}:{name:``,ci:!1}}(),ur=(lr.name,rr.platform||``);Z.CI||lr.ci;let dr=!!rr.stdout?.isTTY;Z.DEBUG,ir===`test`||Z.TEST;let fr=(ir===`production`||Z.MODE,ir===`dev`||ir===`development`||Z.MODE,Z.MINIMAL,/^win/i.test(ur)),pr=(/^linux/i.test(ur),/^darwin/i.test(ur),!Z.NO_COLOR&&(Z.FORCE_COLOR||(dr||fr)&&Z.TERM),(rr.versions?.node||``).replace(/^v/,``)||null),mr=(Number(pr?.split(`.`)[0]),!!rr?.versions?.node),hr=`Bun`in globalThis,gr=`Deno`in globalThis,_r=`fastly`in globalThis,vr=[[`Netlify`in globalThis,`netlify`],[`EdgeRuntime`in globalThis,`edge-light`],[globalThis.navigator?.userAgent===`Cloudflare-Workers`,`workerd`],[_r,`fastly`],[gr,`deno`],[hr,`bun`],[mr,`node`]];(function(){let e=vr.find(e=>e[0]);e&&e[1]})();let yr=k(`node:tty`)?.WriteStream?.prototype?.hasColors?.()??!1,Q=(e,t)=>{if(!yr)return e=>e;let n=`[${e}m`,r=`[${t}m`;return e=>{let i=e+``,a=i.indexOf(r);if(a===-1)return n+i+r;let o=n,s=0,c=(t===22?r:``)+n;for(;a!==-1;)o+=i.slice(s,a)+c,s=a+r.length,a=i.indexOf(r,s);return o+=i.slice(s)+r,o}},br=(Q(0,0),Q(1,22),Q(2,22),Q(3,23),Q(4,24),Q(53,55),Q(7,27),Q(8,28),Q(9,29),Q(30,39),Q(31,39)),xr=Q(32,39),Sr=Q(33,39),Cr=Q(34,39),wr=(Q(35,39),Q(36,39)),Tr=(Q(37,39),Q(90,39));Q(40,49),Q(41,49),Q(42,49),Q(43,49),Q(44,49),Q(45,49),Q(46,49),Q(47,49),Q(100,49),Q(91,39),Q(92,39),Q(93,39),Q(94,39),Q(95,39),Q(96,39),Q(97,39),Q(101,49),Q(102,49),Q(103,49),Q(104,49),Q(105,49),Q(106,49),Q(107,49);function Er(e){if(typeof e!=`string`||e.startsWith(`file://`))return!1;try{return(0,W.lstatSync)(e).isDirectory()}catch{return!1}}function Dr(e,t=8){return(function(){if(Ar!==void 0)return Ar;try{return Ar=!!nr().getFips?.(),Ar}catch{return Ar=!1,Ar}}()?nr().createHash(`sha256`):nr().createHash(`md5`)).update(e).digest(`hex`).slice(0,t)}let Or={true:xr(`true`),false:Sr(`false`),"[rebuild]":Sr(`[rebuild]`),"[esm]":Cr(`[esm]`),"[cjs]":xr(`[cjs]`),"[import]":Cr(`[import]`),"[require]":xr(`[require]`),"[native]":wr(`[native]`),"[transpile]":Sr(`[transpile]`),"[fallback]":br(`[fallback]`),"[unknown]":br(`[unknown]`),"[hit]":xr(`[hit]`),"[miss]":Sr(`[miss]`),"[json]":xr(`[json]`),"[data]":xr(`[data]`)};function $(e,...t){if(!e.opts.debug)return;let n=process.cwd();console.log(Tr([`[jiti]`,...t.map(e=>e in Or?Or[e]:typeof e==`string`?e.replace(n,`.`):JSON.stringify(e))].join(` `)))}function kr(e,t){return e.opts.interopDefault?function(e){let t=typeof e;if(e===null||t!==`object`&&t!==`function`)return e;let n=e.default,r=typeof n,i=n==null,a=r===`object`||r===`function`;if(i&&e instanceof Promise)return e;let o=r===`function`&&t!==`function`,s=a&&!(n instanceof Promise),c=new Map;return new Proxy(e,{get(t,r){if(c.has(r))return c.get(r);let a;return r==="__esModule"?a=!0:r==="default"?a=i?e:typeof n?.default==`function`&&e.__esModule?n.default:n:r in t?a=t[r]:s&&(a=n[r],typeof a==`function`&&(a=a.bind(n))),c.set(r,a),a},apply:o?(e,t,r)=>Reflect.apply(n,t,r):void 0})}(t):t}let Ar;function jr(e,t){return!!Mr(e,t)}function Mr(e,t,n){let r=process.env[e];if(!(e in process.env))return t;try{return JSON.parse(r)}catch{return n?r:t}}let Nr=/\.(c|m)?j(sx?)$/,Pr=/\.(c|m)?t(sx?)$/;function Fr(e,t,n){let r,i;if(e.isNativeRe.test(t))return t;if(e.resolveTsConfigPaths&&!n.skipTsConfigPaths){let r=e.resolveTsConfigPaths(t);for(let t of r){let r=Fr(e,t,{...n,try:!0,skipTsConfigPaths:!0});if(r)return r}}e.alias&&(t=function(e,t){let n=gt(e);t=Qn(t);for(let[e,r]of Object.entries(t))if(n.startsWith(e)&&$n(n[($n(e)?e.slice(0,-1):e).length]))return St(r,n.slice(e.length));return n}(t,e.alias));let a=n?.parentURL||e.url;Er(a)&&(a=St(a,`_index.js`));let o=(n?.async?[n?.conditions,[`node`,`import`],[`node`,`require`]]:[n?.conditions,[`node`,`require`],[`node`,`import`]]).filter(Boolean);for(let n of o){try{r=Wn(t,{url:a,conditions:n,extensions:e.opts.extensions})}catch(e){i=e}if(r)return r}try{return e.nativeRequire.resolve(t,{paths:n.paths})}catch(e){i=e}for(let i of e.additionalExts)if(r=Ir(e,t+i,a,n)||Ir(e,t+`/index`+i,a,n),r||(Pr.test(e.filename)||Pr.test(e.parentModule?.filename||``)||Nr.test(t))&&(r=Ir(e,t.replace(Nr,`.$1t$2`),a,n),r))return r;if(!n?.try)throw i}function Ir(e,t,n,r){try{return e.nativeRequire.resolve(t,{...r,paths:[G(In(n)),...r?.paths||[]]})}catch{}}let Lr=k(`node:fs/promises`),Rr=k(`node:perf_hooks`),zr=k(`node:vm`);var Br=r.n(zr);function Vr(e,t,n){let r=e.parentCache||{};if(t.startsWith(`node:`))return Hr(e,t,n.async);if(t.startsWith(`file:`))t=(0,K.fileURLToPath)(t);else if(t.startsWith(`data:`)){if(!n.async)throw Error("`data:` URLs are only supported in ESM context. Use `import` or `jiti.import` instead.");return $(e,`[native]`,`[data]`,`[import]`,t),Hr(e,t,!0)}if(ct.builtinModules.includes(t)||t===`.pnp.js`)return Hr(e,t,n.async);if(e.opts.virtualModules&&t in e.opts.virtualModules){$(e,`[virtual]`,t);let r=e.opts.virtualModules[t];return n.async?Promise.resolve(kr(e,r)):kr(e,r)}if(e.opts.tryNative&&!e.opts.transformOptions)try{if(!(t=Fr(e,t,n))&&n.try)return;if($(e,`[try-native]`,n.async&&e.nativeImport?`[import]`:`[require]`,t),n.async&&e.nativeImport)return e.nativeImport(t).then(n=>(!1===e.opts.moduleCache&&delete e.nativeRequire.cache[t],kr(e,n))).catch(r=>($(e,`[try-native] Using fallback for ${t} because of an error:`,r),Vr({...e,opts:{...e.opts,tryNative:!1}},t,n)));{let n=e.nativeRequire(t);return!1===e.opts.moduleCache&&delete e.nativeRequire.cache[t],kr(e,n)}}catch(n){$(e,`[try-native] Using fallback for ${t} because of an error:`,n)}let i=Fr(e,t,n);if(!i&&n.try)return;let a=Dt(i);if(a===`.json`){$(e,`[json]`,i);let t=e.nativeRequire(i);return t&&!(`default`in t)&&Object.defineProperty(t,"default",{value:t,enumerable:!1}),t}if(a&&!e.opts.extensions.includes(a))return $(e,`[native]`,`[unknown]`,n.async?`[import]`:`[require]`,i),Hr(e,i,n.async);if(e.isNativeRe.test(i))return $(e,`[native]`,n.async?`[import]`:`[require]`,i),Hr(e,i,n.async);if(r[i])return kr(e,r[i]?.exports);if(e.opts.moduleCache){let t=e.nativeRequire.cache[i];if(t?.loaded)return kr(e,t.exports)}return Kr(e,(0,W.readFileSync)(i,`utf8`),{id:t,filename:i,ext:a,cache:r,async:n.async})}function Hr(e,t,n){return n&&e.nativeImport?e.nativeImport(function(e){return fr&&Et(e)?Ln(e):e}(t)).then(t=>kr(e,t)):kr(e,e.nativeRequire(t))}function Ur(e,t,n){if(!e.opts.fsCache||!t.filename)return n();let r=` /* v9-${Dr(t.source,16)} */\n`,i=`${Ot(G(t.filename))}-${function(e){let t=e.split(Zn).pop();if(!t)return;let n=t.lastIndexOf(`.`);return n<=0?t:t.slice(0,n)}(t.filename)}`+(e.opts.sourceMaps?`+map`:``)+(t.interopDefault?`.i`:``)+`.${Dr(t.filename)}`+(t.async?`.mjs`:`.cjs`);t.jsx&&t.filename.endsWith(`x`)&&(i+=`x`);let a=e.opts.fsCache,o=St(a,i);if(!e.opts.rebuildFsCache&&(0,W.existsSync)(o)){let n=(0,W.readFileSync)(o,`utf8`);if(n.endsWith(r))return $(e,`[cache]`,`[hit]`,t.filename,`~>`,o),n}$(e,`[cache]`,`[miss]`,t.filename);let s=n();return s.includes(`__JITI_ERROR__`)||((0,W.writeFileSync)(o,s+r,`utf8`),$(e,`[cache]`,`[store]`,t.filename,`~>`,o)),s}function Wr(t){if(!0===t.opts.fsCache&&(t.opts.fsCache=function(t){let n=t.filename&&wt(t.filename,`../node_modules`);if(n&&(0,W.existsSync)(n))return St(n,`.cache/jiti`);let r=(0,e.tmpdir)();if(process.env.TMPDIR&&r===process.cwd()&&!process.env.JITI_RESPECT_TMPDIR_ENV){let t=process.env.TMPDIR;delete process.env.TMPDIR,r=(0,e.tmpdir)(),process.env.TMPDIR=t}return St(r,`jiti`)}(t)),t.opts.fsCache)try{if((0,W.mkdirSync)(t.opts.fsCache,{recursive:!0}),!function(e){try{return(0,W.accessSync)(e,W.constants.W_OK),!0}catch{return!1}}(t.opts.fsCache))throw Error(`directory is not writable!`)}catch(e){$(t,`Error creating cache directory at `,t.opts.fsCache,e),t.opts.fsCache=!1}}function Gr(e,t){let n=Ur(e,t,()=>{let n=e.opts.transform({...e.opts.transformOptions,babel:{...e.opts.sourceMaps?{sourceFileName:t.filename,sourceMaps:`inline`}:{},...e.opts.transformOptions?.babel},interopDefault:e.opts.interopDefault,...t});return n.error&&e.opts.debug&&$(e,n.error),n.code});return n.startsWith(`#!`)&&(n=`// `+n),n}function Kr(t,n,r={}){let i=r.id||(r.filename?Ot(r.filename):`_jitiEval.${r.ext||(r.async?`mjs`:`js`)}`),a=r.filename||Fr(t,i,{async:r.async}),o=r.ext||Dt(a),s=r.cache||t.parentCache||{},c=/\.[cm]?tsx?$/.test(o),l=o===`.mjs`||o===`.js`&&function(e){for(;e&&e!==`.`&&e!==`/`;){e=St(e,`..`);try{let t=(0,W.readFileSync)(St(e,`package.json`),`utf8`);try{return JSON.parse(t)}catch{}break}catch{}}}(a)?.type===`module`,u=o===`.cjs`,d=r.forceTranspile??(!u&&!(l&&r.async)&&(c||l||t.isTransformRe.test(a)||qn(n))),f=Rr.performance.now();if(d){n=Gr(t,{filename:a,source:n,ts:c,async:r.async??!1,jsx:t.opts.jsx});let e=Math.round(1e3*(Rr.performance.now()-f))/1e3;$(t,`[transpile]`,r.async?`[esm]`:`[cjs]`,a,`(${e}ms)`)}else{if($(t,`[native]`,r.async?`[import]`:`[require]`,a),r.async)return Promise.resolve(Hr(t,a,r.async)).catch(e=>($(t,`Native import error:`,e),$(t,`[fallback]`,a),Kr(t,n,{...r,forceTranspile:!0})));try{return Hr(t,a,r.async)}catch(e){$(t,`Native require error:`,e),$(t,`[fallback]`,a),n=Gr(t,{filename:a,source:n,ts:c,async:r.async??!1,jsx:t.opts.jsx})}}let p=new ct.Module(a);p.filename=a,t.parentModule&&(p.parent=t.parentModule,Array.isArray(t.parentModule.children)&&!t.parentModule.children.includes(p)&&t.parentModule.children.push(p));let m=Jr(a,t.opts,{parentModule:p,parentCache:s,nativeImport:t.nativeImport,onError:t.onError,createRequire:t.createRequire},!0),h;p.require=m,p.path=G(a),p.paths=ct.Module._nodeModulePaths(p.path),s[a]=p,t.opts.moduleCache&&(t.nativeRequire.cache[a]=p);let g=function(e,t){return`(${t?.async?`async `:``}function (exports, require, module, __filename, __dirname, jitiImport, jitiESMResolve) { ${e}\n});`}(n,{async:r.async});try{h=Br().runInThisContext(g,{filename:a,lineOffset:0,displayErrors:!1})}catch(n){n.name===`SyntaxError`&&r.async&&t.nativeImport?($(t,`[esm]`,`[import]`,`[fallback]`,a),h=function(t,n,r,i,a){let o=`export default ${n}`,s=a?void 0:`data:text/javascript;base64,${Buffer.from(o).toString(`base64`)}`;return(...n)=>{let a,c=()=>(a=function(t,n){let r=St((0,e.tmpdir)(),`jiti-esm`);try{(0,W.mkdirSync)(r,{recursive:!0})}catch{}let i=St(r,`${Ot(n,Dt(n))}-${Date.now()}-${Math.random().toString(36).slice(2)}.mjs`);return(0,W.writeFileSync)(i,t),i}(o,r),$(t,`[esm]`,`[tempfile]`,a),i(Ln(a)));return(s?i(s).catch(e=>{if(e?.code!==`ENAMETOOLONG`)throw e;return c()}):c()).then(e=>e.default(...n)).finally(()=>{a&&(0,Lr.unlink)(a).catch(()=>{})})}}(t,g,a,t.nativeImport,t.opts.esmEvalTempFile)):(t.opts.moduleCache&&delete t.nativeRequire.cache[a],t.onError(n))}let _;try{_=h(p.exports,p.require,p,p.filename,G(p.filename),m.import,m.esmResolve)}catch(e){t.opts.moduleCache&&delete t.nativeRequire.cache[a],t.onError(e)}function v(){if(p.exports&&p.exports.__JITI_ERROR__){let{filename:e,line:n,column:r,code:i,message:a}=p.exports.__JITI_ERROR__,o=Error(`${i}: ${a} \n ${`${e}:${n}:${r}`}`);Error.captureStackTrace(o,Vr),t.onError(o)}return p.loaded=!0,kr(t,p.exports)}return r.async?Promise.resolve(_).then(v):v()}let qr=(0,e.platform)()===`win32`;function Jr(e,t={},n,i=!1){let a=i?t:function(e){let t={fsCache:jr(`JITI_FS_CACHE`,jr(`JITI_CACHE`,!0)),rebuildFsCache:jr(`JITI_REBUILD_FS_CACHE`,!1),moduleCache:jr(`JITI_MODULE_CACHE`,jr(`JITI_REQUIRE_CACHE`,!0)),debug:jr(`JITI_DEBUG`,!1),sourceMaps:jr(`JITI_SOURCE_MAPS`,!1),interopDefault:jr(`JITI_INTEROP_DEFAULT`,!0),extensions:Mr(`JITI_EXTENSIONS`,[`.js`,`.mjs`,`.cjs`,`.ts`,`.tsx`,`.mts`,`.cts`,`.mtsx`,`.ctsx`]),alias:Mr(`JITI_ALIAS`,{}),nativeModules:Mr(`JITI_NATIVE_MODULES`,[]),transformModules:Mr(`JITI_TRANSFORM_MODULES`,[]),tryNative:Mr(`JITI_TRY_NATIVE`,`Bun`in globalThis),esmEvalTempFile:jr(`JITI_ESM_EVAL_TEMP_FILE`,!1),jsx:jr(`JITI_JSX`,!1),tsconfigPaths:Mr(`JITI_TSCONFIG_PATHS`,!1,!0)};t.jsx&&t.extensions.push(`.jsx`,`.tsx`);let n={};return e.cache!==void 0&&(n.fsCache=e.cache),e.requireCache!==void 0&&(n.moduleCache=e.requireCache),{...t,...n,...e}}(t);typeof e==`string`&&e.startsWith(`file://`)&&(e=In(e));let o=a.alias&&Object.keys(a.alias).length>0?Qn(a.alias||{}):void 0,s;if(a.tsconfigPaths){let{getTsconfig:t,createPathsMatcher:n}=r(`./node_modules/.pnpm/get-tsconfig@4.14.0/node_modules/get-tsconfig/dist/index.cjs`),i=t(typeof a.tsconfigPaths==`string`?a.tsconfigPaths:G(e));i&&(s=n(i))}let c=[`typescript`,`jiti`,...a.nativeModules||[]],l=RegExp(`node_modules/(${c.map(e=>Jn(e)).join(`|`)})/`),u=[...a.transformModules||[]],d=RegExp(`node_modules/(${u.map(e=>Jn(e)).join(`|`)})/`);e||=process.cwd(),!i&&Er(e)&&(e=St(e,`_index.js`));let f=Ln(e),p=[...a.extensions].filter(e=>e!==`.js`),m=n.createRequire(qr?e.replace(/\//g,`\\`):e),h={filename:e,url:f,opts:a,alias:o,resolveTsConfigPaths:s,nativeModules:c,transformModules:u,isNativeRe:l,isTransformRe:d,additionalExts:p,nativeRequire:m,onError:n.onError,parentModule:n.parentModule,parentCache:n.parentCache,nativeImport:n.nativeImport,createRequire:n.createRequire};return i||$(h,`[init]`,...[[`version:`,er.rE],[`module-cache:`,a.moduleCache],[`fs-cache:`,a.fsCache],[`rebuild-fs-cache:`,a.rebuildFsCache],[`interop-defaults:`,a.interopDefault]].flat()),i||Wr(h),Object.assign(function(e){return Vr(h,e,{async:!1})},{cache:a.moduleCache?m.cache:Object.create(null),extensions:m.extensions,main:m.main,options:a,resolve:Object.assign(function(e,t){return Fr(h,e,{...t,async:!1})},{paths:m.resolve.paths}),transform:e=>Gr(h,e),evalModule:(e,t)=>Kr(h,e,t),async import(e,t){let n=await Vr(h,e,{...t,async:!0});return t?.default?n?.default??n:n},esmResolve(e,t){typeof t==`string`&&(t={parentURL:t});let n=Fr(h,e,{parentURL:f,...t,async:!0});return!n||typeof n!=`string`||n.startsWith(`file://`)?n:Ln(n)}})}})(),t.exports=i.default})()}))();var de=class{emitter;constructor(){this.emitter=r()}on(e,t){A(e).forEach(e=>{this.emitter.on(e,t)})}off(e,t){A(e).forEach(e=>{this.emitter.off(e,t)})}emit(e,t){A(e).forEach(e=>{this.emitter.emit(e,t)})}removeAllListeners(){this.emitter.all.clear()}},fe=class{listeners;constructor(){this.listeners=new Map}on(e,t){A(e).forEach(e=>{let n=this.listeners.get(e)||new Set;n.add(t),this.listeners.set(e,n)})}off(e,t){A(e).forEach(e=>{let n=this.listeners.get(e);n&&n.delete(t)})}async emit(e,...t){let n=A(e).flatMap(e=>{let t=this.listeners.get(e)||new Set,n=this.listeners.get(`*`)||new Set;return[...Array.from(t),...Array.from(n)]});return n.length===0?[]:await Promise.all(n.map(async n=>{try{let e=n(...t);return e instanceof Promise?await e:e}catch(t){console.error(`Error in event listener for ${String(e)}:`,t);return}}))}removeAllListeners(){this.listeners.clear()}};function j(e,...t){return class extends e{static _instance;static getInstance(){return this._instance||=new e(...t),this._instance}static clearInstance(){this._instance=void 0}}}const pe=j(class extends de{destroy(){this.removeAllListeners()}fatal(e,t,n){this.emit(`fatal`,{code:t,message:e,data:n,timestamp:Date.now()})}error(e,t,n){this.emit(`error`,{code:t,message:e,data:n,timestamp:Date.now()})}warn(e,t,n){this.emit(`warning`,{code:t,message:e,data:n,timestamp:Date.now()})}});var me=class{data;_schema;_defaultValue;_path;constructor(e){let{schema:t,default:n,path:r}=e;this._schema=t,this._defaultValue=n,this._path=r}set(e){let t=this._schema[`~standard`].validate(e);if(t instanceof Promise)throw Error(`StructuredConfigFile does not support async validation`);if(t.issues)throw this.reportInvalidConfigFile(t.issues),Error(`Invalid config data for ${this._path}: ${t.issues.map(e=>e.message).join(`; `)}`);this.data=this.onBeforeSave(e),this.save(e)}get(e={}){return this.data?this.data:this.load(e)}getKey(e,t={}){return this.get(t)[e]}save(e){let t=this.onBeforeSave(e);try{d(this.getFilePath()),i.writeFileSync(this.getFilePath(),JSON.stringify(t,void 0,2))}catch{return}return this.data=t}load(e={}){let{createIfMissing:t=!0}=e;if(!this.fileExists(this.getFilePath())||!this.canReadWriteFile(this.getFilePath())){t&&this.save(this._defaultValue);let e=this.onAfterLoad(this._defaultValue);return t&&(this.data=e),e}try{let e=i.readFileSync(this.getFilePath(),`utf8`),t=this.onAfterLoad(this.parseStoredData(e));return this.data=t,t}catch{return this.data=this._defaultValue}}onBeforeSave(e){return e}onAfterLoad(e){return e}getFilePath(){return this._path}parseStoredData(e){try{let t=n(`string.json.parse`).to(`object`)(e);if(t instanceof n.errors)return this._defaultValue;let r=this._schema[`~standard`].validate(t);if(r instanceof Promise)throw Error(`StructuredConfigFile does not support async validation`);return r.issues?this.migrate(t,this._defaultValue):this.migrate(r.value,this._defaultValue)}catch{return this._defaultValue}}canReadWriteFile(e){try{return i.accessSync(e,i.constants.R_OK|i.constants.W_OK),!0}catch{return!1}}fileExists(e){try{return i.accessSync(e,i.constants.F_OK),!0}catch{return!1}}migrate(e,t){let n={...e};for(let r in t)Object.prototype.hasOwnProperty.call(t,r)&&(r in e?e[r]!==null&&t[r]!==null&&typeof e[r]==`object`&&typeof t[r]==`object`&&!Array.isArray(e[r])&&!Array.isArray(t[r])?n[r]=this.migrate(e[r],t[r]):Array.isArray(t[r])&&(n[r]=e[r]):n[r]=t[r]);return n}reportInvalidConfigFile(e){pe.getInstance().error(`Invalid config file`,`INVALID_CONFIG_FILE`,{issues:e.map(e=>e.message),filePath:this._path,data:this.data})}};function M(e,t,n){return typeof e!=`object`||!e?String(e):e instanceof Error?JSON.stringify(e,(e,t)=>{if(t instanceof Error){let e={};for(let n of Object.getOwnPropertyNames(t))e[n]=t[n];return e}return t},n):e instanceof Map?JSON.stringify(Object.fromEntries(e.entries()),t,n):e instanceof Set?JSON.stringify(Array.from(e),t,n):JSON.stringify(e,t,n)}const N=/\x1b\[[0-9;]*m/g;function P(e){return e.replace(N,``)}var he=class e extends de{stream;logPath;baseFileName;currentDate;rotationCheckInterval;isRotating=!1;constructor(e,t){super(),this.logPath=e,this.baseFileName=t.replace(`.log`,``),this.currentDate=this.getDateString(new Date),this.ensureLogDirectory(),this.ensureLogFile(),this.stream=this.createStream(),this.rotationCheckInterval=this.startRotationCheck(),this.cleanupOldLogs()}static scope(t,n){return new e(t,n)}log(...e){this.write(`info`,...e)}error(...e){this.write(`error`,...e)}warn(...e){this.write(`warn`,...e)}info(...e){this.write(`info`,...e)}debug(...e){this.write(`debug`,...e)}async close(){clearInterval(this.rotationCheckInterval),await new Promise(e=>{this.stream.end(()=>e())})}getCurrentFileName(){return this.getFileName(this.currentDate)}static getMessageElements(e,...t){let n=new Date;return{timestamp:n.toISOString().replace(`T`,` `).replace(/\.\d+Z$/,``)+`.${n.getUTCMilliseconds().toString().padStart(3,`0`)}`,level:e,message:t.map(e=>M(e)).join(` `)}}getFileName(e){return`${this.baseFileName}-${e}.log`}ensureLogDirectory(){try{s(this.logPath,{recursive:!0})}catch(e){throw console.error(`Failed to create log directory ${this.logPath}:`,e),e}}ensureLogFile(){let e=p(this.logPath,this.getFileName(this.currentDate));if(!o(e))try{u(e,``,`utf8`)}catch(t){throw console.error(`Failed to create log file ${e}:`,t),t}}getDateString(e){return`${e.getUTCFullYear()}-${(e.getUTCMonth()+1).toString().padStart(2,`0`)}-${e.getUTCDate().toString().padStart(2,`0`)}`}createStream(){return a(p(this.logPath,this.getFileName(this.currentDate)),{flags:`a`,encoding:`utf8`})}async rotateLogs(){if(this.isRotating)return;this.isRotating=!0;let e=this.getDateString(new Date);e!==this.currentDate&&await new Promise(t=>{this.stream.end(()=>{this.currentDate=e,this.stream=this.createStream(),this.cleanupOldLogs(),t()})}),this.isRotating=!1}startRotationCheck(){return setInterval(()=>this.rotateLogs(),6e4)}cleanupOldLogs(){let e=c(this.logPath),t=new Date,n=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()-7));e.filter(e=>e.startsWith(this.baseFileName)&&e.endsWith(`.log`)).filter(e=>{let[t,r,i]=e.replace(`${this.baseFileName}-`,``).replace(`.log`,``).split(`-`).map(Number);return new Date(Date.UTC(t,r-1,i))<=n}).forEach(e=>{try{l(p(this.logPath,e))}catch(t){console.error(`Failed to delete old log file ${e}:`,t)}})}ensureStreamValid(){if(!this.stream.writable||this.stream.destroyed)try{this.stream=this.createStream()}catch(e){this.emit(`error`,e instanceof Error?e:Error(String(e)))}}write(t,...n){let{timestamp:r,message:i}=e.getMessageElements(t,...n),a=`[${r}] [${t}] ${P(i)}\n`;this.ensureStreamValid(),this.stream.write(a,e=>{if(e)if(e.code===`ERR_STREAM_WRITE_AFTER_END`||!this.stream.writable)try{this.stream=this.createStream(),this.stream.write(a,e=>{e?this.emit(`error`,e):this.emit(`write`,a)})}catch(e){this.emit(`error`,e instanceof Error?e:Error(String(e)))}else this.emit(`error`,e);else this.emit(`write`,a)})}};const ge=()=>h.join(process.env.APPDATA??``,`overlayed`),F=()=>h.join(ge(),`logs`),_e=e=>h.join(ge(),`apps`,e),ve=e=>h.join(_e(e),`logs`),ye=()=>h.join(ge(),`meta.json`),be=()=>h.join(ge(),`crash-dumps`);var xe=class{fileLogger;path;appId;messageQueue=new ue;fileName;_debug=!1;silent=!1;forceSilent=!1;constructor(e){this.fileName=e}init(e,t=!1,n=!1,r=!1){this.appId=e,this._debug=t,this.silent=n,this.forceSilent=r,this.path=ve(e),this.fileLogger=new he(this.path,this.fileName),this.messageQueue.flush().forEach(e=>{this.fileLogger?.[e.type](...e.args)})}scope(e){if(!this.appId||!this.path)throw Error(`Logger not initialized`);let t=v.cyan(`[${e}]`);return{scope:e=>this.scope(e),error:(...e)=>this.error(t,...e),warn:(...e)=>this.warn(t,...e),info:(...e)=>this.info(t,...e),log:(...e)=>this.log(t,...e),debug:(...e)=>this.debug(t,...e)}}error(...e){this.handle(`error`,...e)}warn(...e){this.handle(`warn`,...e)}info(...e){this.handle(`log`,...e)}debug(...e){this._debug&&this.handle(`debug`,...e)}log(...e){this.handle(`log`,...e)}handle(e,...t){this.logToConsole(e,...t),this.fileLogger?this.fileLogger[e](...t):this.messageQueue.add({type:e,args:t})}logToConsole(e,...t){let n={error:v.red,warn:v.yellow,debug:v.blue,log:v.white};if(this.forceSilent||this.silent&&!this._debug)return;let{timestamp:r,message:i}=he.getMessageElements(e,...t),a=console[e],o=n[e];a(`${v.gray(r)} ${o(i)}`)}};const I=j(xe,`overlayed.log`);var Se=class extends ee{blob;chunkSizeMb;maxConcurrent;shouldStop=!1;constructor(e,t){super(),this.blob=e,this.chunkSizeMb=t.chunkSizeMb,this.maxConcurrent=t.maxConcurrent??3}get totalChunks(){return Math.ceil(this.blob.size/(this.chunkSizeMb*1024*1024))}async chunk(e){let t=this.chunkSizeMb*1024*1024,n=this.totalChunks;if(n===0)return;let r=new Map,i=new Set,a=new Set,o=[];for(let e=0;e<n;e++)o.push(e);let s=async n=>{let s=n*t,c=Math.min(s+t,this.blob.size),l=this.blob.slice(s,c);try{await e(l,n),a.add(n),this.emit(`chunkComplete`,n),i.delete(n)}catch(e){let t=r.get(n)||0;t<5?(r.set(n,t+1),await new Promise(e=>setTimeout(e,(t+1)*1e3)),o.push(n)):(a.add(n),this.emit(`error`,e),this.shouldStop=!0,i.delete(n))}},c=[],l=async()=>{for(;(o.length>0||i.size>0)&&!this.shouldStop;){if(o.length===0){await new Promise(e=>setTimeout(e,10));continue}let e=o.shift();a.has(e)||i.has(e)||(i.add(e),await s(e))}};for(let e=0;e<this.maxConcurrent;e++)c.push(l());await Promise.all(c)}};function L(e,t){let{recursive:n}=R(t);return S(e)?n?z(e).map(t=>[e,t]):te(e).map(t=>[e,t]):[]}function R(e){return{recursive:e?.recursive??!0}}function z(e){return te(e,{withFileTypes:!0}).flatMap(t=>{let n=h.join(e,t.name);return t.isDirectory()?z(n):[n]})}function Ce(e){return B(e),e}function B(e){if(!le(e.applicationId))throw Error(`Invalid applicationId, must be a valid ULID.`)}function we(e,t){let n=t?.cwd??process.cwd(),r=m.join(n,`.overlayed`);y.existsSync(r)||y.mkdirSync(r,{recursive:!0});let i={application:{id:e.id,name:e.name,slug:e.slug,siteUrl:e.siteUrl},release:{id:null,channel:`local`,version:`0.0.0`}},a=m.join(r,`meta.json`);return y.writeFileSync(a,JSON.stringify(i,null,2)),i}const{PipeEventServer:Te,PipeEventClient:Ee,PipeEventBase:De,GameMonitor:Oe,GameInstance:ke,HardwareInterface:Ae}=e(import.meta.url)(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`),je=j(class extends de{server=null;_hasConnection=!1;pipeId;get hasConnection(){return this._hasConnection}constructor(e){super(),this.pipeId=e,this.init()}destroy(){this.server&&=(this._hasConnection=!1,this.server?.removeAllListeners(),null)}init(){this.server=new Te(this.pipeId,{clientCount:1,access:1}),this.server.on(`event`,e=>{try{let t=JSON.parse(e);this.emit(`data`,[t])}catch(e){this.emit(`error`,e)}}),this.server.on(`connected`,()=>{this._hasConnection=!0,this.emit(`connected`,void 0)}),this.server.on(`disconnected`,()=>{this._hasConnection=!1,this.emit(`disconnected`,void 0)})}},`overlayed-event-server`),{RenderInterface:Me,renderHookPath:Ne}=e(import.meta.url)(`@overlayed/app/dist/render-interface/build/overlayed_render_interface_x64.node`);let Pe=function(e){return e[e.LeftButton=1]=`LeftButton`,e[e.RightButton=2]=`RightButton`,e[e.Cancel=3]=`Cancel`,e[e.MiddleButton=4]=`MiddleButton`,e[e.ExtraButton1=5]=`ExtraButton1`,e[e.ExtraButton2=6]=`ExtraButton2`,e[e.Back=8]=`Back`,e[e.Tab=9]=`Tab`,e[e.Clear=12]=`Clear`,e[e.Return=13]=`Return`,e[e.Shift=16]=`Shift`,e[e.Control=17]=`Control`,e[e.Menu=18]=`Menu`,e[e.Pause=19]=`Pause`,e[e.CapsLock=20]=`CapsLock`,e[e.Kana=21]=`Kana`,e[e.Hangeul=21]=`Hangeul`,e[e.Hangul=21]=`Hangul`,e[e.Junja=23]=`Junja`,e[e.Final=24]=`Final`,e[e.Hanja=25]=`Hanja`,e[e.Kanji=25]=`Kanji`,e[e.Escape=27]=`Escape`,e[e.Convert=28]=`Convert`,e[e.NonConvert=29]=`NonConvert`,e[e.Accept=30]=`Accept`,e[e.ModeChange=31]=`ModeChange`,e[e.Space=32]=`Space`,e[e.Prior=33]=`Prior`,e[e.Next=34]=`Next`,e[e.End=35]=`End`,e[e.Home=36]=`Home`,e[e.Left=37]=`Left`,e[e.Up=38]=`Up`,e[e.Right=39]=`Right`,e[e.Down=40]=`Down`,e[e.Select=41]=`Select`,e[e.Print=42]=`Print`,e[e.Execute=43]=`Execute`,e[e.Snapshot=44]=`Snapshot`,e[e.Insert=45]=`Insert`,e[e.Delete=46]=`Delete`,e[e.Help=47]=`Help`,e[e.N0=48]=`N0`,e[e.N1=49]=`N1`,e[e.N2=50]=`N2`,e[e.N3=51]=`N3`,e[e.N4=52]=`N4`,e[e.N5=53]=`N5`,e[e.N6=54]=`N6`,e[e.N7=55]=`N7`,e[e.N8=56]=`N8`,e[e.N9=57]=`N9`,e[e.A=65]=`A`,e[e.B=66]=`B`,e[e.C=67]=`C`,e[e.D=68]=`D`,e[e.E=69]=`E`,e[e.F=70]=`F`,e[e.G=71]=`G`,e[e.H=72]=`H`,e[e.I=73]=`I`,e[e.J=74]=`J`,e[e.K=75]=`K`,e[e.L=76]=`L`,e[e.M=77]=`M`,e[e.N=78]=`N`,e[e.O=79]=`O`,e[e.P=80]=`P`,e[e.Q=81]=`Q`,e[e.R=82]=`R`,e[e.S=83]=`S`,e[e.T=84]=`T`,e[e.U=85]=`U`,e[e.V=86]=`V`,e[e.W=87]=`W`,e[e.X=88]=`X`,e[e.Y=89]=`Y`,e[e.Z=90]=`Z`,e[e.LeftWindows=91]=`LeftWindows`,e[e.RightWindows=92]=`RightWindows`,e[e.Application=93]=`Application`,e[e.Sleep=95]=`Sleep`,e[e.Numpad0=96]=`Numpad0`,e[e.Numpad1=97]=`Numpad1`,e[e.Numpad2=98]=`Numpad2`,e[e.Numpad3=99]=`Numpad3`,e[e.Numpad4=100]=`Numpad4`,e[e.Numpad5=101]=`Numpad5`,e[e.Numpad6=102]=`Numpad6`,e[e.Numpad7=103]=`Numpad7`,e[e.Numpad8=104]=`Numpad8`,e[e.Numpad9=105]=`Numpad9`,e[e.Multiply=106]=`Multiply`,e[e.Add=107]=`Add`,e[e.Separator=108]=`Separator`,e[e.Subtract=109]=`Subtract`,e[e.Decimal=110]=`Decimal`,e[e.Divide=111]=`Divide`,e[e.F1=112]=`F1`,e[e.F2=113]=`F2`,e[e.F3=114]=`F3`,e[e.F4=115]=`F4`,e[e.F5=116]=`F5`,e[e.F6=117]=`F6`,e[e.F7=118]=`F7`,e[e.F8=119]=`F8`,e[e.F9=120]=`F9`,e[e.F10=121]=`F10`,e[e.F11=122]=`F11`,e[e.F12=123]=`F12`,e[e.F13=124]=`F13`,e[e.F14=125]=`F14`,e[e.F15=126]=`F15`,e[e.F16=127]=`F16`,e[e.F17=128]=`F17`,e[e.F18=129]=`F18`,e[e.F19=130]=`F19`,e[e.F20=131]=`F20`,e[e.F21=132]=`F21`,e[e.F22=133]=`F22`,e[e.F23=134]=`F23`,e[e.F24=135]=`F24`,e[e.NumLock=144]=`NumLock`,e[e.ScrollLock=145]=`ScrollLock`,e[e.NEC_Equal=146]=`NEC_Equal`,e[e.Fujitsu_Jisho=146]=`Fujitsu_Jisho`,e[e.Fujitsu_Masshou=147]=`Fujitsu_Masshou`,e[e.Fujitsu_Touroku=148]=`Fujitsu_Touroku`,e[e.Fujitsu_Loya=149]=`Fujitsu_Loya`,e[e.Fujitsu_Roya=150]=`Fujitsu_Roya`,e[e.LeftShift=160]=`LeftShift`,e[e.RightShift=161]=`RightShift`,e[e.LeftControl=162]=`LeftControl`,e[e.RightControl=163]=`RightControl`,e[e.LeftMenu=164]=`LeftMenu`,e[e.RightMenu=165]=`RightMenu`,e[e.BrowserBack=166]=`BrowserBack`,e[e.BrowserForward=167]=`BrowserForward`,e[e.BrowserRefresh=168]=`BrowserRefresh`,e[e.BrowserStop=169]=`BrowserStop`,e[e.BrowserSearch=170]=`BrowserSearch`,e[e.BrowserFavorites=171]=`BrowserFavorites`,e[e.BrowserHome=172]=`BrowserHome`,e[e.VolumeMute=173]=`VolumeMute`,e[e.VolumeDown=174]=`VolumeDown`,e[e.VolumeUp=175]=`VolumeUp`,e[e.MediaNextTrack=176]=`MediaNextTrack`,e[e.MediaPrevTrack=177]=`MediaPrevTrack`,e[e.MediaStop=178]=`MediaStop`,e[e.MediaPlayPause=179]=`MediaPlayPause`,e[e.LaunchMail=180]=`LaunchMail`,e[e.LaunchMediaSelect=181]=`LaunchMediaSelect`,e[e.LaunchApplication1=182]=`LaunchApplication1`,e[e.LaunchApplication2=183]=`LaunchApplication2`,e[e.OEM1=186]=`OEM1`,e[e.OEMPlus=187]=`OEMPlus`,e[e.OEMComma=188]=`OEMComma`,e[e.OEMMinus=189]=`OEMMinus`,e[e.OEMPeriod=190]=`OEMPeriod`,e[e.OEM2=191]=`OEM2`,e[e.OEM3=192]=`OEM3`,e[e.OEM4=219]=`OEM4`,e[e.OEM5=220]=`OEM5`,e[e.OEM6=221]=`OEM6`,e[e.OEM7=222]=`OEM7`,e[e.OEM8=223]=`OEM8`,e[e.OEMAX=225]=`OEMAX`,e[e.OEM102=226]=`OEM102`,e[e.ICOHelp=227]=`ICOHelp`,e[e.ICO00=228]=`ICO00`,e[e.ProcessKey=229]=`ProcessKey`,e[e.ICOClear=230]=`ICOClear`,e[e.Packet=231]=`Packet`,e[e.OEMReset=233]=`OEMReset`,e[e.OEMJump=234]=`OEMJump`,e[e.OEMPA1=235]=`OEMPA1`,e[e.OEMPA2=236]=`OEMPA2`,e[e.OEMPA3=237]=`OEMPA3`,e[e.OEMWSCtrl=238]=`OEMWSCtrl`,e[e.OEMCUSel=239]=`OEMCUSel`,e[e.OEMATTN=240]=`OEMATTN`,e[e.OEMFinish=241]=`OEMFinish`,e[e.OEMCopy=242]=`OEMCopy`,e[e.OEMAuto=243]=`OEMAuto`,e[e.OEMENLW=244]=`OEMENLW`,e[e.OEMBackTab=245]=`OEMBackTab`,e[e.ATTN=246]=`ATTN`,e[e.CRSel=247]=`CRSel`,e[e.EXSel=248]=`EXSel`,e[e.EREOF=249]=`EREOF`,e[e.Play=250]=`Play`,e[e.Zoom=251]=`Zoom`,e[e.Noname=252]=`Noname`,e[e.PA1=253]=`PA1`,e[e.OEMClear=254]=`OEMClear`,e}({});const Fe=n({game:`string`,type:`string`,creation_time:`number`}),Ie=Fe.and({game:`'siege' | 'tft'`,type:`'logged_in'`,content:{account_id:`string`}}),Le=Fe.and({game:`'sand'`,type:`'logged_in'`,content:{account_id:`string`,display_name:`string`,platform_id:`string`,playfab_id:`string`}}).or(Ie),Re=Fe.and({game:`'siege' | 'tft' | 'sand'`}),ze=t({"#event1":`logged_in | module_loaded | module_unloaded | unsupported_game_version`,event:`event1`,logged_in:Le,module_loaded:Re.and({type:`'module_loaded'`,content:{game_version:`string`,process_hash:`string`}}),module_unloaded:Re.and({type:`'module_unloaded'`}),unsupported_game_version:Re.and({type:`'unsupported_game_version'`,content:{game_version:`string`,process_hash:`string`}})}).export(),Be=Object.keys(ze).filter(e=>e!==`event`);function Ve(){return{key:`universal`,events:ze}}var He=class{options=null;logger;initialized=!1;constructor(e){this.logger=I.getInstance().scope(e)}init(e){this.logger.log(`Initializing`),this.options=e||null,this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1}},Ue=class extends de{options=null;logger;initialized=!1;constructor(e){super(),this.logger=I.getInstance().scope(e)}init(e){this.logger.log(`Initializing`),this.options=e||null,this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}},We=class extends fe{options=null;logger;initialized=!1;constructor(e){super(),this.logger=I.getInstance().scope(e)}init(e){this.logger.log(`Initializing`),this.options=e||null,this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}};const Ge=`https://api.overlayed.gg`,V=re.create({baseURL:Ge,headers:{Accept:`application/json`,"Accept-Encoding":`gzip, deflate, br`}});let Ke;function qe(e){Ke=e}let H;function Je(e){H=e}function Ye(e){return`overlayed/app (${Object.entries(e).map(([e,t])=>`${e}=${t}`).join(`, `)})`}V.interceptors.request.use(e=>{let t=Ke?.();e.headers??={},t&&(e.headers[`X-Api-Key`]=t);let n=H?.();return n&&(e.headers[`User-Agent`]=Ye(n)),e});function Xe(e,t){if(t<=0)throw Error(`Chunk size must be greater than 0`);if(e.length===0)return[];let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function Ze(e){return e}function Qe(e){return e?t=>(e(t),t):Ze}const $e=Qe();function et(e){return V.get(`/v1/public/applications/${e}`)}function tt(e,t){return V.get(`/v1/public/applications/${e}/releases/check`,{params:t})}function nt(e,t){return V.post(`/v1/public/applications/${e}/game-crash-reports`,t)}function rt(e,t,n){return V.post(`/v1/public/applications/${e}/game-crash-reports/${t}/confirm`,n)}function it(e,t){let n=new FormData;return n.append(`file`,new Blob([t.file],{type:`application/zip`}),`logs.zip`),n.append(`data`,JSON.stringify(t.data)),V.post(`/v1/public/applications/${e}/feedbacks`,n)}function at(e,t){return V.get(`/v1/public/applications/${e}/feature-flags`,{params:t})}function U(e,t){return V.get(`/v1/public/applications/${e}/notices`,{params:t})}const ot=Qe();function st(e,t){return V.get(`/v1/public/modules/${e}/release`,{params:{cortex_user_id:t}})}function ct(e,t,n){return V.post(`/v1/public/modules/${e}/releases/${t}/download`,n)}async function W(e,t){if(e.method!==`GET`)throw Error(`Unsupported presigned request method: ${e.method}`);let n=await fetch(e.url,{method:e.method,headers:e.headers,signal:t?.signal});if(!n.ok){let e=await ut(n);throw Error(`Presigned download failed (${n.status} ${n.statusText})${e?`: ${e}`:``}`)}let r=await n.arrayBuffer();return new Uint8Array(r)}async function lt(e,t){if(e.method!==`PUT`)throw Error(`Unsupported presigned request method: ${e.method}`);let n=await fetch(e.url,{method:e.method,headers:{...e.headers,"Content-Length":t.byteLength.toString()},body:t});if(!n.ok){let e=await ut(n);throw Error(`Presigned upload failed (${n.status} ${n.statusText})${e?`: ${e}`:``}`)}}async function ut(e){try{let t=(await e.text()).trim();if(t.length===0)return;let n=2048;return t.length>n?`${t.slice(0,n)}…`:t}catch{return}}function dt(){return V.get(`/v1/public/raven/config`)}const ft=Qe();function pt(e,t){return V.get(`/v1/public/raven/games/${e}/builds/${t}`)}function mt(e,t){return V.post(`/v1/public/raven/games/${e}/builds/upload`,null,{params:t})}function ht(e,t){let n=new FormData;return n.append(`file`,t.chunk),V.patch(`/v1/public/raven/games/${e}/builds/upload`,n,{params:t})}function gt(e){let t=Date.now(),n=e.messages.filter(e=>t-e.created_at.getTime()<6e5),r=e.messages.length-n.length;r>0&&console.warn(`Dropped ${r} cortex event(s) older than 600s`);let i=Xe(n.map(e=>_t(t,e)),50),a=Promise.all(i.map(async t=>V.post(`/v1/public/cortex/events`,{...e,messages:t})));return a.catch(e=>{let t=e?.response?.data||e?.message||e;console.error(`Failed to submit cortex events`,t)}),a}function _t(e,t){let n=e-t.created_at.getTime(),r=Math.max(0,Math.floor(n/1e3));return{properties:t.properties,type:t.type,seconds_offset:r}}function vt(e){return e instanceof Error&&(e.name===`XiorError`||e.name===`XiorTimeoutError`)}function yt(e){return!!(e&&`kind`in e.data&&`message`in e.data)}const{PipeEventServer:bt,PipeEventClient:xt,PipeEventBase:St,GameMonitor:Ct,GameInstance:wt,HardwareInterface:Tt}=e(import.meta.url)(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`);function Et(e=[]){return h.normalize(h.join(_e(global.OVERLAYED.APPLICATION_ID),...e))}const Dt=n({game:`string`,type:`string`,creation_time:`number`}),G=new me({path:ye(),schema:n({userId:`string | undefined`,sessionId:`string | undefined`,sessionLastUsed:`number | undefined`,accessToken:`string | undefined`,"debug?":{"ri_disabled?":`boolean`,"gm_disabled?":`boolean`}}),default:{userId:void 0,sessionId:void 0,sessionLastUsed:void 0,accessToken:void 0}});function Ot(){let{debug:e}=G.get();return e?{ri_disabled:e.ri_disabled??!1,gm_disabled:e.gm_disabled??!1}:{ri_disabled:!1,gm_disabled:!1}}function K(){let e=G.get().userId;if(e)return e;let t=Nt();return G.set({...G.get(),userId:t}),t}function kt(){let e=G.get();if(e.sessionId&&typeof e.sessionLastUsed==`number`&&Date.now()-e.sessionLastUsed<=300*1e3)return e.sessionId;let t=crypto.randomUUID();return G.set({...e,sessionId:t,sessionLastUsed:Date.now()}),t}function At(){try{let e=G.get();G.set({...e,sessionLastUsed:Date.now()})}catch(e){I.getInstance().log(`Failed to update sessionLastUsed`,e)}}function jt(){return G.get().accessToken}function Mt(e){try{let t=G.get();G.set({...t,accessToken:e??void 0})}catch(e){I.getInstance().log(`Failed to set accessToken`,e)}}function Nt(){try{return Tt.generateUniqueIdentifier()}catch{return crypto.randomUUID()}}const Pt=j(class extends Ue{UPDATE_CHECK_INTERVAL_MS=1e3*60*5;targetDir;updateInterval;constructor(){super(`NativeModuleManager`),this.targetDir=h.join(ge(),`resources`),this.logger.log(`Target directory`,this.targetDir)}async initWithDlls(e){super.init(),await D.mkdir(this.targetDir,{recursive:!0}),await this.checkForUpdates(e),clearInterval(this.updateInterval),this.updateInterval=setInterval(()=>this.checkForUpdates(e),this.UPDATE_CHECK_INTERVAL_MS)}destroy(){this.updateInterval&&=(clearInterval(this.updateInterval),void 0),super.destroy()}async getDllFile(e){let t=await this.getCurrentBuildInfo(e);if(!t){this.logger.error(`No build found for module`,{moduleId:e});return}let n=this.getBuildPath(e,t.buildId);if(!S(n)){this.logger.error(`No build file found for module`,{moduleId:e});return}let r=h.join(n,t.buildFileName);if(!S(r)){this.logger.error(`No DLL file found for module`,{moduleId:e});return}return r}async getCurrentBuildInfo(e){try{let t=h.join(this.targetDir,e,`build.json`),n=await D.readFile(t,`utf-8`);return JSON.parse(n)}catch{return null}}getModulePath(e){return h.join(this.targetDir,e)}getBuildPath(e,t){return h.join(this.getModulePath(e),t)}async checkForUpdates(e){this.logger.log(`Checking for updates`);let t=K();if(!t){this.logger.error(`Failed to resolve cortex user id`);return}this.logger.log(`Cortex User ID`,t);for(let n of e)try{let{data:e}=await st(n,t);this.logger.log(`Release`,e);let r=(await this.getCurrentBuildInfo(n))?.buildId||null;this.logger.log(`${n} > Performing update check. current: ${r}, requested: ${e.build_id}`),e.build_id!==r||await this.isDownloadCorrupted(this.getBuildPath(n,e.build_id),e)?(this.logger.log(`${n} > Update found. current: ${r}, requested: ${e.build_id}`),this.logger.log(`${n} > Downloading and extracting DLLs`),await this.downloadAndExtractDll(n,e),this.logger.log(`${n} > Cleaning up other builds`),await this.cleanupExistingBuilds(n,e.build_id),this.emit(`dllUpdated`,{moduleId:n,buildId:e.build_id,releaseId:e.release_id})):this.logger.log(`${n} > No update found`)}catch(e){this.logger.error(`${n} > Error checking/updating`,e)}}async downloadAndExtractDll(e,t){this.logger.log(`${e} > Requesting download for build ${t.build_id}`);let n=K();if(!n){this.logger.error(`Failed to resolve cortex user id`);return}let{data:r}=await ct(e,t.release_id,{download_token:t.download_token,cortex_user_id:n});this.logger.log(`${e} > Downloading DLLs for build ${t.build_id}`);let i=await W(r,{signal:AbortSignal.timeout(1e3*60*5)});this.logger.log(`${e} > Downloaded zip file for build ${t.build_id}`);let a=this.getBuildPath(e,t.build_id);await D.mkdir(a,{recursive:!0});let o=new ie;await o.loadAsync(i);let s=Object.keys(o.files).map(e=>({name:e,file:o.files[e]})).filter(({file:e})=>!e.dir);if(s.length!==1){this.logger.error(`${e} > Zip must contain exactly 1 file, got ${s.length}`);return}let c=s[0],l=h.basename(c.name),u=h.normalize(l),d=h.isAbsolute(u),f=u.startsWith(`..`)||u.includes(`..${h.sep}`);if(l===``||l===`.`||l===`..`){this.logger.error(`${e} > Zip contained an invalid file name: ${c.name}`);return}if(!l.toLowerCase().endsWith(`.dll`)){this.logger.error(`${e} > Zip contained a non-dll file: ${c.name}`);return}if(d||f){this.logger.error(`${e} > Zip entry path is unsafe: ${c.name}`);return}let p=h.join(a,u),m=await c.file.async(`nodebuffer`);await D.writeFile(p,m),this.logger.log(`${e} > Extracted 1 file to ${p}`);let g={buildId:t.build_id,buildFileName:t.build_file_name},_=h.join(this.getModulePath(e),`build.json`);await D.writeFile(_,JSON.stringify(g),`utf-8`),this.logger.log(`${e} > Saved buildId to file: ${t.build_id}`)}async cleanupExistingBuilds(e,t){let n=this.getModulePath(e),r=this.getBuildPath(e,t),i=await D.readdir(n,{withFileTypes:!0});for(let t of i)t.isDirectory()&&h.join(n,t.name)!==r&&(await D.rm(h.join(n,t.name),{recursive:!0,force:!0}),this.logger.log(`${e} > Cleaned up build: ${t.name}`))}async hasPathAccess(e){try{return await D.access(e,D.constants.F_OK),!0}catch{return!1}}async isDownloadCorrupted(e,t){if(!await this.hasPathAccess(e))return this.logger.error(`Download is corrupted. Path does not exist: ${e}`),!0;let n=t.build_file_name,r=h.join(e,n);if(!S(r))return this.logger.error(`Download is corrupted. Build file not found: ${r}`),!0;if(t.build_hash){let e=await D.readFile(r),i=ne(`sha256`).update(e).digest(`hex`);if(i.toLowerCase()!==t.build_hash.toLowerCase())return this.logger.error(`Download is corrupted. Build file hash mismatch: ${n} ${i.toLowerCase()} !== ${t.build_hash.toLowerCase()}`),!0}return!1}}),Ft=j(class extends Ue{_gameMonitor;_games=new Map;constructor(){super(`GameManager`),this._gameMonitor=new Ct}get hasAnyActiveGames(){return this._games.size>0}init(){super.init(),this._gameMonitor.on(`launch`,e=>{this.logger.log(`Game launched`,e.identifier,e.processId),this._games.set(e.processId,e),this.logger.log(`Active Game Count: ${this._games.size}`),this.emit(`launch`,{game:e})}),this._gameMonitor.on(`close`,e=>{this.logger.log(`Game closed`,e.identifier,e.processId),this._games.delete(e.processId),this.logger.log(`Active Game Count: ${this._games.size}`),this.emit(`close`,{game:e})})}destroy(){this._games.clear(),this._gameMonitor.removeAllListeners(),super.destroy()}}),It=j(class extends Ue{REFETCH_INTERVAL=1e3*60*5;FAILED_REFETCH_INTERVAL=1e3*30;_refetchIntervalHandler=null;_failedRefetchTimeoutHandler=null;_ready;_resolveReady;constructor(){super(`RavenManager`),this._ready=new Promise(e=>{this._resolveReady=e})}get ready(){return this._ready}init(){super.init(),this.fetchRavenConfig(),this._refetchIntervalHandler=setInterval(()=>{this._failedRefetchTimeoutHandler&&=(clearTimeout(this._failedRefetchTimeoutHandler),null),this.fetchRavenConfig()},this.REFETCH_INTERVAL)}destroy(){this._refetchIntervalHandler&&clearInterval(this._refetchIntervalHandler),this._failedRefetchTimeoutHandler&&clearTimeout(this._failedRefetchTimeoutHandler),Pt.getInstance().destroy(),super.destroy()}async fetchRavenConfig(){try{let e=await dt(),t=new Set;for(let n of e.data.games)n.modules.forEach(e=>t.add(e));await Pt.getInstance().initWithDlls(Array.from(t)),this.logger.log(`Raven updated, tracking ${t.size} game modules`),this._resolveReady()}catch(e){this.logger.error(`Failed to fetch Raven config`,e),this._failedRefetchTimeoutHandler=setTimeout(()=>this.fetchRavenConfig(),this.FAILED_REFETCH_INTERVAL)}}});var Lt=class{_instance;_resolution;boundOnResolutionChanged=this.onResolutionChanged.bind(this);constructor(e){this._instance=e,this._resolution={width:0,height:0},this._instance.on(`resolution`,this.boundOnResolutionChanged)}destroy(){this._instance.off(`resolution`,this.boundOnResolutionChanged)}get instance(){return this._instance}get resolution(){return this._resolution}onResolutionChanged(e,t){this._resolution={width:e,height:t}}};const Rt=j(class{interfaces={};constructor(){}createInterface(e){return this.interfaces[e]||(this.interfaces[e]=new Lt(new Me(e,{access:1}))),this.interfaces[e]}getInterface(e){return this.interfaces[e]?this.interfaces[e]:this.createInterface(e)}}),q=j(class{options;eventQueue;meta=null;enabled=!0;constructor(e){this.options=this.resolveOptions(e),this.eventQueue=new ue,this.setupFlushInterval()}track(e,t){this.enabled&&this.eventQueue.add({type:e,properties:t,created_at:new Date})}flush(){if(!this.enabled)return[];let e=Array.from(this.eventQueue.flush()).concat({type:`ping`,properties:{},created_at:new Date});if(!this.meta)throw Error(`Tried to flush Cortex events before meta was set`);try{gt({...this.meta,messages:e})}catch{}return e}setupFlushInterval(){this.enabled&&setInterval(()=>{this.flush()},this.options.batchIntervalSeconds*1e3)}resolveOptions(e){return{batchIntervalSeconds:e?.batchIntervalSeconds??15}}}),zt=e(import.meta.url),Bt=zt.resolve(`@overlayed/app/dist/render-interface/build/overlayed_render_hook_x64.dll`),Vt=zt.resolve(`@overlayed/app/dist/render-interface/build/overlayed_render_hook_x86.dll`),Ht=zt.resolve(`@overlayed/app/dist/native-interface/build/overlayed_injector_x64.exe`),Ut=zt.resolve(`@overlayed/app/dist/native-interface/build/overlayed_injector_x86.exe`),J=j(class extends We{boundOnGameLaunch=this.onGameLaunch.bind(this);boundOnGameClose=this.onGameClose.bind(this);subscribedGames=new Set;activeGames=new Map;pendingLaunches=new Map;get isInGame(){return this.activeGames.size>0}constructor(){super(`GameLaunchManager`)}setSubscribedGames(e){this.subscribedGames=new Set(e)}getActiveGames(){return Array.from(new Set(Array.from(this.activeGames.values()).map(e=>e.game)))}init(){super.init(),Rt.getInstance().createInterface(`OGG_SIEGE`),Ft.getInstance().on(`launch`,this.boundOnGameLaunch),Ft.getInstance().on(`close`,this.boundOnGameClose)}destroy(){Ft.getInstance().off(`launch`,this.boundOnGameLaunch),Ft.getInstance().off(`close`,this.boundOnGameClose),super.destroy()}on(e,t){super.on(e,t);let n=A(e);if(!(n.includes(`gameReady`)||n.includes(`*`))||this.activeGames.size===0)return;let r=t;for(let e of this.activeGames.values())this.logger.log(`Late calling gameReady callback for game`,e.game),r(e)}async onGameLaunch({game:e}){this.logger.log(`On game launch`,e.identifier,e.executableName,e.processId);let t=ft(e.identifier);if(q.getInstance().track(`game_launch`,{game:t}),this.subscribedGames.size===0){this.logger.warn(`No subscribed games, skipping`);return}if(!this.subscribedGames.has(t)&&!this.subscribedGames.has(`*`))return;let n=new AbortController;if(this.pendingLaunches.set(e.processId,n),await this.emit(`gameLaunch`,{game:t,processId:e.processId,reject:()=>n.abort()}),n.signal.aborted)return;if(this.logger.log(`Game Launched`,e.identifier),this.logger.log(`Game is elevated: `,e.isElevated),e.hasElevationMismatch){pe.getInstance().fatal(`Game is elevated but the App is not`,`ELEVATION_MISMATCH`,{appElevated:!1,gameElevated:!0}),this.logger.log(`Game elevated but App is not`);return}if(e.injectionDelayMs>0){if(this.logger.log(`Delaying injection for ${e.injectionDelayMs}ms to allow game to be ready`),await new Promise(t=>{let r=setTimeout(t,e.injectionDelayMs);n.signal.addEventListener(`abort`,()=>{clearTimeout(r),t()},{once:!0})}),n.signal.aborted){this.logger.log(`Game closed during the injection delay, skipping injection`);return}this.logger.log(`Finished delay`)}let{ri_disabled:r,gm_disabled:i}=Ot(),a=!1;if(!r&&e.hasRenderSupport&&e.allowDllInjections?a=await this.injectRenderInterface(e):this.logger.log(`Skipping render interface injection`,{has_render_support:e.hasRenderSupport,allow_dll_injections:e.allowDllInjections,ri_disabled:r}),!i&&e.allowDllInjections?await this.injectGameModules(e):this.logger.log(`Skipping game module(s) injection`,{allow_dll_injections:e.allowDllInjections,gm_disabled:i}),n.signal.aborted){this.logger.log(`Game closed during injection, skipping ready`);return}this.pendingLaunches.delete(e.processId);let o={game:t,processId:e.processId,inGameRenderingSupported:a};this.activeGames.set(e.processId,o),this.logger.debug(`Active games`,this.getActiveGames().join(`, `)),this.logger.log(`Game Ready`),this.emit(`gameReadyInternal`,{game:e}),this.emit(`gameReady`,o),q.getInstance().track(`game_ready`,{game:t})}copyInjectors(){let e=this.copyDll(Ht),t=this.copyDll(Ut);return!e||!t?(this.logger.error(`Failed to copy injector executables`),!1):h.dirname(e)}copyDll(e){let t=h.basename(e),n=_(e),r=h.join(ge(),`resources`),i=h.join(r,t);this.logger.info(`Copying`,n,`to`,i);try{S(r)||C(r,{recursive:!0}),b(n,i)}catch(e){return e.code===`EBUSY`?i:(this.logger.error(`Failed to copy`,e),this.logger.error(`Failed to copy`,{originalPath:n,targetPath:i}),!1)}return i}async injectRenderInterface(e){this.logger.log(`Injecting render interface`,{is32Bit:e.is32Bit,game:e.identifier});let t=e.is32Bit?Vt:Bt;this.logger.log(`Render hook path`,t);let n=this.copyDll(t);if(!n)return this.logger.error(`Failed to copy render hook DLL`,{renderHookPath:t}),!1;let r=this.copyInjectors();if(!r)return!1;this.logger.log(`Resolved injector path`,r);try{return this.logger.log(`Injecting render interface`,n),await e.injectDll(n,r),this.logger.log(`Render Interface Injection Successful`,n),!0}catch(e){return this.logger.error(`Render Interface Injection Failed`,e),this.logger.error(`Render Interface Injection Failed`,{renderHookPathCopied:n}),!1}}async injectGameModules(e){let t=this.copyInjectors();if(t){this.logger.log(`Resolved injector path`,t),await It.getInstance().ready;for(let n of e.modules){let r=await Pt.getInstance().getDllFile(n);if(!r){this.logger.error(`No DLL file found for module`,{moduleId:n});continue}try{this.logger.log(`Injecting game module`,r),await e.injectDll(r,t),this.logger.log(`Injection Successful`,r)}catch(e){this.logger.error(`Injection Failed`,{dllFile:r},e)}}}}async onGameClose({game:e}){let t=ft(e.identifier);this.pendingLaunches.get(e.processId)?.abort(),this.pendingLaunches.delete(e.processId),this.activeGames.delete(e.processId),this.logger.debug(`Active games`,this.getActiveGames().join(`, `)),this.emit(`gameCloseInternal`,{game:e}),this.emit(`gameClose`,{game:t,processId:e.processId}),q.getInstance().track(`game_close`,{game:t})}}),Wt=j(class extends He{boundOnGameLaunch=this.onGameLaunch.bind(this);constructor(){super(`GameBuildManager`)}init(){super.init(),J.getInstance().on(`gameReadyInternal`,this.boundOnGameLaunch)}destroy(){J.getInstance().off(`gameReadyInternal`,this.boundOnGameLaunch),super.destroy()}async onGameLaunch(...e){let[{game:t}]=e;if(!t.executablePath||!t.executableName){this.logger.error(`Executable path or name not found, could not check for build hash`,void 0,t.identifier);return}let n=ft(t.identifier),r=w(t.executablePath),i=ne(`sha256`).update(r).digest(`hex`);this.logger.log(`Executable Path`,t.executablePath),this.logger.log(`Executable Name`,t.executableName),this.logger.log(`Build Hash`,i);let a=!1;try{a=(await pt(n,i)).data.upload}catch(e){this.logger.error(`Error checking game build hash`,e);return}if(!a){this.logger.log(`Build hash already exists, skipping upload`);return}let o=new ie;o.file(t.executableName,r);let s=await o.generateAsync({type:`blob`});try{this.logger.log(`Uploading build (size: `,s.size,` bytes)`);let e=new Se(s,{chunkSizeMb:25,maxConcurrent:1}),t=await mt(n,{build_hash:i,chunk_count:e.totalChunks,file_size_bytes:s.size});await e.chunk(async(e,r)=>{this.logger.log(`Uploading chunk`,r),await ht(n,{chunk:e,build_hash:i,chunk_index:r,upload_token:t.data.upload_token})}),this.logger.log(`Build uploaded successfully`)}catch(e){vt(e)?yt(e.response)?this.logger.error(`Error uploading build hash, api error`,e):this.logger.error(`Error uploading build hash, request error`,e):this.logger.error(`Error uploading build hash, unknown error`,e)}}}),Gt=j(class extends He{constructor(){super(`CampaignManager`)}async check(e){let t=h.join(_e(e),`campaign_code.txt`);try{let e=(await E.readFile(t,`utf-8`)).trim().replace(/ \(\d+\)/g,``);e&&(this.logger.log(`UTM campaign code found`,e),q.getInstance().track(`utm_attribution`,{campaign_code:e}),q.getInstance().flush())}catch{}}}),Kt=new me({path:f.normalize(`${process.env.APPDATA||process.env.HOME||`.`}/.overlayed/config.json`),default:void 0,schema:t({Account:n({email:`string`,apiKey:`string`,"applicationId?":`string`,"baseUrl?":`string`})}).type({currentAccount:`Account | undefined`,accounts:`Account[]`}).or(`undefined`)});function qt(e,t){let n=t.applicationId===void 0||e.applicationId===void 0||e.applicationId===t.applicationId,r=(e.baseUrl??`https://api.overlayed.gg`)===t.baseUrl;return n&&r}function Jt(e){let{currentAccount:t,accounts:n,expected:r}=e;if(t&&qt(t,r))return{account:t,source:`current`};let i=n.find(e=>qt(e,r));if(i)return{account:i,source:`other`}}function Yt(e,t){return`${e}:${t}`}function Xt(e,t,n){return e.reduce((e,r)=>{let i=r.key;return e[i]={on(e,n){let r=Yt(i,e),a=t.get(r)??new Set;a.add(n),t.set(r,a)},onAny(e){let n=Yt(i,`*`),r=t.get(n)??new Set;r.add(e),t.set(n,r)},off(e,n){let r=Yt(i,e),a=t.get(r);a&&(a.delete(n),a.size===0&&t.delete(r))},offAny(e){let n=Yt(i,`*`),r=t.get(n);r&&(r.delete(e),r.size===0&&t.delete(n))},readyForGameEvents:()=>{n.emit(`flushEvents`,i)}},e},{})}function Zt(){let e=pe.getInstance(),t=J.getInstance();return{on:(n,r)=>{switch(n){case`fatal`:e.on(`fatal`,r);break;case`error`:e.on(`error`,r);break;case`warning`:e.on(`warning`,r);break;case`gameLaunch`:t.on(`gameLaunch`,r);break;case`gameClose`:t.on(`gameClose`,r);break;case`gameReady`:t.on(`gameReady`,r);break;default:throw Error(`Event type not implemented ${n}`,{cause:[n,r]})}},off:(n,r)=>{switch(n){case`fatal`:e.off(`fatal`,r);break;case`error`:e.off(`error`,r);break;case`warning`:e.off(`warning`,r);break;case`gameLaunch`:t.off(`gameLaunch`,r);break;case`gameClose`:t.off(`gameClose`,r);break;case`gameReady`:t.off(`gameReady`,r);break;default:throw Error(`Event type not implemented ${n}`,{cause:[n,r]})}}}}const Qt=new Map([[1,`LeftButton`],[2,`RightButton`],[3,`Cancel`],[4,`MiddleButton`],[5,`ExtraButton1`],[6,`ExtraButton2`],[8,`Backspace`],[9,`Tab`],[12,`Clear`],[13,`Enter`],[16,`ShiftLeft`],[17,`ControlLeft`],[18,`AltLeft`],[19,`Pause`],[20,`CapsLock`],[21,`KanaMode`],[23,`JunjaMode`],[24,`Finalize`],[25,`HanjaMode`],[27,`Escape`],[28,`Convert`],[29,`NonConvert`],[30,`Accept`],[31,`ModeChange`],[32,`Space`],[33,`PageUp`],[34,`PageDown`],[35,`End`],[36,`Home`],[37,`ArrowLeft`],[38,`ArrowUp`],[39,`ArrowRight`],[40,`ArrowDown`],[41,`Select`],[42,`PrintScreen`],[43,`Execute`],[44,`Snapshot`],[45,`Insert`],[46,`Delete`],[47,`Help`],[48,`Digit0`],[49,`Digit1`],[50,`Digit2`],[51,`Digit3`],[52,`Digit4`],[53,`Digit5`],[54,`Digit6`],[55,`Digit7`],[56,`Digit8`],[57,`Digit9`],[65,`KeyA`],[66,`KeyB`],[67,`KeyC`],[68,`KeyD`],[69,`KeyE`],[70,`KeyF`],[71,`KeyG`],[72,`KeyH`],[73,`KeyI`],[74,`KeyJ`],[75,`KeyK`],[76,`KeyL`],[77,`KeyM`],[78,`KeyN`],[79,`KeyO`],[80,`KeyP`],[81,`KeyQ`],[82,`KeyR`],[83,`KeyS`],[84,`KeyT`],[85,`KeyU`],[86,`KeyV`],[87,`KeyW`],[88,`KeyX`],[89,`KeyY`],[90,`KeyZ`],[91,`MetaLeft`],[92,`MetaRight`],[93,`ContextMenu`],[95,`Sleep`],[96,`Numpad0`],[97,`Numpad1`],[98,`Numpad2`],[99,`Numpad3`],[100,`Numpad4`],[101,`Numpad5`],[102,`Numpad6`],[103,`Numpad7`],[104,`Numpad8`],[105,`Numpad9`],[106,`NumpadMultiply`],[107,`NumpadAdd`],[108,`NumpadSeparator`],[109,`NumpadSubtract`],[110,`NumpadDecimal`],[111,`NumpadDivide`],[112,`F1`],[113,`F2`],[114,`F3`],[115,`F4`],[116,`F5`],[117,`F6`],[118,`F7`],[119,`F8`],[120,`F9`],[121,`F10`],[122,`F11`],[123,`F12`],[124,`F13`],[125,`F14`],[126,`F15`],[127,`F16`],[128,`F17`],[129,`F18`],[130,`F19`],[131,`F20`],[132,`F21`],[133,`F22`],[134,`F23`],[135,`F24`],[144,`NumLock`],[145,`ScrollLock`],[146,`NEC_Equal`],[147,`Fujitsu_Masshou`],[148,`Fujitsu_Touroku`],[149,`Fujitsu_Loya`],[150,`Fujitsu_Roya`],[160,`ShiftLeft`],[161,`ShiftRight`],[162,`ControlLeft`],[163,`ControlRight`],[164,`AltLeft`],[165,`AltRight`],[166,`BrowserBack`],[167,`BrowserForward`],[168,`BrowserRefresh`],[169,`BrowserStop`],[170,`BrowserSearch`],[171,`BrowserFavorites`],[172,`BrowserHome`],[173,`VolumeMute`],[174,`VolumeDown`],[175,`VolumeUp`],[176,`MediaTrackNext`],[177,`MediaTrackPrevious`],[178,`MediaStop`],[179,`MediaPlayPause`],[180,`LaunchMail`],[181,`LaunchMediaSelect`],[182,`LaunchApplication1`],[183,`LaunchApplication2`],[186,`OEM_1`],[187,`Equal`],[188,`Comma`],[189,`Minus`],[190,`Period`],[191,`Slash`],[192,`Backquote`],[219,`BracketLeft`],[220,`Backslash`],[221,`BracketRight`],[222,`Quote`],[223,`IntlRo`],[225,`OEM_AX`],[226,`IntlBackslash`],[227,`ICO_HELP`],[228,`ICO_00`],[229,`Process`],[230,`ICO_CLEAR`],[231,`Packet`],[233,`OEM_Reset`],[234,`OEM_Jump`],[235,`OEM_PA1`],[236,`OEM_PA2`],[237,`OEM_PA3`],[238,`OEM_WS_Ctrl`],[239,`OEM_CU_Sel`],[240,`OEM_ATTN`],[241,`OEM_Finish`],[242,`OEM_Copy`],[243,`OEM_Auto`],[244,`OEM_ENLW`],[245,`BackTab`],[246,`ATTN`],[247,`CRSel`],[248,`EXSel`],[249,`EREOF`],[250,`MediaPlay`],[251,`Zoom`],[252,`Noname`],[253,`PA1`],[254,`OEM_Clear`]]),$t=new Map(Qt.entries().map(([e,t])=>[t,e])),en=n({"[string]":{keys:`string[]`,mode:n(`'toggle' | 'hold'`).pipe(e=>e??`toggle`)}});var tn=class extends Ue{preferencesKeybindToCallbacks=new Map;pressedKeys=new Set;activeKeybinds=new Set;triggeredToggleKeybinds=new Set;boundHandleKeyboardFocus=this.handleKeyboardFocus.bind(this);boundHandleKeyDown=this.handleKeyDown.bind(this);boundHandleKeyUp=this.handleKeyUp.bind(this);keybindsFile;keybindListeningPaused=!1;constructor(e){super(`KeybindManager`),this.keybindsFile=new me({path:Et([`keybinds.json`]),schema:en,default:e})}init(){super.init();let e=Rt.getInstance().getInterface(`OGG_SIEGE`);e.instance.on(`keyboardFocus`,this.boundHandleKeyboardFocus),e.instance.on(`keyDown`,this.boundHandleKeyDown),e.instance.on(`keyUp`,this.boundHandleKeyUp)}async onKeybindToggled(e,t){let n=this.preferencesKeybindToCallbacks.get(e)??{toggle:[],down:[],up:[]};n.toggle.push(t),this.preferencesKeybindToCallbacks.set(e,n)}async onKeybindDown(e,t){let n=this.preferencesKeybindToCallbacks.get(e)??{toggle:[],down:[],up:[]};n.down.push(t),this.preferencesKeybindToCallbacks.set(e,n)}async onKeybindUp(e,t){let n=this.preferencesKeybindToCallbacks.get(e)??{toggle:[],down:[],up:[]};n.up.push(t),this.preferencesKeybindToCallbacks.set(e,n)}async updateKeybind(e,t){this.keybindsFile.set({[e]:t})}async updateKeybinds(e){let t=Object.fromEntries(Object.entries(e).filter(([e,t])=>t!==void 0));this.keybindsFile.set({...this.keybindsFile.get(),...t})}getConfig(){return this.keybindsFile.get()}destroy(){let e=Rt.getInstance().getInterface(`OGG_SIEGE`);e.instance.off(`keyboardFocus`,this.boundHandleKeyboardFocus),e.instance.off(`keyDown`,this.boundHandleKeyDown),e.instance.off(`keyUp`,this.boundHandleKeyUp),super.destroy()}handleKeyDown(e){if(this.keybindListeningPaused)return;let t=Qt.get(e.key);if(!t){this.logger.error(`Unknown key down`,e);return}this.pressedKeys.add(t),this.checkKeybindings()}handleKeyboardFocus(){this.pressedKeys.clear(),this.activeKeybinds.clear(),this.triggeredToggleKeybinds.clear()}async handleKeyUp(e){if(this.keybindListeningPaused)return;let t=Qt.get(e.key);if(!t)return;this.pressedKeys.delete(t);let n=this.keybindsFile.get();for(let[e]of this.preferencesKeybindToCallbacks.entries())n[e].keys.includes(t)&&this.triggeredToggleKeybinds.delete(e);this.checkKeybindUps()}async checkKeybindUps(){let e=this.keybindsFile.get();for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){if(!n.up||n.up.length===0)continue;let r=e[t];if(this.activeKeybinds.has(t)&&r.keys.some(e=>!this.pressedKeys.has(e))){this.activeKeybinds.delete(t);for(let e of n.up)e();this.logger.log(`Keybind up triggered`,this.getKeybindToString(r))}}}async checkKeybindings(){let e=this.keybindsFile.get();for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){let r=e[t];if(r.keys.length===this.pressedKeys.size&&r.keys.every(e=>$t.has(e)?this.pressedKeys.has(e):!1)){this.triggerKeybind(r,n,t);return}}for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){let r=e[t];r.keys.every(e=>$t.has(e)?this.pressedKeys.has(e):(this.logger.error(`Unknown key`,e,r),!1))&&this.triggerKeybind(r,n,t)}}triggerKeybind(e,t,n){let r=e.mode;if(r===`toggle`&&t.toggle&&t.toggle.length>0&&!this.triggeredToggleKeybinds.has(n)){let r;for(let e of t.toggle){let t=e();typeof t==`string`&&r===void 0&&(r=t)}this.triggeredToggleKeybinds.add(n),this.logger.log(r?`Keybind pressed rejected: ${r}`:`Keybind pressed accepted`,this.getKeybindToString(e))}if(r===`hold`&&t.down&&t.down.length>0&&!this.activeKeybinds.has(n)){let r;for(let e of t.down){let t=e();if(typeof t==`string`){r=t;break}}r?this.logger.log(`Keybind down rejected: ${r}`,this.getKeybindToString(e)):(this.activeKeybinds.add(n),this.logger.log(`Keybind down accepted`,this.getKeybindToString(e)))}}getKeybindToString(e){return`(${e.keys.join(`+`)}${e.mode?` ${e.mode}`:``})`}};function nn(e){let t=new tn(e),n={};for(let r in e)n[r]={on:(e,n)=>{switch(e){case`down`:t.onKeybindDown(r,n);break;case`up`:t.onKeybindUp(r,n);break;case`toggle`:t.onKeybindToggled(r,n);break;default:throw Error(`Event type not implemented ${e}`,{cause:[e,n]})}}};let r={...n,getConfig:()=>t.getConfig(),pauseKeybindListening:()=>{t.keybindListeningPaused=!0},resumeKeybindListening:()=>{t.keybindListeningPaused=!1},updateKeybind:(e,n)=>{t.updateKeybind(e,n)},updateKeybinds:e=>{t.updateKeybinds(e)}};return t.init(),ae.on(`quit`,()=>{t.destroy()}),r}function Y(){return Rt.getInstance().getInterface(`OGG_SIEGE`)}function rn(){let e=J.getInstance(),t=pe.getInstance(),n=q.getInstance();if(!ae.isPackaged){I.getInstance().info(`Cortex is disabled in development`),n.enabled=!1;return}try{n.meta=an()}catch(e){I.getInstance().error(`Failed to setup cortex`,e);return}e.on([`gameReady`,`gameClose`],()=>{n.meta||=an(),n.meta.in_game=e.isInGame}),t.on(`fatal`,e=>{n.track(`fatal`,{message:e.message,code:e.code,data:JSON.stringify(e.data)})}),t.on(`error`,e=>{n.track(`error`,{code:e.code,message:e.message,data:JSON.stringify(e.data)})}),t.on(`warning`,e=>{n.track(`warning`,{message:e.message,code:e.code,data:JSON.stringify(e.data)})})}function an(){if(!global.OVERLAYED_META.release.id)throw Error(`Release ID is required`);return{app_id:global.OVERLAYED.APPLICATION_ID,user_id:K(),release_id:global.OVERLAYED_META.release.id,app_channel:global.OVERLAYED.APP_BUILD_CHANNEL,app_version:global.OVERLAYED.APP_VERSION,package_version:global.OVERLAYED.PACKAGE_VERSION,frontend_version:global.OVERLAYED.FRONTEND_VERSION,frontend_release_id:global.OVERLAYED.FRONTEND_RELEASE_ID,session_id:global.OVERLAYED.sessionId,in_game:!1}}const on=j(class extends Ue{CHECK_INTERVAL=1e3*60*15;RETRY_INTERVAL=1e3*15;_updateCheckInterval=null;_latestCheckResponse=null;_activeCheckResponse=null;initialReleaseId=null;get manualUpdatesEnabled(){return this.options?.manualUpdates??!1}get activeReleaseId(){return this._activeCheckResponse?.release_id??this.initialReleaseId}constructor(){super(`SiteManager`)}init(e){super.init(e),e?.manualUpdates&&this.enableManualUpdates()}destroy(){super.destroy(),this._updateCheckInterval&&=(clearInterval(this._updateCheckInterval),null)}allowSiteUpdateOnNextLoad(){if(!this.options?.manualUpdates){this.logger.warn(`allowSiteUpdateOnNextLoad called but manual updates are disabled`);return}if(!this._latestCheckResponse){this.logger.warn(`allowSiteUpdateOnNextLoad called but no update has been checked yet`);return}if(this._activeCheckResponse?.release_id===this._latestCheckResponse.release_id){this.logger.warn(`allowSiteUpdateOnNextLoad called but theres no update available`);return}this._activeCheckResponse=this._latestCheckResponse,q.getInstance().track(`site_update_applied`,{version:this._latestCheckResponse.version,release_id:this._latestCheckResponse.release_id}),this.setFrontendCortexMeta(this._latestCheckResponse.release_id,this._latestCheckResponse.version)}setFrontendCortexMeta(e,t){let n=q.getInstance();n.meta||=an(),e&&(global.OVERLAYED.FRONTEND_RELEASE_ID=e,n.meta.frontend_release_id=e),t&&(global.OVERLAYED.FRONTEND_VERSION=t,n.meta.frontend_version=t),e&&t&&n.track(`frontend_version_changed`,{version:t,release_id:e})}enableManualUpdates(){this.logger.log(`Enabling manual site updates`),this.checkForUpdates(),this._updateCheckInterval=setInterval(()=>{this.checkForUpdates(!0)},this.CHECK_INTERVAL)}async checkForUpdates(e=!1){let t=global.OVERLAYED_META?.application?.siteUrl;if(!t){this.logger.log(`No siteUrl configured, skipping check`);return}q.getInstance().track(`site_check_for_update`,{});try{let n=new URL(`/check`,t).toString();this.logger.log(`Checking site URL`,n);let r={"Overlayed-User-Agent":Ye({package_version:global.OVERLAYED.PACKAGE_VERSION,application_id:global.OVERLAYED.APPLICATION_ID,application_version:global.OVERLAYED.APP_VERSION}),"Overlayed-Cortex-User-Id":global.OVERLAYED_RUNTIME.userId},i=jt();i&&(r[`Overlayed-Access-Token`]=i);let a=global.OVERLAYED_META.release.channelId;a&&(r[`Overlayed-Channel-Id`]=a);let o=await fetch(n,{headers:r});if(!o.ok){this.logger.warn(`Site check failed with status`,o.status),q.getInstance().track(`site_check_error`,{status:o.status}),e&&this.scheduleRetry();return}let s=await o.json();if(this.logger.log(`Site check response`,s),!s.release_id){this.logger.error(`Site check response missing release_id`);return}if(!this._latestCheckResponse){this._latestCheckResponse=s;return}return this._latestCheckResponse.release_id===s.release_id?void 0:(this.logger.log(`New site version detected`,s),this._latestCheckResponse=s,q.getInstance().track(`site_update_ready`,{version:s.version,release_id:s.release_id}),this.emit(`siteUpdateReady`,{releaseId:s.release_id,version:s.version}),s)}catch(e){let t=e instanceof Error?e.message:String(e);q.getInstance().track(`site_check_error`,{message:t}),this.logger.error(`Site check failed`,{error:e,message:t}),this.scheduleRetry()}}scheduleRetry(){setTimeout(()=>{this.checkForUpdates()},this.RETRY_INTERVAL)}}),sn=j(xe,`browser-windows.log`);let cn;function ln(){return cn||(cn=class e extends global.OVERLAYED.electron.BrowserWindow{static session=void 0;constructor(t){let n=e.resolveCustomOptions(t);super(n)}static resolveCustomOptions(t){let n=global.OVERLAYED_META,r=global.OVERLAYED_RUNTIME;return{...t,webPreferences:{...t.webPreferences,session:e.getSession(),additionalArguments:[...t.webPreferences?.additionalArguments||[],...global.OVERLAYED.electron.app.isPackaged?[]:[`--overlayed-meta=${JSON.stringify(n)}`],`--overlayed-runtime=${JSON.stringify(r)}`]}}}static getSession(){if(!global.OVERLAYED_META?.application?.siteUrl)return;if(e.session)return e.session;e.session=global.OVERLAYED.electron.session.fromPartition(`persist:overlayed-${global.OVERLAYED.APPLICATION_ID}`);let t=on.getInstance(),n=Ye({package_version:global.OVERLAYED.PACKAGE_VERSION,application_id:global.OVERLAYED.APPLICATION_ID,application_version:global.OVERLAYED.APP_VERSION}),r={urls:[global.OVERLAYED_META.application.siteUrl+`/*`]},i=global.OVERLAYED_RUNTIME.userId;return e.session.webRequest.onBeforeSendHeaders(r,(e,r)=>{let a=jt();a&&(e.requestHeaders[`Overlayed-Access-Token`]=a);let o=global.OVERLAYED_META.release.channelId;o&&(e.requestHeaders[`Overlayed-Channel-Id`]=o),t.manualUpdatesEnabled&&t.activeReleaseId&&(e.requestHeaders[`Overlayed-Release-Id`]=t.activeReleaseId),e.requestHeaders[`Overlayed-Cortex-User-Id`]=i,e.requestHeaders[`Overlayed-User-Agent`]=n,r({requestHeaders:e.requestHeaders})}),t.manualUpdatesEnabled&&e.session.webRequest.onHeadersReceived(r,(e,n)=>{if(t.initialReleaseId){n(e);return}let r=e.responseHeaders?.[`Overlayed-Release-Id`]?.[0];r&&(t.initialReleaseId=ot(r));let i=e.responseHeaders?.[`Overlayed-Release-Version`]?.[0];t.setFrontendCortexMeta(r,i),n(e)}),e.session}},cn)}function un(){function e(e,t){let n=sn.getInstance();return e.once(`closed`,()=>{e.isDestroyed()||q.getInstance().track(`window_closed`,{url:e.webContents.getURL(),in_game:t})}),e.on(`unresponsive`,()=>{e.isDestroyed()||q.getInstance().track(`window_unresponsive`,{url:e.webContents.getURL(),in_game:t})}),e.webContents.on(`console-message`,(t,r,i,a,o)=>{let s=e.isDestroyed()?`destroyed`:e.webContents.getURL();n[r===3?`error`:r===2?`warn`:`log`](`[${s}] [${o}:${a}] ${i}`)}),q.getInstance().track(`window_created`,{url:e.webContents.getURL(),in_game:t}),e}return{getProductionSiteUrl:()=>{let e=global.OVERLAYED_META.application.siteUrl;return URL.canParse(e)?new URL(e):new URL(`https://default.overlayedapps.com`)},createWindow:t=>e(new(ln())(t),!1),createInGameWindow:t=>{let n=ln();return e(Y().instance.newWindowInternal(n,t),!0)},on:(e,t)=>Y().instance.on(e,t),off:(e,t)=>Y().instance.off(e,t),once:(e,t)=>Y().instance.once(e,t),addListener:(e,t)=>Y().instance.addListener(e,t),removeListener:(e,t)=>Y().instance.removeListener(e,t),removeAllListeners:()=>Y().instance.removeAllListeners(),prependListener:(e,t)=>Y().instance.prependListener(e,t),prependOnceListener:(e,t)=>Y().instance.prependOnceListener(e,t),getActiveGameInfo:()=>{let e=Y(),t=je.getInstance();return{resolution:e.resolution,isConnected:t.hasConnection}}}}const dn=j(class extends He{renderInterface;globalCursorOverrideCount=new Set;globalMouseBlockCount=new Set;globalKeyboardBlockCount=new Set;keyInputBlocks={};constructor(e){super(`OverridesManager`),this.renderInterface=Rt.getInstance().getInterface(e)}scope(e){return{setGlobalCursorOverride:t=>this.setGlobalCursorOverride(e,t),setGlobalMouseBlock:t=>this.setGlobalMouseBlock(e,t),setGlobalKeyboardBlock:t=>this.setGlobalKeyboardBlock(e,t),setKeyInputBlock:(t,n)=>this.setKeyInputBlock(e,t,n)}}setGlobalCursorOverride(e,t){t?this.globalCursorOverrideCount.add(e):this.globalCursorOverrideCount.delete(e),t&&this.globalCursorOverrideCount.size===1?this.renderInterface.instance.setGlobalCursorOverride(!0):!t&&this.globalCursorOverrideCount.size===0&&this.renderInterface.instance.setGlobalCursorOverride(!1)}setGlobalMouseBlock(e,t){t?this.globalMouseBlockCount.add(e):this.globalMouseBlockCount.delete(e),t&&this.globalMouseBlockCount.size===1?this.renderInterface.instance.setGlobalMouseBlock(!0):!t&&this.globalMouseBlockCount.size===0&&this.renderInterface.instance.setGlobalMouseBlock(!1)}setGlobalKeyboardBlock(e,t){t?this.globalKeyboardBlockCount.add(e):this.globalKeyboardBlockCount.delete(e),t&&this.globalKeyboardBlockCount.size===1?this.renderInterface.instance.setGlobalKeyboardBlock(!0):!t&&this.globalKeyboardBlockCount.size===0&&this.renderInterface.instance.setGlobalKeyboardBlock(!1)}setKeyInputBlock(e,t,n){this.keyInputBlocks[t]||(this.keyInputBlocks[t]=new Set),n?this.keyInputBlocks[t].add(e):this.keyInputBlocks[t].delete(e),n&&this.keyInputBlocks[t].size===1?this.renderInterface.instance.setKeyInputBlock(t,!0):!n&&this.keyInputBlocks[t].size===0&&this.renderInterface.instance.setKeyInputBlock(t,!1)}},`OGG_SIEGE`);function fn(){return{scope:e=>dn.getInstance().scope(e),raw:{setGlobalMouseBlock:e=>Y().instance.setGlobalMouseBlock(e),setGlobalKeyboardBlock:e=>Y().instance.setGlobalKeyboardBlock(e),setGlobalCursorOverride:e=>Y().instance.setGlobalCursorOverride(e),setKeyInputBlock:(e,t)=>Y().instance.setKeyInputBlock(e,t),getGlobalMouseBlock:()=>Y().instance.getGlobalMouseBlock(),getGlobalKeyboardBlock:()=>Y().instance.getGlobalKeyboardBlock(),getGlobalCursorOverride:()=>Y().instance.getGlobalCursorOverride(),getKeyInputBlock:e=>Y().instance.getKeyInputBlock(e)}}}function pn(){return{track:(e,t)=>{q.getInstance().track(`custom__${String(e)}`,t)}}}function mn(){return{registerWindow:()=>{}}}const hn=/(\d{4})-(\d{2})-(\d{2})\.log$/;function gn(e){let t=e.match(hn);if(!t)return!1;let[,n,r,i]=t,a=Number(n),o=Number(r),s=Number(i);if(o<1||o>12||s<1||s>31)return!1;let c=new Date(a,o-1,s);if(isNaN(c.getTime())||c.getFullYear()!==a||c.getMonth()!==o-1||c.getDate()!==s)return!1;let l=new Date;return l.setDate(l.getDate()-7),l.setHours(0,0,0,0),c>=l}function _n(e){let{silent:t=!1,additionalFiles:n}=e??{},r=ve(global.OVERLAYED.APPLICATION_ID),i=L(r,{recursive:!0}),a=F(),o=L(a,{recursive:!0});t||(I.getInstance().info(`Logs path: `,r),I.getInstance().info(`Overlayed logs path: `,a));let s=new ie;return i.forEach(([e,n])=>{t||I.getInstance().info(`Zipping: `,n);let r=x(n);s.file(g(n),r,{compression:`DEFLATE`})}),o.forEach(([e,n])=>{if(!gn(g(n))){t||I.getInstance().info(`Skipping old/unrecognized log: `,n);return}t||I.getInstance().info(`Zipping: `,n);let r=x(n);s.file(g(n),r,{compression:`DEFLATE`})}),n&&Object.entries(n).forEach(([e,n])=>{t||I.getInstance().info(`Zipping extra file: `,e),s.file(e,n,{compression:`DEFLATE`})}),s}async function vn(e,t,n){let r=global.OVERLAYED_META.release.id?ot(global.OVERLAYED_META.release.id):void 0,i=K();return it(global.OVERLAYED.APPLICATION_ID,{file:Buffer.from(n,`base64`),data:{release_id:r,type:e,cortex_user_id:i,...t}}).then(e=>(I.getInstance().info(`Feedback submitted`,e),e.data.id)).catch(e=>{console.error(JSON.stringify(e,null,2)),I.getInstance().error(`Failed to submit feedback`,e)})}function yn(e){let t=new xe(`app.log`);return t.init(global.OVERLAYED.APPLICATION_ID,e.debug),{scope:e=>t.scope(e),info:e=>t.info(e),warn:e=>t.warn(e),error:e=>t.error(e),debug:e=>t.debug(e),submitFeedback:async(e,t,n)=>{let r=global.OVERLAYED_META.release.id?ot(global.OVERLAYED_META.release.id):void 0;return r&&ae.isPackaged&&q.getInstance().track(e===`bug_report`?`bug_report_submitted`:`suggestion_submitted`,{release_id:r}),await vn(e,t,await _n(n).generateAsync({type:`base64`}))},getLogsZip:e=>_n(e)}}const bn=1e3;function xn(e,t,r,i,a){let o=je.getInstance(),s=I.getInstance().scope(`SetupPipeServer`);s.log(`Initializing`);function c(e,t){let n=r.get(t);if(!n)r.set(t,[e]);else{if(n.length>=bn){pe.getInstance().warn(`Event buffer full, removing oldest event`,`EVENT_BUFFER_FULL`,{summary:`Event buffer overflow for module ${t}. Buffer size: ${n.length}, max: ${bn}`});return}n.push(e)}}function l(e,r,i){let o=i.events.event,l=o(e);if(l instanceof n.errors){if(`type`in l.byPath)return;s.warn(`Invalid event`,{summary:l.summary}),q.getInstance().track(`invalid_game_event`,{game:r.game,type:r.type,summary:l.summary}),pe.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:l.summary});return}if(!a[i.key]){c(e,i.key);return}if(l.type===`unsupported_game_version`){let{content:e}=l;q.getInstance().track(`unsupported_game_version`,{game:l.game,hash:e.process_hash,version:e.game_version})}let u=Yt(i.key,l.type),d=Yt(i.key,`*`),f=t.get(u),p=t.get(d),m=[...Array.from(f??[]),...Array.from(p??[])];if(m.length===0){s.info(`No handlers found for event`,{event:l});return}m.forEach(e=>{e(l)})}function u(t){s.info(t);let r=Dt(t);if(r instanceof n.errors){q.getInstance().track(`invalid_game_event`,{}),pe.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:r.summary});return}let i=Be.includes(r.type),a=e.modules.find(e=>e.key===`universal`),o=e.modules.find(e=>e.key===r.game),c=[];if(i&&a&&c.push(a),o&&o!==a&&(!i||r.type in o.events)&&c.push(o),c.length===0){s.warn(`Invalid module`,{module:i?`universal`:r.game});return}c.forEach(e=>l(t,r,e))}return i.on(`flushEvents`,t=>{if(a[t])return;a[t]=!0;let i=r.get(t);if(!i)return;I.getInstance().info(`Flushing ${i.length} events for module ${t}`);let o=e.modules.find(e=>e.key===t);o&&i.forEach(e=>{let t=Dt(e);t instanceof n.errors||l(e,t,o)}),r.delete(t)}),o.on(`data`,e=>e.forEach(u)),o.on(`error`,e=>{s.error(`Pipe server error`,e),pe.getInstance().error(`Pipe server error`,`PIPE_SERVER_ERROR`,{error:e})}),o.on(`connected`,()=>{s.log(`Pipe server connected`)}),o.on(`disconnected`,()=>{s.log(`Pipe server disconnected`)}),o}const Sn=j(class extends Ue{FETCH_INTERVAL=1e3*60*10;_fetchInterval=null;_flags=new Map;_overrides=new Map;_defaults=new Map;_boundOnGameReady=this.onGameEvent.bind(this);_boundOnGameClose=this.onGameEvent.bind(this);_readyResolve;ready;constructor(){super(`FeatureFlagManager`),this.ready=new Promise(e=>{this._readyResolve=e}),this.fetchFlags(),this.setupInterval(),J.getInstance().on(`gameReady`,this._boundOnGameReady),J.getInstance().on(`gameClose`,this._boundOnGameClose)}destroy(){this._fetchInterval&&=(clearInterval(this._fetchInterval),null),J.getInstance().off(`gameReady`,this._boundOnGameReady),J.getInstance().off(`gameClose`,this._boundOnGameClose),super.destroy()}setDefaults(e){this._defaults=new Map(Object.entries(e))}async refresh(){await this.fetchFlags()}override(e,t){let n=this.get(e);this._overrides.set(e,t),n!==t&&(this.emit(e,t),this.emit(`updated`,!0))}clearOverride(e){if(!this._overrides.has(e))return;let t=this.get(e);this._overrides.delete(e);let n=this.get(e);t!==n&&(this.emit(e,n),this.emit(`updated`,!0))}clearOverrides(){if(this._overrides.size===0)return;let e=new Map;for(let t of this._overrides.keys())e.set(t,this.get(t));this._overrides.clear();let t=!1;for(let[n,r]of e){let e=this.get(n);r!==e&&(this.emit(n,e),t=!0)}t&&this.emit(`updated`,!0)}isOverridden(e){return this._overrides.has(e)}getAllOverrides(){return Object.fromEntries(this._overrides)}inspect(e){let t=this._overrides.get(e),n=this._flags.get(e),r=this._defaults.get(e);return{effective:t??n??r??!1,override:t,actual:n,default:r}}get(e){let t=this._overrides.get(e),n=this._flags.get(e),r=this._defaults.get(e);return t??n??r??!1}getAll(){let e=Object.fromEntries(this._defaults);for(let[t,n]of this._flags)e[t]=n;for(let[t,n]of this._overrides)e[t]=n;return e}onGameEvent(){this.fetchFlags()}setupInterval(){this._fetchInterval=setInterval(()=>{this.fetchFlags()},this.FETCH_INTERVAL)}async fetchFlags(){try{let e=J.getInstance().getActiveGames(),{data:t}=await at(global.OVERLAYED.APPLICATION_ID,{cortex_user_id:global.OVERLAYED_RUNTIME.userId,release_id:global.OVERLAYED_META.release.id??void 0,channel_id:global.OVERLAYED_META.release.channelId??void 0,active_games:e.map(e=>e.toString())??void 0}),n=new Map;for(let e of t)n.set(e.name,e.enabled);for(let[e,t]of n){if(this._overrides.has(e))continue;let n=this._flags.get(e);n!==void 0&&n!==t&&this.emit(e,t)}for(let[e]of this._flags)this._overrides.has(e)||n.has(e)||this.emit(e,this._defaults.get(e)??!1);this._flags=n;for(let e of this._defaults.keys())this._flags.has(e)||this.logger.warn(`Registered feature flag "${e}" was not found in the API response`);this.emit(`updated`,!0)}catch(e){this.logger.error(`Failed to fetch feature flags`,e)}finally{this._readyResolve()}}});function Cn(e){let t=Sn.getInstance();return e&&t.setDefaults(e),{on:(e,n)=>t.on(e,n),off:(e,n)=>t.off(e,n),ready:t.ready,get:e=>t.get(e),getAll:()=>t.getAll(),refresh:()=>t.refresh(),override:(e,n)=>t.override(e,n),clearOverride:e=>t.clearOverride(e),clearOverrides:()=>t.clearOverrides(),isOverridden:e=>t.isOverridden(e),getAllOverrides:()=>t.getAllOverrides(),inspect:e=>t.inspect(e)}}function wn(){let e=on.getInstance();return{on:(t,n)=>{e.on(t,n)},off:(t,n)=>{e.off(t,n)},allowSiteUpdateOnNextLoad:()=>{e.allowSiteUpdateOnNextLoad()}}}const Tn=n({dismissedNotices:ce(n.string).array()}),En=j(class extends Ue{NOTICE_FETCH_INTERVAL=1e3*60*10;MAX_DISMISSED_NOTICES=100;_noticeFetchInterval=null;_notices=[];_noticesFile;_boundOnGameReady=this.onGameReady.bind(this);get notices(){let e=this._noticesFile.get().dismissedNotices;return this._notices.filter(t=>!e.includes(t.id))}constructor(){super(`NoticeManager`),this._noticesFile=this.getNoticesFile(),this._noticesFile.load(),this.fetchNotices(),this.setupNoticeInterval(),J.getInstance().on(`gameReady`,this._boundOnGameReady)}destroy(){this._noticeFetchInterval&&=(clearInterval(this._noticeFetchInterval),null),J.getInstance().off(`gameReady`,this._boundOnGameReady),super.destroy()}dismissNotice(e){let t=this._notices.find(t=>t.id===e);if(!t||!t.dismissible)return;let n=this._noticesFile.get().dismissedNotices;n.unshift(e),this._noticesFile.set({dismissedNotices:n.slice(0,this.MAX_DISMISSED_NOTICES)}),this.emitNoticesUpdated()}onGameReady(){this.fetchNotices()}setupNoticeInterval(){this._noticeFetchInterval=setInterval(()=>{this.fetchNotices()},this.NOTICE_FETCH_INTERVAL)}getNoticesFile(){return new me({path:Et([`notices.json`]),schema:Tn,default:{dismissedNotices:[]}})}async fetchNotices(){let e=J.getInstance().getActiveGames();try{let{data:t}=await U(global.OVERLAYED.APPLICATION_ID,{release_id:global.OVERLAYED_META.release.id?ot(global.OVERLAYED_META.release.id):void 0,channel:global.OVERLAYED_META.release.channel,version:global.OVERLAYED_META.release.version,games:e});this._notices=t,this.emitNoticesUpdated()}catch(e){this.logger.error(`Failed to fetch notices`,e)}}emitNoticesUpdated(){this.emit(`noticesUpdated`,{notices:this.notices})}});function Dn(){let e=En.getInstance();return{on:(t,n)=>{e.on(t,n)},off:(t,n)=>{e.off(t,n)},dismissNotice:t=>{e.dismissNotice(t)},getNotices:()=>e.notices}}const{Provider:On}=O;var kn=class extends On{options;updater;logger=I.getInstance().scope(`OverlayedProvider`);constructor(e,t,n){super(n),this.options=e,this.updater=t}async getLatestVersion(){try{let e=await tt(this.options.application_id,{release_id:this.options.release_id,cortex_user_id:this.options.cortex_user_id,access_token:this.options.access_token,requested_channel:this.options.requested_channel});return this.logger.log(`checkApplicationRelease response`,e.data),q.getInstance().track(`update_release_check_success`,{version:e.data.release.version,channel:e.data.release.channel,fallback:!!e.data.fallback}),e.data.fallback&&this.logger.warn(`Update fallback detected, switching to default channel`),{path:``,sha512:e.data.download_hash??``,version:`${e.data.release.version}-${e.data.release.channel}`,releaseName:e.data.release.id,releaseDate:e.data.release.created_at,files:[{url:e.data.download_url,sha512:e.data.download_hash??``}]}}catch(e){let t=e instanceof Error?e.stack||e.message:String(e);throw q.getInstance().track(`update_release_check_error`,{message:t}),Error(`Unable to find the latest version (${this.options.release_id}), please ensure release exists. ${t}`)}}resolveFiles(e){return[{info:e.files[0],url:new URL(e.files[0].url)}]}};function An(e){return{provider:`custom`,updateProvider:kn,...e}}function X(){return O.autoUpdater}const jn=j(class extends Ue{DEFAULT_CHANNEL=`public`;TOKEN_REFRESH_INTERVAL=1e3*60*15;accessTokenFetcher=void 0;_tokenRefreshInterval=null;_downloadStarted=!1;constructor(){super(`UpdateManager`)}init(){super.init(),this.registerListenerForwarders(),this.setupTokenRefreshInterval(),X().disableDifferentialDownload=!0}destroy(){X().removeAllListeners(),this._tokenRefreshInterval&&=(clearInterval(this._tokenRefreshInterval),null),super.destroy()}setupTokenRefreshInterval(){this._tokenRefreshInterval=setInterval(()=>{this.checkAndRefreshToken()},this.TOKEN_REFRESH_INTERVAL)}async checkAndRefreshToken(){let e=global.OVERLAYED_META.release.channel;e!==this.DEFAULT_CHANNEL&&(this.logger.log(`Refreshing access token for channel`,e),await this.setAndGetLatestAccessToken(e))}async checkForUpdates(e){this.logger.log(`Starting checkForUpdates`);let t=e??global.OVERLAYED_META.release.channel;return q.getInstance().track(`check_for_update`,{channel:t}),this._downloadStarted=!1,await this.setAndGetLatestAccessToken(t),e?(X().allowDowngrade=!0,X().channel=e,this.setFeedUrl({requestedChannel:e})):(X().allowDowngrade=!1,X().channel=global.OVERLAYED_META.release.channel,this.setFeedUrl({})),this.logger.log(`Checking for updates`),X().checkForUpdates()}async switchChannel(e){return this.logger.log(`Switching channel`,e),q.getInstance().track(`update_channel_switch`,{from_channel:global.OVERLAYED_META.release.channel,to_channel:e}),this._downloadStarted=!1,await this.setAndGetLatestAccessToken(e),X().allowDowngrade=!0,X().channel=e,this.setFeedUrl({requestedChannel:e}),X().checkForUpdates()}quitAndInstall(e,t){this.logger.log(`quitAndInstall`,{isSilent:e,isForceRunAfter:t});let[n,r]=this.canUpdate();if(!n)throw this.logger.warn(`Cannot update`,{denialReason:r}),q.getInstance().track(`update_install_blocked`,{reason:r}),Error(r);return this.logger.log(`Quitting and installing`),q.getInstance().track(`update_install`,{}),X().quitAndInstall(e,t)}canUpdate(){return J.getInstance().isInGame?[!1,`User is in game`]:[!0,null]}downloadUpdate(e){return X().downloadUpdate(e)}setAccessTokenFetcher(e){this.accessTokenFetcher=e}async setAndGetLatestAccessToken(e){if(this.logger.log(`Fetching new token`),!this.accessTokenFetcher)return this.logger.warn(`accessTokenFetcher is not set, private channels will not work.`),Mt(null),null;if(this.logger.log(`Setting and getting latest access token for channel`,e),e===this.DEFAULT_CHANNEL)return this.logger.log(`Default channel, skipping`),Mt(null),null;if(e!==global.OVERLAYED_META.release.channel)return this.forceFetchNewAccessToken(e);this.logger.log(`Access token exists, checking expiration`);let t=jt();if(t){let e=this.getAccessTokenExpirationDate(t);if(!e)this.logger.log(`Invalid token, setting to null`),Mt(null);else if(e.getTime()>=Date.now()+300*1e3)return this.logger.log(`Token is not expired, using it.`),t}return this.forceFetchNewAccessToken(e)}async forceFetchNewAccessToken(e){this.accessTokenFetcher||this.logger.warn(`accessTokenFetcher is not set [2], private channels will not work.`);try{let t=await this.accessTokenFetcher?.(e)??null;this.logger.log(`New token fetched`,t?.slice(0,5)+`...`);let n=jt();if(t==null||n===t){q.getInstance().track(`update_token_invalid`,{channel:e}),this.emit(`authTokenInvalid`,{}),Mt(null);return}return Mt(t),t}catch(e){let t=e instanceof Error?e.message:String(e);return q.getInstance().track(`update_token_fetch_error`,{message:t}),this.logger.error(`Error fetching new token`,{error:e,message:t}),Mt(null),null}}setFeedUrl(e){if(!global.OVERLAYED_META.release.id){this.logger.warn(`Tried to set feed URL in development mode`);return}X().setFeedURL(An({application_id:global.OVERLAYED.APPLICATION_ID,release_id:global.OVERLAYED_META.release.id,cortex_user_id:global.OVERLAYED_RUNTIME.userId,access_token:jt(),requested_channel:e.requestedChannel}))}registerListenerForwarders(){X().on(`checking-for-update`,()=>{this.logger.info(`Checking for updates`),this.emit(`checkingForUpdates`,{})}),X().on(`download-progress`,e=>{this._downloadStarted||(this._downloadStarted=!0,q.getInstance().track(`update_download_started`,{version:X().currentVersion?.version??``})),this.emit(`downloadProgress`,{info:e});let t=`Download speed: ${e.bytesPerSecond} - Downloaded ${e.percent}%`;t+=` (${e.transferred}/${e.total})`,this.logger.log(t)}),X().on(`error`,(e,t)=>{this.logger.error(`Error`,e,t),q.getInstance().track(`update_download_error`,{message:t??e.message}),this.emit(`error`,{error:e,message:t})}),X().on(`update-not-available`,e=>{this.logger.info(`Update not available`,e),q.getInstance().track(`update_not_available`,{version:e.version}),this.emit(`updateNotAvailable`,{info:e})}),X().on(`update-available`,e=>{this.logger.info(`Update available`,e),q.getInstance().track(`update_available`,{version:e.version,channel:X().channel??``}),this.emit(`updateAvailable`,{info:e})}),X().on(`update-downloaded`,e=>{this.logger.info(`Update downloaded`,e),q.getInstance().track(`update_download_complete`,{version:e.version}),this.emit(`updateDownloaded`,{event:e})}),X().on(`update-cancelled`,e=>{this.logger.info(`Update cancelled`,e),q.getInstance().track(`update_cancelled`,{version:e.version}),this.emit(`updateCancelled`,{info:e})})}getAccessTokenExpirationDate(e){try{let t=e.split(`.`)[1];if(!t)return null;let n=atob(t.replace(/-/g,`+`).replace(/_/g,`/`)),r=JSON.parse(n);return r.exp?new Date(r.exp*1e3):null}catch{return null}}});function Mn(){let e=jn.getInstance();return{site:wn(),on:(t,n)=>{e.on(t,n)},off:(t,n)=>{e.off(t,n)},setAccessTokenFetcher:t=>e.setAccessTokenFetcher(t),checkForUpdates:()=>e.checkForUpdates(),switchChannel:t=>e.checkForUpdates(t),quitAndInstall:(t,n)=>e.quitAndInstall(t,n),canUpdate:()=>e.canUpdate(),downloadUpdate:t=>e.downloadUpdate(t)}}function Nn(){return{getChannel:()=>global.OVERLAYED_META.release.channel,getVersion:()=>global.OVERLAYED_META.release.version,getReleaseId:()=>global.OVERLAYED_META.release.id}}const Pn=j(class extends Ue{_knownModificationTimes=new Map;_confirmedDumps=new Set;_pendingReports=new Map;_snapshotTimestamp=0;boundOnGameReady=this.onGameReady.bind(this);boundOnGameClose=this.onGameClose.bind(this);constructor(){super(`CrashDumpManager`)}init(){super.init(),this.logger.debug(`init() registering game event listeners`),J.getInstance().on(`gameReadyInternal`,this.boundOnGameReady),J.getInstance().on(`gameCloseInternal`,this.boundOnGameClose),this.logger.debug(`init() complete`)}destroy(){this.logger.debug(`destroy() called`,{pendingReports:this._pendingReports.size,confirmedDumps:this._confirmedDumps.size,knownModificationTimes:this._knownModificationTimes.size}),J.getInstance().off(`gameReadyInternal`,this.boundOnGameReady),J.getInstance().off(`gameCloseInternal`,this.boundOnGameClose),this._knownModificationTimes.clear(),this._confirmedDumps.clear(),this._pendingReports.clear(),this._snapshotTimestamp=0,this.logger.debug(`destroy() cleanup complete`),super.destroy()}async submit(e){this.logger.debug(`submit() called`,{id:e,pendingCount:this._pendingReports.size});let t=this._pendingReports.get(e);if(!t){this.logger.warn(`submit called with unknown id`,e);return}let{response:n,dumpPath:r}=t;this.logger.debug(`Resolved pending report for submission`,{id:e,dumpPath:r});let i=global.OVERLAYED.APPLICATION_ID,a=K();if(this.logger.debug(`Resolved identifiers for submission`,{applicationId:i,cortexUserId:a}),n.crash_dump_upload_request)try{this.logger.debug(`Reading crash dump file`,{dumpPath:r});let t=await E.readFile(r);this.logger.debug(`Uploading crash dump`,{dumpPath:r,size:t.byteLength}),await lt(n.crash_dump_upload_request,new Uint8Array(t)),this.logger.debug(`Crash dump uploaded, confirming`,{id:e}),await rt(i,e,{cortex_user_id:a,file_type:`crash_dump`}),this.logger.debug(`Crash dump confirmed`,{id:e})}catch(e){this.logger.error(`Failed to upload crash dump`,{dumpPath:r,error:e})}else this.logger.warn(`No crash dump upload request in response`,{id:e});this._pendingReports.delete(e),this._confirmedDumps.add(r),this.logger.debug(`Report state updated, attempting dump file cleanup`,{id:e,dumpPath:r});try{await E.unlink(r),this.logger.debug(`Dump file cleaned up successfully`,{dumpPath:r})}catch(e){this.logger.warn(`Failed to clean up dump file after submission`,{dumpPath:r,error:e})}this.logger.log(`Crash report submitted successfully`,r)}async onGameReady({game:e}){this.logger.debug(`onGameReady() fired`,{game:e.identifier}),await this.snapshotModificationTimes(),this.logger.debug(`onGameReady() snapshot complete`,{game:e.identifier})}async onGameClose({game:e}){this.logger.debug(`onGameClose() fired`,{game:e.identifier}),await this.scanForNewDumps(ft(e.identifier)),this.logger.debug(`onGameClose() scan complete`,{game:e.identifier})}async snapshotModificationTimes(){let e=be();this._snapshotTimestamp=Date.now(),this.logger.debug(`snapshotModificationTimes() called`,{crashDumpsPath:e,snapshotTimestamp:this._snapshotTimestamp});try{await E.access(e)}catch{this.logger.debug(`Crash dumps directory does not exist, skipping snapshot`,{crashDumpsPath:e});return}let t=await this.findAllDumps(e);this.logger.debug(`Found dumps for snapshot`,{count:t.length});for(let e of t)try{let t=await E.stat(e);if(t.mtimeMs>=this._snapshotTimestamp-3e4){this.logger.debug(`Skipping recent dump from snapshot`,{dumpPath:e,mtimeMs:t.mtimeMs,snapshotTimestamp:this._snapshotTimestamp});continue}this._knownModificationTimes.set(e,t.mtimeMs),this.logger.debug(`Recorded modification time`,{dumpPath:e,mtimeMs:t.mtimeMs})}catch(t){this.logger.warn(`Failed to stat dump file during snapshot`,{dumpPath:e,error:t})}this.logger.debug(`Snapshot complete`,{totalTracked:this._knownModificationTimes.size})}async scanForNewDumps(e){let t=be();this.logger.debug(`scanForNewDumps() called`,{game:e,crashDumpsPath:t});try{await E.access(t)}catch{this.logger.debug(`Crash dumps directory does not exist, skipping scan`,{crashDumpsPath:t});return}let n=new Set([...this._pendingReports.values()].map(e=>e.dumpPath)),r=await this.findAllDumps(t);this.logger.debug(`Scan found dumps`,{total:r.length,pendingCount:n.size,confirmedCount:this._confirmedDumps.size});for(let t of r){if(this._confirmedDumps.has(t)){this.logger.debug(`Skipping already confirmed dump`,{dumpPath:t});continue}if(n.has(t)){this.logger.debug(`Skipping already pending dump`,{dumpPath:t});continue}let r;try{r=await E.stat(t)}catch(e){this.logger.warn(`Failed to stat dump file during scan`,{dumpPath:t,error:e});continue}let i=r.mtimeMs,a=this._knownModificationTimes.get(t);if(this.logger.debug(`Comparing modification times`,{dumpPath:t,modificationTime:i,knownModificationTime:a}),a===void 0||i>a){this.logger.debug(`Dump is new or modified`,{dumpPath:t,isNew:a===void 0});try{let n=r.size,i=m.basename(m.dirname(t)),a=m.basename(t,m.extname(t));this.logger.debug(`Preparing crash report`,{dumpPath:t,crashDumpSize:n,crashSource:i});let o=(await _n().generateAsync({type:`uint8array`})).byteLength,s=global.OVERLAYED.APPLICATION_ID,c=K(),l=global.OVERLAYED_META.release.id;this.logger.debug(`Creating game crash report via API`,{applicationId:s,cortexUserId:c,game:e,crashSource:i,crashDumpSize:n,logsSize:o});let{data:u}=await nt(s,{cortex_user_id:c,game:e,crash_source:i,crash_identifier:a,release_id:l,logs_size:o,crash_dump_size:n});this._pendingReports.set(u.id,{response:u,dumpPath:t}),this.logger.debug(`Crash report created, emitting 'new' event`,{id:u.id,game:e}),this.logger.log(`New crash dump detected`,{dumpPath:t,game:e,id:u.id}),this.emit(`new`,{id:u.id,game:e})}catch(e){this.logger.error(`Failed to create game crash report`,{dumpPath:t,error:e})}}else this.logger.debug(`Dump unchanged, skipping`,{dumpPath:t});this._knownModificationTimes.set(t,i)}this.logger.debug(`scanForNewDumps() complete`,{game:e,pendingReports:this._pendingReports.size})}async findAllDumps(e){this.logger.debug(`findAllDumps() called`,{basePath:e});let t=[],n;try{n=await E.readdir(e,{withFileTypes:!0})}catch(n){return this.logger.warn(`Failed to read crash dumps directory`,{basePath:e,error:n}),t}this.logger.debug(`Top-level entries in crash dumps directory`,{count:n.length,directories:n.filter(e=>e.isDirectory()).map(e=>e.name)});for(let r of n)if(r.isDirectory()){let n=m.join(e,r.name),i;try{i=await E.readdir(n,{withFileTypes:!0})}catch(e){this.logger.warn(`Failed to read crash dump subdirectory`,{subPath:n,error:e});continue}let a=i.filter(e=>e.isFile()&&e.name.endsWith(`.dmp`));this.logger.debug(`Scanned subdirectory`,{subPath:n,totalEntries:i.length,dmpCount:a.length});for(let e of a)t.push(m.join(n,e.name))}return this.logger.debug(`findAllDumps() complete`,{totalFound:t.length}),t}});let Fn=!1,In={},Ln,Rn=new de,zn;function Bn(e){Hn(e);let t=Vn(e),{init:n=!0,debug:r=!1,silent:i=!0}=t,a=Wn(e);if(I.getInstance().init(e.applicationId,r,i),sn.getInstance().init(e.applicationId,r,!0,!0),a&&qn($e(e.applicationId),!1).catch(()=>{}),Fn)return Ln;function o(){if(Fn){I.getInstance().warn(`Overlayed already initialized`);return}rn();let n=Kt.get({createIfMissing:!1});if(n){let t=Jt({currentAccount:n.currentAccount,accounts:n.accounts,expected:{applicationId:e.applicationId,baseUrl:Ge}});t&&qe(()=>t.account.apiKey)}let r=new Map,i=new Map,a=Mn(),s=Xt(t.modules,r,Rn),c=Zt(),l=nn(t.keybinds),u=un(),d=fn(),f=mn(),p=pn(),m=yn(t),h=Dn(),g=Cn(t.featureFlags),_=Nn();I.getInstance().log(`Overlayed initialized`),Gn(t),xn(t,r,i,Rn,In),Fn=!0,Ln={...s,...c,ads:f,keybinds:l,windows:u,input:d,cortex:p,hasAnyActiveProcesses:()=>Ft.getInstance().hasAnyActiveGames,hasAnyActiveGames:()=>J.getInstance().isInGame,init:o,log:m,initialized:Fn,notices:h,featureFlags:g,updater:a,application:_,crashDumps:{on:(e,t)=>Pn.getInstance().on(e,t),off:(e,t)=>Pn.getInstance().off(e,t),submit:e=>Pn.getInstance().submit(e)}},Ln.universal.on(`logged_in`,e=>{q.getInstance().track(`account_id`,{account_id:e.content.account_id,game:e.game})})}return n&&a?(o(),Ln):new Proxy({init:o},{get:(e,t)=>{if(t===`init`)return e[t];if(!Fn)throw Error(a?`overlayed was called before initialized: ${t}`:Un);return Ln[t]}})}function Vn(e){return{...e,modules:[...e.modules,Ve()]}}global.OVERLAYED=new Proxy({},{get:()=>{throw Error(`function overlayed was not called`)}});function Hn(e){if(!le(e.applicationId))throw Error(`Invalid applicationId, must be a valid ULID.`)}const Un="Overlayed metadata has not been initialized yet. Run `overlayed init` to set up your local development environment.";function Wn(e){let t=Kn(),n=`1.7.0`,r=$e(e.applicationId);function i(){return{package_version:n,application_id:r,application_version:t?.release.version??`0.0.0`}}return I.getInstance().log(`ua object`,i()),Je(()=>i()),t===null?(global.OVERLAYED=new Proxy({},{get:()=>{throw Error(Un)}}),qn(r,!0),!1):(global.OVERLAYED={APPLICATION_ID:r,APP_BUILD_CHANNEL:t.release.channel,APP_VERSION:t.release.version,PACKAGE_VERSION:n,FRONTEND_VERSION:`0.0.0`,sessionId:kt(),electron:e.electron},global.OVERLAYED_META=t,global.OVERLAYED_RUNTIME={userId:K()},I.getInstance().log(`meta`,t),!0)}function Gn(e){I.getInstance().warn(`Bootstrapping`);let t=e.universal?[`*`]:e.modules.map(e=>e.key);J.getInstance().setSubscribedGames(t),I.getInstance().warn(`Initializing update manager`),jn.getInstance().init(),I.getInstance().warn(`Initialized update manager`),on.getInstance().init({manualUpdates:e.site?.manualUpdates??!1}),Wt.getInstance().init(),J.getInstance().init(),Pn.getInstance().init(),Ft.getInstance().init(),It.getInstance().init(),q.getInstance().track(`start`,{}),Gt.getInstance().check(e.applicationId);try{zn&&clearInterval(zn),zn=setInterval(()=>{try{At()}catch{}},3e4),zn.unref()}catch(e){I.getInstance().log(`failed to start sessionLastUsed interval`,e)}async function n(){let e={};e.os=T.platform().trim(),e.os_version=process.getSystemVersion().trim(),e.architecture=T.arch().trim();let t=T.cpus();t.length>0?(e.cpu=t[0].model.trim(),e.cpu_cores=t.length,e.cpu_speed=t[0].speed):I.getInstance().warn(`Failed to collect CPU info`);let n=await oe.graphics();I.getInstance().info(`GPU info`,n);let r=n.controllers.sort((e,t)=>(t.vram??0)-(e.vram??0))[0];r?(e.gpu=r.model.trim(),e.gpu_memory=r.vram??0):I.getInstance().warn(`Failed to find primary GPU`),e.display_count=n.displays.length;let i=n.displays.find(e=>e.main)??n.displays[0];i?(e.primary_display_resolution_x=i.resolutionX??void 0,e.primary_display_resolution_y=i.resolutionY??void 0,e.primary_display_refresh_rate=i.currentRefreshRate??void 0):I.getInstance().warn(`Failed to find main display`),e.ram=process.getSystemMemoryInfo().total;let a=T.homedir(),o=await E.statfs(a);return o&&`blocks`in o&&`bsize`in o&&`bavail`in o?(e.disk=o.blocks*o.bsize,e.disk_free=o.bavail*o.bsize):I.getInstance().warn(`Failed to collect disk info`),I.getInstance().log(`Retrieved system information`,e),e}ae.on(`ready`,()=>{n().then(e=>{q.getInstance().track(`system_info`,e)}).catch(e=>{I.getInstance().log(`Failed to retrieve system information`,e)})}),ae.on(`quit`,()=>{q.getInstance().track(`electron_quit`,{}),Jn()}),process.on(`exit`,()=>{q.getInstance().track(`exit`,{}),Jn()})}function Kn(){if(ae.isPackaged)try{let e=m.join(process.resourcesPath,`meta.json`);return JSON.parse(y.readFileSync(e,`utf-8`))}catch(e){throw Error(`Failed to read application metadata from resources/meta.json`,{cause:e})}else{let e=m.join(process.cwd(),`.overlayed`,`meta.json`);return y.existsSync(e)?JSON.parse(y.readFileSync(e,`utf-8`)):null}}async function qn(e,t=!1){if(!ae.isPackaged)try{I.getInstance().log(`Fetching application metadata from API...`);let n=we({...(await et(e)).data,siteUrl:``});t&&(I.getInstance().log(v.yellowBright(`Uninitialized development environment detected. Created .overlayed folder. In the future, run ${v.bold(`overlayed init`)} to do so. \n\nThe process will now exit to load the cached metadata.\n\n${v.italic(`Note: This will never happen in a packaged application, and will only happen once in local development so long as the .overlayed folder exists.`)}`)),process.exit(0)),global.OVERLAYED_META=n}catch(e){I.getInstance().error(`Failed to fetch application meta`,e),t&&(console.error(`
16
16
  Failed to fetch application metadata. Please ensure you're authenticated with 'overlayed login'.
17
17
  `),process.exit(1))}}async function Jn(){try{At()}catch{}try{zn&&clearInterval(zn),zn=void 0}catch{}q.getInstance().flush(),It.getInstance().destroy(),Pn.getInstance().destroy(),J.getInstance().destroy(),Wt.getInstance().destroy(),Ft.getInstance().destroy(),Rt.getInstance().getInterface(`OGG_SIEGE`).destroy(),je.getInstance().destroy(),pe.getInstance().destroy(),jn.getInstance().destroy(),on.getInstance().destroy(),Sn.getInstance().destroy()}export{Me as RenderInterface,Pe as VirtualKey,Ce as defineConfig,Bn as overlayed};
package/dist/sand.d.ts CHANGED
@@ -115,37 +115,6 @@ declare function module(): {
115
115
  readonly key: "sand";
116
116
  readonly events: import("arktype").Module<{
117
117
  event: {
118
- game: "sand";
119
- type: "storm_changed";
120
- creation_time: number;
121
- content: {
122
- stage: number;
123
- total_stages: number;
124
- state: "delay" | "idle" | "invalid" | "moving" | (string & {});
125
- end_time: number;
126
- radius: number;
127
- center: {
128
- x: number;
129
- y: number;
130
- z: number;
131
- };
132
- next_radius: number;
133
- next_center: {
134
- x: number;
135
- y: number;
136
- z: number;
137
- };
138
- };
139
- } | {
140
- game: "sand";
141
- type: "tech_tree_item_unlocked";
142
- creation_time: number;
143
- content: {
144
- id: SandTechNodeId;
145
- name: string;
146
- tier: number;
147
- };
148
- } | {
149
118
  game: "sand";
150
119
  type: "logged_in";
151
120
  creation_time: number;
@@ -228,6 +197,15 @@ declare function module(): {
228
197
  is_available: boolean;
229
198
  }[];
230
199
  };
200
+ } | {
201
+ game: "sand";
202
+ type: "tech_tree_item_unlocked";
203
+ creation_time: number;
204
+ content: {
205
+ id: SandTechNodeId;
206
+ name: string;
207
+ tier: number;
208
+ };
231
209
  } | {
232
210
  game: "sand";
233
211
  type: "walker_changed";
@@ -305,6 +283,28 @@ declare function module(): {
305
283
  content: {
306
284
  extraction_id: SandExtractionId;
307
285
  };
286
+ } | {
287
+ game: "sand";
288
+ type: "storm_changed";
289
+ creation_time: number;
290
+ content: {
291
+ stage: number;
292
+ total_stages: number;
293
+ state: "delay" | "idle" | "invalid" | "moving" | (string & {});
294
+ end_time: number;
295
+ radius: number;
296
+ center: {
297
+ x: number;
298
+ y: number;
299
+ z: number;
300
+ };
301
+ next_radius: number;
302
+ next_center: {
303
+ x: number;
304
+ y: number;
305
+ z: number;
306
+ };
307
+ };
308
308
  } | {
309
309
  game: "sand";
310
310
  type: "trampler_acquired";
@@ -313,7 +313,7 @@ declare function module(): {
313
313
  trampler_id: SandTramplerId;
314
314
  master_server_id: SandWalkerId;
315
315
  blueprint: string;
316
- creator_account_id: SandPlayerId;
316
+ creator_player_id: SandPlayerId;
317
317
  first_name_index: number;
318
318
  second_name_index: number;
319
319
  };
@@ -343,6 +343,39 @@ declare function module(): {
343
343
  content: {
344
344
  trampler_id: SandTramplerId;
345
345
  };
346
+ } | {
347
+ game: "sand";
348
+ type: "inventory_changed";
349
+ creation_time: number;
350
+ content: {
351
+ player_id: SandPlayerId;
352
+ slots_used: number;
353
+ slots: {
354
+ slot: number;
355
+ definition: SandItemDefinition;
356
+ amount: number;
357
+ }[];
358
+ };
359
+ } | {
360
+ game: "sand";
361
+ type: "inventory_slot_changed";
362
+ creation_time: number;
363
+ content: {
364
+ player_id: SandPlayerId;
365
+ slot: number;
366
+ definition: SandItemDefinition;
367
+ amount: number;
368
+ delta: number;
369
+ };
370
+ } | {
371
+ game: "sand";
372
+ type: "inventory_equipped_changed";
373
+ creation_time: number;
374
+ content: {
375
+ player_id: SandPlayerId;
376
+ slot: number;
377
+ definition: SandItemDefinition;
378
+ };
346
379
  };
347
380
  extraction_added: {
348
381
  game: "sand";
@@ -374,6 +407,42 @@ declare function module(): {
374
407
  state: "aborted" | "all_left" | "decayed" | "extracted" | "failed" | "in_progress" | "invalid" | "loot_division" | "match_found" | "matchmaking" | "menu" | "waiting_for_players" | (string & {});
375
408
  };
376
409
  };
410
+ inventory_changed: {
411
+ game: "sand";
412
+ type: "inventory_changed";
413
+ creation_time: number;
414
+ content: {
415
+ player_id: SandPlayerId;
416
+ slots_used: number;
417
+ slots: {
418
+ slot: number;
419
+ definition: SandItemDefinition;
420
+ amount: number;
421
+ }[];
422
+ };
423
+ };
424
+ inventory_equipped_changed: {
425
+ game: "sand";
426
+ type: "inventory_equipped_changed";
427
+ creation_time: number;
428
+ content: {
429
+ player_id: SandPlayerId;
430
+ slot: number;
431
+ definition: SandItemDefinition;
432
+ };
433
+ };
434
+ inventory_slot_changed: {
435
+ game: "sand";
436
+ type: "inventory_slot_changed";
437
+ creation_time: number;
438
+ content: {
439
+ player_id: SandPlayerId;
440
+ slot: number;
441
+ definition: SandItemDefinition;
442
+ amount: number;
443
+ delta: number;
444
+ };
445
+ };
377
446
  logged_in: {
378
447
  game: "sand";
379
448
  type: "logged_in";
@@ -540,7 +609,7 @@ declare function module(): {
540
609
  trampler_id: SandTramplerId;
541
610
  master_server_id: SandWalkerId;
542
611
  blueprint: string;
543
- creator_account_id: SandPlayerId;
612
+ creator_player_id: SandPlayerId;
544
613
  first_name_index: number;
545
614
  second_name_index: number;
546
615
  };
@@ -638,6 +707,12 @@ declare const StorageItemSchema: import("arktype/internal/variants/object.ts").O
638
707
  amount: number;
639
708
  }, {}>;
640
709
  type StorageItem = typeof StorageItemSchema.infer;
710
+ declare const InventorySlotSchema: import("arktype/internal/variants/object.ts").ObjectType<{
711
+ slot: number;
712
+ definition: SandItemDefinition;
713
+ amount: number;
714
+ }, {}>;
715
+ type InventorySlot = typeof InventorySlotSchema.infer;
641
716
  declare const TechTreeNodeSchema: import("arktype/internal/variants/object.ts").ObjectType<{
642
717
  id: SandTechNodeId;
643
718
  name: string;
@@ -897,7 +972,7 @@ declare const TramplerAcquired: import("arktype/internal/variants/object.ts").Ob
897
972
  trampler_id: SandTramplerId;
898
973
  master_server_id: SandWalkerId;
899
974
  blueprint: string;
900
- creator_account_id: SandPlayerId;
975
+ creator_player_id: SandPlayerId;
901
976
  first_name_index: number;
902
977
  second_name_index: number;
903
978
  };
@@ -935,40 +1010,51 @@ declare const TramplerLost: import("arktype/internal/variants/object.ts").Object
935
1010
  };
936
1011
  }, {}>;
937
1012
  type TramplerLostEvent = typeof TramplerLost.infer; //#endregion
1013
+ //#region src/events/inventoryChanged.d.ts
1014
+ declare const InventoryChanged: import("arktype/internal/variants/object.ts").ObjectType<{
1015
+ game: "sand";
1016
+ type: "inventory_changed";
1017
+ creation_time: number;
1018
+ content: {
1019
+ player_id: SandPlayerId;
1020
+ slots_used: number;
1021
+ slots: {
1022
+ slot: number;
1023
+ definition: SandItemDefinition;
1024
+ amount: number;
1025
+ }[];
1026
+ };
1027
+ }, {}>;
1028
+ type InventoryChangedEvent = typeof InventoryChanged.infer; //#endregion
1029
+ //#region src/events/inventorySlotChanged.d.ts
1030
+ declare const InventorySlotChanged: import("arktype/internal/variants/object.ts").ObjectType<{
1031
+ game: "sand";
1032
+ type: "inventory_slot_changed";
1033
+ creation_time: number;
1034
+ content: {
1035
+ player_id: SandPlayerId;
1036
+ slot: number;
1037
+ definition: SandItemDefinition;
1038
+ amount: number;
1039
+ delta: number;
1040
+ };
1041
+ }, {}>;
1042
+ type InventorySlotChangedEvent = typeof InventorySlotChanged.infer; //#endregion
1043
+ //#region src/events/inventoryEquippedChanged.d.ts
1044
+ declare const InventoryEquippedChanged: import("arktype/internal/variants/object.ts").ObjectType<{
1045
+ game: "sand";
1046
+ type: "inventory_equipped_changed";
1047
+ creation_time: number;
1048
+ content: {
1049
+ player_id: SandPlayerId;
1050
+ slot: number;
1051
+ definition: SandItemDefinition;
1052
+ };
1053
+ }, {}>;
1054
+ type InventoryEquippedChangedEvent = typeof InventoryEquippedChanged.infer; //#endregion
938
1055
  //#region src/events/index.d.ts
939
1056
  declare const sandEvents: import("arktype").Module<{
940
1057
  event: {
941
- game: "sand";
942
- type: "storm_changed";
943
- creation_time: number;
944
- content: {
945
- stage: number;
946
- total_stages: number;
947
- state: "delay" | "idle" | "invalid" | "moving" | (string & {});
948
- end_time: number;
949
- radius: number;
950
- center: {
951
- x: number;
952
- y: number;
953
- z: number;
954
- };
955
- next_radius: number;
956
- next_center: {
957
- x: number;
958
- y: number;
959
- z: number;
960
- };
961
- };
962
- } | {
963
- game: "sand";
964
- type: "tech_tree_item_unlocked";
965
- creation_time: number;
966
- content: {
967
- id: SandTechNodeId;
968
- name: string;
969
- tier: number;
970
- };
971
- } | {
972
1058
  game: "sand";
973
1059
  type: "logged_in";
974
1060
  creation_time: number;
@@ -1051,6 +1137,15 @@ declare const sandEvents: import("arktype").Module<{
1051
1137
  is_available: boolean;
1052
1138
  }[];
1053
1139
  };
1140
+ } | {
1141
+ game: "sand";
1142
+ type: "tech_tree_item_unlocked";
1143
+ creation_time: number;
1144
+ content: {
1145
+ id: SandTechNodeId;
1146
+ name: string;
1147
+ tier: number;
1148
+ };
1054
1149
  } | {
1055
1150
  game: "sand";
1056
1151
  type: "walker_changed";
@@ -1128,6 +1223,28 @@ declare const sandEvents: import("arktype").Module<{
1128
1223
  content: {
1129
1224
  extraction_id: SandExtractionId;
1130
1225
  };
1226
+ } | {
1227
+ game: "sand";
1228
+ type: "storm_changed";
1229
+ creation_time: number;
1230
+ content: {
1231
+ stage: number;
1232
+ total_stages: number;
1233
+ state: "delay" | "idle" | "invalid" | "moving" | (string & {});
1234
+ end_time: number;
1235
+ radius: number;
1236
+ center: {
1237
+ x: number;
1238
+ y: number;
1239
+ z: number;
1240
+ };
1241
+ next_radius: number;
1242
+ next_center: {
1243
+ x: number;
1244
+ y: number;
1245
+ z: number;
1246
+ };
1247
+ };
1131
1248
  } | {
1132
1249
  game: "sand";
1133
1250
  type: "trampler_acquired";
@@ -1136,7 +1253,7 @@ declare const sandEvents: import("arktype").Module<{
1136
1253
  trampler_id: SandTramplerId;
1137
1254
  master_server_id: SandWalkerId;
1138
1255
  blueprint: string;
1139
- creator_account_id: SandPlayerId;
1256
+ creator_player_id: SandPlayerId;
1140
1257
  first_name_index: number;
1141
1258
  second_name_index: number;
1142
1259
  };
@@ -1166,6 +1283,39 @@ declare const sandEvents: import("arktype").Module<{
1166
1283
  content: {
1167
1284
  trampler_id: SandTramplerId;
1168
1285
  };
1286
+ } | {
1287
+ game: "sand";
1288
+ type: "inventory_changed";
1289
+ creation_time: number;
1290
+ content: {
1291
+ player_id: SandPlayerId;
1292
+ slots_used: number;
1293
+ slots: {
1294
+ slot: number;
1295
+ definition: SandItemDefinition;
1296
+ amount: number;
1297
+ }[];
1298
+ };
1299
+ } | {
1300
+ game: "sand";
1301
+ type: "inventory_slot_changed";
1302
+ creation_time: number;
1303
+ content: {
1304
+ player_id: SandPlayerId;
1305
+ slot: number;
1306
+ definition: SandItemDefinition;
1307
+ amount: number;
1308
+ delta: number;
1309
+ };
1310
+ } | {
1311
+ game: "sand";
1312
+ type: "inventory_equipped_changed";
1313
+ creation_time: number;
1314
+ content: {
1315
+ player_id: SandPlayerId;
1316
+ slot: number;
1317
+ definition: SandItemDefinition;
1318
+ };
1169
1319
  };
1170
1320
  extraction_added: {
1171
1321
  game: "sand";
@@ -1197,6 +1347,42 @@ declare const sandEvents: import("arktype").Module<{
1197
1347
  state: "aborted" | "all_left" | "decayed" | "extracted" | "failed" | "in_progress" | "invalid" | "loot_division" | "match_found" | "matchmaking" | "menu" | "waiting_for_players" | (string & {});
1198
1348
  };
1199
1349
  };
1350
+ inventory_changed: {
1351
+ game: "sand";
1352
+ type: "inventory_changed";
1353
+ creation_time: number;
1354
+ content: {
1355
+ player_id: SandPlayerId;
1356
+ slots_used: number;
1357
+ slots: {
1358
+ slot: number;
1359
+ definition: SandItemDefinition;
1360
+ amount: number;
1361
+ }[];
1362
+ };
1363
+ };
1364
+ inventory_equipped_changed: {
1365
+ game: "sand";
1366
+ type: "inventory_equipped_changed";
1367
+ creation_time: number;
1368
+ content: {
1369
+ player_id: SandPlayerId;
1370
+ slot: number;
1371
+ definition: SandItemDefinition;
1372
+ };
1373
+ };
1374
+ inventory_slot_changed: {
1375
+ game: "sand";
1376
+ type: "inventory_slot_changed";
1377
+ creation_time: number;
1378
+ content: {
1379
+ player_id: SandPlayerId;
1380
+ slot: number;
1381
+ definition: SandItemDefinition;
1382
+ amount: number;
1383
+ delta: number;
1384
+ };
1385
+ };
1200
1386
  logged_in: {
1201
1387
  game: "sand";
1202
1388
  type: "logged_in";
@@ -1363,7 +1549,7 @@ declare const sandEvents: import("arktype").Module<{
1363
1549
  trampler_id: SandTramplerId;
1364
1550
  master_server_id: SandWalkerId;
1365
1551
  blueprint: string;
1366
- creator_account_id: SandPlayerId;
1552
+ creator_player_id: SandPlayerId;
1367
1553
  first_name_index: number;
1368
1554
  second_name_index: number;
1369
1555
  };
@@ -1420,4 +1606,4 @@ declare const sandEvents: import("arktype").Module<{
1420
1606
  type SandEvent = typeof sandEvents.event.infer;
1421
1607
  type SandEventType = SandEvent["type"]; //#endregion
1422
1608
  //#endregion
1423
- export { type AccountIdentity, type AccountIdentitySchema, BaseEvent, type ExtractionAddedEvent, type ExtractionRemovedEvent, type GameStateChangedEvent, type Landmark, type LandmarkSchema, type LoggedInEvent, type MatchEndedEvent, type MatchStartedEvent, type PartyChangedEvent, type PartyMemberJoinedEvent, type PartyMemberLeftEvent, type PlayerJoinedEvent, type Position, type PositionSchema, SAND_GAME_MODES, SAND_GAME_STATES, SAND_STORM_STATES, SandAccountId, SandBlueprintId, SandCharacterId, type SandEvent, type SandEventType, SandExtractionId, SandGameMode, SandGameModeSchema, SandGameState, SandGameStateSchema, SandItemDefinition, SandLandmarkId, SandMatchId, SandPartyJoinCode, SandPlatformId, SandPlayerId, SandPlayfabId, SandStormState, SandStormStateSchema, SandTechNodeId, SandTramplerId, SandWalkerId, type StorageChangedEvent, type StorageItem, type StorageItemChangedEvent, type StorageItemSchema, type StormChangedEvent, type TechTreeChangedEvent, type TechTreeItemUnlockedEvent, type TechTreeNode, type TechTreeNodeSchema, type TramplerAcquiredEvent, type TramplerChangedEvent, type TramplerLostEvent, type WalkerChangedEvent, type WorldBounds, type WorldBoundsSchema, type WorldTimeChangedEvent, module, type sandEvents };
1609
+ export { type AccountIdentity, type AccountIdentitySchema, BaseEvent, type ExtractionAddedEvent, type ExtractionRemovedEvent, type GameStateChangedEvent, type InventoryChangedEvent, type InventoryEquippedChangedEvent, type InventorySlot, type InventorySlotChangedEvent, type InventorySlotSchema, type Landmark, type LandmarkSchema, type LoggedInEvent, type MatchEndedEvent, type MatchStartedEvent, type PartyChangedEvent, type PartyMemberJoinedEvent, type PartyMemberLeftEvent, type PlayerJoinedEvent, type Position, type PositionSchema, SAND_GAME_MODES, SAND_GAME_STATES, SAND_STORM_STATES, SandAccountId, SandBlueprintId, SandCharacterId, type SandEvent, type SandEventType, SandExtractionId, SandGameMode, SandGameModeSchema, SandGameState, SandGameStateSchema, SandItemDefinition, SandLandmarkId, SandMatchId, SandPartyJoinCode, SandPlatformId, SandPlayerId, SandPlayfabId, SandStormState, SandStormStateSchema, SandTechNodeId, SandTramplerId, SandWalkerId, type StorageChangedEvent, type StorageItem, type StorageItemChangedEvent, type StorageItemSchema, type StormChangedEvent, type TechTreeChangedEvent, type TechTreeItemUnlockedEvent, type TechTreeNode, type TechTreeNodeSchema, type TramplerAcquiredEvent, type TramplerChangedEvent, type TramplerLostEvent, type WalkerChangedEvent, type WorldBounds, type WorldBoundsSchema, type WorldTimeChangedEvent, module, type sandEvents };
package/dist/sand.js CHANGED
@@ -1 +1 @@
1
- import{scope as e,type as t}from"arktype";function n(e){return e}function r(e){return e}function i(e){return e?t=>(e(t),t):r}const a=[`menu`,`waiting_for_players`,`matchmaking`,`match_found`,`in_progress`,`loot_division`,`extracted`,`all_left`,`aborted`,`failed`,`decayed`,`invalid`],o=t(`string`),s=[`storm_dive`,`voyage`,`invalid`],c=t(`string`),l=[`idle`,`delay`,`moving`,`invalid`],u=t(`string`),d=i(),f=i(),p=i(),m=i(),h=i(),g=i(),_=i(),v=i(),y=i(),b=i(),x=i(),S=i(),C=i(),w=i(),T=t({game:`string`,type:`string`,creation_time:`number`}),E=T.and({game:`'sand'`}),D=t({x:`number`,y:`number`,z:`number`}),O=t({min_x:`number`,min_z:`number`,max_x:`number`,max_z:`number`}),k=t({id:n(t.string),name:`string`,position:D}),A=t({account_id:n(t.string),display_name:`string`,platform_id:n(t.string),playfab_id:n(t.string)}),j=t({definition:n(t.string),amount:`number`}),M=t({id:n(t.string),name:`string`,tier:`number`,is_unlocked:`boolean`,is_available:`boolean`}),N=e({"#event1":`logged_in | game_state_changed | party_changed | party_member_joined | party_member_left | storage_changed | storage_item_changed | tech_tree_changed | tech_tree_item_unlocked | walker_changed`,"#event2":`match_started | match_ended | world_time_changed | player_joined | extraction_added | extraction_removed | storm_changed | trampler_acquired | trampler_changed | trampler_lost`,event:`event1 | event2`,logged_in:E.and({type:`'logged_in'`,content:A}),game_state_changed:E.and({type:`'game_state_changed'`,content:{state:o}}),party_changed:E.and({type:`'party_changed'`,content:{join_code:n(t.string)}}),party_member_joined:E.and({type:`'party_member_joined'`,content:A.and({character_id:n(t.number),is_captain:`boolean`})}),party_member_left:E.and({type:`'party_member_left'`,content:{account_id:n(t.string)}}),storage_changed:E.and({type:`'storage_changed'`,content:{slots_used:`number`,slots_total:`number`,crowns:`number`,mechanical_parts:`number`,pneumatic_parts:`number`,computing_modules:`number`,items:j.array()}}),storage_item_changed:E.and({type:`'storage_item_changed'`,content:{definition:n(t.string),amount:`number`,delta:`number`}}),tech_tree_changed:E.and({type:`'tech_tree_changed'`,content:{unlocked:`number`,total:`number`,nodes:M.array()}}),tech_tree_item_unlocked:E.and({type:`'tech_tree_item_unlocked'`,content:{id:n(t.string),name:`string`,tier:`number`}}),walker_changed:E.and({type:`'walker_changed'`,content:{walker_id:n(t.number),blueprint_unique_id:n(t.string),blueprint_file:`string`,first_name_index:`number`,second_name_index:`number`}}),match_started:E.and({type:`'match_started'`,content:{match_id:n(t.number),game_mode:c,seed:`number >= 0`,server_start_time:`number >= 0`,world_bounds:O,landmarks:k.array()}}),match_ended:E.and({type:`'match_ended'`}),world_time_changed:E.and({type:`'world_time_changed'`,content:{hour:`0 <= number <= 23`}}),player_joined:E.and({type:`'player_joined'`,content:{player_id:n(t(`number >= 0`)),username:`string`,platform_id:n(t.string),playfab_id:n(t.string)}}),extraction_added:E.and({type:`'extraction_added'`,content:{extraction_id:n(t.number),radius:`number`,position:D}}),extraction_removed:E.and({type:`'extraction_removed'`,content:{extraction_id:n(t.number)}}),storm_changed:E.and({type:`'storm_changed'`,content:{stage:`number`,total_stages:`number`,state:u,end_time:`number >= 0`,radius:`number`,center:D,next_radius:`number`,next_center:D}}),trampler_acquired:E.and({type:`'trampler_acquired'`,content:{trampler_id:n(t.number),master_server_id:n(t.number),blueprint:`string`,creator_account_id:n(t(`number >= 0`)),first_name_index:`number`,second_name_index:`number`}}),trampler_changed:E.and({type:`'trampler_changed'`,content:{trampler_id:n(t.number),position:D,yaw:`number`,speed:`number`,velocity:D}}),trampler_lost:E.and({type:`'trampler_lost'`,content:{trampler_id:n(t.number)}})}).export();function P(){return{key:`sand`,events:N}}export{T as BaseEvent,s as SAND_GAME_MODES,a as SAND_GAME_STATES,l as SAND_STORM_STATES,d as SandAccountId,C as SandBlueprintId,v as SandCharacterId,g as SandExtractionId,c as SandGameModeSchema,o as SandGameStateSchema,b as SandItemDefinition,_ as SandLandmarkId,h as SandMatchId,y as SandPartyJoinCode,p as SandPlatformId,f as SandPlayerId,m as SandPlayfabId,u as SandStormStateSchema,x as SandTechNodeId,w as SandTramplerId,S as SandWalkerId,P as module};
1
+ import{scope as e,type as t}from"arktype";function n(e){return e}function r(e){return e}function i(e){return e?t=>(e(t),t):r}const a=[`menu`,`waiting_for_players`,`matchmaking`,`match_found`,`in_progress`,`loot_division`,`extracted`,`all_left`,`aborted`,`failed`,`decayed`,`invalid`],o=t(`string`),s=[`storm_dive`,`voyage`,`invalid`],c=t(`string`),l=[`idle`,`delay`,`moving`,`invalid`],u=t(`string`),d=i(),f=i(),p=i(),m=i(),h=i(),g=i(),_=i(),v=i(),y=i(),b=i(),x=i(),S=i(),C=i(),w=i(),T=t({game:`string`,type:`string`,creation_time:`number`}),E=T.and({game:`'sand'`}),D=t({x:`number`,y:`number`,z:`number`}),O=t({min_x:`number`,min_z:`number`,max_x:`number`,max_z:`number`}),k=t({id:n(t.string),name:`string`,position:D}),A=t({account_id:n(t.string),display_name:`string`,platform_id:n(t.string),playfab_id:n(t.string)}),j=t({definition:n(t.string),amount:`number`}),M=t({slot:`number >= 0`,definition:n(t.string),amount:`number >= 0`}),N=t({id:n(t.string),name:`string`,tier:`number`,is_unlocked:`boolean`,is_available:`boolean`}),P=e({"#event1":`logged_in | game_state_changed | party_changed | party_member_joined | party_member_left | storage_changed | storage_item_changed | tech_tree_changed | tech_tree_item_unlocked | walker_changed`,"#event2":`match_started | match_ended | world_time_changed | player_joined | extraction_added | extraction_removed | storm_changed | trampler_acquired | trampler_changed | trampler_lost`,"#event3":`inventory_changed | inventory_slot_changed | inventory_equipped_changed`,event:`event1 | event2 | event3`,logged_in:E.and({type:`'logged_in'`,content:A}),game_state_changed:E.and({type:`'game_state_changed'`,content:{state:o}}),party_changed:E.and({type:`'party_changed'`,content:{join_code:n(t.string)}}),party_member_joined:E.and({type:`'party_member_joined'`,content:A.and({character_id:n(t.number),is_captain:`boolean`})}),party_member_left:E.and({type:`'party_member_left'`,content:{account_id:n(t.string)}}),storage_changed:E.and({type:`'storage_changed'`,content:{slots_used:`number`,slots_total:`number`,crowns:`number`,mechanical_parts:`number`,pneumatic_parts:`number`,computing_modules:`number`,items:j.array()}}),storage_item_changed:E.and({type:`'storage_item_changed'`,content:{definition:n(t.string),amount:`number`,delta:`number`}}),tech_tree_changed:E.and({type:`'tech_tree_changed'`,content:{unlocked:`number`,total:`number`,nodes:N.array()}}),tech_tree_item_unlocked:E.and({type:`'tech_tree_item_unlocked'`,content:{id:n(t.string),name:`string`,tier:`number`}}),walker_changed:E.and({type:`'walker_changed'`,content:{walker_id:n(t.number),blueprint_unique_id:n(t.string),blueprint_file:`string`,first_name_index:`number`,second_name_index:`number`}}),match_started:E.and({type:`'match_started'`,content:{match_id:n(t.number),game_mode:c,seed:`number >= 0`,server_start_time:`number >= 0`,world_bounds:O,landmarks:k.array()}}),match_ended:E.and({type:`'match_ended'`}),world_time_changed:E.and({type:`'world_time_changed'`,content:{hour:`0 <= number <= 23`}}),player_joined:E.and({type:`'player_joined'`,content:{player_id:n(t(`number >= 0`)),username:`string`,platform_id:n(t.string),playfab_id:n(t.string)}}),extraction_added:E.and({type:`'extraction_added'`,content:{extraction_id:n(t.number),radius:`number`,position:D}}),extraction_removed:E.and({type:`'extraction_removed'`,content:{extraction_id:n(t.number)}}),storm_changed:E.and({type:`'storm_changed'`,content:{stage:`number`,total_stages:`number`,state:u,end_time:`number >= 0`,radius:`number`,center:D,next_radius:`number`,next_center:D}}),trampler_acquired:E.and({type:`'trampler_acquired'`,content:{trampler_id:n(t.number),master_server_id:n(t.number),blueprint:`string`,creator_player_id:n(t(`number >= 0`)),first_name_index:`number`,second_name_index:`number`}}),trampler_changed:E.and({type:`'trampler_changed'`,content:{trampler_id:n(t.number),position:D,yaw:`number`,speed:`number`,velocity:D}}),trampler_lost:E.and({type:`'trampler_lost'`,content:{trampler_id:n(t.number)}}),inventory_changed:E.and({type:`'inventory_changed'`,content:{player_id:n(t(`number >= 0`)),slots_used:`number >= 0`,slots:M.array()}}),inventory_slot_changed:E.and({type:`'inventory_slot_changed'`,content:{player_id:n(t(`number >= 0`)),slot:`number >= 0`,definition:n(t.string),amount:`number >= 0`,delta:`number`}}),inventory_equipped_changed:E.and({type:`'inventory_equipped_changed'`,content:{player_id:n(t(`number >= 0`)),slot:`number >= 0`,definition:n(t.string)}})}).export();function F(){return{key:`sand`,events:P}}export{T as BaseEvent,s as SAND_GAME_MODES,a as SAND_GAME_STATES,l as SAND_STORM_STATES,d as SandAccountId,C as SandBlueprintId,v as SandCharacterId,g as SandExtractionId,c as SandGameModeSchema,o as SandGameStateSchema,b as SandItemDefinition,_ as SandLandmarkId,h as SandMatchId,y as SandPartyJoinCode,p as SandPlatformId,f as SandPlayerId,m as SandPlayfabId,u as SandStormStateSchema,x as SandTechNodeId,w as SandTramplerId,S as SandWalkerId,F as module};
package/dist/siege.d.ts CHANGED
@@ -652,6 +652,31 @@ declare function module(): {
652
652
  };
653
653
  };
654
654
  event: {
655
+ game: "siege";
656
+ type: "player_assists_changed";
657
+ creation_time: number;
658
+ content: {
659
+ player_id: SiegePlayerId;
660
+ assists: number;
661
+ };
662
+ } | {
663
+ game: "siege";
664
+ type: "player_side_changed";
665
+ creation_time: number;
666
+ content: {
667
+ player_id: SiegePlayerId;
668
+ side: "attacker" | "both" | "defender" | "invalid" | (string & {});
669
+ };
670
+ } | {
671
+ game: "siege";
672
+ type: "player_died";
673
+ creation_time: number;
674
+ content: {
675
+ player_id: SiegePlayerId;
676
+ instigator_player_id: SiegePlayerId;
677
+ headshot: boolean;
678
+ };
679
+ } | {
655
680
  game: "siege";
656
681
  type: "started_queuing";
657
682
  creation_time: number;
@@ -833,14 +858,6 @@ declare function module(): {
833
858
  player_id: SiegePlayerId;
834
859
  location_name: string;
835
860
  };
836
- } | {
837
- game: "siege";
838
- type: "player_side_changed";
839
- creation_time: number;
840
- content: {
841
- player_id: SiegePlayerId;
842
- side: "attacker" | "both" | "defender" | "invalid" | (string & {});
843
- };
844
861
  } | {
845
862
  game: "siege";
846
863
  type: "player_score_changed";
@@ -865,14 +882,6 @@ declare function module(): {
865
882
  player_id: SiegePlayerId;
866
883
  deaths: number;
867
884
  };
868
- } | {
869
- game: "siege";
870
- type: "player_assists_changed";
871
- creation_time: number;
872
- content: {
873
- player_id: SiegePlayerId;
874
- assists: number;
875
- };
876
885
  } | {
877
886
  game: "siege";
878
887
  type: "player_game_mode_actions_changed";
@@ -926,15 +935,6 @@ declare function module(): {
926
935
  player_id: SiegePlayerId;
927
936
  life_state: "dead" | "downed" | "low_health" | "normal" | "overhealed" | "respawning" | (string & {});
928
937
  };
929
- } | {
930
- game: "siege";
931
- type: "player_died";
932
- creation_time: number;
933
- content: {
934
- player_id: SiegePlayerId;
935
- instigator_player_id: SiegePlayerId;
936
- headshot: boolean;
937
- };
938
938
  } | {
939
939
  game: "siege";
940
940
  type: "player_downed";
@@ -2012,6 +2012,31 @@ declare const siegeEvents: import("arktype").Module<{
2012
2012
  };
2013
2013
  };
2014
2014
  event: {
2015
+ game: "siege";
2016
+ type: "player_assists_changed";
2017
+ creation_time: number;
2018
+ content: {
2019
+ player_id: SiegePlayerId;
2020
+ assists: number;
2021
+ };
2022
+ } | {
2023
+ game: "siege";
2024
+ type: "player_side_changed";
2025
+ creation_time: number;
2026
+ content: {
2027
+ player_id: SiegePlayerId;
2028
+ side: "attacker" | "both" | "defender" | "invalid" | (string & {});
2029
+ };
2030
+ } | {
2031
+ game: "siege";
2032
+ type: "player_died";
2033
+ creation_time: number;
2034
+ content: {
2035
+ player_id: SiegePlayerId;
2036
+ instigator_player_id: SiegePlayerId;
2037
+ headshot: boolean;
2038
+ };
2039
+ } | {
2015
2040
  game: "siege";
2016
2041
  type: "started_queuing";
2017
2042
  creation_time: number;
@@ -2193,14 +2218,6 @@ declare const siegeEvents: import("arktype").Module<{
2193
2218
  player_id: SiegePlayerId;
2194
2219
  location_name: string;
2195
2220
  };
2196
- } | {
2197
- game: "siege";
2198
- type: "player_side_changed";
2199
- creation_time: number;
2200
- content: {
2201
- player_id: SiegePlayerId;
2202
- side: "attacker" | "both" | "defender" | "invalid" | (string & {});
2203
- };
2204
2221
  } | {
2205
2222
  game: "siege";
2206
2223
  type: "player_score_changed";
@@ -2225,14 +2242,6 @@ declare const siegeEvents: import("arktype").Module<{
2225
2242
  player_id: SiegePlayerId;
2226
2243
  deaths: number;
2227
2244
  };
2228
- } | {
2229
- game: "siege";
2230
- type: "player_assists_changed";
2231
- creation_time: number;
2232
- content: {
2233
- player_id: SiegePlayerId;
2234
- assists: number;
2235
- };
2236
2245
  } | {
2237
2246
  game: "siege";
2238
2247
  type: "player_game_mode_actions_changed";
@@ -2286,15 +2295,6 @@ declare const siegeEvents: import("arktype").Module<{
2286
2295
  player_id: SiegePlayerId;
2287
2296
  life_state: "dead" | "downed" | "low_health" | "normal" | "overhealed" | "respawning" | (string & {});
2288
2297
  };
2289
- } | {
2290
- game: "siege";
2291
- type: "player_died";
2292
- creation_time: number;
2293
- content: {
2294
- player_id: SiegePlayerId;
2295
- instigator_player_id: SiegePlayerId;
2296
- headshot: boolean;
2297
- };
2298
2298
  } | {
2299
2299
  game: "siege";
2300
2300
  type: "player_downed";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@overlayed/app",
3
- "version": "1.6.0",
3
+ "version": "1.7.0",
4
4
  "description": "Overlayed app",
5
5
  "keywords": [
6
6
  "typescript"
@@ -85,8 +85,8 @@
85
85
  "@overlayed/events": "0.0.4",
86
86
  "@overlayed/native-managers": "0.0.4",
87
87
  "@overlayed/sand": "0.0.0",
88
- "@overlayed/siege": "0.0.5",
89
88
  "@overlayed/shared-node": "0.0.4",
89
+ "@overlayed/siege": "0.0.5",
90
90
  "@overlayed/universal": "0.0.0",
91
91
  "@overlayed/utils": "0.0.4",
92
92
  "@overlayed/utils-node": "0.0.4"