@overlayed/app 0.21.0 → 0.22.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.js CHANGED
@@ -2,4 +2,4 @@ import{createRequire as e}from"node:module";import{Type as t,type as n}from"arkt
2
2
  `:`
3
3
  `)+n,i=r+1,r=e.indexOf(`
4
4
  `,i)}while(r!==-1);return a+=e.slice(i),a}const{stdout:Le,stderr:Re}=Pe,w=Symbol(`GENERATOR`),T=Symbol(`STYLER`),E=Symbol(`IS_EMPTY`),ze=[`ansi`,`ansi`,`ansi256`,`ansi16m`],D=Object.create(null),Be=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw Error("The `level` option should be an integer from 0 to 3");let n=Le?Le.level:0;e.level=t.level===void 0?n:t.level},Ve=e=>{let t=(...e)=>e.join(` `);return Be(t,e),Object.setPrototypeOf(t,O.prototype),t};function O(e){return Ve(e)}Object.setPrototypeOf(O.prototype,Function.prototype);for(let[e,t]of Object.entries(b))D[e]={get(){let n=j(this,A(t.open,t.close,this[T]),this[E]);return Object.defineProperty(this,e,{value:n}),n}};D.visible={get(){let e=j(this,this[T],!0);return Object.defineProperty(this,`visible`,{value:e}),e}};const k=(e,t,n,...r)=>e===`rgb`?t===`ansi16m`?b[n].ansi16m(...r):t===`ansi256`?b[n].ansi256(b.rgbToAnsi256(...r)):b[n].ansi(b.rgbToAnsi(...r)):e===`hex`?k(`rgb`,t,n,...b.hexToRgb(...r)):b[n][e](...r);for(let e of[`rgb`,`hex`,`ansi256`]){D[e]={get(){let{level:t}=this;return function(...n){let r=A(k(e,ze[t],`color`,...n),b.color.close,this[T]);return j(this,r,this[E])}}};let t=`bg`+e[0].toUpperCase()+e.slice(1);D[t]={get(){let{level:t}=this;return function(...n){let r=A(k(e,ze[t],`bgColor`,...n),b.bgColor.close,this[T]);return j(this,r,this[E])}}}}const He=Object.defineProperties(()=>{},{...D,level:{enumerable:!0,get(){return this[w].level},set(e){this[w].level=e}}}),A=(e,t,n)=>{let r,i;return n===void 0?(r=e,i=t):(r=n.openAll+e,i=t+n.closeAll),{open:e,close:t,openAll:r,closeAll:i,parent:n}},j=(e,t,n)=>{let r=(...e)=>Ue(r,e.length===1?``+e[0]:e.join(` `));return Object.setPrototypeOf(r,He),r[w]=e,r[T]=t,r[E]=n,r},Ue=(e,t)=>{if(e.level<=0||!t)return e[E]?``:t;let n=e[T];if(n===void 0)return t;let{openAll:r,closeAll:i}=n;if(t.includes(`\x1B`))for(;n!==void 0;)t=Fe(t,n.close,n.open),n=n.parent;let a=t.indexOf(`
5
- `);return a!==-1&&(t=Ie(t,i,r,a)),r+t+i};Object.defineProperties(O.prototype,D);const We=O();O({level:Re?Re.level:0});var M=We,N=class{emitter;constructor(){this.emitter=r()}on(e,t){v(e).forEach(e=>{this.emitter.on(e,t)})}off(e,t){v(e).forEach(e=>{this.emitter.off(e,t)})}emit(e,t){v(e).forEach(e=>{this.emitter.emit(e,t)})}removeAllListeners(){this.emitter.all.clear()}},Ge=class{listeners;constructor(){this.listeners=new Map}on(e,t){v(e).forEach(e=>{let n=this.listeners.get(e)||new Set;n.add(t),this.listeners.set(e,n)})}off(e,t){v(e).forEach(e=>{let n=this.listeners.get(e);n&&n.delete(t)})}async emit(e,...t){let n=v(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 P(e,...t){return class extends e{static _instance;static getInstance(){return this._instance||(this._instance=new e(...t)),this._instance}static clearInstance(){this._instance=void 0}}}const F=P(class extends N{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 Ke=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){this.reportInvalidConfigFile(t.issues);return}this.data=this.onBeforeSave(e),this.save(e)}get(){return this.data?this.data:this.load()}getKey(e){return this.get()[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(){if(!this.fileExists(this.getFilePath())||!this.canReadWriteFile(this.getFilePath())){this.save(this._defaultValue);let e=this.onAfterLoad(this._defaultValue);return 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){if(!Object.prototype.hasOwnProperty.call(t,r))continue;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){F.getInstance().error(`Invalid config file`,`INVALID_CONFIG_FILE`,{issues:e.map(e=>e.message),filePath:this._path,data:this.data})}},qe=class e extends N{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(`log`,...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,r=n.toISOString().replace(`T`,` `).replace(/\.\d+Z$/,``)+`.${n.getMilliseconds().toString().padStart(3,`0`)}`,i=t.map(e=>typeof e==`object`?JSON.stringify(e,void 0,2):String(e)).join(` `);return{timestamp:r,level:e,message:i}}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=f(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.toISOString().split(`T`)[0]}createStream(){let e=f(this.logPath,this.getFileName(this.currentDate));return a(e,{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;t.setDate(t.getDate()-7),e.filter(e=>e.startsWith(this.baseFileName)&&e.endsWith(`.log`)).filter(e=>{let n=e.replace(`${this.baseFileName}-`,``).replace(`.log`,``);return new Date(n)<t}).forEach(e=>{try{l(f(this.logPath,e))}catch(t){console.error(`Failed to delete old log file ${e}:`,t)}})}write(t,...n){let{timestamp:r,message:i}=e.getMessageElements(t,...n),a=`[${r}] [${t}] ${i}\n`;this.stream.write(a,e=>{e?this.emit(`error`,e):this.emit(`write`,a)})}};const I=()=>p.join(process.env.APPDATA??``,`overlayed`),Je=()=>p.join(I(),`logs`),Ye=e=>p.join(I(),`apps`,e),Xe=e=>p.join(Ye(e),`logs`),Ze=()=>p.join(I(),`meta.json`);var Qe=class{fileLogger;path;appId;messageQueue=new Ce;fileName;_debug=!1;silent=!1;constructor(e){this.fileName=e}init(e,t=!1,n=!1){this.appId=e,this._debug=t,this.silent=n,this.path=Xe(e),this.fileLogger=new qe(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=`[${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:M.red,warn:M.yellow,debug:M.blue,log:M.white};if(this.silent&&!this._debug)return;let{timestamp:r,message:i}=qe.getMessageElements(e,...t),a=console[e],o=n[e];a(`${M.gray(r)} ${o(i)}`)}};const L=P(Qe,`overlayed.log`);var $e=class extends re{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 et(e,t){let{recursive:n}=tt(t);return oe(e)?n?nt(e).map(t=>[e,t]):le(e).map(t=>[e,t]):[]}function tt(e){return{recursive:e?.recursive??!0}}function nt(e){return le(e,{withFileTypes:!0}).flatMap(t=>{let n=p.join(e,t.name);return t.isDirectory()?nt(n):[n]})}function rt(e){return e}const{PipeEventServer:it,PipeEventClient:at,PipeEventBase:ot,ProcessMonitor:st,Process:ct,InjectionMethod:lt,AccessLevel:ut,HardwareInterface:dt}=e(import.meta.url)(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`),R=P(class extends N{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(),this.server=null)}init(){this.server=new it(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.server.on(`disconnected`,()=>{this._hasConnection=!1})}},`stats-cc`);var ft=class{logger;initialized=!1;constructor(e){this.logger=L.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1}},z=class extends N{logger;initialized=!1;constructor(e){super(),this.logger=L.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}},pt=class extends Ge{logger;initialized=!1;constructor(e){super(),this.logger=L.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}};const B=de.create({baseURL:`https://updater.stats.cc`,headers:{Accept:`application/json`,"Accept-Encoding":`gzip, deflate, br`}});let mt;function ht(e){mt=e}B.interceptors.request.use(e=>{let t=mt?.();return t?(e.headers??={},e.headers.Authorization=t,e):e});const V=de.create({baseURL:`https://api.overlayed.gg`,headers:{Accept:`application/json`,"Accept-Encoding":`gzip, deflate, br`}});V.interceptors.request.use(e=>(e.headers??={},e));function gt(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 _t(e){return e}function vt(e){return e?t=>(e(t),t):_t}const yt=vt();function bt(e){return V.get(`/v1/public/applications/${e}`)}function xt(e,t){return B.get(`/v1/native/${Ct(e)}/version.txt`,{params:{channel:t},responseType:`text`})}function St(e,t){return B.get(`/v1/native/${Ct(e)}/files`,{params:{channel:t},responseType:`arraybuffer`})}function Ct(e){return e===`01JXPFK6YQ3N00N2Y9JHFNG55D`||e===`01JZEBPGHT5M4Y6SGY4P7Q9EZT`?`siege-game-module`:e}function wt(){return V.get(`/v1/public/raven/config`)}function Tt(e,t){return V.get(`/v1/public/raven/games/${e}/builds/${t}`)}function Et(e,t){return V.post(`/v1/public/raven/games/${e}/builds/upload`,null,{params:t})}function Dt(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 Ot(e){let t=Date.now(),n=e.messages.map(e=>kt(t,e)),r=gt(n,250),i=Promise.all(r.map(async t=>V.post(`/v1/public/cortex/events`,{...e,messages:t})));return i.catch(e=>{let t=e?.response?.data||e?.message||e;console.error(`Failed to submit cortex events`,t)}),i}function kt(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 At(e){return e instanceof Error&&(e.name===`XiorError`||e.name===`XiorTimeoutError`)}function jt(e){return!!(e&&`kind`in e.data&&`message`in e.data)}let Mt;function Nt(e){Mt=e}const H=P(class extends z{UPDATE_CHECK_INTERVAL_MS=1e3*60*5;targetDir;updateInterval;constructor(){super(`NativeModuleManager`),this.targetDir=p.join(I(),`resources`),this.logger.log(`Target directory`,this.targetDir)}async initWithDlls(e){super.init(),await g.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),this.updateInterval=void 0),super.destroy()}async getCurrentVersion(e){try{let t=p.join(this.targetDir,e,`version.txt`);return this.logger.log(`Version Path`,t),await g.readFile(t,`utf-8`)}catch{return null}}getTargetPath(e){return p.join(this.targetDir,e)}getTargetVersionPath(e,t){return p.join(this.getTargetPath(e),t)}async checkForUpdates(e){let t=global.OVERLAYED.APP_BUILD_CHANNEL;if(this.logger.log(`Checking for updates`),!t){this.logger.error(`Invalid VITE_BUILD_CHANNEL`);return}await Mt?.();for(let n of e)try{let{data:e}=await xt(n,t),r=await this.getCurrentVersion(n);this.logger.log(`${n} > Update Check. current: ${r}, latest: ${e}`);let i=e!==r;this.logger.log(`${n} > Update found: ${r} -> ${e}`),await this.downloadAndExtractDll(n,e,t,i),this.logger.log(`${n} > Downloaded and extracted`),i&&(this.logger.log(`${n} > Cleaning up versions older than ${e}`),await this.cleanupOldVersions(n,e)),this.emit(`dllUpdated`,{identifier:n,version:e})}catch(e){this.logger.error(`${n} > Error checking/updating`,e)}}async downloadAndExtractDll(e,t,n,r){let{data:i}=await St(e,n),a=this.getTargetPath(e),o=this.getTargetVersionPath(e,t);await g.mkdir(o,{recursive:!0});let s=new _;await s.loadAsync(i);let c=Object.keys(s.files).map(async t=>{let n=s.files[t];if(n&&!n.dir){let i=p.join(o,t);if(!r)try{await g.access(i,g.constants.F_OK);return}catch{this.logger.warn(`${e} > File missing, re-downloading: ${i}`)}let a=await n.async(`nodebuffer`);await g.writeFile(i,a)}});await Promise.all(c);let l=p.join(a,`version.txt`);this.logger.log(`Saving version file`,l),await g.writeFile(l,t)}async cleanupOldVersions(e,t){let n=p.join(this.targetDir,e),r=await g.readdir(n,{withFileTypes:!0});for(let e of r)e.isDirectory()&&e.name!==t&&await g.rm(p.join(n,e.name),{recursive:!0,force:!0})}}),U=P(class extends z{REFETCH_INTERVAL=1e3*60*5;FAILED_REFETCH_INTERVAL=1e3*30;_ravenConfig;_executableToGameMap=new Map;_executablesArray=[];_refetchIntervalHandler=null;_failedRefetchTimeoutHandler=null;constructor(){super(`RavenManager`)}init(){super.init(),this.fetchRavenConfig(),this._refetchIntervalHandler=setInterval(()=>{this._failedRefetchTimeoutHandler&&(clearTimeout(this._failedRefetchTimeoutHandler),this._failedRefetchTimeoutHandler=null),this.fetchRavenConfig()},this.REFETCH_INTERVAL)}getExecutableData(e){return this._executableToGameMap.get(e.toLowerCase())??null}get executables(){return this._executablesArray}get executablesMap(){return this._executableToGameMap}destroy(){this._refetchIntervalHandler&&clearInterval(this._refetchIntervalHandler),this._failedRefetchTimeoutHandler&&clearTimeout(this._failedRefetchTimeoutHandler),H.getInstance().destroy(),super.destroy()}async fetchRavenConfig(){try{this._ravenConfig={games:(await wt()).data.games},this.resetState();let e=new Set;for(let t of this._ravenConfig.games){for(let e of t.executables){let n=e.toLowerCase();this._executableToGameMap.set(n,t),this._executablesArray.push(n)}t.modules.forEach(t=>e.add(t))}await H.getInstance().initWithDlls(Array.from(e)),this.logger.log(`Raven updated, monitoring ${this._executableToGameMap.size} executables`),this.emit(`executablesUpdated`,{executables:this.executables,map:this._executableToGameMap})}catch(e){this.logger.error(`Failed to fetch Raven config`,e),this._failedRefetchTimeoutHandler=setTimeout(()=>this.fetchRavenConfig(),this.FAILED_REFETCH_INTERVAL)}}resetState(){this._executableToGameMap.clear(),this._executablesArray=[]}}),{PipeEventServer:Pt,PipeEventClient:Ft,PipeEventBase:It,ProcessMonitor:Lt,Process:W,InjectionMethod:Rt,AccessLevel:zt,HardwareInterface:Bt}=e(import.meta.url)(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`),G=P(class extends z{_processMonitor;_processes=new Map;boundOnRavenManagerExecutablesUpdated=this.onRavenManagerExecutablesUpdated.bind(this);constructor(){super(`ProcessManager`),this._processMonitor=new Lt}get hasAnyActiveProcesses(){return this.activeProcesses.length>0}get activeProcesses(){return Array.from(this._processes.values()).flat().filter(e=>!e.destroyedAt)}init(){super.init(),U.getInstance().on(`executablesUpdated`,this.boundOnRavenManagerExecutablesUpdated),this._processMonitor.on(`create`,e=>{this.logger.log(`Process created`,e),this.addProcess(e),this.logger.log(`Active Process Count: ${this._processes.size}`),this.emit(`create`,{process:e})}),this._processMonitor.on(`destroy`,e=>{this.logger.log(`Process destroyed`,e),this.deleteProcess(e),this.logger.log(`Active Process Count: ${this._processes.size}`),this.emit(`destroy`,{process:e})})}destroy(){U.getInstance().off(`executablesUpdated`,this.boundOnRavenManagerExecutablesUpdated),this._processes.clear(),this._processMonitor.removeAllListeners(),super.destroy()}isProcessRunning(e){return this._processes.get(e)?.some(e=>!e.destroyedAt)??!1}onRavenManagerExecutablesUpdated(e){this.logger.log(`Monitoring ${e.executables.length} processes`),e.executables.forEach(e=>{this._processMonitor.registerProcess(e)})}addProcess(e){if(!e.name)return;let t=this._processes.get(e.name);if(!t){this._processes.set(e.name,[e]);return}this._processes.set(e.name,t.concat(e))}deleteProcess(e){if(!e.name)return;let t=this._processes.get(e.name)?.filter(t=>t.id!==e.id)??[];t.length===0?this._processes.delete(e.name):this._processes.set(e.name,t)}}),{RenderInterface:Vt,renderHookPath:Ht}=e(import.meta.url)(`@overlayed/app/dist/render-interface/build/overlayed_render_interface_x64.node`);var Ut=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 K=P(class{interfaces={};constructor(){}createInterface(e){return this.interfaces[e]||(this.interfaces[e]=new Ut(new Vt(e,{access:1}))),this.interfaces[e]}getInterface(e){return this.interfaces[e]?this.interfaces[e]:this.createInterface(e)}}),q=P(class{options;eventQueue;meta=null;constructor(e){this.options=this.resolveOptions(e),this.eventQueue=new Ce,this.setupFlushInterval()}track(e,t){this.eventQueue.add({type:e,properties:t,created_at:new Date})}flush(){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{Ot({...this.meta,messages:e})}catch{}return e}setupFlushInterval(){setInterval(()=>{this.flush()},this.options.batchIntervalSeconds*1e3)}resolveOptions(e){return{batchIntervalSeconds:e?.batchIntervalSeconds??15}}}),Wt=e(import.meta.url).resolve(`@overlayed/app/dist/render-interface/build/overlayed_render_hook_x64.dll`),J=P(class extends pt{boundOnProcessCreate=this.onProcessCreate.bind(this);boundOnProcessDestroy=this.onProcessDestroy.bind(this);subscribedGames=new Set;_activeReadyRavenGames=new Set;get isInGame(){return this._activeReadyRavenGames.size>0}constructor(){super(`GameLaunchManager`)}setSubscribedGames(e){this.subscribedGames=new Set(e)}init(){super.init(),K.getInstance().createInterface(`OGG_SIEGE`),G.getInstance().on(`create`,this.boundOnProcessCreate),G.getInstance().on(`destroy`,this.boundOnProcessDestroy)}destroy(){G.getInstance().off(`create`,this.boundOnProcessCreate),G.getInstance().off(`destroy`,this.boundOnProcessDestroy),super.destroy()}async onProcessCreate({process:e}){let t=this.getRavenGame(e);if(!t)return;if(this.subscribedGames.size===0){this.logger.warn(`No subscribed games, skipping`);return}if(q.getInstance().track(`game_launch`,{game:t.identifier}),!this.subscribedGames.has(t.identifier)&&!this.subscribedGames.has(`*`))return;let n=new AbortController;if(await this.emit(`gameLaunch`,{game:t.identifier,reject:()=>n.abort()}),n.signal.aborted)return;if(this.logger.log(`Game Launched`,t),this.logger.log(`Process is elevated: `,e.isElevated),this.logger.log(`Current process is elevated: `,W.currentProcess.isElevated),e.isElevated&&!W.currentProcess.isElevated){F.getInstance().fatal(`Game is elevated but the App is not`,`ELEVATION_MISMATCH`,{appElevated:!!W.currentProcess.isElevated,gameElevated:!!e.isElevated}),this.logger.log(`Game elevated but App is not`,{appElevated:W.currentProcess.isElevated,gameElevated:e.isElevated});return}let r=this.copyDll(Wt);if(r)try{await e.injectDll(r),this.logger.log(`Render Interface Injection Successful`,r)}catch(e){this.logger.error(`Render Interface Injection Failed`,e),this.logger.error(`Render Interface Injection Failed`,{renderInterfacePath:r})}let i=t?.modules.map(async t=>{let n=await H.getInstance().getCurrentVersion(t);if(!n)return this.logger.error(`No version found for DLL`,{identifier:t}),Promise.resolve();let r=H.getInstance().getTargetVersionPath(t,n);this.logger.log(`DLL Path`,r);let i=await this.getDllFiles(r);return this.logger.log(`DLL Files`,i),Promise.all(i.map(async t=>{let n=p.basename(t),i=p.join(r,n);if(!i)return Promise.resolve();this.logger.log(`Injecting: `,i);try{return e.injectDll(i).then(()=>{this.logger.log(`Injection Successful`,i)}).catch(e=>{this.logger.error(`Injection Failed [1]`,{targetPath:i},e)})}catch(e){return this.logger.error(`Injection Failed [2]`,{targetPath:i},e),Promise.reject(e)}}))});await Promise.allSettled(i),this._activeReadyRavenGames.add(t.identifier),this.logger.debug(`Active ready raven games`,Array.from(this._activeReadyRavenGames).join(`, `)),this.emit(`gameReadyInternal`,{ravenGame:t,process:e}),this.emit(`gameReady`,{game:t.identifier}),q.getInstance().track(`game_ready`,{game:t.identifier})}copyDll(e){let t=p.basename(e),n=ee(e),r=p.join(I(),`resources`),i=p.join(r,t);this.logger.info(`Copying`,n,`to`,i);try{oe(r)||se(r,{recursive:!0});let e=ce(n);ue(i,e),ie(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 getDllFiles(e){try{return(await g.readdir(e)).filter(e=>e.endsWith(`.dll`)).map(t=>p.join(e,t))}catch(t){return this.logger.error(`Failed to read DLL directory`,t),this.logger.error(`Failed to read DLL directory`,{dllPath:e}),[]}}onProcessDestroy({process:e}){let t=this.getRavenGame(e);t&&(this._activeReadyRavenGames.delete(t.identifier),this.logger.debug(`Active ready raven games`,Array.from(this._activeReadyRavenGames).join(`, `)),this.emit(`gameCloseInternal`,{ravenGame:t,process:e}),this.emit(`gameClose`,{game:t.identifier}),q.getInstance().track(`game_close`,{game:t.identifier}))}getRavenGame(e){if(!e.name)return;let t=U.getInstance().getExecutableData(e.name);if(!t){this.logger.error(`No raven game found for process`,{process:e});return}return t}}),Gt=P(class extends ft{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[{ravenGame:t,process:n}]=e;if(!n.path||!n.name){this.logger.error(`Process path or name not found, could not check for build hash`,void 0,n);return}let r=ce(n.path),i=fe(`sha256`).update(r).digest(`hex`);this.logger.log(`Process Path`,n.path),this.logger.log(`Process Name`,n.name),this.logger.log(`Build Hash`,i);let a=!1;try{a=(await Tt(t.identifier,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 _;o.file(n.name,r);let s=await o.generateAsync({type:`blob`});try{this.logger.log(`Uploading build (size: `,s.size,` bytes)`);let e=new $e(s,{chunkSizeMb:25,maxConcurrent:1}),n=await Et(t.identifier,{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 Dt(t.identifier,{chunk:e,build_hash:i,chunk_index:r,upload_token:n.data.upload_token})}),this.logger.log(`Build uploaded successfully`)}catch(e){At(e)?jt(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)}}});function Kt(e=[]){return p.normalize(p.join(Ye(global.OVERLAYED.APPLICATION_ID),...e))}const qt=n({game:`string`,type:`string`,creation_time:`number`}),Jt=new Ke({path:Ze(),schema:n({userId:`string | undefined`}),default:{userId:void 0}});function Yt(){let e=Jt.get().userId;if(e)return e;let t=Xt();return Jt.set({userId:t}),t}function Xt(){try{return Bt.generateUniqueIdentifier()}catch{return crypto.randomUUID()}}function Y(e,t){return`${e}:${t}`}function Zt(e,t,n){return e.reduce((e,r)=>{let i=r.key;return e[i]={on(e,n){let r=Y(i,e),a=t.get(r)??new Set;a.add(n),t.set(r,a)},onAny(e){let n=Y(i,`*`),r=t.get(n)??new Set;r.add(e),t.set(n,r)},off(e,n){let r=Y(i,e),a=t.get(r);a&&(a.delete(n),a.size===0&&t.delete(r))},offAny(e){let n=Y(i,`*`),r=t.get(n);r&&(r.delete(e),r.size===0&&t.delete(n))},readyForGameEvents:()=>{n.emit(`flushEvents`,i)}},e},{})}function Qt(){let e=F.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]})}}}}var X=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}(X||{});const $t=new Map([[X.LeftButton,`LeftButton`],[X.RightButton,`RightButton`],[X.Cancel,`Cancel`],[X.MiddleButton,`MiddleButton`],[X.ExtraButton1,`ExtraButton1`],[X.ExtraButton2,`ExtraButton2`],[X.Back,`Backspace`],[X.Tab,`Tab`],[X.Clear,`Clear`],[X.Return,`Enter`],[X.Shift,`ShiftLeft`],[X.Control,`ControlLeft`],[X.Menu,`AltLeft`],[X.Pause,`Pause`],[X.CapsLock,`CapsLock`],[X.Kana,`KanaMode`],[X.Junja,`JunjaMode`],[X.Final,`Finalize`],[X.Hanja,`HanjaMode`],[X.Escape,`Escape`],[X.Convert,`Convert`],[X.NonConvert,`NonConvert`],[X.Accept,`Accept`],[X.ModeChange,`ModeChange`],[X.Space,`Space`],[X.Prior,`PageUp`],[X.Next,`PageDown`],[X.End,`End`],[X.Home,`Home`],[X.Left,`ArrowLeft`],[X.Up,`ArrowUp`],[X.Right,`ArrowRight`],[X.Down,`ArrowDown`],[X.Select,`Select`],[X.Print,`PrintScreen`],[X.Execute,`Execute`],[X.Snapshot,`Snapshot`],[X.Insert,`Insert`],[X.Delete,`Delete`],[X.Help,`Help`],[X.N0,`Digit0`],[X.N1,`Digit1`],[X.N2,`Digit2`],[X.N3,`Digit3`],[X.N4,`Digit4`],[X.N5,`Digit5`],[X.N6,`Digit6`],[X.N7,`Digit7`],[X.N8,`Digit8`],[X.N9,`Digit9`],[X.A,`KeyA`],[X.B,`KeyB`],[X.C,`KeyC`],[X.D,`KeyD`],[X.E,`KeyE`],[X.F,`KeyF`],[X.G,`KeyG`],[X.H,`KeyH`],[X.I,`KeyI`],[X.J,`KeyJ`],[X.K,`KeyK`],[X.L,`KeyL`],[X.M,`KeyM`],[X.N,`KeyN`],[X.O,`KeyO`],[X.P,`KeyP`],[X.Q,`KeyQ`],[X.R,`KeyR`],[X.S,`KeyS`],[X.T,`KeyT`],[X.U,`KeyU`],[X.V,`KeyV`],[X.W,`KeyW`],[X.X,`KeyX`],[X.Y,`KeyY`],[X.Z,`KeyZ`],[X.LeftWindows,`MetaLeft`],[X.RightWindows,`MetaRight`],[X.Application,`ContextMenu`],[X.Sleep,`Sleep`],[X.Numpad0,`Numpad0`],[X.Numpad1,`Numpad1`],[X.Numpad2,`Numpad2`],[X.Numpad3,`Numpad3`],[X.Numpad4,`Numpad4`],[X.Numpad5,`Numpad5`],[X.Numpad6,`Numpad6`],[X.Numpad7,`Numpad7`],[X.Numpad8,`Numpad8`],[X.Numpad9,`Numpad9`],[X.Multiply,`NumpadMultiply`],[X.Add,`NumpadAdd`],[X.Separator,`NumpadSeparator`],[X.Subtract,`NumpadSubtract`],[X.Decimal,`NumpadDecimal`],[X.Divide,`NumpadDivide`],[X.F1,`F1`],[X.F2,`F2`],[X.F3,`F3`],[X.F4,`F4`],[X.F5,`F5`],[X.F6,`F6`],[X.F7,`F7`],[X.F8,`F8`],[X.F9,`F9`],[X.F10,`F10`],[X.F11,`F11`],[X.F12,`F12`],[X.F13,`F13`],[X.F14,`F14`],[X.F15,`F15`],[X.F16,`F16`],[X.F17,`F17`],[X.F18,`F18`],[X.F19,`F19`],[X.F20,`F20`],[X.F21,`F21`],[X.F22,`F22`],[X.F23,`F23`],[X.F24,`F24`],[X.NumLock,`NumLock`],[X.ScrollLock,`ScrollLock`],[X.NEC_Equal,`NEC_Equal`],[X.Fujitsu_Masshou,`Fujitsu_Masshou`],[X.Fujitsu_Touroku,`Fujitsu_Touroku`],[X.Fujitsu_Loya,`Fujitsu_Loya`],[X.Fujitsu_Roya,`Fujitsu_Roya`],[X.LeftShift,`ShiftLeft`],[X.RightShift,`ShiftRight`],[X.LeftControl,`ControlLeft`],[X.RightControl,`ControlRight`],[X.LeftMenu,`AltLeft`],[X.RightMenu,`AltRight`],[X.BrowserBack,`BrowserBack`],[X.BrowserForward,`BrowserForward`],[X.BrowserRefresh,`BrowserRefresh`],[X.BrowserStop,`BrowserStop`],[X.BrowserSearch,`BrowserSearch`],[X.BrowserFavorites,`BrowserFavorites`],[X.BrowserHome,`BrowserHome`],[X.VolumeMute,`VolumeMute`],[X.VolumeDown,`VolumeDown`],[X.VolumeUp,`VolumeUp`],[X.MediaNextTrack,`MediaTrackNext`],[X.MediaPrevTrack,`MediaTrackPrevious`],[X.MediaStop,`MediaStop`],[X.MediaPlayPause,`MediaPlayPause`],[X.LaunchMail,`LaunchMail`],[X.LaunchMediaSelect,`LaunchMediaSelect`],[X.LaunchApplication1,`LaunchApplication1`],[X.LaunchApplication2,`LaunchApplication2`],[X.OEM1,`OEM_1`],[X.OEMPlus,`Equal`],[X.OEMComma,`Comma`],[X.OEMMinus,`Minus`],[X.OEMPeriod,`Period`],[X.OEM2,`Slash`],[X.OEM3,`Backquote`],[X.OEM4,`BracketLeft`],[X.OEM5,`Backslash`],[X.OEM6,`BracketRight`],[X.OEM7,`Quote`],[X.OEM8,`IntlRo`],[X.OEMAX,`OEM_AX`],[X.OEM102,`IntlBackslash`],[X.ICOHelp,`ICO_HELP`],[X.ICO00,`ICO_00`],[X.ProcessKey,`Process`],[X.ICOClear,`ICO_CLEAR`],[X.Packet,`Packet`],[X.OEMReset,`OEM_Reset`],[X.OEMJump,`OEM_Jump`],[X.OEMPA1,`OEM_PA1`],[X.OEMPA2,`OEM_PA2`],[X.OEMPA3,`OEM_PA3`],[X.OEMWSCtrl,`OEM_WS_Ctrl`],[X.OEMCUSel,`OEM_CU_Sel`],[X.OEMATTN,`OEM_ATTN`],[X.OEMFinish,`OEM_Finish`],[X.OEMCopy,`OEM_Copy`],[X.OEMAuto,`OEM_Auto`],[X.OEMENLW,`OEM_ENLW`],[X.OEMBackTab,`BackTab`],[X.ATTN,`ATTN`],[X.CRSel,`CRSel`],[X.EXSel,`EXSel`],[X.EREOF,`EREOF`],[X.Play,`MediaPlay`],[X.Zoom,`Zoom`],[X.Noname,`Noname`],[X.PA1,`PA1`],[X.OEMClear,`OEM_Clear`]]),en=new Map($t.entries().map(([e,t])=>[t,e])),tn=n({"[string]":{keys:`string[]`,mode:n(`'toggle' | 'hold'`).pipe(e=>e??`toggle`)}});var nn=class extends z{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 Ke({path:Kt([`keybinds.json`]),schema:tn,default:e})}init(){super.init();let e=K.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)||{};n.toggle=t,this.preferencesKeybindToCallbacks.set(e,n)}async onKeybindDown(e,t){let n=this.preferencesKeybindToCallbacks.get(e)||{};n.down=t,this.preferencesKeybindToCallbacks.set(e,n)}async onKeybindUp(e,t){let n=this.preferencesKeybindToCallbacks.get(e)||{};n.up=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=K.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=$t.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=$t.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)continue;let r=e[t];this.activeKeybinds.has(t)&&r.keys.some(e=>!this.pressedKeys.has(e))&&(this.activeKeybinds.delete(t),n.up(),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=>en.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=>en.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&&!this.triggeredToggleKeybinds.has(n)){let r=t.toggle();this.triggeredToggleKeybinds.add(n),this.logger.log(r?`Keybind pressed rejected: ${r}`:`Keybind pressed accepted`,this.getKeybindToString(e))}if(r===`hold`&&t.down&&!this.activeKeybinds.has(n)){let r=t.down();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 rn(e){let t=new nn(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(),pe.on(`quit`,()=>{t.destroy()}),r}function Z(){return K.getInstance().getInterface(`OGG_SIEGE`)}function an(){let e=J.getInstance(),t=F.getInstance(),n=q.getInstance();n.meta=on(),e.on([`gameReady`,`gameClose`],()=>{n.meta||(n.meta=on()),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 on(){return{app_id:global.OVERLAYED.APPLICATION_ID,user_id:Yt(),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,session_id:global.OVERLAYED.sessionId,in_game:!1}}function sn(){function e(e,t){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})}),q.getInstance().track(`window_created`,{url:e.webContents.getURL(),in_game:t}),e}return{createWindow:t=>e(new global.OVERLAYED.electron.BrowserWindow(t),!1),createInGameWindow:t=>e(Z().instance.newWindowInternal(global.OVERLAYED.electron.BrowserWindow,t),!0),on:(e,t)=>Z().instance.on(e,t),off:(e,t)=>Z().instance.off(e,t),once:(e,t)=>Z().instance.once(e,t),addListener:(e,t)=>Z().instance.addListener(e,t),removeListener:(e,t)=>Z().instance.removeListener(e,t),removeAllListeners:()=>Z().instance.removeAllListeners(),prependListener:(e,t)=>Z().instance.prependListener(e,t),prependOnceListener:(e,t)=>Z().instance.prependOnceListener(e,t),getActiveGameInfo:()=>{let e=Z(),t=R.getInstance();return{resolution:e.resolution,isConnected:t.hasConnection}}}}const cn=P(class extends ft{renderInterface;globalCursorOverrideCount=new Set;globalMouseBlockCount=new Set;globalKeyboardBlockCount=new Set;keyInputBlocks={};constructor(e){super(`OverridesManager`),this.renderInterface=K.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 ln(){return{scope:e=>cn.getInstance().scope(e),raw:{setGlobalMouseBlock:e=>Z().instance.setGlobalMouseBlock(e),setGlobalKeyboardBlock:e=>Z().instance.setGlobalKeyboardBlock(e),setGlobalCursorOverride:e=>Z().instance.setGlobalCursorOverride(e),setKeyInputBlock:(e,t)=>Z().instance.setKeyInputBlock(e,t),getGlobalMouseBlock:()=>Z().instance.getGlobalMouseBlock(),getGlobalKeyboardBlock:()=>Z().instance.getGlobalKeyboardBlock(),getGlobalCursorOverride:()=>Z().instance.getGlobalCursorOverride(),getKeyInputBlock:e=>Z().instance.getKeyInputBlock(e)}}}function un(){return{track:(e,t)=>{q.getInstance().track(`custom__${String(e)}`,t)}}}var dn=Se(be(((exports,t)=>{var n=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),r=n((e,t)=>{var n=new Set([`mouseDown`,`mouseUp`,`pointerDown`,`pointerUp`]),r=new WeakSet;function i(e,t,{allowHosts:i}={}){let{shell:a}=t;if(r.has(e))return;r.add(e);let o=e.webContents;function s(e){return!!(!c(e)||i?.includes(e.host))}function c(e){return new URL(o.getURL()).origin!==e.origin}let l=0;function u(){l=Date.now()}function d(){let e=Date.now()-l,t=e<150;return t||console.warn(`was not recently active`,e),t}if(process.platform===`win32`)for(let t of Object.values({KEYDOWN:256,LBUTTONUP:514,MBUTTONUP:520,RBUTTONUP:517,XBUTTONUP:524,TOUCH:576}))e.hookWindowMessage(t,u);o.on(`input-event`,(e,t)=>{n.has(t.type)&&u()}),o.on(`will-navigate`,(e,t)=>{let n=e.url||t;if(console.log(`will-navigate`,n),!n)return;let r=new URL(n);if(!s(r)){if(!d()){console.log(`blocked navigation`,n),e.preventDefault();return}c(r)&&(console.log(`external navigation`,n),e.preventDefault(),a.openExternal(n))}}),o.session.on(`will-download`,(e,t)=>{let n=t.getURL();/^blob:/.test(n)||e.preventDefault()}),o.setWindowOpenHandler(e=>{console.log(`window-open`,e.url);let{url:t}=e,n=new URL(t);if(!s(n))return d()?(c(n)&&a.openExternal(e.url),{action:`deny`}):(console.log(`blocked navigation`,t),{action:`deny`})})}t.exports=i}),i=n((e,t)=>{var n=new Set([`Mozilla`,`AppleWebKit`,`Chrome`,`Safari`,`Gecko`,`Firefox`,`OPR`,`Edg`,`Version`,`Mobile`,`curl`,`PostmanRuntime`]);async function r(e,t,r){let{webContents:i}=e,a=await i.executeJavaScript(`navigator.userAgent`);a=a.match(/[^\/]+\/[^\s]+( \([^\)]+\))?/g).map(e=>e.trim()).filter(e=>{let[t]=e.split(`/`,1);return n.has(t)}).join(` `),i.setUserAgent(a),t.app.userAgentFallback=a}t.exports=r}),a=r(),o=i();function s(e,t,n={}){a(e,t,n.linkHandler),o(e,t,n.userAgent)}t.exports={setupRevUtils:s,setupLinkHandler:a,setUserAgent:o}}))(),1);function fn(){return{registerWindow:e=>{(0,dn.setupRevUtils)(e,global.OVERLAYED.electron)}}}function pn(e){let t=Xe(global.OVERLAYED.APPLICATION_ID),n=et(t,{recursive:!0}),r=Je(),i=et(r,{recursive:!0});L.getInstance().info(`Logs path: `,t),L.getInstance().info(`Overlayed logs path: `,r);let a=new _;return[...n,...i].forEach(([e,t])=>{L.getInstance().info(`Zipping: `,t);let n=ae(t),r=m(t);a.file(r,n,{compression:`DEFLATE`})}),Object.entries(e?.additionalFiles??{}).forEach(([e,t])=>{L.getInstance().info(`Zipping extra file: `,e),a.file(e,t,{compression:`DEFLATE`})}),a}async function mn(e,t){let n={...e,version:`${global.OVERLAYED.APP_VERSION}@${global.OVERLAYED.APP_BUILD_CHANNEL}`,log_zip:`data:application/zip;base64,${t}`};await fetch(`https://api.stats.cc/v1/overlay/contact`,{method:`POST`,body:JSON.stringify(n),redirect:`follow`,headers:{"Content-Type":`application/json`}})}function hn(e){let t=new Qe(`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),submitBugReport:async(e,t)=>{q.getInstance().track(`bug_report_submitted`,{version:e.version,category:e.category});let n=await pn(t).generateAsync({type:`base64`});await mn(e,n)}}}const gn=1e3;function _n(e,t,r,i,a){let o=R.getInstance();function s(e,t){let n=r.get(t);if(!n)r.set(t,[e]);else{if(n.length>=gn){F.getInstance().warn(`Event buffer full, removing oldest event`,`EVENT_BUFFER_FULL`,{summary:`Event buffer overflow for module ${t}. Buffer size: ${n.length}, max: ${gn}`});return}n.push(e)}}function c(r){let i=qt(r);if(i instanceof n.errors){q.getInstance().track(`invalid_game_event`,{}),F.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:i.summary});return}let o=e.modules.find(e=>e.key===i.game);if(!o)return;let c=o.events.event,l=c(r);if(l instanceof n.errors){if(`type`in l.byPath)return;q.getInstance().track(`invalid_game_event`,{game:i.game,type:i.type}),F.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:l.summary});return}if(!a[o.key]){s(l,o.key);return}if(l.type===`unsupported_game_version`){let{content:e}=l;q.getInstance().track(`unsupported_game_version`,{game:l.game,hash:e?.hash,version:e?.version})}let u=Y(o.key,l.type),d=Y(o.key,`*`),f=t.get(u),p=t.get(d),m=[...Array.from(f??[]),...Array.from(p??[])];m.length!==0&&m.forEach(e=>{e(l)})}return i.on(`flushEvents`,e=>{if(a[e])return;a[e]=!0;let t=r.get(e);t&&(L.getInstance().info(`Flushing ${t.length} events for module ${e}`),t.forEach(e=>c(e)),r.delete(e))}),o.on(`data`,e=>e.forEach(c)),o.on(`error`,e=>{F.getInstance().error(`Pipe server error`,`PIPE_SERVER_ERROR`,{error:e})}),o}let Q=!1,vn={},$,yn=new N;function bn(e){let{init:t=!0,debug:n=!1,silent:r=!0}=e;if(xn(e),L.getInstance().init(e.applicationId,n,r),Q)return $;function i(){if(Q)return;an();let t=new Map,n=new Map,r=Zt(e.modules,t,yn),a=Qt(),o=rn(e.keybinds),s=sn(),c=ln(),l=fn(),u=un(),d=hn(e);Sn(e),_n(e,t,n,yn,vn),Q=!0,$={...r,...a,ads:l,keybinds:o,windows:s,input:c,cortex:u,hasAnyActiveProcesses:()=>G.getInstance().hasAnyActiveProcesses,init:i,log:d,initialized:Q}}return t?(i(),$):new Proxy({init:i},{get:(e,t)=>{if(t!==`init`&&!Q)throw Error(`overlayed was called before initialized: ${t}`);return t===`init`?e[t]:$[t]}})}global.OVERLAYED=new Proxy({},{get:()=>{throw Error(`function overlayed was not called`)}});function xn(e){global.OVERLAYED={APPLICATION_ID:yt(e.applicationId),APP_BUILD_CHANNEL:e.channel??`alpha`,APP_VERSION:e.version??`0.0.0`,PACKAGE_VERSION:`0.21.0`,FRONTEND_VERSION:`0.0.0`,sessionId:crypto.randomUUID(),electron:e.electron}}function Sn(e){let t=e.universal?[`*`]:e.modules.map(e=>e.key);J.getInstance().setSubscribedGames(t),Gt.getInstance().init(),J.getInstance().init(),G.getInstance().init(),U.getInstance().init();async function n(){let e=bt(global.OVERLAYED.APPLICATION_ID).then(e=>e.data),t=Yt();L.getInstance().log(`userId`,t);let n={...await e,userId:t};return L.getInstance().log(`appInfo`,n),n}let r;global.OVERLAYED.electron.ipcMain.handle(`getAppInfo`,async()=>(r=r??n(),r)),q.getInstance().track(`start`,{}),pe.on(`quit`,()=>{q.getInstance().track(`electron_quit`,{}),Cn()}),process.on(`exit`,()=>{q.getInstance().track(`exit`,{}),Cn()})}async function Cn(){await q.getInstance().flush(),U.getInstance().destroy(),J.getInstance().destroy(),Gt.getInstance().destroy(),G.getInstance().destroy(),K.getInstance().getInterface(`OGG_SIEGE`).destroy(),R.getInstance().destroy(),F.getInstance().destroy()}export{rt as defineConfig,bn as overlayed,Nt as setFetchLatestTokenCallback,ht as setUpdaterTokenResolver};
5
+ `);return a!==-1&&(t=Ie(t,i,r,a)),r+t+i};Object.defineProperties(O.prototype,D);const We=O();O({level:Re?Re.level:0});var M=We,N=class{emitter;constructor(){this.emitter=r()}on(e,t){v(e).forEach(e=>{this.emitter.on(e,t)})}off(e,t){v(e).forEach(e=>{this.emitter.off(e,t)})}emit(e,t){v(e).forEach(e=>{this.emitter.emit(e,t)})}removeAllListeners(){this.emitter.all.clear()}},Ge=class{listeners;constructor(){this.listeners=new Map}on(e,t){v(e).forEach(e=>{let n=this.listeners.get(e)||new Set;n.add(t),this.listeners.set(e,n)})}off(e,t){v(e).forEach(e=>{let n=this.listeners.get(e);n&&n.delete(t)})}async emit(e,...t){let n=v(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 P(e,...t){return class extends e{static _instance;static getInstance(){return this._instance||(this._instance=new e(...t)),this._instance}static clearInstance(){this._instance=void 0}}}const F=P(class extends N{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 Ke=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){this.reportInvalidConfigFile(t.issues);return}this.data=this.onBeforeSave(e),this.save(e)}get(){return this.data?this.data:this.load()}getKey(e){return this.get()[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(){if(!this.fileExists(this.getFilePath())||!this.canReadWriteFile(this.getFilePath())){this.save(this._defaultValue);let e=this.onAfterLoad(this._defaultValue);return 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){if(!Object.prototype.hasOwnProperty.call(t,r))continue;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){F.getInstance().error(`Invalid config file`,`INVALID_CONFIG_FILE`,{issues:e.map(e=>e.message),filePath:this._path,data:this.data})}},qe=class e extends N{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(`log`,...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,r=n.toISOString().replace(`T`,` `).replace(/\.\d+Z$/,``)+`.${n.getMilliseconds().toString().padStart(3,`0`)}`,i=t.map(e=>typeof e==`object`?JSON.stringify(e,void 0,2):String(e)).join(` `);return{timestamp:r,level:e,message:i}}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=f(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.toISOString().split(`T`)[0]}createStream(){let e=f(this.logPath,this.getFileName(this.currentDate));return a(e,{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;t.setDate(t.getDate()-7),e.filter(e=>e.startsWith(this.baseFileName)&&e.endsWith(`.log`)).filter(e=>{let n=e.replace(`${this.baseFileName}-`,``).replace(`.log`,``);return new Date(n)<t}).forEach(e=>{try{l(f(this.logPath,e))}catch(t){console.error(`Failed to delete old log file ${e}:`,t)}})}write(t,...n){let{timestamp:r,message:i}=e.getMessageElements(t,...n),a=`[${r}] [${t}] ${i}\n`;this.stream.write(a,e=>{e?this.emit(`error`,e):this.emit(`write`,a)})}};const I=()=>p.join(process.env.APPDATA??``,`overlayed`),Je=()=>p.join(I(),`logs`),Ye=e=>p.join(I(),`apps`,e),Xe=e=>p.join(Ye(e),`logs`),Ze=()=>p.join(I(),`meta.json`);var Qe=class{fileLogger;path;appId;messageQueue=new Ce;fileName;_debug=!1;silent=!1;constructor(e){this.fileName=e}init(e,t=!1,n=!1){this.appId=e,this._debug=t,this.silent=n,this.path=Xe(e),this.fileLogger=new qe(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=`[${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:M.red,warn:M.yellow,debug:M.blue,log:M.white};if(this.silent&&!this._debug)return;let{timestamp:r,message:i}=qe.getMessageElements(e,...t),a=console[e],o=n[e];a(`${M.gray(r)} ${o(i)}`)}};const L=P(Qe,`overlayed.log`);var $e=class extends re{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 et(e,t){let{recursive:n}=tt(t);return oe(e)?n?nt(e).map(t=>[e,t]):le(e).map(t=>[e,t]):[]}function tt(e){return{recursive:e?.recursive??!0}}function nt(e){return le(e,{withFileTypes:!0}).flatMap(t=>{let n=p.join(e,t.name);return t.isDirectory()?nt(n):[n]})}function rt(e){return e}const{PipeEventServer:it,PipeEventClient:at,PipeEventBase:ot,ProcessMonitor:st,Process:ct,InjectionMethod:lt,AccessLevel:ut,HardwareInterface:dt}=e(import.meta.url)(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`),R=P(class extends N{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(),this.server=null)}init(){this.server=new it(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.server.on(`disconnected`,()=>{this._hasConnection=!1})}},`stats-cc`);var ft=class{logger;initialized=!1;constructor(e){this.logger=L.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1}},z=class extends N{logger;initialized=!1;constructor(e){super(),this.logger=L.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}},pt=class extends Ge{logger;initialized=!1;constructor(e){super(),this.logger=L.getInstance().scope(e)}init(){this.logger.log(`Initializing`),this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}};const B=de.create({baseURL:`https://updater.stats.cc`,headers:{Accept:`application/json`,"Accept-Encoding":`gzip, deflate, br`}});let mt;function ht(e){mt=e}B.interceptors.request.use(e=>{let t=mt?.();return t?(e.headers??={},e.headers.Authorization=t,e):e});const V=de.create({baseURL:`https://api.overlayed.gg`,headers:{Accept:`application/json`,"Accept-Encoding":`gzip, deflate, br`}});V.interceptors.request.use(e=>(e.headers??={},e));function gt(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 _t(e){return e}function vt(e){return e?t=>(e(t),t):_t}const yt=vt();function bt(e){return V.get(`/v1/public/applications/${e}`)}function xt(e,t){return B.get(`/v1/native/${Ct(e)}/version.txt`,{params:{channel:t},responseType:`text`})}function St(e,t){return B.get(`/v1/native/${Ct(e)}/files`,{params:{channel:t},responseType:`arraybuffer`})}function Ct(e){return e===`01JXPFK6YQ3N00N2Y9JHFNG55D`||e===`01JZEBPGHT5M4Y6SGY4P7Q9EZT`?`siege-game-module`:e}function wt(){return V.get(`/v1/public/raven/config`)}function Tt(e,t){return V.get(`/v1/public/raven/games/${e}/builds/${t}`)}function Et(e,t){return V.post(`/v1/public/raven/games/${e}/builds/upload`,null,{params:t})}function Dt(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 Ot(e){let t=Date.now(),n=e.messages.map(e=>kt(t,e)),r=gt(n,250),i=Promise.all(r.map(async t=>V.post(`/v1/public/cortex/events`,{...e,messages:t})));return i.catch(e=>{let t=e?.response?.data||e?.message||e;console.error(`Failed to submit cortex events`,t)}),i}function kt(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 At(e){return e instanceof Error&&(e.name===`XiorError`||e.name===`XiorTimeoutError`)}function jt(e){return!!(e&&`kind`in e.data&&`message`in e.data)}let Mt;function Nt(e){Mt=e}const H=P(class extends z{UPDATE_CHECK_INTERVAL_MS=1e3*60*5;targetDir;updateInterval;constructor(){super(`NativeModuleManager`),this.targetDir=p.join(I(),`resources`),this.logger.log(`Target directory`,this.targetDir)}async initWithDlls(e){super.init(),await g.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),this.updateInterval=void 0),super.destroy()}async getCurrentVersion(e){try{let t=p.join(this.targetDir,e,`version.txt`);return this.logger.log(`Version Path`,t),await g.readFile(t,`utf-8`)}catch{return null}}getTargetPath(e){return p.join(this.targetDir,e)}getTargetVersionPath(e,t){return p.join(this.getTargetPath(e),t)}async checkForUpdates(e){let t=global.OVERLAYED.APP_BUILD_CHANNEL;if(this.logger.log(`Checking for updates`),!t){this.logger.error(`Invalid VITE_BUILD_CHANNEL`);return}await Mt?.();for(let n of e)try{let{data:e}=await xt(n,t),r=await this.getCurrentVersion(n);this.logger.log(`${n} > Update Check. current: ${r}, latest: ${e}`);let i=e!==r;this.logger.log(`${n} > Update found: ${r} -> ${e}`),await this.downloadAndExtractDll(n,e,t,i),this.logger.log(`${n} > Downloaded and extracted`),i&&(this.logger.log(`${n} > Cleaning up versions older than ${e}`),await this.cleanupOldVersions(n,e)),this.emit(`dllUpdated`,{identifier:n,version:e})}catch(e){this.logger.error(`${n} > Error checking/updating`,e)}}async downloadAndExtractDll(e,t,n,r){let{data:i}=await St(e,n),a=this.getTargetPath(e),o=this.getTargetVersionPath(e,t);await g.mkdir(o,{recursive:!0});let s=new _;await s.loadAsync(i);let c=Object.keys(s.files).map(async t=>{let n=s.files[t];if(n&&!n.dir){let i=p.join(o,t);if(!r)try{await g.access(i,g.constants.F_OK);return}catch{this.logger.warn(`${e} > File missing, re-downloading: ${i}`)}let a=await n.async(`nodebuffer`);await g.writeFile(i,a)}});await Promise.all(c);let l=p.join(a,`version.txt`);this.logger.log(`Saving version file`,l),await g.writeFile(l,t)}async cleanupOldVersions(e,t){let n=p.join(this.targetDir,e),r=await g.readdir(n,{withFileTypes:!0});for(let e of r)e.isDirectory()&&e.name!==t&&await g.rm(p.join(n,e.name),{recursive:!0,force:!0})}}),U=P(class extends z{REFETCH_INTERVAL=1e3*60*5;FAILED_REFETCH_INTERVAL=1e3*30;_ravenConfig;_executableToGameMap=new Map;_executablesArray=[];_refetchIntervalHandler=null;_failedRefetchTimeoutHandler=null;constructor(){super(`RavenManager`)}init(){super.init(),this.fetchRavenConfig(),this._refetchIntervalHandler=setInterval(()=>{this._failedRefetchTimeoutHandler&&(clearTimeout(this._failedRefetchTimeoutHandler),this._failedRefetchTimeoutHandler=null),this.fetchRavenConfig()},this.REFETCH_INTERVAL)}getExecutableData(e){return this._executableToGameMap.get(e.toLowerCase())??null}get executables(){return this._executablesArray}get executablesMap(){return this._executableToGameMap}destroy(){this._refetchIntervalHandler&&clearInterval(this._refetchIntervalHandler),this._failedRefetchTimeoutHandler&&clearTimeout(this._failedRefetchTimeoutHandler),H.getInstance().destroy(),super.destroy()}async fetchRavenConfig(){try{this._ravenConfig={games:(await wt()).data.games},this.resetState();let e=new Set;for(let t of this._ravenConfig.games){for(let e of t.executables){let n=e.toLowerCase();this._executableToGameMap.set(n,t),this._executablesArray.push(n)}t.modules.forEach(t=>e.add(t))}await H.getInstance().initWithDlls(Array.from(e)),this.logger.log(`Raven updated, monitoring ${this._executableToGameMap.size} executables`),this.emit(`executablesUpdated`,{executables:this.executables,map:this._executableToGameMap})}catch(e){this.logger.error(`Failed to fetch Raven config`,e),this._failedRefetchTimeoutHandler=setTimeout(()=>this.fetchRavenConfig(),this.FAILED_REFETCH_INTERVAL)}}resetState(){this._executableToGameMap.clear(),this._executablesArray=[]}}),{PipeEventServer:Pt,PipeEventClient:Ft,PipeEventBase:It,ProcessMonitor:Lt,Process:W,InjectionMethod:Rt,AccessLevel:zt,HardwareInterface:Bt}=e(import.meta.url)(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`),G=P(class extends z{_processMonitor;_processes=new Map;boundOnRavenManagerExecutablesUpdated=this.onRavenManagerExecutablesUpdated.bind(this);constructor(){super(`ProcessManager`),this._processMonitor=new Lt}get hasAnyActiveProcesses(){return this.activeProcesses.length>0}get activeProcesses(){return Array.from(this._processes.values()).flat().filter(e=>!e.destroyedAt)}init(){super.init(),U.getInstance().on(`executablesUpdated`,this.boundOnRavenManagerExecutablesUpdated),this._processMonitor.on(`create`,e=>{this.logger.log(`Process created`,e),this.addProcess(e),this.logger.log(`Active Process Count: ${this._processes.size}`),this.emit(`create`,{process:e})}),this._processMonitor.on(`destroy`,e=>{this.logger.log(`Process destroyed`,e),this.deleteProcess(e),this.logger.log(`Active Process Count: ${this._processes.size}`),this.emit(`destroy`,{process:e})})}destroy(){U.getInstance().off(`executablesUpdated`,this.boundOnRavenManagerExecutablesUpdated),this._processes.clear(),this._processMonitor.removeAllListeners(),super.destroy()}isProcessRunning(e){return this._processes.get(e)?.some(e=>!e.destroyedAt)??!1}onRavenManagerExecutablesUpdated(e){this.logger.log(`Monitoring ${e.executables.length} processes`),e.executables.forEach(e=>{this._processMonitor.registerProcess(e)})}addProcess(e){if(!e.name)return;let t=this._processes.get(e.name);if(!t){this._processes.set(e.name,[e]);return}this._processes.set(e.name,t.concat(e))}deleteProcess(e){if(!e.name)return;let t=this._processes.get(e.name)?.filter(t=>t.id!==e.id)??[];t.length===0?this._processes.delete(e.name):this._processes.set(e.name,t)}}),{RenderInterface:Vt,renderHookPath:Ht}=e(import.meta.url)(`@overlayed/app/dist/render-interface/build/overlayed_render_interface_x64.node`);var Ut=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 K=P(class{interfaces={};constructor(){}createInterface(e){return this.interfaces[e]||(this.interfaces[e]=new Ut(new Vt(e,{access:1}))),this.interfaces[e]}getInterface(e){return this.interfaces[e]?this.interfaces[e]:this.createInterface(e)}}),q=P(class{options;eventQueue;meta=null;constructor(e){this.options=this.resolveOptions(e),this.eventQueue=new Ce,this.setupFlushInterval()}track(e,t){this.eventQueue.add({type:e,properties:t,created_at:new Date})}flush(){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{Ot({...this.meta,messages:e})}catch{}return e}setupFlushInterval(){setInterval(()=>{this.flush()},this.options.batchIntervalSeconds*1e3)}resolveOptions(e){return{batchIntervalSeconds:e?.batchIntervalSeconds??15}}}),Wt=e(import.meta.url).resolve(`@overlayed/app/dist/render-interface/build/overlayed_render_hook_x64.dll`),J=P(class extends pt{boundOnProcessCreate=this.onProcessCreate.bind(this);boundOnProcessDestroy=this.onProcessDestroy.bind(this);subscribedGames=new Set;_activeReadyRavenGames=new Set;get isInGame(){return this._activeReadyRavenGames.size>0}constructor(){super(`GameLaunchManager`)}setSubscribedGames(e){this.subscribedGames=new Set(e)}init(){super.init(),K.getInstance().createInterface(`OGG_SIEGE`),G.getInstance().on(`create`,this.boundOnProcessCreate),G.getInstance().on(`destroy`,this.boundOnProcessDestroy)}destroy(){G.getInstance().off(`create`,this.boundOnProcessCreate),G.getInstance().off(`destroy`,this.boundOnProcessDestroy),super.destroy()}async onProcessCreate({process:e}){let t=this.getRavenGame(e);if(!t)return;if(this.subscribedGames.size===0){this.logger.warn(`No subscribed games, skipping`);return}if(q.getInstance().track(`game_launch`,{game:t.identifier}),!this.subscribedGames.has(t.identifier)&&!this.subscribedGames.has(`*`))return;let n=new AbortController;if(await this.emit(`gameLaunch`,{game:t.identifier,reject:()=>n.abort()}),n.signal.aborted)return;if(this.logger.log(`Game Launched`,t),this.logger.log(`Process is elevated: `,e.isElevated),this.logger.log(`Current process is elevated: `,W.currentProcess.isElevated),e.isElevated&&!W.currentProcess.isElevated){F.getInstance().fatal(`Game is elevated but the App is not`,`ELEVATION_MISMATCH`,{appElevated:!!W.currentProcess.isElevated,gameElevated:!!e.isElevated}),this.logger.log(`Game elevated but App is not`,{appElevated:W.currentProcess.isElevated,gameElevated:e.isElevated});return}let r=this.copyDll(Wt);if(r)try{await e.injectDll(r),this.logger.log(`Render Interface Injection Successful`,r)}catch(e){this.logger.error(`Render Interface Injection Failed`,e),this.logger.error(`Render Interface Injection Failed`,{renderInterfacePath:r})}let i=t?.modules.map(async t=>{let n=await H.getInstance().getCurrentVersion(t);if(!n)return this.logger.error(`No version found for DLL`,{identifier:t}),Promise.resolve();let r=H.getInstance().getTargetVersionPath(t,n);this.logger.log(`DLL Path`,r);let i=await this.getDllFiles(r);return this.logger.log(`DLL Files`,i),Promise.all(i.map(async t=>{let n=p.basename(t),i=p.join(r,n);if(!i)return Promise.resolve();this.logger.log(`Injecting: `,i);try{return e.injectDll(i).then(()=>{this.logger.log(`Injection Successful`,i)}).catch(e=>{this.logger.error(`Injection Failed [1]`,{targetPath:i},e)})}catch(e){return this.logger.error(`Injection Failed [2]`,{targetPath:i},e),Promise.reject(e)}}))});await Promise.allSettled(i),this._activeReadyRavenGames.add(t.identifier),this.logger.debug(`Active ready raven games`,Array.from(this._activeReadyRavenGames).join(`, `)),this.emit(`gameReadyInternal`,{ravenGame:t,process:e}),this.emit(`gameReady`,{game:t.identifier}),q.getInstance().track(`game_ready`,{game:t.identifier})}copyDll(e){let t=p.basename(e),n=ee(e),r=p.join(I(),`resources`),i=p.join(r,t);this.logger.info(`Copying`,n,`to`,i);try{oe(r)||se(r,{recursive:!0});let e=ce(n);ue(i,e),ie(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 getDllFiles(e){try{return(await g.readdir(e)).filter(e=>e.endsWith(`.dll`)).map(t=>p.join(e,t))}catch(t){return this.logger.error(`Failed to read DLL directory`,t),this.logger.error(`Failed to read DLL directory`,{dllPath:e}),[]}}onProcessDestroy({process:e}){let t=this.getRavenGame(e);t&&(this._activeReadyRavenGames.delete(t.identifier),this.logger.debug(`Active ready raven games`,Array.from(this._activeReadyRavenGames).join(`, `)),this.emit(`gameCloseInternal`,{ravenGame:t,process:e}),this.emit(`gameClose`,{game:t.identifier}),q.getInstance().track(`game_close`,{game:t.identifier}))}getRavenGame(e){if(!e.name)return;let t=U.getInstance().getExecutableData(e.name);if(!t){this.logger.error(`No raven game found for process`,{process:e});return}return t}}),Gt=P(class extends ft{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[{ravenGame:t,process:n}]=e;if(!n.path||!n.name){this.logger.error(`Process path or name not found, could not check for build hash`,void 0,n);return}let r=ce(n.path),i=fe(`sha256`).update(r).digest(`hex`);this.logger.log(`Process Path`,n.path),this.logger.log(`Process Name`,n.name),this.logger.log(`Build Hash`,i);let a=!1;try{a=(await Tt(t.identifier,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 _;o.file(n.name,r);let s=await o.generateAsync({type:`blob`});try{this.logger.log(`Uploading build (size: `,s.size,` bytes)`);let e=new $e(s,{chunkSizeMb:25,maxConcurrent:1}),n=await Et(t.identifier,{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 Dt(t.identifier,{chunk:e,build_hash:i,chunk_index:r,upload_token:n.data.upload_token})}),this.logger.log(`Build uploaded successfully`)}catch(e){At(e)?jt(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)}}});function Kt(e=[]){return p.normalize(p.join(Ye(global.OVERLAYED.APPLICATION_ID),...e))}const qt=n({game:`string`,type:`string`,creation_time:`number`}),Jt=new Ke({path:Ze(),schema:n({userId:`string | undefined`}),default:{userId:void 0}});function Yt(){let e=Jt.get().userId;if(e)return e;let t=Xt();return Jt.set({userId:t}),t}function Xt(){try{return Bt.generateUniqueIdentifier()}catch{return crypto.randomUUID()}}function Y(e,t){return`${e}:${t}`}function Zt(e,t,n){return e.reduce((e,r)=>{let i=r.key;return e[i]={on(e,n){let r=Y(i,e),a=t.get(r)??new Set;a.add(n),t.set(r,a)},onAny(e){let n=Y(i,`*`),r=t.get(n)??new Set;r.add(e),t.set(n,r)},off(e,n){let r=Y(i,e),a=t.get(r);a&&(a.delete(n),a.size===0&&t.delete(r))},offAny(e){let n=Y(i,`*`),r=t.get(n);r&&(r.delete(e),r.size===0&&t.delete(n))},readyForGameEvents:()=>{n.emit(`flushEvents`,i)}},e},{})}function Qt(){let e=F.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]})}}}}var X=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}(X||{});const $t=new Map([[X.LeftButton,`LeftButton`],[X.RightButton,`RightButton`],[X.Cancel,`Cancel`],[X.MiddleButton,`MiddleButton`],[X.ExtraButton1,`ExtraButton1`],[X.ExtraButton2,`ExtraButton2`],[X.Back,`Backspace`],[X.Tab,`Tab`],[X.Clear,`Clear`],[X.Return,`Enter`],[X.Shift,`ShiftLeft`],[X.Control,`ControlLeft`],[X.Menu,`AltLeft`],[X.Pause,`Pause`],[X.CapsLock,`CapsLock`],[X.Kana,`KanaMode`],[X.Junja,`JunjaMode`],[X.Final,`Finalize`],[X.Hanja,`HanjaMode`],[X.Escape,`Escape`],[X.Convert,`Convert`],[X.NonConvert,`NonConvert`],[X.Accept,`Accept`],[X.ModeChange,`ModeChange`],[X.Space,`Space`],[X.Prior,`PageUp`],[X.Next,`PageDown`],[X.End,`End`],[X.Home,`Home`],[X.Left,`ArrowLeft`],[X.Up,`ArrowUp`],[X.Right,`ArrowRight`],[X.Down,`ArrowDown`],[X.Select,`Select`],[X.Print,`PrintScreen`],[X.Execute,`Execute`],[X.Snapshot,`Snapshot`],[X.Insert,`Insert`],[X.Delete,`Delete`],[X.Help,`Help`],[X.N0,`Digit0`],[X.N1,`Digit1`],[X.N2,`Digit2`],[X.N3,`Digit3`],[X.N4,`Digit4`],[X.N5,`Digit5`],[X.N6,`Digit6`],[X.N7,`Digit7`],[X.N8,`Digit8`],[X.N9,`Digit9`],[X.A,`KeyA`],[X.B,`KeyB`],[X.C,`KeyC`],[X.D,`KeyD`],[X.E,`KeyE`],[X.F,`KeyF`],[X.G,`KeyG`],[X.H,`KeyH`],[X.I,`KeyI`],[X.J,`KeyJ`],[X.K,`KeyK`],[X.L,`KeyL`],[X.M,`KeyM`],[X.N,`KeyN`],[X.O,`KeyO`],[X.P,`KeyP`],[X.Q,`KeyQ`],[X.R,`KeyR`],[X.S,`KeyS`],[X.T,`KeyT`],[X.U,`KeyU`],[X.V,`KeyV`],[X.W,`KeyW`],[X.X,`KeyX`],[X.Y,`KeyY`],[X.Z,`KeyZ`],[X.LeftWindows,`MetaLeft`],[X.RightWindows,`MetaRight`],[X.Application,`ContextMenu`],[X.Sleep,`Sleep`],[X.Numpad0,`Numpad0`],[X.Numpad1,`Numpad1`],[X.Numpad2,`Numpad2`],[X.Numpad3,`Numpad3`],[X.Numpad4,`Numpad4`],[X.Numpad5,`Numpad5`],[X.Numpad6,`Numpad6`],[X.Numpad7,`Numpad7`],[X.Numpad8,`Numpad8`],[X.Numpad9,`Numpad9`],[X.Multiply,`NumpadMultiply`],[X.Add,`NumpadAdd`],[X.Separator,`NumpadSeparator`],[X.Subtract,`NumpadSubtract`],[X.Decimal,`NumpadDecimal`],[X.Divide,`NumpadDivide`],[X.F1,`F1`],[X.F2,`F2`],[X.F3,`F3`],[X.F4,`F4`],[X.F5,`F5`],[X.F6,`F6`],[X.F7,`F7`],[X.F8,`F8`],[X.F9,`F9`],[X.F10,`F10`],[X.F11,`F11`],[X.F12,`F12`],[X.F13,`F13`],[X.F14,`F14`],[X.F15,`F15`],[X.F16,`F16`],[X.F17,`F17`],[X.F18,`F18`],[X.F19,`F19`],[X.F20,`F20`],[X.F21,`F21`],[X.F22,`F22`],[X.F23,`F23`],[X.F24,`F24`],[X.NumLock,`NumLock`],[X.ScrollLock,`ScrollLock`],[X.NEC_Equal,`NEC_Equal`],[X.Fujitsu_Masshou,`Fujitsu_Masshou`],[X.Fujitsu_Touroku,`Fujitsu_Touroku`],[X.Fujitsu_Loya,`Fujitsu_Loya`],[X.Fujitsu_Roya,`Fujitsu_Roya`],[X.LeftShift,`ShiftLeft`],[X.RightShift,`ShiftRight`],[X.LeftControl,`ControlLeft`],[X.RightControl,`ControlRight`],[X.LeftMenu,`AltLeft`],[X.RightMenu,`AltRight`],[X.BrowserBack,`BrowserBack`],[X.BrowserForward,`BrowserForward`],[X.BrowserRefresh,`BrowserRefresh`],[X.BrowserStop,`BrowserStop`],[X.BrowserSearch,`BrowserSearch`],[X.BrowserFavorites,`BrowserFavorites`],[X.BrowserHome,`BrowserHome`],[X.VolumeMute,`VolumeMute`],[X.VolumeDown,`VolumeDown`],[X.VolumeUp,`VolumeUp`],[X.MediaNextTrack,`MediaTrackNext`],[X.MediaPrevTrack,`MediaTrackPrevious`],[X.MediaStop,`MediaStop`],[X.MediaPlayPause,`MediaPlayPause`],[X.LaunchMail,`LaunchMail`],[X.LaunchMediaSelect,`LaunchMediaSelect`],[X.LaunchApplication1,`LaunchApplication1`],[X.LaunchApplication2,`LaunchApplication2`],[X.OEM1,`OEM_1`],[X.OEMPlus,`Equal`],[X.OEMComma,`Comma`],[X.OEMMinus,`Minus`],[X.OEMPeriod,`Period`],[X.OEM2,`Slash`],[X.OEM3,`Backquote`],[X.OEM4,`BracketLeft`],[X.OEM5,`Backslash`],[X.OEM6,`BracketRight`],[X.OEM7,`Quote`],[X.OEM8,`IntlRo`],[X.OEMAX,`OEM_AX`],[X.OEM102,`IntlBackslash`],[X.ICOHelp,`ICO_HELP`],[X.ICO00,`ICO_00`],[X.ProcessKey,`Process`],[X.ICOClear,`ICO_CLEAR`],[X.Packet,`Packet`],[X.OEMReset,`OEM_Reset`],[X.OEMJump,`OEM_Jump`],[X.OEMPA1,`OEM_PA1`],[X.OEMPA2,`OEM_PA2`],[X.OEMPA3,`OEM_PA3`],[X.OEMWSCtrl,`OEM_WS_Ctrl`],[X.OEMCUSel,`OEM_CU_Sel`],[X.OEMATTN,`OEM_ATTN`],[X.OEMFinish,`OEM_Finish`],[X.OEMCopy,`OEM_Copy`],[X.OEMAuto,`OEM_Auto`],[X.OEMENLW,`OEM_ENLW`],[X.OEMBackTab,`BackTab`],[X.ATTN,`ATTN`],[X.CRSel,`CRSel`],[X.EXSel,`EXSel`],[X.EREOF,`EREOF`],[X.Play,`MediaPlay`],[X.Zoom,`Zoom`],[X.Noname,`Noname`],[X.PA1,`PA1`],[X.OEMClear,`OEM_Clear`]]),en=new Map($t.entries().map(([e,t])=>[t,e])),tn=n({"[string]":{keys:`string[]`,mode:n(`'toggle' | 'hold'`).pipe(e=>e??`toggle`)}});var nn=class extends z{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 Ke({path:Kt([`keybinds.json`]),schema:tn,default:e})}init(){super.init();let e=K.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)||{};n.toggle=t,this.preferencesKeybindToCallbacks.set(e,n)}async onKeybindDown(e,t){let n=this.preferencesKeybindToCallbacks.get(e)||{};n.down=t,this.preferencesKeybindToCallbacks.set(e,n)}async onKeybindUp(e,t){let n=this.preferencesKeybindToCallbacks.get(e)||{};n.up=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=K.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=$t.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=$t.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)continue;let r=e[t];this.activeKeybinds.has(t)&&r.keys.some(e=>!this.pressedKeys.has(e))&&(this.activeKeybinds.delete(t),n.up(),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=>en.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=>en.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&&!this.triggeredToggleKeybinds.has(n)){let r=t.toggle();this.triggeredToggleKeybinds.add(n),this.logger.log(r?`Keybind pressed rejected: ${r}`:`Keybind pressed accepted`,this.getKeybindToString(e))}if(r===`hold`&&t.down&&!this.activeKeybinds.has(n)){let r=t.down();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 rn(e){let t=new nn(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(),pe.on(`quit`,()=>{t.destroy()}),r}function Z(){return K.getInstance().getInterface(`OGG_SIEGE`)}function an(){let e=J.getInstance(),t=F.getInstance(),n=q.getInstance();n.meta=on(),e.on([`gameReady`,`gameClose`],()=>{n.meta||(n.meta=on()),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 on(){return{app_id:global.OVERLAYED.APPLICATION_ID,user_id:Yt(),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,session_id:global.OVERLAYED.sessionId,in_game:!1}}function sn(){function e(e,t){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})}),q.getInstance().track(`window_created`,{url:e.webContents.getURL(),in_game:t}),e}return{createWindow:t=>e(new global.OVERLAYED.electron.BrowserWindow(t),!1),createInGameWindow:t=>e(Z().instance.newWindowInternal(global.OVERLAYED.electron.BrowserWindow,t),!0),on:(e,t)=>Z().instance.on(e,t),off:(e,t)=>Z().instance.off(e,t),once:(e,t)=>Z().instance.once(e,t),addListener:(e,t)=>Z().instance.addListener(e,t),removeListener:(e,t)=>Z().instance.removeListener(e,t),removeAllListeners:()=>Z().instance.removeAllListeners(),prependListener:(e,t)=>Z().instance.prependListener(e,t),prependOnceListener:(e,t)=>Z().instance.prependOnceListener(e,t),getActiveGameInfo:()=>{let e=Z(),t=R.getInstance();return{resolution:e.resolution,isConnected:t.hasConnection}}}}const cn=P(class extends ft{renderInterface;globalCursorOverrideCount=new Set;globalMouseBlockCount=new Set;globalKeyboardBlockCount=new Set;keyInputBlocks={};constructor(e){super(`OverridesManager`),this.renderInterface=K.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 ln(){return{scope:e=>cn.getInstance().scope(e),raw:{setGlobalMouseBlock:e=>Z().instance.setGlobalMouseBlock(e),setGlobalKeyboardBlock:e=>Z().instance.setGlobalKeyboardBlock(e),setGlobalCursorOverride:e=>Z().instance.setGlobalCursorOverride(e),setKeyInputBlock:(e,t)=>Z().instance.setKeyInputBlock(e,t),getGlobalMouseBlock:()=>Z().instance.getGlobalMouseBlock(),getGlobalKeyboardBlock:()=>Z().instance.getGlobalKeyboardBlock(),getGlobalCursorOverride:()=>Z().instance.getGlobalCursorOverride(),getKeyInputBlock:e=>Z().instance.getKeyInputBlock(e)}}}function un(){return{track:(e,t)=>{q.getInstance().track(`custom__${String(e)}`,t)}}}var dn=Se(be(((exports,t)=>{var n=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),r=n((e,t)=>{var n=new Set([`mouseDown`,`mouseUp`,`pointerDown`,`pointerUp`]),r=new WeakSet;function i(e,t,{allowHosts:i}={}){let{shell:a}=t;if(r.has(e))return;r.add(e);let o=e.webContents;function s(e){return!!(!c(e)||i?.includes(e.host))}function c(e){return new URL(o.getURL()).origin!==e.origin}let l=0;function u(){l=Date.now()}function d(){let e=Date.now()-l,t=e<150;return t||console.warn(`was not recently active`,e),t}if(process.platform===`win32`)for(let t of Object.values({KEYDOWN:256,LBUTTONUP:514,MBUTTONUP:520,RBUTTONUP:517,XBUTTONUP:524,TOUCH:576}))e.hookWindowMessage(t,u);o.on(`input-event`,(e,t)=>{n.has(t.type)&&u()}),o.on(`will-navigate`,(e,t)=>{let n=e.url||t;if(console.log(`will-navigate`,n),!n)return;let r=new URL(n);if(!s(r)){if(!d()){console.log(`blocked navigation`,n),e.preventDefault();return}c(r)&&(console.log(`external navigation`,n),e.preventDefault(),a.openExternal(n))}}),o.session.on(`will-download`,(e,t)=>{let n=t.getURL();/^blob:/.test(n)||e.preventDefault()}),o.setWindowOpenHandler(e=>{console.log(`window-open`,e.url);let{url:t}=e,n=new URL(t);if(!s(n))return d()?(c(n)&&a.openExternal(e.url),{action:`deny`}):(console.log(`blocked navigation`,t),{action:`deny`})})}t.exports=i}),i=n((e,t)=>{var n=new Set([`Mozilla`,`AppleWebKit`,`Chrome`,`Safari`,`Gecko`,`Firefox`,`OPR`,`Edg`,`Version`,`Mobile`,`curl`,`PostmanRuntime`]);async function r(e,t,r){let{webContents:i}=e,a=await i.executeJavaScript(`navigator.userAgent`);a=a.match(/[^\/]+\/[^\s]+( \([^\)]+\))?/g).map(e=>e.trim()).filter(e=>{let[t]=e.split(`/`,1);return n.has(t)}).join(` `),i.setUserAgent(a),t.app.userAgentFallback=a}t.exports=r}),a=r(),o=i();function s(e,t,n={}){a(e,t,n.linkHandler),o(e,t,n.userAgent)}t.exports={setupRevUtils:s,setupLinkHandler:a,setUserAgent:o}}))(),1);function fn(){return{registerWindow:e=>{(0,dn.setupRevUtils)(e,global.OVERLAYED.electron)}}}function pn(e){let t=Xe(global.OVERLAYED.APPLICATION_ID),n=et(t,{recursive:!0}),r=Je(),i=et(r,{recursive:!0});L.getInstance().info(`Logs path: `,t),L.getInstance().info(`Overlayed logs path: `,r);let a=new _;return[...n,...i].forEach(([e,t])=>{L.getInstance().info(`Zipping: `,t);let n=ae(t),r=m(t);a.file(r,n,{compression:`DEFLATE`})}),Object.entries(e?.additionalFiles??{}).forEach(([e,t])=>{L.getInstance().info(`Zipping extra file: `,e),a.file(e,t,{compression:`DEFLATE`})}),a}async function mn(e,t){let n={...e,version:`${global.OVERLAYED.APP_VERSION}@${global.OVERLAYED.APP_BUILD_CHANNEL}`,log_zip:`data:application/zip;base64,${t}`};await fetch(`https://api.stats.cc/v1/overlay/contact`,{method:`POST`,body:JSON.stringify(n),redirect:`follow`,headers:{"Content-Type":`application/json`}})}function hn(e){let t=new Qe(`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),submitBugReport:async(e,t)=>{q.getInstance().track(`bug_report_submitted`,{version:e.version,category:e.category});let n=await pn(t).generateAsync({type:`base64`});await mn(e,n)}}}const gn=1e3;function _n(e,t,r,i,a){let o=R.getInstance();function s(e,t){let n=r.get(t);if(!n)r.set(t,[e]);else{if(n.length>=gn){F.getInstance().warn(`Event buffer full, removing oldest event`,`EVENT_BUFFER_FULL`,{summary:`Event buffer overflow for module ${t}. Buffer size: ${n.length}, max: ${gn}`});return}n.push(e)}}function c(r){let i=qt(r);if(i instanceof n.errors){q.getInstance().track(`invalid_game_event`,{}),F.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:i.summary});return}let o=e.modules.find(e=>e.key===i.game);if(!o)return;let c=o.events.event,l=c(r);if(l instanceof n.errors){if(`type`in l.byPath)return;q.getInstance().track(`invalid_game_event`,{game:i.game,type:i.type}),F.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:l.summary});return}if(!a[o.key]){s(l,o.key);return}if(l.type===`unsupported_game_version`){let{content:e}=l;q.getInstance().track(`unsupported_game_version`,{game:l.game,hash:e?.hash,version:e?.version})}let u=Y(o.key,l.type),d=Y(o.key,`*`),f=t.get(u),p=t.get(d),m=[...Array.from(f??[]),...Array.from(p??[])];m.length!==0&&m.forEach(e=>{e(l)})}return i.on(`flushEvents`,e=>{if(a[e])return;a[e]=!0;let t=r.get(e);t&&(L.getInstance().info(`Flushing ${t.length} events for module ${e}`),t.forEach(e=>c(e)),r.delete(e))}),o.on(`data`,e=>e.forEach(c)),o.on(`error`,e=>{F.getInstance().error(`Pipe server error`,`PIPE_SERVER_ERROR`,{error:e})}),o}let Q=!1,vn={},$,yn=new N;function bn(e){let{init:t=!0,debug:n=!1,silent:r=!0}=e;if(xn(e),L.getInstance().init(e.applicationId,n,r),Q)return $;function i(){if(Q)return;an();let t=new Map,n=new Map,r=Zt(e.modules,t,yn),a=Qt(),o=rn(e.keybinds),s=sn(),c=ln(),l=fn(),u=un(),d=hn(e);Sn(e),_n(e,t,n,yn,vn),Q=!0,$={...r,...a,ads:l,keybinds:o,windows:s,input:c,cortex:u,hasAnyActiveProcesses:()=>G.getInstance().hasAnyActiveProcesses,init:i,log:d,initialized:Q}}return t?(i(),$):new Proxy({init:i},{get:(e,t)=>{if(t!==`init`&&!Q)throw Error(`overlayed was called before initialized: ${t}`);return t===`init`?e[t]:$[t]}})}global.OVERLAYED=new Proxy({},{get:()=>{throw Error(`function overlayed was not called`)}});function xn(e){global.OVERLAYED={APPLICATION_ID:yt(e.applicationId),APP_BUILD_CHANNEL:e.channel??`alpha`,APP_VERSION:e.version??`0.0.0`,PACKAGE_VERSION:`0.22.0`,FRONTEND_VERSION:`0.0.0`,sessionId:crypto.randomUUID(),electron:e.electron}}function Sn(e){let t=e.universal?[`*`]:e.modules.map(e=>e.key);J.getInstance().setSubscribedGames(t),Gt.getInstance().init(),J.getInstance().init(),G.getInstance().init(),U.getInstance().init();async function n(){let e=bt(global.OVERLAYED.APPLICATION_ID).then(e=>e.data),t=Yt();L.getInstance().log(`userId`,t);let n={...await e,userId:t};return L.getInstance().log(`appInfo`,n),n}let r;global.OVERLAYED.electron.ipcMain.handle(`getAppInfo`,async()=>(r=r??n(),r)),q.getInstance().track(`start`,{}),pe.on(`quit`,()=>{q.getInstance().track(`electron_quit`,{}),Cn()}),process.on(`exit`,()=>{q.getInstance().track(`exit`,{}),Cn()})}async function Cn(){await q.getInstance().flush(),U.getInstance().destroy(),J.getInstance().destroy(),Gt.getInstance().destroy(),G.getInstance().destroy(),K.getInstance().getInterface(`OGG_SIEGE`).destroy(),R.getInstance().destroy(),F.getInstance().destroy()}export{rt as defineConfig,bn as overlayed,Nt as setFetchLatestTokenCallback,ht as setUpdaterTokenResolver};
package/dist/siege.d.ts CHANGED
@@ -154,6 +154,11 @@ declare const SIEGE_GAME_MODE_TYPES_TO_ID: Readonly<{
154
154
  readonly dualFront: SiegeGameModeTypeNameId;
155
155
  readonly showdown: SiegeGameModeTypeNameId;
156
156
  readonly trainingGrounds: SiegeGameModeTypeNameId;
157
+ readonly unranked: SiegeGameModeTypeNameId;
158
+ readonly deathmatch: SiegeGameModeTypeNameId;
159
+ readonly rengoku: SiegeGameModeTypeNameId;
160
+ readonly muteProtocol: SiegeGameModeTypeNameId;
161
+ readonly fieldTraining: SiegeGameModeTypeNameId;
157
162
  }>;
158
163
  declare const SIEGE_GAME_MODE_TYPE_LABELS: Record<SiegeGameModeTypeNameId, string>;
159
164
  declare const SIEGE_OPERATOR_TO_ID: Readonly<{
@@ -557,7 +562,6 @@ declare const SIEGE_MAP_TO_ID: Readonly<{
557
562
  readonly fortress: SiegeMapNameId;
558
563
  readonly villa: SiegeMapNameId;
559
564
  readonly neighborhood: SiegeMapNameId;
560
- readonly article5: SiegeMapNameId;
561
565
  readonly themePark: SiegeMapNameId;
562
566
  readonly stadium: SiegeMapNameId;
563
567
  readonly outback: SiegeMapNameId;
@@ -574,7 +578,6 @@ declare const SIEGE_MAP_TO_ID: Readonly<{
574
578
  readonly kafeDostoyevsky: SiegeMapNameId;
575
579
  readonly border: SiegeMapNameId;
576
580
  readonly closeQuarter: SiegeMapNameId;
577
- readonly bartlettU: SiegeMapNameId;
578
581
  readonly lair: SiegeMapNameId;
579
582
  readonly herefordBase: SiegeMapNameId;
580
583
  readonly skyscraper: SiegeMapNameId;
@@ -586,6 +589,8 @@ declare const SIEGE_MAP_TO_ID: Readonly<{
586
589
  readonly clubhouse: SiegeMapNameId;
587
590
  readonly district: SiegeMapNameId;
588
591
  readonly shinden: SiegeMapNameId;
592
+ readonly stadiumBravo: SiegeMapNameId;
593
+ readonly muteCommTower: SiegeMapNameId;
589
594
  }>;
590
595
  declare const SIEGE_MAP_LABELS: Record<SiegeMapNameId, string>;
591
596
  declare const SIEGE_ROUND_STATES_TO_ID: Readonly<{
@@ -793,7 +798,6 @@ declare function module(): {
793
798
  kills: number;
794
799
  deaths: number;
795
800
  assists: number;
796
- plants: number;
797
801
  score: number;
798
802
  };
799
803
  life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
@@ -819,7 +823,6 @@ declare function module(): {
819
823
  kills: number;
820
824
  deaths: number;
821
825
  assists: number;
822
- plants: number;
823
826
  score: number;
824
827
  };
825
828
  life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
@@ -872,7 +875,6 @@ declare function module(): {
872
875
  kills: number;
873
876
  deaths: number;
874
877
  assists: number;
875
- plants: number;
876
878
  score: number;
877
879
  };
878
880
  };
@@ -1156,7 +1158,6 @@ declare function module(): {
1156
1158
  kills: number;
1157
1159
  deaths: number;
1158
1160
  assists: number;
1159
- plants: number;
1160
1161
  score: number;
1161
1162
  };
1162
1163
  life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
@@ -1182,7 +1183,6 @@ declare function module(): {
1182
1183
  kills: number;
1183
1184
  deaths: number;
1184
1185
  assists: number;
1185
- plants: number;
1186
1186
  score: number;
1187
1187
  };
1188
1188
  life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
@@ -1240,7 +1240,6 @@ declare function module(): {
1240
1240
  kills: number;
1241
1241
  deaths: number;
1242
1242
  assists: number;
1243
- plants: number;
1244
1243
  score: number;
1245
1244
  };
1246
1245
  };
@@ -1375,7 +1374,6 @@ declare const PlayerMatchStatsDataSchema: arktype_internal_methods_object_ts0.Ob
1375
1374
  kills: number;
1376
1375
  deaths: number;
1377
1376
  assists: number;
1378
- plants: number;
1379
1377
  score: number;
1380
1378
  }, {}>;
1381
1379
  type PlayerMatchStatsData = typeof PlayerMatchStatsDataSchema.infer;
@@ -1700,7 +1698,6 @@ declare const PlayerJoined: arktype_internal_methods_object_ts0.ObjectType<(In:
1700
1698
  kills: number;
1701
1699
  deaths: number;
1702
1700
  assists: number;
1703
- plants: number;
1704
1701
  score: number;
1705
1702
  };
1706
1703
  life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
@@ -1726,7 +1723,6 @@ declare const PlayerJoined: arktype_internal_methods_object_ts0.ObjectType<(In:
1726
1723
  kills: number;
1727
1724
  deaths: number;
1728
1725
  assists: number;
1729
- plants: number;
1730
1726
  score: number;
1731
1727
  };
1732
1728
  life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
@@ -1799,7 +1795,6 @@ declare const PlayerStatsChanged: arktype_internal_methods_object_ts0.ObjectType
1799
1795
  kills: number;
1800
1796
  deaths: number;
1801
1797
  assists: number;
1802
- plants: number;
1803
1798
  score: number;
1804
1799
  };
1805
1800
  };
@@ -2119,7 +2114,6 @@ declare const events: arktype2.Module<{
2119
2114
  kills: number;
2120
2115
  deaths: number;
2121
2116
  assists: number;
2122
- plants: number;
2123
2117
  score: number;
2124
2118
  };
2125
2119
  life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
@@ -2145,7 +2139,6 @@ declare const events: arktype2.Module<{
2145
2139
  kills: number;
2146
2140
  deaths: number;
2147
2141
  assists: number;
2148
- plants: number;
2149
2142
  score: number;
2150
2143
  };
2151
2144
  life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
@@ -2198,7 +2191,6 @@ declare const events: arktype2.Module<{
2198
2191
  kills: number;
2199
2192
  deaths: number;
2200
2193
  assists: number;
2201
- plants: number;
2202
2194
  score: number;
2203
2195
  };
2204
2196
  };
@@ -2482,7 +2474,6 @@ declare const events: arktype2.Module<{
2482
2474
  kills: number;
2483
2475
  deaths: number;
2484
2476
  assists: number;
2485
- plants: number;
2486
2477
  score: number;
2487
2478
  };
2488
2479
  life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
@@ -2508,7 +2499,6 @@ declare const events: arktype2.Module<{
2508
2499
  kills: number;
2509
2500
  deaths: number;
2510
2501
  assists: number;
2511
- plants: number;
2512
2502
  score: number;
2513
2503
  };
2514
2504
  life_state: "downed" | "normal" | "overhealed" | "low_health" | "dead" | "respawning";
@@ -2566,7 +2556,6 @@ declare const events: arktype2.Module<{
2566
2556
  kills: number;
2567
2557
  deaths: number;
2568
2558
  assists: number;
2569
- plants: number;
2570
2559
  score: number;
2571
2560
  };
2572
2561
  };
package/dist/siege.js CHANGED
@@ -1 +1 @@
1
- import{Type as e,scope as t,type as n}from"arktype";function r(e){return e}function ee(e){return e}function i(e){return e?t=>(e(t),t):ee}const a=i(),o=i(),s=i(),c=i(),l=i(),u=i(),te=i(),d=i(),f=i(),p=i(),m=i(),ne=`00000000-0000-0000-0000-000000000000`,h=[`intro`,`planning`,`prep`,`action`,`results`,`invalid`],g=n(`===`,...h),_=[0,1],v=n(`===`,..._),y=[`attacker`,`defender`,`both`,`invalid`],b=n(`===`,...y),x=[`normal`,`overhealed`,`low_health`,`downed`,`dead`,`respawning`],S=n(`===`,...x),C=`bullet.melee.explosive.falling.regeneration.unknown.debris.projectile.downed.gas.thermal_explosion.melee_gadget.barbed_wire.electric.reinforcement.frag.paralyzed.emp.break.cleanup.interrogation.melee-finisher.toxic.toxic-explosion.pneumatic.body-contact.contact-explosion.flash.parasite-spike.laser.concussion.blowtorch.taser-shield.reverse-friendly-fire.self-destroyed.area-control.fire.breach-kick.break-wall.blade-mine.invalid`.split(`.`),w=n(`===`,...C),T=[`unknown`,`enemy`,`friendly`,`invalid`],E=n(`===`,...T),D=Object.freeze({quickPlay:f(`QUICK PLAY`),versusAi:f(`VERSUS AI`),standard:f(`STANDARD`),ranked:f(`RANKED`)}),O=Object.freeze({[D.quickPlay]:`Quick Play`,[D.versusAi]:`Versus AI`,[D.standard]:`Standard`,[D.ranked]:`Ranked`}),k=Object.freeze({teamDeathmatch:p(`TEAM DEATHMATCH`),goldenGun:p(`GOLDEN GUN`),freeForAll:p(`FREE FOR ALL`),weaponRoulette:p(`WEAPON ROULETTE`),dualFront:p(`DUAL FRONT`),bomb:p(`BOMB`),versusAi:p(`VERSUS AI`),hostage:p(`HOSTAGE`),threeVsThreeSecureArea:p(`3 VS 3 SECURE AREA`),targetDrill:p(`TARGET DRILL`),rengoku:p(`RENGOKU`)}),A=Object.freeze({[k.teamDeathmatch]:`Team Deathmatch`,[k.goldenGun]:`Golden Gun`,[k.freeForAll]:`Free For All`,[k.weaponRoulette]:`Weapon Roulette`,[k.dualFront]:`Dual Front`,[k.bomb]:`Bomb`,[k.versusAi]:`Versus AI`,[k.hostage]:`Hostage`,[k.threeVsThreeSecureArea]:`3v3 Secure Area`,[k.targetDrill]:`Target Drill`,[k.rengoku]:`Rengoku`}),j=Object.freeze({ranked:a(205379),quickMatch:a(138115),customGame:a(62008),versusAi:a(397300),standard:a(393930),arcade:a(320109),siegeCup:a(414089),dualFront:a(420611),showdown:a(305544),trainingGrounds:a(-1)}),M=Object.freeze({[j.quickMatch]:`Quick Match`,[j.ranked]:`Ranked`,[j.customGame]:`Custom Game`,[j.versusAi]:`Versus AI`,[j.standard]:`Standard`,[j.arcade]:`Arcade`,[j.siegeCup]:`Siege Cup`,[j.dualFront]:`Dual Front`,[j.showdown]:`Showdown`,[j.trainingGrounds]:`Training Grounds`}),N=Object.freeze({glaz:o(62242),blitz:o(62243),buck:o(62244),sledge:o(62245),ash:o(62246),thermite:o(62247),castle:o(62248),rook:o(62249),pulse:o(62250),doc:o(62251),mute:o(62252),smoke:o(62253),recruit:o(62555),thatcher:o(65143),twitch:o(65156),montagne:o(65159),bandit:o(65165),fuze:o(65168),kapkan:o(65171),tachanka:o(65174),jager:o(113049),iq:o(113052),frost:o(186159),blackbeard:o(187249),valkyrie:o(187252),caveira:o(207671),capitao:o(207674),echo:o(209180),hibana:o(209183),mira:o(222172),jackal:o(222182),ying:o(239334),lesion:o(239337),ela:o(254595),zofia:o(254606),dokkaebi:o(273652),vigil:o(273663),finka:o(281457),lion:o(281463),alibi:o(282399),maestro:o(285888),maverick:o(288504),clash:o(288526),nomad:o(293435),kaid:o(293436),gridlock:o(298589),mozzie:o(298616),nokk:o(299657),warden:o(299668),goyo:o(304196),amaru:o(308469),kali:o(310757),wamai:o(310768),oryx:o(317965),iana:o(317976),melusi:o(320062),ace:o(320073),zero:o(328927),aruni:o(328940),flores:o(334086),thunderbird:o(336466),osa:o(344493),thorn:o(349405),azami:o(354314),sens:o(357386),grim:o(365404),solis:o(376836),brava:o(382419),fenrir:o(386388),ram:o(392904),tubarao:o(395594),deimos:o(400504),striker:o(404278),sentry:o(404290),skopos:o(408405),rauora:o(421052),denari:o(2437779699)}),re=Object.freeze({[N.glaz]:`glaz`,[N.blitz]:`blitz`,[N.buck]:`buck`,[N.sledge]:`sledge`,[N.ash]:`ash`,[N.thermite]:`thermite`,[N.castle]:`castle`,[N.rook]:`rook`,[N.pulse]:`pulse`,[N.doc]:`doc`,[N.mute]:`mute`,[N.smoke]:`smoke`,[N.recruit]:`recruit`,[N.thatcher]:`thatcher`,[N.twitch]:`twitch`,[N.montagne]:`montagne`,[N.bandit]:`bandit`,[N.fuze]:`fuze`,[N.kapkan]:`kapkan`,[N.tachanka]:`tachanka`,[N.jager]:`jager`,[N.iq]:`iq`,[N.frost]:`frost`,[N.blackbeard]:`blackbeard`,[N.valkyrie]:`valkyrie`,[N.caveira]:`caveira`,[N.capitao]:`capitao`,[N.echo]:`echo`,[N.hibana]:`hibana`,[N.mira]:`mira`,[N.jackal]:`jackal`,[N.ying]:`ying`,[N.lesion]:`lesion`,[N.ela]:`ela`,[N.zofia]:`zofia`,[N.dokkaebi]:`dokkaebi`,[N.vigil]:`vigil`,[N.finka]:`finka`,[N.lion]:`lion`,[N.alibi]:`alibi`,[N.maestro]:`maestro`,[N.maverick]:`maverick`,[N.clash]:`clash`,[N.nomad]:`nomad`,[N.kaid]:`kaid`,[N.gridlock]:`gridlock`,[N.mozzie]:`mozzie`,[N.nokk]:`nokk`,[N.warden]:`warden`,[N.goyo]:`goyo`,[N.amaru]:`amaru`,[N.kali]:`kali`,[N.wamai]:`wamai`,[N.oryx]:`oryx`,[N.iana]:`iana`,[N.melusi]:`melusi`,[N.ace]:`ace`,[N.zero]:`zero`,[N.aruni]:`aruni`,[N.flores]:`flores`,[N.thunderbird]:`thunderbird`,[N.osa]:`osa`,[N.thorn]:`thorn`,[N.azami]:`azami`,[N.sens]:`sens`,[N.grim]:`grim`,[N.solis]:`solis`,[N.brava]:`brava`,[N.fenrir]:`fenrir`,[N.ram]:`ram`,[N.tubarao]:`tubarao`,[N.deimos]:`deimos`,[N.striker]:`striker`,[N.sentry]:`sentry`,[N.skopos]:`skopos`,[N.rauora]:`rauora`,[N.denari]:`denari`}),P=Object.freeze({[N.striker]:{name:`Striker`,role:`attacker`},[N.sledge]:{name:`Sledge`,role:`attacker`},[N.thatcher]:{name:`Thatcher`,role:`attacker`},[N.ash]:{name:`Ash`,role:`attacker`},[N.thermite]:{name:`Thermite`,role:`attacker`},[N.twitch]:{name:`Twitch`,role:`attacker`},[N.montagne]:{name:`Montagne`,role:`attacker`},[N.glaz]:{name:`Glaz`,role:`attacker`},[N.fuze]:{name:`Fuze`,role:`attacker`},[N.blitz]:{name:`Blitz`,role:`attacker`},[N.iq]:{name:`IQ`,role:`attacker`},[N.buck]:{name:`Buck`,role:`attacker`},[N.blackbeard]:{name:`Blackbeard`,role:`attacker`},[N.capitao]:{name:`Capitão`,role:`attacker`},[N.hibana]:{name:`Hibana`,role:`attacker`},[N.jackal]:{name:`Jackal`,role:`attacker`},[N.ying]:{name:`Ying`,role:`attacker`},[N.zofia]:{name:`Zofia`,role:`attacker`},[N.dokkaebi]:{name:`Dokkaebi`,role:`attacker`},[N.lion]:{name:`Lion`,role:`attacker`},[N.finka]:{name:`Finka`,role:`attacker`},[N.maverick]:{name:`Maverick`,role:`attacker`},[N.nomad]:{name:`Nomad`,role:`attacker`},[N.gridlock]:{name:`Gridlock`,role:`attacker`},[N.nokk]:{name:`Nøkk`,role:`attacker`},[N.amaru]:{name:`Amaru`,role:`attacker`},[N.kali]:{name:`Kali`,role:`attacker`},[N.iana]:{name:`Iana`,role:`attacker`},[N.ace]:{name:`Ace`,role:`attacker`},[N.zero]:{name:`Zero`,role:`attacker`},[N.flores]:{name:`Flores`,role:`attacker`},[N.osa]:{name:`Osa`,role:`attacker`},[N.sens]:{name:`Sens`,role:`attacker`},[N.grim]:{name:`Grim`,role:`attacker`},[N.brava]:{name:`Brava`,role:`attacker`},[N.ram]:{name:`Ram`,role:`attacker`},[N.deimos]:{name:`Deimos`,role:`attacker`},[N.rauora]:{name:`Rauora`,role:`attacker`},[N.sentry]:{name:`Sentry`,role:`defender`},[N.smoke]:{name:`Smoke`,role:`defender`},[N.mute]:{name:`Mute`,role:`defender`},[N.castle]:{name:`Castle`,role:`defender`},[N.pulse]:{name:`Pulse`,role:`defender`},[N.doc]:{name:`Doc`,role:`defender`},[N.rook]:{name:`Rook`,role:`defender`},[N.kapkan]:{name:`Kapkan`,role:`defender`},[N.tachanka]:{name:`Tachanka`,role:`defender`},[N.jager]:{name:`Jäger`,role:`defender`},[N.bandit]:{name:`Bandit`,role:`defender`},[N.frost]:{name:`Frost`,role:`defender`},[N.valkyrie]:{name:`Valkyrie`,role:`defender`},[N.caveira]:{name:`Caveira`,role:`defender`},[N.echo]:{name:`Echo`,role:`defender`},[N.mira]:{name:`Mira`,role:`defender`},[N.lesion]:{name:`Lesion`,role:`defender`},[N.ela]:{name:`Ela`,role:`defender`},[N.vigil]:{name:`Vigil`,role:`defender`},[N.alibi]:{name:`Alibi`,role:`defender`},[N.maestro]:{name:`Maestro`,role:`defender`},[N.clash]:{name:`Clash`,role:`defender`},[N.kaid]:{name:`Kaid`,role:`defender`},[N.mozzie]:{name:`Mozzie`,role:`defender`},[N.warden]:{name:`Warden`,role:`defender`},[N.goyo]:{name:`Goyo`,role:`defender`},[N.wamai]:{name:`Wamai`,role:`defender`},[N.oryx]:{name:`Oryx`,role:`defender`},[N.melusi]:{name:`Melusi`,role:`defender`},[N.aruni]:{name:`Aruni`,role:`defender`},[N.thunderbird]:{name:`Thunderbird`,role:`defender`},[N.thorn]:{name:`Thorn`,role:`defender`},[N.azami]:{name:`Azami`,role:`defender`},[N.solis]:{name:`Solis`,role:`defender`},[N.fenrir]:{name:`Fenrir`,role:`defender`},[N.tubarao]:{name:`Tubarao`,role:`defender`},[N.skopos]:{name:`Skopós`,role:`defender`},[N.denari]:{name:`Denari`,role:`defender`}}),F=Object.freeze({attacker:Object.entries(P).filter(([e,t])=>t.role===`attacker`).map(([e])=>({...P[o(Number(e))],id:o(Number(e))})),defender:Object.entries(P).filter(([e,t])=>t.role===`defender`).map(([e])=>({...P[o(Number(e))],id:o(Number(e))}))}),I=Object.freeze({favela:s(202283),fortress:s(293334),villa:s(286407),neighborhood:s(333785),article5:s(196214),themePark:s(229325),stadium:s(338641),outback:s(299162),yacht:s(62226),emeraldPlains:s(358871),chalet:s(62230),coastline:s(217482),bank:s(62228),consulate:s(62227),tower:s(255669),nighthavenLabs:s(375492),presidentialPlane:s(62225),house:s(62221),kafeDostoyevsky:s(62232),border:s(201746),closeQuarter:s(365400),bartlettU:s(62231),lair:s(396234),herefordBase:s(62223),skyscraper:s(208094),cqbBasics:s(196157),oregon:s(62222),fortTruth:s(307723),kanal:s(62229),stadium2020:s(357300),clubhouse:s(62224),district:s(1193341205),shinden:s(359432)}),L=Object.freeze({202283:`Favela`,293334:`Fortress`,286407:`Villa`,333785:`Neighborhood`,196214:`Article 5`,229325:`Theme Park`,338641:`Stadium`,299162:`Outback`,62226:`Yacht`,358871:`Emerald Plains`,62230:`Chalet`,217482:`Coastline`,62228:`Bank`,62227:`Consulate`,255669:`Tower`,375492:`Nighthaven Labs`,62225:`Presidential Plane`,187984:`Article 5`,62221:`House`,62232:`Kafe Dostoyevsky`,201746:`Border`,365400:`Close Quarter`,299161:`Outback`,62231:`Bartlett U.`,396234:`Lair`,62223:`Hereford Base`,208094:`Skyscraper`,196157:`CQB Basics`,62222:`Oregon`,299534:`Outback`,318512:`Stadium`,307723:`Fort Truth`,195681:`Article 5`,62229:`Kanal`,177763:`CQB Basics`,357300:`Stadium 2020`,62224:`Clubhouse`,1193341205:`District`,359432:`Shinden`}),R=Object.freeze({notPlayed:c(0),inProgress:c(1),lost:c(2),enemiesEliminated:c(3),objectiveComplete:c(4),timeRanOut:c(5),enemiesSurrendered:c(6),unknownReason:c(7),matchCancelled:c(8)}),z=Object.freeze({[R.notPlayed]:`Not Played`,[R.inProgress]:`In Progress`,[R.lost]:`Lost`,[R.enemiesEliminated]:`Enemies Eliminated`,[R.objectiveComplete]:`Objective Complete`,[R.timeRanOut]:`Time ran out`,[R.enemiesSurrendered]:`Enemies Surrendered`,[R.unknownReason]:`Unknown Reason`,[R.matchCancelled]:`Match Cancelled`}),B=Object.freeze({day:m(177839),night:m(177840)}),V=Object.freeze({[B.day]:`Day`,[B.night]:`Night`}),H=n({game:`string`,type:`string`,creation_time:`number`}),U=[R.enemiesEliminated,R.objectiveComplete,R.timeRanOut,R.enemiesSurrendered,R.unknownReason];function W(e){return U.includes(e)}const G=[R.notPlayed,R.inProgress];function K(e){return!G.includes(e)}const q=H.and({game:`'siege'`}),J=q.and({type:`'local_player'`,content:{profile_id:r(n.string)}}),Y=()=>n({id:`number`,value:`string`}),X=n({kills:`number`,deaths:`number`,assists:`number`,plants:`number`,score:`number`}),ie=n({instigator_player_id:r(n.number),receiver_player_id:r(n.number),damage_amount:`number`,remaining_health:`number`,pre_damage_health:`number`,max_health:`number`,damage_type:w,damage_team_type:E,damage_item_id:r(n.number).or(`null`),damage_time:`number`}),Z=n({index:`number`,rounds_until_next_segment:`number`,segment_size:`number`,segment_index:`number`,team_0:{role:b,state:r(n.number)},team_1:{role:b,state:r(n.number)}}),Q=n({id:`number`,name:Y(),time_of_day:Y()}),ae=n({player_id:r(n.number),final_health:`number`,final_life_state:S,operator_name:Y().or(`null`)}),$=n({round_data:Z,damage_events:ie.array(),players:ae.array()}),oe=q.and({type:`'match_started'`,content:{game_mode:r(n.string),game_type:Y(),match_type:r(n.string),match_id:r(n.string),map:Q,is_round_based:`boolean`,current_round_index:`number`,rounds:Z.array()}}),se=q.and({type:`'module_loaded'`}),ce=q.and({type:`'module_unloaded'`}),le=q.and({type:`'started_queuing'`,content:{game_mode:r(n.string),game_type:Y(),match_type:r(n.string)}}),ue=q.and({type:`'stopped_queuing'`}),de=q.and({type:`'unsupported_game_version'`,content:{hash:`string | null`,version:`string | null`}}),fe=q.and({type:`'match_ended'`}),pe=q.and({type:`'map_changed'`,content:{map:Q}}),me=q.and({type:`'operator_banned'`,content:{index:`number`,team:v,side:b,operator_name:Y().or(`null`)}}),he=q.and({type:`'round_ended'`,content:$}),ge=q.and({type:`'phase_changed'`,content:{phase:g}}),_e=q.and({type:`'player_joined'`,content:{player_id:r(n.number),profile_id:r(n.string),is_bot:`boolean`,is_enemy:`boolean`,is_squad_member:`boolean`,is_local_player:`boolean`,username:`string`,side:b,team:v,is_privacy_username:`boolean`,has_avatar_hidden:`boolean`,has_commend_streak:`boolean`,ping_id:`number`,match_stats:X,life_state:S,ping:`number`}}).pipe(e=>({...e,content:{...e.content,starting_side:e.content.side}})),ve=q.and({type:`'player_left'`,content:{player_id:r(n.number)}}),ye=q.and({type:`'player_operator_changed'`,content:{player_id:r(n.number),operator_name:Y().or(`null`)}}),be=q.and({type:`'player_location_changed'`,content:{player_id:r(n.number),location_name:`string`}}),xe=q.and({type:`'player_side_changed'`,content:{player_id:r(n.number),side:b}}),Se=q.and({type:`'player_stats_changed'`,content:{player_id:r(n.number),match_stats:X}}),Ce=q.and({type:`'player_ping_updated'`,content:{player_id:r(n.number),ping:`number`}}),we=q.and({type:`'defuser_planted'`,content:{player_id:r(n.number)}}),Te=q.and({type:`'defuser_sabotaged'`,content:{player_id:r(n.number)}}),Ee=q.and({type:`'defuser_picked_up'`,content:{player_id:r(n.number),initial:`boolean`}}),De=q.and({type:`'defuser_dropped'`,content:{player_id:r(n.number)}}),Oe=q.and({type:`'player_life_state_changed'`,content:{player_id:r(n.number),life_state:S}}),ke=q.and({type:`'player_died'`,content:{player_id:r(n.number),instigator_player_id:r(n.number)}}),Ae=q.and({type:`'player_downed'`,content:{player_id:r(n.number),instigator_player_id:r(n.number)}}),je=q.and({type:`'player_ping_id_changed'`,content:{player_id:r(n.number),ping_id:`number`}}),Me=q.and({type:`'player_team_changed'`,content:{player_id:r(n.number),team:v}}),Ne=q.and({type:`'game_log'`,content:{message:`string.json`}}),Pe=t({"#event1":`module_loaded | module_unloaded | unsupported_game_version | local_player | started_queuing | stopped_queuing | match_started | match_ended | map_changed | operator_banned | round_ended | phase_changed | player_joined | player_left | player_operator_changed | player_location_changed | player_side_changed | player_stats_changed`,"#event2":`player_life_state_changed | player_died | player_downed | player_ping_id_changed | player_team_changed | defuser_planted | defuser_sabotaged | defuser_picked_up | defuser_dropped | player_ping_updated | game_log`,event:`event1 | event2`,module_loaded:se,module_unloaded:ce,unsupported_game_version:de,local_player:J,started_queuing:le,stopped_queuing:ue,match_started:oe,match_ended:fe,map_changed:pe,operator_banned:me,round_ended:he,phase_changed:ge,player_joined:_e,player_left:ve,player_operator_changed:ye,player_location_changed:be,player_side_changed:xe,player_stats_changed:Se,defuser_planted:we,defuser_sabotaged:Te,defuser_picked_up:Ee,defuser_dropped:De,player_ping_updated:Ce,player_life_state_changed:Oe,player_died:ke,player_downed:Ae,player_ping_id_changed:je,player_team_changed:Me,game_log:Ne}).export();function Fe(){return{key:`siege`,events:Pe}}export{H as BaseEvent,ne as SIEGE_BOT_ID,T as SIEGE_DAMAGE_TEAM_TYPES,C as SIEGE_DAMAGE_TYPES,k as SIEGE_GAME_MODES_TO_ID,A as SIEGE_GAME_MODE_LABELS,h as SIEGE_GAME_MODE_PHASES,j as SIEGE_GAME_MODE_TYPES_TO_ID,M as SIEGE_GAME_MODE_TYPE_LABELS,L as SIEGE_MAP_LABELS,I as SIEGE_MAP_TO_ID,D as SIEGE_MATCH_TYPES_TO_ID,O as SIEGE_MATCH_TYPE_LABELS,re as SIEGE_OPERATOR_LABELS,P as SIEGE_OPERATOR_META,N as SIEGE_OPERATOR_TO_ID,x as SIEGE_PLAYER_LIFE_STATES,R as SIEGE_ROUND_STATES_TO_ID,z as SIEGE_ROUND_STATE_LABELS,y as SIEGE_SIDES,F as SIEGE_SIDE_OPERATORS,_ as SIEGE_TEAMS,V as SIEGE_TIME_OF_DAY_LABELS,B as SIEGE_TIME_OF_DAY_TO_ID,E as SiegeDamageTeamTypeSchema,w as SiegeDamageTypeSchema,p as SiegeGameMode,g as SiegeGameModePhaseSchema,a as SiegeGameModeTypeNameId,d as SiegeItemObjectId,s as SiegeMapNameId,l as SiegeMatchId,f as SiegeMatchType,o as SiegeOperatorNameId,u as SiegePlayerId,S as SiegePlayerLifeStateSchema,te as SiegeProfileId,c as SiegeRoundState,b as SiegeSideSchema,v as SiegeTeamSchema,m as SiegeTimeOfDay,K as isSiegeRoundStateCompleted,W as isSiegeRoundStateVictory,Fe as module};
1
+ import{Type as e,scope as t,type as n}from"arktype";function r(e){return e}function i(e){return e}function a(e){return e?t=>(e(t),t):i}const o=a(),s=a(),c=a(),l=a(),u=a(),d=a(),f=a(),ee=a(),p=a(),m=a(),h=a(),g=`00000000-0000-0000-0000-000000000000`,_=[`intro`,`planning`,`prep`,`action`,`results`,`invalid`],v=n(`===`,..._),y=[0,1],b=n(`===`,...y),x=[`attacker`,`defender`,`both`,`invalid`],S=n(`===`,...x),C=[`normal`,`overhealed`,`low_health`,`downed`,`dead`,`respawning`],w=n(`===`,...C),T=`bullet.melee.explosive.falling.regeneration.unknown.debris.projectile.downed.gas.thermal_explosion.melee_gadget.barbed_wire.electric.reinforcement.frag.paralyzed.emp.break.cleanup.interrogation.melee-finisher.toxic.toxic-explosion.pneumatic.body-contact.contact-explosion.flash.parasite-spike.laser.concussion.blowtorch.taser-shield.reverse-friendly-fire.self-destroyed.area-control.fire.breach-kick.break-wall.blade-mine.invalid`.split(`.`),E=n(`===`,...T),D=[`unknown`,`enemy`,`friendly`,`invalid`],O=n(`===`,...D),k=Object.freeze({quickPlay:p(`QUICK PLAY`),versusAi:p(`VERSUS AI`),standard:p(`STANDARD`),ranked:p(`RANKED`)}),te=Object.freeze({[k.quickPlay]:`Quick Play`,[k.versusAi]:`Versus AI`,[k.standard]:`Standard`,[k.ranked]:`Ranked`}),A=Object.freeze({teamDeathmatch:m(`TEAM DEATHMATCH`),goldenGun:m(`GOLDEN GUN`),freeForAll:m(`FREE FOR ALL`),weaponRoulette:m(`WEAPON ROULETTE`),dualFront:m(`DUAL FRONT`),bomb:m(`BOMB`),versusAi:m(`VERSUS AI`),hostage:m(`HOSTAGE`),threeVsThreeSecureArea:m(`3 VS 3 SECURE AREA`),targetDrill:m(`TARGET DRILL`),rengoku:m(`RENGOKU`)}),j=Object.freeze({[A.teamDeathmatch]:`Team Deathmatch`,[A.goldenGun]:`Golden Gun`,[A.freeForAll]:`Free For All`,[A.weaponRoulette]:`Weapon Roulette`,[A.dualFront]:`Dual Front`,[A.bomb]:`Bomb`,[A.versusAi]:`Versus AI`,[A.hostage]:`Hostage`,[A.threeVsThreeSecureArea]:`3v3 Secure Area`,[A.targetDrill]:`Target Drill`,[A.rengoku]:`Rengoku`}),M=Object.freeze({ranked:o(205379),quickMatch:o(138115),customGame:o(62008),versusAi:o(397300),standard:o(393930),arcade:o(320109),siegeCup:o(414089),dualFront:o(420611),showdown:o(305544),trainingGrounds:o(-1),unranked:o(310813),deathmatch:o(420611),rengoku:o(359430),muteProtocol:o(368421),fieldTraining:o(423927)}),N=Object.freeze({[M.quickMatch]:`Quick Match`,[M.ranked]:`Ranked`,[M.customGame]:`Custom Game`,[M.versusAi]:`Versus AI`,[M.standard]:`Standard`,[M.arcade]:`Arcade`,[M.siegeCup]:`Siege Cup`,[M.dualFront]:`Dual Front`,[M.showdown]:`Showdown`,[M.trainingGrounds]:`Training Grounds`,[M.unranked]:`Unranked`,[M.deathmatch]:`Deathmatch`,[M.rengoku]:`Rengoku`,[M.muteProtocol]:`M.U.T.E Protocol`,[M.fieldTraining]:`Field Training`}),P=Object.freeze({glaz:s(62242),blitz:s(62243),buck:s(62244),sledge:s(62245),ash:s(62246),thermite:s(62247),castle:s(62248),rook:s(62249),pulse:s(62250),doc:s(62251),mute:s(62252),smoke:s(62253),recruit:s(62555),thatcher:s(65143),twitch:s(65156),montagne:s(65159),bandit:s(65165),fuze:s(65168),kapkan:s(65171),tachanka:s(65174),jager:s(113049),iq:s(113052),frost:s(186159),blackbeard:s(187249),valkyrie:s(187252),caveira:s(207671),capitao:s(207674),echo:s(209180),hibana:s(209183),mira:s(222172),jackal:s(222182),ying:s(239334),lesion:s(239337),ela:s(254595),zofia:s(254606),dokkaebi:s(273652),vigil:s(273663),finka:s(281457),lion:s(281463),alibi:s(282399),maestro:s(285888),maverick:s(288504),clash:s(288526),nomad:s(293435),kaid:s(293436),gridlock:s(298589),mozzie:s(298616),nokk:s(299657),warden:s(299668),goyo:s(304196),amaru:s(308469),kali:s(310757),wamai:s(310768),oryx:s(317965),iana:s(317976),melusi:s(320062),ace:s(320073),zero:s(328927),aruni:s(328940),flores:s(334086),thunderbird:s(336466),osa:s(344493),thorn:s(349405),azami:s(354314),sens:s(357386),grim:s(365404),solis:s(376836),brava:s(382419),fenrir:s(386388),ram:s(392904),tubarao:s(395594),deimos:s(400504),striker:s(404278),sentry:s(404290),skopos:s(408405),rauora:s(421052),denari:s(2437779699)}),ne=Object.freeze({[P.glaz]:`glaz`,[P.blitz]:`blitz`,[P.buck]:`buck`,[P.sledge]:`sledge`,[P.ash]:`ash`,[P.thermite]:`thermite`,[P.castle]:`castle`,[P.rook]:`rook`,[P.pulse]:`pulse`,[P.doc]:`doc`,[P.mute]:`mute`,[P.smoke]:`smoke`,[P.recruit]:`recruit`,[P.thatcher]:`thatcher`,[P.twitch]:`twitch`,[P.montagne]:`montagne`,[P.bandit]:`bandit`,[P.fuze]:`fuze`,[P.kapkan]:`kapkan`,[P.tachanka]:`tachanka`,[P.jager]:`jager`,[P.iq]:`iq`,[P.frost]:`frost`,[P.blackbeard]:`blackbeard`,[P.valkyrie]:`valkyrie`,[P.caveira]:`caveira`,[P.capitao]:`capitao`,[P.echo]:`echo`,[P.hibana]:`hibana`,[P.mira]:`mira`,[P.jackal]:`jackal`,[P.ying]:`ying`,[P.lesion]:`lesion`,[P.ela]:`ela`,[P.zofia]:`zofia`,[P.dokkaebi]:`dokkaebi`,[P.vigil]:`vigil`,[P.finka]:`finka`,[P.lion]:`lion`,[P.alibi]:`alibi`,[P.maestro]:`maestro`,[P.maverick]:`maverick`,[P.clash]:`clash`,[P.nomad]:`nomad`,[P.kaid]:`kaid`,[P.gridlock]:`gridlock`,[P.mozzie]:`mozzie`,[P.nokk]:`nokk`,[P.warden]:`warden`,[P.goyo]:`goyo`,[P.amaru]:`amaru`,[P.kali]:`kali`,[P.wamai]:`wamai`,[P.oryx]:`oryx`,[P.iana]:`iana`,[P.melusi]:`melusi`,[P.ace]:`ace`,[P.zero]:`zero`,[P.aruni]:`aruni`,[P.flores]:`flores`,[P.thunderbird]:`thunderbird`,[P.osa]:`osa`,[P.thorn]:`thorn`,[P.azami]:`azami`,[P.sens]:`sens`,[P.grim]:`grim`,[P.solis]:`solis`,[P.brava]:`brava`,[P.fenrir]:`fenrir`,[P.ram]:`ram`,[P.tubarao]:`tubarao`,[P.deimos]:`deimos`,[P.striker]:`striker`,[P.sentry]:`sentry`,[P.skopos]:`skopos`,[P.rauora]:`rauora`,[P.denari]:`denari`}),F=Object.freeze({[P.striker]:{name:`Striker`,role:`attacker`},[P.sledge]:{name:`Sledge`,role:`attacker`},[P.thatcher]:{name:`Thatcher`,role:`attacker`},[P.ash]:{name:`Ash`,role:`attacker`},[P.thermite]:{name:`Thermite`,role:`attacker`},[P.twitch]:{name:`Twitch`,role:`attacker`},[P.montagne]:{name:`Montagne`,role:`attacker`},[P.glaz]:{name:`Glaz`,role:`attacker`},[P.fuze]:{name:`Fuze`,role:`attacker`},[P.blitz]:{name:`Blitz`,role:`attacker`},[P.iq]:{name:`IQ`,role:`attacker`},[P.buck]:{name:`Buck`,role:`attacker`},[P.blackbeard]:{name:`Blackbeard`,role:`attacker`},[P.capitao]:{name:`Capitão`,role:`attacker`},[P.hibana]:{name:`Hibana`,role:`attacker`},[P.jackal]:{name:`Jackal`,role:`attacker`},[P.ying]:{name:`Ying`,role:`attacker`},[P.zofia]:{name:`Zofia`,role:`attacker`},[P.dokkaebi]:{name:`Dokkaebi`,role:`attacker`},[P.lion]:{name:`Lion`,role:`attacker`},[P.finka]:{name:`Finka`,role:`attacker`},[P.maverick]:{name:`Maverick`,role:`attacker`},[P.nomad]:{name:`Nomad`,role:`attacker`},[P.gridlock]:{name:`Gridlock`,role:`attacker`},[P.nokk]:{name:`Nøkk`,role:`attacker`},[P.amaru]:{name:`Amaru`,role:`attacker`},[P.kali]:{name:`Kali`,role:`attacker`},[P.iana]:{name:`Iana`,role:`attacker`},[P.ace]:{name:`Ace`,role:`attacker`},[P.zero]:{name:`Zero`,role:`attacker`},[P.flores]:{name:`Flores`,role:`attacker`},[P.osa]:{name:`Osa`,role:`attacker`},[P.sens]:{name:`Sens`,role:`attacker`},[P.grim]:{name:`Grim`,role:`attacker`},[P.brava]:{name:`Brava`,role:`attacker`},[P.ram]:{name:`Ram`,role:`attacker`},[P.deimos]:{name:`Deimos`,role:`attacker`},[P.rauora]:{name:`Rauora`,role:`attacker`},[P.sentry]:{name:`Sentry`,role:`defender`},[P.smoke]:{name:`Smoke`,role:`defender`},[P.mute]:{name:`Mute`,role:`defender`},[P.castle]:{name:`Castle`,role:`defender`},[P.pulse]:{name:`Pulse`,role:`defender`},[P.doc]:{name:`Doc`,role:`defender`},[P.rook]:{name:`Rook`,role:`defender`},[P.kapkan]:{name:`Kapkan`,role:`defender`},[P.tachanka]:{name:`Tachanka`,role:`defender`},[P.jager]:{name:`Jäger`,role:`defender`},[P.bandit]:{name:`Bandit`,role:`defender`},[P.frost]:{name:`Frost`,role:`defender`},[P.valkyrie]:{name:`Valkyrie`,role:`defender`},[P.caveira]:{name:`Caveira`,role:`defender`},[P.echo]:{name:`Echo`,role:`defender`},[P.mira]:{name:`Mira`,role:`defender`},[P.lesion]:{name:`Lesion`,role:`defender`},[P.ela]:{name:`Ela`,role:`defender`},[P.vigil]:{name:`Vigil`,role:`defender`},[P.alibi]:{name:`Alibi`,role:`defender`},[P.maestro]:{name:`Maestro`,role:`defender`},[P.clash]:{name:`Clash`,role:`defender`},[P.kaid]:{name:`Kaid`,role:`defender`},[P.mozzie]:{name:`Mozzie`,role:`defender`},[P.warden]:{name:`Warden`,role:`defender`},[P.goyo]:{name:`Goyo`,role:`defender`},[P.wamai]:{name:`Wamai`,role:`defender`},[P.oryx]:{name:`Oryx`,role:`defender`},[P.melusi]:{name:`Melusi`,role:`defender`},[P.aruni]:{name:`Aruni`,role:`defender`},[P.thunderbird]:{name:`Thunderbird`,role:`defender`},[P.thorn]:{name:`Thorn`,role:`defender`},[P.azami]:{name:`Azami`,role:`defender`},[P.solis]:{name:`Solis`,role:`defender`},[P.fenrir]:{name:`Fenrir`,role:`defender`},[P.tubarao]:{name:`Tubarao`,role:`defender`},[P.skopos]:{name:`Skopós`,role:`defender`},[P.denari]:{name:`Denari`,role:`defender`}}),re=Object.freeze({attacker:Object.entries(F).filter(([e,t])=>t.role===`attacker`).map(([e])=>({...F[s(Number(e))],id:s(Number(e))})),defender:Object.entries(F).filter(([e,t])=>t.role===`defender`).map(([e])=>({...F[s(Number(e))],id:s(Number(e))}))}),I=Object.freeze({favela:c(202283),fortress:c(293334),villa:c(286407),neighborhood:c(333785),themePark:c(229325),stadium:c(338641),outback:c(299162),yacht:c(62226),emeraldPlains:c(358871),chalet:c(62230),coastline:c(217482),bank:c(62228),consulate:c(62227),tower:c(255669),nighthavenLabs:c(375492),presidentialPlane:c(62225),house:c(62221),kafeDostoyevsky:c(62232),border:c(201746),closeQuarter:c(365400),lair:c(396234),herefordBase:c(62223),skyscraper:c(208094),cqbBasics:c(196157),oregon:c(62222),fortTruth:c(307723),kanal:c(62229),stadium2020:c(357300),clubhouse:c(62224),district:c(1193341205),shinden:c(359432),stadiumBravo:c(376421),muteCommTower:c(328922)}),L=Object.freeze({[I.favela]:`Favela`,[I.fortress]:`Fortress`,[I.villa]:`Villa`,[I.neighborhood]:`Neighborhood`,[I.themePark]:`Theme Park`,[I.stadium]:`Stadium`,[I.outback]:`Outback`,[I.yacht]:`Yacht`,[I.emeraldPlains]:`Emerald Plains`,[I.chalet]:`Chalet`,[I.coastline]:`Coastline`,[I.bank]:`Bank`,[I.consulate]:`Consulate`,[I.tower]:`Tower`,[I.nighthavenLabs]:`Nighthaven Labs`,[I.presidentialPlane]:`Presidential Plane`,[I.house]:`House`,[I.kafeDostoyevsky]:`Kafe Dostoyevsky`,[I.border]:`Border`,[I.closeQuarter]:`Close Quarter`,[I.outback]:`Outback`,[I.lair]:`Lair`,[I.herefordBase]:`Hereford Base`,[I.skyscraper]:`Skyscraper`,[I.cqbBasics]:`CQB Basics`,[I.oregon]:`Oregon`,[I.outback]:`Outback`,318512:`Stadium`,[I.fortTruth]:`Fort Truth`,[I.kanal]:`Kanal`,[I.cqbBasics]:`CQB Basics`,[I.stadium2020]:`Stadium 2020`,[I.clubhouse]:`Clubhouse`,[I.district]:`District`,[I.shinden]:`Shinden`,[I.stadiumBravo]:`Stadium Bravo`,[I.muteCommTower]:`M.U.T.E Comm Tower`}),R=Object.freeze({notPlayed:l(0),inProgress:l(1),lost:l(2),enemiesEliminated:l(3),objectiveComplete:l(4),timeRanOut:l(5),enemiesSurrendered:l(6),unknownReason:l(7),matchCancelled:l(8)}),z=Object.freeze({[R.notPlayed]:`Not Played`,[R.inProgress]:`In Progress`,[R.lost]:`Lost`,[R.enemiesEliminated]:`Enemies Eliminated`,[R.objectiveComplete]:`Objective Complete`,[R.timeRanOut]:`Time ran out`,[R.enemiesSurrendered]:`Enemies Surrendered`,[R.unknownReason]:`Unknown Reason`,[R.matchCancelled]:`Match Cancelled`}),B=Object.freeze({day:h(177839),night:h(177840)}),V=Object.freeze({[B.day]:`Day`,[B.night]:`Night`}),H=n({game:`string`,type:`string`,creation_time:`number`}),U=[R.enemiesEliminated,R.objectiveComplete,R.timeRanOut,R.enemiesSurrendered,R.unknownReason];function W(e){return U.includes(e)}const G=[R.notPlayed,R.inProgress];function K(e){return!G.includes(e)}const q=H.and({game:`'siege'`}),J=q.and({type:`'local_player'`,content:{profile_id:r(n.string)}}),Y=()=>n({id:`number`,value:`string`}),X=n({kills:`number`,deaths:`number`,assists:`number`,score:`number`}),ie=n({instigator_player_id:r(n.number),receiver_player_id:r(n.number),damage_amount:`number`,remaining_health:`number`,pre_damage_health:`number`,max_health:`number`,damage_type:E,damage_team_type:O,damage_item_id:r(n.number).or(`null`),damage_time:`number`}),Z=n({index:`number`,rounds_until_next_segment:`number`,segment_size:`number`,segment_index:`number`,team_0:{role:S,state:r(n.number)},team_1:{role:S,state:r(n.number)}}),Q=n({id:`number`,name:Y(),time_of_day:Y()}),ae=n({player_id:r(n.number),final_health:`number`,final_life_state:w,operator_name:Y().or(`null`)}),oe=n({round_data:Z,damage_events:ie.array(),players:ae.array()}),se=q.and({type:`'match_started'`,content:{game_mode:r(n.string),game_type:Y(),match_type:r(n.string),match_id:r(n.string),map:Q,is_round_based:`boolean`,current_round_index:`number`,rounds:Z.array()}}),ce=q.and({type:`'module_loaded'`}),le=q.and({type:`'module_unloaded'`}),ue=q.and({type:`'started_queuing'`,content:{game_mode:r(n.string),game_type:Y(),match_type:r(n.string)}}),de=q.and({type:`'stopped_queuing'`}),fe=q.and({type:`'unsupported_game_version'`,content:{hash:`string | null`,version:`string | null`}}),pe=q.and({type:`'match_ended'`}),me=q.and({type:`'map_changed'`,content:{map:Q}}),he=q.and({type:`'operator_banned'`,content:{index:`number`,team:b,side:S,operator_name:Y().or(`null`)}}),ge=q.and({type:`'round_ended'`,content:oe}),_e=q.and({type:`'phase_changed'`,content:{phase:v}}),ve=q.and({type:`'player_joined'`,content:{player_id:r(n.number),profile_id:r(n.string),is_bot:`boolean`,is_enemy:`boolean`,is_squad_member:`boolean`,is_local_player:`boolean`,username:`string`,side:S,team:b,is_privacy_username:`boolean`,has_avatar_hidden:`boolean`,has_commend_streak:`boolean`,ping_id:`number`,match_stats:X,life_state:w,ping:`number`}}).pipe(e=>({...e,content:{...e.content,starting_side:e.content.side}})),ye=q.and({type:`'player_left'`,content:{player_id:r(n.number)}}),be=q.and({type:`'player_operator_changed'`,content:{player_id:r(n.number),operator_name:Y().or(`null`)}}),xe=q.and({type:`'player_location_changed'`,content:{player_id:r(n.number),location_name:`string`}}),Se=q.and({type:`'player_side_changed'`,content:{player_id:r(n.number),side:S}}),Ce=q.and({type:`'player_stats_changed'`,content:{player_id:r(n.number),match_stats:X}}),we=q.and({type:`'player_ping_updated'`,content:{player_id:r(n.number),ping:`number`}}),Te=q.and({type:`'defuser_planted'`,content:{player_id:r(n.number)}}),Ee=q.and({type:`'defuser_sabotaged'`,content:{player_id:r(n.number)}}),De=q.and({type:`'defuser_picked_up'`,content:{player_id:r(n.number),initial:`boolean`}}),Oe=q.and({type:`'defuser_dropped'`,content:{player_id:r(n.number)}}),ke=q.and({type:`'player_life_state_changed'`,content:{player_id:r(n.number),life_state:w}}),Ae=q.and({type:`'player_died'`,content:{player_id:r(n.number),instigator_player_id:r(n.number)}}),$=q.and({type:`'player_downed'`,content:{player_id:r(n.number),instigator_player_id:r(n.number)}}),je=q.and({type:`'player_ping_id_changed'`,content:{player_id:r(n.number),ping_id:`number`}}),Me=q.and({type:`'player_team_changed'`,content:{player_id:r(n.number),team:b}}),Ne=q.and({type:`'game_log'`,content:{message:`string.json`}}),Pe=t({"#event1":`module_loaded | module_unloaded | unsupported_game_version | local_player | started_queuing | stopped_queuing | match_started | match_ended | map_changed | operator_banned | round_ended | phase_changed | player_joined | player_left | player_operator_changed | player_location_changed | player_side_changed | player_stats_changed`,"#event2":`player_life_state_changed | player_died | player_downed | player_ping_id_changed | player_team_changed | defuser_planted | defuser_sabotaged | defuser_picked_up | defuser_dropped | player_ping_updated | game_log`,event:`event1 | event2`,module_loaded:ce,module_unloaded:le,unsupported_game_version:fe,local_player:J,started_queuing:ue,stopped_queuing:de,match_started:se,match_ended:pe,map_changed:me,operator_banned:he,round_ended:ge,phase_changed:_e,player_joined:ve,player_left:ye,player_operator_changed:be,player_location_changed:xe,player_side_changed:Se,player_stats_changed:Ce,defuser_planted:Te,defuser_sabotaged:Ee,defuser_picked_up:De,defuser_dropped:Oe,player_ping_updated:we,player_life_state_changed:ke,player_died:Ae,player_downed:$,player_ping_id_changed:je,player_team_changed:Me,game_log:Ne}).export();function Fe(){return{key:`siege`,events:Pe}}export{H as BaseEvent,g as SIEGE_BOT_ID,D as SIEGE_DAMAGE_TEAM_TYPES,T as SIEGE_DAMAGE_TYPES,A as SIEGE_GAME_MODES_TO_ID,j as SIEGE_GAME_MODE_LABELS,_ as SIEGE_GAME_MODE_PHASES,M as SIEGE_GAME_MODE_TYPES_TO_ID,N as SIEGE_GAME_MODE_TYPE_LABELS,L as SIEGE_MAP_LABELS,I as SIEGE_MAP_TO_ID,k as SIEGE_MATCH_TYPES_TO_ID,te as SIEGE_MATCH_TYPE_LABELS,ne as SIEGE_OPERATOR_LABELS,F as SIEGE_OPERATOR_META,P as SIEGE_OPERATOR_TO_ID,C as SIEGE_PLAYER_LIFE_STATES,R as SIEGE_ROUND_STATES_TO_ID,z as SIEGE_ROUND_STATE_LABELS,x as SIEGE_SIDES,re as SIEGE_SIDE_OPERATORS,y as SIEGE_TEAMS,V as SIEGE_TIME_OF_DAY_LABELS,B as SIEGE_TIME_OF_DAY_TO_ID,O as SiegeDamageTeamTypeSchema,E as SiegeDamageTypeSchema,m as SiegeGameMode,v as SiegeGameModePhaseSchema,o as SiegeGameModeTypeNameId,ee as SiegeItemObjectId,c as SiegeMapNameId,u as SiegeMatchId,p as SiegeMatchType,s as SiegeOperatorNameId,d as SiegePlayerId,w as SiegePlayerLifeStateSchema,f as SiegeProfileId,l as SiegeRoundState,S as SiegeSideSchema,b as SiegeTeamSchema,h as SiegeTimeOfDay,K as isSiegeRoundStateCompleted,W as isSiegeRoundStateVictory,Fe as module};
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@overlayed/app",
3
3
  "author": "overlayed.gg",
4
4
  "homepage": "https://overlayed.gg",
5
- "version": "0.21.0",
5
+ "version": "0.22.0",
6
6
  "description": "Overlayed app",
7
7
  "license": "SEE LICENSE IN LICENSE.md",
8
8
  "repository": {
@@ -65,8 +65,8 @@
65
65
  "vite": "^7.1.3",
66
66
  "vitest": "^3.2.4",
67
67
  "@overlayed/api": "0.0.3",
68
- "@overlayed/cortex-client": "0.0.3",
69
68
  "@overlayed/events": "0.0.3",
69
+ "@overlayed/cortex-client": "0.0.3",
70
70
  "@overlayed/native-managers": "0.0.3",
71
71
  "@overlayed/siege": "0.0.3",
72
72
  "@overlayed/utils": "0.0.3",