factoriomod-debug 2.0.5 → 2.0.7

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.
@@ -0,0 +1,3420 @@
1
+
2
+ import {createRequire} from 'module'
3
+ const require = createRequire(import.meta.url)
4
+
5
+ import{a as ut,c as I,d as ke,e as ti,g as ni,h as Ko,j as hr,k as ml}from"./chunk-ZLQDNPPN.js";var ri=I(Jt=>{"use strict";Object.defineProperty(Jt,"__esModule",{value:!0});Jt.Event=Jt.Response=Jt.Message=void 0;var mr=class{constructor(e){this.seq=0,this.type=e}};Jt.Message=mr;var Go=class extends mr{constructor(e,t){super("response"),this.request_seq=e.seq,this.command=e.command,t?(this.success=!1,this.message=t):this.success=!0}};Jt.Response=Go;var Xo=class extends mr{constructor(e,t){super("event"),this.event=e,t&&(this.body=t)}};Jt.Event=Xo});var _l=I(oi=>{"use strict";Object.defineProperty(oi,"__esModule",{value:!0});oi.ProtocolServer=void 0;var vg=ut("events"),gr=ri(),Zo=class{get event(){return this._event||(this._event=(e,t)=>{this._listener=e,this._this=t;let r;return r={dispose:()=>{this._listener=void 0,this._this=void 0}},r}),this._event}fire(e){if(this._listener)try{this._listener.call(this._this,e)}catch{}}hasListener(){return!!this._listener}dispose(){this._listener=void 0,this._this=void 0}},ii=class n extends vg.EventEmitter{constructor(){super(),this._sendMessage=new Zo,this._sequence=1,this._pendingRequests=new Map,this.onDidSendMessage=this._sendMessage.event}dispose(){}handleMessage(e){if(e.type==="request")this.dispatchRequest(e);else if(e.type==="response"){let t=e,r=this._pendingRequests.get(t.request_seq);r&&(this._pendingRequests.delete(t.request_seq),r(t))}}_isRunningInline(){return this._sendMessage&&this._sendMessage.hasListener()}start(e,t){this._writableStream=t,this._rawData=Buffer.alloc(0),e.on("data",r=>this._handleData(r)),e.on("close",()=>{this._emitEvent(new gr.Event("close"))}),e.on("error",r=>{this._emitEvent(new gr.Event("error","inStream error: "+(r&&r.message)))}),t.on("error",r=>{this._emitEvent(new gr.Event("error","outStream error: "+(r&&r.message)))}),e.resume()}stop(){this._writableStream&&this._writableStream.end()}sendEvent(e){this._send("event",e)}sendResponse(e){e.seq>0?console.error(`attempt to send more than one response for command ${e.command}`):this._send("response",e)}sendRequest(e,t,r,i){let o={command:e};if(t&&Object.keys(t).length>0&&(o.arguments=t),this._send("request",o),i){this._pendingRequests.set(o.seq,i);let s=setTimeout(()=>{clearTimeout(s);let a=this._pendingRequests.get(o.seq);a&&(this._pendingRequests.delete(o.seq),a(new gr.Response(o,"timeout")))},r)}}dispatchRequest(e){}_emitEvent(e){this.emit(e.event,e)}_send(e,t){if(t.type=e,t.seq=this._sequence++,this._writableStream){let r=JSON.stringify(t);this._writableStream.write(`Content-Length: ${Buffer.byteLength(r,"utf8")}\r
6
+ \r
7
+ ${r}`,"utf8")}this._sendMessage.fire(t)}_handleData(e){for(this._rawData=Buffer.concat([this._rawData,e]);;){if(this._contentLength>=0){if(this._rawData.length>=this._contentLength){let t=this._rawData.toString("utf8",0,this._contentLength);if(this._rawData=this._rawData.slice(this._contentLength),this._contentLength=-1,t.length>0)try{let r=JSON.parse(t);this.handleMessage(r)}catch(r){this._emitEvent(new gr.Event("error","Error handling data: "+(r&&r.message)))}continue}}else{let t=this._rawData.indexOf(n.TWO_CRLF);if(t!==-1){let i=this._rawData.toString("utf8",0,t).split(`\r
8
+ `);for(let o=0;o<i.length;o++){let s=i[o].split(/: +/);s[0]=="Content-Length"&&(this._contentLength=+s[1])}this._rawData=this._rawData.slice(t+n.TWO_CRLF.length);continue}}break}}};oi.ProtocolServer=ii;ii.TWO_CRLF=`\r
9
+ \r
10
+ `});var bl=I(si=>{"use strict";Object.defineProperty(si,"__esModule",{value:!0});si.runDebugAdapter=void 0;var wg=ut("net");function Pg(n){let e=0;if(process.argv.slice(2).forEach(function(r,i,o){let s=/^--server=(\d{4,5})$/.exec(r);s&&(e=parseInt(s[1],10))}),e>0)console.error(`waiting for debug protocol on port ${e}`),wg.createServer(r=>{console.error(">> accepted connection from client"),r.on("end",()=>{console.error(`>> client connection closed
11
+ `)});let i=new n(!1,!0);i.setRunAsServer(!0),i.start(r,r)}).listen(e);else{let r=new n(!1);process.on("SIGTERM",()=>{r.shutdown()}),r.start(process.stdin,process.stdout)}}si.runDebugAdapter=Pg});var ci=I(J=>{"use strict";Object.defineProperty(J,"__esModule",{value:!0});J.DebugSession=J.ErrorDestination=J.MemoryEvent=J.InvalidatedEvent=J.ProgressEndEvent=J.ProgressUpdateEvent=J.ProgressStartEvent=J.CapabilitiesEvent=J.LoadedSourceEvent=J.ModuleEvent=J.BreakpointEvent=J.ThreadEvent=J.OutputEvent=J.ExitedEvent=J.TerminatedEvent=J.InitializedEvent=J.ContinuedEvent=J.StoppedEvent=J.CompletionItem=J.Module=J.Breakpoint=J.Variable=J.Thread=J.StackFrame=J.Scope=J.Source=void 0;var Rg=_l(),Ue=ri(),Eg=bl(),yl=ut("url"),Jo=class{constructor(e,t,r=0,i,o){this.name=e,this.path=t,this.sourceReference=r,i&&(this.origin=i),o&&(this.adapterData=o)}};J.Source=Jo;var Qo=class{constructor(e,t,r=!1){this.name=e,this.variablesReference=t,this.expensive=r}};J.Scope=Qo;var Yo=class{constructor(e,t,r,i=0,o=0){this.id=e,this.source=r,this.line=i,this.column=o,this.name=t}};J.StackFrame=Yo;var es=class{constructor(e,t){this.id=e,t?this.name=t:this.name="Thread #"+e}};J.Thread=es;var ts=class{constructor(e,t,r=0,i,o){this.name=e,this.value=t,this.variablesReference=r,typeof o=="number"&&(this.namedVariables=o),typeof i=="number"&&(this.indexedVariables=i)}};J.Variable=ts;var ns=class{constructor(e,t,r,i){this.verified=e;let o=this;typeof t=="number"&&(o.line=t),typeof r=="number"&&(o.column=r),i&&(o.source=i)}setId(e){this.id=e}};J.Breakpoint=ns;var rs=class{constructor(e,t){this.id=e,this.name=t}};J.Module=rs;var is=class{constructor(e,t,r=0){this.label=e,this.start=t,this.length=r}};J.CompletionItem=is;var os=class extends Ue.Event{constructor(e,t,r){super("stopped"),this.body={reason:e},typeof t=="number"&&(this.body.threadId=t),typeof r=="string"&&(this.body.text=r)}};J.StoppedEvent=os;var ss=class extends Ue.Event{constructor(e,t){super("continued"),this.body={threadId:e},typeof t=="boolean"&&(this.body.allThreadsContinued=t)}};J.ContinuedEvent=ss;var as=class extends Ue.Event{constructor(){super("initialized")}};J.InitializedEvent=as;var cs=class extends Ue.Event{constructor(e){if(super("terminated"),typeof e=="boolean"||e){let t=this;t.body={restart:e}}}};J.TerminatedEvent=cs;var ls=class extends Ue.Event{constructor(e){super("exited"),this.body={exitCode:e}}};J.ExitedEvent=ls;var us=class extends Ue.Event{constructor(e,t="console",r){super("output"),this.body={category:t,output:e},r!==void 0&&(this.body.data=r)}};J.OutputEvent=us;var ds=class extends Ue.Event{constructor(e,t){super("thread"),this.body={reason:e,threadId:t}}};J.ThreadEvent=ds;var fs=class extends Ue.Event{constructor(e,t){super("breakpoint"),this.body={reason:e,breakpoint:t}}};J.BreakpointEvent=fs;var ps=class extends Ue.Event{constructor(e,t){super("module"),this.body={reason:e,module:t}}};J.ModuleEvent=ps;var hs=class extends Ue.Event{constructor(e,t){super("loadedSource"),this.body={reason:e,source:t}}};J.LoadedSourceEvent=hs;var ms=class extends Ue.Event{constructor(e){super("capabilities"),this.body={capabilities:e}}};J.CapabilitiesEvent=ms;var gs=class extends Ue.Event{constructor(e,t,r){super("progressStart"),this.body={progressId:e,title:t},typeof r=="string"&&(this.body.message=r)}};J.ProgressStartEvent=gs;var _s=class extends Ue.Event{constructor(e,t){super("progressUpdate"),this.body={progressId:e},typeof t=="string"&&(this.body.message=t)}};J.ProgressUpdateEvent=_s;var bs=class extends Ue.Event{constructor(e,t){super("progressEnd"),this.body={progressId:e},typeof t=="string"&&(this.body.message=t)}};J.ProgressEndEvent=bs;var ys=class extends Ue.Event{constructor(e,t,r){super("invalidated"),this.body={},e&&(this.body.areas=e),t&&(this.body.threadId=t),r&&(this.body.stackFrameId=r)}};J.InvalidatedEvent=ys;var vs=class extends Ue.Event{constructor(e,t,r){super("memory"),this.body={memoryReference:e,offset:t,count:r}}};J.MemoryEvent=vs;var bn;(function(n){n[n.User=1]="User",n[n.Telemetry=2]="Telemetry"})(bn=J.ErrorDestination||(J.ErrorDestination={}));var ai=class n extends Rg.ProtocolServer{constructor(e,t){super();let r=typeof e=="boolean"?e:!1;this._debuggerLinesStartAt1=r,this._debuggerColumnsStartAt1=r,this._debuggerPathsAreURIs=!1,this._clientLinesStartAt1=!0,this._clientColumnsStartAt1=!0,this._clientPathsAreURIs=!1,this._isServer=typeof t=="boolean"?t:!1,this.on("close",()=>{this.shutdown()}),this.on("error",i=>{this.shutdown()})}setDebuggerPathFormat(e){this._debuggerPathsAreURIs=e!=="path"}setDebuggerLinesStartAt1(e){this._debuggerLinesStartAt1=e}setDebuggerColumnsStartAt1(e){this._debuggerColumnsStartAt1=e}setRunAsServer(e){this._isServer=e}static run(e){(0,Eg.runDebugAdapter)(e)}shutdown(){this._isServer||this._isRunningInline()||setTimeout(()=>{process.exit(0)},100)}sendErrorResponse(e,t,r,i,o=bn.User){let s;typeof t=="number"?(s={id:t,format:r},i&&(s.variables=i),o&bn.User&&(s.showUser=!0),o&bn.Telemetry&&(s.sendTelemetry=!0)):s=t,e.success=!1,e.message=n.formatPII(s.format,!0,s.variables),e.body||(e.body={}),e.body.error=s,this.sendResponse(e)}runInTerminalRequest(e,t,r){this.sendRequest("runInTerminal",e,t,r)}dispatchRequest(e){let t=new Ue.Response(e);try{if(e.command==="initialize"){var r=e.arguments;if(typeof r.linesStartAt1=="boolean"&&(this._clientLinesStartAt1=r.linesStartAt1),typeof r.columnsStartAt1=="boolean"&&(this._clientColumnsStartAt1=r.columnsStartAt1),r.pathFormat!=="path")this.sendErrorResponse(t,2018,"debug adapter only supports native paths",null,bn.Telemetry);else{let i=t;i.body={},this.initializeRequest(i,r)}}else e.command==="launch"?this.launchRequest(t,e.arguments,e):e.command==="attach"?this.attachRequest(t,e.arguments,e):e.command==="disconnect"?this.disconnectRequest(t,e.arguments,e):e.command==="terminate"?this.terminateRequest(t,e.arguments,e):e.command==="restart"?this.restartRequest(t,e.arguments,e):e.command==="setBreakpoints"?this.setBreakPointsRequest(t,e.arguments,e):e.command==="setFunctionBreakpoints"?this.setFunctionBreakPointsRequest(t,e.arguments,e):e.command==="setExceptionBreakpoints"?this.setExceptionBreakPointsRequest(t,e.arguments,e):e.command==="configurationDone"?this.configurationDoneRequest(t,e.arguments,e):e.command==="continue"?this.continueRequest(t,e.arguments,e):e.command==="next"?this.nextRequest(t,e.arguments,e):e.command==="stepIn"?this.stepInRequest(t,e.arguments,e):e.command==="stepOut"?this.stepOutRequest(t,e.arguments,e):e.command==="stepBack"?this.stepBackRequest(t,e.arguments,e):e.command==="reverseContinue"?this.reverseContinueRequest(t,e.arguments,e):e.command==="restartFrame"?this.restartFrameRequest(t,e.arguments,e):e.command==="goto"?this.gotoRequest(t,e.arguments,e):e.command==="pause"?this.pauseRequest(t,e.arguments,e):e.command==="stackTrace"?this.stackTraceRequest(t,e.arguments,e):e.command==="scopes"?this.scopesRequest(t,e.arguments,e):e.command==="variables"?this.variablesRequest(t,e.arguments,e):e.command==="setVariable"?this.setVariableRequest(t,e.arguments,e):e.command==="setExpression"?this.setExpressionRequest(t,e.arguments,e):e.command==="source"?this.sourceRequest(t,e.arguments,e):e.command==="threads"?this.threadsRequest(t,e):e.command==="terminateThreads"?this.terminateThreadsRequest(t,e.arguments,e):e.command==="evaluate"?this.evaluateRequest(t,e.arguments,e):e.command==="stepInTargets"?this.stepInTargetsRequest(t,e.arguments,e):e.command==="gotoTargets"?this.gotoTargetsRequest(t,e.arguments,e):e.command==="completions"?this.completionsRequest(t,e.arguments,e):e.command==="exceptionInfo"?this.exceptionInfoRequest(t,e.arguments,e):e.command==="loadedSources"?this.loadedSourcesRequest(t,e.arguments,e):e.command==="dataBreakpointInfo"?this.dataBreakpointInfoRequest(t,e.arguments,e):e.command==="setDataBreakpoints"?this.setDataBreakpointsRequest(t,e.arguments,e):e.command==="readMemory"?this.readMemoryRequest(t,e.arguments,e):e.command==="writeMemory"?this.writeMemoryRequest(t,e.arguments,e):e.command==="disassemble"?this.disassembleRequest(t,e.arguments,e):e.command==="cancel"?this.cancelRequest(t,e.arguments,e):e.command==="breakpointLocations"?this.breakpointLocationsRequest(t,e.arguments,e):e.command==="setInstructionBreakpoints"?this.setInstructionBreakpointsRequest(t,e.arguments,e):this.customRequest(e.command,t,e.arguments,e)}catch(i){this.sendErrorResponse(t,1104,"{_stack}",{_exception:i.message,_stack:i.stack},bn.Telemetry)}}initializeRequest(e,t){e.body.supportsConditionalBreakpoints=!1,e.body.supportsHitConditionalBreakpoints=!1,e.body.supportsFunctionBreakpoints=!1,e.body.supportsConfigurationDoneRequest=!0,e.body.supportsEvaluateForHovers=!1,e.body.supportsStepBack=!1,e.body.supportsSetVariable=!1,e.body.supportsRestartFrame=!1,e.body.supportsStepInTargetsRequest=!1,e.body.supportsGotoTargetsRequest=!1,e.body.supportsCompletionsRequest=!1,e.body.supportsRestartRequest=!1,e.body.supportsExceptionOptions=!1,e.body.supportsValueFormattingOptions=!1,e.body.supportsExceptionInfoRequest=!1,e.body.supportTerminateDebuggee=!1,e.body.supportsDelayedStackTraceLoading=!1,e.body.supportsLoadedSourcesRequest=!1,e.body.supportsLogPoints=!1,e.body.supportsTerminateThreadsRequest=!1,e.body.supportsSetExpression=!1,e.body.supportsTerminateRequest=!1,e.body.supportsDataBreakpoints=!1,e.body.supportsReadMemoryRequest=!1,e.body.supportsDisassembleRequest=!1,e.body.supportsCancelRequest=!1,e.body.supportsBreakpointLocationsRequest=!1,e.body.supportsClipboardContext=!1,e.body.supportsSteppingGranularity=!1,e.body.supportsInstructionBreakpoints=!1,e.body.supportsExceptionFilterOptions=!1,this.sendResponse(e)}disconnectRequest(e,t,r){this.sendResponse(e),this.shutdown()}launchRequest(e,t,r){this.sendResponse(e)}attachRequest(e,t,r){this.sendResponse(e)}terminateRequest(e,t,r){this.sendResponse(e)}restartRequest(e,t,r){this.sendResponse(e)}setBreakPointsRequest(e,t,r){this.sendResponse(e)}setFunctionBreakPointsRequest(e,t,r){this.sendResponse(e)}setExceptionBreakPointsRequest(e,t,r){this.sendResponse(e)}configurationDoneRequest(e,t,r){this.sendResponse(e)}continueRequest(e,t,r){this.sendResponse(e)}nextRequest(e,t,r){this.sendResponse(e)}stepInRequest(e,t,r){this.sendResponse(e)}stepOutRequest(e,t,r){this.sendResponse(e)}stepBackRequest(e,t,r){this.sendResponse(e)}reverseContinueRequest(e,t,r){this.sendResponse(e)}restartFrameRequest(e,t,r){this.sendResponse(e)}gotoRequest(e,t,r){this.sendResponse(e)}pauseRequest(e,t,r){this.sendResponse(e)}sourceRequest(e,t,r){this.sendResponse(e)}threadsRequest(e,t){this.sendResponse(e)}terminateThreadsRequest(e,t,r){this.sendResponse(e)}stackTraceRequest(e,t,r){this.sendResponse(e)}scopesRequest(e,t,r){this.sendResponse(e)}variablesRequest(e,t,r){this.sendResponse(e)}setVariableRequest(e,t,r){this.sendResponse(e)}setExpressionRequest(e,t,r){this.sendResponse(e)}evaluateRequest(e,t,r){this.sendResponse(e)}stepInTargetsRequest(e,t,r){this.sendResponse(e)}gotoTargetsRequest(e,t,r){this.sendResponse(e)}completionsRequest(e,t,r){this.sendResponse(e)}exceptionInfoRequest(e,t,r){this.sendResponse(e)}loadedSourcesRequest(e,t,r){this.sendResponse(e)}dataBreakpointInfoRequest(e,t,r){this.sendResponse(e)}setDataBreakpointsRequest(e,t,r){this.sendResponse(e)}readMemoryRequest(e,t,r){this.sendResponse(e)}writeMemoryRequest(e,t,r){this.sendResponse(e)}disassembleRequest(e,t,r){this.sendResponse(e)}cancelRequest(e,t,r){this.sendResponse(e)}breakpointLocationsRequest(e,t,r){this.sendResponse(e)}setInstructionBreakpointsRequest(e,t,r){this.sendResponse(e)}customRequest(e,t,r,i){this.sendErrorResponse(t,1014,"unrecognized request",null,bn.Telemetry)}convertClientLineToDebugger(e){return this._debuggerLinesStartAt1?this._clientLinesStartAt1?e:e+1:this._clientLinesStartAt1?e-1:e}convertDebuggerLineToClient(e){return this._debuggerLinesStartAt1?this._clientLinesStartAt1?e:e-1:this._clientLinesStartAt1?e+1:e}convertClientColumnToDebugger(e){return this._debuggerColumnsStartAt1?this._clientColumnsStartAt1?e:e+1:this._clientColumnsStartAt1?e-1:e}convertDebuggerColumnToClient(e){return this._debuggerColumnsStartAt1?this._clientColumnsStartAt1?e:e-1:this._clientColumnsStartAt1?e+1:e}convertClientPathToDebugger(e){return this._clientPathsAreURIs!==this._debuggerPathsAreURIs?this._clientPathsAreURIs?n.uri2path(e):n.path2uri(e):e}convertDebuggerPathToClient(e){return this._debuggerPathsAreURIs!==this._clientPathsAreURIs?this._debuggerPathsAreURIs?n.uri2path(e):n.path2uri(e):e}static path2uri(e){process.platform==="win32"&&(/^[A-Z]:/.test(e)&&(e=e[0].toLowerCase()+e.substr(1)),e=e.replace(/\\/g,"/")),e=encodeURI(e);let t=new yl.URL("file:");return t.pathname=e,t.toString()}static uri2path(e){let t=new yl.URL(e),r=decodeURIComponent(t.pathname);return process.platform==="win32"&&(/^\/[a-zA-Z]:/.test(r)&&(r=r[1].toLowerCase()+r.substr(2)),r=r.replace(/\//g,"\\")),r}static formatPII(e,t,r){return e.replace(n._formatPIIRegexp,function(i,o){return t&&o.length>0&&o[0]!=="_"?i:r[o]&&r.hasOwnProperty(o)?r[o]:i})}};J.DebugSession=ai;ai._formatPIIRegexp=/{([^}]+)}/g});var Rl=I(ui=>{"use strict";Object.defineProperty(ui,"__esModule",{value:!0});ui.InternalLogger=void 0;var vl=ut("fs"),wl=ut("path"),dt=di(),ws=class{constructor(e,t){this.beforeExitCallback=()=>this.dispose(),this._logCallback=e,this._logToConsole=t,this._minLogLevel=dt.LogLevel.Warn,this.disposeCallback=(r,i)=>{this.dispose(),i=i||2,i+=128,process.exit(i)}}async setup(e){if(this._minLogLevel=e.consoleMinLogLevel,this._prependTimestamp=e.prependTimestamp,e.logFilePath)if(!wl.isAbsolute(e.logFilePath))this.log(`logFilePath must be an absolute path: ${e.logFilePath}`,dt.LogLevel.Error);else{let t=r=>this.sendLog(`Error creating log file at path: ${e.logFilePath}. Error: ${r.toString()}
12
+ `,dt.LogLevel.Error);try{await vl.promises.mkdir(wl.dirname(e.logFilePath),{recursive:!0}),this.log(`Verbose logs are written to:
13
+ `,dt.LogLevel.Warn),this.log(e.logFilePath+`
14
+ `,dt.LogLevel.Warn),this._logFileStream=vl.createWriteStream(e.logFilePath),this.logDateTime(),this.setupShutdownListeners(),this._logFileStream.on("error",r=>{t(r)})}catch(r){t(r)}}}logDateTime(){let e=new Date,r=e.getUTCFullYear()+`-${e.getUTCMonth()+1}-`+e.getUTCDate()+", "+Pl();this.log(r+`
15
+ `,dt.LogLevel.Verbose,!1)}setupShutdownListeners(){process.on("beforeExit",this.beforeExitCallback),process.on("SIGTERM",this.disposeCallback),process.on("SIGINT",this.disposeCallback)}removeShutdownListeners(){process.removeListener("beforeExit",this.beforeExitCallback),process.removeListener("SIGTERM",this.disposeCallback),process.removeListener("SIGINT",this.disposeCallback)}dispose(){return new Promise(e=>{this.removeShutdownListeners(),this._logFileStream?(this._logFileStream.end(e),this._logFileStream=null):e()})}log(e,t,r=!0){if(this._minLogLevel!==dt.LogLevel.Stop){if(t>=this._minLogLevel&&this.sendLog(e,t),this._logToConsole){let i=t===dt.LogLevel.Error?console.error:t===dt.LogLevel.Warn?console.warn:null;i&&i((0,dt.trimLastNewline)(e))}t===dt.LogLevel.Error&&(e=`[${dt.LogLevel[t]}] ${e}`),this._prependTimestamp&&r&&(e="["+Pl()+"] "+e),this._logFileStream&&this._logFileStream.write(e)}}sendLog(e,t){if(e.length>1500){let r=!!e.match(/(\n|\r\n)$/);e=e.substr(0,1500)+"[...]",r&&(e=e+`
16
+ `)}if(this._logCallback){let r=new dt.LogOutputEvent(e,t);this._logCallback(r)}}};ui.InternalLogger=ws;function Pl(){let n=new Date,e=li(2,String(n.getUTCHours())),t=li(2,String(n.getUTCMinutes())),r=li(2,String(n.getUTCSeconds())),i=li(3,String(n.getUTCMilliseconds()));return e+":"+t+":"+r+"."+i+" UTC"}function li(n,e){return e.length>=n?e:String("0".repeat(n)+e).slice(-n)}});var di=I(ft=>{"use strict";Object.defineProperty(ft,"__esModule",{value:!0});ft.trimLastNewline=ft.LogOutputEvent=ft.logger=ft.Logger=ft.LogLevel=void 0;var Sg=Rl(),xg=ci(),Qt;(function(n){n[n.Verbose=0]="Verbose",n[n.Log=1]="Log",n[n.Warn=2]="Warn",n[n.Error=3]="Error",n[n.Stop=4]="Stop"})(Qt=ft.LogLevel||(ft.LogLevel={}));var fi=class{constructor(){this._pendingLogQ=[]}log(e,t=Qt.Log){e=e+`
17
+ `,this._write(e,t)}verbose(e){this.log(e,Qt.Verbose)}warn(e){this.log(e,Qt.Warn)}error(e){this.log(e,Qt.Error)}dispose(){if(this._currentLogger){let e=this._currentLogger.dispose();return this._currentLogger=null,e}else return Promise.resolve()}_write(e,t=Qt.Log){e=e+"",this._pendingLogQ?this._pendingLogQ.push({msg:e,level:t}):this._currentLogger&&this._currentLogger.log(e,t)}setup(e,t,r=!0){let i=typeof t=="string"?t:t&&this._logFilePathFromInit;if(this._currentLogger){let o={consoleMinLogLevel:e,logFilePath:i,prependTimestamp:r};this._currentLogger.setup(o).then(()=>{if(this._pendingLogQ){let s=this._pendingLogQ;this._pendingLogQ=null,s.forEach(a=>this._write(a.msg,a.level))}})}}init(e,t,r){this._pendingLogQ=this._pendingLogQ||[],this._currentLogger=new Sg.InternalLogger(e,r),this._logFilePathFromInit=t}};ft.Logger=fi;ft.logger=new fi;var Ps=class extends xg.OutputEvent{constructor(e,t){let r=t===Qt.Error?"stderr":t===Qt.Warn?"console":"stdout";super(e,r)}};ft.LogOutputEvent=Ps;function Lg(n){return n.replace(/(\n|\r\n)$/,"")}ft.trimLastNewline=Lg});var xl=I(pi=>{"use strict";Object.defineProperty(pi,"__esModule",{value:!0});pi.LoggingDebugSession=void 0;var Sl=di(),$n=Sl.logger,El=ci(),Rs=class extends El.DebugSession{constructor(e,t,r){super(t,r),this.obsolete_logFilePath=e,this.on("error",i=>{$n.error(i.body)})}start(e,t){super.start(e,t),$n.init(r=>this.sendEvent(r),this.obsolete_logFilePath,this._isServer)}sendEvent(e){if(!(e instanceof Sl.LogOutputEvent)){let t=e;e instanceof El.OutputEvent&&e.body&&e.body.data&&e.body.data.doNotLogOutput&&(delete e.body.data.doNotLogOutput,t={...e},t.body={...e.body,output:"<output not logged>"}),$n.verbose(`To client: ${JSON.stringify(t)}`)}super.sendEvent(e)}sendRequest(e,t,r,i){$n.verbose(`To client: ${JSON.stringify(e)}(${JSON.stringify(t)}), timeout: ${r}`),super.sendRequest(e,t,r,i)}sendResponse(e){$n.verbose(`To client: ${JSON.stringify(e)}`),super.sendResponse(e)}dispatchRequest(e){$n.verbose(`From client: ${e.command}(${JSON.stringify(e.arguments)})`),super.dispatchRequest(e)}};pi.LoggingDebugSession=Rs});var Ll=I(hi=>{"use strict";Object.defineProperty(hi,"__esModule",{value:!0});hi.Handles=void 0;var Es=class{constructor(e){this.START_HANDLE=1e3,this._handleMap=new Map,this._nextHandle=typeof e=="number"?e:this.START_HANDLE}reset(){this._nextHandle=this.START_HANDLE,this._handleMap=new Map}create(e){var t=this._nextHandle++;return this._handleMap.set(t,e),t}get(e,t){return this._handleMap.get(e)||t}};hi.Handles=Es});var Tl=I(W=>{"use strict";Object.defineProperty(W,"__esModule",{value:!0});W.Handles=W.Response=W.Event=W.ErrorDestination=W.CompletionItem=W.Module=W.Source=W.Breakpoint=W.Variable=W.Scope=W.StackFrame=W.Thread=W.MemoryEvent=W.InvalidatedEvent=W.ProgressEndEvent=W.ProgressUpdateEvent=W.ProgressStartEvent=W.CapabilitiesEvent=W.LoadedSourceEvent=W.ModuleEvent=W.BreakpointEvent=W.ThreadEvent=W.OutputEvent=W.ContinuedEvent=W.StoppedEvent=W.ExitedEvent=W.TerminatedEvent=W.InitializedEvent=W.logger=W.Logger=W.LoggingDebugSession=W.DebugSession=void 0;var Pe=ci();Object.defineProperty(W,"DebugSession",{enumerable:!0,get:function(){return Pe.DebugSession}});Object.defineProperty(W,"InitializedEvent",{enumerable:!0,get:function(){return Pe.InitializedEvent}});Object.defineProperty(W,"TerminatedEvent",{enumerable:!0,get:function(){return Pe.TerminatedEvent}});Object.defineProperty(W,"ExitedEvent",{enumerable:!0,get:function(){return Pe.ExitedEvent}});Object.defineProperty(W,"StoppedEvent",{enumerable:!0,get:function(){return Pe.StoppedEvent}});Object.defineProperty(W,"ContinuedEvent",{enumerable:!0,get:function(){return Pe.ContinuedEvent}});Object.defineProperty(W,"OutputEvent",{enumerable:!0,get:function(){return Pe.OutputEvent}});Object.defineProperty(W,"ThreadEvent",{enumerable:!0,get:function(){return Pe.ThreadEvent}});Object.defineProperty(W,"BreakpointEvent",{enumerable:!0,get:function(){return Pe.BreakpointEvent}});Object.defineProperty(W,"ModuleEvent",{enumerable:!0,get:function(){return Pe.ModuleEvent}});Object.defineProperty(W,"LoadedSourceEvent",{enumerable:!0,get:function(){return Pe.LoadedSourceEvent}});Object.defineProperty(W,"CapabilitiesEvent",{enumerable:!0,get:function(){return Pe.CapabilitiesEvent}});Object.defineProperty(W,"ProgressStartEvent",{enumerable:!0,get:function(){return Pe.ProgressStartEvent}});Object.defineProperty(W,"ProgressUpdateEvent",{enumerable:!0,get:function(){return Pe.ProgressUpdateEvent}});Object.defineProperty(W,"ProgressEndEvent",{enumerable:!0,get:function(){return Pe.ProgressEndEvent}});Object.defineProperty(W,"InvalidatedEvent",{enumerable:!0,get:function(){return Pe.InvalidatedEvent}});Object.defineProperty(W,"MemoryEvent",{enumerable:!0,get:function(){return Pe.MemoryEvent}});Object.defineProperty(W,"Thread",{enumerable:!0,get:function(){return Pe.Thread}});Object.defineProperty(W,"StackFrame",{enumerable:!0,get:function(){return Pe.StackFrame}});Object.defineProperty(W,"Scope",{enumerable:!0,get:function(){return Pe.Scope}});Object.defineProperty(W,"Variable",{enumerable:!0,get:function(){return Pe.Variable}});Object.defineProperty(W,"Breakpoint",{enumerable:!0,get:function(){return Pe.Breakpoint}});Object.defineProperty(W,"Source",{enumerable:!0,get:function(){return Pe.Source}});Object.defineProperty(W,"Module",{enumerable:!0,get:function(){return Pe.Module}});Object.defineProperty(W,"CompletionItem",{enumerable:!0,get:function(){return Pe.CompletionItem}});Object.defineProperty(W,"ErrorDestination",{enumerable:!0,get:function(){return Pe.ErrorDestination}});var Dg=xl();Object.defineProperty(W,"LoggingDebugSession",{enumerable:!0,get:function(){return Dg.LoggingDebugSession}});var Dl=di();W.Logger=Dl;var kl=ri();Object.defineProperty(W,"Event",{enumerable:!0,get:function(){return kl.Event}});Object.defineProperty(W,"Response",{enumerable:!0,get:function(){return kl.Response}});var kg=Ll();Object.defineProperty(W,"Handles",{enumerable:!0,get:function(){return kg.Handles}});var Tg=Dl.logger;W.logger=Tg});var _r=I((hR,Il)=>{"use strict";var Ig="2.0.0",Ag=Number.MAX_SAFE_INTEGER||9007199254740991,Cg=16,$g=250,Og=["major","premajor","minor","preminor","patch","prepatch","prerelease"];Il.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:Cg,MAX_SAFE_BUILD_LENGTH:$g,MAX_SAFE_INTEGER:Ag,RELEASE_TYPES:Og,SEMVER_SPEC_VERSION:Ig,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var br=I((mR,Al)=>{"use strict";var Mg=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...n)=>console.error("SEMVER",...n):()=>{};Al.exports=Mg});var On=I((Ct,Cl)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:Ss,MAX_SAFE_BUILD_LENGTH:qg,MAX_LENGTH:Ng}=_r(),Fg=br();Ct=Cl.exports={};var jg=Ct.re=[],Bg=Ct.safeRe=[],U=Ct.src=[],Ug=Ct.safeSrc=[],V=Ct.t={},Vg=0,xs="[a-zA-Z0-9-]",Wg=[["\\s",1],["\\d",Ng],[xs,qg]],zg=n=>{for(let[e,t]of Wg)n=n.split(`${e}*`).join(`${e}{0,${t}}`).split(`${e}+`).join(`${e}{1,${t}}`);return n},oe=(n,e,t)=>{let r=zg(e),i=Vg++;Fg(n,i,e),V[n]=i,U[i]=e,Ug[i]=r,jg[i]=new RegExp(e,t?"g":void 0),Bg[i]=new RegExp(r,t?"g":void 0)};oe("NUMERICIDENTIFIER","0|[1-9]\\d*");oe("NUMERICIDENTIFIERLOOSE","\\d+");oe("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${xs}*`);oe("MAINVERSION",`(${U[V.NUMERICIDENTIFIER]})\\.(${U[V.NUMERICIDENTIFIER]})\\.(${U[V.NUMERICIDENTIFIER]})`);oe("MAINVERSIONLOOSE",`(${U[V.NUMERICIDENTIFIERLOOSE]})\\.(${U[V.NUMERICIDENTIFIERLOOSE]})\\.(${U[V.NUMERICIDENTIFIERLOOSE]})`);oe("PRERELEASEIDENTIFIER",`(?:${U[V.NONNUMERICIDENTIFIER]}|${U[V.NUMERICIDENTIFIER]})`);oe("PRERELEASEIDENTIFIERLOOSE",`(?:${U[V.NONNUMERICIDENTIFIER]}|${U[V.NUMERICIDENTIFIERLOOSE]})`);oe("PRERELEASE",`(?:-(${U[V.PRERELEASEIDENTIFIER]}(?:\\.${U[V.PRERELEASEIDENTIFIER]})*))`);oe("PRERELEASELOOSE",`(?:-?(${U[V.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${U[V.PRERELEASEIDENTIFIERLOOSE]})*))`);oe("BUILDIDENTIFIER",`${xs}+`);oe("BUILD",`(?:\\+(${U[V.BUILDIDENTIFIER]}(?:\\.${U[V.BUILDIDENTIFIER]})*))`);oe("FULLPLAIN",`v?${U[V.MAINVERSION]}${U[V.PRERELEASE]}?${U[V.BUILD]}?`);oe("FULL",`^${U[V.FULLPLAIN]}$`);oe("LOOSEPLAIN",`[v=\\s]*${U[V.MAINVERSIONLOOSE]}${U[V.PRERELEASELOOSE]}?${U[V.BUILD]}?`);oe("LOOSE",`^${U[V.LOOSEPLAIN]}$`);oe("GTLT","((?:<|>)?=?)");oe("XRANGEIDENTIFIERLOOSE",`${U[V.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);oe("XRANGEIDENTIFIER",`${U[V.NUMERICIDENTIFIER]}|x|X|\\*`);oe("XRANGEPLAIN",`[v=\\s]*(${U[V.XRANGEIDENTIFIER]})(?:\\.(${U[V.XRANGEIDENTIFIER]})(?:\\.(${U[V.XRANGEIDENTIFIER]})(?:${U[V.PRERELEASE]})?${U[V.BUILD]}?)?)?`);oe("XRANGEPLAINLOOSE",`[v=\\s]*(${U[V.XRANGEIDENTIFIERLOOSE]})(?:\\.(${U[V.XRANGEIDENTIFIERLOOSE]})(?:\\.(${U[V.XRANGEIDENTIFIERLOOSE]})(?:${U[V.PRERELEASELOOSE]})?${U[V.BUILD]}?)?)?`);oe("XRANGE",`^${U[V.GTLT]}\\s*${U[V.XRANGEPLAIN]}$`);oe("XRANGELOOSE",`^${U[V.GTLT]}\\s*${U[V.XRANGEPLAINLOOSE]}$`);oe("COERCEPLAIN",`(^|[^\\d])(\\d{1,${Ss}})(?:\\.(\\d{1,${Ss}}))?(?:\\.(\\d{1,${Ss}}))?`);oe("COERCE",`${U[V.COERCEPLAIN]}(?:$|[^\\d])`);oe("COERCEFULL",U[V.COERCEPLAIN]+`(?:${U[V.PRERELEASE]})?(?:${U[V.BUILD]})?(?:$|[^\\d])`);oe("COERCERTL",U[V.COERCE],!0);oe("COERCERTLFULL",U[V.COERCEFULL],!0);oe("LONETILDE","(?:~>?)");oe("TILDETRIM",`(\\s*)${U[V.LONETILDE]}\\s+`,!0);Ct.tildeTrimReplace="$1~";oe("TILDE",`^${U[V.LONETILDE]}${U[V.XRANGEPLAIN]}$`);oe("TILDELOOSE",`^${U[V.LONETILDE]}${U[V.XRANGEPLAINLOOSE]}$`);oe("LONECARET","(?:\\^)");oe("CARETTRIM",`(\\s*)${U[V.LONECARET]}\\s+`,!0);Ct.caretTrimReplace="$1^";oe("CARET",`^${U[V.LONECARET]}${U[V.XRANGEPLAIN]}$`);oe("CARETLOOSE",`^${U[V.LONECARET]}${U[V.XRANGEPLAINLOOSE]}$`);oe("COMPARATORLOOSE",`^${U[V.GTLT]}\\s*(${U[V.LOOSEPLAIN]})$|^$`);oe("COMPARATOR",`^${U[V.GTLT]}\\s*(${U[V.FULLPLAIN]})$|^$`);oe("COMPARATORTRIM",`(\\s*)${U[V.GTLT]}\\s*(${U[V.LOOSEPLAIN]}|${U[V.XRANGEPLAIN]})`,!0);Ct.comparatorTrimReplace="$1$2$3";oe("HYPHENRANGE",`^\\s*(${U[V.XRANGEPLAIN]})\\s+-\\s+(${U[V.XRANGEPLAIN]})\\s*$`);oe("HYPHENRANGELOOSE",`^\\s*(${U[V.XRANGEPLAINLOOSE]})\\s+-\\s+(${U[V.XRANGEPLAINLOOSE]})\\s*$`);oe("STAR","(<|>)?=?\\s*\\*");oe("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");oe("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var mi=I((gR,$l)=>{"use strict";var Hg=Object.freeze({loose:!0}),Kg=Object.freeze({}),Gg=n=>n?typeof n!="object"?Hg:n:Kg;$l.exports=Gg});var Ls=I((_R,ql)=>{"use strict";var Ol=/^[0-9]+$/,Ml=(n,e)=>{let t=Ol.test(n),r=Ol.test(e);return t&&r&&(n=+n,e=+e),n===e?0:t&&!r?-1:r&&!t?1:n<e?-1:1},Xg=(n,e)=>Ml(e,n);ql.exports={compareIdentifiers:Ml,rcompareIdentifiers:Xg}});var We=I((bR,Fl)=>{"use strict";var gi=br(),{MAX_LENGTH:Nl,MAX_SAFE_INTEGER:_i}=_r(),{safeRe:bi,t:yi}=On(),Zg=mi(),{compareIdentifiers:Mn}=Ls(),Ds=class n{constructor(e,t){if(t=Zg(t),e instanceof n){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>Nl)throw new TypeError(`version is longer than ${Nl} characters`);gi("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let r=e.trim().match(t.loose?bi[yi.LOOSE]:bi[yi.FULL]);if(!r)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>_i||this.major<0)throw new TypeError("Invalid major version");if(this.minor>_i||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>_i||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map(i=>{if(/^[0-9]+$/.test(i)){let o=+i;if(o>=0&&o<_i)return o}return i}):this.prerelease=[],this.build=r[5]?r[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(gi("SemVer.compare",this.version,this.options,e),!(e instanceof n)){if(typeof e=="string"&&e===this.version)return 0;e=new n(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof n||(e=new n(e,this.options)),Mn(this.major,e.major)||Mn(this.minor,e.minor)||Mn(this.patch,e.patch)}comparePre(e){if(e instanceof n||(e=new n(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let t=0;do{let r=this.prerelease[t],i=e.prerelease[t];if(gi("prerelease compare",t,r,i),r===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(r===void 0)return-1;if(r===i)continue;return Mn(r,i)}while(++t)}compareBuild(e){e instanceof n||(e=new n(e,this.options));let t=0;do{let r=this.build[t],i=e.build[t];if(gi("build compare",t,r,i),r===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(r===void 0)return-1;if(r===i)continue;return Mn(r,i)}while(++t)}inc(e,t,r){if(e.startsWith("pre")){if(!t&&r===!1)throw new Error("invalid increment argument: identifier is empty");if(t){let i=`-${t}`.match(this.options.loose?bi[yi.PRERELEASELOOSE]:bi[yi.PRERELEASE]);if(!i||i[1]!==t)throw new Error(`invalid identifier: ${t}`)}}switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,r),this.inc("pre",t,r);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t,r),this.inc("pre",t,r);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let i=Number(r)?1:0;if(this.prerelease.length===0)this.prerelease=[i];else{let o=this.prerelease.length;for(;--o>=0;)typeof this.prerelease[o]=="number"&&(this.prerelease[o]++,o=-2);if(o===-1){if(t===this.prerelease.join(".")&&r===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(i)}}if(t){let o=[t,i];r===!1&&(o=[t]),Mn(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=o):this.prerelease=o}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};Fl.exports=Ds});var yn=I((yR,Bl)=>{"use strict";var jl=We(),Jg=(n,e,t=!1)=>{if(n instanceof jl)return n;try{return new jl(n,e)}catch(r){if(!t)return null;throw r}};Bl.exports=Jg});var Vl=I((vR,Ul)=>{"use strict";var Qg=yn(),Yg=(n,e)=>{let t=Qg(n,e);return t?t.version:null};Ul.exports=Yg});var zl=I((wR,Wl)=>{"use strict";var e_=yn(),t_=(n,e)=>{let t=e_(n.trim().replace(/^[=v]+/,""),e);return t?t.version:null};Wl.exports=t_});var Gl=I((PR,Kl)=>{"use strict";var Hl=We(),n_=(n,e,t,r,i)=>{typeof t=="string"&&(i=r,r=t,t=void 0);try{return new Hl(n instanceof Hl?n.version:n,t).inc(e,r,i).version}catch{return null}};Kl.exports=n_});var Jl=I((RR,Zl)=>{"use strict";var Xl=yn(),r_=(n,e)=>{let t=Xl(n,null,!0),r=Xl(e,null,!0),i=t.compare(r);if(i===0)return null;let o=i>0,s=o?t:r,a=o?r:t,d=!!s.prerelease.length;if(!!a.prerelease.length&&!d){if(!a.patch&&!a.minor)return"major";if(a.compareMain(s)===0)return a.minor&&!a.patch?"minor":"patch"}let h=d?"pre":"";return t.major!==r.major?h+"major":t.minor!==r.minor?h+"minor":t.patch!==r.patch?h+"patch":"prerelease"};Zl.exports=r_});var Yl=I((ER,Ql)=>{"use strict";var i_=We(),o_=(n,e)=>new i_(n,e).major;Ql.exports=o_});var tu=I((SR,eu)=>{"use strict";var s_=We(),a_=(n,e)=>new s_(n,e).minor;eu.exports=a_});var ru=I((xR,nu)=>{"use strict";var c_=We(),l_=(n,e)=>new c_(n,e).patch;nu.exports=l_});var ou=I((LR,iu)=>{"use strict";var u_=yn(),d_=(n,e)=>{let t=u_(n,e);return t&&t.prerelease.length?t.prerelease:null};iu.exports=d_});var _t=I((DR,au)=>{"use strict";var su=We(),f_=(n,e,t)=>new su(n,t).compare(new su(e,t));au.exports=f_});var lu=I((kR,cu)=>{"use strict";var p_=_t(),h_=(n,e,t)=>p_(e,n,t);cu.exports=h_});var du=I((TR,uu)=>{"use strict";var m_=_t(),g_=(n,e)=>m_(n,e,!0);uu.exports=g_});var vi=I((IR,pu)=>{"use strict";var fu=We(),__=(n,e,t)=>{let r=new fu(n,t),i=new fu(e,t);return r.compare(i)||r.compareBuild(i)};pu.exports=__});var mu=I((AR,hu)=>{"use strict";var b_=vi(),y_=(n,e)=>n.sort((t,r)=>b_(t,r,e));hu.exports=y_});var _u=I((CR,gu)=>{"use strict";var v_=vi(),w_=(n,e)=>n.sort((t,r)=>v_(r,t,e));gu.exports=w_});var yr=I(($R,bu)=>{"use strict";var P_=_t(),R_=(n,e,t)=>P_(n,e,t)>0;bu.exports=R_});var wi=I((OR,yu)=>{"use strict";var E_=_t(),S_=(n,e,t)=>E_(n,e,t)<0;yu.exports=S_});var ks=I((MR,vu)=>{"use strict";var x_=_t(),L_=(n,e,t)=>x_(n,e,t)===0;vu.exports=L_});var Ts=I((qR,wu)=>{"use strict";var D_=_t(),k_=(n,e,t)=>D_(n,e,t)!==0;wu.exports=k_});var Pi=I((NR,Pu)=>{"use strict";var T_=_t(),I_=(n,e,t)=>T_(n,e,t)>=0;Pu.exports=I_});var Ri=I((FR,Ru)=>{"use strict";var A_=_t(),C_=(n,e,t)=>A_(n,e,t)<=0;Ru.exports=C_});var Is=I((jR,Eu)=>{"use strict";var $_=ks(),O_=Ts(),M_=yr(),q_=Pi(),N_=wi(),F_=Ri(),j_=(n,e,t,r)=>{switch(e){case"===":return typeof n=="object"&&(n=n.version),typeof t=="object"&&(t=t.version),n===t;case"!==":return typeof n=="object"&&(n=n.version),typeof t=="object"&&(t=t.version),n!==t;case"":case"=":case"==":return $_(n,t,r);case"!=":return O_(n,t,r);case">":return M_(n,t,r);case">=":return q_(n,t,r);case"<":return N_(n,t,r);case"<=":return F_(n,t,r);default:throw new TypeError(`Invalid operator: ${e}`)}};Eu.exports=j_});var xu=I((BR,Su)=>{"use strict";var B_=We(),U_=yn(),{safeRe:Ei,t:Si}=On(),V_=(n,e)=>{if(n instanceof B_)return n;if(typeof n=="number"&&(n=String(n)),typeof n!="string")return null;e=e||{};let t=null;if(!e.rtl)t=n.match(e.includePrerelease?Ei[Si.COERCEFULL]:Ei[Si.COERCE]);else{let d=e.includePrerelease?Ei[Si.COERCERTLFULL]:Ei[Si.COERCERTL],l;for(;(l=d.exec(n))&&(!t||t.index+t[0].length!==n.length);)(!t||l.index+l[0].length!==t.index+t[0].length)&&(t=l),d.lastIndex=l.index+l[1].length+l[2].length;d.lastIndex=-1}if(t===null)return null;let r=t[2],i=t[3]||"0",o=t[4]||"0",s=e.includePrerelease&&t[5]?`-${t[5]}`:"",a=e.includePrerelease&&t[6]?`+${t[6]}`:"";return U_(`${r}.${i}.${o}${s}${a}`,e)};Su.exports=V_});var Du=I((UR,Lu)=>{"use strict";var As=class{constructor(){this.max=1e3,this.map=new Map}get(e){let t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){let i=this.map.keys().next().value;this.delete(i)}this.map.set(e,t)}return this}};Lu.exports=As});var bt=I((VR,Au)=>{"use strict";var W_=/\s+/g,Cs=class n{constructor(e,t){if(t=H_(t),e instanceof n)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new n(e.raw,t);if(e instanceof $s)return this.raw=e.value,this.set=[[e]],this.formatted=void 0,this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e.trim().replace(W_," "),this.set=this.raw.split("||").map(r=>this.parseRange(r.trim())).filter(r=>r.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let r=this.set[0];if(this.set=this.set.filter(i=>!Tu(i[0])),this.set.length===0)this.set=[r];else if(this.set.length>1){for(let i of this.set)if(i.length===1&&Y_(i[0])){this.set=[i];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let e=0;e<this.set.length;e++){e>0&&(this.formatted+="||");let t=this.set[e];for(let r=0;r<t.length;r++)r>0&&(this.formatted+=" "),this.formatted+=t[r].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){let r=((this.options.includePrerelease&&J_)|(this.options.loose&&Q_))+":"+e,i=ku.get(r);if(i)return i;let o=this.options.loose,s=o?et[Xe.HYPHENRANGELOOSE]:et[Xe.HYPHENRANGE];e=e.replace(s,lb(this.options.includePrerelease)),Se("hyphen replace",e),e=e.replace(et[Xe.COMPARATORTRIM],G_),Se("comparator trim",e),e=e.replace(et[Xe.TILDETRIM],X_),Se("tilde trim",e),e=e.replace(et[Xe.CARETTRIM],Z_),Se("caret trim",e);let a=e.split(" ").map(v=>eb(v,this.options)).join(" ").split(/\s+/).map(v=>cb(v,this.options));o&&(a=a.filter(v=>(Se("loose invalid filter",v,this.options),!!v.match(et[Xe.COMPARATORLOOSE])))),Se("range list",a);let d=new Map,l=a.map(v=>new $s(v,this.options));for(let v of l){if(Tu(v))return[v];d.set(v.value,v)}d.size>1&&d.has("")&&d.delete("");let h=[...d.values()];return ku.set(r,h),h}intersects(e,t){if(!(e instanceof n))throw new TypeError("a Range is required");return this.set.some(r=>Iu(r,t)&&e.set.some(i=>Iu(i,t)&&r.every(o=>i.every(s=>o.intersects(s,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new K_(e,this.options)}catch{return!1}for(let t=0;t<this.set.length;t++)if(ub(this.set[t],e,this.options))return!0;return!1}};Au.exports=Cs;var z_=Du(),ku=new z_,H_=mi(),$s=vr(),Se=br(),K_=We(),{safeRe:et,t:Xe,comparatorTrimReplace:G_,tildeTrimReplace:X_,caretTrimReplace:Z_}=On(),{FLAG_INCLUDE_PRERELEASE:J_,FLAG_LOOSE:Q_}=_r(),Tu=n=>n.value==="<0.0.0-0",Y_=n=>n.value==="",Iu=(n,e)=>{let t=!0,r=n.slice(),i=r.pop();for(;t&&r.length;)t=r.every(o=>i.intersects(o,e)),i=r.pop();return t},eb=(n,e)=>(Se("comp",n,e),n=rb(n,e),Se("caret",n),n=tb(n,e),Se("tildes",n),n=ob(n,e),Se("xrange",n),n=ab(n,e),Se("stars",n),n),Ze=n=>!n||n.toLowerCase()==="x"||n==="*",tb=(n,e)=>n.trim().split(/\s+/).map(t=>nb(t,e)).join(" "),nb=(n,e)=>{let t=e.loose?et[Xe.TILDELOOSE]:et[Xe.TILDE];return n.replace(t,(r,i,o,s,a)=>{Se("tilde",n,r,i,o,s,a);let d;return Ze(i)?d="":Ze(o)?d=`>=${i}.0.0 <${+i+1}.0.0-0`:Ze(s)?d=`>=${i}.${o}.0 <${i}.${+o+1}.0-0`:a?(Se("replaceTilde pr",a),d=`>=${i}.${o}.${s}-${a} <${i}.${+o+1}.0-0`):d=`>=${i}.${o}.${s} <${i}.${+o+1}.0-0`,Se("tilde return",d),d})},rb=(n,e)=>n.trim().split(/\s+/).map(t=>ib(t,e)).join(" "),ib=(n,e)=>{Se("caret",n,e);let t=e.loose?et[Xe.CARETLOOSE]:et[Xe.CARET],r=e.includePrerelease?"-0":"";return n.replace(t,(i,o,s,a,d)=>{Se("caret",n,i,o,s,a,d);let l;return Ze(o)?l="":Ze(s)?l=`>=${o}.0.0${r} <${+o+1}.0.0-0`:Ze(a)?o==="0"?l=`>=${o}.${s}.0${r} <${o}.${+s+1}.0-0`:l=`>=${o}.${s}.0${r} <${+o+1}.0.0-0`:d?(Se("replaceCaret pr",d),o==="0"?s==="0"?l=`>=${o}.${s}.${a}-${d} <${o}.${s}.${+a+1}-0`:l=`>=${o}.${s}.${a}-${d} <${o}.${+s+1}.0-0`:l=`>=${o}.${s}.${a}-${d} <${+o+1}.0.0-0`):(Se("no pr"),o==="0"?s==="0"?l=`>=${o}.${s}.${a}${r} <${o}.${s}.${+a+1}-0`:l=`>=${o}.${s}.${a}${r} <${o}.${+s+1}.0-0`:l=`>=${o}.${s}.${a} <${+o+1}.0.0-0`),Se("caret return",l),l})},ob=(n,e)=>(Se("replaceXRanges",n,e),n.split(/\s+/).map(t=>sb(t,e)).join(" ")),sb=(n,e)=>{n=n.trim();let t=e.loose?et[Xe.XRANGELOOSE]:et[Xe.XRANGE];return n.replace(t,(r,i,o,s,a,d)=>{Se("xRange",n,r,i,o,s,a,d);let l=Ze(o),h=l||Ze(s),v=h||Ze(a),w=v;return i==="="&&w&&(i=""),d=e.includePrerelease?"-0":"",l?i===">"||i==="<"?r="<0.0.0-0":r="*":i&&w?(h&&(s=0),a=0,i===">"?(i=">=",h?(o=+o+1,s=0,a=0):(s=+s+1,a=0)):i==="<="&&(i="<",h?o=+o+1:s=+s+1),i==="<"&&(d="-0"),r=`${i+o}.${s}.${a}${d}`):h?r=`>=${o}.0.0${d} <${+o+1}.0.0-0`:v&&(r=`>=${o}.${s}.0${d} <${o}.${+s+1}.0-0`),Se("xRange return",r),r})},ab=(n,e)=>(Se("replaceStars",n,e),n.trim().replace(et[Xe.STAR],"")),cb=(n,e)=>(Se("replaceGTE0",n,e),n.trim().replace(et[e.includePrerelease?Xe.GTE0PRE:Xe.GTE0],"")),lb=n=>(e,t,r,i,o,s,a,d,l,h,v,w)=>(Ze(r)?t="":Ze(i)?t=`>=${r}.0.0${n?"-0":""}`:Ze(o)?t=`>=${r}.${i}.0${n?"-0":""}`:s?t=`>=${t}`:t=`>=${t}${n?"-0":""}`,Ze(l)?d="":Ze(h)?d=`<${+l+1}.0.0-0`:Ze(v)?d=`<${l}.${+h+1}.0-0`:w?d=`<=${l}.${h}.${v}-${w}`:n?d=`<${l}.${h}.${+v+1}-0`:d=`<=${d}`,`${t} ${d}`.trim()),ub=(n,e,t)=>{for(let r=0;r<n.length;r++)if(!n[r].test(e))return!1;if(e.prerelease.length&&!t.includePrerelease){for(let r=0;r<n.length;r++)if(Se(n[r].semver),n[r].semver!==$s.ANY&&n[r].semver.prerelease.length>0){let i=n[r].semver;if(i.major===e.major&&i.minor===e.minor&&i.patch===e.patch)return!0}return!1}return!0}});var vr=I((WR,Nu)=>{"use strict";var wr=Symbol("SemVer ANY"),qs=class n{static get ANY(){return wr}constructor(e,t){if(t=Cu(t),e instanceof n){if(e.loose===!!t.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),Ms("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===wr?this.value="":this.value=this.operator+this.semver.version,Ms("comp",this)}parse(e){let t=this.options.loose?$u[Ou.COMPARATORLOOSE]:$u[Ou.COMPARATOR],r=e.match(t);if(!r)throw new TypeError(`Invalid comparator: ${e}`);this.operator=r[1]!==void 0?r[1]:"",this.operator==="="&&(this.operator=""),r[2]?this.semver=new Mu(r[2],this.options.loose):this.semver=wr}toString(){return this.value}test(e){if(Ms("Comparator.test",e,this.options.loose),this.semver===wr||e===wr)return!0;if(typeof e=="string")try{e=new Mu(e,this.options)}catch{return!1}return Os(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof n))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new qu(e.value,t).test(this.value):e.operator===""?e.value===""?!0:new qu(this.value,t).test(e.semver):(t=Cu(t),t.includePrerelease&&(this.value==="<0.0.0-0"||e.value==="<0.0.0-0")||!t.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&e.operator.startsWith(">")||this.operator.startsWith("<")&&e.operator.startsWith("<")||this.semver.version===e.semver.version&&this.operator.includes("=")&&e.operator.includes("=")||Os(this.semver,"<",e.semver,t)&&this.operator.startsWith(">")&&e.operator.startsWith("<")||Os(this.semver,">",e.semver,t)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))}};Nu.exports=qs;var Cu=mi(),{safeRe:$u,t:Ou}=On(),Os=Is(),Ms=br(),Mu=We(),qu=bt()});var Pr=I((zR,Fu)=>{"use strict";var db=bt(),fb=(n,e,t)=>{try{e=new db(e,t)}catch{return!1}return e.test(n)};Fu.exports=fb});var Bu=I((HR,ju)=>{"use strict";var pb=bt(),hb=(n,e)=>new pb(n,e).set.map(t=>t.map(r=>r.value).join(" ").trim().split(" "));ju.exports=hb});var Vu=I((KR,Uu)=>{"use strict";var mb=We(),gb=bt(),_b=(n,e,t)=>{let r=null,i=null,o=null;try{o=new gb(e,t)}catch{return null}return n.forEach(s=>{o.test(s)&&(!r||i.compare(s)===-1)&&(r=s,i=new mb(r,t))}),r};Uu.exports=_b});var zu=I((GR,Wu)=>{"use strict";var bb=We(),yb=bt(),vb=(n,e,t)=>{let r=null,i=null,o=null;try{o=new yb(e,t)}catch{return null}return n.forEach(s=>{o.test(s)&&(!r||i.compare(s)===1)&&(r=s,i=new bb(r,t))}),r};Wu.exports=vb});var Gu=I((XR,Ku)=>{"use strict";var Ns=We(),wb=bt(),Hu=yr(),Pb=(n,e)=>{n=new wb(n,e);let t=new Ns("0.0.0");if(n.test(t)||(t=new Ns("0.0.0-0"),n.test(t)))return t;t=null;for(let r=0;r<n.set.length;++r){let i=n.set[r],o=null;i.forEach(s=>{let a=new Ns(s.semver.version);switch(s.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!o||Hu(a,o))&&(o=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${s.operator}`)}}),o&&(!t||Hu(t,o))&&(t=o)}return t&&n.test(t)?t:null};Ku.exports=Pb});var Zu=I((ZR,Xu)=>{"use strict";var Rb=bt(),Eb=(n,e)=>{try{return new Rb(n,e).range||"*"}catch{return null}};Xu.exports=Eb});var xi=I((JR,ed)=>{"use strict";var Sb=We(),Yu=vr(),{ANY:xb}=Yu,Lb=bt(),Db=Pr(),Ju=yr(),Qu=wi(),kb=Ri(),Tb=Pi(),Ib=(n,e,t,r)=>{n=new Sb(n,r),e=new Lb(e,r);let i,o,s,a,d;switch(t){case">":i=Ju,o=kb,s=Qu,a=">",d=">=";break;case"<":i=Qu,o=Tb,s=Ju,a="<",d="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Db(n,e,r))return!1;for(let l=0;l<e.set.length;++l){let h=e.set[l],v=null,w=null;if(h.forEach(_=>{_.semver===xb&&(_=new Yu(">=0.0.0")),v=v||_,w=w||_,i(_.semver,v.semver,r)?v=_:s(_.semver,w.semver,r)&&(w=_)}),v.operator===a||v.operator===d||(!w.operator||w.operator===a)&&o(n,w.semver))return!1;if(w.operator===d&&s(n,w.semver))return!1}return!0};ed.exports=Ib});var nd=I((QR,td)=>{"use strict";var Ab=xi(),Cb=(n,e,t)=>Ab(n,e,">",t);td.exports=Cb});var id=I((YR,rd)=>{"use strict";var $b=xi(),Ob=(n,e,t)=>$b(n,e,"<",t);rd.exports=Ob});var ad=I((eE,sd)=>{"use strict";var od=bt(),Mb=(n,e,t)=>(n=new od(n,t),e=new od(e,t),n.intersects(e,t));sd.exports=Mb});var ld=I((tE,cd)=>{"use strict";var qb=Pr(),Nb=_t();cd.exports=(n,e,t)=>{let r=[],i=null,o=null,s=n.sort((h,v)=>Nb(h,v,t));for(let h of s)qb(h,e,t)?(o=h,i||(i=h)):(o&&r.push([i,o]),o=null,i=null);i&&r.push([i,null]);let a=[];for(let[h,v]of r)h===v?a.push(h):!v&&h===s[0]?a.push("*"):v?h===s[0]?a.push(`<=${v}`):a.push(`${h} - ${v}`):a.push(`>=${h}`);let d=a.join(" || "),l=typeof e.raw=="string"?e.raw:String(e);return d.length<l.length?d:e}});var md=I((nE,hd)=>{"use strict";var ud=bt(),js=vr(),{ANY:Fs}=js,Rr=Pr(),Bs=_t(),Fb=(n,e,t={})=>{if(n===e)return!0;n=new ud(n,t),e=new ud(e,t);let r=!1;e:for(let i of n.set){for(let o of e.set){let s=Bb(i,o,t);if(r=r||s!==null,s)continue e}if(r)return!1}return!0},jb=[new js(">=0.0.0-0")],dd=[new js(">=0.0.0")],Bb=(n,e,t)=>{if(n===e)return!0;if(n.length===1&&n[0].semver===Fs){if(e.length===1&&e[0].semver===Fs)return!0;t.includePrerelease?n=jb:n=dd}if(e.length===1&&e[0].semver===Fs){if(t.includePrerelease)return!0;e=dd}let r=new Set,i,o;for(let _ of n)_.operator===">"||_.operator===">="?i=fd(i,_,t):_.operator==="<"||_.operator==="<="?o=pd(o,_,t):r.add(_.semver);if(r.size>1)return null;let s;if(i&&o){if(s=Bs(i.semver,o.semver,t),s>0)return null;if(s===0&&(i.operator!==">="||o.operator!=="<="))return null}for(let _ of r){if(i&&!Rr(_,String(i),t)||o&&!Rr(_,String(o),t))return null;for(let L of e)if(!Rr(_,String(L),t))return!1;return!0}let a,d,l,h,v=o&&!t.includePrerelease&&o.semver.prerelease.length?o.semver:!1,w=i&&!t.includePrerelease&&i.semver.prerelease.length?i.semver:!1;v&&v.prerelease.length===1&&o.operator==="<"&&v.prerelease[0]===0&&(v=!1);for(let _ of e){if(h=h||_.operator===">"||_.operator===">=",l=l||_.operator==="<"||_.operator==="<=",i){if(w&&_.semver.prerelease&&_.semver.prerelease.length&&_.semver.major===w.major&&_.semver.minor===w.minor&&_.semver.patch===w.patch&&(w=!1),_.operator===">"||_.operator===">="){if(a=fd(i,_,t),a===_&&a!==i)return!1}else if(i.operator===">="&&!Rr(i.semver,String(_),t))return!1}if(o){if(v&&_.semver.prerelease&&_.semver.prerelease.length&&_.semver.major===v.major&&_.semver.minor===v.minor&&_.semver.patch===v.patch&&(v=!1),_.operator==="<"||_.operator==="<="){if(d=pd(o,_,t),d===_&&d!==o)return!1}else if(o.operator==="<="&&!Rr(o.semver,String(_),t))return!1}if(!_.operator&&(o||i)&&s!==0)return!1}return!(i&&l&&!o&&s!==0||o&&h&&!i&&s!==0||w||v)},fd=(n,e,t)=>{if(!n)return e;let r=Bs(n.semver,e.semver,t);return r>0?n:r<0||e.operator===">"&&n.operator===">="?e:n},pd=(n,e,t)=>{if(!n)return e;let r=Bs(n.semver,e.semver,t);return r<0?n:r>0||e.operator==="<"&&n.operator==="<="?e:n};hd.exports=Fb});var yd=I((rE,bd)=>{"use strict";var Us=On(),gd=_r(),Ub=We(),_d=Ls(),Vb=yn(),Wb=Vl(),zb=zl(),Hb=Gl(),Kb=Jl(),Gb=Yl(),Xb=tu(),Zb=ru(),Jb=ou(),Qb=_t(),Yb=lu(),ey=du(),ty=vi(),ny=mu(),ry=_u(),iy=yr(),oy=wi(),sy=ks(),ay=Ts(),cy=Pi(),ly=Ri(),uy=Is(),dy=xu(),fy=vr(),py=bt(),hy=Pr(),my=Bu(),gy=Vu(),_y=zu(),by=Gu(),yy=Zu(),vy=xi(),wy=nd(),Py=id(),Ry=ad(),Ey=ld(),Sy=md();bd.exports={parse:Vb,valid:Wb,clean:zb,inc:Hb,diff:Kb,major:Gb,minor:Xb,patch:Zb,prerelease:Jb,compare:Qb,rcompare:Yb,compareLoose:ey,compareBuild:ty,sort:ny,rsort:ry,gt:iy,lt:oy,eq:sy,neq:ay,gte:cy,lte:ly,cmp:uy,coerce:dy,Comparator:fy,Range:py,satisfies:hy,toComparators:my,maxSatisfying:gy,minSatisfying:_y,minVersion:by,validRange:yy,outside:vy,gtr:wy,ltr:Py,intersects:Ry,simplifyRange:Ey,subset:Sy,SemVer:Ub,re:Us.re,src:Us.src,tokens:Us.t,SEMVER_SPEC_VERSION:gd.SEMVER_SPEC_VERSION,RELEASE_TYPES:gd.RELEASE_TYPES,compareIdentifiers:_d.compareIdentifiers,rcompareIdentifiers:_d.rcompareIdentifiers}});var Dd=I((cE,Ld)=>{"use strict";var xd=ut("child_process"),Rd=xd.spawn,Ly=xd.exec;Ld.exports=function(n,e,t){if(typeof e=="function"&&t===void 0&&(t=e,e=void 0),n=parseInt(n),Number.isNaN(n)){if(t)return t(new Error("pid must be a number"));throw new Error("pid must be a number")}var r={},i={};switch(r[n]=[],i[n]=1,process.platform){case"win32":Ly("taskkill /pid "+n+" /T /F",t);break;case"darwin":Vs(n,r,i,function(o){return Rd("pgrep",["-P",o])},function(){Ed(r,e,t)});break;default:Vs(n,r,i,function(o){return Rd("ps",["-o","pid","--no-headers","--ppid",o])},function(){Ed(r,e,t)});break}};function Ed(n,e,t){var r={};try{Object.keys(n).forEach(function(i){n[i].forEach(function(o){r[o]||(Sd(o,e),r[o]=1)}),r[i]||(Sd(i,e),r[i]=1)})}catch(i){if(t)return t(i);throw i}if(t)return t()}function Sd(n,e){try{process.kill(parseInt(n,10),e)}catch(t){if(t.code!=="ESRCH")throw t}}function Vs(n,e,t,r,i){var o=r(n),s="";o.stdout.on("data",function(l){var l=l.toString("ascii");s+=l});var a=function(d){if(delete t[n],d!=0){Object.keys(t).length==0&&i();return}s.match(/\d+/g).forEach(function(l){l=parseInt(l,10),e[n].push(l),e[l]=[],t[l]=1,Vs(l,e,t,r,i)})};o.on("close",a)}});var uf=I((i0,lf)=>{"use strict";var{hasOwnProperty:ka}=Object.prototype,Ta=(n,e={})=>{typeof e=="string"&&(e={section:e}),e.align=e.align===!0,e.newline=e.newline===!0,e.sort=e.sort===!0,e.whitespace=e.whitespace===!0||e.align===!0,e.platform=e.platform||typeof process<"u"&&process.platform,e.bracketedArray=e.bracketedArray!==!1;let t=e.platform==="win32"?`\r
18
+ `:`
19
+ `,r=e.whitespace?" = ":"=",i=[],o=e.sort?Object.keys(n).sort():Object.keys(n),s=0;e.align&&(s=Kt(o.filter(l=>n[l]===null||Array.isArray(n[l])||typeof n[l]!="object").map(l=>Array.isArray(n[l])?`${l}[]`:l).concat([""]).reduce((l,h)=>Kt(l).length>=Kt(h).length?l:h)).length);let a="",d=e.bracketedArray?"[]":"";for(let l of o){let h=n[l];if(h&&Array.isArray(h))for(let v of h)a+=Kt(`${l}${d}`).padEnd(s," ")+r+Kt(v)+t;else h&&typeof h=="object"?i.push(l):a+=Kt(l).padEnd(s," ")+r+Kt(h)+t}e.section&&a.length&&(a="["+Kt(e.section)+"]"+(e.newline?t+t:t)+a);for(let l of i){let h=af(l,".").join("\\."),v=(e.section?e.section+".":"")+h,w=Ta(n[l],{...e,section:v});a.length&&w.length&&(a+=t),a+=w}return a};function af(n,e){var t=0,r=0,i=0,o=[];do if(i=n.indexOf(e,t),i!==-1){if(t=i+e.length,i>0&&n[i-1]==="\\")continue;o.push(n.slice(r,i)),r=i+e.length}while(i!==-1);return o.push(n.slice(r)),o}var sf=(n,e={})=>{e.bracketedArray=e.bracketedArray!==!1;let t=Object.create(null),r=t,i=null,o=/^\[([^\]]*)\]\s*$|^([^=]+)(=(.*))?$/i,s=n.split(/[\r\n]+/g),a={};for(let l of s){if(!l||l.match(/^\s*[;#]/)||l.match(/^\s*$/))continue;let h=l.match(o);if(!h)continue;if(h[1]!==void 0){if(i=Xi(h[1]),i==="__proto__"){r=Object.create(null);continue}r=t[i]=t[i]||Object.create(null);continue}let v=Xi(h[2]),w;e.bracketedArray?w=v.length>2&&v.slice(-2)==="[]":(a[v]=(a?.[v]||0)+1,w=a[v]>1);let _=w&&v.endsWith("[]")?v.slice(0,-2):v;if(_==="__proto__")continue;let L=h[3]?Xi(h[4]):!0,k=L==="true"||L==="false"||L==="null"?JSON.parse(L):L;w&&(ka.call(r,_)?Array.isArray(r[_])||(r[_]=[r[_]]):r[_]=[]),Array.isArray(r[_])?r[_].push(k):r[_]=k}let d=[];for(let l of Object.keys(t)){if(!ka.call(t,l)||typeof t[l]!="object"||Array.isArray(t[l]))continue;let h=af(l,".");r=t;let v=h.pop(),w=v.replace(/\\\./g,".");for(let _ of h)_!=="__proto__"&&((!ka.call(r,_)||typeof r[_]!="object")&&(r[_]=Object.create(null)),r=r[_]);r===t&&w===v||(r[w]=t[l],d.push(l))}for(let l of d)delete t[l];return t},cf=n=>n.startsWith('"')&&n.endsWith('"')||n.startsWith("'")&&n.endsWith("'"),Kt=n=>typeof n!="string"||n.match(/[=\r\n]/)||n.match(/^\[/)||n.length>1&&cf(n)||n!==n.trim()?JSON.stringify(n):n.split(";").join("\\;").split("#").join("\\#"),Xi=n=>{if(n=(n||"").trim(),cf(n)){n.charAt(0)==="'"&&(n=n.slice(1,-1));try{n=JSON.parse(n)}catch{}}else{let e=!1,t="";for(let r=0,i=n.length;r<i;r++){let o=n.charAt(r);if(e)"\\;#".indexOf(o)!==-1?t+=o:t+="\\"+o,e=!1;else{if(";#".indexOf(o)!==-1)break;o==="\\"?e=!0:t+=o}}return e&&(t+="\\"),t.trim()}return n};lf.exports={parse:sf,decode:sf,stringify:Ta,encode:Ta,safe:Kt,unsafe:Xi}});var Hn=I(He=>{"use strict";Object.defineProperty(He,"__esModule",{value:!0});He.stringArray=He.array=He.func=He.error=He.number=He.string=He.boolean=void 0;function Xv(n){return n===!0||n===!1}He.boolean=Xv;function _f(n){return typeof n=="string"||n instanceof String}He.string=_f;function Zv(n){return typeof n=="number"||n instanceof Number}He.number=Zv;function Jv(n){return n instanceof Error}He.error=Jv;function Qv(n){return typeof n=="function"}He.func=Qv;function bf(n){return Array.isArray(n)}He.array=bf;function Yv(n){return bf(n)&&n.every(e=>_f(e))}He.stringArray=Yv});var tc=I(Z=>{"use strict";Object.defineProperty(Z,"__esModule",{value:!0});Z.Message=Z.NotificationType9=Z.NotificationType8=Z.NotificationType7=Z.NotificationType6=Z.NotificationType5=Z.NotificationType4=Z.NotificationType3=Z.NotificationType2=Z.NotificationType1=Z.NotificationType0=Z.NotificationType=Z.RequestType9=Z.RequestType8=Z.RequestType7=Z.RequestType6=Z.RequestType5=Z.RequestType4=Z.RequestType3=Z.RequestType2=Z.RequestType1=Z.RequestType=Z.RequestType0=Z.AbstractMessageSignature=Z.ParameterStructures=Z.ResponseError=Z.ErrorCodes=void 0;var En=Hn(),Ia;(function(n){n.ParseError=-32700,n.InvalidRequest=-32600,n.MethodNotFound=-32601,n.InvalidParams=-32602,n.InternalError=-32603,n.jsonrpcReservedErrorRangeStart=-32099,n.serverErrorStart=-32099,n.MessageWriteError=-32099,n.MessageReadError=-32098,n.PendingResponseRejected=-32097,n.ConnectionInactive=-32096,n.ServerNotInitialized=-32002,n.UnknownErrorCode=-32001,n.jsonrpcReservedErrorRangeEnd=-32e3,n.serverErrorEnd=-32e3})(Ia||(Z.ErrorCodes=Ia={}));var Aa=class n extends Error{constructor(e,t,r){super(t),this.code=En.number(e)?e:Ia.UnknownErrorCode,this.data=r,Object.setPrototypeOf(this,n.prototype)}toJson(){let e={code:this.code,message:this.message};return this.data!==void 0&&(e.data=this.data),e}};Z.ResponseError=Aa;var ot=class n{constructor(e){this.kind=e}static is(e){return e===n.auto||e===n.byName||e===n.byPosition}toString(){return this.kind}};Z.ParameterStructures=ot;ot.auto=new ot("auto");ot.byPosition=new ot("byPosition");ot.byName=new ot("byName");var Le=class{constructor(e,t){this.method=e,this.numberOfParams=t}get parameterStructures(){return ot.auto}};Z.AbstractMessageSignature=Le;var Ca=class extends Le{constructor(e){super(e,0)}};Z.RequestType0=Ca;var $a=class extends Le{constructor(e,t=ot.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};Z.RequestType=$a;var Oa=class extends Le{constructor(e,t=ot.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};Z.RequestType1=Oa;var Ma=class extends Le{constructor(e){super(e,2)}};Z.RequestType2=Ma;var qa=class extends Le{constructor(e){super(e,3)}};Z.RequestType3=qa;var Na=class extends Le{constructor(e){super(e,4)}};Z.RequestType4=Na;var Fa=class extends Le{constructor(e){super(e,5)}};Z.RequestType5=Fa;var ja=class extends Le{constructor(e){super(e,6)}};Z.RequestType6=ja;var Ba=class extends Le{constructor(e){super(e,7)}};Z.RequestType7=Ba;var Ua=class extends Le{constructor(e){super(e,8)}};Z.RequestType8=Ua;var Va=class extends Le{constructor(e){super(e,9)}};Z.RequestType9=Va;var Wa=class extends Le{constructor(e,t=ot.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};Z.NotificationType=Wa;var za=class extends Le{constructor(e){super(e,0)}};Z.NotificationType0=za;var Ha=class extends Le{constructor(e,t=ot.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};Z.NotificationType1=Ha;var Ka=class extends Le{constructor(e){super(e,2)}};Z.NotificationType2=Ka;var Ga=class extends Le{constructor(e){super(e,3)}};Z.NotificationType3=Ga;var Xa=class extends Le{constructor(e){super(e,4)}};Z.NotificationType4=Xa;var Za=class extends Le{constructor(e){super(e,5)}};Z.NotificationType5=Za;var Ja=class extends Le{constructor(e){super(e,6)}};Z.NotificationType6=Ja;var Qa=class extends Le{constructor(e){super(e,7)}};Z.NotificationType7=Qa;var Ya=class extends Le{constructor(e){super(e,8)}};Z.NotificationType8=Ya;var ec=class extends Le{constructor(e){super(e,9)}};Z.NotificationType9=ec;var yf;(function(n){function e(i){let o=i;return o&&En.string(o.method)&&(En.string(o.id)||En.number(o.id))}n.isRequest=e;function t(i){let o=i;return o&&En.string(o.method)&&i.id===void 0}n.isNotification=t;function r(i){let o=i;return o&&(o.result!==void 0||!!o.error)&&(En.string(o.id)||En.number(o.id)||o.id===null)}n.isResponse=r})(yf||(Z.Message=yf={}))});var rc=I(an=>{"use strict";var vf;Object.defineProperty(an,"__esModule",{value:!0});an.LRUCache=an.LinkedMap=an.Touch=void 0;var Ke;(function(n){n.None=0,n.First=1,n.AsOld=n.First,n.Last=2,n.AsNew=n.Last})(Ke||(an.Touch=Ke={}));var Ji=class{constructor(){this[vf]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){return this._head?.value}get last(){return this._tail?.value}has(e){return this._map.has(e)}get(e,t=Ke.None){let r=this._map.get(e);if(r)return t!==Ke.None&&this.touch(r,t),r.value}set(e,t,r=Ke.None){let i=this._map.get(e);if(i)i.value=t,r!==Ke.None&&this.touch(i,r);else{switch(i={key:e,value:t,next:void 0,previous:void 0},r){case Ke.None:this.addItemLast(i);break;case Ke.First:this.addItemFirst(i);break;case Ke.Last:this.addItemLast(i);break;default:this.addItemLast(i);break}this._map.set(e,i),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){let t=this._map.get(e);if(t)return this._map.delete(e),this.removeItem(t),this._size--,t.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");let e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,t){let r=this._state,i=this._head;for(;i;){if(t?e.bind(t)(i.value,i.key,this):e(i.value,i.key,this),this._state!==r)throw new Error("LinkedMap got modified during iteration.");i=i.next}}keys(){let e=this._state,t=this._head,r={[Symbol.iterator]:()=>r,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){let i={value:t.key,done:!1};return t=t.next,i}else return{value:void 0,done:!0}}};return r}values(){let e=this._state,t=this._head,r={[Symbol.iterator]:()=>r,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){let i={value:t.value,done:!1};return t=t.next,i}else return{value:void 0,done:!0}}};return r}entries(){let e=this._state,t=this._head,r={[Symbol.iterator]:()=>r,next:()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){let i={value:[t.key,t.value],done:!1};return t=t.next,i}else return{value:void 0,done:!0}}};return r}[(vf=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(e){if(e>=this.size)return;if(e===0){this.clear();return}let t=this._head,r=this.size;for(;t&&r>e;)this._map.delete(t.key),t=t.next,r--;this._head=t,this._size=r,t&&(t.previous=void 0),this._state++}addItemFirst(e){if(!this._head&&!this._tail)this._tail=e;else if(this._head)e.next=this._head,this._head.previous=e;else throw new Error("Invalid list");this._head=e,this._state++}addItemLast(e){if(!this._head&&!this._tail)this._head=e;else if(this._tail)e.previous=this._tail,this._tail.next=e;else throw new Error("Invalid list");this._tail=e,this._state++}removeItem(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw new Error("Invalid list");e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw new Error("Invalid list");e.previous.next=void 0,this._tail=e.previous}else{let t=e.next,r=e.previous;if(!t||!r)throw new Error("Invalid list");t.previous=r,r.next=t}e.next=void 0,e.previous=void 0,this._state++}touch(e,t){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(t!==Ke.First&&t!==Ke.Last)){if(t===Ke.First){if(e===this._head)return;let r=e.next,i=e.previous;e===this._tail?(i.next=void 0,this._tail=i):(r.previous=i,i.next=r),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(t===Ke.Last){if(e===this._tail)return;let r=e.next,i=e.previous;e===this._head?(r.previous=void 0,this._head=r):(r.previous=i,i.next=r),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}}toJSON(){let e=[];return this.forEach((t,r)=>{e.push([r,t])}),e}fromJSON(e){this.clear();for(let[t,r]of e)this.set(t,r)}};an.LinkedMap=Ji;var nc=class extends Ji{constructor(e,t=1){super(),this._limit=e,this._ratio=Math.min(Math.max(0,t),1)}get limit(){return this._limit}set limit(e){this._limit=e,this.checkTrim()}get ratio(){return this._ratio}set ratio(e){this._ratio=Math.min(Math.max(0,e),1),this.checkTrim()}get(e,t=Ke.AsNew){return super.get(e,t)}peek(e){return super.get(e,Ke.None)}set(e,t){return super.set(e,t,Ke.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}};an.LRUCache=nc});var Pf=I(Qi=>{"use strict";Object.defineProperty(Qi,"__esModule",{value:!0});Qi.Disposable=void 0;var wf;(function(n){function e(t){return{dispose:t}}n.create=e})(wf||(Qi.Disposable=wf={}))});var cn=I(sc=>{"use strict";Object.defineProperty(sc,"__esModule",{value:!0});var ic;function oc(){if(ic===void 0)throw new Error("No runtime abstraction layer installed");return ic}(function(n){function e(t){if(t===void 0)throw new Error("No runtime abstraction layer provided");ic=t}n.install=e})(oc||(oc={}));sc.default=oc});var Gn=I(Kn=>{"use strict";Object.defineProperty(Kn,"__esModule",{value:!0});Kn.Emitter=Kn.Event=void 0;var ew=cn(),Rf;(function(n){let e={dispose(){}};n.None=function(){return e}})(Rf||(Kn.Event=Rf={}));var ac=class{add(e,t=null,r){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(t),Array.isArray(r)&&r.push({dispose:()=>this.remove(e,t)})}remove(e,t=null){if(!this._callbacks)return;let r=!1;for(let i=0,o=this._callbacks.length;i<o;i++)if(this._callbacks[i]===e)if(this._contexts[i]===t){this._callbacks.splice(i,1),this._contexts.splice(i,1);return}else r=!0;if(r)throw new Error("When adding a listener with a context, you should remove it with the same context")}invoke(...e){if(!this._callbacks)return[];let t=[],r=this._callbacks.slice(0),i=this._contexts.slice(0);for(let o=0,s=r.length;o<s;o++)try{t.push(r[o].apply(i[o],e))}catch(a){(0,ew.default)().console.error(a)}return t}isEmpty(){return!this._callbacks||this._callbacks.length===0}dispose(){this._callbacks=void 0,this._contexts=void 0}},Yi=class n{constructor(e){this._options=e}get event(){return this._event||(this._event=(e,t,r)=>{this._callbacks||(this._callbacks=new ac),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,t);let i={dispose:()=>{this._callbacks&&(this._callbacks.remove(e,t),i.dispose=n._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(r)&&r.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};Kn.Emitter=Yi;Yi._noop=function(){}});var no=I(Xn=>{"use strict";Object.defineProperty(Xn,"__esModule",{value:!0});Xn.CancellationTokenSource=Xn.CancellationToken=void 0;var tw=cn(),nw=Hn(),cc=Gn(),eo;(function(n){n.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:cc.Event.None}),n.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:cc.Event.None});function e(t){let r=t;return r&&(r===n.None||r===n.Cancelled||nw.boolean(r.isCancellationRequested)&&!!r.onCancellationRequested)}n.is=e})(eo||(Xn.CancellationToken=eo={}));var rw=Object.freeze(function(n,e){let t=(0,tw.default)().timer.setTimeout(n.bind(e),0);return{dispose(){t.dispose()}}}),to=class{constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?rw:(this._emitter||(this._emitter=new cc.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},lc=class{get token(){return this._token||(this._token=new to),this._token}cancel(){this._token?this._token.cancel():this._token=eo.Cancelled}dispose(){this._token?this._token instanceof to&&this._token.dispose():this._token=eo.None}};Xn.CancellationTokenSource=lc});var Ef=I(Zn=>{"use strict";Object.defineProperty(Zn,"__esModule",{value:!0});Zn.SharedArrayReceiverStrategy=Zn.SharedArraySenderStrategy=void 0;var iw=no(),Ar;(function(n){n.Continue=0,n.Cancelled=1})(Ar||(Ar={}));var uc=class{constructor(){this.buffers=new Map}enableCancellation(e){if(e.id===null)return;let t=new SharedArrayBuffer(4),r=new Int32Array(t,0,1);r[0]=Ar.Continue,this.buffers.set(e.id,t),e.$cancellationData=t}async sendCancellation(e,t){let r=this.buffers.get(t);if(r===void 0)return;let i=new Int32Array(r,0,1);Atomics.store(i,0,Ar.Cancelled)}cleanup(e){this.buffers.delete(e)}dispose(){this.buffers.clear()}};Zn.SharedArraySenderStrategy=uc;var dc=class{constructor(e){this.data=new Int32Array(e,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===Ar.Cancelled}get onCancellationRequested(){throw new Error("Cancellation over SharedArrayBuffer doesn't support cancellation events")}},fc=class{constructor(e){this.token=new dc(e)}cancel(){}dispose(){}},pc=class{constructor(){this.kind="request"}createCancellationTokenSource(e){let t=e.$cancellationData;return t===void 0?new iw.CancellationTokenSource:new fc(t)}};Zn.SharedArrayReceiverStrategy=pc});var mc=I(ro=>{"use strict";Object.defineProperty(ro,"__esModule",{value:!0});ro.Semaphore=void 0;var ow=cn(),hc=class{constructor(e=1){if(e<=0)throw new Error("Capacity must be greater than 0");this._capacity=e,this._active=0,this._waiting=[]}lock(e){return new Promise((t,r)=>{this._waiting.push({thunk:e,resolve:t,reject:r}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,ow.default)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;let e=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{let t=e.thunk();t instanceof Promise?t.then(r=>{this._active--,e.resolve(r),this.runNext()},r=>{this._active--,e.reject(r),this.runNext()}):(this._active--,e.resolve(t),this.runNext())}catch(t){this._active--,e.reject(t),this.runNext()}}};ro.Semaphore=hc});var xf=I(ln=>{"use strict";Object.defineProperty(ln,"__esModule",{value:!0});ln.ReadableStreamMessageReader=ln.AbstractMessageReader=ln.MessageReader=void 0;var _c=cn(),Jn=Hn(),gc=Gn(),sw=mc(),Sf;(function(n){function e(t){let r=t;return r&&Jn.func(r.listen)&&Jn.func(r.dispose)&&Jn.func(r.onError)&&Jn.func(r.onClose)&&Jn.func(r.onPartialMessage)}n.is=e})(Sf||(ln.MessageReader=Sf={}));var io=class{constructor(){this.errorEmitter=new gc.Emitter,this.closeEmitter=new gc.Emitter,this.partialMessageEmitter=new gc.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e){this.errorEmitter.fire(this.asError(e))}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}get onPartialMessage(){return this.partialMessageEmitter.event}firePartialMessage(e){this.partialMessageEmitter.fire(e)}asError(e){return e instanceof Error?e:new Error(`Reader received error. Reason: ${Jn.string(e.message)?e.message:"unknown"}`)}};ln.AbstractMessageReader=io;var bc;(function(n){function e(t){let r,i,o,s=new Map,a,d=new Map;if(t===void 0||typeof t=="string")r=t??"utf-8";else{if(r=t.charset??"utf-8",t.contentDecoder!==void 0&&(o=t.contentDecoder,s.set(o.name,o)),t.contentDecoders!==void 0)for(let l of t.contentDecoders)s.set(l.name,l);if(t.contentTypeDecoder!==void 0&&(a=t.contentTypeDecoder,d.set(a.name,a)),t.contentTypeDecoders!==void 0)for(let l of t.contentTypeDecoders)d.set(l.name,l)}return a===void 0&&(a=(0,_c.default)().applicationJson.decoder,d.set(a.name,a)),{charset:r,contentDecoder:o,contentDecoders:s,contentTypeDecoder:a,contentTypeDecoders:d}}n.fromOptions=e})(bc||(bc={}));var yc=class extends io{constructor(e,t){super(),this.readable=e,this.options=bc.fromOptions(t),this.buffer=(0,_c.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new sw.Semaphore(1)}set partialMessageTimeout(e){this._partialMessageTimeout=e}get partialMessageTimeout(){return this._partialMessageTimeout}listen(e){this.nextMessageLength=-1,this.messageToken=0,this.partialMessageTimer=void 0,this.callback=e;let t=this.readable.onData(r=>{this.onData(r)});return this.readable.onError(r=>this.fireError(r)),this.readable.onClose(()=>this.fireClose()),t}onData(e){try{for(this.buffer.append(e);;){if(this.nextMessageLength===-1){let r=this.buffer.tryReadHeaders(!0);if(!r)return;let i=r.get("content-length");if(!i){this.fireError(new Error(`Header must provide a Content-Length property.
20
+ ${JSON.stringify(Object.fromEntries(r))}`));return}let o=parseInt(i);if(isNaN(o)){this.fireError(new Error(`Content-Length value must be a number. Got ${i}`));return}this.nextMessageLength=o}let t=this.buffer.tryReadBody(this.nextMessageLength);if(t===void 0){this.setPartialMessageTimer();return}this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock(async()=>{let r=this.options.contentDecoder!==void 0?await this.options.contentDecoder.decode(t):t,i=await this.options.contentTypeDecoder.decode(r,this.options);this.callback(i)}).catch(r=>{this.fireError(r)})}}catch(t){this.fireError(t)}}clearPartialMessageTimer(){this.partialMessageTimer&&(this.partialMessageTimer.dispose(),this.partialMessageTimer=void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),!(this._partialMessageTimeout<=0)&&(this.partialMessageTimer=(0,_c.default)().timer.setTimeout((e,t)=>{this.partialMessageTimer=void 0,e===this.messageToken&&(this.firePartialMessage({messageToken:e,waitingTime:t}),this.setPartialMessageTimer())},this._partialMessageTimeout,this.messageToken,this._partialMessageTimeout))}};ln.ReadableStreamMessageReader=yc});var If=I(un=>{"use strict";Object.defineProperty(un,"__esModule",{value:!0});un.WriteableStreamMessageWriter=un.AbstractMessageWriter=un.MessageWriter=void 0;var Lf=cn(),Cr=Hn(),aw=mc(),Df=Gn(),cw="Content-Length: ",kf=`\r
21
+ `,Tf;(function(n){function e(t){let r=t;return r&&Cr.func(r.dispose)&&Cr.func(r.onClose)&&Cr.func(r.onError)&&Cr.func(r.write)}n.is=e})(Tf||(un.MessageWriter=Tf={}));var oo=class{constructor(){this.errorEmitter=new Df.Emitter,this.closeEmitter=new Df.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e,t,r){this.errorEmitter.fire([this.asError(e),t,r])}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}asError(e){return e instanceof Error?e:new Error(`Writer received error. Reason: ${Cr.string(e.message)?e.message:"unknown"}`)}};un.AbstractMessageWriter=oo;var vc;(function(n){function e(t){return t===void 0||typeof t=="string"?{charset:t??"utf-8",contentTypeEncoder:(0,Lf.default)().applicationJson.encoder}:{charset:t.charset??"utf-8",contentEncoder:t.contentEncoder,contentTypeEncoder:t.contentTypeEncoder??(0,Lf.default)().applicationJson.encoder}}n.fromOptions=e})(vc||(vc={}));var wc=class extends oo{constructor(e,t){super(),this.writable=e,this.options=vc.fromOptions(t),this.errorCount=0,this.writeSemaphore=new aw.Semaphore(1),this.writable.onError(r=>this.fireError(r)),this.writable.onClose(()=>this.fireClose())}async write(e){return this.writeSemaphore.lock(async()=>this.options.contentTypeEncoder.encode(e,this.options).then(r=>this.options.contentEncoder!==void 0?this.options.contentEncoder.encode(r):r).then(r=>{let i=[];return i.push(cw,r.byteLength.toString(),kf),i.push(kf),this.doWrite(e,i,r)},r=>{throw this.fireError(r),r}))}async doWrite(e,t,r){try{return await this.writable.write(t.join(""),"ascii"),this.writable.write(r)}catch(i){return this.handleError(i,e),Promise.reject(i)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){this.writable.end()}};un.WriteableStreamMessageWriter=wc});var Af=I(so=>{"use strict";Object.defineProperty(so,"__esModule",{value:!0});so.AbstractMessageBuffer=void 0;var lw=13,uw=10,dw=`\r
22
+ `,Pc=class{constructor(e="utf-8"){this._encoding=e,this._chunks=[],this._totalLength=0}get encoding(){return this._encoding}append(e){let t=typeof e=="string"?this.fromString(e,this._encoding):e;this._chunks.push(t),this._totalLength+=t.byteLength}tryReadHeaders(e=!1){if(this._chunks.length===0)return;let t=0,r=0,i=0,o=0;e:for(;r<this._chunks.length;){let l=this._chunks[r];for(i=0;i<l.length;){switch(l[i]){case lw:switch(t){case 0:t=1;break;case 2:t=3;break;default:t=0}break;case uw:switch(t){case 1:t=2;break;case 3:t=4,i++;break e;default:t=0}break;default:t=0}i++}o+=l.byteLength,r++}if(t!==4)return;let s=this._read(o+i),a=new Map,d=this.toString(s,"ascii").split(dw);if(d.length<2)return a;for(let l=0;l<d.length-2;l++){let h=d[l],v=h.indexOf(":");if(v===-1)throw new Error(`Message header must separate key and value using ':'
23
+ ${h}`);let w=h.substr(0,v),_=h.substr(v+1).trim();a.set(e?w.toLowerCase():w,_)}return a}tryReadBody(e){if(!(this._totalLength<e))return this._read(e)}get numberOfBytes(){return this._totalLength}_read(e){if(e===0)return this.emptyBuffer();if(e>this._totalLength)throw new Error("Cannot read so many bytes!");if(this._chunks[0].byteLength===e){let o=this._chunks[0];return this._chunks.shift(),this._totalLength-=e,this.asNative(o)}if(this._chunks[0].byteLength>e){let o=this._chunks[0],s=this.asNative(o,e);return this._chunks[0]=o.slice(e),this._totalLength-=e,s}let t=this.allocNative(e),r=0,i=0;for(;e>0;){let o=this._chunks[i];if(o.byteLength>e){let s=o.slice(0,e);t.set(s,r),r+=e,this._chunks[i]=o.slice(e),this._totalLength-=e,e-=e}else t.set(o,r),r+=o.byteLength,this._chunks.shift(),this._totalLength-=o.byteLength,e-=o.byteLength}return t}};so.AbstractMessageBuffer=Pc});var qf=I(se=>{"use strict";Object.defineProperty(se,"__esModule",{value:!0});se.createMessageConnection=se.ConnectionOptions=se.MessageStrategy=se.CancellationStrategy=se.CancellationSenderStrategy=se.CancellationReceiverStrategy=se.RequestCancellationReceiverStrategy=se.IdCancellationReceiverStrategy=se.ConnectionStrategy=se.ConnectionError=se.ConnectionErrors=se.LogTraceNotification=se.SetTraceNotification=se.TraceFormat=se.TraceValues=se.Trace=se.NullLogger=se.ProgressType=se.ProgressToken=void 0;var Cf=cn(),Ie=Hn(),Y=tc(),$f=rc(),$r=Gn(),Rc=no(),qr;(function(n){n.type=new Y.NotificationType("$/cancelRequest")})(qr||(qr={}));var Ec;(function(n){function e(t){return typeof t=="string"||typeof t=="number"}n.is=e})(Ec||(se.ProgressToken=Ec={}));var Or;(function(n){n.type=new Y.NotificationType("$/progress")})(Or||(Or={}));var Sc=class{constructor(){}};se.ProgressType=Sc;var xc;(function(n){function e(t){return Ie.func(t)}n.is=e})(xc||(xc={}));se.NullLogger=Object.freeze({error:()=>{},warn:()=>{},info:()=>{},log:()=>{}});var me;(function(n){n[n.Off=0]="Off",n[n.Messages=1]="Messages",n[n.Compact=2]="Compact",n[n.Verbose=3]="Verbose"})(me||(se.Trace=me={}));var Of;(function(n){n.Off="off",n.Messages="messages",n.Compact="compact",n.Verbose="verbose"})(Of||(se.TraceValues=Of={}));(function(n){function e(r){if(!Ie.string(r))return n.Off;switch(r=r.toLowerCase(),r){case"off":return n.Off;case"messages":return n.Messages;case"compact":return n.Compact;case"verbose":return n.Verbose;default:return n.Off}}n.fromString=e;function t(r){switch(r){case n.Off:return"off";case n.Messages:return"messages";case n.Compact:return"compact";case n.Verbose:return"verbose";default:return"off"}}n.toString=t})(me||(se.Trace=me={}));var mt;(function(n){n.Text="text",n.JSON="json"})(mt||(se.TraceFormat=mt={}));(function(n){function e(t){return Ie.string(t)?(t=t.toLowerCase(),t==="json"?n.JSON:n.Text):n.Text}n.fromString=e})(mt||(se.TraceFormat=mt={}));var Lc;(function(n){n.type=new Y.NotificationType("$/setTrace")})(Lc||(se.SetTraceNotification=Lc={}));var ao;(function(n){n.type=new Y.NotificationType("$/logTrace")})(ao||(se.LogTraceNotification=ao={}));var Mr;(function(n){n[n.Closed=1]="Closed",n[n.Disposed=2]="Disposed",n[n.AlreadyListening=3]="AlreadyListening"})(Mr||(se.ConnectionErrors=Mr={}));var Qn=class n extends Error{constructor(e,t){super(t),this.code=e,Object.setPrototypeOf(this,n.prototype)}};se.ConnectionError=Qn;var Dc;(function(n){function e(t){let r=t;return r&&Ie.func(r.cancelUndispatched)}n.is=e})(Dc||(se.ConnectionStrategy=Dc={}));var co;(function(n){function e(t){let r=t;return r&&(r.kind===void 0||r.kind==="id")&&Ie.func(r.createCancellationTokenSource)&&(r.dispose===void 0||Ie.func(r.dispose))}n.is=e})(co||(se.IdCancellationReceiverStrategy=co={}));var kc;(function(n){function e(t){let r=t;return r&&r.kind==="request"&&Ie.func(r.createCancellationTokenSource)&&(r.dispose===void 0||Ie.func(r.dispose))}n.is=e})(kc||(se.RequestCancellationReceiverStrategy=kc={}));var lo;(function(n){n.Message=Object.freeze({createCancellationTokenSource(t){return new Rc.CancellationTokenSource}});function e(t){return co.is(t)||kc.is(t)}n.is=e})(lo||(se.CancellationReceiverStrategy=lo={}));var uo;(function(n){n.Message=Object.freeze({sendCancellation(t,r){return t.sendNotification(qr.type,{id:r})},cleanup(t){}});function e(t){let r=t;return r&&Ie.func(r.sendCancellation)&&Ie.func(r.cleanup)}n.is=e})(uo||(se.CancellationSenderStrategy=uo={}));var fo;(function(n){n.Message=Object.freeze({receiver:lo.Message,sender:uo.Message});function e(t){let r=t;return r&&lo.is(r.receiver)&&uo.is(r.sender)}n.is=e})(fo||(se.CancellationStrategy=fo={}));var po;(function(n){function e(t){let r=t;return r&&Ie.func(r.handleMessage)}n.is=e})(po||(se.MessageStrategy=po={}));var Mf;(function(n){function e(t){let r=t;return r&&(fo.is(r.cancellationStrategy)||Dc.is(r.connectionStrategy)||po.is(r.messageStrategy))}n.is=e})(Mf||(se.ConnectionOptions=Mf={}));var kt;(function(n){n[n.New=1]="New",n[n.Listening=2]="Listening",n[n.Closed=3]="Closed",n[n.Disposed=4]="Disposed"})(kt||(kt={}));function fw(n,e,t,r){let i=t!==void 0?t:se.NullLogger,o=0,s=0,a=0,d="2.0",l,h=new Map,v,w=new Map,_=new Map,L,k=new $f.LinkedMap,X=new Map,fe=new Set,B=new Map,ee=me.Off,ae=mt.Text,Q,te=kt.New,_e=new $r.Emitter,Ae=new $r.Emitter,qe=new $r.Emitter,Qe=new $r.Emitter,O=new $r.Emitter,E=r&&r.cancellationStrategy?r.cancellationStrategy:fo.Message;function F(m){if(m===null)throw new Error("Can't send requests with id null since the response can't be correlated.");return"req-"+m.toString()}function j(m){return m===null?"res-unknown-"+(++a).toString():"res-"+m.toString()}function x(){return"not-"+(++s).toString()}function A(m,D){Y.Message.isRequest(D)?m.set(F(D.id),D):Y.Message.isResponse(D)?m.set(j(D.id),D):m.set(x(),D)}function C(m){}function N(){return te===kt.Listening}function z(){return te===kt.Closed}function q(){return te===kt.Disposed}function ne(){(te===kt.New||te===kt.Listening)&&(te=kt.Closed,Ae.fire(void 0))}function re(m){_e.fire([m,void 0,void 0])}function Me(m){_e.fire(m)}n.onClose(ne),n.onError(re),e.onClose(ne),e.onError(Me);function he(){L||k.size===0||(L=(0,Cf.default)().timer.setImmediate(()=>{L=void 0,It()}))}function Ye(m){Y.Message.isRequest(m)?Wr(m):Y.Message.isNotification(m)?Hr(m):Y.Message.isResponse(m)?zr(m):Tn(m)}function It(){if(k.size===0)return;let m=k.shift();try{let D=r?.messageStrategy;po.is(D)?D.handleMessage(m,Ye):Ye(m)}finally{he()}}let Vr=m=>{try{if(Y.Message.isNotification(m)&&m.method===qr.type.method){let D=m.params.id,M=F(D),H=k.get(M);if(Y.Message.isRequest(H)){let ge=r?.connectionStrategy,Ee=ge&&ge.cancelUndispatched?ge.cancelUndispatched(H,C):void 0;if(Ee&&(Ee.error!==void 0||Ee.result!==void 0)){k.delete(M),B.delete(D),Ee.id=H.id,gn(Ee,m.method,Date.now()),e.write(Ee).catch(()=>i.error("Sending response for canceled message failed."));return}}let be=B.get(D);if(be!==void 0){be.cancel(),In(m);return}else fe.add(D)}A(k,m)}finally{he()}};function Wr(m){if(q())return;function D(le,ve,pe){let Ce={jsonrpc:d,id:m.id};le instanceof Y.ResponseError?Ce.error=le.toJson():Ce.result=le===void 0?null:le,gn(Ce,ve,pe),e.write(Ce).catch(()=>i.error("Sending response failed."))}function M(le,ve,pe){let Ce={jsonrpc:d,id:m.id,error:le.toJson()};gn(Ce,ve,pe),e.write(Ce).catch(()=>i.error("Sending response failed."))}function H(le,ve,pe){le===void 0&&(le=null);let Ce={jsonrpc:d,id:m.id,result:le};gn(Ce,ve,pe),e.write(Ce).catch(()=>i.error("Sending response failed."))}Xr(m);let be=h.get(m.method),ge,Ee;be&&(ge=be.type,Ee=be.handler);let De=Date.now();if(Ee||l){let le=m.id??String(Date.now()),ve=co.is(E.receiver)?E.receiver.createCancellationTokenSource(le):E.receiver.createCancellationTokenSource(m);m.id!==null&&fe.has(m.id)&&ve.cancel(),m.id!==null&&B.set(le,ve);try{let pe;if(Ee)if(m.params===void 0){if(ge!==void 0&&ge.numberOfParams!==0){M(new Y.ResponseError(Y.ErrorCodes.InvalidParams,`Request ${m.method} defines ${ge.numberOfParams} params but received none.`),m.method,De);return}pe=Ee(ve.token)}else if(Array.isArray(m.params)){if(ge!==void 0&&ge.parameterStructures===Y.ParameterStructures.byName){M(new Y.ResponseError(Y.ErrorCodes.InvalidParams,`Request ${m.method} defines parameters by name but received parameters by position`),m.method,De);return}pe=Ee(...m.params,ve.token)}else{if(ge!==void 0&&ge.parameterStructures===Y.ParameterStructures.byPosition){M(new Y.ResponseError(Y.ErrorCodes.InvalidParams,`Request ${m.method} defines parameters by position but received parameters by name`),m.method,De);return}pe=Ee(m.params,ve.token)}else l&&(pe=l(m.method,m.params,ve.token));let Ce=pe;pe?Ce.then?Ce.then(Fe=>{B.delete(le),D(Fe,m.method,De)},Fe=>{B.delete(le),Fe instanceof Y.ResponseError?M(Fe,m.method,De):Fe&&Ie.string(Fe.message)?M(new Y.ResponseError(Y.ErrorCodes.InternalError,`Request ${m.method} failed with message: ${Fe.message}`),m.method,De):M(new Y.ResponseError(Y.ErrorCodes.InternalError,`Request ${m.method} failed unexpectedly without providing any details.`),m.method,De)}):(B.delete(le),D(pe,m.method,De)):(B.delete(le),H(pe,m.method,De))}catch(pe){B.delete(le),pe instanceof Y.ResponseError?D(pe,m.method,De):pe&&Ie.string(pe.message)?M(new Y.ResponseError(Y.ErrorCodes.InternalError,`Request ${m.method} failed with message: ${pe.message}`),m.method,De):M(new Y.ResponseError(Y.ErrorCodes.InternalError,`Request ${m.method} failed unexpectedly without providing any details.`),m.method,De)}}else M(new Y.ResponseError(Y.ErrorCodes.MethodNotFound,`Unhandled method ${m.method}`),m.method,De)}function zr(m){if(!q())if(m.id===null)m.error?i.error(`Received response message without id: Error is:
24
+ ${JSON.stringify(m.error,void 0,4)}`):i.error("Received response message without id. No further error information provided.");else{let D=m.id,M=X.get(D);if(Zr(m,M),M!==void 0){X.delete(D);try{if(m.error){let H=m.error;M.reject(new Y.ResponseError(H.code,H.message,H.data))}else if(m.result!==void 0)M.resolve(m.result);else throw new Error("Should never happen.")}catch(H){H.message?i.error(`Response handler '${M.method}' failed with message: ${H.message}`):i.error(`Response handler '${M.method}' failed unexpectedly.`)}}}}function Hr(m){if(q())return;let D,M;if(m.method===qr.type.method){let H=m.params.id;fe.delete(H),In(m);return}else{let H=w.get(m.method);H&&(M=H.handler,D=H.type)}if(M||v)try{if(In(m),M)if(m.params===void 0)D!==void 0&&D.numberOfParams!==0&&D.parameterStructures!==Y.ParameterStructures.byName&&i.error(`Notification ${m.method} defines ${D.numberOfParams} params but received none.`),M();else if(Array.isArray(m.params)){let H=m.params;m.method===Or.type.method&&H.length===2&&Ec.is(H[0])?M({token:H[0],value:H[1]}):(D!==void 0&&(D.parameterStructures===Y.ParameterStructures.byName&&i.error(`Notification ${m.method} defines parameters by name but received parameters by position`),D.numberOfParams!==m.params.length&&i.error(`Notification ${m.method} defines ${D.numberOfParams} params but received ${H.length} arguments`)),M(...H))}else D!==void 0&&D.parameterStructures===Y.ParameterStructures.byPosition&&i.error(`Notification ${m.method} defines parameters by position but received parameters by name`),M(m.params);else v&&v(m.method,m.params)}catch(H){H.message?i.error(`Notification handler '${m.method}' failed with message: ${H.message}`):i.error(`Notification handler '${m.method}' failed unexpectedly.`)}else qe.fire(m)}function Tn(m){if(!m){i.error("Received empty message.");return}i.error(`Received message which is neither a response nor a notification message:
25
+ ${JSON.stringify(m,null,4)}`);let D=m;if(Ie.string(D.id)||Ie.number(D.id)){let M=D.id,H=X.get(M);H&&H.reject(new Error("The received response has neither a result nor an error property."))}}function St(m){if(m!=null)switch(ee){case me.Verbose:return JSON.stringify(m,null,4);case me.Compact:return JSON.stringify(m);default:return}}function Kr(m){if(!(ee===me.Off||!Q))if(ae===mt.Text){let D;(ee===me.Verbose||ee===me.Compact)&&m.params&&(D=`Params: ${St(m.params)}
26
+
27
+ `),Q.log(`Sending request '${m.method} - (${m.id})'.`,D)}else jt("send-request",m)}function Gr(m){if(!(ee===me.Off||!Q))if(ae===mt.Text){let D;(ee===me.Verbose||ee===me.Compact)&&(m.params?D=`Params: ${St(m.params)}
28
+
29
+ `:D=`No parameters provided.
30
+
31
+ `),Q.log(`Sending notification '${m.method}'.`,D)}else jt("send-notification",m)}function gn(m,D,M){if(!(ee===me.Off||!Q))if(ae===mt.Text){let H;(ee===me.Verbose||ee===me.Compact)&&(m.error&&m.error.data?H=`Error data: ${St(m.error.data)}
32
+
33
+ `:m.result?H=`Result: ${St(m.result)}
34
+
35
+ `:m.error===void 0&&(H=`No result returned.
36
+
37
+ `)),Q.log(`Sending response '${D} - (${m.id})'. Processing request took ${Date.now()-M}ms`,H)}else jt("send-response",m)}function Xr(m){if(!(ee===me.Off||!Q))if(ae===mt.Text){let D;(ee===me.Verbose||ee===me.Compact)&&m.params&&(D=`Params: ${St(m.params)}
38
+
39
+ `),Q.log(`Received request '${m.method} - (${m.id})'.`,D)}else jt("receive-request",m)}function In(m){if(!(ee===me.Off||!Q||m.method===ao.type.method))if(ae===mt.Text){let D;(ee===me.Verbose||ee===me.Compact)&&(m.params?D=`Params: ${St(m.params)}
40
+
41
+ `:D=`No parameters provided.
42
+
43
+ `),Q.log(`Received notification '${m.method}'.`,D)}else jt("receive-notification",m)}function Zr(m,D){if(!(ee===me.Off||!Q))if(ae===mt.Text){let M;if((ee===me.Verbose||ee===me.Compact)&&(m.error&&m.error.data?M=`Error data: ${St(m.error.data)}
44
+
45
+ `:m.result?M=`Result: ${St(m.result)}
46
+
47
+ `:m.error===void 0&&(M=`No result returned.
48
+
49
+ `)),D){let H=m.error?` Request failed: ${m.error.message} (${m.error.code}).`:"";Q.log(`Received response '${D.method} - (${m.id})' in ${Date.now()-D.timerStart}ms.${H}`,M)}else Q.log(`Received response ${m.id} without active response promise.`,M)}else jt("receive-response",m)}function jt(m,D){if(!Q||ee===me.Off)return;let M={isLSPMessage:!0,type:m,message:D,timestamp:Date.now()};Q.log(M)}function Zt(){if(z())throw new Qn(Mr.Closed,"Connection is closed.");if(q())throw new Qn(Mr.Disposed,"Connection is disposed.")}function Jr(){if(N())throw new Qn(Mr.AlreadyListening,"Connection is already listening")}function Qr(){if(!N())throw new Error("Call listen() first.")}function At(m){return m===void 0?null:m}function dr(m){if(m!==null)return m}function fr(m){return m!=null&&!Array.isArray(m)&&typeof m=="object"}function An(m,D){switch(m){case Y.ParameterStructures.auto:return fr(D)?dr(D):[At(D)];case Y.ParameterStructures.byName:if(!fr(D))throw new Error("Received parameters by name but param is not an object literal.");return dr(D);case Y.ParameterStructures.byPosition:return[At(D)];default:throw new Error(`Unknown parameter structure ${m.toString()}`)}}function pr(m,D){let M,H=m.numberOfParams;switch(H){case 0:M=void 0;break;case 1:M=An(m.parameterStructures,D[0]);break;default:M=[];for(let be=0;be<D.length&&be<H;be++)M.push(At(D[be]));if(D.length<H)for(let be=D.length;be<H;be++)M.push(null);break}return M}let Bt={sendNotification:(m,...D)=>{Zt();let M,H;if(Ie.string(m)){M=m;let ge=D[0],Ee=0,De=Y.ParameterStructures.auto;Y.ParameterStructures.is(ge)&&(Ee=1,De=ge);let le=D.length,ve=le-Ee;switch(ve){case 0:H=void 0;break;case 1:H=An(De,D[Ee]);break;default:if(De===Y.ParameterStructures.byName)throw new Error(`Received ${ve} parameters for 'by Name' notification parameter structure.`);H=D.slice(Ee,le).map(pe=>At(pe));break}}else{let ge=D;M=m.method,H=pr(m,ge)}let be={jsonrpc:d,method:M,params:H};return Gr(be),e.write(be).catch(ge=>{throw i.error("Sending notification failed."),ge})},onNotification:(m,D)=>{Zt();let M;return Ie.func(m)?v=m:D&&(Ie.string(m)?(M=m,w.set(m,{type:void 0,handler:D})):(M=m.method,w.set(m.method,{type:m,handler:D}))),{dispose:()=>{M!==void 0?w.delete(M):v=void 0}}},onProgress:(m,D,M)=>{if(_.has(D))throw new Error(`Progress handler for token ${D} already registered`);return _.set(D,M),{dispose:()=>{_.delete(D)}}},sendProgress:(m,D,M)=>Bt.sendNotification(Or.type,{token:D,value:M}),onUnhandledProgress:Qe.event,sendRequest:(m,...D)=>{Zt(),Qr();let M,H,be;if(Ie.string(m)){M=m;let le=D[0],ve=D[D.length-1],pe=0,Ce=Y.ParameterStructures.auto;Y.ParameterStructures.is(le)&&(pe=1,Ce=le);let Fe=D.length;Rc.CancellationToken.is(ve)&&(Fe=Fe-1,be=ve);let lt=Fe-pe;switch(lt){case 0:H=void 0;break;case 1:H=An(Ce,D[pe]);break;default:if(Ce===Y.ParameterStructures.byName)throw new Error(`Received ${lt} parameters for 'by Name' request parameter structure.`);H=D.slice(pe,Fe).map(Yr=>At(Yr));break}}else{let le=D;M=m.method,H=pr(m,le);let ve=m.numberOfParams;be=Rc.CancellationToken.is(le[ve])?le[ve]:void 0}let ge=o++,Ee;be&&(Ee=be.onCancellationRequested(()=>{let le=E.sender.sendCancellation(Bt,ge);return le===void 0?(i.log(`Received no promise from cancellation strategy when cancelling id ${ge}`),Promise.resolve()):le.catch(()=>{i.log(`Sending cancellation messages for id ${ge} failed`)})}));let De={jsonrpc:d,id:ge,method:M,params:H};return Kr(De),typeof E.sender.enableCancellation=="function"&&E.sender.enableCancellation(De),new Promise(async(le,ve)=>{let pe=lt=>{le(lt),E.sender.cleanup(ge),Ee?.dispose()},Ce=lt=>{ve(lt),E.sender.cleanup(ge),Ee?.dispose()},Fe={method:M,timerStart:Date.now(),resolve:pe,reject:Ce};try{await e.write(De),X.set(ge,Fe)}catch(lt){throw i.error("Sending request failed."),Fe.reject(new Y.ResponseError(Y.ErrorCodes.MessageWriteError,lt.message?lt.message:"Unknown reason")),lt}})},onRequest:(m,D)=>{Zt();let M=null;return xc.is(m)?(M=void 0,l=m):Ie.string(m)?(M=null,D!==void 0&&(M=m,h.set(m,{handler:D,type:void 0}))):D!==void 0&&(M=m.method,h.set(m.method,{type:m,handler:D})),{dispose:()=>{M!==null&&(M!==void 0?h.delete(M):l=void 0)}}},hasPendingResponse:()=>X.size>0,trace:async(m,D,M)=>{let H=!1,be=mt.Text;M!==void 0&&(Ie.boolean(M)?H=M:(H=M.sendNotification||!1,be=M.traceFormat||mt.Text)),ee=m,ae=be,ee===me.Off?Q=void 0:Q=D,H&&!z()&&!q()&&await Bt.sendNotification(Lc.type,{value:me.toString(m)})},onError:_e.event,onClose:Ae.event,onUnhandledNotification:qe.event,onDispose:O.event,end:()=>{e.end()},dispose:()=>{if(q())return;te=kt.Disposed,O.fire(void 0);let m=new Y.ResponseError(Y.ErrorCodes.PendingResponseRejected,"Pending response rejected since connection got disposed");for(let D of X.values())D.reject(m);X=new Map,B=new Map,fe=new Set,k=new $f.LinkedMap,Ie.func(e.dispose)&&e.dispose(),Ie.func(n.dispose)&&n.dispose()},listen:()=>{Zt(),Jr(),te=kt.Listening,n.listen(Vr)},inspect:()=>{(0,Cf.default)().console.log("inspect")}};return Bt.onNotification(ao.type,m=>{if(ee===me.Off||!Q)return;let D=ee===me.Verbose||ee===me.Compact;Q.log(m.message,D?m.verbose:void 0)}),Bt.onNotification(Or.type,m=>{let D=_.get(m.token);D?D(m.value):Qe.fire(m)}),Bt}se.createMessageConnection=fw});var ho=I(S=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0});S.ProgressType=S.ProgressToken=S.createMessageConnection=S.NullLogger=S.ConnectionOptions=S.ConnectionStrategy=S.AbstractMessageBuffer=S.WriteableStreamMessageWriter=S.AbstractMessageWriter=S.MessageWriter=S.ReadableStreamMessageReader=S.AbstractMessageReader=S.MessageReader=S.SharedArrayReceiverStrategy=S.SharedArraySenderStrategy=S.CancellationToken=S.CancellationTokenSource=S.Emitter=S.Event=S.Disposable=S.LRUCache=S.Touch=S.LinkedMap=S.ParameterStructures=S.NotificationType9=S.NotificationType8=S.NotificationType7=S.NotificationType6=S.NotificationType5=S.NotificationType4=S.NotificationType3=S.NotificationType2=S.NotificationType1=S.NotificationType0=S.NotificationType=S.ErrorCodes=S.ResponseError=S.RequestType9=S.RequestType8=S.RequestType7=S.RequestType6=S.RequestType5=S.RequestType4=S.RequestType3=S.RequestType2=S.RequestType1=S.RequestType0=S.RequestType=S.Message=S.RAL=void 0;S.MessageStrategy=S.CancellationStrategy=S.CancellationSenderStrategy=S.CancellationReceiverStrategy=S.ConnectionError=S.ConnectionErrors=S.LogTraceNotification=S.SetTraceNotification=S.TraceFormat=S.TraceValues=S.Trace=void 0;var Re=tc();Object.defineProperty(S,"Message",{enumerable:!0,get:function(){return Re.Message}});Object.defineProperty(S,"RequestType",{enumerable:!0,get:function(){return Re.RequestType}});Object.defineProperty(S,"RequestType0",{enumerable:!0,get:function(){return Re.RequestType0}});Object.defineProperty(S,"RequestType1",{enumerable:!0,get:function(){return Re.RequestType1}});Object.defineProperty(S,"RequestType2",{enumerable:!0,get:function(){return Re.RequestType2}});Object.defineProperty(S,"RequestType3",{enumerable:!0,get:function(){return Re.RequestType3}});Object.defineProperty(S,"RequestType4",{enumerable:!0,get:function(){return Re.RequestType4}});Object.defineProperty(S,"RequestType5",{enumerable:!0,get:function(){return Re.RequestType5}});Object.defineProperty(S,"RequestType6",{enumerable:!0,get:function(){return Re.RequestType6}});Object.defineProperty(S,"RequestType7",{enumerable:!0,get:function(){return Re.RequestType7}});Object.defineProperty(S,"RequestType8",{enumerable:!0,get:function(){return Re.RequestType8}});Object.defineProperty(S,"RequestType9",{enumerable:!0,get:function(){return Re.RequestType9}});Object.defineProperty(S,"ResponseError",{enumerable:!0,get:function(){return Re.ResponseError}});Object.defineProperty(S,"ErrorCodes",{enumerable:!0,get:function(){return Re.ErrorCodes}});Object.defineProperty(S,"NotificationType",{enumerable:!0,get:function(){return Re.NotificationType}});Object.defineProperty(S,"NotificationType0",{enumerable:!0,get:function(){return Re.NotificationType0}});Object.defineProperty(S,"NotificationType1",{enumerable:!0,get:function(){return Re.NotificationType1}});Object.defineProperty(S,"NotificationType2",{enumerable:!0,get:function(){return Re.NotificationType2}});Object.defineProperty(S,"NotificationType3",{enumerable:!0,get:function(){return Re.NotificationType3}});Object.defineProperty(S,"NotificationType4",{enumerable:!0,get:function(){return Re.NotificationType4}});Object.defineProperty(S,"NotificationType5",{enumerable:!0,get:function(){return Re.NotificationType5}});Object.defineProperty(S,"NotificationType6",{enumerable:!0,get:function(){return Re.NotificationType6}});Object.defineProperty(S,"NotificationType7",{enumerable:!0,get:function(){return Re.NotificationType7}});Object.defineProperty(S,"NotificationType8",{enumerable:!0,get:function(){return Re.NotificationType8}});Object.defineProperty(S,"NotificationType9",{enumerable:!0,get:function(){return Re.NotificationType9}});Object.defineProperty(S,"ParameterStructures",{enumerable:!0,get:function(){return Re.ParameterStructures}});var Tc=rc();Object.defineProperty(S,"LinkedMap",{enumerable:!0,get:function(){return Tc.LinkedMap}});Object.defineProperty(S,"LRUCache",{enumerable:!0,get:function(){return Tc.LRUCache}});Object.defineProperty(S,"Touch",{enumerable:!0,get:function(){return Tc.Touch}});var pw=Pf();Object.defineProperty(S,"Disposable",{enumerable:!0,get:function(){return pw.Disposable}});var Nf=Gn();Object.defineProperty(S,"Event",{enumerable:!0,get:function(){return Nf.Event}});Object.defineProperty(S,"Emitter",{enumerable:!0,get:function(){return Nf.Emitter}});var Ff=no();Object.defineProperty(S,"CancellationTokenSource",{enumerable:!0,get:function(){return Ff.CancellationTokenSource}});Object.defineProperty(S,"CancellationToken",{enumerable:!0,get:function(){return Ff.CancellationToken}});var jf=Ef();Object.defineProperty(S,"SharedArraySenderStrategy",{enumerable:!0,get:function(){return jf.SharedArraySenderStrategy}});Object.defineProperty(S,"SharedArrayReceiverStrategy",{enumerable:!0,get:function(){return jf.SharedArrayReceiverStrategy}});var Ic=xf();Object.defineProperty(S,"MessageReader",{enumerable:!0,get:function(){return Ic.MessageReader}});Object.defineProperty(S,"AbstractMessageReader",{enumerable:!0,get:function(){return Ic.AbstractMessageReader}});Object.defineProperty(S,"ReadableStreamMessageReader",{enumerable:!0,get:function(){return Ic.ReadableStreamMessageReader}});var Ac=If();Object.defineProperty(S,"MessageWriter",{enumerable:!0,get:function(){return Ac.MessageWriter}});Object.defineProperty(S,"AbstractMessageWriter",{enumerable:!0,get:function(){return Ac.AbstractMessageWriter}});Object.defineProperty(S,"WriteableStreamMessageWriter",{enumerable:!0,get:function(){return Ac.WriteableStreamMessageWriter}});var hw=Af();Object.defineProperty(S,"AbstractMessageBuffer",{enumerable:!0,get:function(){return hw.AbstractMessageBuffer}});var Ve=qf();Object.defineProperty(S,"ConnectionStrategy",{enumerable:!0,get:function(){return Ve.ConnectionStrategy}});Object.defineProperty(S,"ConnectionOptions",{enumerable:!0,get:function(){return Ve.ConnectionOptions}});Object.defineProperty(S,"NullLogger",{enumerable:!0,get:function(){return Ve.NullLogger}});Object.defineProperty(S,"createMessageConnection",{enumerable:!0,get:function(){return Ve.createMessageConnection}});Object.defineProperty(S,"ProgressToken",{enumerable:!0,get:function(){return Ve.ProgressToken}});Object.defineProperty(S,"ProgressType",{enumerable:!0,get:function(){return Ve.ProgressType}});Object.defineProperty(S,"Trace",{enumerable:!0,get:function(){return Ve.Trace}});Object.defineProperty(S,"TraceValues",{enumerable:!0,get:function(){return Ve.TraceValues}});Object.defineProperty(S,"TraceFormat",{enumerable:!0,get:function(){return Ve.TraceFormat}});Object.defineProperty(S,"SetTraceNotification",{enumerable:!0,get:function(){return Ve.SetTraceNotification}});Object.defineProperty(S,"LogTraceNotification",{enumerable:!0,get:function(){return Ve.LogTraceNotification}});Object.defineProperty(S,"ConnectionErrors",{enumerable:!0,get:function(){return Ve.ConnectionErrors}});Object.defineProperty(S,"ConnectionError",{enumerable:!0,get:function(){return Ve.ConnectionError}});Object.defineProperty(S,"CancellationReceiverStrategy",{enumerable:!0,get:function(){return Ve.CancellationReceiverStrategy}});Object.defineProperty(S,"CancellationSenderStrategy",{enumerable:!0,get:function(){return Ve.CancellationSenderStrategy}});Object.defineProperty(S,"CancellationStrategy",{enumerable:!0,get:function(){return Ve.CancellationStrategy}});Object.defineProperty(S,"MessageStrategy",{enumerable:!0,get:function(){return Ve.MessageStrategy}});var mw=cn();S.RAL=mw.default});var Vf=I(Mc=>{"use strict";Object.defineProperty(Mc,"__esModule",{value:!0});var Bf=ut("util"),Gt=ho(),mo=class n extends Gt.AbstractMessageBuffer{constructor(e="utf-8"){super(e)}emptyBuffer(){return n.emptyBuffer}fromString(e,t){return Buffer.from(e,t)}toString(e,t){return e instanceof Buffer?e.toString(t):new Bf.TextDecoder(t).decode(e)}asNative(e,t){return t===void 0?e instanceof Buffer?e:Buffer.from(e):e instanceof Buffer?e.slice(0,t):Buffer.from(e,0,t)}allocNative(e){return Buffer.allocUnsafe(e)}};mo.emptyBuffer=Buffer.allocUnsafe(0);var Cc=class{constructor(e){this.stream=e}onClose(e){return this.stream.on("close",e),Gt.Disposable.create(()=>this.stream.off("close",e))}onError(e){return this.stream.on("error",e),Gt.Disposable.create(()=>this.stream.off("error",e))}onEnd(e){return this.stream.on("end",e),Gt.Disposable.create(()=>this.stream.off("end",e))}onData(e){return this.stream.on("data",e),Gt.Disposable.create(()=>this.stream.off("data",e))}},$c=class{constructor(e){this.stream=e}onClose(e){return this.stream.on("close",e),Gt.Disposable.create(()=>this.stream.off("close",e))}onError(e){return this.stream.on("error",e),Gt.Disposable.create(()=>this.stream.off("error",e))}onEnd(e){return this.stream.on("end",e),Gt.Disposable.create(()=>this.stream.off("end",e))}write(e,t){return new Promise((r,i)=>{let o=s=>{s==null?r():i(s)};typeof e=="string"?this.stream.write(e,t,o):this.stream.write(e,o)})}end(){this.stream.end()}},Uf=Object.freeze({messageBuffer:Object.freeze({create:n=>new mo(n)}),applicationJson:Object.freeze({encoder:Object.freeze({name:"application/json",encode:(n,e)=>{try{return Promise.resolve(Buffer.from(JSON.stringify(n,void 0,0),e.charset))}catch(t){return Promise.reject(t)}}}),decoder:Object.freeze({name:"application/json",decode:(n,e)=>{try{return n instanceof Buffer?Promise.resolve(JSON.parse(n.toString(e.charset))):Promise.resolve(JSON.parse(new Bf.TextDecoder(e.charset).decode(n)))}catch(t){return Promise.reject(t)}}})}),stream:Object.freeze({asReadableStream:n=>new Cc(n),asWritableStream:n=>new $c(n)}),console,timer:Object.freeze({setTimeout(n,e,...t){let r=setTimeout(n,e,...t);return{dispose:()=>clearTimeout(r)}},setImmediate(n,...e){let t=setImmediate(n,...e);return{dispose:()=>clearImmediate(t)}},setInterval(n,e,...t){let r=setInterval(n,e,...t);return{dispose:()=>clearInterval(r)}}})});function Oc(){return Uf}(function(n){function e(){Gt.RAL.install(Uf)}n.install=e})(Oc||(Oc={}));Mc.default=Oc});var Ln=I(de=>{"use strict";var gw=de&&de.__createBinding||(Object.create?function(n,e,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,r,i)}:function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]}),_w=de&&de.__exportStar||function(n,e){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&gw(e,n,t)};Object.defineProperty(de,"__esModule",{value:!0});de.createMessageConnection=de.createServerSocketTransport=de.createClientSocketTransport=de.createServerPipeTransport=de.createClientPipeTransport=de.generateRandomPipeName=de.StreamMessageWriter=de.StreamMessageReader=de.SocketMessageWriter=de.SocketMessageReader=de.PortMessageWriter=de.PortMessageReader=de.IPCMessageWriter=de.IPCMessageReader=void 0;var Yn=Vf();Yn.default.install();var Wf=ut("path"),bw=ut("os"),yw=ut("crypto"),bo=ut("net"),gt=ho();_w(ho(),de);var qc=class extends gt.AbstractMessageReader{constructor(e){super(),this.process=e;let t=this.process;t.on("error",r=>this.fireError(r)),t.on("close",()=>this.fireClose())}listen(e){return this.process.on("message",e),gt.Disposable.create(()=>this.process.off("message",e))}};de.IPCMessageReader=qc;var Nc=class extends gt.AbstractMessageWriter{constructor(e){super(),this.process=e,this.errorCount=0;let t=this.process;t.on("error",r=>this.fireError(r)),t.on("close",()=>this.fireClose)}write(e){try{return typeof this.process.send=="function"&&this.process.send(e,void 0,void 0,t=>{t?(this.errorCount++,this.handleError(t,e)):this.errorCount=0}),Promise.resolve()}catch(t){return this.handleError(t,e),Promise.reject(t)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){}};de.IPCMessageWriter=Nc;var Fc=class extends gt.AbstractMessageReader{constructor(e){super(),this.onData=new gt.Emitter,e.on("close",()=>this.fireClose),e.on("error",t=>this.fireError(t)),e.on("message",t=>{this.onData.fire(t)})}listen(e){return this.onData.event(e)}};de.PortMessageReader=Fc;var jc=class extends gt.AbstractMessageWriter{constructor(e){super(),this.port=e,this.errorCount=0,e.on("close",()=>this.fireClose()),e.on("error",t=>this.fireError(t))}write(e){try{return this.port.postMessage(e),Promise.resolve()}catch(t){return this.handleError(t,e),Promise.reject(t)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){}};de.PortMessageWriter=jc;var Sn=class extends gt.ReadableStreamMessageReader{constructor(e,t="utf-8"){super((0,Yn.default)().stream.asReadableStream(e),t)}};de.SocketMessageReader=Sn;var xn=class extends gt.WriteableStreamMessageWriter{constructor(e,t){super((0,Yn.default)().stream.asWritableStream(e),t),this.socket=e}dispose(){super.dispose(),this.socket.destroy()}};de.SocketMessageWriter=xn;var go=class extends gt.ReadableStreamMessageReader{constructor(e,t){super((0,Yn.default)().stream.asReadableStream(e),t)}};de.StreamMessageReader=go;var _o=class extends gt.WriteableStreamMessageWriter{constructor(e,t){super((0,Yn.default)().stream.asWritableStream(e),t)}};de.StreamMessageWriter=_o;var zf=process.env.XDG_RUNTIME_DIR,vw=new Map([["linux",107],["darwin",103]]);function ww(){let n=(0,yw.randomBytes)(21).toString("hex");if(process.platform==="win32")return`\\\\.\\pipe\\vscode-jsonrpc-${n}-sock`;let e;zf?e=Wf.join(zf,`vscode-ipc-${n}.sock`):e=Wf.join(bw.tmpdir(),`vscode-${n}.sock`);let t=vw.get(process.platform);return t!==void 0&&e.length>t&&(0,Yn.default)().console.warn(`WARNING: IPC handle "${e}" is longer than ${t} characters.`),e}de.generateRandomPipeName=ww;function Pw(n,e="utf-8"){let t,r=new Promise((i,o)=>{t=i});return new Promise((i,o)=>{let s=(0,bo.createServer)(a=>{s.close(),t([new Sn(a,e),new xn(a,e)])});s.on("error",o),s.listen(n,()=>{s.removeListener("error",o),i({onConnected:()=>r})})})}de.createClientPipeTransport=Pw;function Rw(n,e="utf-8"){let t=(0,bo.createConnection)(n);return[new Sn(t,e),new xn(t,e)]}de.createServerPipeTransport=Rw;function Ew(n,e="utf-8"){let t,r=new Promise((i,o)=>{t=i});return new Promise((i,o)=>{let s=(0,bo.createServer)(a=>{s.close(),t([new Sn(a,e),new xn(a,e)])});s.on("error",o),s.listen(n,"127.0.0.1",()=>{s.removeListener("error",o),i({onConnected:()=>r})})})}de.createClientSocketTransport=Ew;function Sw(n,e="utf-8"){let t=(0,bo.createConnection)(n,"127.0.0.1");return[new Sn(t,e),new xn(t,e)]}de.createServerSocketTransport=Sw;function xw(n){let e=n;return e.read!==void 0&&e.addListener!==void 0}function Lw(n){let e=n;return e.write!==void 0&&e.addListener!==void 0}function Dw(n,e,t,r){t||(t=gt.NullLogger);let i=xw(n)?new go(n):n,o=Lw(e)?new _o(e):e;return gt.ConnectionStrategy.is(r)&&(r={connectionStrategy:r}),(0,gt.createMessageConnection)(i,o,t,r)}de.createMessageConnection=Dw});var Bc=I((L0,Hf)=>{"use strict";Hf.exports=Ln()});var vo=I((Kf,yo)=>{"use strict";(function(n){if(typeof yo=="object"&&typeof yo.exports=="object"){var e=n(ut,Kf);e!==void 0&&(yo.exports=e)}else typeof define=="function"&&define.amd&&define(["require","exports"],n)})(function(n,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TextDocument=e.EOL=e.WorkspaceFolder=e.InlineCompletionContext=e.SelectedCompletionInfo=e.InlineCompletionTriggerKind=e.InlineCompletionList=e.InlineCompletionItem=e.StringValue=e.InlayHint=e.InlayHintLabelPart=e.InlayHintKind=e.InlineValueContext=e.InlineValueEvaluatableExpression=e.InlineValueVariableLookup=e.InlineValueText=e.SemanticTokens=e.SemanticTokenModifiers=e.SemanticTokenTypes=e.SelectionRange=e.DocumentLink=e.FormattingOptions=e.CodeLens=e.CodeAction=e.CodeActionContext=e.CodeActionTriggerKind=e.CodeActionKind=e.DocumentSymbol=e.WorkspaceSymbol=e.SymbolInformation=e.SymbolTag=e.SymbolKind=e.DocumentHighlight=e.DocumentHighlightKind=e.SignatureInformation=e.ParameterInformation=e.Hover=e.MarkedString=e.CompletionList=e.CompletionItem=e.CompletionItemLabelDetails=e.InsertTextMode=e.InsertReplaceEdit=e.CompletionItemTag=e.InsertTextFormat=e.CompletionItemKind=e.MarkupContent=e.MarkupKind=e.TextDocumentItem=e.OptionalVersionedTextDocumentIdentifier=e.VersionedTextDocumentIdentifier=e.TextDocumentIdentifier=e.WorkspaceChange=e.WorkspaceEdit=e.DeleteFile=e.RenameFile=e.CreateFile=e.TextDocumentEdit=e.AnnotatedTextEdit=e.ChangeAnnotationIdentifier=e.ChangeAnnotation=e.TextEdit=e.Command=e.Diagnostic=e.CodeDescription=e.DiagnosticTag=e.DiagnosticSeverity=e.DiagnosticRelatedInformation=e.FoldingRange=e.FoldingRangeKind=e.ColorPresentation=e.ColorInformation=e.Color=e.LocationLink=e.Location=e.Range=e.Position=e.uinteger=e.integer=e.URI=e.DocumentUri=void 0;var t;(function(u){function g(y){return typeof y=="string"}u.is=g})(t||(e.DocumentUri=t={}));var r;(function(u){function g(y){return typeof y=="string"}u.is=g})(r||(e.URI=r={}));var i;(function(u){u.MIN_VALUE=-2147483648,u.MAX_VALUE=2147483647;function g(y){return typeof y=="number"&&u.MIN_VALUE<=y&&y<=u.MAX_VALUE}u.is=g})(i||(e.integer=i={}));var o;(function(u){u.MIN_VALUE=0,u.MAX_VALUE=2147483647;function g(y){return typeof y=="number"&&u.MIN_VALUE<=y&&y<=u.MAX_VALUE}u.is=g})(o||(e.uinteger=o={}));var s;(function(u){function g(f,c){return f===Number.MAX_VALUE&&(f=o.MAX_VALUE),c===Number.MAX_VALUE&&(c=o.MAX_VALUE),{line:f,character:c}}u.create=g;function y(f){var c=f;return R.objectLiteral(c)&&R.uinteger(c.line)&&R.uinteger(c.character)}u.is=y})(s||(e.Position=s={}));var a;(function(u){function g(f,c,P,T){if(R.uinteger(f)&&R.uinteger(c)&&R.uinteger(P)&&R.uinteger(T))return{start:s.create(f,c),end:s.create(P,T)};if(s.is(f)&&s.is(c))return{start:f,end:c};throw new Error("Range#create called with invalid arguments[".concat(f,", ").concat(c,", ").concat(P,", ").concat(T,"]"))}u.create=g;function y(f){var c=f;return R.objectLiteral(c)&&s.is(c.start)&&s.is(c.end)}u.is=y})(a||(e.Range=a={}));var d;(function(u){function g(f,c){return{uri:f,range:c}}u.create=g;function y(f){var c=f;return R.objectLiteral(c)&&a.is(c.range)&&(R.string(c.uri)||R.undefined(c.uri))}u.is=y})(d||(e.Location=d={}));var l;(function(u){function g(f,c,P,T){return{targetUri:f,targetRange:c,targetSelectionRange:P,originSelectionRange:T}}u.create=g;function y(f){var c=f;return R.objectLiteral(c)&&a.is(c.targetRange)&&R.string(c.targetUri)&&a.is(c.targetSelectionRange)&&(a.is(c.originSelectionRange)||R.undefined(c.originSelectionRange))}u.is=y})(l||(e.LocationLink=l={}));var h;(function(u){function g(f,c,P,T){return{red:f,green:c,blue:P,alpha:T}}u.create=g;function y(f){var c=f;return R.objectLiteral(c)&&R.numberRange(c.red,0,1)&&R.numberRange(c.green,0,1)&&R.numberRange(c.blue,0,1)&&R.numberRange(c.alpha,0,1)}u.is=y})(h||(e.Color=h={}));var v;(function(u){function g(f,c){return{range:f,color:c}}u.create=g;function y(f){var c=f;return R.objectLiteral(c)&&a.is(c.range)&&h.is(c.color)}u.is=y})(v||(e.ColorInformation=v={}));var w;(function(u){function g(f,c,P){return{label:f,textEdit:c,additionalTextEdits:P}}u.create=g;function y(f){var c=f;return R.objectLiteral(c)&&R.string(c.label)&&(R.undefined(c.textEdit)||Q.is(c))&&(R.undefined(c.additionalTextEdits)||R.typedArray(c.additionalTextEdits,Q.is))}u.is=y})(w||(e.ColorPresentation=w={}));var _;(function(u){u.Comment="comment",u.Imports="imports",u.Region="region"})(_||(e.FoldingRangeKind=_={}));var L;(function(u){function g(f,c,P,T,ie,$e){var we={startLine:f,endLine:c};return R.defined(P)&&(we.startCharacter=P),R.defined(T)&&(we.endCharacter=T),R.defined(ie)&&(we.kind=ie),R.defined($e)&&(we.collapsedText=$e),we}u.create=g;function y(f){var c=f;return R.objectLiteral(c)&&R.uinteger(c.startLine)&&R.uinteger(c.startLine)&&(R.undefined(c.startCharacter)||R.uinteger(c.startCharacter))&&(R.undefined(c.endCharacter)||R.uinteger(c.endCharacter))&&(R.undefined(c.kind)||R.string(c.kind))}u.is=y})(L||(e.FoldingRange=L={}));var k;(function(u){function g(f,c){return{location:f,message:c}}u.create=g;function y(f){var c=f;return R.defined(c)&&d.is(c.location)&&R.string(c.message)}u.is=y})(k||(e.DiagnosticRelatedInformation=k={}));var X;(function(u){u.Error=1,u.Warning=2,u.Information=3,u.Hint=4})(X||(e.DiagnosticSeverity=X={}));var fe;(function(u){u.Unnecessary=1,u.Deprecated=2})(fe||(e.DiagnosticTag=fe={}));var B;(function(u){function g(y){var f=y;return R.objectLiteral(f)&&R.string(f.href)}u.is=g})(B||(e.CodeDescription=B={}));var ee;(function(u){function g(f,c,P,T,ie,$e){var we={range:f,message:c};return R.defined(P)&&(we.severity=P),R.defined(T)&&(we.code=T),R.defined(ie)&&(we.source=ie),R.defined($e)&&(we.relatedInformation=$e),we}u.create=g;function y(f){var c,P=f;return R.defined(P)&&a.is(P.range)&&R.string(P.message)&&(R.number(P.severity)||R.undefined(P.severity))&&(R.integer(P.code)||R.string(P.code)||R.undefined(P.code))&&(R.undefined(P.codeDescription)||R.string((c=P.codeDescription)===null||c===void 0?void 0:c.href))&&(R.string(P.source)||R.undefined(P.source))&&(R.undefined(P.relatedInformation)||R.typedArray(P.relatedInformation,k.is))}u.is=y})(ee||(e.Diagnostic=ee={}));var ae;(function(u){function g(f,c){for(var P=[],T=2;T<arguments.length;T++)P[T-2]=arguments[T];var ie={title:f,command:c};return R.defined(P)&&P.length>0&&(ie.arguments=P),ie}u.create=g;function y(f){var c=f;return R.defined(c)&&R.string(c.title)&&R.string(c.command)}u.is=y})(ae||(e.Command=ae={}));var Q;(function(u){function g(P,T){return{range:P,newText:T}}u.replace=g;function y(P,T){return{range:{start:P,end:P},newText:T}}u.insert=y;function f(P){return{range:P,newText:""}}u.del=f;function c(P){var T=P;return R.objectLiteral(T)&&R.string(T.newText)&&a.is(T.range)}u.is=c})(Q||(e.TextEdit=Q={}));var te;(function(u){function g(f,c,P){var T={label:f};return c!==void 0&&(T.needsConfirmation=c),P!==void 0&&(T.description=P),T}u.create=g;function y(f){var c=f;return R.objectLiteral(c)&&R.string(c.label)&&(R.boolean(c.needsConfirmation)||c.needsConfirmation===void 0)&&(R.string(c.description)||c.description===void 0)}u.is=y})(te||(e.ChangeAnnotation=te={}));var _e;(function(u){function g(y){var f=y;return R.string(f)}u.is=g})(_e||(e.ChangeAnnotationIdentifier=_e={}));var Ae;(function(u){function g(P,T,ie){return{range:P,newText:T,annotationId:ie}}u.replace=g;function y(P,T,ie){return{range:{start:P,end:P},newText:T,annotationId:ie}}u.insert=y;function f(P,T){return{range:P,newText:"",annotationId:T}}u.del=f;function c(P){var T=P;return Q.is(T)&&(te.is(T.annotationId)||_e.is(T.annotationId))}u.is=c})(Ae||(e.AnnotatedTextEdit=Ae={}));var qe;(function(u){function g(f,c){return{textDocument:f,edits:c}}u.create=g;function y(f){var c=f;return R.defined(c)&&z.is(c.textDocument)&&Array.isArray(c.edits)}u.is=y})(qe||(e.TextDocumentEdit=qe={}));var Qe;(function(u){function g(f,c,P){var T={kind:"create",uri:f};return c!==void 0&&(c.overwrite!==void 0||c.ignoreIfExists!==void 0)&&(T.options=c),P!==void 0&&(T.annotationId=P),T}u.create=g;function y(f){var c=f;return c&&c.kind==="create"&&R.string(c.uri)&&(c.options===void 0||(c.options.overwrite===void 0||R.boolean(c.options.overwrite))&&(c.options.ignoreIfExists===void 0||R.boolean(c.options.ignoreIfExists)))&&(c.annotationId===void 0||_e.is(c.annotationId))}u.is=y})(Qe||(e.CreateFile=Qe={}));var O;(function(u){function g(f,c,P,T){var ie={kind:"rename",oldUri:f,newUri:c};return P!==void 0&&(P.overwrite!==void 0||P.ignoreIfExists!==void 0)&&(ie.options=P),T!==void 0&&(ie.annotationId=T),ie}u.create=g;function y(f){var c=f;return c&&c.kind==="rename"&&R.string(c.oldUri)&&R.string(c.newUri)&&(c.options===void 0||(c.options.overwrite===void 0||R.boolean(c.options.overwrite))&&(c.options.ignoreIfExists===void 0||R.boolean(c.options.ignoreIfExists)))&&(c.annotationId===void 0||_e.is(c.annotationId))}u.is=y})(O||(e.RenameFile=O={}));var E;(function(u){function g(f,c,P){var T={kind:"delete",uri:f};return c!==void 0&&(c.recursive!==void 0||c.ignoreIfNotExists!==void 0)&&(T.options=c),P!==void 0&&(T.annotationId=P),T}u.create=g;function y(f){var c=f;return c&&c.kind==="delete"&&R.string(c.uri)&&(c.options===void 0||(c.options.recursive===void 0||R.boolean(c.options.recursive))&&(c.options.ignoreIfNotExists===void 0||R.boolean(c.options.ignoreIfNotExists)))&&(c.annotationId===void 0||_e.is(c.annotationId))}u.is=y})(E||(e.DeleteFile=E={}));var F;(function(u){function g(y){var f=y;return f&&(f.changes!==void 0||f.documentChanges!==void 0)&&(f.documentChanges===void 0||f.documentChanges.every(function(c){return R.string(c.kind)?Qe.is(c)||O.is(c)||E.is(c):qe.is(c)}))}u.is=g})(F||(e.WorkspaceEdit=F={}));var j=function(){function u(g,y){this.edits=g,this.changeAnnotations=y}return u.prototype.insert=function(g,y,f){var c,P;if(f===void 0?c=Q.insert(g,y):_e.is(f)?(P=f,c=Ae.insert(g,y,f)):(this.assertChangeAnnotations(this.changeAnnotations),P=this.changeAnnotations.manage(f),c=Ae.insert(g,y,P)),this.edits.push(c),P!==void 0)return P},u.prototype.replace=function(g,y,f){var c,P;if(f===void 0?c=Q.replace(g,y):_e.is(f)?(P=f,c=Ae.replace(g,y,f)):(this.assertChangeAnnotations(this.changeAnnotations),P=this.changeAnnotations.manage(f),c=Ae.replace(g,y,P)),this.edits.push(c),P!==void 0)return P},u.prototype.delete=function(g,y){var f,c;if(y===void 0?f=Q.del(g):_e.is(y)?(c=y,f=Ae.del(g,y)):(this.assertChangeAnnotations(this.changeAnnotations),c=this.changeAnnotations.manage(y),f=Ae.del(g,c)),this.edits.push(f),c!==void 0)return c},u.prototype.add=function(g){this.edits.push(g)},u.prototype.all=function(){return this.edits},u.prototype.clear=function(){this.edits.splice(0,this.edits.length)},u.prototype.assertChangeAnnotations=function(g){if(g===void 0)throw new Error("Text edit change is not configured to manage change annotations.")},u}(),x=function(){function u(g){this._annotations=g===void 0?Object.create(null):g,this._counter=0,this._size=0}return u.prototype.all=function(){return this._annotations},Object.defineProperty(u.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),u.prototype.manage=function(g,y){var f;if(_e.is(g)?f=g:(f=this.nextId(),y=g),this._annotations[f]!==void 0)throw new Error("Id ".concat(f," is already in use."));if(y===void 0)throw new Error("No annotation provided for id ".concat(f));return this._annotations[f]=y,this._size++,f},u.prototype.nextId=function(){return this._counter++,this._counter.toString()},u}(),A=function(){function u(g){var y=this;this._textEditChanges=Object.create(null),g!==void 0?(this._workspaceEdit=g,g.documentChanges?(this._changeAnnotations=new x(g.changeAnnotations),g.changeAnnotations=this._changeAnnotations.all(),g.documentChanges.forEach(function(f){if(qe.is(f)){var c=new j(f.edits,y._changeAnnotations);y._textEditChanges[f.textDocument.uri]=c}})):g.changes&&Object.keys(g.changes).forEach(function(f){var c=new j(g.changes[f]);y._textEditChanges[f]=c})):this._workspaceEdit={}}return Object.defineProperty(u.prototype,"edit",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),u.prototype.getTextEditChange=function(g){if(z.is(g)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var y={uri:g.uri,version:g.version},f=this._textEditChanges[y.uri];if(!f){var c=[],P={textDocument:y,edits:c};this._workspaceEdit.documentChanges.push(P),f=new j(c,this._changeAnnotations),this._textEditChanges[y.uri]=f}return f}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");var f=this._textEditChanges[g];if(!f){var c=[];this._workspaceEdit.changes[g]=c,f=new j(c),this._textEditChanges[g]=f}return f}},u.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new x,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},u.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},u.prototype.createFile=function(g,y,f){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var c;te.is(y)||_e.is(y)?c=y:f=y;var P,T;if(c===void 0?P=Qe.create(g,f):(T=_e.is(c)?c:this._changeAnnotations.manage(c),P=Qe.create(g,f,T)),this._workspaceEdit.documentChanges.push(P),T!==void 0)return T},u.prototype.renameFile=function(g,y,f,c){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var P;te.is(f)||_e.is(f)?P=f:c=f;var T,ie;if(P===void 0?T=O.create(g,y,c):(ie=_e.is(P)?P:this._changeAnnotations.manage(P),T=O.create(g,y,c,ie)),this._workspaceEdit.documentChanges.push(T),ie!==void 0)return ie},u.prototype.deleteFile=function(g,y,f){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var c;te.is(y)||_e.is(y)?c=y:f=y;var P,T;if(c===void 0?P=E.create(g,f):(T=_e.is(c)?c:this._changeAnnotations.manage(c),P=E.create(g,f,T)),this._workspaceEdit.documentChanges.push(P),T!==void 0)return T},u}();e.WorkspaceChange=A;var C;(function(u){function g(f){return{uri:f}}u.create=g;function y(f){var c=f;return R.defined(c)&&R.string(c.uri)}u.is=y})(C||(e.TextDocumentIdentifier=C={}));var N;(function(u){function g(f,c){return{uri:f,version:c}}u.create=g;function y(f){var c=f;return R.defined(c)&&R.string(c.uri)&&R.integer(c.version)}u.is=y})(N||(e.VersionedTextDocumentIdentifier=N={}));var z;(function(u){function g(f,c){return{uri:f,version:c}}u.create=g;function y(f){var c=f;return R.defined(c)&&R.string(c.uri)&&(c.version===null||R.integer(c.version))}u.is=y})(z||(e.OptionalVersionedTextDocumentIdentifier=z={}));var q;(function(u){function g(f,c,P,T){return{uri:f,languageId:c,version:P,text:T}}u.create=g;function y(f){var c=f;return R.defined(c)&&R.string(c.uri)&&R.string(c.languageId)&&R.integer(c.version)&&R.string(c.text)}u.is=y})(q||(e.TextDocumentItem=q={}));var ne;(function(u){u.PlainText="plaintext",u.Markdown="markdown";function g(y){var f=y;return f===u.PlainText||f===u.Markdown}u.is=g})(ne||(e.MarkupKind=ne={}));var re;(function(u){function g(y){var f=y;return R.objectLiteral(y)&&ne.is(f.kind)&&R.string(f.value)}u.is=g})(re||(e.MarkupContent=re={}));var Me;(function(u){u.Text=1,u.Method=2,u.Function=3,u.Constructor=4,u.Field=5,u.Variable=6,u.Class=7,u.Interface=8,u.Module=9,u.Property=10,u.Unit=11,u.Value=12,u.Enum=13,u.Keyword=14,u.Snippet=15,u.Color=16,u.File=17,u.Reference=18,u.Folder=19,u.EnumMember=20,u.Constant=21,u.Struct=22,u.Event=23,u.Operator=24,u.TypeParameter=25})(Me||(e.CompletionItemKind=Me={}));var he;(function(u){u.PlainText=1,u.Snippet=2})(he||(e.InsertTextFormat=he={}));var Ye;(function(u){u.Deprecated=1})(Ye||(e.CompletionItemTag=Ye={}));var It;(function(u){function g(f,c,P){return{newText:f,insert:c,replace:P}}u.create=g;function y(f){var c=f;return c&&R.string(c.newText)&&a.is(c.insert)&&a.is(c.replace)}u.is=y})(It||(e.InsertReplaceEdit=It={}));var Vr;(function(u){u.asIs=1,u.adjustIndentation=2})(Vr||(e.InsertTextMode=Vr={}));var Wr;(function(u){function g(y){var f=y;return f&&(R.string(f.detail)||f.detail===void 0)&&(R.string(f.description)||f.description===void 0)}u.is=g})(Wr||(e.CompletionItemLabelDetails=Wr={}));var zr;(function(u){function g(y){return{label:y}}u.create=g})(zr||(e.CompletionItem=zr={}));var Hr;(function(u){function g(y,f){return{items:y||[],isIncomplete:!!f}}u.create=g})(Hr||(e.CompletionList=Hr={}));var Tn;(function(u){function g(f){return f.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}u.fromPlainText=g;function y(f){var c=f;return R.string(c)||R.objectLiteral(c)&&R.string(c.language)&&R.string(c.value)}u.is=y})(Tn||(e.MarkedString=Tn={}));var St;(function(u){function g(y){var f=y;return!!f&&R.objectLiteral(f)&&(re.is(f.contents)||Tn.is(f.contents)||R.typedArray(f.contents,Tn.is))&&(y.range===void 0||a.is(y.range))}u.is=g})(St||(e.Hover=St={}));var Kr;(function(u){function g(y,f){return f?{label:y,documentation:f}:{label:y}}u.create=g})(Kr||(e.ParameterInformation=Kr={}));var Gr;(function(u){function g(y,f){for(var c=[],P=2;P<arguments.length;P++)c[P-2]=arguments[P];var T={label:y};return R.defined(f)&&(T.documentation=f),R.defined(c)?T.parameters=c:T.parameters=[],T}u.create=g})(Gr||(e.SignatureInformation=Gr={}));var gn;(function(u){u.Text=1,u.Read=2,u.Write=3})(gn||(e.DocumentHighlightKind=gn={}));var Xr;(function(u){function g(y,f){var c={range:y};return R.number(f)&&(c.kind=f),c}u.create=g})(Xr||(e.DocumentHighlight=Xr={}));var In;(function(u){u.File=1,u.Module=2,u.Namespace=3,u.Package=4,u.Class=5,u.Method=6,u.Property=7,u.Field=8,u.Constructor=9,u.Enum=10,u.Interface=11,u.Function=12,u.Variable=13,u.Constant=14,u.String=15,u.Number=16,u.Boolean=17,u.Array=18,u.Object=19,u.Key=20,u.Null=21,u.EnumMember=22,u.Struct=23,u.Event=24,u.Operator=25,u.TypeParameter=26})(In||(e.SymbolKind=In={}));var Zr;(function(u){u.Deprecated=1})(Zr||(e.SymbolTag=Zr={}));var jt;(function(u){function g(y,f,c,P,T){var ie={name:y,kind:f,location:{uri:P,range:c}};return T&&(ie.containerName=T),ie}u.create=g})(jt||(e.SymbolInformation=jt={}));var Zt;(function(u){function g(y,f,c,P){return P!==void 0?{name:y,kind:f,location:{uri:c,range:P}}:{name:y,kind:f,location:{uri:c}}}u.create=g})(Zt||(e.WorkspaceSymbol=Zt={}));var Jr;(function(u){function g(f,c,P,T,ie,$e){var we={name:f,detail:c,kind:P,range:T,selectionRange:ie};return $e!==void 0&&(we.children=$e),we}u.create=g;function y(f){var c=f;return c&&R.string(c.name)&&R.number(c.kind)&&a.is(c.range)&&a.is(c.selectionRange)&&(c.detail===void 0||R.string(c.detail))&&(c.deprecated===void 0||R.boolean(c.deprecated))&&(c.children===void 0||Array.isArray(c.children))&&(c.tags===void 0||Array.isArray(c.tags))}u.is=y})(Jr||(e.DocumentSymbol=Jr={}));var Qr;(function(u){u.Empty="",u.QuickFix="quickfix",u.Refactor="refactor",u.RefactorExtract="refactor.extract",u.RefactorInline="refactor.inline",u.RefactorRewrite="refactor.rewrite",u.Source="source",u.SourceOrganizeImports="source.organizeImports",u.SourceFixAll="source.fixAll"})(Qr||(e.CodeActionKind=Qr={}));var At;(function(u){u.Invoked=1,u.Automatic=2})(At||(e.CodeActionTriggerKind=At={}));var dr;(function(u){function g(f,c,P){var T={diagnostics:f};return c!=null&&(T.only=c),P!=null&&(T.triggerKind=P),T}u.create=g;function y(f){var c=f;return R.defined(c)&&R.typedArray(c.diagnostics,ee.is)&&(c.only===void 0||R.typedArray(c.only,R.string))&&(c.triggerKind===void 0||c.triggerKind===At.Invoked||c.triggerKind===At.Automatic)}u.is=y})(dr||(e.CodeActionContext=dr={}));var fr;(function(u){function g(f,c,P){var T={title:f},ie=!0;return typeof c=="string"?(ie=!1,T.kind=c):ae.is(c)?T.command=c:T.edit=c,ie&&P!==void 0&&(T.kind=P),T}u.create=g;function y(f){var c=f;return c&&R.string(c.title)&&(c.diagnostics===void 0||R.typedArray(c.diagnostics,ee.is))&&(c.kind===void 0||R.string(c.kind))&&(c.edit!==void 0||c.command!==void 0)&&(c.command===void 0||ae.is(c.command))&&(c.isPreferred===void 0||R.boolean(c.isPreferred))&&(c.edit===void 0||F.is(c.edit))}u.is=y})(fr||(e.CodeAction=fr={}));var An;(function(u){function g(f,c){var P={range:f};return R.defined(c)&&(P.data=c),P}u.create=g;function y(f){var c=f;return R.defined(c)&&a.is(c.range)&&(R.undefined(c.command)||ae.is(c.command))}u.is=y})(An||(e.CodeLens=An={}));var pr;(function(u){function g(f,c){return{tabSize:f,insertSpaces:c}}u.create=g;function y(f){var c=f;return R.defined(c)&&R.uinteger(c.tabSize)&&R.boolean(c.insertSpaces)}u.is=y})(pr||(e.FormattingOptions=pr={}));var Bt;(function(u){function g(f,c,P){return{range:f,target:c,data:P}}u.create=g;function y(f){var c=f;return R.defined(c)&&a.is(c.range)&&(R.undefined(c.target)||R.string(c.target))}u.is=y})(Bt||(e.DocumentLink=Bt={}));var m;(function(u){function g(f,c){return{range:f,parent:c}}u.create=g;function y(f){var c=f;return R.objectLiteral(c)&&a.is(c.range)&&(c.parent===void 0||u.is(c.parent))}u.is=y})(m||(e.SelectionRange=m={}));var D;(function(u){u.namespace="namespace",u.type="type",u.class="class",u.enum="enum",u.interface="interface",u.struct="struct",u.typeParameter="typeParameter",u.parameter="parameter",u.variable="variable",u.property="property",u.enumMember="enumMember",u.event="event",u.function="function",u.method="method",u.macro="macro",u.keyword="keyword",u.modifier="modifier",u.comment="comment",u.string="string",u.number="number",u.regexp="regexp",u.operator="operator",u.decorator="decorator"})(D||(e.SemanticTokenTypes=D={}));var M;(function(u){u.declaration="declaration",u.definition="definition",u.readonly="readonly",u.static="static",u.deprecated="deprecated",u.abstract="abstract",u.async="async",u.modification="modification",u.documentation="documentation",u.defaultLibrary="defaultLibrary"})(M||(e.SemanticTokenModifiers=M={}));var H;(function(u){function g(y){var f=y;return R.objectLiteral(f)&&(f.resultId===void 0||typeof f.resultId=="string")&&Array.isArray(f.data)&&(f.data.length===0||typeof f.data[0]=="number")}u.is=g})(H||(e.SemanticTokens=H={}));var be;(function(u){function g(f,c){return{range:f,text:c}}u.create=g;function y(f){var c=f;return c!=null&&a.is(c.range)&&R.string(c.text)}u.is=y})(be||(e.InlineValueText=be={}));var ge;(function(u){function g(f,c,P){return{range:f,variableName:c,caseSensitiveLookup:P}}u.create=g;function y(f){var c=f;return c!=null&&a.is(c.range)&&R.boolean(c.caseSensitiveLookup)&&(R.string(c.variableName)||c.variableName===void 0)}u.is=y})(ge||(e.InlineValueVariableLookup=ge={}));var Ee;(function(u){function g(f,c){return{range:f,expression:c}}u.create=g;function y(f){var c=f;return c!=null&&a.is(c.range)&&(R.string(c.expression)||c.expression===void 0)}u.is=y})(Ee||(e.InlineValueEvaluatableExpression=Ee={}));var De;(function(u){function g(f,c){return{frameId:f,stoppedLocation:c}}u.create=g;function y(f){var c=f;return R.defined(c)&&a.is(f.stoppedLocation)}u.is=y})(De||(e.InlineValueContext=De={}));var le;(function(u){u.Type=1,u.Parameter=2;function g(y){return y===1||y===2}u.is=g})(le||(e.InlayHintKind=le={}));var ve;(function(u){function g(f){return{value:f}}u.create=g;function y(f){var c=f;return R.objectLiteral(c)&&(c.tooltip===void 0||R.string(c.tooltip)||re.is(c.tooltip))&&(c.location===void 0||d.is(c.location))&&(c.command===void 0||ae.is(c.command))}u.is=y})(ve||(e.InlayHintLabelPart=ve={}));var pe;(function(u){function g(f,c,P){var T={position:f,label:c};return P!==void 0&&(T.kind=P),T}u.create=g;function y(f){var c=f;return R.objectLiteral(c)&&s.is(c.position)&&(R.string(c.label)||R.typedArray(c.label,ve.is))&&(c.kind===void 0||le.is(c.kind))&&c.textEdits===void 0||R.typedArray(c.textEdits,Q.is)&&(c.tooltip===void 0||R.string(c.tooltip)||re.is(c.tooltip))&&(c.paddingLeft===void 0||R.boolean(c.paddingLeft))&&(c.paddingRight===void 0||R.boolean(c.paddingRight))}u.is=y})(pe||(e.InlayHint=pe={}));var Ce;(function(u){function g(y){return{kind:"snippet",value:y}}u.createSnippet=g})(Ce||(e.StringValue=Ce={}));var Fe;(function(u){function g(y,f,c,P){return{insertText:y,filterText:f,range:c,command:P}}u.create=g})(Fe||(e.InlineCompletionItem=Fe={}));var lt;(function(u){function g(y){return{items:y}}u.create=g})(lt||(e.InlineCompletionList=lt={}));var Yr;(function(u){u.Invoked=0,u.Automatic=1})(Yr||(e.InlineCompletionTriggerKind=Yr={}));var ul;(function(u){function g(y,f){return{range:y,text:f}}u.create=g})(ul||(e.SelectedCompletionInfo=ul={}));var dl;(function(u){function g(y,f){return{triggerKind:y,selectedCompletionInfo:f}}u.create=g})(dl||(e.InlineCompletionContext=dl={}));var fl;(function(u){function g(y){var f=y;return R.objectLiteral(f)&&r.is(f.uri)&&R.string(f.name)}u.is=g})(fl||(e.WorkspaceFolder=fl={})),e.EOL=[`
50
+ `,`\r
51
+ `,"\r"];var pl;(function(u){function g(P,T,ie,$e){return new yg(P,T,ie,$e)}u.create=g;function y(P){var T=P;return!!(R.defined(T)&&R.string(T.uri)&&(R.undefined(T.languageId)||R.string(T.languageId))&&R.uinteger(T.lineCount)&&R.func(T.getText)&&R.func(T.positionAt)&&R.func(T.offsetAt))}u.is=y;function f(P,T){for(var ie=P.getText(),$e=c(T,function(Cn,ei){var hl=Cn.range.start.line-ei.range.start.line;return hl===0?Cn.range.start.character-ei.range.start.character:hl}),we=ie.length,xt=$e.length-1;xt>=0;xt--){var b=$e[xt],Ut=P.offsetAt(b.range.start),ue=P.offsetAt(b.range.end);if(ue<=we)ie=ie.substring(0,Ut)+b.newText+ie.substring(ue,ie.length);else throw new Error("Overlapping edit");we=Ut}return ie}u.applyEdits=f;function c(P,T){if(P.length<=1)return P;var ie=P.length/2|0,$e=P.slice(0,ie),we=P.slice(ie);c($e,T),c(we,T);for(var xt=0,b=0,Ut=0;xt<$e.length&&b<we.length;){var ue=T($e[xt],we[b]);ue<=0?P[Ut++]=$e[xt++]:P[Ut++]=we[b++]}for(;xt<$e.length;)P[Ut++]=$e[xt++];for(;b<we.length;)P[Ut++]=we[b++];return P}})(pl||(e.TextDocument=pl={}));var yg=function(){function u(g,y,f,c){this._uri=g,this._languageId=y,this._version=f,this._content=c,this._lineOffsets=void 0}return Object.defineProperty(u.prototype,"uri",{get:function(){return this._uri},enumerable:!1,configurable:!0}),Object.defineProperty(u.prototype,"languageId",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(u.prototype,"version",{get:function(){return this._version},enumerable:!1,configurable:!0}),u.prototype.getText=function(g){if(g){var y=this.offsetAt(g.start),f=this.offsetAt(g.end);return this._content.substring(y,f)}return this._content},u.prototype.update=function(g,y){this._content=g.text,this._version=y,this._lineOffsets=void 0},u.prototype.getLineOffsets=function(){if(this._lineOffsets===void 0){for(var g=[],y=this._content,f=!0,c=0;c<y.length;c++){f&&(g.push(c),f=!1);var P=y.charAt(c);f=P==="\r"||P===`
52
+ `,P==="\r"&&c+1<y.length&&y.charAt(c+1)===`
53
+ `&&c++}f&&y.length>0&&g.push(y.length),this._lineOffsets=g}return this._lineOffsets},u.prototype.positionAt=function(g){g=Math.max(Math.min(g,this._content.length),0);var y=this.getLineOffsets(),f=0,c=y.length;if(c===0)return s.create(0,g);for(;f<c;){var P=Math.floor((f+c)/2);y[P]>g?c=P:f=P+1}var T=f-1;return s.create(T,g-y[T])},u.prototype.offsetAt=function(g){var y=this.getLineOffsets();if(g.line>=y.length)return this._content.length;if(g.line<0)return 0;var f=y[g.line],c=g.line+1<y.length?y[g.line+1]:this._content.length;return Math.max(Math.min(f+g.character,c),f)},Object.defineProperty(u.prototype,"lineCount",{get:function(){return this.getLineOffsets().length},enumerable:!1,configurable:!0}),u}(),R;(function(u){var g=Object.prototype.toString;function y(ue){return typeof ue<"u"}u.defined=y;function f(ue){return typeof ue>"u"}u.undefined=f;function c(ue){return ue===!0||ue===!1}u.boolean=c;function P(ue){return g.call(ue)==="[object String]"}u.string=P;function T(ue){return g.call(ue)==="[object Number]"}u.number=T;function ie(ue,Cn,ei){return g.call(ue)==="[object Number]"&&Cn<=ue&&ue<=ei}u.numberRange=ie;function $e(ue){return g.call(ue)==="[object Number]"&&-2147483648<=ue&&ue<=2147483647}u.integer=$e;function we(ue){return g.call(ue)==="[object Number]"&&0<=ue&&ue<=2147483647}u.uinteger=we;function xt(ue){return g.call(ue)==="[object Function]"}u.func=xt;function b(ue){return ue!==null&&typeof ue=="object"}u.objectLiteral=b;function Ut(ue,Cn){return Array.isArray(ue)&&ue.every(Cn)}u.typedArray=Ut})(R||(R={}))})});var Te=I(st=>{"use strict";Object.defineProperty(st,"__esModule",{value:!0});st.ProtocolNotificationType=st.ProtocolNotificationType0=st.ProtocolRequestType=st.ProtocolRequestType0=st.RegistrationType=st.MessageDirection=void 0;var er=Ln(),Gf;(function(n){n.clientToServer="clientToServer",n.serverToClient="serverToClient",n.both="both"})(Gf||(st.MessageDirection=Gf={}));var Uc=class{constructor(e){this.method=e}};st.RegistrationType=Uc;var Vc=class extends er.RequestType0{constructor(e){super(e)}};st.ProtocolRequestType0=Vc;var Wc=class extends er.RequestType{constructor(e){super(e,er.ParameterStructures.byName)}};st.ProtocolRequestType=Wc;var zc=class extends er.NotificationType0{constructor(e){super(e)}};st.ProtocolNotificationType0=zc;var Hc=class extends er.NotificationType{constructor(e){super(e,er.ParameterStructures.byName)}};st.ProtocolNotificationType=Hc});var wo=I(Ne=>{"use strict";Object.defineProperty(Ne,"__esModule",{value:!0});Ne.objectLiteral=Ne.typedArray=Ne.stringArray=Ne.array=Ne.func=Ne.error=Ne.number=Ne.string=Ne.boolean=void 0;function kw(n){return n===!0||n===!1}Ne.boolean=kw;function Xf(n){return typeof n=="string"||n instanceof String}Ne.string=Xf;function Tw(n){return typeof n=="number"||n instanceof Number}Ne.number=Tw;function Iw(n){return n instanceof Error}Ne.error=Iw;function Aw(n){return typeof n=="function"}Ne.func=Aw;function Zf(n){return Array.isArray(n)}Ne.array=Zf;function Cw(n){return Zf(n)&&n.every(e=>Xf(e))}Ne.stringArray=Cw;function $w(n,e){return Array.isArray(n)&&n.every(e)}Ne.typedArray=$w;function Ow(n){return n!==null&&typeof n=="object"}Ne.objectLiteral=Ow});var Yf=I(Po=>{"use strict";Object.defineProperty(Po,"__esModule",{value:!0});Po.ImplementationRequest=void 0;var Jf=Te(),Qf;(function(n){n.method="textDocument/implementation",n.messageDirection=Jf.MessageDirection.clientToServer,n.type=new Jf.ProtocolRequestType(n.method)})(Qf||(Po.ImplementationRequest=Qf={}))});var np=I(Ro=>{"use strict";Object.defineProperty(Ro,"__esModule",{value:!0});Ro.TypeDefinitionRequest=void 0;var ep=Te(),tp;(function(n){n.method="textDocument/typeDefinition",n.messageDirection=ep.MessageDirection.clientToServer,n.type=new ep.ProtocolRequestType(n.method)})(tp||(Ro.TypeDefinitionRequest=tp={}))});var op=I(tr=>{"use strict";Object.defineProperty(tr,"__esModule",{value:!0});tr.DidChangeWorkspaceFoldersNotification=tr.WorkspaceFoldersRequest=void 0;var Eo=Te(),rp;(function(n){n.method="workspace/workspaceFolders",n.messageDirection=Eo.MessageDirection.serverToClient,n.type=new Eo.ProtocolRequestType0(n.method)})(rp||(tr.WorkspaceFoldersRequest=rp={}));var ip;(function(n){n.method="workspace/didChangeWorkspaceFolders",n.messageDirection=Eo.MessageDirection.clientToServer,n.type=new Eo.ProtocolNotificationType(n.method)})(ip||(tr.DidChangeWorkspaceFoldersNotification=ip={}))});var cp=I(So=>{"use strict";Object.defineProperty(So,"__esModule",{value:!0});So.ConfigurationRequest=void 0;var sp=Te(),ap;(function(n){n.method="workspace/configuration",n.messageDirection=sp.MessageDirection.serverToClient,n.type=new sp.ProtocolRequestType(n.method)})(ap||(So.ConfigurationRequest=ap={}))});var dp=I(nr=>{"use strict";Object.defineProperty(nr,"__esModule",{value:!0});nr.ColorPresentationRequest=nr.DocumentColorRequest=void 0;var xo=Te(),lp;(function(n){n.method="textDocument/documentColor",n.messageDirection=xo.MessageDirection.clientToServer,n.type=new xo.ProtocolRequestType(n.method)})(lp||(nr.DocumentColorRequest=lp={}));var up;(function(n){n.method="textDocument/colorPresentation",n.messageDirection=xo.MessageDirection.clientToServer,n.type=new xo.ProtocolRequestType(n.method)})(up||(nr.ColorPresentationRequest=up={}))});var hp=I(rr=>{"use strict";Object.defineProperty(rr,"__esModule",{value:!0});rr.FoldingRangeRefreshRequest=rr.FoldingRangeRequest=void 0;var Lo=Te(),fp;(function(n){n.method="textDocument/foldingRange",n.messageDirection=Lo.MessageDirection.clientToServer,n.type=new Lo.ProtocolRequestType(n.method)})(fp||(rr.FoldingRangeRequest=fp={}));var pp;(function(n){n.method="workspace/foldingRange/refresh",n.messageDirection=Lo.MessageDirection.serverToClient,n.type=new Lo.ProtocolRequestType0(n.method)})(pp||(rr.FoldingRangeRefreshRequest=pp={}))});var _p=I(Do=>{"use strict";Object.defineProperty(Do,"__esModule",{value:!0});Do.DeclarationRequest=void 0;var mp=Te(),gp;(function(n){n.method="textDocument/declaration",n.messageDirection=mp.MessageDirection.clientToServer,n.type=new mp.ProtocolRequestType(n.method)})(gp||(Do.DeclarationRequest=gp={}))});var vp=I(ko=>{"use strict";Object.defineProperty(ko,"__esModule",{value:!0});ko.SelectionRangeRequest=void 0;var bp=Te(),yp;(function(n){n.method="textDocument/selectionRange",n.messageDirection=bp.MessageDirection.clientToServer,n.type=new bp.ProtocolRequestType(n.method)})(yp||(ko.SelectionRangeRequest=yp={}))});var Ep=I(dn=>{"use strict";Object.defineProperty(dn,"__esModule",{value:!0});dn.WorkDoneProgressCancelNotification=dn.WorkDoneProgressCreateRequest=dn.WorkDoneProgress=void 0;var Mw=Ln(),To=Te(),wp;(function(n){n.type=new Mw.ProgressType;function e(t){return t===n.type}n.is=e})(wp||(dn.WorkDoneProgress=wp={}));var Pp;(function(n){n.method="window/workDoneProgress/create",n.messageDirection=To.MessageDirection.serverToClient,n.type=new To.ProtocolRequestType(n.method)})(Pp||(dn.WorkDoneProgressCreateRequest=Pp={}));var Rp;(function(n){n.method="window/workDoneProgress/cancel",n.messageDirection=To.MessageDirection.clientToServer,n.type=new To.ProtocolNotificationType(n.method)})(Rp||(dn.WorkDoneProgressCancelNotification=Rp={}))});var Dp=I(fn=>{"use strict";Object.defineProperty(fn,"__esModule",{value:!0});fn.CallHierarchyOutgoingCallsRequest=fn.CallHierarchyIncomingCallsRequest=fn.CallHierarchyPrepareRequest=void 0;var ir=Te(),Sp;(function(n){n.method="textDocument/prepareCallHierarchy",n.messageDirection=ir.MessageDirection.clientToServer,n.type=new ir.ProtocolRequestType(n.method)})(Sp||(fn.CallHierarchyPrepareRequest=Sp={}));var xp;(function(n){n.method="callHierarchy/incomingCalls",n.messageDirection=ir.MessageDirection.clientToServer,n.type=new ir.ProtocolRequestType(n.method)})(xp||(fn.CallHierarchyIncomingCallsRequest=xp={}));var Lp;(function(n){n.method="callHierarchy/outgoingCalls",n.messageDirection=ir.MessageDirection.clientToServer,n.type=new ir.ProtocolRequestType(n.method)})(Lp||(fn.CallHierarchyOutgoingCallsRequest=Lp={}))});var $p=I(at=>{"use strict";Object.defineProperty(at,"__esModule",{value:!0});at.SemanticTokensRefreshRequest=at.SemanticTokensRangeRequest=at.SemanticTokensDeltaRequest=at.SemanticTokensRequest=at.SemanticTokensRegistrationType=at.TokenFormat=void 0;var Xt=Te(),kp;(function(n){n.Relative="relative"})(kp||(at.TokenFormat=kp={}));var Nr;(function(n){n.method="textDocument/semanticTokens",n.type=new Xt.RegistrationType(n.method)})(Nr||(at.SemanticTokensRegistrationType=Nr={}));var Tp;(function(n){n.method="textDocument/semanticTokens/full",n.messageDirection=Xt.MessageDirection.clientToServer,n.type=new Xt.ProtocolRequestType(n.method),n.registrationMethod=Nr.method})(Tp||(at.SemanticTokensRequest=Tp={}));var Ip;(function(n){n.method="textDocument/semanticTokens/full/delta",n.messageDirection=Xt.MessageDirection.clientToServer,n.type=new Xt.ProtocolRequestType(n.method),n.registrationMethod=Nr.method})(Ip||(at.SemanticTokensDeltaRequest=Ip={}));var Ap;(function(n){n.method="textDocument/semanticTokens/range",n.messageDirection=Xt.MessageDirection.clientToServer,n.type=new Xt.ProtocolRequestType(n.method),n.registrationMethod=Nr.method})(Ap||(at.SemanticTokensRangeRequest=Ap={}));var Cp;(function(n){n.method="workspace/semanticTokens/refresh",n.messageDirection=Xt.MessageDirection.serverToClient,n.type=new Xt.ProtocolRequestType0(n.method)})(Cp||(at.SemanticTokensRefreshRequest=Cp={}))});var qp=I(Io=>{"use strict";Object.defineProperty(Io,"__esModule",{value:!0});Io.ShowDocumentRequest=void 0;var Op=Te(),Mp;(function(n){n.method="window/showDocument",n.messageDirection=Op.MessageDirection.serverToClient,n.type=new Op.ProtocolRequestType(n.method)})(Mp||(Io.ShowDocumentRequest=Mp={}))});var jp=I(Ao=>{"use strict";Object.defineProperty(Ao,"__esModule",{value:!0});Ao.LinkedEditingRangeRequest=void 0;var Np=Te(),Fp;(function(n){n.method="textDocument/linkedEditingRange",n.messageDirection=Np.MessageDirection.clientToServer,n.type=new Np.ProtocolRequestType(n.method)})(Fp||(Ao.LinkedEditingRangeRequest=Fp={}))});var Gp=I(Ge=>{"use strict";Object.defineProperty(Ge,"__esModule",{value:!0});Ge.WillDeleteFilesRequest=Ge.DidDeleteFilesNotification=Ge.DidRenameFilesNotification=Ge.WillRenameFilesRequest=Ge.DidCreateFilesNotification=Ge.WillCreateFilesRequest=Ge.FileOperationPatternKind=void 0;var Pt=Te(),Bp;(function(n){n.file="file",n.folder="folder"})(Bp||(Ge.FileOperationPatternKind=Bp={}));var Up;(function(n){n.method="workspace/willCreateFiles",n.messageDirection=Pt.MessageDirection.clientToServer,n.type=new Pt.ProtocolRequestType(n.method)})(Up||(Ge.WillCreateFilesRequest=Up={}));var Vp;(function(n){n.method="workspace/didCreateFiles",n.messageDirection=Pt.MessageDirection.clientToServer,n.type=new Pt.ProtocolNotificationType(n.method)})(Vp||(Ge.DidCreateFilesNotification=Vp={}));var Wp;(function(n){n.method="workspace/willRenameFiles",n.messageDirection=Pt.MessageDirection.clientToServer,n.type=new Pt.ProtocolRequestType(n.method)})(Wp||(Ge.WillRenameFilesRequest=Wp={}));var zp;(function(n){n.method="workspace/didRenameFiles",n.messageDirection=Pt.MessageDirection.clientToServer,n.type=new Pt.ProtocolNotificationType(n.method)})(zp||(Ge.DidRenameFilesNotification=zp={}));var Hp;(function(n){n.method="workspace/didDeleteFiles",n.messageDirection=Pt.MessageDirection.clientToServer,n.type=new Pt.ProtocolNotificationType(n.method)})(Hp||(Ge.DidDeleteFilesNotification=Hp={}));var Kp;(function(n){n.method="workspace/willDeleteFiles",n.messageDirection=Pt.MessageDirection.clientToServer,n.type=new Pt.ProtocolRequestType(n.method)})(Kp||(Ge.WillDeleteFilesRequest=Kp={}))});var Yp=I(pn=>{"use strict";Object.defineProperty(pn,"__esModule",{value:!0});pn.MonikerRequest=pn.MonikerKind=pn.UniquenessLevel=void 0;var Xp=Te(),Zp;(function(n){n.document="document",n.project="project",n.group="group",n.scheme="scheme",n.global="global"})(Zp||(pn.UniquenessLevel=Zp={}));var Jp;(function(n){n.$import="import",n.$export="export",n.local="local"})(Jp||(pn.MonikerKind=Jp={}));var Qp;(function(n){n.method="textDocument/moniker",n.messageDirection=Xp.MessageDirection.clientToServer,n.type=new Xp.ProtocolRequestType(n.method)})(Qp||(pn.MonikerRequest=Qp={}))});var rh=I(hn=>{"use strict";Object.defineProperty(hn,"__esModule",{value:!0});hn.TypeHierarchySubtypesRequest=hn.TypeHierarchySupertypesRequest=hn.TypeHierarchyPrepareRequest=void 0;var or=Te(),eh;(function(n){n.method="textDocument/prepareTypeHierarchy",n.messageDirection=or.MessageDirection.clientToServer,n.type=new or.ProtocolRequestType(n.method)})(eh||(hn.TypeHierarchyPrepareRequest=eh={}));var th;(function(n){n.method="typeHierarchy/supertypes",n.messageDirection=or.MessageDirection.clientToServer,n.type=new or.ProtocolRequestType(n.method)})(th||(hn.TypeHierarchySupertypesRequest=th={}));var nh;(function(n){n.method="typeHierarchy/subtypes",n.messageDirection=or.MessageDirection.clientToServer,n.type=new or.ProtocolRequestType(n.method)})(nh||(hn.TypeHierarchySubtypesRequest=nh={}))});var sh=I(sr=>{"use strict";Object.defineProperty(sr,"__esModule",{value:!0});sr.InlineValueRefreshRequest=sr.InlineValueRequest=void 0;var Co=Te(),ih;(function(n){n.method="textDocument/inlineValue",n.messageDirection=Co.MessageDirection.clientToServer,n.type=new Co.ProtocolRequestType(n.method)})(ih||(sr.InlineValueRequest=ih={}));var oh;(function(n){n.method="workspace/inlineValue/refresh",n.messageDirection=Co.MessageDirection.serverToClient,n.type=new Co.ProtocolRequestType0(n.method)})(oh||(sr.InlineValueRefreshRequest=oh={}))});var uh=I(mn=>{"use strict";Object.defineProperty(mn,"__esModule",{value:!0});mn.InlayHintRefreshRequest=mn.InlayHintResolveRequest=mn.InlayHintRequest=void 0;var ar=Te(),ah;(function(n){n.method="textDocument/inlayHint",n.messageDirection=ar.MessageDirection.clientToServer,n.type=new ar.ProtocolRequestType(n.method)})(ah||(mn.InlayHintRequest=ah={}));var ch;(function(n){n.method="inlayHint/resolve",n.messageDirection=ar.MessageDirection.clientToServer,n.type=new ar.ProtocolRequestType(n.method)})(ch||(mn.InlayHintResolveRequest=ch={}));var lh;(function(n){n.method="workspace/inlayHint/refresh",n.messageDirection=ar.MessageDirection.serverToClient,n.type=new ar.ProtocolRequestType0(n.method)})(lh||(mn.InlayHintRefreshRequest=lh={}))});var _h=I(Rt=>{"use strict";Object.defineProperty(Rt,"__esModule",{value:!0});Rt.DiagnosticRefreshRequest=Rt.WorkspaceDiagnosticRequest=Rt.DocumentDiagnosticRequest=Rt.DocumentDiagnosticReportKind=Rt.DiagnosticServerCancellationData=void 0;var gh=Ln(),qw=wo(),cr=Te(),dh;(function(n){function e(t){let r=t;return r&&qw.boolean(r.retriggerRequest)}n.is=e})(dh||(Rt.DiagnosticServerCancellationData=dh={}));var fh;(function(n){n.Full="full",n.Unchanged="unchanged"})(fh||(Rt.DocumentDiagnosticReportKind=fh={}));var ph;(function(n){n.method="textDocument/diagnostic",n.messageDirection=cr.MessageDirection.clientToServer,n.type=new cr.ProtocolRequestType(n.method),n.partialResult=new gh.ProgressType})(ph||(Rt.DocumentDiagnosticRequest=ph={}));var hh;(function(n){n.method="workspace/diagnostic",n.messageDirection=cr.MessageDirection.clientToServer,n.type=new cr.ProtocolRequestType(n.method),n.partialResult=new gh.ProgressType})(hh||(Rt.WorkspaceDiagnosticRequest=hh={}));var mh;(function(n){n.method="workspace/diagnostic/refresh",n.messageDirection=cr.MessageDirection.serverToClient,n.type=new cr.ProtocolRequestType0(n.method)})(mh||(Rt.DiagnosticRefreshRequest=mh={}))});var Eh=I(Oe=>{"use strict";Object.defineProperty(Oe,"__esModule",{value:!0});Oe.DidCloseNotebookDocumentNotification=Oe.DidSaveNotebookDocumentNotification=Oe.DidChangeNotebookDocumentNotification=Oe.NotebookCellArrayChange=Oe.DidOpenNotebookDocumentNotification=Oe.NotebookDocumentSyncRegistrationType=Oe.NotebookDocument=Oe.NotebookCell=Oe.ExecutionSummary=Oe.NotebookCellKind=void 0;var Fr=vo(),Tt=wo(),qt=Te(),Kc;(function(n){n.Markup=1,n.Code=2;function e(t){return t===1||t===2}n.is=e})(Kc||(Oe.NotebookCellKind=Kc={}));var Gc;(function(n){function e(i,o){let s={executionOrder:i};return(o===!0||o===!1)&&(s.success=o),s}n.create=e;function t(i){let o=i;return Tt.objectLiteral(o)&&Fr.uinteger.is(o.executionOrder)&&(o.success===void 0||Tt.boolean(o.success))}n.is=t;function r(i,o){return i===o?!0:i==null||o===null||o===void 0?!1:i.executionOrder===o.executionOrder&&i.success===o.success}n.equals=r})(Gc||(Oe.ExecutionSummary=Gc={}));var $o;(function(n){function e(o,s){return{kind:o,document:s}}n.create=e;function t(o){let s=o;return Tt.objectLiteral(s)&&Kc.is(s.kind)&&Fr.DocumentUri.is(s.document)&&(s.metadata===void 0||Tt.objectLiteral(s.metadata))}n.is=t;function r(o,s){let a=new Set;return o.document!==s.document&&a.add("document"),o.kind!==s.kind&&a.add("kind"),o.executionSummary!==s.executionSummary&&a.add("executionSummary"),(o.metadata!==void 0||s.metadata!==void 0)&&!i(o.metadata,s.metadata)&&a.add("metadata"),(o.executionSummary!==void 0||s.executionSummary!==void 0)&&!Gc.equals(o.executionSummary,s.executionSummary)&&a.add("executionSummary"),a}n.diff=r;function i(o,s){if(o===s)return!0;if(o==null||s===null||s===void 0||typeof o!=typeof s||typeof o!="object")return!1;let a=Array.isArray(o),d=Array.isArray(s);if(a!==d)return!1;if(a&&d){if(o.length!==s.length)return!1;for(let l=0;l<o.length;l++)if(!i(o[l],s[l]))return!1}if(Tt.objectLiteral(o)&&Tt.objectLiteral(s)){let l=Object.keys(o),h=Object.keys(s);if(l.length!==h.length||(l.sort(),h.sort(),!i(l,h)))return!1;for(let v=0;v<l.length;v++){let w=l[v];if(!i(o[w],s[w]))return!1}}return!0}})($o||(Oe.NotebookCell=$o={}));var bh;(function(n){function e(r,i,o,s){return{uri:r,notebookType:i,version:o,cells:s}}n.create=e;function t(r){let i=r;return Tt.objectLiteral(i)&&Tt.string(i.uri)&&Fr.integer.is(i.version)&&Tt.typedArray(i.cells,$o.is)}n.is=t})(bh||(Oe.NotebookDocument=bh={}));var lr;(function(n){n.method="notebookDocument/sync",n.messageDirection=qt.MessageDirection.clientToServer,n.type=new qt.RegistrationType(n.method)})(lr||(Oe.NotebookDocumentSyncRegistrationType=lr={}));var yh;(function(n){n.method="notebookDocument/didOpen",n.messageDirection=qt.MessageDirection.clientToServer,n.type=new qt.ProtocolNotificationType(n.method),n.registrationMethod=lr.method})(yh||(Oe.DidOpenNotebookDocumentNotification=yh={}));var vh;(function(n){function e(r){let i=r;return Tt.objectLiteral(i)&&Fr.uinteger.is(i.start)&&Fr.uinteger.is(i.deleteCount)&&(i.cells===void 0||Tt.typedArray(i.cells,$o.is))}n.is=e;function t(r,i,o){let s={start:r,deleteCount:i};return o!==void 0&&(s.cells=o),s}n.create=t})(vh||(Oe.NotebookCellArrayChange=vh={}));var wh;(function(n){n.method="notebookDocument/didChange",n.messageDirection=qt.MessageDirection.clientToServer,n.type=new qt.ProtocolNotificationType(n.method),n.registrationMethod=lr.method})(wh||(Oe.DidChangeNotebookDocumentNotification=wh={}));var Ph;(function(n){n.method="notebookDocument/didSave",n.messageDirection=qt.MessageDirection.clientToServer,n.type=new qt.ProtocolNotificationType(n.method),n.registrationMethod=lr.method})(Ph||(Oe.DidSaveNotebookDocumentNotification=Ph={}));var Rh;(function(n){n.method="notebookDocument/didClose",n.messageDirection=qt.MessageDirection.clientToServer,n.type=new qt.ProtocolNotificationType(n.method),n.registrationMethod=lr.method})(Rh||(Oe.DidCloseNotebookDocumentNotification=Rh={}))});var Lh=I(Oo=>{"use strict";Object.defineProperty(Oo,"__esModule",{value:!0});Oo.InlineCompletionRequest=void 0;var Sh=Te(),xh;(function(n){n.method="textDocument/inlineCompletion",n.messageDirection=Sh.MessageDirection.clientToServer,n.type=new Sh.ProtocolRequestType(n.method)})(xh||(Oo.InlineCompletionRequest=xh={}))});var jm=I(p=>{"use strict";Object.defineProperty(p,"__esModule",{value:!0});p.WorkspaceSymbolRequest=p.CodeActionResolveRequest=p.CodeActionRequest=p.DocumentSymbolRequest=p.DocumentHighlightRequest=p.ReferencesRequest=p.DefinitionRequest=p.SignatureHelpRequest=p.SignatureHelpTriggerKind=p.HoverRequest=p.CompletionResolveRequest=p.CompletionRequest=p.CompletionTriggerKind=p.PublishDiagnosticsNotification=p.WatchKind=p.RelativePattern=p.FileChangeType=p.DidChangeWatchedFilesNotification=p.WillSaveTextDocumentWaitUntilRequest=p.WillSaveTextDocumentNotification=p.TextDocumentSaveReason=p.DidSaveTextDocumentNotification=p.DidCloseTextDocumentNotification=p.DidChangeTextDocumentNotification=p.TextDocumentContentChangeEvent=p.DidOpenTextDocumentNotification=p.TextDocumentSyncKind=p.TelemetryEventNotification=p.LogMessageNotification=p.ShowMessageRequest=p.ShowMessageNotification=p.MessageType=p.DidChangeConfigurationNotification=p.ExitNotification=p.ShutdownRequest=p.InitializedNotification=p.InitializeErrorCodes=p.InitializeRequest=p.WorkDoneProgressOptions=p.TextDocumentRegistrationOptions=p.StaticRegistrationOptions=p.PositionEncodingKind=p.FailureHandlingKind=p.ResourceOperationKind=p.UnregistrationRequest=p.RegistrationRequest=p.DocumentSelector=p.NotebookCellTextDocumentFilter=p.NotebookDocumentFilter=p.TextDocumentFilter=void 0;p.MonikerRequest=p.MonikerKind=p.UniquenessLevel=p.WillDeleteFilesRequest=p.DidDeleteFilesNotification=p.WillRenameFilesRequest=p.DidRenameFilesNotification=p.WillCreateFilesRequest=p.DidCreateFilesNotification=p.FileOperationPatternKind=p.LinkedEditingRangeRequest=p.ShowDocumentRequest=p.SemanticTokensRegistrationType=p.SemanticTokensRefreshRequest=p.SemanticTokensRangeRequest=p.SemanticTokensDeltaRequest=p.SemanticTokensRequest=p.TokenFormat=p.CallHierarchyPrepareRequest=p.CallHierarchyOutgoingCallsRequest=p.CallHierarchyIncomingCallsRequest=p.WorkDoneProgressCancelNotification=p.WorkDoneProgressCreateRequest=p.WorkDoneProgress=p.SelectionRangeRequest=p.DeclarationRequest=p.FoldingRangeRefreshRequest=p.FoldingRangeRequest=p.ColorPresentationRequest=p.DocumentColorRequest=p.ConfigurationRequest=p.DidChangeWorkspaceFoldersNotification=p.WorkspaceFoldersRequest=p.TypeDefinitionRequest=p.ImplementationRequest=p.ApplyWorkspaceEditRequest=p.ExecuteCommandRequest=p.PrepareRenameRequest=p.RenameRequest=p.PrepareSupportDefaultBehavior=p.DocumentOnTypeFormattingRequest=p.DocumentRangesFormattingRequest=p.DocumentRangeFormattingRequest=p.DocumentFormattingRequest=p.DocumentLinkResolveRequest=p.DocumentLinkRequest=p.CodeLensRefreshRequest=p.CodeLensResolveRequest=p.CodeLensRequest=p.WorkspaceSymbolResolveRequest=void 0;p.InlineCompletionRequest=p.DidCloseNotebookDocumentNotification=p.DidSaveNotebookDocumentNotification=p.DidChangeNotebookDocumentNotification=p.NotebookCellArrayChange=p.DidOpenNotebookDocumentNotification=p.NotebookDocumentSyncRegistrationType=p.NotebookDocument=p.NotebookCell=p.ExecutionSummary=p.NotebookCellKind=p.DiagnosticRefreshRequest=p.WorkspaceDiagnosticRequest=p.DocumentDiagnosticRequest=p.DocumentDiagnosticReportKind=p.DiagnosticServerCancellationData=p.InlayHintRefreshRequest=p.InlayHintResolveRequest=p.InlayHintRequest=p.InlineValueRefreshRequest=p.InlineValueRequest=p.TypeHierarchySupertypesRequest=p.TypeHierarchySubtypesRequest=p.TypeHierarchyPrepareRequest=void 0;var $=Te(),Dh=vo(),Be=wo(),Nw=Yf();Object.defineProperty(p,"ImplementationRequest",{enumerable:!0,get:function(){return Nw.ImplementationRequest}});var Fw=np();Object.defineProperty(p,"TypeDefinitionRequest",{enumerable:!0,get:function(){return Fw.TypeDefinitionRequest}});var Mm=op();Object.defineProperty(p,"WorkspaceFoldersRequest",{enumerable:!0,get:function(){return Mm.WorkspaceFoldersRequest}});Object.defineProperty(p,"DidChangeWorkspaceFoldersNotification",{enumerable:!0,get:function(){return Mm.DidChangeWorkspaceFoldersNotification}});var jw=cp();Object.defineProperty(p,"ConfigurationRequest",{enumerable:!0,get:function(){return jw.ConfigurationRequest}});var qm=dp();Object.defineProperty(p,"DocumentColorRequest",{enumerable:!0,get:function(){return qm.DocumentColorRequest}});Object.defineProperty(p,"ColorPresentationRequest",{enumerable:!0,get:function(){return qm.ColorPresentationRequest}});var Nm=hp();Object.defineProperty(p,"FoldingRangeRequest",{enumerable:!0,get:function(){return Nm.FoldingRangeRequest}});Object.defineProperty(p,"FoldingRangeRefreshRequest",{enumerable:!0,get:function(){return Nm.FoldingRangeRefreshRequest}});var Bw=_p();Object.defineProperty(p,"DeclarationRequest",{enumerable:!0,get:function(){return Bw.DeclarationRequest}});var Uw=vp();Object.defineProperty(p,"SelectionRangeRequest",{enumerable:!0,get:function(){return Uw.SelectionRangeRequest}});var Yc=Ep();Object.defineProperty(p,"WorkDoneProgress",{enumerable:!0,get:function(){return Yc.WorkDoneProgress}});Object.defineProperty(p,"WorkDoneProgressCreateRequest",{enumerable:!0,get:function(){return Yc.WorkDoneProgressCreateRequest}});Object.defineProperty(p,"WorkDoneProgressCancelNotification",{enumerable:!0,get:function(){return Yc.WorkDoneProgressCancelNotification}});var el=Dp();Object.defineProperty(p,"CallHierarchyIncomingCallsRequest",{enumerable:!0,get:function(){return el.CallHierarchyIncomingCallsRequest}});Object.defineProperty(p,"CallHierarchyOutgoingCallsRequest",{enumerable:!0,get:function(){return el.CallHierarchyOutgoingCallsRequest}});Object.defineProperty(p,"CallHierarchyPrepareRequest",{enumerable:!0,get:function(){return el.CallHierarchyPrepareRequest}});var ur=$p();Object.defineProperty(p,"TokenFormat",{enumerable:!0,get:function(){return ur.TokenFormat}});Object.defineProperty(p,"SemanticTokensRequest",{enumerable:!0,get:function(){return ur.SemanticTokensRequest}});Object.defineProperty(p,"SemanticTokensDeltaRequest",{enumerable:!0,get:function(){return ur.SemanticTokensDeltaRequest}});Object.defineProperty(p,"SemanticTokensRangeRequest",{enumerable:!0,get:function(){return ur.SemanticTokensRangeRequest}});Object.defineProperty(p,"SemanticTokensRefreshRequest",{enumerable:!0,get:function(){return ur.SemanticTokensRefreshRequest}});Object.defineProperty(p,"SemanticTokensRegistrationType",{enumerable:!0,get:function(){return ur.SemanticTokensRegistrationType}});var Vw=qp();Object.defineProperty(p,"ShowDocumentRequest",{enumerable:!0,get:function(){return Vw.ShowDocumentRequest}});var Ww=jp();Object.defineProperty(p,"LinkedEditingRangeRequest",{enumerable:!0,get:function(){return Ww.LinkedEditingRangeRequest}});var Dn=Gp();Object.defineProperty(p,"FileOperationPatternKind",{enumerable:!0,get:function(){return Dn.FileOperationPatternKind}});Object.defineProperty(p,"DidCreateFilesNotification",{enumerable:!0,get:function(){return Dn.DidCreateFilesNotification}});Object.defineProperty(p,"WillCreateFilesRequest",{enumerable:!0,get:function(){return Dn.WillCreateFilesRequest}});Object.defineProperty(p,"DidRenameFilesNotification",{enumerable:!0,get:function(){return Dn.DidRenameFilesNotification}});Object.defineProperty(p,"WillRenameFilesRequest",{enumerable:!0,get:function(){return Dn.WillRenameFilesRequest}});Object.defineProperty(p,"DidDeleteFilesNotification",{enumerable:!0,get:function(){return Dn.DidDeleteFilesNotification}});Object.defineProperty(p,"WillDeleteFilesRequest",{enumerable:!0,get:function(){return Dn.WillDeleteFilesRequest}});var tl=Yp();Object.defineProperty(p,"UniquenessLevel",{enumerable:!0,get:function(){return tl.UniquenessLevel}});Object.defineProperty(p,"MonikerKind",{enumerable:!0,get:function(){return tl.MonikerKind}});Object.defineProperty(p,"MonikerRequest",{enumerable:!0,get:function(){return tl.MonikerRequest}});var nl=rh();Object.defineProperty(p,"TypeHierarchyPrepareRequest",{enumerable:!0,get:function(){return nl.TypeHierarchyPrepareRequest}});Object.defineProperty(p,"TypeHierarchySubtypesRequest",{enumerable:!0,get:function(){return nl.TypeHierarchySubtypesRequest}});Object.defineProperty(p,"TypeHierarchySupertypesRequest",{enumerable:!0,get:function(){return nl.TypeHierarchySupertypesRequest}});var Fm=sh();Object.defineProperty(p,"InlineValueRequest",{enumerable:!0,get:function(){return Fm.InlineValueRequest}});Object.defineProperty(p,"InlineValueRefreshRequest",{enumerable:!0,get:function(){return Fm.InlineValueRefreshRequest}});var rl=uh();Object.defineProperty(p,"InlayHintRequest",{enumerable:!0,get:function(){return rl.InlayHintRequest}});Object.defineProperty(p,"InlayHintResolveRequest",{enumerable:!0,get:function(){return rl.InlayHintResolveRequest}});Object.defineProperty(p,"InlayHintRefreshRequest",{enumerable:!0,get:function(){return rl.InlayHintRefreshRequest}});var jr=_h();Object.defineProperty(p,"DiagnosticServerCancellationData",{enumerable:!0,get:function(){return jr.DiagnosticServerCancellationData}});Object.defineProperty(p,"DocumentDiagnosticReportKind",{enumerable:!0,get:function(){return jr.DocumentDiagnosticReportKind}});Object.defineProperty(p,"DocumentDiagnosticRequest",{enumerable:!0,get:function(){return jr.DocumentDiagnosticRequest}});Object.defineProperty(p,"WorkspaceDiagnosticRequest",{enumerable:!0,get:function(){return jr.WorkspaceDiagnosticRequest}});Object.defineProperty(p,"DiagnosticRefreshRequest",{enumerable:!0,get:function(){return jr.DiagnosticRefreshRequest}});var Nt=Eh();Object.defineProperty(p,"NotebookCellKind",{enumerable:!0,get:function(){return Nt.NotebookCellKind}});Object.defineProperty(p,"ExecutionSummary",{enumerable:!0,get:function(){return Nt.ExecutionSummary}});Object.defineProperty(p,"NotebookCell",{enumerable:!0,get:function(){return Nt.NotebookCell}});Object.defineProperty(p,"NotebookDocument",{enumerable:!0,get:function(){return Nt.NotebookDocument}});Object.defineProperty(p,"NotebookDocumentSyncRegistrationType",{enumerable:!0,get:function(){return Nt.NotebookDocumentSyncRegistrationType}});Object.defineProperty(p,"DidOpenNotebookDocumentNotification",{enumerable:!0,get:function(){return Nt.DidOpenNotebookDocumentNotification}});Object.defineProperty(p,"NotebookCellArrayChange",{enumerable:!0,get:function(){return Nt.NotebookCellArrayChange}});Object.defineProperty(p,"DidChangeNotebookDocumentNotification",{enumerable:!0,get:function(){return Nt.DidChangeNotebookDocumentNotification}});Object.defineProperty(p,"DidSaveNotebookDocumentNotification",{enumerable:!0,get:function(){return Nt.DidSaveNotebookDocumentNotification}});Object.defineProperty(p,"DidCloseNotebookDocumentNotification",{enumerable:!0,get:function(){return Nt.DidCloseNotebookDocumentNotification}});var zw=Lh();Object.defineProperty(p,"InlineCompletionRequest",{enumerable:!0,get:function(){return zw.InlineCompletionRequest}});var Xc;(function(n){function e(t){let r=t;return Be.string(r)||Be.string(r.language)||Be.string(r.scheme)||Be.string(r.pattern)}n.is=e})(Xc||(p.TextDocumentFilter=Xc={}));var Zc;(function(n){function e(t){let r=t;return Be.objectLiteral(r)&&(Be.string(r.notebookType)||Be.string(r.scheme)||Be.string(r.pattern))}n.is=e})(Zc||(p.NotebookDocumentFilter=Zc={}));var Jc;(function(n){function e(t){let r=t;return Be.objectLiteral(r)&&(Be.string(r.notebook)||Zc.is(r.notebook))&&(r.language===void 0||Be.string(r.language))}n.is=e})(Jc||(p.NotebookCellTextDocumentFilter=Jc={}));var Qc;(function(n){function e(t){if(!Array.isArray(t))return!1;for(let r of t)if(!Be.string(r)&&!Xc.is(r)&&!Jc.is(r))return!1;return!0}n.is=e})(Qc||(p.DocumentSelector=Qc={}));var kh;(function(n){n.method="client/registerCapability",n.messageDirection=$.MessageDirection.serverToClient,n.type=new $.ProtocolRequestType(n.method)})(kh||(p.RegistrationRequest=kh={}));var Th;(function(n){n.method="client/unregisterCapability",n.messageDirection=$.MessageDirection.serverToClient,n.type=new $.ProtocolRequestType(n.method)})(Th||(p.UnregistrationRequest=Th={}));var Ih;(function(n){n.Create="create",n.Rename="rename",n.Delete="delete"})(Ih||(p.ResourceOperationKind=Ih={}));var Ah;(function(n){n.Abort="abort",n.Transactional="transactional",n.TextOnlyTransactional="textOnlyTransactional",n.Undo="undo"})(Ah||(p.FailureHandlingKind=Ah={}));var Ch;(function(n){n.UTF8="utf-8",n.UTF16="utf-16",n.UTF32="utf-32"})(Ch||(p.PositionEncodingKind=Ch={}));var $h;(function(n){function e(t){let r=t;return r&&Be.string(r.id)&&r.id.length>0}n.hasId=e})($h||(p.StaticRegistrationOptions=$h={}));var Oh;(function(n){function e(t){let r=t;return r&&(r.documentSelector===null||Qc.is(r.documentSelector))}n.is=e})(Oh||(p.TextDocumentRegistrationOptions=Oh={}));var Mh;(function(n){function e(r){let i=r;return Be.objectLiteral(i)&&(i.workDoneProgress===void 0||Be.boolean(i.workDoneProgress))}n.is=e;function t(r){let i=r;return i&&Be.boolean(i.workDoneProgress)}n.hasWorkDoneProgress=t})(Mh||(p.WorkDoneProgressOptions=Mh={}));var qh;(function(n){n.method="initialize",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(qh||(p.InitializeRequest=qh={}));var Nh;(function(n){n.unknownProtocolVersion=1})(Nh||(p.InitializeErrorCodes=Nh={}));var Fh;(function(n){n.method="initialized",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolNotificationType(n.method)})(Fh||(p.InitializedNotification=Fh={}));var jh;(function(n){n.method="shutdown",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType0(n.method)})(jh||(p.ShutdownRequest=jh={}));var Bh;(function(n){n.method="exit",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolNotificationType0(n.method)})(Bh||(p.ExitNotification=Bh={}));var Uh;(function(n){n.method="workspace/didChangeConfiguration",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolNotificationType(n.method)})(Uh||(p.DidChangeConfigurationNotification=Uh={}));var Vh;(function(n){n.Error=1,n.Warning=2,n.Info=3,n.Log=4,n.Debug=5})(Vh||(p.MessageType=Vh={}));var Wh;(function(n){n.method="window/showMessage",n.messageDirection=$.MessageDirection.serverToClient,n.type=new $.ProtocolNotificationType(n.method)})(Wh||(p.ShowMessageNotification=Wh={}));var zh;(function(n){n.method="window/showMessageRequest",n.messageDirection=$.MessageDirection.serverToClient,n.type=new $.ProtocolRequestType(n.method)})(zh||(p.ShowMessageRequest=zh={}));var Hh;(function(n){n.method="window/logMessage",n.messageDirection=$.MessageDirection.serverToClient,n.type=new $.ProtocolNotificationType(n.method)})(Hh||(p.LogMessageNotification=Hh={}));var Kh;(function(n){n.method="telemetry/event",n.messageDirection=$.MessageDirection.serverToClient,n.type=new $.ProtocolNotificationType(n.method)})(Kh||(p.TelemetryEventNotification=Kh={}));var Gh;(function(n){n.None=0,n.Full=1,n.Incremental=2})(Gh||(p.TextDocumentSyncKind=Gh={}));var Xh;(function(n){n.method="textDocument/didOpen",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolNotificationType(n.method)})(Xh||(p.DidOpenTextDocumentNotification=Xh={}));var Zh;(function(n){function e(r){let i=r;return i!=null&&typeof i.text=="string"&&i.range!==void 0&&(i.rangeLength===void 0||typeof i.rangeLength=="number")}n.isIncremental=e;function t(r){let i=r;return i!=null&&typeof i.text=="string"&&i.range===void 0&&i.rangeLength===void 0}n.isFull=t})(Zh||(p.TextDocumentContentChangeEvent=Zh={}));var Jh;(function(n){n.method="textDocument/didChange",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolNotificationType(n.method)})(Jh||(p.DidChangeTextDocumentNotification=Jh={}));var Qh;(function(n){n.method="textDocument/didClose",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolNotificationType(n.method)})(Qh||(p.DidCloseTextDocumentNotification=Qh={}));var Yh;(function(n){n.method="textDocument/didSave",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolNotificationType(n.method)})(Yh||(p.DidSaveTextDocumentNotification=Yh={}));var em;(function(n){n.Manual=1,n.AfterDelay=2,n.FocusOut=3})(em||(p.TextDocumentSaveReason=em={}));var tm;(function(n){n.method="textDocument/willSave",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolNotificationType(n.method)})(tm||(p.WillSaveTextDocumentNotification=tm={}));var nm;(function(n){n.method="textDocument/willSaveWaitUntil",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(nm||(p.WillSaveTextDocumentWaitUntilRequest=nm={}));var rm;(function(n){n.method="workspace/didChangeWatchedFiles",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolNotificationType(n.method)})(rm||(p.DidChangeWatchedFilesNotification=rm={}));var im;(function(n){n.Created=1,n.Changed=2,n.Deleted=3})(im||(p.FileChangeType=im={}));var om;(function(n){function e(t){let r=t;return Be.objectLiteral(r)&&(Dh.URI.is(r.baseUri)||Dh.WorkspaceFolder.is(r.baseUri))&&Be.string(r.pattern)}n.is=e})(om||(p.RelativePattern=om={}));var sm;(function(n){n.Create=1,n.Change=2,n.Delete=4})(sm||(p.WatchKind=sm={}));var am;(function(n){n.method="textDocument/publishDiagnostics",n.messageDirection=$.MessageDirection.serverToClient,n.type=new $.ProtocolNotificationType(n.method)})(am||(p.PublishDiagnosticsNotification=am={}));var cm;(function(n){n.Invoked=1,n.TriggerCharacter=2,n.TriggerForIncompleteCompletions=3})(cm||(p.CompletionTriggerKind=cm={}));var lm;(function(n){n.method="textDocument/completion",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(lm||(p.CompletionRequest=lm={}));var um;(function(n){n.method="completionItem/resolve",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(um||(p.CompletionResolveRequest=um={}));var dm;(function(n){n.method="textDocument/hover",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(dm||(p.HoverRequest=dm={}));var fm;(function(n){n.Invoked=1,n.TriggerCharacter=2,n.ContentChange=3})(fm||(p.SignatureHelpTriggerKind=fm={}));var pm;(function(n){n.method="textDocument/signatureHelp",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(pm||(p.SignatureHelpRequest=pm={}));var hm;(function(n){n.method="textDocument/definition",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(hm||(p.DefinitionRequest=hm={}));var mm;(function(n){n.method="textDocument/references",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(mm||(p.ReferencesRequest=mm={}));var gm;(function(n){n.method="textDocument/documentHighlight",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(gm||(p.DocumentHighlightRequest=gm={}));var _m;(function(n){n.method="textDocument/documentSymbol",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(_m||(p.DocumentSymbolRequest=_m={}));var bm;(function(n){n.method="textDocument/codeAction",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(bm||(p.CodeActionRequest=bm={}));var ym;(function(n){n.method="codeAction/resolve",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(ym||(p.CodeActionResolveRequest=ym={}));var vm;(function(n){n.method="workspace/symbol",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(vm||(p.WorkspaceSymbolRequest=vm={}));var wm;(function(n){n.method="workspaceSymbol/resolve",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(wm||(p.WorkspaceSymbolResolveRequest=wm={}));var Pm;(function(n){n.method="textDocument/codeLens",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(Pm||(p.CodeLensRequest=Pm={}));var Rm;(function(n){n.method="codeLens/resolve",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(Rm||(p.CodeLensResolveRequest=Rm={}));var Em;(function(n){n.method="workspace/codeLens/refresh",n.messageDirection=$.MessageDirection.serverToClient,n.type=new $.ProtocolRequestType0(n.method)})(Em||(p.CodeLensRefreshRequest=Em={}));var Sm;(function(n){n.method="textDocument/documentLink",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(Sm||(p.DocumentLinkRequest=Sm={}));var xm;(function(n){n.method="documentLink/resolve",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(xm||(p.DocumentLinkResolveRequest=xm={}));var Lm;(function(n){n.method="textDocument/formatting",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(Lm||(p.DocumentFormattingRequest=Lm={}));var Dm;(function(n){n.method="textDocument/rangeFormatting",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(Dm||(p.DocumentRangeFormattingRequest=Dm={}));var km;(function(n){n.method="textDocument/rangesFormatting",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(km||(p.DocumentRangesFormattingRequest=km={}));var Tm;(function(n){n.method="textDocument/onTypeFormatting",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(Tm||(p.DocumentOnTypeFormattingRequest=Tm={}));var Im;(function(n){n.Identifier=1})(Im||(p.PrepareSupportDefaultBehavior=Im={}));var Am;(function(n){n.method="textDocument/rename",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(Am||(p.RenameRequest=Am={}));var Cm;(function(n){n.method="textDocument/prepareRename",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})(Cm||(p.PrepareRenameRequest=Cm={}));var $m;(function(n){n.method="workspace/executeCommand",n.messageDirection=$.MessageDirection.clientToServer,n.type=new $.ProtocolRequestType(n.method)})($m||(p.ExecuteCommandRequest=$m={}));var Om;(function(n){n.method="workspace/applyEdit",n.messageDirection=$.MessageDirection.serverToClient,n.type=new $.ProtocolRequestType("workspace/applyEdit")})(Om||(p.ApplyWorkspaceEditRequest=Om={}))});var Um=I(Mo=>{"use strict";Object.defineProperty(Mo,"__esModule",{value:!0});Mo.createProtocolConnection=void 0;var Bm=Ln();function Hw(n,e,t,r){return Bm.ConnectionStrategy.is(r)&&(r={connectionStrategy:r}),(0,Bm.createMessageConnection)(n,e,t,r)}Mo.createProtocolConnection=Hw});var Wm=I(ct=>{"use strict";var Kw=ct&&ct.__createBinding||(Object.create?function(n,e,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,r,i)}:function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]}),qo=ct&&ct.__exportStar||function(n,e){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&Kw(e,n,t)};Object.defineProperty(ct,"__esModule",{value:!0});ct.LSPErrorCodes=ct.createProtocolConnection=void 0;qo(Ln(),ct);qo(vo(),ct);qo(Te(),ct);qo(jm(),ct);var Gw=Um();Object.defineProperty(ct,"createProtocolConnection",{enumerable:!0,get:function(){return Gw.createProtocolConnection}});var Vm;(function(n){n.lspReservedErrorRangeStart=-32899,n.RequestFailed=-32803,n.ServerCancelled=-32802,n.ContentModified=-32801,n.RequestCancelled=-32800,n.lspReservedErrorRangeEnd=-32800})(Vm||(ct.LSPErrorCodes=Vm={}))});var Hm=I(Ft=>{"use strict";var Xw=Ft&&Ft.__createBinding||(Object.create?function(n,e,t,r){r===void 0&&(r=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,r,i)}:function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]}),zm=Ft&&Ft.__exportStar||function(n,e){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&Xw(e,n,t)};Object.defineProperty(Ft,"__esModule",{value:!0});Ft.createProtocolConnection=void 0;var Zw=Bc();zm(Bc(),Ft);zm(Wm(),Ft);function Jw(n,e,t,r){return(0,Zw.createMessageConnection)(n,e,t,r)}Ft.createProtocolConnection=Jw});var Qw=I((nx,Km)=>{"use strict";Km.exports=Hm()});var Qm=I((rx,Jm)=>{"use strict";Jm.exports=Xm;function Xm(n,e,t){n instanceof RegExp&&(n=Gm(n,t)),e instanceof RegExp&&(e=Gm(e,t));var r=Zm(n,e,t);return r&&{start:r[0],end:r[1],pre:t.slice(0,r[0]),body:t.slice(r[0]+n.length,r[1]),post:t.slice(r[1]+e.length)}}function Gm(n,e){var t=e.match(n);return t?t[0]:null}Xm.range=Zm;function Zm(n,e,t){var r,i,o,s,a,d=t.indexOf(n),l=t.indexOf(e,d+1),h=d;if(d>=0&&l>0){if(n===e)return[d,l];for(r=[],o=t.length;h>=0&&!a;)h==d?(r.push(h),d=t.indexOf(n,h+1)):r.length==1?a=[r.pop(),l]:(i=r.pop(),i<o&&(o=i,s=l),l=t.indexOf(e,h+1)),h=d<l&&d>=0?d:l;r.length&&(a=[o,s])}return a}});var sg=I((ix,og)=>{"use strict";var Ym=Qm();og.exports=tP;var eg="\0SLASH"+Math.random()+"\0",tg="\0OPEN"+Math.random()+"\0",ol="\0CLOSE"+Math.random()+"\0",ng="\0COMMA"+Math.random()+"\0",rg="\0PERIOD"+Math.random()+"\0";function il(n){return parseInt(n,10)==n?parseInt(n,10):n.charCodeAt(0)}function Yw(n){return n.split("\\\\").join(eg).split("\\{").join(tg).split("\\}").join(ol).split("\\,").join(ng).split("\\.").join(rg)}function eP(n){return n.split(eg).join("\\").split(tg).join("{").split(ol).join("}").split(ng).join(",").split(rg).join(".")}function ig(n){if(!n)return[""];var e=[],t=Ym("{","}",n);if(!t)return n.split(",");var r=t.pre,i=t.body,o=t.post,s=r.split(",");s[s.length-1]+="{"+i+"}";var a=ig(o);return o.length&&(s[s.length-1]+=a.shift(),s.push.apply(s,a)),e.push.apply(e,s),e}function tP(n){return n?(n.substr(0,2)==="{}"&&(n="\\{\\}"+n.substr(2)),Br(Yw(n),!0).map(eP)):[]}function nP(n){return"{"+n+"}"}function rP(n){return/^-?0\d/.test(n)}function iP(n,e){return n<=e}function oP(n,e){return n>=e}function Br(n,e){var t=[],r=Ym("{","}",n);if(!r)return[n];var i=r.pre,o=r.post.length?Br(r.post,!1):[""];if(/\$$/.test(r.pre))for(var s=0;s<o.length;s++){var a=i+"{"+r.body+"}"+o[s];t.push(a)}else{var d=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(r.body),l=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(r.body),h=d||l,v=r.body.indexOf(",")>=0;if(!h&&!v)return r.post.match(/,(?!,).*\}/)?(n=r.pre+"{"+r.body+ol+r.post,Br(n)):[n];var w;if(h)w=r.body.split(/\.\./);else if(w=ig(r.body),w.length===1&&(w=Br(w[0],!1).map(nP),w.length===1))return o.map(function(Qe){return r.pre+w[0]+Qe});var _;if(h){var L=il(w[0]),k=il(w[1]),X=Math.max(w[0].length,w[1].length),fe=w.length==3?Math.abs(il(w[2])):1,B=iP,ee=k<L;ee&&(fe*=-1,B=oP);var ae=w.some(rP);_=[];for(var Q=L;B(Q,k);Q+=fe){var te;if(l)te=String.fromCharCode(Q),te==="\\"&&(te="");else if(te=String(Q),ae){var _e=X-te.length;if(_e>0){var Ae=new Array(_e+1).join("0");Q<0?te="-"+Ae+te.slice(1):te=Ae+te}}_.push(te)}}else{_=[];for(var qe=0;qe<w.length;qe++)_.push.apply(_,Br(w[qe],!1))}for(var qe=0;qe<_.length;qe++)for(var s=0;s<o.length;s++){var a=i+_[qe]+o[s];(!e||h||a)&&t.push(a)}}return t}});var ag=I(No=>{"use strict";Object.defineProperty(No,"__esModule",{value:!0});No.assertValidPattern=void 0;var sP=1024*64,aP=n=>{if(typeof n!="string")throw new TypeError("invalid pattern");if(n.length>sP)throw new TypeError("pattern is too long")};No.assertValidPattern=aP});var lg=I(Fo=>{"use strict";Object.defineProperty(Fo,"__esModule",{value:!0});Fo.parseClass=void 0;var cP={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},Ur=n=>n.replace(/[[\]\\-]/g,"\\$&"),lP=n=>n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),cg=n=>n.join(""),uP=(n,e)=>{let t=e;if(n.charAt(t)!=="[")throw new Error("not in a brace expression");let r=[],i=[],o=t+1,s=!1,a=!1,d=!1,l=!1,h=t,v="";e:for(;o<n.length;){let k=n.charAt(o);if((k==="!"||k==="^")&&o===t+1){l=!0,o++;continue}if(k==="]"&&s&&!d){h=o+1;break}if(s=!0,k==="\\"&&!d){d=!0,o++;continue}if(k==="["&&!d){for(let[X,[fe,B,ee]]of Object.entries(cP))if(n.startsWith(X,o)){if(v)return["$.",!1,n.length-t,!0];o+=X.length,ee?i.push(fe):r.push(fe),a=a||B;continue e}}if(d=!1,v){k>v?r.push(Ur(v)+"-"+Ur(k)):k===v&&r.push(Ur(k)),v="",o++;continue}if(n.startsWith("-]",o+1)){r.push(Ur(k+"-")),o+=2;continue}if(n.startsWith("-",o+1)){v=k,o+=2;continue}r.push(Ur(k)),o++}if(h<o)return["",!1,0,!1];if(!r.length&&!i.length)return["$.",!1,n.length-t,!0];if(i.length===0&&r.length===1&&/^\\?.$/.test(r[0])&&!l){let k=r[0].length===2?r[0].slice(-1):r[0];return[lP(k),!1,h-t,!1]}let w="["+(l?"^":"")+cg(r)+"]",_="["+(l?"":"^")+cg(i)+"]";return[r.length&&i.length?"("+w+"|"+_+")":r.length?w:_,a,h-t,!0]};Fo.parseClass=uP});var Bo=I(jo=>{"use strict";Object.defineProperty(jo,"__esModule",{value:!0});jo.unescape=void 0;var dP=(n,{windowsPathsNoEscape:e=!1}={})=>e?n.replace(/\[([^\/\\])\]/g,"$1"):n.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");jo.unescape=dP});var cl=I(Wo=>{"use strict";Object.defineProperty(Wo,"__esModule",{value:!0});Wo.AST=void 0;var fP=lg(),Uo=Bo(),pP=new Set(["!","?","+","*","@"]),ug=n=>pP.has(n),hP="(?!(?:^|/)\\.\\.?(?:$|/))",Vo="(?!\\.)",mP=new Set(["[","."]),gP=new Set(["..","."]),_P=new Set("().*{}+?[]^$\\!"),bP=n=>n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),al="[^/]",dg=al+"*?",fg=al+"+?",sl=class n{type;#n;#r;#o=!1;#e=[];#t;#s;#c;#a=!1;#i;#l;#d=!1;constructor(e,t,r={}){this.type=e,e&&(this.#r=!0),this.#t=t,this.#n=this.#t?this.#t.#n:this,this.#i=this.#n===this?r:this.#n.#i,this.#c=this.#n===this?[]:this.#n.#c,e==="!"&&!this.#n.#a&&this.#c.push(this),this.#s=this.#t?this.#t.#e.length:0}get hasMagic(){if(this.#r!==void 0)return this.#r;for(let e of this.#e)if(typeof e!="string"&&(e.type||e.hasMagic))return this.#r=!0;return this.#r}toString(){return this.#l!==void 0?this.#l:this.type?this.#l=this.type+"("+this.#e.map(e=>String(e)).join("|")+")":this.#l=this.#e.map(e=>String(e)).join("")}#p(){if(this!==this.#n)throw new Error("should only call on root");if(this.#a)return this;this.toString(),this.#a=!0;let e;for(;e=this.#c.pop();){if(e.type!=="!")continue;let t=e,r=t.#t;for(;r;){for(let i=t.#s+1;!r.type&&i<r.#e.length;i++)for(let o of e.#e){if(typeof o=="string")throw new Error("string part in extglob AST??");o.copyIn(r.#e[i])}t=r,r=t.#t}}return this}push(...e){for(let t of e)if(t!==""){if(typeof t!="string"&&!(t instanceof n&&t.#t===this))throw new Error("invalid part: "+t);this.#e.push(t)}}toJSON(){let e=this.type===null?this.#e.slice().map(t=>typeof t=="string"?t:t.toJSON()):[this.type,...this.#e.map(t=>t.toJSON())];return this.isStart()&&!this.type&&e.unshift([]),this.isEnd()&&(this===this.#n||this.#n.#a&&this.#t?.type==="!")&&e.push({}),e}isStart(){if(this.#n===this)return!0;if(!this.#t?.isStart())return!1;if(this.#s===0)return!0;let e=this.#t;for(let t=0;t<this.#s;t++){let r=e.#e[t];if(!(r instanceof n&&r.type==="!"))return!1}return!0}isEnd(){if(this.#n===this||this.#t?.type==="!")return!0;if(!this.#t?.isEnd())return!1;if(!this.type)return this.#t?.isEnd();let e=this.#t?this.#t.#e.length:0;return this.#s===e-1}copyIn(e){typeof e=="string"?this.push(e):this.push(e.clone(this))}clone(e){let t=new n(this.type,e);for(let r of this.#e)t.copyIn(r);return t}static#u(e,t,r,i){let o=!1,s=!1,a=-1,d=!1;if(t.type===null){let _=r,L="";for(;_<e.length;){let k=e.charAt(_++);if(o||k==="\\"){o=!o,L+=k;continue}if(s){_===a+1?(k==="^"||k==="!")&&(d=!0):k==="]"&&!(_===a+2&&d)&&(s=!1),L+=k;continue}else if(k==="["){s=!0,a=_,d=!1,L+=k;continue}if(!i.noext&&ug(k)&&e.charAt(_)==="("){t.push(L),L="";let X=new n(k,t);_=n.#u(e,X,_,i),t.push(X);continue}L+=k}return t.push(L),_}let l=r+1,h=new n(null,t),v=[],w="";for(;l<e.length;){let _=e.charAt(l++);if(o||_==="\\"){o=!o,w+=_;continue}if(s){l===a+1?(_==="^"||_==="!")&&(d=!0):_==="]"&&!(l===a+2&&d)&&(s=!1),w+=_;continue}else if(_==="["){s=!0,a=l,d=!1,w+=_;continue}if(ug(_)&&e.charAt(l)==="("){h.push(w),w="";let L=new n(_,h);h.push(L),l=n.#u(e,L,l,i);continue}if(_==="|"){h.push(w),w="",v.push(h),h=new n(null,t);continue}if(_===")")return w===""&&t.#e.length===0&&(t.#d=!0),h.push(w),w="",t.push(...v,h),l;w+=_}return t.type=null,t.#r=void 0,t.#e=[e.substring(r-1)],l}static fromGlob(e,t={}){let r=new n(null,void 0,t);return n.#u(e,r,0,t),r}toMMPattern(){if(this!==this.#n)return this.#n.toMMPattern();let e=this.toString(),[t,r,i,o]=this.toRegExpSource();if(!(i||this.#r||this.#i.nocase&&!this.#i.nocaseMagicOnly&&e.toUpperCase()!==e.toLowerCase()))return r;let a=(this.#i.nocase?"i":"")+(o?"u":"");return Object.assign(new RegExp(`^${t}$`,a),{_src:t,_glob:e})}get options(){return this.#i}toRegExpSource(e){let t=e??!!this.#i.dot;if(this.#n===this&&this.#p(),!this.type){let d=this.isStart()&&this.isEnd(),l=this.#e.map(_=>{let[L,k,X,fe]=typeof _=="string"?n.#h(_,this.#r,d):_.toRegExpSource(e);return this.#r=this.#r||X,this.#o=this.#o||fe,L}).join(""),h="";if(this.isStart()&&typeof this.#e[0]=="string"&&!(this.#e.length===1&&gP.has(this.#e[0]))){let L=mP,k=t&&L.has(l.charAt(0))||l.startsWith("\\.")&&L.has(l.charAt(2))||l.startsWith("\\.\\.")&&L.has(l.charAt(4)),X=!t&&!e&&L.has(l.charAt(0));h=k?hP:X?Vo:""}let v="";return this.isEnd()&&this.#n.#a&&this.#t?.type==="!"&&(v="(?:$|\\/)"),[h+l+v,(0,Uo.unescape)(l),this.#r=!!this.#r,this.#o]}let r=this.type==="*"||this.type==="+",i=this.type==="!"?"(?:(?!(?:":"(?:",o=this.#f(t);if(this.isStart()&&this.isEnd()&&!o&&this.type!=="!"){let d=this.toString();return this.#e=[d],this.type=null,this.#r=void 0,[d,(0,Uo.unescape)(this.toString()),!1,!1]}let s=!r||e||t||!Vo?"":this.#f(!0);s===o&&(s=""),s&&(o=`(?:${o})(?:${s})*?`);let a="";if(this.type==="!"&&this.#d)a=(this.isStart()&&!t?Vo:"")+fg;else{let d=this.type==="!"?"))"+(this.isStart()&&!t&&!e?Vo:"")+dg+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&s?")":this.type==="*"&&s?")?":`)${this.type}`;a=i+o+d}return[a,(0,Uo.unescape)(o),this.#r=!!this.#r,this.#o]}#f(e){return this.#e.map(t=>{if(typeof t=="string")throw new Error("string type in extglob ast??");let[r,i,o,s]=t.toRegExpSource(e);return this.#o=this.#o||s,r}).filter(t=>!(this.isStart()&&this.isEnd())||!!t).join("|")}static#h(e,t,r=!1){let i=!1,o="",s=!1;for(let a=0;a<e.length;a++){let d=e.charAt(a);if(i){i=!1,o+=(_P.has(d)?"\\":"")+d;continue}if(d==="\\"){a===e.length-1?o+="\\\\":i=!0;continue}if(d==="["){let[l,h,v,w]=(0,fP.parseClass)(e,a);if(v){o+=l,s=s||h,a+=v-1,t=t||w;continue}}if(d==="*"){r&&e==="*"?o+=fg:o+=dg,t=!0;continue}if(d==="?"){o+=al,t=!0;continue}o+=bP(d)}return[o,(0,Uo.unescape)(e),!!t,s]}};Wo.AST=sl});var ll=I(zo=>{"use strict";Object.defineProperty(zo,"__esModule",{value:!0});zo.escape=void 0;var yP=(n,{windowsPathsNoEscape:e=!1}={})=>e?n.replace(/[?*()[\]]/g,"[$&]"):n.replace(/[?*()[\]\\]/g,"\\$&");zo.escape=yP});var nR=I(K=>{"use strict";var vP=K&&K.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(K,"__esModule",{value:!0});K.unescape=K.escape=K.AST=K.Minimatch=K.match=K.makeRe=K.braceExpand=K.defaults=K.filter=K.GLOBSTAR=K.sep=K.minimatch=void 0;var wP=vP(sg()),Ho=ag(),mg=cl(),PP=ll(),RP=Bo(),EP=(n,e,t={})=>((0,Ho.assertValidPattern)(e),!t.nocomment&&e.charAt(0)==="#"?!1:new kn(e,t).match(n));K.minimatch=EP;var SP=/^\*+([^+@!?\*\[\(]*)$/,xP=n=>e=>!e.startsWith(".")&&e.endsWith(n),LP=n=>e=>e.endsWith(n),DP=n=>(n=n.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(n)),kP=n=>(n=n.toLowerCase(),e=>e.toLowerCase().endsWith(n)),TP=/^\*+\.\*+$/,IP=n=>!n.startsWith(".")&&n.includes("."),AP=n=>n!=="."&&n!==".."&&n.includes("."),CP=/^\.\*+$/,$P=n=>n!=="."&&n!==".."&&n.startsWith("."),OP=/^\*+$/,MP=n=>n.length!==0&&!n.startsWith("."),qP=n=>n.length!==0&&n!=="."&&n!=="..",NP=/^\?+([^+@!?\*\[\(]*)?$/,FP=([n,e=""])=>{let t=gg([n]);return e?(e=e.toLowerCase(),r=>t(r)&&r.toLowerCase().endsWith(e)):t},jP=([n,e=""])=>{let t=_g([n]);return e?(e=e.toLowerCase(),r=>t(r)&&r.toLowerCase().endsWith(e)):t},BP=([n,e=""])=>{let t=_g([n]);return e?r=>t(r)&&r.endsWith(e):t},UP=([n,e=""])=>{let t=gg([n]);return e?r=>t(r)&&r.endsWith(e):t},gg=([n])=>{let e=n.length;return t=>t.length===e&&!t.startsWith(".")},_g=([n])=>{let e=n.length;return t=>t.length===e&&t!=="."&&t!==".."},bg=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",pg={win32:{sep:"\\"},posix:{sep:"/"}};K.sep=bg==="win32"?pg.win32.sep:pg.posix.sep;K.minimatch.sep=K.sep;K.GLOBSTAR=Symbol("globstar **");K.minimatch.GLOBSTAR=K.GLOBSTAR;var VP="[^/]",WP=VP+"*?",zP="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",HP="(?:(?!(?:\\/|^)\\.).)*?",KP=(n,e={})=>t=>(0,K.minimatch)(t,n,e);K.filter=KP;K.minimatch.filter=K.filter;var Et=(n,e={})=>Object.assign({},n,e),GP=n=>{if(!n||typeof n!="object"||!Object.keys(n).length)return K.minimatch;let e=K.minimatch;return Object.assign((r,i,o={})=>e(r,i,Et(n,o)),{Minimatch:class extends e.Minimatch{constructor(i,o={}){super(i,Et(n,o))}static defaults(i){return e.defaults(Et(n,i)).Minimatch}},AST:class extends e.AST{constructor(i,o,s={}){super(i,o,Et(n,s))}static fromGlob(i,o={}){return e.AST.fromGlob(i,Et(n,o))}},unescape:(r,i={})=>e.unescape(r,Et(n,i)),escape:(r,i={})=>e.escape(r,Et(n,i)),filter:(r,i={})=>e.filter(r,Et(n,i)),defaults:r=>e.defaults(Et(n,r)),makeRe:(r,i={})=>e.makeRe(r,Et(n,i)),braceExpand:(r,i={})=>e.braceExpand(r,Et(n,i)),match:(r,i,o={})=>e.match(r,i,Et(n,o)),sep:e.sep,GLOBSTAR:K.GLOBSTAR})};K.defaults=GP;K.minimatch.defaults=K.defaults;var XP=(n,e={})=>((0,Ho.assertValidPattern)(n),e.nobrace||!/\{(?:(?!\{).)*\}/.test(n)?[n]:(0,wP.default)(n));K.braceExpand=XP;K.minimatch.braceExpand=K.braceExpand;var ZP=(n,e={})=>new kn(n,e).makeRe();K.makeRe=ZP;K.minimatch.makeRe=K.makeRe;var JP=(n,e,t={})=>{let r=new kn(e,t);return n=n.filter(i=>r.match(i)),r.options.nonull&&!n.length&&n.push(e),n};K.match=JP;K.minimatch.match=K.match;var hg=/[?*]|[+@!]\(.*?\)|\[|\]/,QP=n=>n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),kn=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(e,t={}){(0,Ho.assertValidPattern)(e),t=t||{},this.options=t,this.pattern=e,this.platform=t.platform||bg,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||t.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!t.nonegate,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=t.windowsNoMagicRoot!==void 0?t.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let e of this.set)for(let t of e)if(typeof t!="string")return!0;return!1}debug(...e){}make(){let e=this.pattern,t=this.options;if(!t.nocomment&&e.charAt(0)==="#"){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=(...o)=>console.error(...o)),this.debug(this.pattern,this.globSet);let r=this.globSet.map(o=>this.slashSplit(o));this.globParts=this.preprocess(r),this.debug(this.pattern,this.globParts);let i=this.globParts.map((o,s,a)=>{if(this.isWindows&&this.windowsNoMagicRoot){let d=o[0]===""&&o[1]===""&&(o[2]==="?"||!hg.test(o[2]))&&!hg.test(o[3]),l=/^[a-z]:/i.test(o[0]);if(d)return[...o.slice(0,4),...o.slice(4).map(h=>this.parse(h))];if(l)return[o[0],...o.slice(1).map(h=>this.parse(h))]}return o.map(d=>this.parse(d))});if(this.debug(this.pattern,i),this.set=i.filter(o=>o.indexOf(!1)===-1),this.isWindows)for(let o=0;o<this.set.length;o++){let s=this.set[o];s[0]===""&&s[1]===""&&this.globParts[o][2]==="?"&&typeof s[3]=="string"&&/^[a-z]:$/i.test(s[3])&&(s[2]="?")}this.debug(this.pattern,this.set)}preprocess(e){if(this.options.noglobstar)for(let r=0;r<e.length;r++)for(let i=0;i<e[r].length;i++)e[r][i]==="**"&&(e[r][i]="*");let{optimizationLevel:t=1}=this.options;return t>=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):t>=1?e=this.levelOneOptimize(e):e=this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(t=>{let r=-1;for(;(r=t.indexOf("**",r+1))!==-1;){let i=r;for(;t[i+1]==="**";)i++;i!==r&&t.splice(r,i-r)}return t})}levelOneOptimize(e){return e.map(t=>(t=t.reduce((r,i)=>{let o=r[r.length-1];return i==="**"&&o==="**"?r:i===".."&&o&&o!==".."&&o!=="."&&o!=="**"?(r.pop(),r):(r.push(i),r)},[]),t.length===0?[""]:t))}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=!1;do{if(t=!1,!this.preserveMultipleSlashes){for(let i=1;i<e.length-1;i++){let o=e[i];i===1&&o===""&&e[0]===""||(o==="."||o==="")&&(t=!0,e.splice(i,1),i--)}e[0]==="."&&e.length===2&&(e[1]==="."||e[1]==="")&&(t=!0,e.pop())}let r=0;for(;(r=e.indexOf("..",r+1))!==-1;){let i=e[r-1];i&&i!=="."&&i!==".."&&i!=="**"&&(t=!0,e.splice(r-1,2),r-=2)}}while(t);return e.length===0?[""]:e}firstPhasePreProcess(e){let t=!1;do{t=!1;for(let r of e){let i=-1;for(;(i=r.indexOf("**",i+1))!==-1;){let s=i;for(;r[s+1]==="**";)s++;s>i&&r.splice(i+1,s-i);let a=r[i+1],d=r[i+2],l=r[i+3];if(a!==".."||!d||d==="."||d===".."||!l||l==="."||l==="..")continue;t=!0,r.splice(i,1);let h=r.slice(0);h[i]="**",e.push(h),i--}if(!this.preserveMultipleSlashes){for(let s=1;s<r.length-1;s++){let a=r[s];s===1&&a===""&&r[0]===""||(a==="."||a==="")&&(t=!0,r.splice(s,1),s--)}r[0]==="."&&r.length===2&&(r[1]==="."||r[1]==="")&&(t=!0,r.pop())}let o=0;for(;(o=r.indexOf("..",o+1))!==-1;){let s=r[o-1];if(s&&s!=="."&&s!==".."&&s!=="**"){t=!0;let d=o===1&&r[o+1]==="**"?["."]:[];r.splice(o-1,2,...d),r.length===0&&r.push(""),o-=2}}}}while(t);return e}secondPhasePreProcess(e){for(let t=0;t<e.length-1;t++)for(let r=t+1;r<e.length;r++){let i=this.partsMatch(e[t],e[r],!this.preserveMultipleSlashes);if(i){e[t]=[],e[r]=i;break}}return e.filter(t=>t.length)}partsMatch(e,t,r=!1){let i=0,o=0,s=[],a="";for(;i<e.length&&o<t.length;)if(e[i]===t[o])s.push(a==="b"?t[o]:e[i]),i++,o++;else if(r&&e[i]==="**"&&t[o]===e[i+1])s.push(e[i]),i++;else if(r&&t[o]==="**"&&e[i]===t[o+1])s.push(t[o]),o++;else if(e[i]==="*"&&t[o]&&(this.options.dot||!t[o].startsWith("."))&&t[o]!=="**"){if(a==="b")return!1;a="a",s.push(e[i]),i++,o++}else if(t[o]==="*"&&e[i]&&(this.options.dot||!e[i].startsWith("."))&&e[i]!=="**"){if(a==="a")return!1;a="b",s.push(t[o]),i++,o++}else return!1;return e.length===t.length&&s}parseNegate(){if(this.nonegate)return;let e=this.pattern,t=!1,r=0;for(let i=0;i<e.length&&e.charAt(i)==="!";i++)t=!t,r++;r&&(this.pattern=e.slice(r)),this.negate=t}matchOne(e,t,r=!1){let i=this.options;if(this.isWindows){let k=typeof e[0]=="string"&&/^[a-z]:$/i.test(e[0]),X=!k&&e[0]===""&&e[1]===""&&e[2]==="?"&&/^[a-z]:$/i.test(e[3]),fe=typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0]),B=!fe&&t[0]===""&&t[1]===""&&t[2]==="?"&&typeof t[3]=="string"&&/^[a-z]:$/i.test(t[3]),ee=X?3:k?0:void 0,ae=B?3:fe?0:void 0;if(typeof ee=="number"&&typeof ae=="number"){let[Q,te]=[e[ee],t[ae]];Q.toLowerCase()===te.toLowerCase()&&(t[ae]=Q,ae>ee?t=t.slice(ae):ee>ae&&(e=e.slice(ee)))}}let{optimizationLevel:o=1}=this.options;o>=2&&(e=this.levelTwoFileOptimize(e)),this.debug("matchOne",this,{file:e,pattern:t}),this.debug("matchOne",e.length,t.length);for(var s=0,a=0,d=e.length,l=t.length;s<d&&a<l;s++,a++){this.debug("matchOne loop");var h=t[a],v=e[s];if(this.debug(t,h,v),h===!1)return!1;if(h===K.GLOBSTAR){this.debug("GLOBSTAR",[t,h,v]);var w=s,_=a+1;if(_===l){for(this.debug("** at the end");s<d;s++)if(e[s]==="."||e[s]===".."||!i.dot&&e[s].charAt(0)===".")return!1;return!0}for(;w<d;){var L=e[w];if(this.debug(`
54
+ globstar while`,e,w,t,_,L),this.matchOne(e.slice(w),t.slice(_),r))return this.debug("globstar found match!",w,d,L),!0;if(L==="."||L===".."||!i.dot&&L.charAt(0)==="."){this.debug("dot detected!",e,w,t,_);break}this.debug("globstar swallow a segment, and continue"),w++}return!!(r&&(this.debug(`
55
+ >>> no match, partial?`,e,w,t,_),w===d))}let k;if(typeof h=="string"?(k=v===h,this.debug("string match",h,v,k)):(k=h.test(v),this.debug("pattern match",h,v,k)),!k)return!1}if(s===d&&a===l)return!0;if(s===d)return r;if(a===l)return s===d-1&&e[s]==="";throw new Error("wtf?")}braceExpand(){return(0,K.braceExpand)(this.pattern,this.options)}parse(e){(0,Ho.assertValidPattern)(e);let t=this.options;if(e==="**")return K.GLOBSTAR;if(e==="")return"";let r,i=null;(r=e.match(OP))?i=t.dot?qP:MP:(r=e.match(SP))?i=(t.nocase?t.dot?kP:DP:t.dot?LP:xP)(r[1]):(r=e.match(NP))?i=(t.nocase?t.dot?jP:FP:t.dot?BP:UP)(r):(r=e.match(TP))?i=t.dot?AP:IP:(r=e.match(CP))&&(i=$P);let o=mg.AST.fromGlob(e,this.options).toMMPattern();return i&&typeof o=="object"&&Reflect.defineProperty(o,"test",{value:i}),o}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let e=this.set;if(!e.length)return this.regexp=!1,this.regexp;let t=this.options,r=t.noglobstar?WP:t.dot?zP:HP,i=new Set(t.nocase?["i"]:[]),o=e.map(d=>{let l=d.map(h=>{if(h instanceof RegExp)for(let v of h.flags.split(""))i.add(v);return typeof h=="string"?QP(h):h===K.GLOBSTAR?K.GLOBSTAR:h._src});return l.forEach((h,v)=>{let w=l[v+1],_=l[v-1];h!==K.GLOBSTAR||_===K.GLOBSTAR||(_===void 0?w!==void 0&&w!==K.GLOBSTAR?l[v+1]="(?:\\/|"+r+"\\/)?"+w:l[v]=r:w===void 0?l[v-1]=_+"(?:\\/|"+r+")?":w!==K.GLOBSTAR&&(l[v-1]=_+"(?:\\/|\\/"+r+"\\/)"+w,l[v+1]=K.GLOBSTAR))}),l.filter(h=>h!==K.GLOBSTAR).join("/")}).join("|"),[s,a]=e.length>1?["(?:",")"]:["",""];o="^"+s+o+a+"$",this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...i].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e,t=this.partial){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return e==="";if(e==="/"&&t)return!0;let r=this.options;this.isWindows&&(e=e.split("\\").join("/"));let i=this.slashSplit(e);this.debug(this.pattern,"split",i);let o=this.set;this.debug(this.pattern,"set",o);let s=i[i.length-1];if(!s)for(let a=i.length-2;!s&&a>=0;a--)s=i[a];for(let a=0;a<o.length;a++){let d=o[a],l=i;if(r.matchBase&&d.length===1&&(l=[s]),this.matchOne(l,d,t))return r.flipNegate?!0:!this.negate}return r.flipNegate?!1:this.negate}static defaults(e){return K.minimatch.defaults(e).Minimatch}};K.Minimatch=kn;var YP=cl();Object.defineProperty(K,"AST",{enumerable:!0,get:function(){return YP.AST}});var eR=ll();Object.defineProperty(K,"escape",{enumerable:!0,get:function(){return eR.escape}});var tR=Bo();Object.defineProperty(K,"unescape",{enumerable:!0,get:function(){return tR.unescape}});K.minimatch.AST=mg.AST;K.minimatch.Minimatch=kn;K.minimatch.escape=PP.escape;K.minimatch.unescape=RP.unescape});var iR="Factorio Modding Tool Kit",_n="2.0.7";var G=ti(Tl(),1),ta=ti(yd(),1);import*as Wt from"path";import*as tf from"fs/promises";import*as Rn from"os";var vd;(()=>{"use strict";var n={975:O=>{function E(x){if(typeof x!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(x))}function F(x,A){for(var C,N="",z=0,q=-1,ne=0,re=0;re<=x.length;++re){if(re<x.length)C=x.charCodeAt(re);else{if(C===47)break;C=47}if(C===47){if(!(q===re-1||ne===1))if(q!==re-1&&ne===2){if(N.length<2||z!==2||N.charCodeAt(N.length-1)!==46||N.charCodeAt(N.length-2)!==46){if(N.length>2){var Me=N.lastIndexOf("/");if(Me!==N.length-1){Me===-1?(N="",z=0):z=(N=N.slice(0,Me)).length-1-N.lastIndexOf("/"),q=re,ne=0;continue}}else if(N.length===2||N.length===1){N="",z=0,q=re,ne=0;continue}}A&&(N.length>0?N+="/..":N="..",z=2)}else N.length>0?N+="/"+x.slice(q+1,re):N=x.slice(q+1,re),z=re-q-1;q=re,ne=0}else C===46&&ne!==-1?++ne:ne=-1}return N}var j={resolve:function(){for(var x,A="",C=!1,N=arguments.length-1;N>=-1&&!C;N--){var z;N>=0?z=arguments[N]:(x===void 0&&(x=process.cwd()),z=x),E(z),z.length!==0&&(A=z+"/"+A,C=z.charCodeAt(0)===47)}return A=F(A,!C),C?A.length>0?"/"+A:"/":A.length>0?A:"."},normalize:function(x){if(E(x),x.length===0)return".";var A=x.charCodeAt(0)===47,C=x.charCodeAt(x.length-1)===47;return(x=F(x,!A)).length!==0||A||(x="."),x.length>0&&C&&(x+="/"),A?"/"+x:x},isAbsolute:function(x){return E(x),x.length>0&&x.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var x,A=0;A<arguments.length;++A){var C=arguments[A];E(C),C.length>0&&(x===void 0?x=C:x+="/"+C)}return x===void 0?".":j.normalize(x)},relative:function(x,A){if(E(x),E(A),x===A||(x=j.resolve(x))===(A=j.resolve(A)))return"";for(var C=1;C<x.length&&x.charCodeAt(C)===47;++C);for(var N=x.length,z=N-C,q=1;q<A.length&&A.charCodeAt(q)===47;++q);for(var ne=A.length-q,re=z<ne?z:ne,Me=-1,he=0;he<=re;++he){if(he===re){if(ne>re){if(A.charCodeAt(q+he)===47)return A.slice(q+he+1);if(he===0)return A.slice(q+he)}else z>re&&(x.charCodeAt(C+he)===47?Me=he:he===0&&(Me=0));break}var Ye=x.charCodeAt(C+he);if(Ye!==A.charCodeAt(q+he))break;Ye===47&&(Me=he)}var It="";for(he=C+Me+1;he<=N;++he)he!==N&&x.charCodeAt(he)!==47||(It.length===0?It+="..":It+="/..");return It.length>0?It+A.slice(q+Me):(q+=Me,A.charCodeAt(q)===47&&++q,A.slice(q))},_makeLong:function(x){return x},dirname:function(x){if(E(x),x.length===0)return".";for(var A=x.charCodeAt(0),C=A===47,N=-1,z=!0,q=x.length-1;q>=1;--q)if((A=x.charCodeAt(q))===47){if(!z){N=q;break}}else z=!1;return N===-1?C?"/":".":C&&N===1?"//":x.slice(0,N)},basename:function(x,A){if(A!==void 0&&typeof A!="string")throw new TypeError('"ext" argument must be a string');E(x);var C,N=0,z=-1,q=!0;if(A!==void 0&&A.length>0&&A.length<=x.length){if(A.length===x.length&&A===x)return"";var ne=A.length-1,re=-1;for(C=x.length-1;C>=0;--C){var Me=x.charCodeAt(C);if(Me===47){if(!q){N=C+1;break}}else re===-1&&(q=!1,re=C+1),ne>=0&&(Me===A.charCodeAt(ne)?--ne==-1&&(z=C):(ne=-1,z=re))}return N===z?z=re:z===-1&&(z=x.length),x.slice(N,z)}for(C=x.length-1;C>=0;--C)if(x.charCodeAt(C)===47){if(!q){N=C+1;break}}else z===-1&&(q=!1,z=C+1);return z===-1?"":x.slice(N,z)},extname:function(x){E(x);for(var A=-1,C=0,N=-1,z=!0,q=0,ne=x.length-1;ne>=0;--ne){var re=x.charCodeAt(ne);if(re!==47)N===-1&&(z=!1,N=ne+1),re===46?A===-1?A=ne:q!==1&&(q=1):A!==-1&&(q=-1);else if(!z){C=ne+1;break}}return A===-1||N===-1||q===0||q===1&&A===N-1&&A===C+1?"":x.slice(A,N)},format:function(x){if(x===null||typeof x!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof x);return function(A,C){var N=C.dir||C.root,z=C.base||(C.name||"")+(C.ext||"");return N?N===C.root?N+z:N+"/"+z:z}(0,x)},parse:function(x){E(x);var A={root:"",dir:"",base:"",ext:"",name:""};if(x.length===0)return A;var C,N=x.charCodeAt(0),z=N===47;z?(A.root="/",C=1):C=0;for(var q=-1,ne=0,re=-1,Me=!0,he=x.length-1,Ye=0;he>=C;--he)if((N=x.charCodeAt(he))!==47)re===-1&&(Me=!1,re=he+1),N===46?q===-1?q=he:Ye!==1&&(Ye=1):q!==-1&&(Ye=-1);else if(!Me){ne=he+1;break}return q===-1||re===-1||Ye===0||Ye===1&&q===re-1&&q===ne+1?re!==-1&&(A.base=A.name=ne===0&&z?x.slice(1,re):x.slice(ne,re)):(ne===0&&z?(A.name=x.slice(1,q),A.base=x.slice(1,re)):(A.name=x.slice(ne,q),A.base=x.slice(ne,re)),A.ext=x.slice(q,re)),ne>0?A.dir=x.slice(0,ne-1):z&&(A.dir="/"),A},sep:"/",delimiter:":",win32:null,posix:null};j.posix=j,O.exports=j}},e={};function t(O){var E=e[O];if(E!==void 0)return E.exports;var F=e[O]={exports:{}};return n[O](F,F.exports,t),F.exports}t.d=(O,E)=>{for(var F in E)t.o(E,F)&&!t.o(O,F)&&Object.defineProperty(O,F,{enumerable:!0,get:E[F]})},t.o=(O,E)=>Object.prototype.hasOwnProperty.call(O,E),t.r=O=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(O,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(O,"__esModule",{value:!0})};var r={};let i;t.r(r),t.d(r,{URI:()=>w,Utils:()=>Qe}),typeof process=="object"?i=process.platform==="win32":typeof navigator=="object"&&(i=navigator.userAgent.indexOf("Windows")>=0);let o=/^\w[\w\d+.-]*$/,s=/^\//,a=/^\/\//;function d(O,E){if(!O.scheme&&E)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${O.authority}", path: "${O.path}", query: "${O.query}", fragment: "${O.fragment}"}`);if(O.scheme&&!o.test(O.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(O.path){if(O.authority){if(!s.test(O.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(a.test(O.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}let l="",h="/",v=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class w{static isUri(E){return E instanceof w||!!E&&typeof E.authority=="string"&&typeof E.fragment=="string"&&typeof E.path=="string"&&typeof E.query=="string"&&typeof E.scheme=="string"&&typeof E.fsPath=="string"&&typeof E.with=="function"&&typeof E.toString=="function"}scheme;authority;path;query;fragment;constructor(E,F,j,x,A,C=!1){typeof E=="object"?(this.scheme=E.scheme||l,this.authority=E.authority||l,this.path=E.path||l,this.query=E.query||l,this.fragment=E.fragment||l):(this.scheme=function(N,z){return N||z?N:"file"}(E,C),this.authority=F||l,this.path=function(N,z){switch(N){case"https":case"http":case"file":z?z[0]!==h&&(z=h+z):z=h}return z}(this.scheme,j||l),this.query=x||l,this.fragment=A||l,d(this,C))}get fsPath(){return B(this,!1)}with(E){if(!E)return this;let{scheme:F,authority:j,path:x,query:A,fragment:C}=E;return F===void 0?F=this.scheme:F===null&&(F=l),j===void 0?j=this.authority:j===null&&(j=l),x===void 0?x=this.path:x===null&&(x=l),A===void 0?A=this.query:A===null&&(A=l),C===void 0?C=this.fragment:C===null&&(C=l),F===this.scheme&&j===this.authority&&x===this.path&&A===this.query&&C===this.fragment?this:new L(F,j,x,A,C)}static parse(E,F=!1){let j=v.exec(E);return j?new L(j[2]||l,te(j[4]||l),te(j[5]||l),te(j[7]||l),te(j[9]||l),F):new L(l,l,l,l,l)}static file(E){let F=l;if(i&&(E=E.replace(/\\/g,h)),E[0]===h&&E[1]===h){let j=E.indexOf(h,2);j===-1?(F=E.substring(2),E=h):(F=E.substring(2,j),E=E.substring(j)||h)}return new L("file",F,E,l,l)}static from(E){let F=new L(E.scheme,E.authority,E.path,E.query,E.fragment);return d(F,!0),F}toString(E=!1){return ee(this,E)}toJSON(){return this}static revive(E){if(E){if(E instanceof w)return E;{let F=new L(E);return F._formatted=E.external,F._fsPath=E._sep===_?E.fsPath:null,F}}return E}}let _=i?1:void 0;class L extends w{_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=B(this,!1)),this._fsPath}toString(E=!1){return E?ee(this,!0):(this._formatted||(this._formatted=ee(this,!1)),this._formatted)}toJSON(){let E={$mid:1};return this._fsPath&&(E.fsPath=this._fsPath,E._sep=_),this._formatted&&(E.external=this._formatted),this.path&&(E.path=this.path),this.scheme&&(E.scheme=this.scheme),this.authority&&(E.authority=this.authority),this.query&&(E.query=this.query),this.fragment&&(E.fragment=this.fragment),E}}let k={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function X(O,E,F){let j,x=-1;for(let A=0;A<O.length;A++){let C=O.charCodeAt(A);if(C>=97&&C<=122||C>=65&&C<=90||C>=48&&C<=57||C===45||C===46||C===95||C===126||E&&C===47||F&&C===91||F&&C===93||F&&C===58)x!==-1&&(j+=encodeURIComponent(O.substring(x,A)),x=-1),j!==void 0&&(j+=O.charAt(A));else{j===void 0&&(j=O.substr(0,A));let N=k[C];N!==void 0?(x!==-1&&(j+=encodeURIComponent(O.substring(x,A)),x=-1),j+=N):x===-1&&(x=A)}}return x!==-1&&(j+=encodeURIComponent(O.substring(x))),j!==void 0?j:O}function fe(O){let E;for(let F=0;F<O.length;F++){let j=O.charCodeAt(F);j===35||j===63?(E===void 0&&(E=O.substr(0,F)),E+=k[j]):E!==void 0&&(E+=O[F])}return E!==void 0?E:O}function B(O,E){let F;return F=O.authority&&O.path.length>1&&O.scheme==="file"?`//${O.authority}${O.path}`:O.path.charCodeAt(0)===47&&(O.path.charCodeAt(1)>=65&&O.path.charCodeAt(1)<=90||O.path.charCodeAt(1)>=97&&O.path.charCodeAt(1)<=122)&&O.path.charCodeAt(2)===58?E?O.path.substr(1):O.path[1].toLowerCase()+O.path.substr(2):O.path,i&&(F=F.replace(/\//g,"\\")),F}function ee(O,E){let F=E?fe:X,j="",{scheme:x,authority:A,path:C,query:N,fragment:z}=O;if(x&&(j+=x,j+=":"),(A||x==="file")&&(j+=h,j+=h),A){let q=A.indexOf("@");if(q!==-1){let ne=A.substr(0,q);A=A.substr(q+1),q=ne.lastIndexOf(":"),q===-1?j+=F(ne,!1,!1):(j+=F(ne.substr(0,q),!1,!1),j+=":",j+=F(ne.substr(q+1),!1,!0)),j+="@"}A=A.toLowerCase(),q=A.lastIndexOf(":"),q===-1?j+=F(A,!1,!0):(j+=F(A.substr(0,q),!1,!0),j+=A.substr(q))}if(C){if(C.length>=3&&C.charCodeAt(0)===47&&C.charCodeAt(2)===58){let q=C.charCodeAt(1);q>=65&&q<=90&&(C=`/${String.fromCharCode(q+32)}:${C.substr(3)}`)}else if(C.length>=2&&C.charCodeAt(1)===58){let q=C.charCodeAt(0);q>=65&&q<=90&&(C=`${String.fromCharCode(q+32)}:${C.substr(2)}`)}j+=F(C,!0,!1)}return N&&(j+="?",j+=F(N,!1,!1)),z&&(j+="#",j+=E?z:X(z,!1,!1)),j}function ae(O){try{return decodeURIComponent(O)}catch{return O.length>3?O.substr(0,3)+ae(O.substr(3)):O}}let Q=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function te(O){return O.match(Q)?O.replace(Q,E=>ae(E)):O}var _e=t(975);let Ae=_e.posix||_e,qe="/";var Qe;(function(O){O.joinPath=function(E,...F){return E.with({path:Ae.join(E.path,...F)})},O.resolvePath=function(E,...F){let j=E.path,x=!1;j[0]!==qe&&(j=qe+j,x=!0);let A=Ae.resolve(j,...F);return x&&A[0]===qe&&!E.authority&&(A=A.substring(1)),E.with({path:A})},O.dirname=function(E){if(E.path.length===0||E.path===qe)return E;let F=Ae.dirname(E.path);return F.length===1&&F.charCodeAt(0)===46&&(F=""),E.with({path:F})},O.basename=function(E){return Ae.basename(E.path)},O.extname=function(E){return Ae.extname(E.path)}})(Qe||(Qe={})),vd=r})();var{URI:tt,Utils:Lt}=vd;function vn(n){let e=n.toString().match(/\]=*$/),t="=".repeat((n.toString().match(/\]=*\]/g)||[]).map(r=>r.length-1).reduce((r,i)=>Math.max(r,i),e?e[0].length:0));return Buffer.concat([Buffer.from(`[${t}[`),n,Buffer.from(`]${t}]`)])}function wd(n,e){let t=[],r=n.length,i=0;for(;i<r;)t.push(n.subarray(i,i+=e));return t}function ki(n){switch(typeof n){case"object":let e=[Buffer.from("{")];for(let t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e.push(Buffer.from("[")),e.push(ki(t)),e.push(Buffer.from("]=")),e.push(ki(n[t])),e.push(Buffer.from(",")));return e.push(Buffer.from("}")),Buffer.concat(e);case"string":return Buffer.from(`"${n}"`);case"boolean":case"number":return Buffer.from(`${n}`)}}function qn(n){if(n>4294967280)throw new Error("Values > 0xFFFFFFF0 are reserved");if(n<0)throw new Error("Value must be positive");n===10?n=4294967295:n===26?n=4294967294:n===13&&(n=4294967293);let e,t,r,i;if(n<128)return Buffer.from([n]);n<2048?(i=2,e=192,t=31,r=6):n<65536?(i=3,e=224,t=15,r=12):n<2097152?(i=4,e=240,t=7,r=18):n<67108864?(i=5,e=248,t=3,r=24):(i=6,e=252,t=3,r=30);let o=Buffer.alloc(i);o[0]=e|n>>r&t;for(let s=r-6,a=1;s>=0;s-=6,a++)o[a]=128|n>>s&63;return o}function Di(n){let e=Buffer.from(n,"utf8"),t=qn(e.length);return Buffer.concat([t,e])}function Li(n){let e=qn(n.line),t=0,r=new Array;return n.condition&&(t|=1,r.push(Di(n.condition.replace(/[\r\n]+/g," ")))),n.hitCondition&&(t|=2,r.push(Di(n.hitCondition.replace(/[\r\n]+/g," ")))),n.logMessage&&(t|=4,r.push(Di(n.logMessage.replace(/[\r\n]+/g," ")))),Buffer.concat([e,Buffer.from([t]),Buffer.concat(r)])}function Pd(n,e){let t=Di(n),r=e.filter(a=>!a.condition&&!a.hitCondition&&!a.logMessage).map(a=>a.line),i;if(r.length===0)i=Buffer.from([255]);else if(r.length===10){let a=Buffer.from([254]);i=Buffer.concat([a,Buffer.concat(r.map(d=>qn(d)))])}else if(r.length===26){let a=Buffer.from([253]);i=Buffer.concat([a,Buffer.concat(r.map(d=>qn(d)))])}else if(r.length===13){let a=Buffer.from([252]);i=Buffer.concat([a,Buffer.concat(r.map(d=>qn(d)))])}else{let a=Buffer.from([r.length]);i=Buffer.concat([a,Buffer.concat(r.map(d=>qn(d)))])}let o=e.filter(a=>a.condition||a.hitCondition||a.logMessage),s;if(o.length===0)s=Buffer.from([255]);else if(o.length===10){let a=Buffer.from([254]);s=Buffer.concat([a,Buffer.concat(o.map(d=>Li(d)))])}else if(o.length===26){let a=Buffer.from([253]);s=Buffer.concat([a,Buffer.concat(o.map(d=>Li(d)))])}else if(o.length===13){let a=Buffer.from([252]);s=Buffer.concat([a,Buffer.concat(o.map(d=>Li(d)))])}else{let a=Buffer.from([o.length]);s=Buffer.concat([a,Buffer.concat(o.map(d=>Li(d)))])}return Buffer.concat([t,i,s])}import{spawn as Dy}from"child_process";import{EventEmitter as ky}from"events";import{EventEmitter as xy}from"events";var Er=class extends xy{buf;matchers;constructor(e,t){super(),this.buf=Buffer.alloc(0),this.matchers=t instanceof Buffer?[t]:t,e.on("close",()=>{this.emit("close")}),e.on("end",()=>{this.emit("end")}),e.on("data",r=>{for(this.buf=Buffer.concat([this.buf,r]);this.buf.length>0;){let i=this.matchers.map(s=>this.buf.indexOf(s instanceof Buffer?s:s.start)),o=i.reduce((s,a)=>s===-1?a:a===-1?s:Math.min(s,a));if(o!==-1){let s=this.matchers[i.indexOf(o)];if(s instanceof Buffer)o>0&&this.emit("segment",this.buf.subarray(0,o)),this.buf=this.buf.subarray(o+s.length);else{let a=s;o>0&&(this.emit("segment",this.buf.subarray(0,o)),this.buf=this.buf.subarray(o));let d=this.buf.indexOf(a.end,a.start.length);if(d!==-1)this.emit("segment",this.buf.subarray(a.start.length,d)),this.buf=this.buf.subarray(d+a.end.length);else return}}else return}})}};var Td=ti(Dd(),1);import*as kd from"path";var Ty=[Buffer.from(`
56
+ `),Buffer.from("lua_debug> ")],Iy=[Buffer.from(`
57
+ `),{start:Buffer.from([239,183,174]),end:Buffer.from([239,183,175])}],Ti=class extends ky{factorio;hasNativeDebug;constructor(e,t,r){super();let i={cwd:kd.dirname(e),env:Object.assign({},process.env,r,{SteamAppId:"427520"})};this.factorio=Dy(e,t,i),this.factorio.on("exit",(a,d)=>this.emit("exit",a,d)),new Er(this.factorio.stderr,Ty).on("segment",a=>{a.length===1&&a[0]===13||this.emit("stderr",a)}),new Er(this.factorio.stdout,Iy).on("segment",a=>{a.length===1&&a[0]===13||this.emit("stdout",a)})}writeStdin(e){return this.factorio.stdin.write(e)}kill(){if(this.hasNativeDebug)this.factorio.pid&&(0,Td.default)(this.factorio.pid);else{this.factorio.kill();try{this.factorio.kill("SIGKILL")}catch{}}}};import{Readable as Ay}from"stream";var Nn=class extends Ay{constructor(e){super(),this.push(e),this.push(null)}readUInt8(){return this.read(1).readUInt8()}readUInt16LE(){return this.read(2).readUInt16LE()}readUInt32LE(){return this.read(4).readUInt32LE()}readInt32LE(){return this.read(4).readInt32LE()}readBigInt64LE(){return this.read(8).readBigInt64LE()}readBigUInt64LE(){return this.read(8).readBigUInt64LE()}readDoubleLE(){return this.read(8).readDoubleLE()}readPackedUInt_8_32(){let e=this.readUInt8();return e===255&&(e=this.readUInt32LE()),e}readPackedUInt_16_32(){let e=this.readUInt16LE();return e===65535&&(e=this.readUInt32LE()),e}readString(e){return e===0?"":this.read(e).toString("utf8")}};import*as it from"fs/promises";import*as Ot from"path";import Vy from"node:http";import Wy from"node:https";import Bn from"node:zlib";import Xd,{PassThrough as Zd,pipeline as Un}from"node:stream";import{Buffer as qi}from"node:buffer";function Cy(n){if(!/^data:/i.test(n))throw new TypeError('`uri` does not appear to be a Data URI (must begin with "data:")');n=n.replace(/\r?\n/g,"");let e=n.indexOf(",");if(e===-1||e<=4)throw new TypeError("malformed data: URI");let t=n.substring(5,e).split(";"),r="",i=!1,o=t[0]||"text/plain",s=o;for(let h=1;h<t.length;h++)t[h]==="base64"?i=!0:t[h]&&(s+=`;${t[h]}`,t[h].indexOf("charset=")===0&&(r=t[h].substring(8)));!t[0]&&!r.length&&(s+=";charset=US-ASCII",r="US-ASCII");let a=i?"base64":"ascii",d=unescape(n.substring(e+1)),l=Buffer.from(d,a);return l.type=o,l.typeFull=s,l.charset=r,l}var Id=Cy;import Yt,{PassThrough as Od}from"node:stream";import{types as Md,deprecate as Hs,promisify as $y}from"node:util";import{Buffer as yt}from"node:buffer";var Vt=class extends Error{constructor(e,t){super(e),Error.captureStackTrace(this,this.constructor),this.type=t}get name(){return this.constructor.name}get[Symbol.toStringTag](){return this.constructor.name}};var nt=class extends Vt{constructor(e,t,r){super(e,t),r&&(this.code=this.errno=r.code,this.erroredSysCall=r.syscall)}};var Ii=Symbol.toStringTag,Ws=n=>typeof n=="object"&&typeof n.append=="function"&&typeof n.delete=="function"&&typeof n.get=="function"&&typeof n.getAll=="function"&&typeof n.has=="function"&&typeof n.set=="function"&&typeof n.sort=="function"&&n[Ii]==="URLSearchParams",Sr=n=>n&&typeof n=="object"&&typeof n.arrayBuffer=="function"&&typeof n.type=="string"&&typeof n.stream=="function"&&typeof n.constructor=="function"&&/^(Blob|File)$/.test(n[Ii]),Ad=n=>typeof n=="object"&&(n[Ii]==="AbortSignal"||n[Ii]==="EventTarget"),Cd=(n,e)=>{let t=new URL(e).hostname,r=new URL(n).hostname;return t===r||t.endsWith(`.${r}`)},$d=(n,e)=>{let t=new URL(e).protocol,r=new URL(n).protocol;return t===r};var Oy=$y(Yt.pipeline),rt=Symbol("Body internals"),$t=class{constructor(e,{size:t=0}={}){let r=null;e===null?e=null:Ws(e)?e=yt.from(e.toString()):Sr(e)||yt.isBuffer(e)||(Md.isAnyArrayBuffer(e)?e=yt.from(e):ArrayBuffer.isView(e)?e=yt.from(e.buffer,e.byteOffset,e.byteLength):e instanceof Yt||(e instanceof hr?(e=ml(e),r=e.type.split("=")[1]):e=yt.from(String(e))));let i=e;yt.isBuffer(e)?i=Yt.Readable.from(e):Sr(e)&&(i=Yt.Readable.from(e.stream())),this[rt]={body:e,stream:i,boundary:r,disturbed:!1,error:null},this.size=t,e instanceof Yt&&e.on("error",o=>{let s=o instanceof Vt?o:new nt(`Invalid response body while trying to fetch ${this.url}: ${o.message}`,"system",o);this[rt].error=s})}get body(){return this[rt].stream}get bodyUsed(){return this[rt].disturbed}async arrayBuffer(){let{buffer:e,byteOffset:t,byteLength:r}=await zs(this);return e.slice(t,t+r)}async formData(){let e=this.headers.get("content-type");if(e.startsWith("application/x-www-form-urlencoded")){let r=new hr,i=new URLSearchParams(await this.text());for(let[o,s]of i)r.append(o,s);return r}let{toFormData:t}=await import("./multipart-parser-3M5RC66T.js");return t(this.body,e)}async blob(){let e=this.headers&&this.headers.get("content-type")||this[rt].body&&this[rt].body.type||"",t=await this.arrayBuffer();return new Ko([t],{type:e})}async json(){let e=await this.text();return JSON.parse(e)}async text(){let e=await zs(this);return new TextDecoder().decode(e)}buffer(){return zs(this)}};$t.prototype.buffer=Hs($t.prototype.buffer,"Please use 'response.arrayBuffer()' instead of 'response.buffer()'","node-fetch#buffer");Object.defineProperties($t.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0},data:{get:Hs(()=>{},"data doesn't exist, use json(), text(), arrayBuffer(), or body instead","https://github.com/node-fetch/node-fetch/issues/1000 (response)")}});async function zs(n){if(n[rt].disturbed)throw new TypeError(`body used already for: ${n.url}`);if(n[rt].disturbed=!0,n[rt].error)throw n[rt].error;let{body:e}=n;if(e===null)return yt.alloc(0);if(!(e instanceof Yt))return yt.alloc(0);let t=[],r=0;try{for await(let i of e){if(n.size>0&&r+i.length>n.size){let o=new nt(`content size at ${n.url} over limit: ${n.size}`,"max-size");throw e.destroy(o),o}r+=i.length,t.push(i)}}catch(i){throw i instanceof Vt?i:new nt(`Invalid response body while trying to fetch ${n.url}: ${i.message}`,"system",i)}if(e.readableEnded===!0||e._readableState.ended===!0)try{return t.every(i=>typeof i=="string")?yt.from(t.join("")):yt.concat(t,r)}catch(i){throw new nt(`Could not create Buffer from response body for ${n.url}: ${i.message}`,"system",i)}else throw new nt(`Premature close of server response while trying to fetch ${n.url}`)}var Fn=(n,e)=>{let t,r,{body:i}=n[rt];if(n.bodyUsed)throw new Error("cannot clone body after it is used");return i instanceof Yt&&typeof i.getBoundary!="function"&&(t=new Od({highWaterMark:e}),r=new Od({highWaterMark:e}),i.pipe(t),i.pipe(r),n[rt].stream=t,i=r),i},My=Hs(n=>n.getBoundary(),"form-data doesn't follow the spec and requires special treatment. Use alternative package","https://github.com/node-fetch/node-fetch/issues/1167"),Ai=(n,e)=>n===null?null:typeof n=="string"?"text/plain;charset=UTF-8":Ws(n)?"application/x-www-form-urlencoded;charset=UTF-8":Sr(n)?n.type||null:yt.isBuffer(n)||Md.isAnyArrayBuffer(n)||ArrayBuffer.isView(n)?null:n instanceof hr?`multipart/form-data; boundary=${e[rt].boundary}`:n&&typeof n.getBoundary=="function"?`multipart/form-data;boundary=${My(n)}`:n instanceof Yt?null:"text/plain;charset=UTF-8",qd=n=>{let{body:e}=n[rt];return e===null?0:Sr(e)?e.size:yt.isBuffer(e)?e.length:e&&typeof e.getLengthSync=="function"&&e.hasKnownLength&&e.hasKnownLength()?e.getLengthSync():null},Nd=async(n,{body:e})=>{e===null?n.end():await Oy(e,n)};import{types as Fd}from"node:util";import $i from"node:http";var Ci=typeof $i.validateHeaderName=="function"?$i.validateHeaderName:n=>{if(!/^[\^`\-\w!#$%&'*+.|~]+$/.test(n)){let e=new TypeError(`Header name must be a valid HTTP token [${n}]`);throw Object.defineProperty(e,"code",{value:"ERR_INVALID_HTTP_TOKEN"}),e}},Ks=typeof $i.validateHeaderValue=="function"?$i.validateHeaderValue:(n,e)=>{if(/[^\t\u0020-\u007E\u0080-\u00FF]/.test(e)){let t=new TypeError(`Invalid character in header content ["${n}"]`);throw Object.defineProperty(t,"code",{value:"ERR_INVALID_CHAR"}),t}},pt=class n extends URLSearchParams{constructor(e){let t=[];if(e instanceof n){let r=e.raw();for(let[i,o]of Object.entries(r))t.push(...o.map(s=>[i,s]))}else if(e!=null)if(typeof e=="object"&&!Fd.isBoxedPrimitive(e)){let r=e[Symbol.iterator];if(r==null)t.push(...Object.entries(e));else{if(typeof r!="function")throw new TypeError("Header pairs must be iterable");t=[...e].map(i=>{if(typeof i!="object"||Fd.isBoxedPrimitive(i))throw new TypeError("Each header pair must be an iterable object");return[...i]}).map(i=>{if(i.length!==2)throw new TypeError("Each header pair must be a name/value tuple");return[...i]})}}else throw new TypeError("Failed to construct 'Headers': The provided value is not of type '(sequence<sequence<ByteString>> or record<ByteString, ByteString>)");return t=t.length>0?t.map(([r,i])=>(Ci(r),Ks(r,String(i)),[String(r).toLowerCase(),String(i)])):void 0,super(t),new Proxy(this,{get(r,i,o){switch(i){case"append":case"set":return(s,a)=>(Ci(s),Ks(s,String(a)),URLSearchParams.prototype[i].call(r,String(s).toLowerCase(),String(a)));case"delete":case"has":case"getAll":return s=>(Ci(s),URLSearchParams.prototype[i].call(r,String(s).toLowerCase()));case"keys":return()=>(r.sort(),new Set(URLSearchParams.prototype.keys.call(r)).keys());default:return Reflect.get(r,i,o)}}})}get[Symbol.toStringTag](){return this.constructor.name}toString(){return Object.prototype.toString.call(this)}get(e){let t=this.getAll(e);if(t.length===0)return null;let r=t.join(", ");return/^content-encoding$/i.test(e)&&(r=r.toLowerCase()),r}forEach(e,t=void 0){for(let r of this.keys())Reflect.apply(e,t,[this.get(r),r,this])}*values(){for(let e of this.keys())yield this.get(e)}*entries(){for(let e of this.keys())yield[e,this.get(e)]}[Symbol.iterator](){return this.entries()}raw(){return[...this.keys()].reduce((e,t)=>(e[t]=this.getAll(t),e),{})}[Symbol.for("nodejs.util.inspect.custom")](){return[...this.keys()].reduce((e,t)=>{let r=this.getAll(t);return t==="host"?e[t]=r[0]:e[t]=r.length>1?r:r[0],e},{})}};Object.defineProperties(pt.prototype,["get","entries","forEach","values"].reduce((n,e)=>(n[e]={enumerable:!0},n),{}));function jd(n=[]){return new pt(n.reduce((e,t,r,i)=>(r%2===0&&e.push(i.slice(r,r+2)),e),[]).filter(([e,t])=>{try{return Ci(e),Ks(e,String(t)),!0}catch{return!1}}))}var qy=new Set([301,302,303,307,308]),Oi=n=>qy.has(n);var Dt=Symbol("Response internals"),vt=class n extends $t{constructor(e=null,t={}){super(e,t);let r=t.status!=null?t.status:200,i=new pt(t.headers);if(e!==null&&!i.has("Content-Type")){let o=Ai(e,this);o&&i.append("Content-Type",o)}this[Dt]={type:"default",url:t.url,status:r,statusText:t.statusText||"",headers:i,counter:t.counter,highWaterMark:t.highWaterMark}}get type(){return this[Dt].type}get url(){return this[Dt].url||""}get status(){return this[Dt].status}get ok(){return this[Dt].status>=200&&this[Dt].status<300}get redirected(){return this[Dt].counter>0}get statusText(){return this[Dt].statusText}get headers(){return this[Dt].headers}get highWaterMark(){return this[Dt].highWaterMark}clone(){return new n(Fn(this,this.highWaterMark),{type:this.type,url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected,size:this.size,highWaterMark:this.highWaterMark})}static redirect(e,t=302){if(!Oi(t))throw new RangeError('Failed to execute "redirect" on "response": Invalid status code');return new n(null,{headers:{location:new URL(e).toString()},status:t})}static error(){let e=new n(null,{status:0,statusText:""});return e[Dt].type="error",e}static json(e=void 0,t={}){let r=JSON.stringify(e);if(r===void 0)throw new TypeError("data is not JSON serializable");let i=new pt(t&&t.headers);return i.has("content-type")||i.set("content-type","application/json"),new n(r,{...t,headers:i})}get[Symbol.toStringTag](){return"Response"}};Object.defineProperties(vt.prototype,{type:{enumerable:!0},url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});import{format as jy}from"node:url";import{deprecate as By}from"node:util";var Bd=n=>{if(n.search)return n.search;let e=n.href.length-1,t=n.hash||(n.href[e]==="#"?"#":"");return n.href[e-t.length]==="?"?"?":""};import{isIP as Ny}from"node:net";function Ud(n,e=!1){return n==null||(n=new URL(n),/^(about|blob|data):$/.test(n.protocol))?"no-referrer":(n.username="",n.password="",n.hash="",e&&(n.pathname="",n.search=""),n)}var Vd=new Set(["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"]),Wd="strict-origin-when-cross-origin";function zd(n){if(!Vd.has(n))throw new TypeError(`Invalid referrerPolicy: ${n}`);return n}function Fy(n){if(/^(http|ws)s:$/.test(n.protocol))return!0;let e=n.host.replace(/(^\[)|(]$)/g,""),t=Ny(e);return t===4&&/^127\./.test(e)||t===6&&/^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(e)?!0:n.host==="localhost"||n.host.endsWith(".localhost")?!1:n.protocol==="file:"}function jn(n){return/^about:(blank|srcdoc)$/.test(n)||n.protocol==="data:"||/^(blob|filesystem):$/.test(n.protocol)?!0:Fy(n)}function Hd(n,{referrerURLCallback:e,referrerOriginCallback:t}={}){if(n.referrer==="no-referrer"||n.referrerPolicy==="")return null;let r=n.referrerPolicy;if(n.referrer==="about:client")return"no-referrer";let i=n.referrer,o=Ud(i),s=Ud(i,!0);o.toString().length>4096&&(o=s),e&&(o=e(o)),t&&(s=t(s));let a=new URL(n.url);switch(r){case"no-referrer":return"no-referrer";case"origin":return s;case"unsafe-url":return o;case"strict-origin":return jn(o)&&!jn(a)?"no-referrer":s.toString();case"strict-origin-when-cross-origin":return o.origin===a.origin?o:jn(o)&&!jn(a)?"no-referrer":s;case"same-origin":return o.origin===a.origin?o:"no-referrer";case"origin-when-cross-origin":return o.origin===a.origin?o:s;case"no-referrer-when-downgrade":return jn(o)&&!jn(a)?"no-referrer":o;default:throw new TypeError(`Invalid referrerPolicy: ${r}`)}}function Kd(n){let e=(n.get("referrer-policy")||"").split(/[,\s]+/),t="";for(let r of e)r&&Vd.has(r)&&(t=r);return t}var je=Symbol("Request internals"),xr=n=>typeof n=="object"&&typeof n[je]=="object",Uy=By(()=>{},".data is not a valid RequestInit property, use .body instead","https://github.com/node-fetch/node-fetch/issues/1000 (request)"),wn=class n extends $t{constructor(e,t={}){let r;if(xr(e)?r=new URL(e.url):(r=new URL(e),e={}),r.username!==""||r.password!=="")throw new TypeError(`${r} is an url with embedded credentials.`);let i=t.method||e.method||"GET";if(/^(delete|get|head|options|post|put)$/i.test(i)&&(i=i.toUpperCase()),!xr(t)&&"data"in t&&Uy(),(t.body!=null||xr(e)&&e.body!==null)&&(i==="GET"||i==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let o=t.body?t.body:xr(e)&&e.body!==null?Fn(e):null;super(o,{size:t.size||e.size||0});let s=new pt(t.headers||e.headers||{});if(o!==null&&!s.has("Content-Type")){let l=Ai(o,this);l&&s.set("Content-Type",l)}let a=xr(e)?e.signal:null;if("signal"in t&&(a=t.signal),a!=null&&!Ad(a))throw new TypeError("Expected signal to be an instanceof AbortSignal or EventTarget");let d=t.referrer==null?e.referrer:t.referrer;if(d==="")d="no-referrer";else if(d){let l=new URL(d);d=/^about:(\/\/)?client$/.test(l)?"client":l}else d=void 0;this[je]={method:i,redirect:t.redirect||e.redirect||"follow",headers:s,parsedURL:r,signal:a,referrer:d},this.follow=t.follow===void 0?e.follow===void 0?20:e.follow:t.follow,this.compress=t.compress===void 0?e.compress===void 0?!0:e.compress:t.compress,this.counter=t.counter||e.counter||0,this.agent=t.agent||e.agent,this.highWaterMark=t.highWaterMark||e.highWaterMark||16384,this.insecureHTTPParser=t.insecureHTTPParser||e.insecureHTTPParser||!1,this.referrerPolicy=t.referrerPolicy||e.referrerPolicy||""}get method(){return this[je].method}get url(){return jy(this[je].parsedURL)}get headers(){return this[je].headers}get redirect(){return this[je].redirect}get signal(){return this[je].signal}get referrer(){if(this[je].referrer==="no-referrer")return"";if(this[je].referrer==="client")return"about:client";if(this[je].referrer)return this[je].referrer.toString()}get referrerPolicy(){return this[je].referrerPolicy}set referrerPolicy(e){this[je].referrerPolicy=zd(e)}clone(){return new n(this)}get[Symbol.toStringTag](){return"Request"}};Object.defineProperties(wn.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0},referrer:{enumerable:!0},referrerPolicy:{enumerable:!0}});var Gd=n=>{let{parsedURL:e}=n[je],t=new pt(n[je].headers);t.has("Accept")||t.set("Accept","*/*");let r=null;if(n.body===null&&/^(post|put)$/i.test(n.method)&&(r="0"),n.body!==null){let a=qd(n);typeof a=="number"&&!Number.isNaN(a)&&(r=String(a))}r&&t.set("Content-Length",r),n.referrerPolicy===""&&(n.referrerPolicy=Wd),n.referrer&&n.referrer!=="no-referrer"?n[je].referrer=Hd(n):n[je].referrer="no-referrer",n[je].referrer instanceof URL&&t.set("Referer",n.referrer),t.has("User-Agent")||t.set("User-Agent","node-fetch"),n.compress&&!t.has("Accept-Encoding")&&t.set("Accept-Encoding","gzip, deflate, br");let{agent:i}=n;typeof i=="function"&&(i=i(e));let o=Bd(e),s={path:e.pathname+o,method:n.method,headers:t[Symbol.for("nodejs.util.inspect.custom")](),insecureHTTPParser:n.insecureHTTPParser,agent:i};return{parsedURL:e,options:s}};var Mi=class extends Vt{constructor(e,t="aborted"){super(e,t)}};var zy=new Set(["data:","http:","https:"]);async function Vn(n,e){return new Promise((t,r)=>{let i=new wn(n,e),{parsedURL:o,options:s}=Gd(i);if(!zy.has(o.protocol))throw new TypeError(`node-fetch cannot load ${n}. URL scheme "${o.protocol.replace(/:$/,"")}" is not supported.`);if(o.protocol==="data:"){let L=Id(i.url),k=new vt(L,{headers:{"Content-Type":L.typeFull}});t(k);return}let a=(o.protocol==="https:"?Wy:Vy).request,{signal:d}=i,l=null,h=()=>{let L=new Mi("The operation was aborted.");r(L),i.body&&i.body instanceof Xd.Readable&&i.body.destroy(L),!(!l||!l.body)&&l.body.emit("error",L)};if(d&&d.aborted){h();return}let v=()=>{h(),_()},w=a(o.toString(),s);d&&d.addEventListener("abort",v);let _=()=>{w.abort(),d&&d.removeEventListener("abort",v)};w.on("error",L=>{r(new nt(`request to ${i.url} failed, reason: ${L.message}`,"system",L)),_()}),Hy(w,L=>{l&&l.body&&l.body.destroy(L)}),process.version<"v14"&&w.on("socket",L=>{let k;L.prependListener("end",()=>{k=L._eventsCount}),L.prependListener("close",X=>{if(l&&k<L._eventsCount&&!X){let fe=new Error("Premature close");fe.code="ERR_STREAM_PREMATURE_CLOSE",l.body.emit("error",fe)}})}),w.on("response",L=>{w.setTimeout(0);let k=jd(L.rawHeaders);if(Oi(L.statusCode)){let ae=k.get("Location"),Q=null;try{Q=ae===null?null:new URL(ae,i.url)}catch{if(i.redirect!=="manual"){r(new nt(`uri requested responds with an invalid redirect URL: ${ae}`,"invalid-redirect")),_();return}}switch(i.redirect){case"error":r(new nt(`uri requested responds with a redirect, redirect mode is set to error: ${i.url}`,"no-redirect")),_();return;case"manual":break;case"follow":{if(Q===null)break;if(i.counter>=i.follow){r(new nt(`maximum redirect reached at: ${i.url}`,"max-redirect")),_();return}let te={headers:new pt(i.headers),follow:i.follow,counter:i.counter+1,agent:i.agent,compress:i.compress,method:i.method,body:Fn(i),signal:i.signal,size:i.size,referrer:i.referrer,referrerPolicy:i.referrerPolicy};if(!Cd(i.url,Q)||!$d(i.url,Q))for(let Ae of["authorization","www-authenticate","cookie","cookie2"])te.headers.delete(Ae);if(L.statusCode!==303&&i.body&&e.body instanceof Xd.Readable){r(new nt("Cannot follow redirect with body being a readable stream","unsupported-redirect")),_();return}(L.statusCode===303||(L.statusCode===301||L.statusCode===302)&&i.method==="POST")&&(te.method="GET",te.body=void 0,te.headers.delete("content-length"));let _e=Kd(k);_e&&(te.referrerPolicy=_e),t(Vn(new wn(Q,te))),_();return}default:return r(new TypeError(`Redirect option '${i.redirect}' is not a valid value of RequestRedirect`))}}d&&L.once("end",()=>{d.removeEventListener("abort",v)});let X=Un(L,new Zd,ae=>{ae&&r(ae)});process.version<"v12.10"&&L.on("aborted",v);let fe={url:i.url,status:L.statusCode,statusText:L.statusMessage,headers:k,size:i.size,counter:i.counter,highWaterMark:i.highWaterMark},B=k.get("Content-Encoding");if(!i.compress||i.method==="HEAD"||B===null||L.statusCode===204||L.statusCode===304){l=new vt(X,fe),t(l);return}let ee={flush:Bn.Z_SYNC_FLUSH,finishFlush:Bn.Z_SYNC_FLUSH};if(B==="gzip"||B==="x-gzip"){X=Un(X,Bn.createGunzip(ee),ae=>{ae&&r(ae)}),l=new vt(X,fe),t(l);return}if(B==="deflate"||B==="x-deflate"){let ae=Un(L,new Zd,Q=>{Q&&r(Q)});ae.once("data",Q=>{(Q[0]&15)===8?X=Un(X,Bn.createInflate(),te=>{te&&r(te)}):X=Un(X,Bn.createInflateRaw(),te=>{te&&r(te)}),l=new vt(X,fe),t(l)}),ae.once("end",()=>{l||(l=new vt(X,fe),t(l))});return}if(B==="br"){X=Un(X,Bn.createBrotliDecompress(),ae=>{ae&&r(ae)}),l=new vt(X,fe),t(l);return}l=new vt(X,fe),t(l)}),Nd(w,i).catch(r)})}function Hy(n,e){let t=qi.from(`0\r
58
+ \r
59
+ `),r=!1,i=!1,o;n.on("response",s=>{let{headers:a}=s;r=a["transfer-encoding"]==="chunked"&&!a["content-length"]}),n.on("socket",s=>{let a=()=>{if(r&&!i){let l=new Error("Premature close");l.code="ERR_STREAM_PREMATURE_CLOSE",e(l)}},d=l=>{i=qi.compare(l.slice(-5),t)===0,!i&&o&&(i=qi.compare(o.slice(-3),t.slice(0,3))===0&&qi.compare(l.slice(-2),t.slice(3))===0),o=l};s.prependListener("close",a),s.on("data",d),n.on("close",()=>{s.removeListener("close",a),s.removeListener("data",d)})})}var Jd=ni("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");var Qd=ni("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k7BZ2CJsFbYJ24U9GGeEG4WzwjnhvHBBuEm4KNwsXBIuC1eEq8I14bpwB+ON8KPwVngnvBc+CD8JH4WfhU/CZ+GL8FX4JnwX/mCCEWEUwYrgRPAiBBEmEaIIswhJhCxCEaGK0EToIhzMZMQ0ismKyYnJiymIaRJTFNMspiSmLKYipiqmJqYupoOJRsRRRCuiE9GLGEScRIwiziImEbOIRcQqYhOxi3gwsxHzKGYrZidmL+Yg5knMUcyzmJOYs5iLmKuYm5i7mA8mGZFGkaxITiQvUhBpEimKNIuURMoiFZGqSE2kLtLBZCPyKLIV2YnsRQ4iTyJHkWeRk8hZ5CJyFbmJ3EU+mGJEGUWxojhRvChBlEmUKMosShIli1JEqaI0UbooB1ONqKOoVlQnqhc1iDqJGkWdRU2iZlGLqFXUJmoX9WCaEW0UzYrmRPOiBdEm0aJos2hJtCxaEa2K1kTroh1MN6KPolvRnehe9CD6JHoUfRY9iZ5FL6JX0ZvoXfSDWYxYRrFYsTixeLEEsUxiiWKZxZLEksVSxFLF0sTSxbLcffoXUEsHCPayQzc8AwAACQYAAFBLAQItAxQACAAIAASRa1klR+kxuwIAAHoIAAAkAAAAAAAAAAAAIAC2gQAAAABkZWJ1Z2FkYXB0ZXItdGVzdHNfMi4wLjcvY29udHJvbC5sdWFQSwECLQMUAAgACACwhLpajnqNvQUBAAAQAgAAIQAAAAAAAAAAACAAtoENAwAAZGVidWdhZGFwdGVyLXRlc3RzXzIuMC43L2RhdGEubHVhUEsBAi0DFAAIAAgAcHfVWnkQFQilAAAA7AAAACIAAAAAAAAAAAAgALaBYQQAAGRlYnVnYWRhcHRlci10ZXN0c18yLjAuNy9pbmZvLmpzb25QSwECLQMUAAgACAAlra1WUqj09c4AAAAwAQAAMgAAAAAAAAAAACAAtoFWBQAAZGVidWdhZGFwdGVyLXRlc3RzXzIuMC43L3NjZW5hcmlvcy9ydW4vY29udHJvbC5sdWFQSwECLQMUAAgACABpiTBWlI5GUD4AAAA+AAAAOAAAAAAAAAAAACAAtoGEBgAAZGVidWdhZGFwdGVyLXRlc3RzXzIuMC43L3NjZW5hcmlvcy90ZXJtaW5hdGUvY29udHJvbC5sdWFQSwECLQMUAAgACABNgopY9MHnEycBAAByBAAANAAAAAAAAAAAACAAtoEoBwAAZGVidWdhZGFwdGVyLXRlc3RzXzIuMC43L3NjZW5hcmlvcy90aHJvdy9jb250cm9sLmx1YVBLAQItAxQACAAIAA8TfVf2skM3PAMAAAkGAAAlAAAAAAAAAAAAIAC2gbEIAABkZWJ1Z2FkYXB0ZXItdGVzdHNfMi4wLjcvc2V0dGluZ3MubHVhUEsFBgAAAAAHAAcAbAIAAEAMAAAAAA==");var Xy={debugadapter:{version:_n,zip:Jd},"debugadapter-tests":{version:_n,zip:Qd}};async function Zy(n,e){let t=await Vn(`https://mods.factorio.com/api/mods/${n}${e?"/full":""}`);if(!t.ok)throw new Error(t.statusText);return await t.json()}var Lr=class{constructor(e,t){this.modsPath=e;this.playerdataPath=t;this.Loaded=this.reload()}modList={mods:[]};Loaded;async reload(){let e=Ot.resolve(this.modsPath,"./mod-list.json");try{this.modList=JSON.parse(await it.readFile(e,"utf8"))}catch{this.modList={mods:[]}}}async write(){let e=Ot.resolve(this.modsPath,"./mod-list.json");return it.writeFile(e,JSON.stringify(this.modList,null,2),"utf8")}async getDownloadCredentials(e){let t=this.playerdataPath??Ot.resolve(this.modsPath,"../player-data.json"),r=t?await it.readFile(t,"utf8").then(a=>JSON.parse(a)).catch(()=>{}):void 0;if(r?.["service-token"])return{username:r["service-username"],token:r["service-token"]};let i=await e(r?.["service-username"]),o=await Vn("https://auth.factorio.com/api-login",{method:"POST",body:new URLSearchParams({username:i.username,password:i.password,api_version:"4",require_game_ownership:"true"})});if(!o.ok)throw new Error(o.statusText);let s=await o.json();return r&&(r["service-username"]=s.username,r["service-token"]=s.token,await it.writeFile(t,JSON.stringify(r,void 0,2))),s}async findInstallSource(e,t){if(t.origin!=="portal"){let a=Xy[e];if(a)return a;if(t.origin==="bundle")throw new Error(`No bundled package for ${e}`)}let r=await Zy(e),i=r.releases[r.releases.length-1],o=await this.getDownloadCredentials(t.credentialPrompt),s=await Vn(`https://mods.factorio.com/${i.download_url}?username=${o.username}&token=${o.token}`);if(!s.ok)throw new Error(s.statusText);return{version:i.version,zip:s.body}}async installMod(e,t){let r=await this.findInstallSource(e,t),i=r.version,o=this.modList.mods.find(h=>h.name===e),s=o?.enabled?o.version??!0:o?.enabled;async function a(h){let v=Ot.resolve(h,"info.json");try{let w=await it.readFile(v,"utf8");if(w){let _=JSON.parse(w);if(_.name===e&&_.version===i)return!0}}catch{}return!1}if(!t.force){if(await a(Ot.resolve(this.modsPath,e)))return this.set(e,i),{using:i,from:"folder",previous:s};if(await a(Ot.resolve(this.modsPath,`${e}_${i}`)))return this.set(e,i),{using:i,from:"versioned_folder",previous:s};try{return await it.access(Ot.resolve(this.modsPath,`${e}_${i}.zip`)),this.set(e,i),{using:i,from:"existing",previous:s}}catch{}}let d=it.writeFile(Ot.resolve(this.modsPath,`${e}_${i}.zip`),r.zip),l;if(!t.keepOld){let h=(await it.readdir(this.modsPath,"utf8")).filter(v=>v.startsWith(e)&&v.endsWith(".zip")&&v.substring(e.length,v.length-4).match(/^_[\d\.]+$/)&&v!==`${e}_${i}.zip`);h.length===1&&(await it.unlink(Ot.resolve(this.modsPath,h[0])),l=h[0].substring(e.length+1,h[0].length-4))}return this.set(e,i),await d,{using:i,from:"installed",previous:s,replaced:l}}set(e,t){let r=!!t,i=typeof t=="string"?t:void 0,o=this.modList.mods.find(s=>s.name===e);o?(o.enabled=r,o.version=i):this.modList.mods.push({name:e,enabled:r,version:i})}disableAll(){this.modList.mods.forEach(e=>e.enabled=!1)}};function Gs(n){if(n.readUInt8()!==0)return"";{let t=n.readPackedUInt_8_32();return n.readString(t)}}function Ni(n){let e=n.readUInt8();switch(n.readUInt8(),e){case 0:return{type:e};case 1:return{type:e,value:n.readUInt8()!==0};case 2:return{type:e,value:n.readDoubleLE()};case 3:return{type:e,value:Gs(n)};case 4:{let t=n.readUInt32LE(),r=[];for(let i=0;i<t;i++){Gs(n);let o=Ni(n);r.push(o)}return{type:e,value:r}}case 5:{let t=n.readUInt32LE(),r={};for(let i=0;i<t;i++){let o=Gs(n);if(!o)throw new Error("Missing key in PropertyTree Dictionary");let s=Ni(n);r[o]=s}return{type:e,value:r}}case 6:return{type:e,value:n.readBigInt64LE()};case 7:return{type:e,value:n.readBigUInt64LE()};default:throw new Error(`Invalid datatype in PropertyTree ${e}`)}}function Xs(n){if(!n)return Buffer.from([1]);let e=Buffer.from(n,"utf8"),t=Buffer.alloc(1);return e.length<255?t.writeUInt8(e.length):(t=Buffer.alloc(5),t.writeUInt8(255),t.writeUInt32LE(e.length,1)),Buffer.concat([Buffer.from([0]),t,e])}function en(n){return Buffer.from([n,0])}function Fi(n){switch(n.type){case 3:return Buffer.concat([en(3),Xs(n.value)]);case 1:return Buffer.concat([en(1),Buffer.from([n.value?1:0])]);case 2:{let e=Buffer.alloc(8);return e.writeDoubleLE(n.value),Buffer.concat([en(2),e])}case 6:{let e=Buffer.alloc(8);return e.writeBigInt64LE(n.value),Buffer.concat([en(6),e])}case 7:{let e=Buffer.alloc(8);return e.writeBigUInt64LE(n.value),Buffer.concat([en(7),e])}case 0:return en(0);case 4:{let e=Buffer.alloc(4);return e.writeUInt32LE(n.value.length),Buffer.concat([en(4),e,Buffer.concat(n.value.map(t=>Buffer.concat([Xs(""),Fi(t)])))])}case 5:{let e=[];for(let r in n.value)if(Object.prototype.hasOwnProperty.call(n.value,r)){let i=n.value[r];e.push(Buffer.concat([Xs(r),Fi(i)]))}let t=Buffer.alloc(4);return t.writeUInt32LE(e.length),Buffer.concat([en(5),t,Buffer.concat(e)])}default:throw new Error(`Invalid datatype in PropertyTree ${n.type}`)}}var Pn=class n{constructor(e,t,r,i,o){this.main=e;this.major=t;this.minor=r;this.patch=i;this.branch=o}static load(e){let t=e.readUInt16LE(0),r=e.readUInt16LE(2),i=e.readUInt16LE(4),o=e.readUInt16LE(6),s=e.readUInt8(8);return new n(t,r,i,o,s)}save(){let e=Buffer.alloc(9);return e.writeUInt16LE(this.main,0),e.writeUInt16LE(this.major,2),e.writeUInt16LE(this.minor,4),e.writeUInt16LE(this.patch,6),e.writeUInt8(this.branch,8),e}format(){return`${this.main}.${this.major}.${this.minor}-${this.patch}`}isBeyond(e,t,r,i){return this.main<e?!1:this.main>e||t===void 0?!0:this.major<t?!1:this.major>t||r===void 0?!0:this.minor<r?!1:this.minor>r||i===void 0?!0:this.patch<i?!1:(this.patch>i,!0)}};import Zs from"assert";var Yd=["startup","runtime-global","runtime-per-user"],ji=class{version;_settings;constructor(e){this.version=Pn.load(e.read(9));let t=Ni(e);Zs(t.type===5);let r={startup:{},"runtime-global":{},"runtime-per-user":{}};for(let i of Yd){let o=t.value[i];Zs(o.type===5);let s=r[i];for(let a in o.value){let d=o.value[a];Zs(d.type===5);let l=d.value.value;switch(l.type){case 3:s[a]={type:"string",value:l.value};break;case 2:s[a]={type:"number",value:l.value};break;case 6:s[a]={type:"int",value:l.value};break;case 1:s[a]={type:"bool",value:l.value};break;case 5:let h=l.value;if("r"in h&&h.r.type===2&&"g"in h&&h.g.type===2&&"b"in h&&h.b.type===2&&"a"in h&&h.a.type===2)s[a]={type:"color",value:{r:h.r.value,g:h.g.value,b:h.b.value,a:h.a.value}};else throw new Error(`Dictionary value in ModSettings Tree does not match any known structure at ${i} ${a}`);break;default:throw new Error(`Unexpected type in ModSettings Tree: ${l.type}`)}}}this._settings=r}get settings(){return this._settings}save(){let e={type:5,value:{}};for(let t of Yd){let r=this._settings[t],i={type:5,value:{}};e.value[t]=i;for(let o in r){let s=r[o];switch(s.type){case"string":i.value[o]={type:5,value:{value:{type:3,value:s.value}}};break;case"bool":i.value[o]={type:5,value:{value:{type:1,value:s.value}}};break;case"int":i.value[o]={type:5,value:{value:{type:6,value:s.value}}};break;case"number":i.value[o]={type:5,value:{value:{type:2,value:s.value}}};break;case"color":i.value[o]={type:5,value:{value:{type:5,value:{r:{type:2,value:s.value.r},g:{type:2,value:s.value.g},b:{type:2,value:s.value.b},a:{type:2,value:s.value.a}}}}};break;default:break}}}return Buffer.concat([this.version.save(),Fi(e)])}set(e,t,r){r===void 0?delete this._settings[e][t]:this._settings[e][t]=r}get(e,t){return this._settings[e][t]}*list(){for(let e in this._settings)for(let t in this._settings[e]){let r=this._settings[e][t];yield{scope:e,setting:t,value:r.value}}}};var Js=Buffer.from([27,76,117,97,82,0,1,4,8,4,8,0,25,147,13,10,26,10]);function Bi(n,e){let t=n.readBigUInt64LE(e);e+=8;let r;return t>0?(r=n.subarray(e,e+Number(t)-1),e+=Number(t)):r=Buffer.alloc(0,0),[r,e]}var Qs=class{constructor(e,t){this.raw=e;this.line=t}get Op(){return this.raw&63}get A(){return this.raw>>6&255}get B(){return this.raw>>23&511}get C(){return this.raw>>14&511}get Ax(){return this.raw>>6&67108863}get Bx(){return this.raw>>14&262143}get sBx(){return this.Bx-131071}},Ys=class{name;instack;idx;constructor(e,t){this.instack=e.readUInt8(t)!==0,this.idx=e.readUInt8(t+1)}},ea=class{name;start;end;dumpsize;constructor(e,t){let r;[r,t]=Bi(e,t),this.name=r.toString("utf8"),this.start=e.readUInt32LE(t),t+=4,this.end=e.readUInt32LE(t),t+=4,this.dumpsize=(r.length===0?8:8+r.length+1)+8}},Wn=class{constructor(e,t){this.type=e;this.value=t;switch(e){case 0:if(t!==void 0)throw new Error(`Invalid Lua Constant: ${e} ${t}`);break;case 1:if(typeof t!="boolean")throw new Error(`Invalid Lua Constant: ${e} ${t}`);break;case 3:if(typeof t!="number")throw new Error(`Invalid Lua Constant: ${e} ${t}`);break;case 4:if(!(t instanceof Buffer))throw new Error(`Invalid Lua Constant: ${e} ${t}`);break;default:throw new Error(`Invalid Lua Constant Type: ${e}`)}}get label(){switch(this.type){case 0:return"nil";case 1:case 3:return this.value.toString();case 4:return`"${this.value.toString("utf8")}"`;default:throw new Error(`Invalid Lua Constant Type: ${this.type} ${this.value}`)}}},Ui=class n{source;nparam;is_vararg;maxstack;locals=[];upvals=[];instruction_count;_instraw;_instlines;constants=[];inner_functions=[];firstline;lastline;nextbyte;constructor(e,t){if(t===void 0){if(!e.subarray(0,Js.length).equals(Js))throw new Error("Invalid Header");t=Js.length}this.firstline=e.readUInt32LE(t),t+=4,this.lastline=e.readUInt32LE(t),t+=4,this.nparam=e[t++],this.is_vararg=e[t++]!==0,this.maxstack=e[t++],this.instruction_count=e.readUInt32LE(t),t+=4,this._instraw=e.subarray(t,t+this.instruction_count*4),t+=this.instruction_count*4;let r=e.readUInt32LE(t);t+=4;for(let l=0;l<r;l++){let h=e[t++];switch(h){case 0:this.constants.push(new Wn(0));break;case 1:this.constants.push(new Wn(1,e[t++]!==0));break;case 3:this.constants.push(new Wn(3,e.readDoubleLE(t))),t+=8;break;case 4:let v;[v,t]=Bi(e,t),this.constants.push(new Wn(4,v));break;default:throw new Error(`Invalid Lua Constant Type: ${h}`)}}let i=e.readUInt32LE(t);t+=4;for(let l=0;l<i;l++){let h=new n(e,t);t=h.nextbyte,this.inner_functions.push(h)}let o=e.readUInt32LE(t);t+=4;for(let l=0;l<o;l++)this.upvals.push(new Ys(e,t)),t+=2;{let l;[l,t]=Bi(e,t),this.source=l.toString("utf8")}let s=e.readUInt32LE(t);if(t+=4,s!==this.instruction_count)throw new Error("line info count mismatch");this._instlines=e.subarray(t,t+this.instruction_count*4),t+=this.instruction_count*4;let a=e.readUInt32LE(t);t+=4;for(let l=0;l<a;l++){let h=new ea(e,t);t+=h.dumpsize,this.locals.push(h)}let d=e.readUInt32LE(t);t+=4;for(let l=0;l<d;l++){let h;[h,t]=Bi(e,t),this.upvals[l].name=h.toString("utf8")}this.nextbyte=t}_baseAddr;get baseAddr(){return this._baseAddr}rebase(e){let t=e;return this._baseAddr=t,t+=this.instruction_count,this.inner_functions.forEach(r=>{t=r.rebase(t)}),t}_instructions=[];instruction(e){if(e>this.instruction_count-1)return;let t=this._instructions[e];return t===void 0&&(t=new Qs(this._instraw.readUint32LE(e*4),this._instlines.readUint32LE(e*4)),this._instructions[e]=t),t}get lines(){let e=[];for(let t=0;t<this.instruction_count;t++)e[t]=this._instlines.readUInt32LE(t*4);return e}walk_functions(e){e(this),this.inner_functions.forEach(t=>t.walk_functions(e))}getFunctionAtStartLine(e){if(this.firstline===e)return this;if(this.firstline<e&&(this.lastline===0||this.lastline>e)&&this.inner_functions)for(let t=0;t<this.inner_functions.length;t++){let r=this.inner_functions[t].getFunctionAtStartLine(e);if(r)return r}}getInstructionsAtBase(e,t){if(!(t===0||!this._baseAddr)&&this._baseAddr<=e&&this._baseAddr+this.instruction_count>e){let r=e-this._baseAddr,i=[];r+t>this.instruction_count&&(t=this.instruction_count-r);for(let o=0;o<t;o++){let s=this.instruction(o+r);i.push({address:"0x"+(this._baseAddr+r+o).toString(16),instruction:this.getInstructionLabel(o+r),line:s.line,instructionBytes:s.raw.toString(16).padStart(8,"0"),symbol:o+r===0?this.source+":"+this.firstline:void 0})}return i}}getInstructionLabel(e){let t=this.instruction(e);if(!t)throw new Error("Invalid PC");let r=this.instruction(e+1);switch(t.Op){case 1:return`LOADK ${this.getRegisterLabel(e,t.A)} := ${this.constants[t.Bx].label}`;case 2:if(!r)throw new Error("Invalid PC");return`LOADKX ${this.getRegisterLabel(e,t.A)} := ${this.constants[r.Ax].label}`;case 3:return`LOADBOOL ${this.getRegisterLabel(e,t.A)} := ${t.B!==0}${t.C!==0?" pc++":""}`;case 4:return`LOADNIL ${this.getRegisterLabel(e,t.A)}...${this.getRegisterLabel(e,t.A+t.B)})`;case 5:return`GETUPVAL ${this.getRegisterLabel(e,t.A)} := ${this.getUpvalLabel(t.B)}`;case 6:return`GETTABUP ${this.getRegisterLabel(e,t.A)} := ${this.getUpvalLabel(t.B)}[${this.getRegisterOrConstantLabel(e,t.C)}]`;case 7:return`GETTABLE ${this.getRegisterLabel(e,t.A)} := ${this.getRegisterLabel(e,t.B)}[${this.getRegisterOrConstantLabel(e,t.C)}]`;case 8:return`SETTABUP ${this.getUpvalLabel(t.A)}[${this.getRegisterOrConstantLabel(e,t.B)}] := ${this.getRegisterOrConstantLabel(e,t.C)}`;case 9:return`SETUPVAL ${this.getUpvalLabel(t.B)} := ${this.getRegisterLabel(e,t.A)}`;case 10:return`SETTABLE ${this.getRegisterLabel(e,t.A)}[${this.getRegisterOrConstantLabel(e,t.B)}] := ${this.getRegisterOrConstantLabel(e,t.C)}`;case 11:{let a=t.B,d=this.fb2int(a),l=t.C,h=this.fb2int(l),v=a===d?`${d}`:`${a}->${d}`,w=l===h?`${h}`:`${l}->${h}`;return`NEWTABLE ${this.getRegisterLabel(e,t.A)} := {} size(${v},${w})`}case 12:return`SELF ${this.getRegisterLabel(e,t.A+1)} := ${this.getRegisterLabel(e,t.B)}; ${this.getRegisterLabel(e,t.A)} := ${this.getRegisterLabel(e,t.B)}[${this.getRegisterOrConstantLabel(e,t.C)}]`;case 13:return`ADD ${this.getRegisterLabel(e,t.A)} := ${this.getRegisterOrConstantLabel(e,t.B)} + ${this.getRegisterOrConstantLabel(e,t.C)}`;case 14:return`SUB ${this.getRegisterLabel(e,t.A)} := ${this.getRegisterOrConstantLabel(e,t.B)} - ${this.getRegisterOrConstantLabel(e,t.C)}`;case 15:return`MUL ${this.getRegisterLabel(e,t.A)} := ${this.getRegisterOrConstantLabel(e,t.B)} * ${this.getRegisterOrConstantLabel(e,t.C)}`;case 16:return`DIV ${this.getRegisterLabel(e,t.A)} := ${this.getRegisterOrConstantLabel(e,t.B)} / ${this.getRegisterOrConstantLabel(e,t.C)}`;case 17:return`MOD ${this.getRegisterLabel(e,t.A)} := ${this.getRegisterOrConstantLabel(e,t.B)} % ${this.getRegisterOrConstantLabel(e,t.C)}`;case 18:return`POW ${this.getRegisterLabel(e,t.A)} := ${this.getRegisterOrConstantLabel(e,t.B)} ^ ${this.getRegisterOrConstantLabel(e,t.C)}`;case 0:return`MOVE ${this.getRegisterLabel(e,t.A)} := ${this.getRegisterLabel(e,t.B)}`;case 19:return`UNM ${this.getRegisterLabel(e,t.A)} := -${this.getRegisterLabel(e,t.B)}`;case 20:return`NOT ${this.getRegisterLabel(e,t.A)} := not ${this.getRegisterLabel(e,t.B)}`;case 21:return`LEN ${this.getRegisterLabel(e,t.A)} := length of ${this.getRegisterLabel(e,t.B)}`;case 22:return`CONCAT ${this.getRegisterLabel(e,t.A)} := ${this.getRegisterLabel(e,t.B)}.. ... ..${this.getRegisterLabel(e,t.C)}`;case 23:return`JMP pc+=${t.sBx}${t.A?`; close >= ${t.A-1}`:""}`;case 24:return`EQ if(${this.getRegisterOrConstantLabel(e,t.B)} ${t.A?"~=":"=="} ${this.getRegisterOrConstantLabel(e,t.B)}) then pc++`;case 25:return`LT if(${this.getRegisterOrConstantLabel(e,t.B)} ${t.A?">=":"<"} ${this.getRegisterOrConstantLabel(e,t.B)}) then pc++`;case 26:return`LE if(${this.getRegisterOrConstantLabel(e,t.B)} ${t.A?">":"<="} ${this.getRegisterOrConstantLabel(e,t.B)}) then pc++`;case 27:return`TEST if ${t.C?"not ":""}${this.getRegisterLabel(e,t.A)} then pc++`;case 28:return`TESTSET if ${t.C?"":"not "}${this.getRegisterLabel(e,t.A)} then ${this.getRegisterLabel(e,t.A)} := ${this.getRegisterLabel(e,t.B)} else pc++`;case 29:return`CALL ${this.getRegisterLabel(e,t.A)}(${t.B?t.B-1:"var"} args ${t.C?t.C-1:"var"} returns)`;case 30:return`TAILCALL return ${this.getRegisterLabel(e,t.A)}(${t.B?t.B-1:"var"} args)`;case 31:return`RETURN return ${t.B?t.B-1:"var"} results ${t.B>1?`starting at ${this.getRegisterLabel(e,t.A)}`:""}`;case 32:return`FORLOOP ${this.getRegisterLabel(e,t.A)} += ${this.getRegisterLabel(e,t.A+2)}; if ${this.getRegisterLabel(e,t.A)} <= ${this.getRegisterLabel(e,t.A+1)} then { pc+=${t.sBx}; ${this.getRegisterLabel(e,t.A+3)} := ${this.getRegisterLabel(e,t.A)} }`;case 33:return`FORPREP ${this.getRegisterLabel(e,t.A)} -= ${this.getRegisterLabel(e,t.A+2)}; pc += ${t.sBx}`;case 34:return`TFORCALL ${this.getRegisterLabel(e,t.A+3)}...${this.getRegisterLabel(e,t.A+2+t.C)} := ${this.getRegisterLabel(e,t.A)}(${this.getRegisterLabel(e,t.A+1)},${this.getRegisterLabel(e,t.A+2)})`;case 35:return`TFORLOOP if ${this.getRegisterLabel(e,t.A+1)} ~= nil then { ${this.getRegisterLabel(e,t.A)} := ${this.getRegisterLabel(e,t.A+1)}; pc += ${t.sBx} }`;case 36:let i=t.C-1;if(!t.C){if(!r)throw new Error("Invalid PC");i=r.Ax-1}let o=50;return`SETLIST ${this.getRegisterLabel(e,t.A)}[${i*o+1}...${t.B?i*o+t.B:""}] := ${this.getRegisterLabel(e,t.A+1)}...${t.B?this.getRegisterLabel(e,t.A+t.B):"top"}`;case 37:let s=this.inner_functions[t.Bx];return`CLOSURE ${this.getRegisterLabel(e,t.A)} := closure(${s.source}:${s.firstline}-${s.lastline})`;case 38:return`VARARG ${this.getRegisterLabel(e,t.A)}...${t.B?this.getRegisterLabel(e,t.A+t.B-2):"top"}`;case 39:return"EXTRAARG";default:return`UNKNOWN OP(${t.Op}) A(${t.A}) B(${t.B}) C(${t.C})`}}fb2int(e){let t=e>>3&31;return t===0?e:(e&7)+8<<t-1}getRegisterOrConstantLabel(e,t){return t&256?this.constants[t&255].label:this.getRegisterLabel(e,t)}getUpvalLabel(e){return`Up(${this.upvals[e]?.name??e})`}getRegisterLabel(e,t){let r=0;for(let i=0;i<this.locals.length;i++){let o=this.locals[i];if(o.start<=e+1){if(o.end>=e+1){if(r===t)return`R(${o.name})`;r++}}else break}return`R(${t})`}};var Dr=class extends G.StoppedEvent{constructor(e,t,r){super(e,t,r),this.body.allThreadsStopped=!0}},ef=class extends G.LoggingDebugSession{constructor(t,r,i){super();this.activeVersion=t;this.fs=r;this.editorInterface=i;this.objectInfoChunks=wd(ki(this.activeVersion.docs.generate_debuginfo()),3500),this.setDebuggerLinesStartAt1(!0),this.setDebuggerColumnsStartAt1(!0),this.setDebuggerPathFormat("uri"),this.configDone=new Promise(o=>{this._configurationDone=o})}_configurationDone;configDone;nextBreakpointID=1;breakPoints=new Map;breakPointsChanged=new Set;exceptionFilters=new Set(["unhandled"]);_modules=new Map;_responses=new Map;_dumps=new Map;translations=new Map;buffers=new Map;nextRef=1;factorio;stdinQueue=[];launchArgs;inPrompt=0;pauseRequested=!1;workspaceModInfo=[];initializeRequest(t,r){t.body=t.body||{},t.body.supportsConditionalBreakpoints=!0,t.body.supportsHitConditionalBreakpoints=!0,t.body.supportsEvaluateForHovers=!0,t.body.exceptionBreakpointFilters=[{filter:"pcall",label:"Caught by pcall",default:!1},{filter:"xpcall",label:"Caught by xpcall",default:!1},{filter:"unhandled",label:"Unhandled Exceptions",default:!0}],t.body.supportsSetVariable=!0,t.body.supportsModulesRequest=!0,t.body.supportsLogPoints=!0,t.body.supportsConfigurationDoneRequest=!0,t.body.supportsLoadedSourcesRequest=!0,t.body.supportsBreakpointLocationsRequest=!0,t.body.supportsDisassembleRequest=!0,t.body.supportsSteppingGranularity=!0,t.body.supportsInstructionBreakpoints=!1,this.sendResponse(t)}configurationDoneRequest(t,r){super.configurationDoneRequest(t,r),this._configurationDone?.()}terminateRequest(t,r){this.sendResponse(t),this.terminate()}disconnectRequest(t,r){this.sendResponse(t),this.terminate()}checkFactorioArgs(t){let r=t.factorioArgs;if(r){if(r.includes("--config"))return this.sendEvent(new G.OutputEvent(`Factorio --config option is set by configPath and should not be included in factorioArgs
60
+ `,"console")),!1;if(r.includes("--mod-directory"))return this.sendEvent(new G.OutputEvent(`Factorio --mod-directory option is set by modsPath and should not be included in factorioArgs
61
+ `,"console")),!1}return!0}async resolveModsPath(t){let r;if(t.modsPath){r="launch";let i=Wt.posix.normalize(t.modsPath);i.match(/^~[\\\/]/)&&(i=Wt.posix.join(Rn.homedir().replace(/\\/g,"/"),i.replace(/^~[\\\/]/,""))),i.match(/[\\\/]$/)&&(i=i.replace(/[\\\/]+$/,""));try{await tf.access(i),t.modsPath=i}catch{return this.sendEvent(new G.OutputEvent(`modsPath specified in launch configuration does not exist
62
+ `,"console")),!1}}else{let i=await this.editorInterface.findWorkspaceFiles("**/mod-list.json");if(i.length===1)t.modsPath=Wt.dirname(i[0].fsPath),r="workspace";else{if(i.length>1)return this.sendEvent(new G.OutputEvent(`multiple mod-list.json in workspace, please specify one as modsPath
63
+ `,"console")),!1;r="config",t.modsPath=await this.activeVersion.defaultModsPath()}}if(Rn.platform()==="win32"&&t.modsPath.startsWith("/")&&(t.modsPath=t.modsPath.slice(1)),t.modsPath=t.modsPath.replace(/\\/g,"/"),this.sendEvent(new G.OutputEvent(`using modsPath ${t.modsPath} (${r})
64
+ `,"console")),r!=="config"){let i=t.modsPath;i.endsWith("/")||(i+="/"),t.factorioArgs.push("--mod-directory",i)}return!0}async setupMods(t){if(t.manageMod===!1)this.sendEvent(new G.OutputEvent(`automatic management of mods disabled
65
+ `,"console"));else{t.adjustMods||(t.adjustMods={}),t.allowDisableBaseMod||(t.adjustMods.base=!0);let r=new Lr(t.modsPath);await r.Loaded,t.disableExtraMods&&r.disableAll();for(let i in t.adjustMods)if(t.adjustMods.hasOwnProperty(i)){let o=t.adjustMods[i];r.set(i,o)}if(t.noDebug)r.set("debugadapter",!1);else{r.set("coverage",!1),r.set("profiler",!1);let i=await r.installMod("debugadapter",{origin:"bundle"});this.sendEvent(new G.OutputEvent(`package install debugadapter ${JSON.stringify(i)}
66
+ `,"console"))}await r.write(),this.sendEvent(new G.OutputEvent(`debugadapter ${t.noDebug?"disabled":"enabled"} in mod-list.json
67
+ `,"console"))}}async launchRequest(t,r){if(G.logger.setup(r.trace?G.Logger.LogLevel.Verbose:G.Logger.LogLevel.Stop,Wt.join(Rn.tmpdir(),"fmtk.log"),!0),this.launchArgs=r,r.hookSettings=r.hookSettings??!1,r.hookData=r.hookData??!1,r.hookControl=r.hookControl??!0,r.hookMode=r.hookMode??"debug",r.trace=r.trace??!1,r.factorioArgs=r.factorioArgs||[],r.env&&Object.keys(r.env).length>0&&this.sendEvent(new G.OutputEvent(`using custom environment variables: ${JSON.stringify(r.env)}
68
+ `,"console")),!this.checkFactorioArgs(r)){this.sendEvent(new G.TerminatedEvent),this.sendErrorResponse(t,1),this._isRunningInline()||process.exit(1);return}if(!await this.resolveModsPath(r)){this.sendEvent(new G.TerminatedEvent),this.sendErrorResponse(t,1),this._isRunningInline()||process.exit(1);return}try{await this.setupMods(r)}catch(v){this.sendEvent(new G.OutputEvent(`Error setting up mods: ${v}
69
+ `,"console")),this.sendEvent(new G.TerminatedEvent),this.sendErrorResponse(t,1),this._isRunningInline()||process.exit(1);return}let i=await this.editorInterface.findWorkspaceFiles("**/info.json");if(await Promise.all(i.map(v=>this.updateInfoJson(v))),r.noDebug||((r.useInstrumentMode??!0)&&r.factorioArgs.push("--instrument-mod","debugadapter"),r.factorioArgs.push("--enable-unsafe-lua-debug-api"),(r.checkPrototypes??!0)&&!r.factorioArgs.includes("--check-unused-prototype-data")&&r.factorioArgs.push("--check-unused-prototype-data")),this.activeVersion.configPathIsOverriden()&&r.factorioArgs.push("--config",await this.activeVersion.configPath()),r.adjustModSettings){let v=Lt.joinPath(tt.file(r.modsPath),"mod-settings.dat"),w=new ji(new Nn(await this.fs.readFile(v)));for(let _ of r.adjustModSettings)if(_.value===void 0)w.set(_.scope,_.name);else switch(typeof _.value){case"string":w.set(_.scope,_.name,{type:"string",value:_.value});break;case"number":w.set(_.scope,_.name,{type:"number",value:_.value});break;case"boolean":w.set(_.scope,_.name,{type:"bool",value:_.value});break}await this.fs.writeFile(v,w.save())}this.factorio=new Ti(this.activeVersion.factorioPath,r.factorioArgs,r.env),this.factorio.on("exit",(v,w)=>{v&&this.sendEvent(new G.Event("exited",{exitCode:v})),this.sendEvent(new G.TerminatedEvent)});let o,s=new Promise(v=>{o=v});this.factorio.on("stderr",v=>{let w=v.toString();w&&this.sendEvent(new G.OutputEvent(w+`
70
+ `,"stderr"))});let a=(v,w)=>{switch(typeof w){case"string":switch(w.charCodeAt(0)){case 64976:return Wt.basename(w.slice(1));case 64977:return this.convertDebuggerPathToClient(w.slice(1));case 64978:return this.convertDebuggerLineToClient(Number.parseInt(w.slice(1)));case 64980:{let _=Number.parseInt(w.slice(1));return this.translations.get(_)??`{Missing Translation ID ${_}}`}case 64981:{let _=Number.parseInt(w.slice(1));return this.buffers.get(_)??`{Missing Buffer ID ${_}}`}}}return w},d=v=>{let w=v.indexOf(1,3),_=Number.parseInt(v.subarray(3,w).toString().trim()),L=v.subarray(w+1),k=[],X=L.indexOf(239);for(;X>=0;){if(L[X+1]>=160&&L[X+1]<=163&&L[X+2]>=128&&L[X+2]<=191){let B=L.subarray(X,X+4).toString("utf8").charCodeAt(0)-63488;k.push(L.subarray(0,X),Buffer.from([B])),L=L.subarray(X+3)}else k.push(L.subarray(0,X+1)),L=L.subarray(X+1);X=L.indexOf(239)}k.push(L);let fe=Buffer.concat(k);this.buffers.set(_,fe)},l=async v=>{if(v[2]===151){d(v);return}let w=v.toString();switch(w.charCodeAt(0)){case 64976:switch(this.inPrompt++,w.charCodeAt(1)){case 57344:await s,this.clearQueuedStdin(),this.launchArgs.hookMode==="profile"?this.continueRequire(!1,"#settings"):this.continueRequire(this.launchArgs.hookSettings??!1,"#settings");return;case 57345:this.clearQueuedStdin(),this.launchArgs.hookMode==="profile"?this.continueRequire(!1,"#data"):this.continueRequire(this.launchArgs.hookData??!1,"#data");return;case 57346:{let _=w.slice(2).trim();this.clearQueuedStdin();let L=this.launchArgs.hookControl??!0,k=_==="debugadapter"?Array.isArray(L)&&L.includes(_):L!==!1&&(L===!0||L.includes(_));this.launchArgs.hookMode==="profile"?this.continueProfile(k):this.launchArgs.hookMode==="profile2"?this.continueProfile(k,2):this.continueRequire(k,_);return}case 57347:{let _=this.launchArgs.hookControl??!0,L=Array.isArray(_)&&_.includes("debugadapter")||_===!1;this.launchArgs.hookMode==="profile"?this.continueProfile(!L):this.launchArgs.hookMode==="profile2"?this.continueProfile(!L,2):this.continueRequire(!1,"debugadapter");return}case 57348:this.sendClassData(),this.writeStdin("cont"),this.inPrompt--;return;case 57349:this.allocateRefBlock(),this.continue();return;case 57351:await this.configDone;case 57352:this.clearQueuedStdin(),this.allocateRefBlock(),this.continue(!0);return;case 57350:case 57353:case 57354:await this.runQueuedStdin(),this.continue(!0);return;case 57356:await this.terminate();return;case 57360:await this.terminate(!0);return;default:return}case 64977:{this.inPrompt++;let _=JSON.parse(w.slice(1),a);switch(_.event){case"source":let L=_.body.source;this.breakPoints.has(L.sourceReference??L.name)&&this.loadedSourceEvent(_.body),this.continue();return;case"running":await this.runQueuedStdin(),this.pauseRequested?(this.pauseRequested=!1,this.breakPointsChanged.size!==0&&this.updateBreakpoints(),this.sendEvent(new Dr("pause",_.body.threadId))):this.continue();return;case"exception":await this.runQueuedStdin(),_.body.filter==="manual"||this.exceptionFilters.has(_.body.filter)?this.sendEvent(new Dr("exception",_.body.threadId,_.body.mesg)):this.continue();return;case"stopped":await this.runQueuedStdin(),this.breakPointsChanged.size!==0&&this.updateBreakpoints(),this.sendEvent(new Dr(_.body.reason,_.body.threadId));return;default:return}}case 64980:{let _=w.indexOf(""),L=Number.parseInt(w.slice(1,_).trim()),k=w.slice(_+1);this.translations.set(L,k);return}case 64981:{let _=JSON.parse(w.slice(1),a);switch(_.event){case"modules":await this.updateModules(_.body),o(),this.sendEvent(new G.InitializedEvent);return;case"output":{let L=_;L.body.output.endsWith(`
71
+ `)||(L.body.output+=`
72
+ `),this.sendEvent(L);return}default:return}}case 64982:{let _=JSON.parse(w.slice(1),a);this._responses.get(_.seq)(_.body),this._responses.delete(_.seq);return}case 64984:{this.sendEvent(new G.InvalidatedEvent);return}}},h=v=>{switch(v.toString("utf8").charCodeAt(0)){case 64992:case 64993:case 64994:case 64995:return}};this.factorio.on("stdout",v=>{if(v[0]===239&&v[1]===183)switch(v[2]){case 144:case 145:case 148:case 149:case 150:case 151:case 152:l(v);return;case 160:case 161:case 162:case 163:h(v);return;case 173:this.sendEvent(new G.Event("x-Factorio-Profile",v.toString().slice(1)));return}v.toString()&&this.sendEvent(new G.OutputEvent(v.toString()+`
73
+ `,"stdout"))}),this.sendResponse(t)}allocateRefBlock(){let t=this.nextRef;this.nextRef+=4096,this.writeStdin(`__DebugAdapter.__dap.transferRef(${t})`)}convertClientPathToDebugger(t){if(t=tt.parse(super.convertClientPathToDebugger(t)).toString(),t.startsWith("output:"))return t;let r;return this._modules.forEach(i=>{i.symbolFilePath&&t.startsWith(i.symbolFilePath)&&i.symbolFilePath.length>(r?.symbolFilePath||"").length&&(r=i)}),r?.name==="#user"&&t.startsWith(r.symbolFilePath+"/mods")&&(r=void 0),r?t.replace(r.symbolFilePath,"@__"+r.name+"__"):t}convertDebuggerPathToClient(t){let r=t.match(/^@__(.*?)__\/(.*)$/);if(r){let i=this._modules.get(r[1]);if(i?.symbolFilePath)return super.convertDebuggerPathToClient(Lt.joinPath(tt.parse(i.symbolFilePath),r[2]).toString())}return t}customRequest(t,r,i,o){switch(t){case"x-Factorio-ConvertPath":r.body=this.convertDebuggerPathToClient(i.path);break;case"modules":return this.modulesRequest(r,i);default:r.success=!1,r.message="Unknown request";break}this.sendResponse(r)}setBreakPointsRequest(t,r){let i;if(r.source.path){let d=r.source.path;i=this.convertClientPathToDebugger(d)}else i=`&ref ${r.source.sourceReference}`;let o=this.lines_by_source.get(r.source.sourceReference??i),s=this.breakPoints.get(i)??[],a=(r.breakpoints??[]).map(d=>{d.line=this.convertClientLineToDebugger(d.line);let l=s.find(v=>d.line===v.line&&d.column===v.column);if(l)return l.condition=d.condition,l.hitCondition=d.hitCondition,l.logMessage=d.logMessage,l;let h=!1;if(o){let v=0;for(let w of o){if(w>=d.line){d.line=w,h=!0;break}w>v&&(v=w)}!h&&v>0&&(d.line=v,h=!0)}return Object.assign(d,{id:this.nextBreakpointID++,verified:h})});this.breakPoints.set(i,a),this.breakPointsChanged.add(i),t.body={breakpoints:a},this.sendResponse(t)}revalidateBreakpoints(t){let r=typeof t=="number"?`&ref ${t}`:t,i=this.breakPoints.get(r);if(!i)return;this.breakPointsChanged.add(r);let o=this.lines_by_source.get(t);for(let s of i){let a=0;for(let d of o){if(d>=s.line){s.line=d,s.verified=!0,this.sendEvent(new G.BreakpointEvent("changed",s));break}d>a&&(a=d)}!s.verified&&a>0&&(s.line=a,s.verified=!0,this.sendEvent(new G.BreakpointEvent("changed",s)))}}async threadsRequest(t){this.inPrompt>0?(t.body=await new Promise(r=>{this._responses.set(t.request_seq,r),this.writeStdin(`__DebugAdapter.__dap.threads(${t.request_seq})
74
+ `)}),this.sendResponse(t)):(t.body={threads:[{id:1,name:"thread"}]},this.sendResponse(t))}async stackTraceRequest(t,r){let i=typeof r.startFrame=="number"?r.startFrame:0,o=await new Promise(s=>{this._responses.set(t.request_seq,s),this.writeStdin(`__DebugAdapter.__dap.stackTrace(${r.threadId},${i},${t.request_seq})
75
+ `)});t.body={stackFrames:o.map(s=>{if(s&&s.source){s.source.path&&(s.source.path=this.convertDebuggerPathToClient(s.source.path));let a=s.source.sourceReference??s.source.name;if(a){let d=this.dumps_by_source.get(a)?.get(s.linedefined);d&&d.baseAddr&&(s.instructionPointerReference="0x"+(d.baseAddr+s.currentpc).toString(16))}}return s})},this.sendResponse(t)}modulesRequest(t,r){let i=Array.from(this._modules.values());t.body={modules:i},this.sendResponse(t)}async scopesRequest(t,r){let i=new Promise(o=>{this._responses.set(t.request_seq,o),this.writeStdin(`__DebugAdapter.__dap.scopes(${r.frameId}, ${t.request_seq})
76
+ `)});t.body={scopes:await i},this.sendResponse(t)}async variablesRequest(t,r,i){let o,s=new Promise(l=>o=l),a=new AbortController,d=await Promise.race([new Promise(async l=>{this._responses.set(t.request_seq,l),await this.writeOrQueueStdin(`__DebugAdapter.__dap.variables(${r.variablesReference},${t.request_seq},${r.filter?`"${r.filter}"`:"nil"},${r.start||"nil"},${r.count||"nil"})
77
+ `,s,a.signal)||(this._responses.delete(t.request_seq),o(),l([{name:"",value:`Expired variablesReference ref=${r.variablesReference} seq=${t.request_seq}`,type:"error",variablesReference:0}]))}),new Promise(l=>{setTimeout(()=>{a.abort(),l([{name:"",value:`No Lua State Available ref=${r.variablesReference} seq=${t.request_seq}`,type:"error",variablesReference:0}])},this.launchArgs.runningTimeout??2e3)})]);o(),t.body={variables:d},d.length===1&&d[0].type==="error"&&(t.success=!1,t.message=d[0].value),this.sendResponse(t)}async setVariableRequest(t,r,i){let o=await new Promise(s=>{this._responses.set(t.request_seq,s),this.writeStdin(`__DebugAdapter.__dap.setVariable(${r.variablesReference},${vn(Buffer.from(r.name))},${vn(Buffer.from(r.value))},${t.request_seq})
78
+ `)});o.type==="error"?(t.success=!1,t.message=o.value):t.body=o,this.sendResponse(t)}async evaluateRequest(t,r,i){let o,s=new Promise(_=>o=_),a=new AbortController,d=r.expression.match(/^__(.+?)__ (.*)$/),l;d&&(l=d[1],r.expression=d[2]);let h=l?vn(Buffer.from(l)):r.frameId?r.frameId:"nil",v=vn(Buffer.from(r.expression.replace(/\n/g," "))),w=await Promise.race([new Promise(async _=>{this._responses.set(t.request_seq,_),await this.writeOrQueueStdin(`__DebugAdapter.__dap.evaluate(${h},"${r.context}",${v},${t.request_seq})
79
+ `,s,a.signal)||(this._responses.delete(t.request_seq),o(),_({result:`Expired evaluate seq=${t.request_seq}`,type:"error",variablesReference:0}))}),new Promise(_=>{setTimeout(()=>{a.abort(),_({result:`No Lua State Available seq=${t.request_seq}`,type:"error",variablesReference:0})},this.launchArgs.runningTimeout??2e3)})]);if(o(),w.type==="error"&&(t.success=!1,t.message=w.result),t.body=w,w.timer){let _=w.timer.replace(/^.*: /,"");w.result+=`
80
+ \u23F1\uFE0F `+_}this.sendResponse(t)}continueRequest(t,r){this.writeStdin("__DebugAdapter.__dap.step_enabled(false)"),this.continue(),this.sendResponse(t)}pauseRequest(t,r,i){this.pauseRequested=!0,this.sendResponse(t)}step(t="in",r="statement"){let i={in:-1,over:0,out:1};this.breakPointsChanged.size!==0&&this.updateBreakpoints(),this.writeStdin("__DebugAdapter.__dap.step_enabled(true)"),this.writeStdin(`__DebugAdapter.__dap.step(${i[t]},${r==="instruction"})`),this.writeStdin("cont"),this.inPrompt--}nextRequest(t,r){this.step("over",r.granularity),this.sendResponse(t)}stepInRequest(t,r){this.step("in",r.granularity),this.sendResponse(t)}stepOutRequest(t,r){this.step("out",r.granularity),this.sendResponse(t)}setExceptionBreakPointsRequest(t,r,i){this.exceptionFilters.clear(),r.filters.forEach(o=>this.exceptionFilters.add(o)),this.sendResponse(t)}nextdump=1;dumps_by_source=new Map;dumps_by_address=[];lines_by_source=new Map;loadedSources=[];loadedSourceEvent(t){let r=t.source;if(t.dump){let i=r.sourceReference??r.name,o=new Ui(t.dump);this.nextdump=o.rebase(this.nextdump);let s=new Set,a=new Map;o.walk_functions(d=>{if(d.baseAddr){let l=this.dumps_by_address.findIndex(h=>d.baseAddr<h.baseAddr);l===-1?this.dumps_by_address.push(d):this.dumps_by_address.splice(l,0,d)}a.set(d.firstline,d),d.lines.forEach(l=>s.add(l))}),this.dumps_by_source.set(i,a),this.lines_by_source.set(i,Array.from(s).sort((d,l)=>d-l)),this.revalidateBreakpoints(i)}this.loadedSources.push(r),this.sendEvent(new G.LoadedSourceEvent("new",r))}disassembleRequest(t,r,i){let o=parseInt(r.memoryReference),s=[];t.body={instructions:s};let a=o+(r.instructionOffset??0),d=r.instructionCount;for(;a<1;)s.push({address:"0x"+a.toString(16),instruction:"<no instruction>"}),a++,d--;let l=this.dumps_by_address.findIndex(h=>h.baseAddr&&h.baseAddr<a&&h.baseAddr+h.instruction_count>=a);do{let v=this.dumps_by_address[l].getInstructionsAtBase(a,d);v&&(s.push(...v),d-=v.length,a+=v.length),l++}while(d>0&&a<this.nextdump&&l<this.dumps_by_address.length);for(;d>0;)s.push({address:"0x"+a.toString(16),instruction:"<no instruction>"}),d--;this.nextdump+=d,this.sendResponse(t)}breakpointLocationsRequest(t,r,i){let o=r.source.sourceReference??r.source.path;if(o){typeof o=="string"&&(o=this.convertClientPathToDebugger(o));let s=this.lines_by_source?.get(o);s&&(t.body={breakpoints:s.map(a=>({line:a})).filter(a=>a.line>=r.line&&a.line<=(r.endLine??r.line))})}this.sendResponse(t)}loadedSourcesRequest(t,r,i){t.body={sources:this.loadedSources},this.sendResponse(t)}async sourceRequest(t,r){let i=r.source?.sourceReference;if(i){let o,s=new Promise(l=>o=l),a=new AbortController,d=await Promise.race([new Promise(async l=>{this._responses.set(t.request_seq,l),await this.writeOrQueueStdin(`__DebugAdapter.__dap.source(${i},${t.request_seq})
81
+ `,s,a.signal)||(this._dumps.delete(i),o(),l(`Expired source ref=${i}`))}),new Promise(l=>{setTimeout(()=>{a.abort(),l(`No Lua State Available ref=${i} seq=${t.request_seq}`)},this.launchArgs.runningTimeout??2e3)})]);o(),t.body={content:d??"Invalid Source ID"}}this.sendResponse(t)}async updateInfoJson(t){try{let r=t.path;Rn.platform()==="win32"&&r.startsWith("/")&&(r=r.slice(1));let i=Buffer.from(await this.fs.readFile(t)).toString("utf8");if(i){let o=JSON.parse(i);if(o){let s={uri:Lt.dirname(t),name:o.name,version:o.version,info:o};this.workspaceModInfo.push(s)}}}catch(r){this.sendEvent(new G.OutputEvent(`failed to read ${t} ${r}
82
+ `,"stderr"))}}objectInfoChunks;sendClassData(){for(let t of this.objectInfoChunks)this.writeStdin(Buffer.concat([Buffer.from("__DebugAdapter.loadObjectInfo("),vn(t),Buffer.from(")")]));this.writeStdin("__DebugAdapter.loadObjectInfo()")}writeStdin(t){if(this.inPrompt<=0){this.sendEvent(new G.OutputEvent(`!! Attempted to writeStdin "${t instanceof Buffer?`Buffer[${t.length}]`:t}" while not in a prompt
83
+ `,"console"));return}this.factorio?.writeStdin(Buffer.concat([t instanceof Buffer?t:Buffer.from(t),Buffer.from(`
84
+ `)]))}async writeOrQueueStdin(t,r,i){return this.inPrompt>0?(this.writeStdin(t),r&&await r,!0):new Promise(s=>this.stdinQueue.push({mesg:t,resolve:s,consumed:r,signal:i}))}async runQueuedStdin(){if(this.stdinQueue.length>0){for(let t of this.stdinQueue)t.signal?.aborted?t.resolve(!1):(this.writeStdin(t.mesg),t.resolve(!0),t.consumed&&await t.consumed);this.stdinQueue=[]}}clearQueuedStdin(){this.stdinQueue.length>0&&(this.stdinQueue.forEach(t=>{t.resolve(!1)}),this.stdinQueue=[])}continue(t){if(this.inPrompt<=0){this.sendEvent(new G.OutputEvent(`!! Attempted to continue while not in a prompt
85
+ `,"console"));return}(t||this.breakPointsChanged.size!==0)&&this.updateBreakpoints(t),this.writeStdin("cont"),this.inPrompt--}continueRequire(t,r){if(this.inPrompt<=0){this.sendEvent(new G.OutputEvent(`!! Attempted to continueRequire while not in a prompt
86
+ `,"console"));return}if(t){let i="";this.launchArgs.hookLog!==void 0&&(i+=`hooklog=${this.launchArgs.hookLog},`),this.launchArgs.keepOldLog!==void 0&&(i+=`keepoldlog=${this.launchArgs.keepOldLog},`),this.launchArgs.runningBreak!==void 0&&(i+=`runningBreak=${this.launchArgs.runningBreak},`),this.writeStdin(`__DebugAdapter={__config={${i}}}`)}this.writeStdin("cont"),this.inPrompt--}continueProfile(t,r){if(this.inPrompt<=0){this.sendEvent(new G.OutputEvent(`!! Attempted to continueProfile while not in a prompt
87
+ `,"console"));return}if(t){let i="";this.launchArgs.profileSlowStart!==void 0&&(i+=`slowStart=${this.launchArgs.profileSlowStart},`),this.launchArgs.profileUpdateRate!==void 0&&(i+=`updateRate=${this.launchArgs.profileUpdateRate},`),this.launchArgs.profileLines!==void 0&&(i+=`trackLines=${this.launchArgs.profileLines},`),this.launchArgs.profileFuncs!==void 0&&(i+=`trackFuncs=${this.launchArgs.profileFuncs},`),this.launchArgs.profileTree!==void 0&&(i+=`trackTree=${this.launchArgs.profileTree},`),this.writeStdin(`__Profiler${r||""}={${i}}`)}this.writeStdin("cont"),this.inPrompt--}async trydir(t,r){try{if((await this.fs.stat(t)).type&2){let o=JSON.parse(Buffer.from(await this.fs.readFile(Lt.joinPath(t,"info.json"))).toString("utf8"));if(o.name===r.name&&ta.eq(o.version,r.version,{loose:!0}))return r.symbolFilePath=t.toString(),r.symbolStatus="Loaded Mod Directory",this.sendEvent(new G.OutputEvent(`loaded ${r.name} ${r.version} from modspath ${r.symbolFilePath}
88
+ `,"console")),!0}}catch(i){return i.code!=="FileNotFound"&&i.code!=="ENOENT"&&this.sendEvent(new G.OutputEvent(`failed loading ${r.name} ${r.version} from modspath: ${i}
89
+ `,"console")),!1}return!1}async updateModules(t){let r=this.editorInterface.getExtension?.("slevesque.vscode-zipexplorer");r&&(await r.activate(),await this.editorInterface.executeCommand("zipexplorer.clear"));for(let i of t)try{if(this._modules.set(i.name,i),i.name==="#user"){i.symbolFilePath=tt.file(await this.activeVersion.writeDataPath()).toString(),i.symbolStatus="Loaded Write Data Directory",this.sendEvent(new G.OutputEvent(`loaded ${i.name} from config ${i.symbolFilePath}
90
+ `,"console"));continue}if(i.name==="level"){i.symbolStatus="No Symbols (Level)";continue}try{let s=Lt.joinPath(tt.file(await this.activeVersion.dataPath()),i.name);if(JSON.parse(Buffer.from(await this.fs.readFile(Lt.joinPath(s,"info.json"))).toString("utf8")).name===i.name){i.symbolFilePath=s.toString(),i.symbolStatus="Loaded Data Directory",this.sendEvent(new G.OutputEvent(`loaded ${i.name} from data ${i.symbolFilePath}
91
+ `,"console"));continue}}catch{}let o=this.workspaceModInfo.find(s=>s.name===i.name&&ta.eq(s.version,i.version,{loose:!0}));if(o){i.symbolFilePath=o.uri.toString(),i.symbolStatus="Loaded Workspace Directory",this.sendEvent(new G.OutputEvent(`loaded ${i.name} ${i.version} from workspace ${i.symbolFilePath}
92
+ `,"console"));continue}if(this.launchArgs.modsPath){let s=Lt.joinPath(tt.file(this.launchArgs.modsPath),i.name);if(await this.trydir(s,i)||(s=Lt.joinPath(tt.file(this.launchArgs.modsPath),i.name+"_"+i.version),await this.trydir(s,i)))continue;if(r){let a=Lt.joinPath(tt.file(this.launchArgs.modsPath),i.name+"_"+i.version+".zip"),d;try{d=await this.fs.stat(a)}catch(l){l.code!=="FileNotFound"&&this.sendEvent(new G.OutputEvent(`${l}
93
+ `,"stderr"))}if(d&&d.type&1)try{await this.editorInterface.executeCommand("zipexplorer.exploreZipFile",a);let l=Lt.joinPath(a,i.name+"_"+i.version).with({scheme:"zip"});i.symbolFilePath=l.toString(),i.symbolStatus="Loaded Zip",this.sendEvent(new G.OutputEvent(`loaded ${i.name} ${i.version} from mod zip ${a.toString()}
94
+ `,"console"));continue}catch(l){this.sendEvent(new G.OutputEvent(`failed loading ${i.name} ${i.version} from mod zip ${a.toString()}: ${l}
95
+ `,"console"))}}}i.symbolStatus="Unknown",this.sendEvent(new G.OutputEvent(`no source found for ${i.name} ${i.version}
96
+ `,"console"))}catch(o){i.symbolStatus="Error",this.sendEvent(new G.OutputEvent(`failed locating source for ${i.name} ${i.version}: ${o}
97
+ `,"console"))}this._modules.forEach(i=>{this.sendEvent(new G.ModuleEvent("new",i))})}updateBreakpoints(t=!1){let r=Array();this.breakPoints.forEach((i,o)=>{(t||this.breakPointsChanged.has(o))&&r.push(Buffer.concat([Buffer.from("__DebugAdapter.__dap.updateBreakpoints("),vn(Pd(o,i)),Buffer.from(`)
98
+ `)]))}),this.breakPointsChanged.clear(),this.writeStdin(Buffer.concat(r))}async terminate(t){this.factorio?.kill?.();let r=this.launchArgs?.modsPath;if(r)if(this.launchArgs.manageMod===!1)this.sendEvent(new G.OutputEvent(`automatic management of mods disabled by launch config
99
+ `,"console"));else try{let i=new Lr(r);await i.Loaded,i.set("debugadapter",!1),await i.write(),this.sendEvent(new G.OutputEvent(`debugadapter disabled in mod-list.json
100
+ `,"console"))}catch(i){this.sendEvent(new G.OutputEvent(`failed to disable debugadapter in mod-list.json:
101
+ ${i}
102
+ `,"console"))}this.sendEvent(new G.TerminatedEvent(t)),!this._isRunningInline()&&process.env.NODE_V8_COVERAGE&&process.exit()}};var tn={adjust:{table:{BlueprintEntity:{exact:!1}},class:{LuaLazyLoadedValue:{generic_params:["T"],generic_parent:"{get:fun():T}"},LuaCustomTable:{generic_params:["K","V"],generic_parent:"{[K]:V}",no_index:!0},LuaGuiElement:{index_key:{complex_type:"union",options:["string","uint"]},split_funcs:!0}}}};function Jy(n){return["and","break","do","else","elseif","end","false","for","function","goto","if","in","local","nil","not","or","repeat","return","then","true","until","while"].includes(n)?`${n}_`:n}function zn(n){return Jy(n.replace(/[^a-zA-Z0-9]/g,"_").replace(/^([0-9])/,"_$1"))}function na(n){return!!n.match(/^[a-zA-Z_][a-zA-Z_0-9]*$/)}async function on(n,e){if(!e)return;let t=await e;t&&n.write(`---${t.replace(/\n/g,`
103
+ ---`)}
104
+ `)}var zt=class{constructor(e,t,r="_"){this.name=e;this.app_version=t;this.meta=r}members;add(e){this.members||(this.members=[]),this.members.push(e)}async write(e){if(typeof this.meta=="string"&&e.write(`---@meta ${this.meta}
105
+ `),e.write(`
106
+ `),e.write(`--$Factorio ${this.app_version}
107
+ `),e.write(`--$Generator ${_n}
108
+ `),e.write(`--$Section ${this.name}
109
+ `),e.write(`-- This file is automatically generated. Edits will be overwritten without warning.
110
+ `),e.write(`
111
+ `),this.members)for(let t of this.members)await t.write(e)}},ce=class{constructor(e,t){this.name=e;this.generic_args=t}format(){return this.generic_args?`${this.name}<${this.generic_args.map(e=>e.format()).join(", ")}>`:this.name}},Mt=class{constructor(e){this.value=e}format(){switch(typeof this.value){case"string":return`"${this.value}"`;case"number":case"boolean":return this.value.toString();default:throw new Error("Invalid value")}}},Vi=class{constructor(e,t){this.key=e;this.value=t}format(){return`{[${this.key.format()}]:${this.value.format()}}`}},kr=class{constructor(e){this.member=e}format(){return`(${this.member.format()})[]`}},Wi=class{constructor(e){this.members=e}format(){return`{${this.members.map((e,t)=>`[${t+1}]:${e.format()}`).join(", ")}}`}},nn=class{constructor(e){this.members=e}format(){return this.members.map(e=>`(${e.format()})`).join("|")}},rn=class{constructor(e,t,r){this.name=e;this.type=t;this.description=r}async write(e){await on(e,this.description),e.write(`---@alias ${this.name} ${this.type.format()}
112
+
113
+ `)}},zi=class{constructor(e,t,r,i){this.name=e;this.type_name=t;this.fields=r;this.description=i}async write(e){await on(e,this.description),e.write(`---@enum ${this.type_name}
114
+ `),e.write(`${this.name}={
115
+ `);for(let t of this.fields)await t.write(e);e.write(`}
116
+ `)}},Hi=class{constructor(e,t,r,i){this.name=e;this.typename=t;this.description=r;this.value=i}async write(e){await on(e,this.description);let t=na(this.name)?this.name:`['${this.name}']`;e.write(`${t}=`),this.value?e.write(`${this.value.format()},
117
+ `):e.write(`#{} --[[@as ${this.typename.format()} ]],
118
+ `)}},wt=class{constructor(e){this.name=e}description;parents;generic_args;global_name;exact;operators;call_op;fields;functions;add(e){e instanceof Tr?(this.operators||(this.operators=[]),this.operators.push(e)):e instanceof Ht?(this.call_op||(this.call_op=[]),this.call_op.push(e)):e instanceof ze?(this.fields||(this.fields=[]),this.fields.push(e)):e instanceof Je&&(this.functions||(this.functions=[]),this.functions.push(e))}async write(e){if(e.write(`do
119
+ `),await on(e,this.description),e.write("---@class "),this.exact&&e.write("(exact) "),e.write(`${this.name}`),this.generic_args&&this.generic_args.length>0&&e.write(`<${this.generic_args.join(",")}>`),this.parents&&this.parents.length>0&&e.write(`:${this.parents.map(t=>t.format()).join(", ")}`),e.write(`
120
+ `),this.fields)for(let t of this.fields)await t.write(e);if(this.call_op)for(let t of this.call_op)await t.write(e);if(this.operators)for(let t of this.operators)await t.write(e);if(e.write(`${this.global_name??"local "+zn(this.name)}={
121
+ `),this.functions)for(let t of this.functions)await t.write(e);e.write(`}
122
+ end
123
+
124
+ `)}format(){if(this.description||this.parents||this.generic_args||this.global_name||this.functions||this.call_op)throw new Error("Can't inline table with unsupported features");return this.fields?`{${this.fields.map((e,t)=>typeof e.name=="string"?`${e.name}:${e.type.format()}`:`[${e.name.format()}]:${e.type.format()}`).join(", ")}}`:"{}"}},Tr=class{constructor(e,t,r){this.name=e;this.type=t;this.input_type=r}description;async write(e){await on(e,this.description),e.write(`---@operator ${this.name}`),this.input_type&&e.write(`(${this.input_type.format()})`),e.write(`:${this.type.format()}
125
+ `)}},ze=class{constructor(e,t,r,i){this.name=e;this.type=t;this.description=r;this.optional=i}async write(e){await on(e,this.description),e.write("---@field "),typeof this.name=="string"?e.write(this.name):e.write(`[${this.name.format()}]`),this.optional&&e.write("?"),e.write(` ${this.type.format()}
126
+ `)}},Ht=class{constructor(e,t,r){this.description=e;this.params=t;this.returns=r}async write(e){await on(e,this.description);let t="";this.params&&(t=this.params.map(i=>`${i.name}${i.optional?"?":""}:${i.type.format()}`).join(", "));let r="";this.returns&&(r=`:${this.returns.map(i=>i.type.format()).join(", ")}`),e.write(`---@overload fun(${t})${r}
127
+ `)}},Je=class{constructor(e,t,r,i){this.name=e;this.params=t;this.returns=r;this.description=i}overloads;nodiscard;add(e){this.overloads||(this.overloads=[]),this.overloads.push(e)}async write(e){if(await on(e,this.description),this.params)for(let t of this.params)await t.write(e);if(this.returns)for(let t of this.returns)await t.write(e);if(this.nodiscard&&e.write(`---@nodiscard
128
+ `),this.overloads)for(let t of this.overloads)await t.write(e);e.write(`${this.name} = function(`),this.params&&e.write(this.params.map(t=>t.name).join(", ")),e.write(`) end;
129
+ `)}format(){if((!this.params||this.params.length===0)&&!this.returns)return"function";let e="";this.params&&(e=this.params.map(r=>`${r.name}${r.optional?"?":""}:${r.type.format()}`).join(", "));let t="";return this.returns&&(t=`:${this.returns.map(r=>r.type.format()).join(", ")}`),`fun(${e})${t}`}},xe=class{constructor(e,t,r,i){this.name=e;this.type=t;this.description=r;this.optional=i}async write(e){e.write(`---@param ${this.name}${this.optional?"?":""} ${this.type.format()} ${await this.description??""}
130
+ `)}},Ki=class{constructor(e,t,r,i){this.type=e;this.name=t;this.description=r;this.optional=i}async write(e){e.write(`---@return ${this.type.format()}${this.optional?"?":""} ${this.name??""}`);let t=await this.description;t&&e.write(` #${t}`),e.write(`
131
+ `)}};function ra(n,e){return n.order-e.order}var nf=class{docs;classes;events;concepts;globals;defines;constructor(e){if(this.docs=JSON.parse(e),this.docs.application!=="factorio")throw new Error(`Unknown application: ${this.docs.application}`);if(this.docs.api_version!==6)throw new Error(`Unsupported Runtime Docs JSON Version ${this.docs.api_version}`);if(this.docs.stage!=="runtime")throw new Error(`Wrong stage: ${this.docs.stage}`);this.classes=new Map(this.docs.classes.map(r=>[r.name,r])),this.events=new Map(this.docs.events.map(r=>[r.name,r])),this.concepts=new Map(this.docs.concepts.map(r=>[r.name,r])),this.globals=new Map(this.docs.global_objects.map(r=>[r.type,r]));let t=(r,i)=>{let o=`${i}${r.name}`;this.defines.add(o);let s=`${o}.`;r.values&&r.values.forEach(a=>{this.defines.add(`${s}${a.name}`)}),r.subkeys&&r.subkeys.forEach(a=>t(a,s))};this.defines=new Set,this.defines.add("defines"),this.docs.defines.forEach(r=>t(r,"defines."))}isVersion(e){return this.api_version===e}get api_version(){return this.docs.api_version}get stage(){return this.docs.stage}get application(){return this.docs.application}get application_version(){return this.docs.application_version}resolve_link(e,t){if(t=t?`#${t}`:"",["classes","events","concepts","defines"].includes(e))return`/${e}.html${t}`;if(["libraries","storage","migrations","data-lifecycle","prototype-tree","noise-expressions","instrument","item-weight"].includes(e))return`/auxiliary/${e}.html${t}`;if(this.concepts.has(e))return`/concepts/${e}.html${t}`;if(this.classes.has(e))return`/classes/${e}.html${t}`;if(this.events.has(e))return`/events.html#${e}`;if(this.defines.has(e))return`/defines.html#${e}`;let r=e.match(/defines\.prototypes\[\'(.+)\'\]/);if(r&&this.defines.has(`defines.prototypes.${r[1]}`))return`/defines.html#defines.prototypes.${r[1]}`;console.warn(`Invalid Link: runtime:${e}${t}`)}with_base_classes(e,t){let r=[];return r.push(...t(e)),e.parent&&r.push(...t(this.classes.get(e.parent))),r}generate_debuginfo(){let e={alwaysValid:{},expandKeys:{}};return this.classes.forEach(t=>{if(["LuaCustomTable"].includes(t.name))return;let r={},i=!1;e.expandKeys[t.name]=r;for(let o of this.with_base_classes(t,s=>s.attributes))if(o.name==="valid")i=!0;else if(o.name!=="object_name"){if(!(t.name==="LuaEntity"&&o.name==="crafting_speed"&&this.application_version.match(/2\.0\.5[67]/))){if(o.read_type){r[o.name]={},o.write_type||(r[o.name].readOnly=!0);let s=o.read_type;typeof s=="string"&&s.startsWith("defines.")&&(r[o.name].enumFrom=s)}}}i||(e.alwaysValid[t.name]=!0);for(let o of t.operators)switch(o.name){case"index":r["[]"]={readOnly:!o.write_type,thisAsTable:!0,iterMode:"count"};break;case"length":default:break}for(let o of this.with_base_classes(t,s=>s.methods))["help","generate_event_name"].includes(o.name)||o.parameters.length>0||o.return_values.length!==0&&(o.raises||(r[o.name]={readOnly:!0,fetchable:!0}))}),e}async generate_LuaLS_docs(e){return Promise.all([...await this.generate_LuaLS_classes(e),this.generate_LuaLS_concepts(e),this.generate_LuaLS_defines(e),this.generate_LuaLS_events(e),this.generate_LuaLS_LuaObjectNames(),this.generate_LuaLS_global_functions(e)])}async generate_LuaLS_classes(e){let t=[];for(let r of this.docs.classes)t.push(await this.generate_LuaLS_class(r,e));return t}async generate_LuaLS_class(e,t){let r=new zt(`runtime-api/${e.name}`,this.docs.application_version),i=new wt(e.name),o=this.globals.get(e.name);o&&(i.global_name=o.name),i.description=t(this.collect_description(e,{scope:"runtime",member:e.name})),i.parents=e.parent?[new ce(e.parent)]:[new ce("LuaObject.base")],i.generic_args=tn.adjust.class[e.name]?.generic_params,tn.adjust.class[e.name]?.generic_parent&&i.parents.push(await this.LuaLS_type(tn.adjust.class[e.name]?.generic_parent));for(let a of e.attributes){let d=a.name==="object_name"?new Mt(e.name):await this.LuaLS_type(a.write_type??a.read_type,{file:r,table_class_name:`${e.name}.${a.name}`,format_description:t});i.add(new ze(a.name,d,t(this.collect_description(a,{scope:"runtime",member:e.name,part:a.name})),a.optional))}for(let a of e.operators)switch(a.name){case"call":{i.add(new Ht(t(this.collect_description(a,{scope:"runtime",member:e.name,part:"call_operator"})),await this.LuaLS_params(a.parameters,t),await this.LuaLS_returns(a.return_values,t)));break}case"length":{let d=new Tr("len",await this.LuaLS_type(a.read_type));d.description=t(this.collect_description(a,{scope:"runtime",member:e.name,part:"length_operator"})),i.add(d);break}case"index":{if(tn.adjust.class[e.name]?.no_index)break;i.add(new ze(await this.LuaLS_type(tn.adjust.class[e.name]?.index_key??"uint"),await this.LuaLS_type(a.write_type??a.read_type),t(this.collect_description(a,{scope:"runtime",member:e.name,part:"index_operator"}))));break}default:throw new Error(`Unkown operator: ${a.name}`)}let s=i;tn.adjust.class[e.name]?.split_funcs&&(s=new wt(`${e.name}_funcs`),r.add(s),i.parents.push(new ce(`${e.name}_funcs`)));for(let a of e.methods)s.add(await this.LuaLS_function(a,r,t,e.name));return r.add(i),r}async generate_LuaLS_concepts(e){let t=new zt("runtime-api/concepts",this.docs.application_version);for(let r of this.docs.concepts){let i=e(this.collect_description(r,{scope:"runtime",member:r.name}));if(typeof r.type=="string")t.add(new rn(r.name,await this.LuaLS_type(r.type),i));else switch(r.type.complex_type){case"dictionary":let o=r.type.key,s=r.type.value;if(typeof s=="object"&&s.complex_type==="literal"&&s.value===!0&&typeof o=="object"&&o.complex_type==="union"){let a=new wt(r.name);a.exact=!0,a.description=i;for(let d of o.options)a.add(new ze(await this.LuaLS_type(d),await this.LuaLS_type(s)));t.add(a);break}case"union":case"array":case"table":case"tuple":case"LuaStruct":{let a=await this.LuaLS_type(r.type,{file:t,table_class_name:r.name,format_description:e});a instanceof ce&&a.name===r.name||t.add(new rn(r.name,a,i));break}case"builtin":break;default:break}}return t}async generate_LuaLS_defines(e){let t=new zt("runtime-api/defines",this.docs.application_version),r=new wt("defines");r.global_name="defines",r.description=e(void 0,{scope:"runtime",member:"defines"}),t.add(r);let i=(s,a)=>na(a)?`${s}.${a}`:`${s}['${a}']`,o=async(s,a,d,l)=>{let h=i(a,s.name),v=`${d}.${zn(s.name)}`,w=e(this.collect_description(s,{scope:"runtime",member:h}));if(h==="defines.prototypes"&&(l=new Mt(0)),s.values)t.add(new zi(h,v,s.values.map(_=>{let L=_.description.replace(/^deprecated,?/i,"@deprecated"),k=new ce(`${v}.${zn(_.name)}`);return new Hi(_.name,k,L,l)}),w));else{let _=new wt(h);if(_.global_name=h,_.description=w,t.add(_),s.subkeys)for(let L of s.subkeys)await o(L,h,v,l)}};for(let s of this.docs.defines)await o(s,"defines","defines");return t}async generate_LuaLS_events(e){let t=new zt("runtime-api/events",this.docs.application_version),r=new wt("event_handler.events");for(let[i,o]of this.events){let s=new wt(`EventData.${o.name}`);s.exact=!0,s.parents=[new ce("EventData")],s.description=e(this.collect_description(o,{scope:"runtime",member:o.name}));for(let d of o.data)s.add(new ze(d.name,await this.LuaLS_type(d.type),e(this.collect_description(d,{scope:"runtime",member:o.name,part:d.name})),d.optional));if(t.add(s),o.name==="CustomInputEvent")continue;let a=new Je("handler",[new xe("event",new ce(`EventData.${o.name}`))]);r.add(new ze(new ce(`defines.events.${o.name}`),a)),r.add(new ze(new Mt(o.name),a))}return r.add(new ze(new ce("LuaCustomInputPrototype"),new Je("handler",[new xe("event",new ce("EventData.CustomInputEvent"))]))),r.add(new ze(new ce("LuaCustomEventPrototype"),new Je("handler",[new xe("event",new ce("EventData"))]))),r.add(new ze(new ce("string"),new Je("handler",[new xe("event",new ce("EventData"))]))),r.add(new ze(new ce("defines.events"),new Je("handler",[new xe("event",new ce("EventData"))]))),t.add(r),t}generate_LuaLS_LuaObjectNames(){let e=new zt("runtime-api/LuaObjectNames",this.docs.application_version);return e.add(new rn("LuaObject.object_name",new nn(this.docs.classes.filter(t=>!t.abstract).map(t=>new Mt(t.name))))),e.add(new rn("LuaObject",new nn(this.docs.classes.filter(t=>!t.abstract).map(t=>new ce(t.name))))),e}async generate_LuaLS_global_functions(e){let t=new zt("runtime-api/global_functions",this.docs.application_version);for(let r of this.docs.global_functions)t.add(await this.LuaLS_function(r,t,e));return t}async LuaLS_params(e,t){return Promise.all(e.sort(ra).map(async r=>new xe(zn(r.name),await this.LuaLS_type(r.type),t(this.collect_description(r)),r.optional)))}async LuaLS_returns(e,t){return Promise.all(e.sort(ra).map(async r=>new Ki(await this.LuaLS_type(r.type),void 0,t(this.collect_description(r)),r.optional)))}async LuaLS_function(e,t,r,i){let o=e.format.takes_table?[new xe("param",await this.LuaLS_table_type(e,t,`${i??""}${i?".":""}${e.name}_param`,r),void 0,e.format.table_optional)]:await this.LuaLS_params(e.parameters,r);e.variadic_parameter&&o.push(new xe("...",await this.LuaLS_type(e.variadic_parameter.type),r(e.variadic_parameter.description)));let s=new Je(e.name,o,await this.LuaLS_returns(e.return_values,r),r(this.collect_description(e),{scope:"runtime",member:i??"libraries",part:i?e.name:"new-functions"}));if(i==="LuaBootstrap"&&e.name==="on_event"){o[1].type.members[0].params[0].name="event",s.add(new Ht(void 0,[new xe("event",new ce("string")),new xe("handler",new Je("handler",[new xe("event",new ce("EventData"))]))])),s.add(new Ht(void 0,[new xe("event",new ce("LuaCustomEventPrototype")),new xe("handler",new Je("handler",[new xe("event",new ce("EventData"))]))])),s.add(new Ht(void 0,[new xe("event",new ce("LuaCustomInputPrototype")),new xe("handler",new Je("handler",[new xe("event",new ce("EventData.CustomInputEvent"))]))]));for(let[a,d]of this.events){let l=new nn([new ce(`defines.events.${d.name}`),new Mt(d.name)]),h=new ce(`EventData.${d.name}`);if(d.name==="CustomInputEvent")continue;let v=[new xe("event",l),new xe("handler",new Je("handler",[new xe("event",h)]))];d.filter&&v.push(new xe("filters",new kr(new ce(d.filter)),void 0,!0)),s.add(new Ht(void 0,v))}}return s}async LuaLS_table_type(e,t,r,i,o){let s=new wt(r);s.exact=tn.adjust.table[r]?.exact??!0,s.parents=o,t.add(s);let a=1;for(let d of e.parameters.sort(ra)){let l="complex_type"in e&&e.complex_type==="tuple";s.add(new ze(l?new Mt(a++):d.name,await this.LuaLS_type(d.type),i(this.collect_description(d)),d.optional))}if(e.variant_parameter_groups){let d=[],l=new rn(s.name,new nn(d));t.add(l),s.name+=".base";for(let h of e.variant_parameter_groups){let v=await this.LuaLS_table_type(h,t,`${r}.${zn(h.name)}`,i,[new ce(s.name)]);d.push(v)}return d.push(new ce(s.name)),new ce(l.name)}return new ce(s.name)}async LuaLS_type(e,t){if(!e)return new ce("any");if(typeof e=="string")return new ce(e);let r=i=>t&&{file:t.file,table_class_name:`${t.table_class_name}.${i}`,format_description:t.format_description};switch(e.complex_type){case"array":return new kr(await this.LuaLS_type(e.value,r("member")));case"dictionary":return new Vi(await this.LuaLS_type(e.key,r("key")),await this.LuaLS_type(e.value,r("value")));case"union":return new nn(await Promise.all(e.options.map((i,o)=>this.LuaLS_type(i,r(`${o}`)))));case"LuaLazyLoadedValue":return new ce("LuaLazyLoadedValue",[await this.LuaLS_type(e.value,r("value"))]);case"LuaCustomTable":return new ce("LuaCustomTable",await Promise.all([this.LuaLS_type(e.key,r("key")),this.LuaLS_type(e.value,r("value"))]));case"literal":return new Mt(e.value);case"function":return new Je(void 0,await Promise.all(e.parameters.map(async(i,o,s)=>new xe(`p${o+1}`,await this.LuaLS_type(i,r(`param${s.length>1?o:""}`))))));case"type":return this.LuaLS_type(e.value,t);case"tuple":return new Wi(await Promise.all(e.values.map((i,o)=>this.LuaLS_type(i,r(`${o}`)))));case"table":if(!t)throw new Error(`${e.complex_type} without parent`);return this.LuaLS_table_type(e,t.file,t.table_class_name,t.format_description);case"LuaStruct":{if(!t)throw new Error(`${e.complex_type} without parent`);let i=new wt(t.table_class_name);i.exact=!0;for(let o of e.attributes)i.add(new ze(o.name,await this.LuaLS_type(o.write_type??o.read_type,{file:t.file,table_class_name:`${t.table_class_name}.${o.name}`,format_description:t.format_description}),t.format_description(this.collect_description(o)),o.optional));return t.file.add(i),new ce(t.table_class_name)}}throw new Error("Invalid Type")}collect_description(e,t,r){return r||(r=e.description),"read"in e&&(r=`[${e.read?"R":""}${e.write?"W":""}] ${r??""}`),[r,e.lists?.join(`
132
+
133
+ `),e.raises&&`**Events:**
134
+ ${e.raises?.map(i=>` * ${i.optional?"May":"Will"} raise [${i.name}](runtime:events::${i.name}) ${{instantly:"instantly",current_tick:"later in the current tick",future_tick:"in a future tick"}[i.timeframe]}.${i.description?`
135
+ `+i.description:""}`)?.join(`
136
+
137
+ `)}`,t&&`[View Documentation](${t.scope}:${t.member}${t.part?"::"+t.part:""})`,e.examples?.map(i=>`### Example
138
+ ${i}`)?.join(`
139
+
140
+ `),e.subclasses&&`_Can only be used if this is ${e.subclasses.length===1?e.subclasses[0]:`${e.subclasses.slice(0,-1).join(", ")} or ${e.subclasses[e.subclasses.length-1]}`}_`].filter(i=>!!i).join(`
141
+
142
+ `)}};var ia={};ke(ia,{default:()=>Yy});var Yy=`
143
+ --[[
144
+ Arg parser from: https://github.com/JanSharp/LuaArgParser
145
+
146
+ MIT License
147
+
148
+ Copyright (c) 2021-2024 Jan Mischak
149
+
150
+ Permission is hereby granted, free of charge, to any person obtaining a copy
151
+ of this software and associated documentation files (the "Software"), to deal
152
+ in the Software without restriction, including without limitation the rights
153
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
154
+ copies of the Software, and to permit persons to whom the Software is
155
+ furnished to do so, subject to the following conditions:
156
+
157
+ The above copyright notice and this permission notice shall be included in all
158
+ copies or substantial portions of the Software.
159
+
160
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
161
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
162
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
163
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
164
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
165
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
166
+ SOFTWARE.
167
+ ]]
168
+
169
+ ---@class ArgsConfigOption
170
+ ---@field field string
171
+ ---@field short string|nil @ short option name, defined without leading \`-\`. used when an option with a single leading \`-\` is encountered
172
+ ---@field long string|nil @ long option name, defined without leading \`--\`. used when an option with leading \`--\` is encountered
173
+ ---@field description string|nil @ description used in the help message
174
+ ---@field flag boolean|nil @ is this option a flag?
175
+ ---@field single_param boolean|nil @ does this option take a single parameter?
176
+ ---@field min_params integer|nil @ when not a flag or single_param, how many params does the array have to have minimum? Default 0
177
+ ---@field max_params integer|nil @ when not a flag or single_param, how many params is the array allowed to have maximum? Default \`nil\` meaning unlimited
178
+ ---@field params integer|nil @ fallback for both min_params and max_params
179
+ ---@field type string|nil @ (required) id of the type the single_param or array entries have to be. Not used for flags
180
+ ---@field optional boolean|nil @ is the option optional? implied to be true for flags
181
+ ---@field default_value any @ the default value to use for optional options. When set, optional is implied to be \`true\`
182
+
183
+ ---@class ArgsConfigPositional
184
+ ---@field single boolean|nil @ is this positional a single value?
185
+ ---@field min_amount integer|nil @ when not a single, how many args does the array have to have minimum? Default 0
186
+ ---@field max_amount integer|nil @ when not a single, how many args is the array allowed to have maximum? Default \`nil\` meaning unlimited
187
+ ---@field amount integer|nil @ fallback for both min_amount and max_amount
188
+ ---@field type string @ id of the type the single or array entries have to be
189
+ ---@field optional boolean|nil @ is the option optional? implied to be true for flags
190
+
191
+ ---@class ArgsConfig
192
+ ---@field options ArgsConfigOption[]|nil
193
+ ---@field positional ArgsConfigPositional[]|nil
194
+
195
+ ---@class ArgsHelpConfig
196
+ ---@field usage string|nil @ When provided a \`"Usage: "..usage\` line will be added before the help message
197
+ ---@field indent_length integer|nil @ Default 4. Indent for the option/positional labels
198
+ ---@field label_length integer|nil @ Default 32. Labels will get padded with blank space up to this length. If exceeding the length, the description is put on the next line
199
+ ---@field spacing_length integer|nil @ Default 2. Space between label and description
200
+
201
+ local type_defs = {}
202
+
203
+ local function register_type(definition)
204
+ type_defs[definition.id] = definition
205
+ end
206
+
207
+ register_type{
208
+ id = "string",
209
+ arg_count = 1,
210
+ convert = function(arg, context)
211
+ local success, value = pcall(tostring, arg)
212
+ if not success then
213
+ return nil, value.." "..context.."."
214
+ end
215
+ return value
216
+ end,
217
+ compare = function(left, right)
218
+ return left == right
219
+ end,
220
+ tostring = function(str) return str end,
221
+ }
222
+
223
+ register_type{
224
+ id = "number",
225
+ arg_count = 1,
226
+ convert = function(arg, context)
227
+ local success, value = pcall(tonumber, arg)
228
+ if not success then
229
+ return nil, value.." "..context.."."
230
+ end
231
+ return value
232
+ end,
233
+ compare = function(left, right)
234
+ return left == right
235
+ end,
236
+ }
237
+
238
+ register_type{
239
+ id = "boolean",
240
+ arg_count = 1,
241
+ convert = function(arg, context)
242
+ if arg == "true" or arg == "1" then
243
+ return true
244
+ elseif arg == "false" or arg == "0" then
245
+ return false
246
+ else
247
+ return nil, "Expected a boolean, got '"..tostring(arg).."' "..context.."."
248
+ end
249
+ end,
250
+ compare = function(left, right)
251
+ return left == right
252
+ end,
253
+ }
254
+
255
+ local help_option = {
256
+ field = "help",
257
+ long = "help",
258
+ short = "h",
259
+ description = "Show help message.",
260
+ flag = true,
261
+ }
262
+
263
+ local function get_option_descriptor(option)
264
+ return (option.short and ("-"..option.short) or "")
265
+ ..(option.long and option.short and " | " or "")
266
+ ..(option.long and ("--"..option.long) or "")
267
+ end
268
+
269
+ ---@param args string[]
270
+ ---@param config ArgsConfig
271
+ ---@param start_index? integer @ 1 based including
272
+ ---@return table|nil args @ returns \`nil\` if there was an error
273
+ ---@return integer|string last_consumed_index_or_message @ If there was an error this is the error message
274
+ local function parse(args, config, start_index)
275
+ local err
276
+ local i = (start_index and (start_index - 1)) or 0
277
+ local current
278
+ local function next_arg()
279
+ i = i + 1
280
+ current = args[i]
281
+ return current
282
+ end
283
+ local function peek_next()
284
+ return args[i + 1]
285
+ end
286
+
287
+ local function consume_args_and_convert_for_type(type_id, context)
288
+ if not type_defs[type_id] then
289
+ error("Invalid type_def id '"..type_id.."' "..context..". No type conversion registered with that id.")
290
+ end
291
+ local type_args = {}
292
+ for j = 1, type_defs[type_id].arg_count do
293
+ if not next_arg() then
294
+ err = "Expected "..j.." arg(s) for the type '"..type_id.."' "..context.."."
295
+ return
296
+ end
297
+ type_args[j] = current
298
+ end
299
+ type_args[#type_args+1] = context
300
+ local result
301
+ result, err = type_defs[type_id].convert(table.unpack(type_args))
302
+ return result
303
+ end
304
+
305
+ local no_more_options = false
306
+
307
+ local function consume_args_and_convert_for_type_array(type_id, min, max, context)
308
+ local value_count = 0
309
+ local values = {}
310
+ while ((not max) or value_count < max)
311
+ and peek_next()
312
+ and (no_more_options or (value_count < min) or (peek_next():sub(1, 1) ~= "-"))
313
+ and (not err)
314
+ do
315
+ value_count = value_count + 1
316
+ values[value_count] = consume_args_and_convert_for_type(type_id, context)
317
+ end
318
+ if err then return values end
319
+ if value_count < min then
320
+ err = "Expected "..min..(max and (max ~= min and (" to "..max) or "") or " or more")
321
+ .." parameters of the type '"..type_id.."', got "..value_count.." "..context.."."
322
+ end
323
+ return values
324
+ end
325
+
326
+ local result = {}
327
+ local found_options = {}
328
+
329
+ local positional_index = 0
330
+ local current_positional
331
+ local function next_positional()
332
+ positional_index = positional_index + 1
333
+ current_positional = config.positional and config.positional[positional_index] or nil
334
+ return current_positional
335
+ end
336
+
337
+ while next_arg() do
338
+ if not no_more_options then
339
+ -- first check for options
340
+ if current:sub(1, 1) == "-" then
341
+ local option_config
342
+ if current:sub(2, 2) == "-" then
343
+ local long = current:sub(3)
344
+ if long == "" then
345
+ no_more_options = true
346
+ goto continue
347
+ else
348
+ if long == help_option.long then
349
+ option_config = help_option
350
+ else
351
+ for _, option in ipairs(config.options or {}) do
352
+ if option.long == long then
353
+ option_config = option
354
+ break
355
+ end
356
+ end
357
+ end
358
+ end
359
+ else
360
+ local short = current:sub(2)
361
+ if short == "" then
362
+ return nil, "Invalid arg '-'."
363
+ end
364
+ if short == help_option.short then
365
+ option_config = help_option
366
+ else
367
+ for _, option in ipairs(config.options or {}) do
368
+ if option.short == short then
369
+ option_config = option
370
+ break
371
+ end
372
+ end
373
+ end
374
+ end
375
+
376
+ if not option_config then
377
+ return nil, "Invalid option '"..current.."'."
378
+ end
379
+
380
+ if found_options[option_config] then
381
+ return nil, "Duplicate option '"..get_option_descriptor(option_config).."'."
382
+ end
383
+ found_options[option_config] = true
384
+
385
+ if option_config.flag then
386
+ result[option_config.field] = true
387
+ elseif option_config.single_param then
388
+ result[option_config.field] = consume_args_and_convert_for_type(
389
+ option_config.type,
390
+ "for the option '"..get_option_descriptor(option_config).."'"
391
+ )
392
+ if err then
393
+ return nil, err
394
+ end
395
+ else
396
+ result[option_config.field] = consume_args_and_convert_for_type_array(
397
+ option_config.type,
398
+ option_config.min_params or option_config.params,
399
+ option_config.max_params or option_config.params,
400
+ "for the option '"..get_option_descriptor(option_config).."'"
401
+ )
402
+ if err then
403
+ return nil, err
404
+ end
405
+ end
406
+ goto continue
407
+ end
408
+ end
409
+
410
+ -- positional args
411
+ no_more_options = true
412
+ if not next_positional() then
413
+ break
414
+ end
415
+
416
+ i = i - 1 -- the consume functions expect the current position to be just before what they are consuming
417
+
418
+ if current_positional.single then
419
+ result[current_positional.field] = consume_args_and_convert_for_type(
420
+ current_positional.type,
421
+ "for #"..positional_index.." positional arg '"..current_positional.name.."'"
422
+ )
423
+ if err then
424
+ return nil, err
425
+ end
426
+ else
427
+ result[current_positional.field] = consume_args_and_convert_for_type_array(
428
+ current_positional.type,
429
+ current_positional.min_amount or current_positional.amount,
430
+ current_positional.max_amount or current_positional.amount,
431
+ "for #"..positional_index.." positional arg group '"..current_positional.name.."'"
432
+ )
433
+ if err then
434
+ return nil, err
435
+ end
436
+ end
437
+
438
+ ::continue::
439
+ end
440
+
441
+ for _, option in ipairs(config.options or {}) do
442
+ if not found_options[option] then
443
+ if option.flag then
444
+ result[option.field] = false
445
+ elseif option.optional or (option.default_value ~= nil) then
446
+ result[option.field] = option.default_value
447
+ elseif not result.help then
448
+ return nil, "Missing option '"..get_option_descriptor(option).."'."
449
+ end
450
+ end
451
+ end
452
+
453
+ while next_positional() do
454
+ if current_positional.single then
455
+ if not current_positional.optional then
456
+ if not result.help then
457
+ return nil, "Missing #"..positional_index.." positional arg '"..current_positional.name.."'."
458
+ end
459
+ end
460
+ else
461
+ if (not current_positional.optional) and current_positional.min_amount ~= 0 then
462
+ if not result.help then
463
+ return nil, "Missing #"..positional_index.." positional arg group '"..current_positional.name.."'."
464
+ end
465
+ end
466
+ result[current_positional.field] = {}
467
+ end
468
+ end
469
+
470
+ return result, i - 1
471
+ end
472
+
473
+ local function get_type(option_or_positional)
474
+ if option_or_positional.flag then
475
+ return ""
476
+ elseif option_or_positional.single_param or option_or_positional.single then
477
+ return " <"..option_or_positional.type..">"
478
+ else
479
+ return " <"..option_or_positional.type.."[]>"
480
+ end
481
+ end
482
+
483
+ local function get_help_string(config, help_config)
484
+ help_config = help_config or {}
485
+ local indent_length = help_config.indent_length or 4
486
+ local label_length = help_config.label_length or 32
487
+ local spacing_length = help_config.spacing_length or 2
488
+ local indent = string.rep(" ", indent_length)
489
+ local full_indent = string.rep(" ", indent_length + label_length + spacing_length)
490
+ local help = {}
491
+
492
+ local function add_entry(label, description)
493
+ help[#help+1] = label
494
+ if description then
495
+ if #label > label_length then
496
+ help[#help+1] = "\\n"
497
+ help[#help+1] = full_indent
498
+ else
499
+ help[#help+1] = string.rep(" ", label_length - #label + spacing_length)
500
+ end
501
+ help[#help+1] = description:gsub("\\n", "\\n"..full_indent)
502
+ end
503
+ help[#help+1] = "\\n"
504
+ end
505
+
506
+ local function default_value_tostring(option)
507
+ local tostring = (type_defs[option.type].tostring or tostring)
508
+ if option.single_param then
509
+ return tostring(option.default_value)
510
+ else
511
+ local values = {}
512
+ for i, value in ipairs(option.default_value) do
513
+ values[i] = tostring(value)
514
+ end
515
+ return table.concat(values, ", ")
516
+ end
517
+ end
518
+
519
+ local function add_option(option)
520
+ help[#help+1] = indent
521
+ local label
522
+ if option.flag or option.optional or option.default_value ~= nil then
523
+ label = "["..get_option_descriptor(option)..get_type(option)
524
+ ..(
525
+ option.default_value ~= nil
526
+ and (" | default: "..default_value_tostring(option))
527
+ or ""
528
+ ).."]"
529
+ else
530
+ label = get_option_descriptor(option)..get_type(option)
531
+ end
532
+ add_entry(label, option.description)
533
+ end
534
+
535
+ if help_config.usage then
536
+ help[#help+1] = "Usage: "
537
+ help[#help+1] = help_config.usage
538
+ help[#help+1] = "\\n"
539
+ end
540
+
541
+ for _, option in ipairs(config.options or {}) do
542
+ add_option(option)
543
+ end
544
+
545
+ add_option(help_option)
546
+
547
+ if next(config.options or {}) and next(config.positional or {}) then
548
+ help[#help+1] = "\\n"
549
+ end
550
+
551
+ for _, positional in ipairs(config.positional or {}) do
552
+ help[#help+1] = indent
553
+ local label
554
+ if positional.optional then
555
+ label = "["..get_type(positional).."]"
556
+ else
557
+ label = get_type(positional)
558
+ end
559
+ add_entry(label, positional.description)
560
+ end
561
+
562
+ help[#help] = nil -- remove last newline
563
+ return table.concat(help)
564
+ end
565
+
566
+ ---@param args string[]
567
+ ---@param config ArgsConfig
568
+ ---@param help_config? ArgsHelpConfig
569
+ ---@return table|nil args @ returns \`nil\` if there was an error, \`{help = true}\` if it was help
570
+ ---@return integer|nil last_consumed_index @ returns \`nil\` under the same condition.
571
+ local function parse_and_print_on_error_or_help(args, config, help_config)
572
+ local result, err_or_index = parse--[[@as fun(a,b):table?,integer?]](args, config)
573
+ if (not result) or result.help then
574
+ if not result then
575
+ print(err_or_index)
576
+ print()
577
+ err_or_index = nil
578
+ else
579
+ result = {help = true}
580
+ end
581
+ print(get_help_string(config, help_config))
582
+ end
583
+ return result, err_or_index
584
+ end
585
+
586
+ return {
587
+ register_type = register_type,
588
+ parse = parse,
589
+ parse_and_print_on_error_or_help = parse_and_print_on_error_or_help,
590
+ get_help_string = get_help_string,
591
+ help_option = help_option, -- one can modify this table by reference
592
+ }
593
+ `;var oa={};ke(oa,{default:()=>tv});var tv=`--##
594
+
595
+ local util = require("factorio-plugin.util")
596
+ local command_line_module_flag = util.module_flags.command_line
597
+ local line_start_slashes = util.line_start_slashes
598
+
599
+ local commands_lut = {
600
+ ["command"] = true,
601
+ ["c"] = true,
602
+ ["silent-command"] = true,
603
+ ["sc"] = true,
604
+ ["measured-command"] = true,
605
+ }
606
+
607
+ ---@param uri string @ The uri of file
608
+ ---@param text string @ The content of file
609
+ ---@param diffs Diff[] @ The diffs to add more diffs to
610
+ local function replace(uri, text, diffs)
611
+ -- Process line_start_slashes after util pre_process has finished, since plugin disable-line annotations exist.
612
+ -- Basically at the time of encountering the slash at the start of the line, it does not know if that position
613
+ -- in the file may or may not have the command_line module disabled.
614
+ util.reset_is_disabled_to_file_start()
615
+ for i = 1, line_start_slashes.count do
616
+ local slash_pos = line_start_slashes[i]
617
+ local command, f_command = text:match("^([a-z-]+%f[%s\\0])()", slash_pos + 1)
618
+ if not command then goto continue end
619
+ f_command = text:match("^ __[a-zA-Z0-9_-]+__()", f_command) or f_command
620
+ if commands_lut[command] and not util.is_disabled(slash_pos, command_line_module_flag) then
621
+ util.add_diff(diffs, slash_pos, f_command, "")
622
+ end
623
+ ::continue::
624
+ end
625
+ end
626
+
627
+ return {
628
+ replace = replace,
629
+ }
630
+ `;var sa={};ke(sa,{default:()=>rv});var rv=`--##
631
+
632
+ local util = require("factorio-plugin.util")
633
+ local remote_add_module_flag = util.module_flags.remote_add
634
+ local remote_call_module_flag = util.module_flags.remote_call
635
+
636
+ ---@alias comma_or_paren ','|\`)\`
637
+
638
+ ---@param _ string @ The uri of file
639
+ ---@param text string @ The content of file
640
+ ---@param diffs Diff[] @ The diffs to add more diffs to
641
+ local function replace(_, text, diffs)
642
+
643
+ ---parse one param and use it to index into the previous table
644
+ ---creates 2 new elements in the chain_diff where the first one
645
+ ---represents the actual string contents or identifier
646
+ ---@param chain_diff ChainDiffElem[]
647
+ ---@param p_param_start integer
648
+ ---@return string|nil
649
+ ---@return comma_or_paren|nil -- Does this only return the two literal strings/nil
650
+ ---@return integer|nil
651
+ local function process_param(chain_diff, p_param_start)
652
+ ---@type integer, string|nil, integer, comma_or_paren|nil, integer
653
+ local s_param, param, f_param, comma_or_paren, p_param_finish
654
+ = text:match("^%s*()[\\"']([^\\"']*)[\\"']()%s*([,)])()", p_param_start)
655
+
656
+ if not param then
657
+ return
658
+ end
659
+
660
+ local i = #chain_diff + 1
661
+ chain_diff[i] = {i = s_param}
662
+ chain_diff[i + 1] = {i = f_param}
663
+ util.use_source_to_index(chain_diff, i, param, true)
664
+
665
+ return param, comma_or_paren, p_param_finish
666
+ end
667
+
668
+ ---remote.add_interface
669
+ ---@param s_entire_thing integer
670
+ ---@param s_add integer
671
+ ---@param f_add integer
672
+ ---@param p_open_paren integer
673
+ ---@param s_param_1 integer
674
+ local function handle_add_interface(s_entire_thing, s_add, f_add, p_open_paren, s_param_1)
675
+ local chain_diff = {} ---@type ChainDiffElem[]
676
+ local open_paren_diff = {i = p_open_paren, text = ""}
677
+ chain_diff[1] = open_paren_diff
678
+
679
+ local name, name_comma_or_paren, s_param_2 = process_param(chain_diff, s_param_1)
680
+ if not name then return end
681
+
682
+ if name_comma_or_paren == "," and not util.is_disabled(s_entire_thing, remote_add_module_flag) then
683
+ util.extend_chain_diff_elem_text(chain_diff[3], "=(")
684
+ chain_diff[4] = {i = s_param_2 --[[@as integer]]}
685
+ util.add_diff(diffs, s_add - 1, s_add, text:sub(s_add - 1, s_add - 1).."--\\n")
686
+ util.add_diff(diffs, s_add, f_add,
687
+ "__typed_interfaces---@diagnostic disable-line:undefined-field\\n")
688
+ util.add_chain_diff(chain_diff, diffs)
689
+ end
690
+ end
691
+
692
+ ---remote.call
693
+ ---this in particular needs to work as you're typing, not just once you're done
694
+ ---which significantly complicates things, like we can't use the commas as reliable anchors
695
+ ---@param s_entire_thing integer
696
+ ---@param s_call integer
697
+ ---@param f_call integer
698
+ ---@param p_open_paren integer
699
+ ---@param s_param_1 integer
700
+ local function handle_call(s_entire_thing, s_call, f_call, p_open_paren, s_param_1)
701
+ if util.is_disabled(s_entire_thing, remote_call_module_flag) then return end
702
+
703
+ local chain_diff = {} ---@type ChainDiffElem[]
704
+ local open_paren_diff = {i = p_open_paren, text = ""}
705
+ chain_diff[1] = open_paren_diff
706
+
707
+ local name, name_comma_or_paren, s_param_2 = process_param(chain_diff, s_param_1)
708
+ if not name then return end
709
+ ---@cast s_param_2 -nil
710
+
711
+ if name_comma_or_paren == "," then
712
+ local func, func_comma_or_paren, p_finish = process_param(chain_diff, s_param_2)
713
+ if not func then return end
714
+ ---@cast p_finish -nil
715
+
716
+ chain_diff[6] = {i = p_finish}
717
+ if func_comma_or_paren == ")" then
718
+ util.extend_chain_diff_elem_text(chain_diff[5], "()")
719
+ else
720
+ if text:match("^%s*%)", p_finish) then
721
+ util.extend_chain_diff_elem_text(chain_diff[5], "(,") -- unexpected symbol near ','
722
+ else
723
+ util.extend_chain_diff_elem_text(chain_diff[5], "(")
724
+ end
725
+ end
726
+ end
727
+
728
+ util.add_diff(diffs, s_call - 1, s_call, text:sub(s_call - 1, s_call - 1).."--\\n")
729
+ util.add_diff(diffs, s_call, f_call,
730
+ "__typed_interfaces---@diagnostic disable-line:undefined-field\\n")
731
+ util.add_chain_diff(chain_diff, diffs)
732
+ end
733
+
734
+ util.reset_is_disabled_to_file_start()
735
+ for f_remote, s_add_or_call in
736
+ string.gmatch(text, "remote()%s*%.%s*()")--[[@as fun(): integer, integer]]
737
+ do
738
+ local s_entire_thing = f_remote - #"remote"
739
+ local f_add_or_call, p_open_paren, s_param_1 = text:match("^add_interface()%s*()%(()", s_add_or_call)
740
+ if f_add_or_call then
741
+ handle_add_interface(s_entire_thing, s_add_or_call, f_add_or_call, p_open_paren, s_param_1)
742
+ goto continue
743
+ end
744
+
745
+ f_add_or_call, p_open_paren, s_param_1 = text:match("^call()%s*()%(()", s_add_or_call)
746
+ if f_add_or_call then
747
+ handle_call(s_entire_thing, s_add_or_call, f_add_or_call, p_open_paren, s_param_1)
748
+ goto continue
749
+ end
750
+
751
+ ::continue::
752
+ end
753
+ end
754
+
755
+ return {
756
+ replace = replace,
757
+ }
758
+ `;var aa={};ke(aa,{default:()=>ov});var ov=`--##
759
+
760
+ local util = require("factorio-plugin.util")
761
+ local require_module_flag = util.module_flags.require
762
+
763
+ ---@param _ string @ The uri of file
764
+ ---@param text string @ The content of file
765
+ ---@param diffs Diff[] @ The diffs to add more diffs to
766
+ ---@param args PluginArgs
767
+ local function replace(_, text, diffs, args)
768
+ util.reset_is_disabled_to_file_start()
769
+ for f_require, start, name, finish in
770
+ text:gmatch("require()%s*%(?%s*['\\"]()(.-)()['\\"]%s*%)?")--[=[@as fun(): integer, integer, string, integer]=]
771
+ do
772
+ local original_name = name
773
+
774
+ ---Convert the mod name prefix if there is one
775
+ name = name:gsub("^__(.-)__", "%1")
776
+
777
+ --- Clusterio modules are structured with their source in 'plugin_name/module/'.
778
+ --- The loader rewrites this to 'modules/plugin_name/', so it appears as 'require("modules/plugin_name/file")'.
779
+ --- The loader also creates the file 'modules/plugin_name.lua' from 'plugin_name/module/module_exports.lua'
780
+ --- Do a back substitution of both changes for all paths except modules/clusterio, as the clusterio repo
781
+ --- has its sources at 'packages/host/modules/clusterio/api.lua'.
782
+ if args.clusterio_modules and not name:find("^modules/clusterio/") then
783
+ if name:find("^modules/[^/]-$") then
784
+ -- 'modules/plugin_name' -> 'modules/plugin_name/module_exports'
785
+ name = name .. "/module_exports"
786
+ end
787
+ -- 'modules/plugin_name/path/to/file' -> 'plugin_name/module/path/to/file'
788
+ name = name:gsub("^modules/([^/]-)/", "%1/module/")
789
+ end
790
+
791
+ ---If the path has slashes in it, it may also have an extension
792
+ ---the LS is not expecting. Factorio would also clobber any extension
793
+ ---to .lua anyway. This just strips it to go with the default \`?.lua\`
794
+ ---search pattern in "Lua.runtime.path"
795
+ ---The test pattern checks for a dotted name after the final slash
796
+ ---The replacement pattern then strips the last dotted segment
797
+ if name:match("[\\\\/][^\\\\/]-%.[^.\\\\/]+$") then
798
+ name = name:gsub("%.[^.\\\\/]+$", "")
799
+ end
800
+
801
+ if name ~= original_name and not util.is_disabled(f_require - 1, require_module_flag) then
802
+ util.add_diff(diffs, start, finish, name)
803
+ end
804
+ end
805
+ end
806
+
807
+ return {
808
+ replace = replace,
809
+ }
810
+ `;var ca={};ke(ca,{default:()=>av});var av=`--##
811
+
812
+ local util = require("factorio-plugin.util")
813
+ local storage_module_flag = util.module_flags.storage
814
+ local workspace
815
+ if not __plugin_dev then
816
+ workspace = require("workspace")
817
+ end
818
+
819
+ ---[a-zA-Z0-9_]
820
+ local identifier_char_lut = {["_"] = true}
821
+ do
822
+ ---@param from_char string
823
+ ---@param to_char string
824
+ local function add_range(from_char, to_char)
825
+ for byte = string.byte(from_char), string.byte(to_char) do
826
+ identifier_char_lut[string.char(byte)] = true
827
+ end
828
+ end
829
+ add_range("a", "z")
830
+ add_range("A", "Z")
831
+ add_range("0", "9")
832
+ end
833
+
834
+ ---Rename \`storage\` so we can tell them apart!
835
+ ---@param uri string @ The uri of file
836
+ ---@param text string @ The content of file
837
+ ---@param diffs Diff[] @ The diffs to add more diffs to
838
+ local function replace(uri, text, diffs)
839
+ ---Single Workspace/Folder OK, Multi Workspace OK, mods as root OK, mods_path as root uses __mods_path__
840
+ ---Match on mods folder
841
+ local this_mod, path_inside_mod = uri:match("mods[\\\\/]([^\\\\/]+)[\\\\/](.*)")
842
+ if not this_mod then
843
+ -- Being a bit more strict with a slash being before data as nobody should ever be renaming that folder
844
+ this_mod, path_inside_mod = uri:match("[\\\\/]data[\\\\/]([^\\\\/]+)[\\\\/](.*)")
845
+ end
846
+
847
+ if not this_mod then
848
+ path_inside_mod = uri
849
+ if __plugin_dev then
850
+ this_mod = "PluginDevModName"
851
+ else
852
+ this_mod = this_mod or workspace.getRootUri(uri)
853
+ this_mod = this_mod and this_mod:match("[^/\\\\]+$")
854
+ -- if \`this_mod\` is still nil at this point then we simply do nothing. using a fallback would
855
+ -- ultimately do nothing because all cases where it didn't find a mod name would use the fallback,
856
+ -- causing it to behave just the same as it would without using a fallback
857
+ end
858
+ end
859
+
860
+ if this_mod then
861
+ local inner_name = path_inside_mod:match("scenarios[\\\\/]([^\\\\/]+)[\\\\/]")
862
+ local inner_type = "s"
863
+ if not inner_name then
864
+ local level
865
+ inner_name,level = path_inside_mod:match("campaigns[\\\\/]([^\\\\/]+)[\\\\/]([^\\\\/]+)[\\\\/]")
866
+ inner_name = inner_name and inner_name .. "__" .. level
867
+ inner_type = "c"
868
+ end
869
+ if not inner_name then
870
+ inner_name = path_inside_mod:match("tutorials[\\\\/]([^\\\\/]+)[\\\\/]")
871
+ inner_type = "t"
872
+ end
873
+
874
+ if inner_name then
875
+ this_mod = this_mod.."__"..inner_type.."__"..inner_name
876
+ end
877
+ this_mod = this_mod:gsub("[^a-zA-Z0-9_]","_")
878
+ local storage_name = "__"..this_mod.."__storage"
879
+
880
+ util.reset_is_disabled_to_file_start()
881
+ for finish, ignore_pos, ignore_char in
882
+ string.gmatch(text, "storage%f[^a-zA-Z0-9_]()%s*()([=.%[]?)")--[[@as fun(): integer, integer, string]]
883
+ do
884
+ local start = finish - #"storage"
885
+ if identifier_char_lut[text:sub(start - 1, start - 1)] then goto continue end
886
+
887
+ local preceding_start = start - 16
888
+ local preceding_text = text:sub(preceding_start, start - 1)
889
+ local dot_pos = preceding_text:match("()%.%s*$")
890
+ if dot_pos then
891
+ dot_pos = preceding_start + dot_pos - 1
892
+ if text:sub(dot_pos - 1, dot_pos - 1) ~= "." -- If it's a concat, keep it.
893
+ and text:sub(dot_pos - 2, dot_pos - 1) ~= "_G" -- Keep indexes into _G
894
+ and text:sub(dot_pos - 4, dot_pos - 1) ~= "_ENV" -- and _ENV
895
+ then
896
+ goto continue
897
+ end
898
+ end
899
+
900
+ if (ignore_char == "" and not preceding_text:find("=%s*$") and not preceding_text:find("%.%.%s*$"))
901
+ or util.is_disabled(start, storage_module_flag)
902
+ then
903
+ goto continue
904
+ end
905
+
906
+ local before = text:sub(start - 1, start - 1)
907
+ if before ~= "" then
908
+ -- Put the newline on a separate diff before the one replacing 'storage',
909
+ -- otherwise hovers and syntax highlighting doesn't work.
910
+ -- This can cause issues if there is already a diff for that character,
911
+ -- which is why it's using add_or_append_diff.
912
+ util.add_or_append_diff(diffs, start - 1, before, " --\\n")
913
+ end
914
+ util.add_diff(diffs, start, finish, storage_name)
915
+ if ignore_char == "" then
916
+ ignore_pos = finish -- Move it directly next to \`storage\`, not past all the whitespace after it.
917
+ end
918
+ -- Put the diagnostic after the '.' otherwise code completion/suggestions don't work.
919
+ util.add_diff(diffs, ignore_pos, ignore_pos + #ignore_char, ignore_char.."---@diagnostic disable-line:undefined-global\\n")
920
+
921
+ ::continue::
922
+ end
923
+ end
924
+ end
925
+
926
+ return {
927
+ replace = replace,
928
+ }
929
+ `;var la={};ke(la,{default:()=>lv});var lv=`--##
930
+
931
+ local floor_div = __plugin_dev
932
+ and function(left, right) return math.floor(left / right) end
933
+ or load("return function(left, right) return left // right end")()
934
+ local band = __plugin_dev and bit32.band or load("return function(left, right) return left & right end")()
935
+ local bor = __plugin_dev and bit32.bor or load("return function(left, right) return left | right end")()
936
+ local bnot = __plugin_dev and bit32.bnot or load("return function(value) return ~value end")()
937
+
938
+ ---@type table<integer, Diff>
939
+ local diff_finish_pos_to_diff_map = {}
940
+
941
+ local function clean_up_diff_finished_pos_to_diff_map()
942
+ local next = next
943
+ local k = next(diff_finish_pos_to_diff_map)
944
+ while k do
945
+ local next_k = next(diff_finish_pos_to_diff_map, k)
946
+ diff_finish_pos_to_diff_map[k] = nil
947
+ k = next_k
948
+ end
949
+ end
950
+
951
+ ---extends the text of a ChainDiffElem or setting it if it is nil
952
+ ---@param elem ChainDiffElem
953
+ ---@param text string
954
+ local function extend_chain_diff_elem_text(elem, text)
955
+ if elem.text then
956
+ elem.text = elem.text.. text
957
+ else
958
+ elem.text = text
959
+ end
960
+ end
961
+
962
+ ---@param diffs Diff.ArrayWithCount
963
+ ---@param start integer
964
+ ---@param finish integer
965
+ ---@param replacement string
966
+ local function add_diff(diffs, start, finish, replacement)
967
+ -- Finish is treated as including, but we want excluding for consistency with chain diffs.
968
+ finish = finish - 1
969
+ local count = diffs.count
970
+ count = count + 1
971
+ diffs.count = count
972
+ ---@type Diff
973
+ local diff = {
974
+ start = start,
975
+ finish = finish,
976
+ text = replacement,
977
+ }
978
+ diffs[count] = diff
979
+ diff_finish_pos_to_diff_map[finish] = diff
980
+ end
981
+
982
+ ---@param diffs Diff.ArrayWithCount
983
+ ---@param position integer @ Position of a single character, instead of start and finish.
984
+ ---@param prev_char string @ The character at the given position, before replacements.
985
+ ---@param addition string @ The string to append after \`prev_char\`.
986
+ local function add_or_append_diff(diffs, position, prev_char, addition)
987
+ local diff = diff_finish_pos_to_diff_map[position]
988
+ if diff then
989
+ diff.text = diff.text..addition
990
+ else
991
+ return add_diff(diffs, position, position + 1, prev_char..addition)
992
+ end
993
+ end
994
+
995
+ ---@param diffs Diff.ArrayWithCount
996
+ local function remove_diff(diffs)
997
+ local count = diffs.count
998
+ diffs[count] = nil
999
+ diffs.count = count - 1
1000
+ end
1001
+
1002
+ ---if 'source' is a string wrapped in "" or '' get the string inside those quotes
1003
+ ---otherwise returns nil
1004
+ ---@param source string
1005
+ ---@return string|false
1006
+ local function try_parse_string_literal(source)
1007
+ ---@type string, integer
1008
+ local str, f_str = source:match("^[\\"']([^\\"']*)[\\"']%s*()")
1009
+ return f_str == #str and str
1010
+ end
1011
+
1012
+ ---@param chain_diff ChainDiffElem[]
1013
+ ---@param i_in_chain_diff number @ index of the elem in \`chain_diff\` that represents the source
1014
+ ---@param source string
1015
+ ---@param is_literal_contents? boolean @ is 'source' the contents of a literal string already
1016
+ ---@param do_not_pad_with_white_space? boolean @ when using literal identifiers they get padded with a blank space to acuminate for replacing the quotes. If \`true\`, that padding is not added
1017
+ local function use_source_to_index(chain_diff, i_in_chain_diff, source, is_literal_contents, do_not_pad_with_white_space)
1018
+ local contents = is_literal_contents and source or try_parse_string_literal(source)
1019
+ if contents and contents:match("^[a-zA-Z_][a-zA-Z0-9_]*$") then
1020
+ -- source is a literal string and a valid identifier
1021
+ extend_chain_diff_elem_text(chain_diff[i_in_chain_diff - 1], ".")
1022
+ chain_diff[i_in_chain_diff].text = (do_not_pad_with_white_space and "" or " ")..contents
1023
+ else
1024
+ -- source is a variable, expression or literal string which is an invalid identifier
1025
+ extend_chain_diff_elem_text(chain_diff[i_in_chain_diff - 1], "[")
1026
+ extend_chain_diff_elem_text(chain_diff[i_in_chain_diff + 1], "]")
1027
+ -- leaves chain_diff[i_in_chain_diff] untouched
1028
+ end
1029
+ end
1030
+
1031
+ ---@class ChainDiffElem
1032
+ ---@field i integer @ index within the text of the file
1033
+ ---@field text nil|string @ text replacing from this elem's \`i\` including to the next elem's \`i\` excluding. When nil no diff will be created. If the last elem has \`text\` it will treat it as if there was another elem after with with the same \`i\`
1034
+
1035
+ ---creates diffs according to the chain_diff. See ChainDiffElem class description for how it works
1036
+ ---@param chain_diff ChainDiffElem[]
1037
+ ---@param diffs Diff.ArrayWithCount
1038
+ local function add_chain_diff(chain_diff, diffs)
1039
+ local prev_chain_diff_elem = chain_diff[1]
1040
+ if not prev_chain_diff_elem then return end
1041
+ for i = 2, #chain_diff do
1042
+ local chain_diff_elem = chain_diff[i]
1043
+ if prev_chain_diff_elem.text then
1044
+ local count = diffs.count
1045
+ count = count + 1
1046
+ diffs.count = count
1047
+ local finish = chain_diff_elem.i - 1 -- finish is treated as including, which we don't want
1048
+ ---@type Diff
1049
+ local diff = {
1050
+ start = prev_chain_diff_elem.i,
1051
+ finish = finish,
1052
+ text = prev_chain_diff_elem.text,
1053
+ }
1054
+ diffs[count] = diff
1055
+ diff_finish_pos_to_diff_map[finish] = diff
1056
+ end
1057
+ prev_chain_diff_elem = chain_diff_elem
1058
+ end
1059
+ if prev_chain_diff_elem.text then
1060
+ local count = diffs.count
1061
+ count = count + 1
1062
+ diffs.count = count
1063
+ local finish = prev_chain_diff_elem.i - 1
1064
+ ---@type Diff
1065
+ local diff = {
1066
+ start = prev_chain_diff_elem.i,
1067
+ finish = finish,
1068
+ text = prev_chain_diff_elem.text,
1069
+ }
1070
+ diffs[count] = diff
1071
+ diff_finish_pos_to_diff_map[finish] = diff
1072
+ end
1073
+ end
1074
+
1075
+ ---@enum PluginDisableFlags
1076
+ local module_flags = {
1077
+ none = 0,
1078
+ command_line = 1,
1079
+ storage = 2,
1080
+ object_name = 4,
1081
+ remote_add = 8,
1082
+ remote_call = 16,
1083
+ require = 32,
1084
+ all = 63,
1085
+ }
1086
+
1087
+ ---Always contains 1 element.\\
1088
+ ---This element must exist because the binary search expects at least 1 element. It searches for a value <=
1089
+ ---the given position, but this has to be 0 because 1 could be an index in the actual code already. So this 0
1090
+ ---basically defines the range starting at "before the code" until the first position, exclusive.
1091
+ ---@type integer[]
1092
+ local ranges = {0}
1093
+ ---@type PluginDisableFlags[]
1094
+ local ranges_flags = {module_flags.none} -- Indexes match up with \`disabled_positions\`.
1095
+ local ranges_count = 1
1096
+ local ranges_current_lower_bound = 0 -- Zero based.
1097
+
1098
+ ---@param position integer @ The position to search for in \`ranges\`.
1099
+ ---@return integer found_index @ The position at this index is the greatest position which is <= \`position\`.
1100
+ local function binary_search_ranges(position)
1101
+ local lower_bound = ranges_current_lower_bound -- Zero based, inclusive.
1102
+ local upper_bound = ranges_count -- Zero based, exclusive.
1103
+ repeat
1104
+ local i = floor_div(lower_bound + upper_bound, 2)
1105
+ if ranges[i + 1] <= position then
1106
+ lower_bound = i + 1 -- It's inclusive, so +1 to make it not check this index twice.
1107
+ else
1108
+ upper_bound = i -- It's exclusive, it won't check this index twice.
1109
+ end
1110
+ until lower_bound == upper_bound
1111
+ return lower_bound - 1
1112
+ end
1113
+
1114
+ ---@param position integer
1115
+ ---@param flag PluginDisableFlags
1116
+ ---@return boolean
1117
+ local function is_disabled(position, flag)
1118
+ local index = binary_search_ranges(position)
1119
+ ranges_current_lower_bound = index
1120
+ local flags = ranges_flags[index + 1] -- + 1 to go from zero to one based.
1121
+ return band(flags, flag) ~= 0
1122
+ end
1123
+
1124
+ local function reset_is_disabled_to_file_start()
1125
+ ranges_current_lower_bound = 0
1126
+ end
1127
+
1128
+ local function clean_up_disabled_data()
1129
+ -- Not \`nil\`ing out \`ranges\` nor \`ranges_flags\` because count is tracked separately.
1130
+ -- Lua doesn't shrink tables anyway, and even if LuaLS's version of Lua does shrink
1131
+ -- tables, we don't want it to shrink these tables, because they're constantly reused.
1132
+ ranges_count = 1
1133
+ ranges_current_lower_bound = 0
1134
+ end
1135
+
1136
+ ---@param position integer @ One based.
1137
+ ---@param flags PluginDisableFlags
1138
+ local function append_range_flags(position, flags)
1139
+ if ranges_flags[ranges_count] == flags then return end
1140
+ ranges_count = ranges_count + 1
1141
+ ranges[ranges_count] = position
1142
+ ranges_flags[ranges_count] = flags
1143
+ end
1144
+
1145
+ ---@param index integer @ Zero based. Can be past \`ranges_count\`. Otherwise must be
1146
+ ---the index of a position which is equal or adjacent to the given position arg.
1147
+ ---@param position integer @ One based.
1148
+ ---@param flags PluginDisableFlags
1149
+ ---@return integer? modified_index @ Non \`nil\` when flags got set at a different \`index\`.
1150
+ ---(Can also still return the same index as given by the \`index\` arg.)
1151
+ local function set_flags_at(index, position, flags)
1152
+ if index > ranges_count then
1153
+ -- assert(index == ranges_count + 1) -- This assert is true, but it doesn't really matter.
1154
+ return append_range_flags(position, flags)
1155
+ end
1156
+ local pos_at_index = ranges[index]
1157
+ if pos_at_index == position then -- Same position, just overwrite.
1158
+ -- Even if this causes 2 consecutive ranges to have the same flags, it's not worth using \`table.remove\`.
1159
+ ranges_flags[index] = flags
1160
+ return
1161
+ end
1162
+ if pos_at_index < position then -- Greater position, insert after \`index\`.
1163
+ if index == ranges_count then -- Appending is faster than inserting.
1164
+ return append_range_flags(position, flags) -- Tail call.
1165
+ end
1166
+ index = index + 1
1167
+ end
1168
+ if ranges_flags[index - 1] == flags then return end -- Phew, nothing to do, don't have to insert.
1169
+ if ranges_flags[index] == flags then -- Phew, can just move the next range to start a bit earlier.
1170
+ ranges[index] = position
1171
+ return index
1172
+ end
1173
+ -- Alright fine, has to insert.
1174
+ ranges_count = ranges_count + 1
1175
+ table.insert(ranges, index, position)
1176
+ table.insert(ranges_flags, index, flags)
1177
+ return index
1178
+ end
1179
+
1180
+ ---@param start_position integer @ One based, inclusive. Is allowed to be \`== ranges[ranges_count]\`.
1181
+ ---@param stop_position integer? @ Default: infinity. One based, exclusive. Must be > \`start_position\`.
1182
+ ---@param start_flags PluginDisableFlags
1183
+ ---@param stop_flags PluginDisableFlags
1184
+ local function append_flags_range(start_position, stop_position, start_flags, stop_flags)
1185
+ set_flags_at(ranges_count, start_position, start_flags) -- Will overwrite at \`ranges_count\` or append.
1186
+ if stop_position then
1187
+ return append_range_flags(stop_position, stop_flags) -- Tail call.
1188
+ end
1189
+ end
1190
+
1191
+ ---@param start_position integer @ One based, inclusive.
1192
+ ---@param stop_position integer? @ Default: infinity. One based, exclusive. Must be >= \`start_position\`.
1193
+ ---@param flags_to_combine PluginDisableFlags
1194
+ ---@param binary_op fun(left: integer, right: integer): integer
1195
+ local function combine_flags_for_range(start_position, stop_position, flags_to_combine, binary_op)
1196
+ if start_position == stop_position then return end
1197
+
1198
+ if start_position >= ranges[ranges_count] then -- Update last or append.
1199
+ local original_flags = ranges_flags[ranges_count]
1200
+ local combined_flags = binary_op(original_flags, flags_to_combine)
1201
+ return append_flags_range(start_position, stop_position, combined_flags, original_flags) -- Tail call.
1202
+ end
1203
+
1204
+ -- +1 to make it 1 based.
1205
+ local index = binary_search_ranges(start_position) + 1
1206
+ local original_flags = ranges_flags[index] -- The flags to restore at \`stop_position\`.
1207
+ index = set_flags_at(index, start_position, binary_op(original_flags, flags_to_combine)) or index
1208
+
1209
+ stop_position = stop_position or (1/0)
1210
+ index = index + 1
1211
+ while index <= ranges_count do
1212
+ if ranges[index] >= stop_position then break end
1213
+ original_flags = ranges_flags[index] -- Update the flags to restore.
1214
+ ranges_flags[index] = binary_op(original_flags, flags_to_combine)
1215
+ index = index + 1
1216
+ end
1217
+
1218
+ if stop_position ~= (1/0) then
1219
+ if ranges[index] == stop_position then return end -- Do not overwrite, only insert or append.
1220
+ -- The reason is that if there already is a range start at this stop_index, then the range
1221
+ -- that just got set is already terminated properly. Overwriting would just break the next range.
1222
+ return set_flags_at(index, stop_position, original_flags) -- Tail call.
1223
+ end
1224
+ end
1225
+
1226
+ ---@param start_position integer
1227
+ ---@param stop_position integer? @ Default: infinity. One based, exclusive. Must be > \`start_position\`.
1228
+ ---@param flags_to_add PluginDisableFlags
1229
+ local function add_flags_to_range(start_position, stop_position, flags_to_add)
1230
+ return combine_flags_for_range(start_position, stop_position, flags_to_add, bor) -- Tail call.
1231
+ end
1232
+
1233
+ ---@param start_position integer
1234
+ ---@param stop_position integer? @ Default: infinity. One based, exclusive. Must be > \`start_position\`.
1235
+ ---@param flags_to_remove PluginDisableFlags
1236
+ local function remove_flags_from_range(start_position, stop_position, flags_to_remove)
1237
+ return combine_flags_for_range(start_position, stop_position, bnot(flags_to_remove), band) -- Tail call.
1238
+ end
1239
+
1240
+ local module_name_intellisense = [[
1241
+ __plugin_dummy(({---@diagnostic disable-line:undefined-global
1242
+ ---Removal of \`/c\` and friends at the start of a line.
1243
+ command_line=true,
1244
+ ---Replacement of expressions involving \`storage\` to help the language sever distinguish storage tables between different mods.
1245
+ storage=true,
1246
+ ---Hacks for \`remote.add_interface\` to look like table assignments, allowing the remote_add hack to provide intellisense.
1247
+ remote_add=true,
1248
+ ---Hacks for \`remote.call\` to look like table indexes into a fake table with all found remote interfaces to provide intellisense.
1249
+ remote_call=true,
1250
+ ---Mainly removal of the \`__\` in \`require("__mod-name__.file")\` for better cross mod file resolution.
1251
+ require=true,
1252
+ }).]]
1253
+
1254
+ ---@type integer[]|{count: integer}
1255
+ local line_start_slashes = {count = 0}
1256
+
1257
+ local parse_strings_comments_and_annotations
1258
+ do
1259
+ ---@type string
1260
+ local source
1261
+ ---@type Diff.ArrayWithCount
1262
+ local diffs
1263
+ ---@type integer?
1264
+ local cursor
1265
+ ---@type integer
1266
+ local line_start
1267
+
1268
+ ---\`cursor\` must not be \`nil\`.\\
1269
+ ---Tries matching the given pattern at the current cursor and advances the cursor if successful.
1270
+ ---@param pattern string
1271
+ ---@return boolean @ Did it match?
1272
+ local function take(pattern)
1273
+ local _, stop = string.find(source, pattern, cursor)
1274
+ if not stop then return false end
1275
+ cursor = stop + 1
1276
+ return true
1277
+ end
1278
+
1279
+ ---Parse a opening long bracket, like \`[[\` or \`[=[\`
1280
+ ---Assumes the first bracket has already been consumed.
1281
+ ---@return integer? level @ \`nil\` when there isn't a valid open bracket.
1282
+ local function parse_long_bracket_open()
1283
+ -- Consume all the '='s
1284
+ local match = source:match("^=*%[()", cursor)
1285
+ if not match then return nil end
1286
+ local level = match - cursor - 1
1287
+ cursor = match
1288
+ return level
1289
+ end
1290
+
1291
+ ---@param start_position integer
1292
+ ---@param quote \`"\`|\`'\`
1293
+ local function parse_short_string(start_position, quote)
1294
+ local pattern = "()[\\\\"..quote.."\\r\\n]"
1295
+ while cursor do
1296
+ cursor = string.match(source, pattern, cursor)
1297
+ if not cursor then return end
1298
+ if not take("^\\\\") then
1299
+ cursor = cursor + 1 -- Consume quote or newline (Don't care about 2 char wide newlines).
1300
+ add_flags_to_range(start_position, cursor, module_flags.all)
1301
+ return
1302
+ end
1303
+ -- \`\\\` has been consumed.
1304
+ local escaped_char = source:sub(cursor, cursor)
1305
+ cursor = cursor + 1 -- Consume escaped char.
1306
+ if escaped_char == "z" then
1307
+ cursor = string.match(source, "^%s*()", cursor)
1308
+ goto continue
1309
+ end
1310
+ if escaped_char == "\\n" or escaped_char == "\\r" then
1311
+ if string.find(source, escaped_char == "\\n" and "^\\r" or "^\\n", cursor) then
1312
+ -- Handle \`\\r\\n\` and \`\\n\\r\` in source files. They are both treated as a single newline in Lua.
1313
+ -- (And they are converted to just \`\\n\`, but we don't care about that here.)
1314
+ cursor = cursor + 1
1315
+ end
1316
+ goto continue
1317
+ end
1318
+ -- All other escaped characters, valid or not, don't require special handling.
1319
+ ::continue::
1320
+ end
1321
+ end
1322
+
1323
+ ---@param start_position integer
1324
+ ---@param level integer @ The amount of \`=\` between the square brackets
1325
+ local function parse_long_string(start_position, level)
1326
+ cursor = string.match(source, "%]"..string.rep("=", level).."%]()", cursor)
1327
+ add_flags_to_range(start_position, cursor, module_flags.all)
1328
+ end
1329
+
1330
+ ---@return PluginDisableFlags
1331
+ local function parse_module_flags_list()
1332
+ local flags = module_flags.none
1333
+ repeat
1334
+ local s_module_name, module_name, f_module_name, p_comma
1335
+ local start_pos = cursor--[[@as integer]]
1336
+ ---@type integer, string, integer, integer, integer
1337
+ s_module_name, module_name, f_module_name, p_comma, cursor
1338
+ = string.match(source, "^[^%S\\r\\n]*()([%a_]*)()[^%S\\r\\n]*(),?()", cursor)
1339
+ local module_flag = module_flags[module_name]
1340
+ if not module_flag then-- Invalid 'module_name'.
1341
+ -- Add a newline followed by a function call (to make it valid both as a statement and in
1342
+ -- table constructors). The first argument to the call is a table constructor wrapped in
1343
+ -- '()' followed by '.' to instantly index into that constructed table. The table contains
1344
+ -- all the valid module names with a short comment describing what that module does.
1345
+ add_diff(diffs, start_pos - 1, start_pos,
1346
+ string.sub(source, start_pos - 1, start_pos - 1).."\\n"..module_name_intellisense
1347
+ )
1348
+ -- Must be split into 2 diffs like this to actually get the intellisense from the "table index".
1349
+ -- Using an undefined global to get a warning. Extra ',' in the argument list to ensure
1350
+ -- there is an error visible to the programmer, even with undefined global warnings disabled.
1351
+ -- ';' at the end because it is valid both in statement and in table constructor context.
1352
+ add_diff(diffs, s_module_name, f_module_name,
1353
+ module_name..","..(module_name == "" and "missing" or "invalid").."_module_name,);--"
1354
+ )
1355
+ goto continue
1356
+ end
1357
+ -- if band(flags, module_flag) ~= 0 then end -- Duplicate 'module_name' in list.
1358
+ flags = bor(flags, module_flag)
1359
+ ::continue::
1360
+ until p_comma == cursor
1361
+ return flags
1362
+ end
1363
+
1364
+ local valid_tags_lut = {
1365
+ ["disable-next-line"] = true,
1366
+ ["disable-line"] = true,
1367
+ ["disable"] = true,
1368
+ ["enable"] = true,
1369
+ }
1370
+
1371
+ ---@param init_position integer
1372
+ ---@return integer?
1373
+ local function find_next_line_start(init_position)
1374
+ local char, pos = string.match(source, "([\\r\\n])()", init_position)
1375
+ if not char then return end
1376
+ return string.find(source, char == "\\n" and "^\\r" or "^\\n", init_position)
1377
+ and pos + 1
1378
+ or pos
1379
+ end
1380
+
1381
+ ---@param init_position integer
1382
+ ---@return integer
1383
+ local function find_next_line_start_or_eof(init_position)
1384
+ return find_next_line_start(init_position) or (#source + 1)
1385
+ end
1386
+
1387
+ local function parse_plugin_annotation()
1388
+ ---@cast cursor -nil
1389
+ ---@type integer, string, integer, integer
1390
+ local s_tag, tag, colon_pos, done_pos = string.match(source, "^[^%S\\r\\n]*()([%a%-]*)[^%S\\r\\n]*():?()", cursor)
1391
+ if (cursor == s_tag and tag == "")
1392
+ or (cursor ~= s_tag and not valid_tags_lut[tag])
1393
+ then
1394
+ add_diff(diffs, cursor - #"plugin", cursor, "diagnostic") -- To get disable/enable etc suggestions.
1395
+ return
1396
+ end
1397
+ if cursor == s_tag then return end -- It isn't actually an ---@plugin annotation.
1398
+
1399
+ cursor = done_pos
1400
+ local flags = colon_pos == done_pos
1401
+ and module_flags.all -- No colon.
1402
+ or parse_module_flags_list() -- Has colon, must have a list of flags.
1403
+
1404
+ if flags == module_flags.none then return end -- Short circuit.
1405
+
1406
+ if tag == "disable-next-line" then
1407
+ local next_line_start = find_next_line_start(done_pos)
1408
+ if next_line_start then
1409
+ add_flags_to_range(next_line_start, find_next_line_start_or_eof(next_line_start), flags)
1410
+ end
1411
+ elseif tag == "disable-line" then
1412
+ add_flags_to_range(line_start, find_next_line_start_or_eof(done_pos), flags)
1413
+ elseif tag == "disable" then
1414
+ add_flags_to_range(cursor, nil, flags)
1415
+ elseif tag == "enable" then
1416
+ remove_flags_from_range(cursor, nil, flags)
1417
+ else
1418
+ error("Impossible tag "..tostring(tag).." because the tag has already been checked using valid_tags_lut.")
1419
+ end
1420
+ end
1421
+
1422
+ local function process_start_of_line()
1423
+ if not cursor then return end
1424
+ line_start = cursor -- The next line starts after the newline character. Cursor has already advanced.
1425
+ if take("^/") then
1426
+ line_start_slashes.count = line_start_slashes.count + 1
1427
+ line_start_slashes[line_start_slashes.count] = line_start
1428
+ end
1429
+ -- During the creation of \`ranges\` and \`ranges_flags\` there can be overlapping ranges,
1430
+ -- mainly due to ---@plugin disable-next-line and disable-line.
1431
+ -- When this happens, the functions for adding or removing flags for ranges perform
1432
+ -- binary searches to find the index to insert at. However since overlapping ranges can
1433
+ -- only occur within the current line, once done with a line the lower bound can be shifted up.
1434
+ if line_start >= ranges[ranges_count] then
1435
+ ranges_current_lower_bound = ranges_count
1436
+ else -- There are already ranges on this next line, find the index for the start of the line.
1437
+ ranges_current_lower_bound = binary_search_ranges(line_start)
1438
+ end
1439
+ end
1440
+
1441
+ ---@param start_position integer
1442
+ local function parse_short_comment(start_position)
1443
+ if take("^%-") then
1444
+ cursor = string.match(source, "^[^%S\\r\\n]*()", cursor)
1445
+ if take("^@plugin") then
1446
+ parse_plugin_annotation()
1447
+ end
1448
+ end
1449
+ -- Technically in Lua newline chars are not part of the single line comment anymore,
1450
+ -- however this distinction does not matter here, in fact this is more efficient
1451
+ -- because it can allow for ranges to be combined into 1.
1452
+ cursor = find_next_line_start(cursor)
1453
+ add_flags_to_range(start_position, cursor, module_flags.all)
1454
+ process_start_of_line()
1455
+ end
1456
+
1457
+ local function parse()
1458
+ while cursor do
1459
+ local current_char
1460
+ -- rapid advance to the next interesting character
1461
+ current_char, cursor = string.match(source, "([-[\\"'\\r\\n])()", cursor)
1462
+ if not cursor then break end
1463
+ local anchor = cursor - 1 -- -1 because \`cursor\` already advanced past \`current_char\`.
1464
+
1465
+ if current_char == "-" then
1466
+ if not take("^%-") then goto continue end
1467
+ if not take("^%[") then
1468
+ parse_short_comment(anchor)
1469
+ goto continue
1470
+ end
1471
+ -- \`[\` has been consumed.
1472
+ local level = parse_long_bracket_open()
1473
+ if level then
1474
+ parse_long_string(anchor, level)
1475
+ else
1476
+ cursor = cursor - 1 -- Don't consume \`[\`.
1477
+ parse_short_comment(anchor)
1478
+ end
1479
+ elseif current_char == "[" then
1480
+ local level = parse_long_bracket_open()
1481
+ if level then
1482
+ parse_long_string(anchor, level)
1483
+ end
1484
+ elseif current_char == '"' or current_char == "'" then
1485
+ parse_short_string(anchor, current_char)
1486
+ elseif current_char == "\\r" or current_char == "\\n" then
1487
+ process_start_of_line()
1488
+ else
1489
+ error("Impossible current_char '"..tostring(current_char).."'.")
1490
+ end
1491
+ ::continue::
1492
+ end
1493
+ end
1494
+
1495
+ ---Lexically analyze Lua source files for positions of strings and comments.
1496
+ ---Notably, this needs to be able to handle 'long brackets', which are context-sensitive.
1497
+ ---Also parses ---@plugin annotations.
1498
+ ---This is only run once per file.
1499
+ ---@param text string
1500
+ ---@param diffs_array Diff.ArrayWithCount
1501
+ function parse_strings_comments_and_annotations(text, diffs_array)
1502
+ source = text
1503
+ diffs = diffs_array
1504
+ cursor = 1 -- 1 is the first character in the source file.
1505
+ line_start = 1
1506
+ line_start_slashes.count = 0
1507
+ parse()
1508
+ -- If it is currently still inside of a string or comment, that range will not get closed.
1509
+ -- That's fine however because nothing will be checking if a position past the end of the
1510
+ -- file is code, a string or a comment.
1511
+ end
1512
+ end
1513
+
1514
+ ---@param text string
1515
+ ---@param diffs Diff.ArrayWithCount
1516
+ local function on_pre_process_file(text, diffs)
1517
+ parse_strings_comments_and_annotations(text, diffs)
1518
+ end
1519
+
1520
+ local function on_post_process_file()
1521
+ clean_up_diff_finished_pos_to_diff_map()
1522
+ clean_up_disabled_data()
1523
+ end
1524
+
1525
+ return {
1526
+ module_flags = module_flags,
1527
+ is_disabled = is_disabled,
1528
+ reset_is_disabled_to_file_start = reset_is_disabled_to_file_start,
1529
+ add_diff = add_diff,
1530
+ add_or_append_diff = add_or_append_diff,
1531
+ remove_diff = remove_diff,
1532
+ add_chain_diff = add_chain_diff,
1533
+ extend_chain_diff_elem_text = extend_chain_diff_elem_text,
1534
+ try_parse_string_literal = try_parse_string_literal,
1535
+ use_source_to_index = use_source_to_index,
1536
+ line_start_slashes = line_start_slashes,
1537
+ on_pre_process_file = on_pre_process_file,
1538
+ on_post_process_file = on_post_process_file,
1539
+ }
1540
+ `;var ua={};ke(ua,{default:()=>dv});var dv=`---@meta\r
1541
+ \r
1542
+ ---@class event_handler\r
1543
+ ---@field events? event_handler.events\r
1544
+ ---@field on_nth_tick? {[number]:fun(event:NthTickEventData)}\r
1545
+ ---@field on_init? fun()\r
1546
+ ---@field on_load? fun()\r
1547
+ ---@field on_configuration_changed? fun(data:ConfigurationChangedData)\r
1548
+ ---@field add_remote_interface? fun()\r
1549
+ ---@field add_commands? fun()\r
1550
+ \r
1551
+ ---@class event_handler_lib\r
1552
+ local handler = {}\r
1553
+ \r
1554
+ ---@param lib event_handler\r
1555
+ handler.add_lib = function(lib) end\r
1556
+ \r
1557
+ ---@param libs event_handler[]\r
1558
+ handler.add_libraries = function(libs) end\r
1559
+ \r
1560
+ return handler`;var da={};ke(da,{default:()=>pv});var pv=`---@meta\r
1561
+ \r
1562
+ ---@class meld\r
1563
+ ---@field private control_marker meld.control_marker\r
1564
+ ---@field private control_handlers meld.control_handlers\r
1565
+ ---@overload fun(target:table, source:table):table\r
1566
+ local meld = {}\r
1567
+ \r
1568
+ ---@class (exact) meld.control_marker\r
1569
+ meld.control_marker = {} -- empty but unique table used as a marker\r
1570
+ \r
1571
+ ---@class meld.control_handlers\r
1572
+ meld.control_handlers = {}\r
1573
+ \r
1574
+ ---@class (exact) meld.control_op\r
1575
+ ---@field marker meld.control_marker\r
1576
+ \r
1577
+ ---@class (exact) meld.delete_op : meld.control_op\r
1578
+ ---@field op "delete"\r
1579
+ \r
1580
+ ---@return meld.delete_op\r
1581
+ meld.delete = function() end\r
1582
+ \r
1583
+ meld.control_handlers.delete = function(target, k, v)\r
1584
+ target[k] = nil\r
1585
+ end\r
1586
+ \r
1587
+ ---@class (exact) meld.overwrite_op : meld.control_op\r
1588
+ ---@field op "overwrite"\r
1589
+ ---@field data any\r
1590
+ \r
1591
+ ---@return meld.overwrite_op\r
1592
+ meld.overwrite = function(new) end\r
1593
+ \r
1594
+ meld.control_handlers.overwrite = function(target, k, v)\r
1595
+ target[k] = util.copy(v.data)\r
1596
+ end\r
1597
+ \r
1598
+ ---@class (exact) meld.invoke_op : meld.control_op\r
1599
+ ---@field op "invoke"\r
1600
+ ---@field fct fun(v:any):any\r
1601
+ \r
1602
+ ---@return meld.invoke_op\r
1603
+ meld.invoke = function(fct) end\r
1604
+ \r
1605
+ meld.control_handlers.invoke = function(target, k, v)\r
1606
+ target[k] = v.fct(target[k])\r
1607
+ end\r
1608
+ \r
1609
+ ---@class (exact) meld.append_op : meld.control_op\r
1610
+ ---@field op "append"\r
1611
+ ---@field data any[]\r
1612
+ \r
1613
+ ---@return meld.append_op\r
1614
+ meld.append = function(data) end\r
1615
+ meld.control_handlers.append = function(target, k, v)\r
1616
+ for _, to_append in pairs(v.data) do\r
1617
+ table.insert(target[k], util.copy(to_append))\r
1618
+ end\r
1619
+ end\r
1620
+ \r
1621
+ --- recursive table merge but it reuses target table (does not deepcopy it). When target is not to be reused or more than\r
1622
+ --- 2 tables are to be merged, consider using util.merge. When there is conflict of 2 values, a value from the source will\r
1623
+ --- win overwriting the existing value. There are also control structures available for extra operations that would not\r
1624
+ --- be possible under normal merge rules\r
1625
+ ---@generic T\r
1626
+ ---@param target T\r
1627
+ ---@param source table\r
1628
+ ---@return T\r
1629
+ meld.meld = function(target, source) end\r
1630
+ \r
1631
+ return meld`;var fa={};ke(fa,{default:()=>mv});var mv=`---@meta\r
1632
+ \r
1633
+ --[[\r
1634
+ Hello script explorer, if you are looking to upgrade your mod to use the mod gui, its pretty simple.\r
1635
+ \r
1636
+ Typically you will have something like: \`player.gui.left.add{...}\`\r
1637
+ \r
1638
+ All you will need to do, is change it to:\r
1639
+ \`\`\`lua\r
1640
+ mod_gui.get_frame_flow(player).add{...}\r
1641
+ \`\`\`\r
1642
+ \r
1643
+ And for buttons its just the same:\r
1644
+ \`\`\`lua\r
1645
+ mod_gui.get_button_flow(player).add{...}\r
1646
+ \`\`\`\r
1647
+ \r
1648
+ It should be as simple as find and replace.\r
1649
+ Any other questions please feel free to ask on the modding help forum.\r
1650
+ ]]\r
1651
+ ---@class mod-gui\r
1652
+ local mod_gui = {\r
1653
+ button_style = 'mod_gui_button',\r
1654
+ frame_style = 'non_draggable_frame'\r
1655
+ }\r
1656
+ \r
1657
+ ---@param player LuaPlayer\r
1658
+ ---@return LuaGuiElement #The mod_gui button flow\r
1659
+ function mod_gui.get_button_flow(player) end\r
1660
+ \r
1661
+ ---@param player LuaPlayer\r
1662
+ ---@return LuaGuiElement #The mod_gui frame flow\r
1663
+ function mod_gui.get_frame_flow(player) end\r
1664
+ \r
1665
+ return mod_gui`;var pa={};ke(pa,{default:()=>_v});var _v=`---@meta
1666
+
1667
+ ---Will create a list of sound definitions.
1668
+ ---
1669
+ ---Uses the filename pattern of \`"filepath".."-"..K..".ogg"\` where K is the variation number.
1670
+ ---@param filename_string string
1671
+ ---@param variations integer
1672
+ ---@param volume_parameter? float
1673
+ ---@param modifiers_parameter? data.SoundModifier[]|data.SoundModifier
1674
+ ---@return data.SoundDefinition[]
1675
+ function sound_variations(filename_string, variations, volume_parameter, modifiers_parameter) end
1676
+
1677
+ ---Will create a list of sound definitions with volume variations.
1678
+ ---
1679
+ ---Uses the filename pattern of \`"filepath".."-"..K..".ogg"\` where K is the variation number.
1680
+ ---@param filename_string string
1681
+ ---@param variations integer
1682
+ ---@param min_volume? float
1683
+ ---@param max_volume? float
1684
+ ---@param modifiers_parameter? data.SoundModifier[]|data.SoundModifier
1685
+ ---@return data.SoundDefinition[]
1686
+ function sound_variations_with_volume_variations(filename_string, variations, min_volume, max_volume, modifiers_parameter) end
1687
+
1688
+ ---@param type_parameter data.SoundModifierType
1689
+ ---@param volume_multiplier_parameter float
1690
+ ---@return data.SoundModifier
1691
+ function volume_multiplier(type_parameter, volume_multiplier_parameter) end
1692
+ `;var ha={};ke(ha,{default:()=>yv});var yv=`---@meta\r
1693
+ \r
1694
+ ---@class util\r
1695
+ util = {\r
1696
+ table = {}\r
1697
+ }\r
1698
+ \r
1699
+ ---Deep copies a table\r
1700
+ ---@generic T\r
1701
+ ---@param object T\r
1702
+ ---@return T\r
1703
+ function table.deepcopy(object) end\r
1704
+ \r
1705
+ ---Compares a table for shallow equality\r
1706
+ ---@param tbl1 any\r
1707
+ ---@param tbl2 any\r
1708
+ ---@return boolean\r
1709
+ function table.compare(tbl1, tbl2) end\r
1710
+ \r
1711
+ util.table.deepcopy = table.deepcopy\r
1712
+ util.table.compare = table.compare\r
1713
+ util.copy = util.table.deepcopy\r
1714
+ \r
1715
+ ---The distance between two MapPositions\r
1716
+ ---@param position1 MapPosition\r
1717
+ ---@param position2 MapPosition\r
1718
+ ---@return double\r
1719
+ function util.distance(position1, position2) end\r
1720
+ \r
1721
+ ---@param pos MapPosition\r
1722
+ ---@return string\r
1723
+ function util.positiontostr(pos) end\r
1724
+ \r
1725
+ ---@param ticks uint\r
1726
+ ---@return string\r
1727
+ function util.formattime(ticks) end\r
1728
+ \r
1729
+ --- supports 'rrggbb', 'rgb', 'rrggbbaa', 'rgba', 'ww', 'w'\r
1730
+ ---@param hex string\r
1731
+ ---@return Color\r
1732
+ function util.color(hex) end\r
1733
+ \r
1734
+ ---Multiplies all color channels by alpha\r
1735
+ ---@generic T: Color\r
1736
+ ---@param color T\r
1737
+ ---@return T\r
1738
+ function util.premul_color(color) end\r
1739
+ \r
1740
+ ---Mixes two colors together\r
1741
+ ---@param c1 Color\r
1742
+ ---@param c2 Color\r
1743
+ ---@return Color\r
1744
+ function util.mix_color(c1, c2) end\r
1745
+ \r
1746
+ ---@param c1 Color\r
1747
+ ---@param n number\r
1748
+ ---@return Color\r
1749
+ function util.multiply_color(c1, n) end\r
1750
+ \r
1751
+ ---@param color Color\r
1752
+ ---@param alpha number\r
1753
+ ---@param normalized_alpha boolean?\r
1754
+ ---@return Color\r
1755
+ function util.get_color_with_alpha(color, alpha, normalized_alpha) end\r
1756
+ \r
1757
+ ---@type {[defines.direction]:Vector}\r
1758
+ util.direction_vectors = {\r
1759
+ [defines.direction.north] = { 0, -1 },\r
1760
+ [defines.direction.northnortheast] = { 1, -2 },\r
1761
+ [defines.direction.northeast] = { 1, -1 },\r
1762
+ [defines.direction.eastnortheast] = { 2, -1 },\r
1763
+ [defines.direction.east] = { 1, 0 },\r
1764
+ [defines.direction.eastsoutheast] = { 2, 1 },\r
1765
+ [defines.direction.southeast] = { 1, 1 },\r
1766
+ [defines.direction.southsoutheast] = { 1, 2 },\r
1767
+ [defines.direction.south] = { 0, 1 },\r
1768
+ [defines.direction.southsouthwest] = {-1, 2 },\r
1769
+ [defines.direction.southwest] = {-1, 1 },\r
1770
+ [defines.direction.westsouthwest] = {-2, 1 },\r
1771
+ [defines.direction.west] = {-1, 0 },\r
1772
+ [defines.direction.westnorthwest] = {-2, -1 },\r
1773
+ [defines.direction.northwest] = {-1, -1 },\r
1774
+ [defines.direction.northnorthwest] = {-1, -2 },\r
1775
+ }\r
1776
+ \r
1777
+ ---@param position Vector\r
1778
+ ---@param direction defines.direction\r
1779
+ ---@param distance number\r
1780
+ ---@return Vector\r
1781
+ function util.moveposition(position, direction, distance) end\r
1782
+ \r
1783
+ \r
1784
+ ---@param position Vector\r
1785
+ ---@param orientation number\r
1786
+ ---@return Vector\r
1787
+ function util.rotate_position(position, orientation) end\r
1788
+ \r
1789
+ ---@param direction defines.direction\r
1790
+ ---@return defines.direction\r
1791
+ function util.oppositedirection(direction) end\r
1792
+ \r
1793
+ ---@param count integer\r
1794
+ ---@param stripes table\r
1795
+ ---@return table\r
1796
+ function util.multiplystripes(count, stripes) end\r
1797
+ \r
1798
+ ---@param x number\r
1799
+ ---@param y number\r
1800
+ ---@return Vector\r
1801
+ function util.by_pixel(x, y) end\r
1802
+ \r
1803
+ ---@param x number\r
1804
+ ---@param y number\r
1805
+ ---@return Vector\r
1806
+ function util.by_pixel_hr(x, y) end\r
1807
+ \r
1808
+ ---@generic T: table\r
1809
+ ---@param table_ T\r
1810
+ ---@param fun_ fun(t: T)\r
1811
+ ---@return T\r
1812
+ function util.foreach_sprite_definition(table_, fun_) end\r
1813
+ \r
1814
+ ---@param a Vector\r
1815
+ ---@param b Vector\r
1816
+ ---@return Vector\r
1817
+ function util.add_shift(a, b) end\r
1818
+ \r
1819
+ ---@generic T: table\r
1820
+ ---@param offset_ Vector\r
1821
+ ---@param table_ T\r
1822
+ ---@return T\r
1823
+ function util.add_shift_offset(offset_, table_) end\r
1824
+ \r
1825
+ ---@generic T: Vector\r
1826
+ ---@param shift T\r
1827
+ ---@param scale number\r
1828
+ ---@return T|Vector\r
1829
+ function util.mul_shift(shift, scale) end\r
1830
+ \r
1831
+ ---@param amount number\r
1832
+ ---@param append_suffix boolean?\r
1833
+ ---@return string\r
1834
+ function util.format_number(amount, append_suffix) end\r
1835
+ \r
1836
+ ---@generic K: AnyBasic\r
1837
+ ---@param t {[K]:number}\r
1838
+ ---@param k K\r
1839
+ ---@param v? number\r
1840
+ function util.increment(t, k, v) end\r
1841
+ \r
1842
+ ---If both value and data are truthy, returns data, otherwise returns false\r
1843
+ ---@generic D: any\r
1844
+ ---@param value any\r
1845
+ ---@param data D\r
1846
+ ---@return D|false\r
1847
+ function util.conditional_return(value, data) end\r
1848
+ \r
1849
+ -- Recursively merges and/or deep-copies tables.\r
1850
+ -- Entries in later tables override entries in earlier ones, unless\r
1851
+ -- both entries are themselves tables, in which case they are recursively merged.\r
1852
+ -- Non-merged tables are deep-copied, so that the result is brand new.\r
1853
+ ---@param tables table[]\r
1854
+ ---@return table\r
1855
+ function util.merge(tables) end\r
1856
+ \r
1857
+ ---@param entity LuaControl?\r
1858
+ ---@param item_dict ItemStackDefinition?\r
1859
+ util.insert_safe = function(entity, item_dict) end\r
1860
+ \r
1861
+ ---@param entity LuaControl?\r
1862
+ ---@param item_dict ItemStackDefinition?\r
1863
+ util.remove_safe = function(entity, item_dict) end\r
1864
+ \r
1865
+ ---@param string string\r
1866
+ ---@return string[]\r
1867
+ util.split_whitespace = function(string) end\r
1868
+ \r
1869
+ ---@param inputstr string\r
1870
+ ---@param sep string\r
1871
+ ---@return string[]\r
1872
+ util.split = function(inputstr, sep) end\r
1873
+ \r
1874
+ ---@param str string\r
1875
+ ---@param start string\r
1876
+ ---@return boolean\r
1877
+ util.string_starts_with = function(str, start) end\r
1878
+ \r
1879
+ ---@param str string\r
1880
+ ---@param what string\r
1881
+ ---@param with string\r
1882
+ util.string_replace = function(str, what, with) end\r
1883
+ \r
1884
+ ---@generic X: number, Lower: number, Upper: number\r
1885
+ ---@param x X\r
1886
+ ---@param lower Lower\r
1887
+ ---@param upper Upper\r
1888
+ ---@return X|Lower|Upper\r
1889
+ util.clamp = function(x, lower, upper) end\r
1890
+ \r
1891
+ ---@return string\r
1892
+ util.get_walkable_tile = function() end\r
1893
+ \r
1894
+ -- This function takes 2 icons tables, and adds the second to the first, but applies scale,\r
1895
+ -- shift and tint to the entire second set.\\\r
1896
+ -- This allows you to manipulate the entire second icons table in the same way as you would\r
1897
+ -- manipulate a single icon when adding to the icons table.\r
1898
+ ---@param icons1 data.IconData[]\r
1899
+ ---@param icons2 data.IconData[]\r
1900
+ ---@param inputs {["scale"]:number?, ["shift"]:Vector?, ["tint"]:Color?}\r
1901
+ ---@param default_icon_size integer\r
1902
+ ---@return data.IconData[]\r
1903
+ function util.combine_icons(icons1, icons2, inputs, default_icon_size) end\r
1904
+ \r
1905
+ ---@param technology_icon string\r
1906
+ ---@return data.IconData[]\r
1907
+ function util.technology_icon_constant_damage(technology_icon) end\r
1908
+ \r
1909
+ ---@param technology_icon string\r
1910
+ ---@return data.IconData[]\r
1911
+ function util.technology_icon_constant_speed(technology_icon) end\r
1912
+ \r
1913
+ ---@param technology_icon string\r
1914
+ ---@return data.IconData[]\r
1915
+ function util.technology_icon_constant_movement_speed(technology_icon) end\r
1916
+ \r
1917
+ ---@param technology_icon string\r
1918
+ ---@return data.IconData[]\r
1919
+ function util.technology_icon_constant_range(technology_icon) end\r
1920
+ \r
1921
+ ---@param technology_icon string\r
1922
+ ---@return data.IconData[]\r
1923
+ function util.technology_icon_constant_planet(technology_icon) end\r
1924
+ \r
1925
+ ---@param technology_icon string\r
1926
+ ---@return data.IconData[]\r
1927
+ function util.technology_icon_constant_equipment(technology_icon) end\r
1928
+ \r
1929
+ ---@param technology_icon string\r
1930
+ ---@return data.IconData[]\r
1931
+ function util.technology_icon_constant_followers(technology_icon) end\r
1932
+ \r
1933
+ ---@param technology_icon string\r
1934
+ ---@return data.IconData[]\r
1935
+ function util.technology_icon_constant_capacity(technology_icon) end\r
1936
+ \r
1937
+ ---@param technology_icon string\r
1938
+ ---@return data.IconData[]\r
1939
+ function util.technology_icon_constant_stack_size(technology_icon) end\r
1940
+ \r
1941
+ ---@param technology_icon string\r
1942
+ ---@return data.IconData[]\r
1943
+ function util.technology_icon_constant_productivity(technology_icon) end\r
1944
+ \r
1945
+ ---@param technology_icon string\r
1946
+ ---@return data.IconData[]\r
1947
+ function util.technology_icon_constant_recipe_productivity(technology_icon) end\r
1948
+ \r
1949
+ ---@param technology_icon string\r
1950
+ ---@return data.IconData[]\r
1951
+ function util.technology_icon_constant_braking_force(technology_icon) end\r
1952
+ \r
1953
+ ---@param technology_icon string\r
1954
+ ---@return data.IconData[]\r
1955
+ function util.technology_icon_constant_mining(technology_icon) end\r
1956
+ \r
1957
+ ---@param energy string\r
1958
+ ---@return number\r
1959
+ function util.parse_energy(energy) end\r
1960
+ \r
1961
+ ---@param product data.ProductPrototype\r
1962
+ ---@return number\r
1963
+ function util.product_amount(product) end\r
1964
+ \r
1965
+ ---@return table\r
1966
+ function util.empty_sprite() end\r
1967
+ \r
1968
+ ---@param animation_length number\r
1969
+ ---@return table\r
1970
+ function util.empty_animation(animation_length) end\r
1971
+ \r
1972
+ ---@return table\r
1973
+ function util.empty_icon() end\r
1974
+ \r
1975
+ ---@generic L: table\r
1976
+ ---@param layer L\r
1977
+ ---@return L\r
1978
+ function util.draw_as_glow(layer) end\r
1979
+ \r
1980
+ ---@generic T : table\r
1981
+ ---@param path string\r
1982
+ ---@param table T\r
1983
+ ---@return T\r
1984
+ function util.sprite_load(path, table) end\r
1985
+ \r
1986
+ ---@param spritesheets table[]\r
1987
+ ---@return table[]\r
1988
+ function util.spritesheets_to_pictures(spritesheets) end\r
1989
+ \r
1990
+ -- Does not handle:\r
1991
+ -- - explicit tile filters in "selection-tool" items\r
1992
+ -- - ItemPrototype::place_as_tile\r
1993
+ -- - TilePrototype::next_direction\r
1994
+ -- - TilePrototype::transition_merges_with_tile\r
1995
+ -- - general tile transitions, only removes tile names from water_tile_type_names\r
1996
+ ---@param data table --Seriously pass the global data\r
1997
+ ---@param array_of_tiles_to_remove string[]\r
1998
+ function util.remove_tile_references(data, array_of_tiles_to_remove) end\r
1999
+ \r
2000
+ ---Remove the first occurance of value from the array\r
2001
+ ---@param list any[]\r
2002
+ ---@param value any\r
2003
+ util.remove_from_list = function(list, value) end\r
2004
+ \r
2005
+ ---@param list any[]\r
2006
+ ---@return {[any]: true}\r
2007
+ util.list_to_map = function(list) end\r
2008
+ \r
2009
+ ---@param raw_product data.ProductPrototype\r
2010
+ ---@return data.ProductPrototype\r
2011
+ util.normalize_recipe_product = function(raw_product) end\r
2012
+ \r
2013
+ ---@param recipe data.RecipePrototype\r
2014
+ ---@return data.ProductPrototype[]\r
2015
+ util.normalize_recipe_products = function(recipe) end\r
2016
+ \r
2017
+ ---Returns the normalized main product or nil if the recipe defintion is invalid or there is no main product\r
2018
+ ---@param recipe data.RecipePrototype\r
2019
+ ---@param normalized_products data.ProductPrototype[]\r
2020
+ ---@return data.ProductPrototype\r
2021
+ util.get_recipe_main_product = function(recipe, normalized_products) end\r
2022
+ \r
2023
+ gram = 1\r
2024
+ grams = gram\r
2025
+ kg = 1000*grams\r
2026
+ tons = 1000*kg\r
2027
+ second = 60\r
2028
+ minute = 60 * second\r
2029
+ hour = 60 * minute\r
2030
+ meter = 1\r
2031
+ kilometer = 1000\r
2032
+ \r
2033
+ return util\r
2034
+ `;var ma={};ke(ma,{default:()=>wv});var wv=`---[View Documentation](https://wiki.factorio.com/Tutorial:Mod_settings#The_setting_type_property)
2035
+ ---@alias data.ModSettingSettingType ("startup")|("runtime-global")|("double-setting")|("runtime-per-user")
2036
+
2037
+ ---[View Documentation](https://wiki.factorio.com/Tutorial:Mod_settings)
2038
+ ---@alias data.AnyModSettingPrototype data.ModBoolSettingPrototype|data.ModIntSettingPrototype|data.ModDoubleSettingPrototype|data.ModStringSettingPrototype|data.ModColorSettingPrototype
2039
+
2040
+ do
2041
+ ---[View Documentation](https://wiki.factorio.com/Tutorial:Mod_settings)
2042
+ ---@class (exact) data.ModSettingPrototype:data.PrototypeBase
2043
+ ---[View Documentation](https://wiki.factorio.com/Tutorial:Mod_settings#The_hidden_property)
2044
+ ---@field hidden? boolean
2045
+ ---[View Documentation](https://wiki.factorio.com/Tutorial:Mod_settings#The_setting_type_property)
2046
+ ---@field setting_type data.ModSettingSettingType
2047
+ local data_ModSetting={
2048
+ }
2049
+ end
2050
+
2051
+ do
2052
+ ---[View Documentation](https://wiki.factorio.com/Tutorial:Mod_settings#bool-setting)
2053
+ ---@class (exact) data.ModBoolSettingPrototype:data.ModSettingPrototype
2054
+ ---@field type "bool-setting"
2055
+ ---@field default_value boolean
2056
+ ---@field forced_value? boolean
2057
+ local data_ModBoolSetting={
2058
+ }
2059
+ end
2060
+
2061
+ do
2062
+ ---[View Documentation](https://wiki.factorio.com/Tutorial:Mod_settings#int-setting)
2063
+ ---@class (exact) data.ModIntSettingPrototype:data.ModSettingPrototype
2064
+ ---@field type "int-setting"
2065
+ ---@field default_value int64
2066
+ ---@field minimum_value? int64
2067
+ ---@field maximum_value? int64
2068
+ ---@field allowed_values? int64[]
2069
+ local data_ModBoolSetting={
2070
+ }
2071
+ end
2072
+
2073
+ do
2074
+ ---[View Documentation](https://wiki.factorio.com/Tutorial:Mod_settings#double-setting)
2075
+ ---@class (exact) data.ModDoubleSettingPrototype:data.ModSettingPrototype
2076
+ ---@field type "double-setting"
2077
+ ---@field default_value double
2078
+ ---@field minimum_value? double
2079
+ ---@field maximum_value? double
2080
+ ---@field allowed_values? double[]
2081
+ local data_ModBoolSetting={
2082
+ }
2083
+ end
2084
+
2085
+ do
2086
+ ---[View Documentation](https://wiki.factorio.com/Tutorial:Mod_settings#string-setting)
2087
+ ---@class (exact) data.ModStringSettingPrototype:data.ModSettingPrototype
2088
+ ---@field type "string-setting"
2089
+ ---@field default_value string
2090
+ ---@field allow_blank? boolean
2091
+ ---@field auto_trim? boolean
2092
+ ---@field allowed_values? string[]
2093
+ local data_ModBoolSetting={
2094
+ }
2095
+ end
2096
+
2097
+ do
2098
+ ---[View Documentation](https://wiki.factorio.com/Tutorial:Mod_settings#color-setting)
2099
+ ---@class (exact) data.ModColorSettingPrototype:data.ModSettingPrototype
2100
+ ---@field type "color-setting"
2101
+ ---@field default_value data.Color
2102
+ local data_ModBoolSetting={
2103
+ }
2104
+ end
2105
+
2106
+ `;var ga={};ke(ga,{default:()=>Rv});var Rv=`---@meta _\r
2107
+ \r
2108
+ ---@see LuaBootstrap.active_mods\r
2109
+ ---@type {[string]: string}\r
2110
+ mods = {}\r
2111
+ `;var _a={};ke(_a,{default:()=>Sv});var Sv=`---@meta _\r
2112
+ \r
2113
+ ---Double precision floating point numbers. May not be NaN in prototypes.\r
2114
+ ---@alias double number\r
2115
+ ---Single precision floating point numbers. May not be NaN in prototypes.\r
2116
+ ---@alias float number\r
2117
+ \r
2118
+ ---8 bit signed integer. Ranges from -128 to 127, or [-2^7, 2^7-1]\r
2119
+ ---@alias int8 integer\r
2120
+ ---8 bit unsigned integer. Ranges from 0 to 255, or [0, 2^8-1]\r
2121
+ ---@alias uint8 integer\r
2122
+ ---16 bit signed integer. Ranges from -32&nbsp;768 to 32&nbsp;767, or [-2^15, 2^15-1]\r
2123
+ ---@alias int16 integer\r
2124
+ ---16 bit unsigned integer. Ranges from 0 to 65&nbsp;535, or [0, 2^16-1]\r
2125
+ ---@alias uint16 integer\r
2126
+ ---32 bit signed integer. Ranges from -2&nbsp;147&nbsp;483&nbsp;648 to 2&nbsp;147&nbsp;483&nbsp;647, or [-2^31, 2^31-1]\r
2127
+ ---@alias int32 integer\r
2128
+ ---32 bit unsigned integer. Ranges from 0 to 4&nbsp;294&nbsp;967&nbsp;295, or [0, 2^32-1]\r
2129
+ ---@alias uint32 integer\r
2130
+ ---32 bit signed integer. Ranges from -2&nbsp;147&nbsp;483&nbsp;648 to 2&nbsp;147&nbsp;483&nbsp;647, or [-2^31, 2^31-1]\r
2131
+ ---@alias int integer\r
2132
+ ---32 bit unsigned integer. Ranges from 0 to 4&nbsp;294&nbsp;967&nbsp;295, or [0, 2^32-1]\r
2133
+ ---@alias uint integer\r
2134
+ ---64 bit signed integer.\r
2135
+ ---@alias int64 integer\r
2136
+ ---64 bit unsigned integer.\r
2137
+ ---@alias uint64 integer`;var ba={};ke(ba,{default:()=>Lv});var Lv=`---@meta _
2138
+
2139
+ ---
2140
+ ---
2141
+ ---
2142
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug"])
2143
+ ---
2144
+ ---@class factorio.debuglib
2145
+ debug = {}
2146
+
2147
+ ---@class debuginfo
2148
+ ---@field name string
2149
+ ---@field namewhat string
2150
+ ---@field source string
2151
+ ---@field short_src string
2152
+ ---@field linedefined integer
2153
+ ---@field lastlinedefined integer
2154
+ ---@field what string
2155
+ ---@field currentline integer
2156
+ ---@field istailcall boolean
2157
+ ---@field nups integer
2158
+ ---@field nparams integer
2159
+ ---@field isvararg boolean
2160
+ ---@field func function
2161
+ ---@field activelines table
2162
+ ---@field currentpc integer
2163
+
2164
+ ---
2165
+ ---Enters an interactive mode with the user, running each string that the user enters.
2166
+ ---
2167
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug.debug"])
2168
+ ---
2169
+ ---@deprecated most \`debug\` library functions are disabled since Factorio 1.1.107
2170
+ function debug.debug() end
2171
+
2172
+ ---
2173
+ ---Returns the current hook settings of the thread.
2174
+ ---
2175
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug.gethook"])
2176
+ ---
2177
+ ---@return function hook
2178
+ ---@return string mask
2179
+ ---@return integer count
2180
+ ---@nodiscard
2181
+ ---@deprecated most \`debug\` library functions are disabled since Factorio 1.1.107
2182
+ function debug.gethook() end
2183
+
2184
+ ---@alias infowhat string
2185
+ ---|+'"n"' # \`name\` and \`namewhat\`
2186
+ ---|+'"S"' # \`source\`, \`short_src\`, \`linedefined\`, \`lastlinedefined\`, and \`what\`
2187
+ ---|+'"l"' # \`currentline\`
2188
+ ---|+'"t"' # \`istailcall\`
2189
+ ---|+'"u"' # \`nups\`, \`nparams\`, and \`isvararg\`
2190
+ ---|+'"f"' # \`func\`
2191
+ ---|+'"L"' # \`activelines\`
2192
+ ---|+'"p"' # \`currentpc\`
2193
+
2194
+ ---
2195
+ ---Returns a table with information about a function.
2196
+ ---
2197
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug.getinfo"])
2198
+ ---
2199
+ ---@param f integer|async fun(...):...
2200
+ ---@param what? infowhat
2201
+ ---@return debuginfo
2202
+ ---@nodiscard
2203
+ function debug.getinfo(f, what) end
2204
+
2205
+ ---
2206
+ ---Returns the name and the value of the local variable with index \`local\` of the function at level \`f\` of the stack.
2207
+ ---
2208
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug.getlocal"])
2209
+ ---
2210
+ ---@param f integer|async fun(...):...
2211
+ ---@param index integer
2212
+ ---@return string name
2213
+ ---@return any value
2214
+ ---@nodiscard
2215
+ ---@deprecated most \`debug\` library functions are disabled since Factorio 1.1.107
2216
+ function debug.getlocal(f, index) end
2217
+
2218
+ ---
2219
+ ---Returns the metatable of the given value.
2220
+ ---
2221
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug.getmetatable"])
2222
+ ---
2223
+ ---@param object any
2224
+ ---@return table metatable
2225
+ ---@nodiscard
2226
+ ---@deprecated most \`debug\` library functions are disabled since Factorio 1.1.107
2227
+ function debug.getmetatable(object) end
2228
+
2229
+ ---
2230
+ ---Returns the registry table.
2231
+ ---
2232
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug.getregistry"])
2233
+ ---
2234
+ ---@return table
2235
+ ---@nodiscard
2236
+ ---@deprecated most \`debug\` library functions are disabled since Factorio 1.1.107
2237
+ function debug.getregistry() end
2238
+
2239
+ ---
2240
+ ---Returns the name and the value of the upvalue with index \`up\` of the function.
2241
+ ---
2242
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug.getupvalue"])
2243
+ ---
2244
+ ---@param f async fun(...):...
2245
+ ---@param up integer
2246
+ ---@return string name
2247
+ ---@return any value
2248
+ ---@nodiscard
2249
+ ---@deprecated most \`debug\` library functions are disabled since Factorio 1.1.107
2250
+ function debug.getupvalue(f, up) end
2251
+
2252
+ ---
2253
+ ---Returns the Lua value associated to u.
2254
+ ---
2255
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug.getuservalue"])
2256
+ ---
2257
+ ---@param u userdata
2258
+ ---@return any
2259
+ ---@nodiscard
2260
+ ---@deprecated most \`debug\` library functions are disabled since Factorio 1.1.107
2261
+ function debug.getuservalue(u) end
2262
+
2263
+ ---
2264
+ ---### **Deprecated in \`Lua 5.4.2\`**
2265
+ ---
2266
+ ---Sets a new limit for the C stack. This limit controls how deeply nested calls can go in Lua, with the intent of avoiding a stack overflow.
2267
+ ---
2268
+ ---In case of success, this function returns the old limit. In case of error, it returns \`false\`.
2269
+ ---
2270
+ ---
2271
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug.setcstacklimit"])
2272
+ ---
2273
+ ---@deprecated
2274
+ ---@param limit integer
2275
+ ---@return integer|boolean
2276
+ ---@deprecated most \`debug\` library functions are disabled since Factorio 1.1.107
2277
+ function debug.setcstacklimit(limit) end
2278
+
2279
+ ---@alias hookmask string
2280
+ ---|+'"c"' # Calls hook when Lua calls a function.
2281
+ ---|+'"r"' # Calls hook when Lua returns from a function.
2282
+ ---|+'"l"' # Calls hook when Lua enters a new line of code.
2283
+
2284
+ ---
2285
+ ---Sets the given function as a hook.
2286
+ ---
2287
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug.sethook"])
2288
+ ---
2289
+ ---@overload fun(...):...
2290
+ ---@param hook async fun(...):...
2291
+ ---@param mask hookmask
2292
+ ---@param count? integer
2293
+ ---@deprecated most \`debug\` library functions are disabled since Factorio 1.1.107
2294
+ function debug.sethook(hook, mask, count) end
2295
+
2296
+ ---
2297
+ ---Assigns the \`value\` to the local variable with index \`local\` of the function at \`level\` of the stack.
2298
+ ---
2299
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug.setlocal"])
2300
+ ---
2301
+ ---@param level integer
2302
+ ---@param index integer
2303
+ ---@param value any
2304
+ ---@return string name
2305
+ ---@deprecated most \`debug\` library functions are disabled since Factorio 1.1.107
2306
+ function debug.setlocal(level, index, value) end
2307
+
2308
+ ---
2309
+ ---Sets the metatable for the given value to the given table (which can be \`nil\`).
2310
+ ---
2311
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug.setmetatable"])
2312
+ ---
2313
+ ---@generic T
2314
+ ---@param value T
2315
+ ---@param meta? table
2316
+ ---@return T value
2317
+ ---@deprecated most \`debug\` library functions are disabled since Factorio 1.1.107
2318
+ function debug.setmetatable(value, meta) end
2319
+
2320
+ ---
2321
+ ---Assigns the \`value\` to the upvalue with index \`up\` of the function.
2322
+ ---
2323
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug.setupvalue"])
2324
+ ---
2325
+ ---@param f async fun(...):...
2326
+ ---@param up integer
2327
+ ---@param value any
2328
+ ---@return string name
2329
+ ---@deprecated most \`debug\` library functions are disabled since Factorio 1.1.107
2330
+ function debug.setupvalue(f, up, value) end
2331
+
2332
+ ---
2333
+ ---Sets the given value as the Lua value associated to the given udata.
2334
+ ---
2335
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug.setuservalue"])
2336
+ ---
2337
+ ---@param udata userdata
2338
+ ---@param value any
2339
+ ---@return userdata udata
2340
+ ---@deprecated most \`debug\` library functions are disabled since Factorio 1.1.107
2341
+ function debug.setuservalue(udata, value) end
2342
+
2343
+ ---
2344
+ ---Returns a string with a traceback of the call stack. The optional message string is appended at the beginning of the traceback.
2345
+ ---
2346
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug.traceback"])
2347
+ ---
2348
+ ---@overload fun(message?: any, level?: integer): string
2349
+ ---@param thread thread
2350
+ ---@param message? any
2351
+ ---@param level? integer
2352
+ ---@return string message
2353
+ ---@nodiscard
2354
+ function debug.traceback(thread, message, level) end
2355
+
2356
+ ---
2357
+ ---Returns a unique identifier (as a light userdata) for the upvalue numbered \`n\` from the given function.
2358
+ ---
2359
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug.upvalueid"])
2360
+ ---
2361
+ ---@param f async fun(...):...
2362
+ ---@param n integer
2363
+ ---@return lightuserdata id
2364
+ ---@nodiscard
2365
+ ---@deprecated most \`debug\` library functions are disabled since Factorio 1.1.107
2366
+ function debug.upvalueid(f, n) end
2367
+
2368
+ ---
2369
+ ---Make the \`n1\`-th upvalue of the Lua closure \`f1\` refer to the \`n2\`-th upvalue of the Lua closure \`f2\`.
2370
+ ---
2371
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-debug.upvaluejoin"])
2372
+ ---
2373
+ ---@param f1 async fun(...):...
2374
+ ---@param n1 integer
2375
+ ---@param f2 async fun(...):...
2376
+ ---@param n2 integer
2377
+ ---@deprecated most \`debug\` library functions are disabled since Factorio 1.1.107
2378
+ function debug.upvaluejoin(f1, n1, f2, n2) end
2379
+
2380
+ return debug
2381
+ `;var ya={};ke(ya,{default:()=>kv});var kv=`---@meta _\r
2382
+ \r
2383
+ ---\r
2384
+ ---\r
2385
+ ---\r
2386
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math"])\r
2387
+ ---\r
2388
+ ---@class factorio.mathlib\r
2389
+ ---\r
2390
+ ---A value larger than any other numeric value.\r
2391
+ ---\r
2392
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.huge"])\r
2393
+ ---\r
2394
+ ---@field huge number\r
2395
+ ---\r
2396
+ ---The value of *\u03C0*.\r
2397
+ ---\r
2398
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.pi"])\r
2399
+ ---\r
2400
+ ---@field pi number\r
2401
+ math = {}\r
2402
+ \r
2403
+ ---\r
2404
+ ---Returns the absolute value of \`x\`.\r
2405
+ ---\r
2406
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.abs"])\r
2407
+ ---\r
2408
+ ---@param x number\r
2409
+ ---@return number\r
2410
+ ---@nodiscard\r
2411
+ function math.abs(x) end\r
2412
+ \r
2413
+ ---\r
2414
+ ---Returns the arc cosine of \`x\` (in radians).\r
2415
+ ---\r
2416
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.acos"])\r
2417
+ ---\r
2418
+ ---@param x number\r
2419
+ ---@return number\r
2420
+ ---@nodiscard\r
2421
+ function math.acos(x) end\r
2422
+ \r
2423
+ ---\r
2424
+ ---Returns the arc sine of \`x\` (in radians).\r
2425
+ ---\r
2426
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.asin"])\r
2427
+ ---\r
2428
+ ---@param x number\r
2429
+ ---@return number\r
2430
+ ---@nodiscard\r
2431
+ function math.asin(x) end\r
2432
+ \r
2433
+ ---\r
2434
+ ---Returns the arc tangent of \`x\` (in radians).\r
2435
+ ---\r
2436
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.atan"])\r
2437
+ ---\r
2438
+ ---@param y number\r
2439
+ ---@return number\r
2440
+ ---@nodiscard\r
2441
+ function math.atan(y) end\r
2442
+ \r
2443
+ ---@version <5.2\r
2444
+ ---\r
2445
+ ---Returns the arc tangent of \`y/x\` (in radians).\r
2446
+ ---\r
2447
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.atan2"])\r
2448
+ ---\r
2449
+ ---@param y number\r
2450
+ ---@param x number\r
2451
+ ---@return number\r
2452
+ ---@nodiscard\r
2453
+ function math.atan2(y, x) end\r
2454
+ \r
2455
+ ---\r
2456
+ ---Returns the smallest integral value larger than or equal to \`x\`.\r
2457
+ ---\r
2458
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.ceil"])\r
2459
+ ---\r
2460
+ ---@param x number\r
2461
+ ---@return integer\r
2462
+ ---@nodiscard\r
2463
+ function math.ceil(x) end\r
2464
+ \r
2465
+ ---\r
2466
+ ---Returns the cosine of \`x\` (assumed to be in radians).\r
2467
+ ---\r
2468
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.cos"])\r
2469
+ ---\r
2470
+ ---@param x number\r
2471
+ ---@return number\r
2472
+ ---@nodiscard\r
2473
+ function math.cos(x) end\r
2474
+ \r
2475
+ ---@version <5.2\r
2476
+ ---\r
2477
+ ---Returns the hyperbolic cosine of \`x\` (assumed to be in radians).\r
2478
+ ---\r
2479
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.cosh"])\r
2480
+ ---\r
2481
+ ---@param x number\r
2482
+ ---@return number\r
2483
+ ---@nodiscard\r
2484
+ function math.cosh(x) end\r
2485
+ \r
2486
+ ---\r
2487
+ ---Converts the angle \`x\` from radians to degrees.\r
2488
+ ---\r
2489
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.deg"])\r
2490
+ ---\r
2491
+ ---@param x number\r
2492
+ ---@return number\r
2493
+ ---@nodiscard\r
2494
+ function math.deg(x) end\r
2495
+ \r
2496
+ ---\r
2497
+ ---Returns the value \`e^x\` (where \`e\` is the base of natural logarithms).\r
2498
+ ---\r
2499
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.exp"])\r
2500
+ ---\r
2501
+ ---@param x number\r
2502
+ ---@return number\r
2503
+ ---@nodiscard\r
2504
+ function math.exp(x) end\r
2505
+ \r
2506
+ ---\r
2507
+ ---Returns the largest integral value smaller than or equal to \`x\`.\r
2508
+ ---\r
2509
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.floor"])\r
2510
+ ---\r
2511
+ ---@param x number\r
2512
+ ---@return integer\r
2513
+ ---@nodiscard\r
2514
+ function math.floor(x) end\r
2515
+ \r
2516
+ ---\r
2517
+ ---Returns the remainder of the division of \`x\` by \`y\` that rounds the quotient towards zero.\r
2518
+ ---\r
2519
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.fmod"])\r
2520
+ ---\r
2521
+ ---@param x number\r
2522
+ ---@param y number\r
2523
+ ---@return number\r
2524
+ ---@nodiscard\r
2525
+ function math.fmod(x, y) end\r
2526
+ \r
2527
+ ---@version <5.2\r
2528
+ ---\r
2529
+ ---Decompose \`x\` into tails and exponents. Returns \`m\` and \`e\` such that \`x = m * (2 ^ e)\`, \`e\` is an integer and the absolute value of \`m\` is in the range [0.5, 1) (or zero when \`x\` is zero).\r
2530
+ ---\r
2531
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.frexp"])\r
2532
+ ---\r
2533
+ ---@param x number\r
2534
+ ---@return number m\r
2535
+ ---@return number e\r
2536
+ ---@nodiscard\r
2537
+ function math.frexp(x) end\r
2538
+ \r
2539
+ ---@version <5.2\r
2540
+ ---\r
2541
+ ---Returns \`m * (2 ^ e)\` .\r
2542
+ ---\r
2543
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.ldexp"])\r
2544
+ ---\r
2545
+ ---@param m number\r
2546
+ ---@param e number\r
2547
+ ---@return number\r
2548
+ ---@nodiscard\r
2549
+ function math.ldexp(m, e) end\r
2550
+ \r
2551
+ ---\r
2552
+ ---Returns the logarithm of \`x\` in the given base.\r
2553
+ ---\r
2554
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.log"])\r
2555
+ ---\r
2556
+ ---@param x number\r
2557
+ ---@param base? integer\r
2558
+ ---@return number\r
2559
+ ---@nodiscard\r
2560
+ function math.log(x, base) end\r
2561
+ \r
2562
+ ---@version <5.1\r
2563
+ ---\r
2564
+ ---Returns the base-10 logarithm of x.\r
2565
+ ---\r
2566
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.log10"])\r
2567
+ ---\r
2568
+ ---@param x number\r
2569
+ ---@return number\r
2570
+ ---@nodiscard\r
2571
+ function math.log10(x) end\r
2572
+ \r
2573
+ ---\r
2574
+ ---Returns the argument with the maximum value, according to the Lua operator \`<\`.\r
2575
+ ---\r
2576
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.max"])\r
2577
+ ---\r
2578
+ ---@generic Number: number\r
2579
+ ---@param x Number\r
2580
+ ---@param ... Number\r
2581
+ ---@return Number\r
2582
+ ---@nodiscard\r
2583
+ function math.max(x, ...) end\r
2584
+ \r
2585
+ ---\r
2586
+ ---Returns the argument with the minimum value, according to the Lua operator \`<\`.\r
2587
+ ---\r
2588
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.min"])\r
2589
+ ---\r
2590
+ ---@generic Number: number\r
2591
+ ---@param x Number\r
2592
+ ---@param ... Number\r
2593
+ ---@return Number\r
2594
+ ---@nodiscard\r
2595
+ function math.min(x, ...) end\r
2596
+ \r
2597
+ ---\r
2598
+ ---Returns the integral part of \`x\` and the fractional part of \`x\`.\r
2599
+ ---\r
2600
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.modf"])\r
2601
+ ---\r
2602
+ ---@param x number\r
2603
+ ---@return integer\r
2604
+ ---@return number\r
2605
+ ---@nodiscard\r
2606
+ function math.modf(x) end\r
2607
+ \r
2608
+ ---@version <5.2\r
2609
+ ---\r
2610
+ ---Returns \`x ^ y\` .\r
2611
+ ---\r
2612
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.pow"])\r
2613
+ ---\r
2614
+ ---@param x number\r
2615
+ ---@param y number\r
2616
+ ---@return number\r
2617
+ ---@nodiscard\r
2618
+ function math.pow(x, y) end\r
2619
+ \r
2620
+ ---\r
2621
+ ---Converts the angle \`x\` from degrees to radians.\r
2622
+ ---\r
2623
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.rad"])\r
2624
+ ---\r
2625
+ ---@param x number\r
2626
+ ---@return number\r
2627
+ ---@nodiscard\r
2628
+ function math.rad(x) end\r
2629
+ \r
2630
+ ---\r
2631
+ ---Returns the sine of \`x\` (assumed to be in radians).\r
2632
+ ---\r
2633
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.sin"])\r
2634
+ ---\r
2635
+ ---@param x number\r
2636
+ ---@return number\r
2637
+ ---@nodiscard\r
2638
+ function math.sin(x) end\r
2639
+ \r
2640
+ ---@version <5.2\r
2641
+ ---\r
2642
+ ---Returns the hyperbolic sine of \`x\` (assumed to be in radians).\r
2643
+ ---\r
2644
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.sinh"])\r
2645
+ ---\r
2646
+ ---@param x number\r
2647
+ ---@return number\r
2648
+ ---@nodiscard\r
2649
+ function math.sinh(x) end\r
2650
+ \r
2651
+ ---\r
2652
+ ---Returns the square root of \`x\`.\r
2653
+ ---\r
2654
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.sqrt"])\r
2655
+ ---\r
2656
+ ---@param x number\r
2657
+ ---@return number\r
2658
+ ---@nodiscard\r
2659
+ function math.sqrt(x) end\r
2660
+ \r
2661
+ ---\r
2662
+ ---Returns the tangent of \`x\` (assumed to be in radians).\r
2663
+ ---\r
2664
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.tan"])\r
2665
+ ---\r
2666
+ ---@param x number\r
2667
+ ---@return number\r
2668
+ ---@nodiscard\r
2669
+ function math.tan(x) end\r
2670
+ \r
2671
+ ---@version <5.2\r
2672
+ ---\r
2673
+ ---Returns the hyperbolic tangent of \`x\` (assumed to be in radians).\r
2674
+ ---\r
2675
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.tanh"])\r
2676
+ ---\r
2677
+ ---@param x number\r
2678
+ ---@return number\r
2679
+ ---@nodiscard\r
2680
+ function math.tanh(x) end\r
2681
+ \r
2682
+ ---@version >5.3\r
2683
+ ---\r
2684
+ ---If the value \`x\` is convertible to an integer, returns that integer.\r
2685
+ ---\r
2686
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.tointeger"])\r
2687
+ ---\r
2688
+ ---@param x any\r
2689
+ ---@return integer?\r
2690
+ ---@nodiscard\r
2691
+ function math.tointeger(x) end\r
2692
+ \r
2693
+ ---\r
2694
+ ---Returns \`"integer"\` if \`x\` is an integer, \`"float"\` if it is a float, or \`nil\` if \`x\` is not a number.\r
2695
+ ---\r
2696
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.type"])\r
2697
+ ---\r
2698
+ ---@param x any\r
2699
+ ---@return\r
2700
+ ---| '"integer"'\r
2701
+ ---| '"float"'\r
2702
+ ---| 'nil'\r
2703
+ ---@nodiscard\r
2704
+ function math.type(x) end\r
2705
+ \r
2706
+ ---\r
2707
+ ---Returns \`true\` if and only if \`m\` is below \`n\` when they are compared as unsigned integers.\r
2708
+ ---\r
2709
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-math.ult"])\r
2710
+ ---\r
2711
+ ---@param m integer\r
2712
+ ---@param n integer\r
2713
+ ---@return boolean\r
2714
+ ---@nodiscard\r
2715
+ function math.ult(m, n) end\r
2716
+ \r
2717
+ \r
2718
+ ---\`math.random()\` is reimplemented within Factorio to be deterministic, both in the data stage and during runtime.\r
2719
+ ---\r
2720
+ ---In the data stage, it is seeded with a constant number. During runtime, it uses the map's global random generator which is seeded with the map seed. The map's global random generator is shared between all mods and the core game, which all affect the random number that is generated. If this behaviour is not desired, \`LuaRandomGenerator\` can be used to create a random generator that is completely separate from the core game and other mods.\r
2721
+ ---\r
2722
+ ---This method can't be used outside of events or during loading. Calling it with non-integer arguments will floor them instead of resulting in an error.\r
2723
+ ---\r
2724
+ ---* \`math.random()\`: Returns a float in the range [0,1).\r
2725
+ ---* \`math.random(m)\`: Returns a integer in the range [1, m].\r
2726
+ ---* \`math.random(m, n)\`: Returns a integer in the range [m, n].\r
2727
+ ---\r
2728
+ ---@overload fun():number\r
2729
+ ---@overload fun(m: integer|number):integer\r
2730
+ ---@param m integer|number\r
2731
+ ---@param n integer|number\r
2732
+ ---@return integer\r
2733
+ ---@nodiscard\r
2734
+ ---@see LuaRandomGenerator\r
2735
+ function math.random(m, n) end\r
2736
+ \r
2737
+ ---Using \`math.randomseed()\` in Factorio has no effect on the random generator, the function does nothing. If custom seeding or re-seeding is desired, \`LuaRandomGenerator\` can be used instead of \`math.random()\`.\r
2738
+ ---@deprecated \`math.randomseed()\` has no effect in Factorio.\r
2739
+ ---@param x integer\r
2740
+ ---@see LuaRandomGenerator\r
2741
+ function math.randomseed(x) end\r
2742
+ \r
2743
+ return math\r
2744
+ `;var va={};ke(va,{default:()=>Iv});var Iv=`---@meta _\r
2745
+ \r
2746
+ ---Due to the changes to \`package\`, the functionality of \`require()\` changes. When using absolute paths, the path starts at the mod root. Additionally, \`..\` is disabled as a path variable. This means that it is not possible to load arbitrary files from outside the mod directory.\r
2747
+ ---\r
2748
+ ---Factorio does however provide two ways to load files from other mods:\r
2749
+ ---\r
2750
+ --- * The "lualib" directory of the core mod is included in the paths to be checked for files, so it is possible to require files directly from there, such as the "util" file by using \`require("util")\`.\r
2751
+ --- * Furthermore, it is possible to require files from other mods by using \`require("__mod-name__.file")\`.\r
2752
+ ---\r
2753
+ ---\`require()\` can not be used in the console, in event listeners or during a \`remote.call()\`. The function expects any file to end with the \`.lua\` extension.\r
2754
+ ---@param modname string\r
2755
+ ---@return unknown\r
2756
+ function require(modname) end\r
2757
+ \r
2758
+ ---@class factorio.packagelib\r
2759
+ ---@field loaded table\r
2760
+ package = {}\r
2761
+ \r
2762
+ return package`;var wa={};ke(wa,{default:()=>Cv});var Cv=`---@meta _\r
2763
+ ---Lua serializer and pretty printer.\\\r
2764
+ ---Author: [Paul Kulchenko](mailto:paul@kulchenko.com)\\\r
2765
+ ---https://github.com/pkulchenko/serpent\r
2766
+ ---\`\`\`lua\r
2767
+ ---local serpent = require("serpent")\r
2768
+ ---local a = {1, nil, 3, x=1, ['true'] = 2, [not true]=3}\r
2769
+ ---a[a] = a -- self-reference with a table as key and value\r
2770
+ ---\r
2771
+ ---print(serpent.dump(a)) -- full serialization\r
2772
+ ---print(serpent.line(a)) -- single line, no self-ref section\r
2773
+ ---print(serpent.block(a)) -- multi-line indented, no self-ref section\r
2774
+ ---\r
2775
+ ---local fun, err = loadstring(serpent.dump(a))\r
2776
+ ---if err then error(err) end\r
2777
+ ---local copy = fun()\r
2778
+ ---\r
2779
+ ---\r
2780
+ ---local ok, copy = serpent.load(serpent.dump(a))\r
2781
+ ---print(ok and copy[3] == a[3])\r
2782
+ ---\`\`\`\r
2783
+ ---\\\r
2784
+ ---Note that line and block functions return pretty-printed data structures and if you want to deserialize them,\r
2785
+ ---you need to add return before running them through loadstring. For example:\r
2786
+ ---\`\`\`lua\r
2787
+ ---loadstring('return '..require('mobdebug').line("foo"))() == "foo"\r
2788
+ ---\`\`\`\r
2789
+ ---\\\r
2790
+ ---If a table or a userdata value has \`__tostring\` or \`__serialize\` method, the method will be used to serialize the value.\\\r
2791
+ ---If \`__serialize\` method is present, it will be called with the value as a parameter. if \`__serialize\` method is not present, but \`__tostring\` is,\r
2792
+ ---then tostring will be called with the value as a parameter. In both cases, the result will be serialized, so \`__serialize\` method can return a table,\r
2793
+ ---that will be serialized and replace the original value.\r
2794
+ ---\r
2795
+ ---Limitations:\\\r
2796
+ ---Doesn't handle userdata (except filehandles in io.* table).\\\r
2797
+ ---Threads, function upvalues/environments, and metatables are not serialized.\r
2798
+ ---@class serpent\r
2799
+ serpent = {}\r
2800
+ \r
2801
+ -- multi-line indented pretty printing, no self-ref section; sets indent, sortkeys, and comment options.\r
2802
+ ---@param value any\r
2803
+ ---@param options? serpent.options\r
2804
+ ---@return string\r
2805
+ function serpent.block(value, options) end\r
2806
+ \r
2807
+ ---Single line pretty printing, no self-ref section; sets sortkeys and comment options;\r
2808
+ ---@param value any\r
2809
+ ---@param options? serpent.options\r
2810
+ ---@return string\r
2811
+ function serpent.line(value, options) end\r
2812
+ \r
2813
+ ---Full serialization; sets name, compact and sparse options\r
2814
+ ---@param value any\r
2815
+ ---@param options? serpent.options\r
2816
+ ---@return string\r
2817
+ function serpent.dump(value, options) end\r
2818
+ \r
2819
+ ---loads serialized fragment; you need to pass {safe = false} as the second value if you want to turn safety checks off.\\\r
2820
+ ---Similar to pcall and loadstring calls, load returns status as the first value and the result or the error message as the second value.\r
2821
+ ---@param str string\r
2822
+ ---@param options? serpent.load_options\r
2823
+ ---@return boolean, any\r
2824
+ function serpent.load(str, options) end\r
2825
+ \r
2826
+ ---@class serpent.load_options\r
2827
+ ---@field safe? boolean default: true\r
2828
+ \r
2829
+ ---These options can be provided as a second parameter to Serpent functions.\r
2830
+ ---\r
2831
+ ---Serpent functions set these options to different default values:\\\r
2832
+ --- - \`serpent.dump(value)\` sets \`compact = true\` and \`sparse = true\`;\\\r
2833
+ --- - \`serpent.line(value)\` sets \`sortkeys = true\` and \`comment = true\`;\\\r
2834
+ --- - \`serpent.block(value)\` sets \`sortkeys = true\` and \`comment = true\` and \`indent = ' '\`.\r
2835
+ ---@class serpent.options\r
2836
+ ---@field safe? boolean enable safety checks when using \`serpent.load\`. default: true\r
2837
+ ---@field indent? string triggers long multi-line output.\r
2838
+ ---@field comment? boolean|integer provide stringified value in a comment (up to \`maxelevel\` of depth).\r
2839
+ ---@field refcomment? boolean|integer describe the previous location of self-reference tables\r
2840
+ ---@field tablecomment? boolean|integer provide comment on first appearance of table values\r
2841
+ ---@field sortkeys? boolean|serpent.sort_function\r
2842
+ ---@field sparse? boolean force sparese encoding (no nil filling based on #t).\r
2843
+ ---@field compact? boolean remove spaces.\r
2844
+ ---@field fatal? boolean raise fatal error on non-serilializable values.\r
2845
+ ---@field fixradix? boolean change radic character set depenending on locale to decimal dot.\r
2846
+ ---@field nocode? boolean disable bytecode serialization for easy comparison.\r
2847
+ ---@field nohuge? boolean disable checking numbers against undefined and huge values.\r
2848
+ ---@field maxlevel? number specify max level up to which to expand nested tables.\r
2849
+ ---@field maxnum? number specify max number of elemmets in a table.\r
2850
+ ---@field maxlength? number specify max length for all table elements.\r
2851
+ ---@field metatostring? boolean use __tostring metatamethod when serializing tables; set to false to disable and serialize the table as is.\r
2852
+ ---@field numformat? string specify format for numeric values as shortest possible round-trippable double.\\\r
2853
+ ---Use "%.16g" for better readability and "%.17g" to preserve floating point precision. default: "%.17g"\r
2854
+ ---@field valignore? {[string]: true} allows to specify a list of values to ignore (as keys).\r
2855
+ ---@field keyallow? {[string]: true} allows to specify the list of keys to be serialized. Any keys not in this list are not included in final output (as keys).\r
2856
+ ---@field keyignore? {[string]: true} allows to specity the list of keys to ignore in serialization.\r
2857
+ ---@field valtypeignore? {[string]: true} allows to specify a list of value types to ignore (as keys).\r
2858
+ ---@field custom? serpent.formater\r
2859
+ ---@field name? string triggers full serialization with self-ref section.\r
2860
+ \r
2861
+ ---A custom sort function can be provided to sort the contents of tables. The function takes 2 parameters, the first being the table (a list) with the keys,\r
2862
+ ---the second the original table. It should modify the first table in-place, and return nothing.\\\r
2863
+ ---For example, the following call will apply a sort function identical to the standard sort, except that it will not distinguish between lower- and uppercase.\r
2864
+ ---\`\`\`lua\r
2865
+ ---local mysort = function(array_of_keys, original_table)\r
2866
+ --- local maxn, to = 12, { number = "a", string = "b" }\r
2867
+ --- local function padnum(d) return ("%0" .. maxn .. "d"):format(d) end\r
2868
+ ---\r
2869
+ --- local sort = function(a, b)\r
2870
+ --- return ((array_of_keys[a] and 0 or to[type(a)] or "z") .. (tostring(a):gsub("%d+", padnum))):upper()\r
2871
+ --- < ((array_of_keys[b] and 0 or to[type(b)] or "z") .. (tostring(b):gsub("%d+", padnum))):upper()\r
2872
+ --- end\r
2873
+ --- table.sort(array_of_keys, sort)\r
2874
+ ---end\r
2875
+ ---local content = { some = 1, input = 2, To = 3, serialize = 4 }\r
2876
+ ---local result = serpent.line(content, { sortkeys = mysort })\r
2877
+ ---print(result) -- {input = 2, serialize = 4, some = 1, To = 3}\r
2878
+ ---\`\`\`\r
2879
+ ---@alias serpent.sort_function fun(array_of_keys: string[], original_table: table)\r
2880
+ \r
2881
+ ---Serpent supports a way to provide a custom formatter that allows to fully customize the output. The formatter takes five values:\r
2882
+ ---\r
2883
+ --- \`tag\` -- the name of the current element with '=' or an empty string in case of array index,\\\r
2884
+ --- \`head\` -- an opening table bracket { and associated indentation and newline (if any),\\\r
2885
+ --- \`body\` -- table elements concatenated into a string using commas and indentation/newlines (if any),\\\r
2886
+ --- \`tail\` -- a closing table bracket } and associated indentation and newline (if any), and\\\r
2887
+ --- \`level\` -- the current level.\r
2888
+ ---\r
2889
+ ---For example, the following call will apply \`Foo{bar} notation to its output (used by Metalua to display ASTs):\r
2890
+ ---\`\`\`lua\r
2891
+ ---local function formatter(tag, head, body, tail)\r
2892
+ ---local out = head .. body .. tail\r
2893
+ --- if tag:find("^lineinfo") then\r
2894
+ --- out = out:gsub("\\n%s+", "") -- collapse lineinfo to one line\r
2895
+ --- elseif tag == "" then\r
2896
+ --- body = body:gsub("%s*lineinfo = [^\\n]+", "")\r
2897
+ --- local _, _, atag = body:find('tag = "(%w+)"%s*$')\r
2898
+ --- if atag then\r
2899
+ --- out = "\`" .. atag .. head .. body:gsub('%s*tag = "%w+"%s*$', "") .. tail\r
2900
+ --- out = out:gsub("\\n%s+", ""):gsub(",}", "}")\r
2901
+ --- else out = head .. body .. tail end\r
2902
+ --- end\r
2903
+ --- return tag .. out\r
2904
+ ---end\r
2905
+ ---\r
2906
+ ---print(serpent.block(ast, { comment = false, custom = formatter }))\r
2907
+ ---\`\`\`\r
2908
+ ---@alias serpent.formater fun(tag: string, head: string, body: string, tail: string, level: number)`;var Pa={};ke(Pa,{default:()=>Ov});var Ov=`---@meta string\r
2909
+ \r
2910
+ ---\r
2911
+ ---Returns a binary string containing the values \`v1\`, \`v2\`, etc. packed (that is, serialized in binary form) according to the format string \`fmt\` (see [\xA76.4.2](command:extension.lua.doc?["en-us/52/manual.html/6.4.2"])) .\r
2912
+ ---\r
2913
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-string.pack"])\r
2914
+ ---\r
2915
+ ---@param fmt string\r
2916
+ ---@param v1 string|number\r
2917
+ ---@param v2? string|number\r
2918
+ ---@param ... string|number\r
2919
+ ---@return string binary\r
2920
+ ---@nodiscard\r
2921
+ function string.pack(fmt, v1, v2, ...) end\r
2922
+ \r
2923
+ ---\r
2924
+ ---Returns the size of a string resulting from \`string.pack\` with the given format string \`fmt\` (see [\xA76.4.2](command:extension.lua.doc?["en-us/52/manual.html/6.4.2"])) .\r
2925
+ ---\r
2926
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-string.packsize"])\r
2927
+ ---\r
2928
+ ---@param fmt string\r
2929
+ ---@return integer\r
2930
+ ---@nodiscard\r
2931
+ function string.packsize(fmt) end\r
2932
+ \r
2933
+ ---\r
2934
+ ---Returns the values packed in string according to the format string \`fmt\` (see [\xA76.4.2](command:extension.lua.doc?["en-us/52/manual.html/6.4.2"])) .\r
2935
+ ---\r
2936
+ ---[View documents](command:extension.lua.doc?["en-us/52/manual.html/pdf-string.unpack"])\r
2937
+ ---\r
2938
+ ---@param fmt string\r
2939
+ ---@param s string\r
2940
+ ---@param pos? integer\r
2941
+ ---@return any ...\r
2942
+ ---@return integer offset\r
2943
+ ---@nodiscard\r
2944
+ function string.unpack(fmt, s, pos) end\r
2945
+ `;var Ra={};ke(Ra,{default:()=>qv});var qv=`---@meta _\r
2946
+ \r
2947
+ ---@class LuaObject.base: userdata\r
2948
+ ---@field valid boolean\r
2949
+ ---@field object_name LuaObject.object_name\r
2950
+ `;var Ea={};ke(Ea,{default:()=>Fv});var Fv=`---@meta _\r
2951
+ \r
2952
+ -- extra fields not listed in the json docs...\r
2953
+ \r
2954
+ ---@class BlueprintEntity\r
2955
+ ---@field orientation? number\r
2956
+ ---@field recipe? string\r
2957
+ ---@field inventory? {bar?:number, filters?:InventoryFilter[] }\r
2958
+ ---@field bar? number\r
2959
+ ---@field filters? InventoryFilter[]\r
2960
+ ---@field type? "input"|"output"\r
2961
+ ---@field input_priority? "left"|"right"\r
2962
+ ---@field output_priority? "left"|"right"\r
2963
+ ---@field filter? string\r
2964
+ ---@field filter_mode? "whitelist"|"blacklist"\r
2965
+ ---@field override_stack_size? number\r
2966
+ ---@field request_filters? LogisticFilter[]\r
2967
+ ---@field request_from_buffers? boolean\r
2968
+ ---@field parameters? ProgrammableSpeakerParameters\r
2969
+ ---@field alert_parameters? ProgrammableSpeakerAlertParameters\r
2970
+ ---@field color? Color\r
2971
+ ---@field station? string\r
2972
+ \r
2973
+ ---@class BlueprintCircuitConnection\r
2974
+ \r
2975
+ ---@class BlueprintControlBehavior\r
2976
+ ---@field condition? CircuitCondition\r
2977
+ ---@field circuit_condition? CircuitCondition\r
2978
+ ---@field filters? Signal[]\r
2979
+ ---@field is_on? boolean\r
2980
+ ---@field arithmetic_conditions? ArithmeticCombinatorParameters\r
2981
+ ---@field decider_conditions? DeciderCombinatorParameters\r
2982
+ ---@field circuit_enable_disable? boolean\r
2983
+ ---@field circuit_read_resources? boolean\r
2984
+ ---@field circuit_resource_read_mode? defines.control_behavior.mining_drill.resource_read_mode\r
2985
+ ---@field read_stopped_train? boolean\r
2986
+ ---@field train_stopped_signal? SignalID\r
2987
+ ---@field read_from_train? boolean\r
2988
+ ---@field send_to_train? boolean\r
2989
+ ---@field circuit_mode_of_operation? integer This should be the per-type defines but that's hard\r
2990
+ ---@field circuit_read_hand_contents? boolean\r
2991
+ ---@field circuit_hand_read_mode? defines.control_behavior.inserter\r
2992
+ ---@field circuit_set_stack_size? boolean\r
2993
+ ---@field stack_control_input_signal? SignalID\r
2994
+ ---@field use_colors? boolean\r
2995
+ ---@field read_robot_stats? boolean\r
2996
+ ---@field read_logistics? boolean\r
2997
+ ---@field available_logistic_output_signal? SignalID\r
2998
+ ---@field total_logistic_output_signal? SignalID\r
2999
+ ---@field available_construction_output_signal? SignalID\r
3000
+ ---@field total_construction_output_signal? SignalID\r
3001
+ ---@field circuit_contents_read_mode? defines.control_behavior.transport_belt\r
3002
+ ---@field output_signal? SignalID\r
3003
+ ---@field circuit_close_signal? SignalID\r
3004
+ ---@field circuit_read_signal? SignalID\r
3005
+ ---@field red_output_signal? SignalID\r
3006
+ ---@field orange_output_signal? SignalID\r
3007
+ ---@field green_output_signal? SignalID\r
3008
+ ---@field blue_output_signal? SignalID\r
3009
+ ---@field circuit_open_gate? boolean\r
3010
+ ---@field circuit_read_sensor? boolean\r
3011
+ ---@field circuit_parameters? ProgrammableSpeakerCircuitParameters\r
3012
+ `;var Sa={};ke(Sa,{default:()=>Bv});var Bv=`---@meta _\r
3013
+ \r
3014
+ ---@see storage\r
3015
+ ---@deprecated use \`storage\`\r
3016
+ global = nil\r
3017
+ \r
3018
+ ---@class LuaBootstrap\r
3019
+ local scriptdep = {\r
3020
+ \r
3021
+ ---@deprecated use \`script.register_on_object_destroyed\`\r
3022
+ ---@see script.register_on_object_destroyed\r
3023
+ register_on_entity_destroyed = nil\r
3024
+ }\r
3025
+ \r
3026
+ ---@class LuaGameScript\r
3027
+ local gamedep = {\r
3028
+ ---@deprecated use \`script.active_mods\`\r
3029
+ ---@see script.active_mods\r
3030
+ active_mods = nil,\r
3031
+ \r
3032
+ ---@deprecated use \`helpers.table_to_json\`\r
3033
+ ---@see helpers.table_to_json\r
3034
+ table_to_json = nil,\r
3035
+ ---@deprecated use \`helpers.json_to_table\`\r
3036
+ ---@see helpers.json_to_table\r
3037
+ json_to_table = nil,\r
3038
+ ---@deprecated use \`helpers.write_file\`\r
3039
+ ---@see helpers.write_file\r
3040
+ write_file = nil,\r
3041
+ ---@deprecated use \`helpers.remove_path\`\r
3042
+ ---@see helpers.remove_path\r
3043
+ remove_path = nil,\r
3044
+ ---@deprecated use \`helpers.direction_to_string\`\r
3045
+ ---@see helpers.direction_to_string\r
3046
+ direction_to_string = nil,\r
3047
+ ---@deprecated use \`helpers.evaluate_expression\`\r
3048
+ ---@see helpers.evaluate_expression\r
3049
+ evaluate_expression = nil,\r
3050
+ ---@deprecated use \`helpers.encode_string\`\r
3051
+ ---@see helpers.encode_string\r
3052
+ encode_string = nil,\r
3053
+ ---@deprecated use \`helpers.decode_string\`\r
3054
+ ---@see helpers.decode_string\r
3055
+ decode_string = nil,\r
3056
+ ---@deprecated use \`helpers.parse_map_exchange_string\`\r
3057
+ ---@see helpers.parse_map_exchange_string\r
3058
+ parse_map_exchange_string = nil,\r
3059
+ ---@deprecated use \`helpers.check_prototype_translations\`\r
3060
+ ---@see helpers.check_prototype_translations\r
3061
+ check_prototype_translations = nil,\r
3062
+ ---@deprecated use \`helpers.is_valid_sound_path\`\r
3063
+ ---@see helpers.is_valid_sound_path\r
3064
+ is_valid_sound_path = nil,\r
3065
+ ---@deprecated use \`helpers.is_valid_sprite_path\`\r
3066
+ ---@see helpers.is_valid_sprite_path\r
3067
+ is_valid_sprite_path = nil,\r
3068
+ \r
3069
+ ---@deprecated use \`prototypes.get_entity_filtered\`\r
3070
+ ---@see prototypes.get_entity_filtered\r
3071
+ get_filtered_entity_prototypes = nil,\r
3072
+ ---@deprecated use \`prototypes.get_item_filtered\`\r
3073
+ ---@see prototypes.get_item_filtered\r
3074
+ get_filtered_item_prototypes = nil,\r
3075
+ ---@deprecated use \`prototypes.get_equipment_filtered\`\r
3076
+ ---@see prototypes.get_equipment_filtered\r
3077
+ get_filtered_equipment_prototypes = nil,\r
3078
+ ---@deprecated use \`prototypes.get_mod_setting_filtered\`\r
3079
+ ---@see prototypes.get_mod_setting_filtered\r
3080
+ get_filtered_mod_setting_prototypes = nil,\r
3081
+ ---@deprecated use \`prototypes.get_achievement_filtered\`\r
3082
+ ---@see prototypes.get_achievement_filtered\r
3083
+ get_filtered_achievement_prototypes = nil,\r
3084
+ ---@deprecated use \`prototypes.get_tile_filtered\`\r
3085
+ ---@see prototypes.get_tile_filtered\r
3086
+ get_filtered_tile_prototypes = nil,\r
3087
+ ---@deprecated use \`prototypes.get_decorative_filtered\`\r
3088
+ ---@see prototypes.get_decorative_filtered\r
3089
+ get_filtered_decorative_prototypes = nil,\r
3090
+ ---@deprecated use \`prototypes.get_fluid_filtered\`\r
3091
+ ---@see prototypes.get_fluid_filtered\r
3092
+ get_filtered_fluid_prototypes = nil,\r
3093
+ ---@deprecated use \`prototypes.get_recipe_filtered\`\r
3094
+ ---@see prototypes.get_recipe_filtered\r
3095
+ get_filtered_recipe_prototypes = nil,\r
3096
+ ---@deprecated use \`prototypes.get_technology_filtered\`\r
3097
+ ---@see prototypes.get_technology_filtered\r
3098
+ get_filtered_technology_prototypes = nil,\r
3099
+ \r
3100
+ \r
3101
+ ---@deprecated use \`prototypes.entity\`\r
3102
+ ---@see prototypes.entity\r
3103
+ entity_prototypes = nil,\r
3104
+ \r
3105
+ \r
3106
+ ---@deprecated use \`prototypes.item\`\r
3107
+ ---@see prototypes.item\r
3108
+ item_prototypes = nil,\r
3109
+ ---@deprecated use \`prototypes.fluid\`\r
3110
+ ---@see prototypes.fluid\r
3111
+ fluid_prototypes = nil,\r
3112
+ ---@deprecated use \`prototypes.tile\`\r
3113
+ ---@see prototypes.tile\r
3114
+ tile_prototypes = nil,\r
3115
+ ---@deprecated use \`prototypes.equipment\`\r
3116
+ ---@see prototypes.equipment\r
3117
+ equipment_prototypes = nil,\r
3118
+ ---@deprecated use \`prototypes.damage\`\r
3119
+ ---@see prototypes.damage\r
3120
+ damage_prototypes = nil,\r
3121
+ ---@deprecated use \`prototypes.virtual_signal\`\r
3122
+ ---@see prototypes.virtual_signal\r
3123
+ virtual_signal_prototypes = nil,\r
3124
+ ---@deprecated use \`prototypes.equipment_grid\`\r
3125
+ ---@see prototypes.equipment_grid\r
3126
+ equipment_grid_prototypes = nil,\r
3127
+ ---@deprecated use \`prototypes.recipe\`\r
3128
+ ---@see prototypes.recipe\r
3129
+ recipe_prototypes = nil,\r
3130
+ ---@deprecated use \`prototypes.technology\`\r
3131
+ ---@see prototypes.technology\r
3132
+ technology_prototypes = nil,\r
3133
+ ---@deprecated use \`prototypes.decorative\`\r
3134
+ ---@see prototypes.decorative\r
3135
+ decorative_prototypes = nil,\r
3136
+ ---@deprecated use \`prototypes.particle\`\r
3137
+ ---@see prototypes.particle\r
3138
+ particle_prototypes = nil,\r
3139
+ ---@deprecated use \`prototypes.autoplace_control\`\r
3140
+ ---@see prototypes.autoplace_control\r
3141
+ autoplace_control_prototypes = nil,\r
3142
+ ---@deprecated use \`prototypes.noise_layer\`\r
3143
+ ---@see prototypes.noise_layer\r
3144
+ noise_layer_prototypes = nil,\r
3145
+ ---@deprecated use \`prototypes.mod_setting\`\r
3146
+ ---@see prototypes.mod_setting\r
3147
+ mod_setting_prototypes = nil,\r
3148
+ ---@deprecated use \`prototypes.custom_input\`\r
3149
+ ---@see prototypes.custom_input\r
3150
+ custom_input_prototypes = nil,\r
3151
+ ---@deprecated use \`prototypes.ammo_category\`\r
3152
+ ---@see prototypes.ammo_category\r
3153
+ ammo_category_prototypes = nil,\r
3154
+ ---@deprecated use \`prototypes.named_noise_expression\`\r
3155
+ ---@see prototypes.named_noise_expression\r
3156
+ named_noise_expressions = nil,\r
3157
+ ---@deprecated use \`prototypes.item_subgroup\`\r
3158
+ ---@see prototypes.item_subgroup\r
3159
+ item_subgroup_prototypes = nil,\r
3160
+ ---@deprecated use \`prototypes.item_group\`\r
3161
+ ---@see prototypes.item_group\r
3162
+ item_group_prototypes = nil,\r
3163
+ ---@deprecated use \`prototypes.fuel_category\`\r
3164
+ ---@see prototypes.fuel_category\r
3165
+ fuel_category_prototypes = nil,\r
3166
+ ---@deprecated use \`prototypes.resource_category\`\r
3167
+ ---@see prototypes.resource_category\r
3168
+ resource_category_prototypes = nil,\r
3169
+ ---@deprecated use \`prototypes.achievement\`\r
3170
+ ---@see prototypes.achievement\r
3171
+ achievement_prototypes = nil,\r
3172
+ ---@deprecated use \`prototypes.module_category\`\r
3173
+ ---@see prototypes.module_category\r
3174
+ module_category_prototypes = nil,\r
3175
+ ---@deprecated use \`prototypes.equipment_category\`\r
3176
+ ---@see prototypes.equipment_category\r
3177
+ equipment_category_prototypes = nil,\r
3178
+ ---@deprecated use \`prototypes.trivial_smoke\`\r
3179
+ ---@see prototypes.trivial_smoke\r
3180
+ trivial_smoke_prototypes = nil,\r
3181
+ ---@deprecated use \`prototypes.shortcut\`\r
3182
+ ---@see prototypes.shortcut\r
3183
+ shortcut_prototypes = nil,\r
3184
+ ---@deprecated use \`prototypes.recipe_category\`\r
3185
+ ---@see prototypes.recipe_category\r
3186
+ recipe_category_prototypes = nil,\r
3187
+ ---@deprecated use \`prototypes.font\`\r
3188
+ ---@see prototypes.font\r
3189
+ font_prototypes = nil,\r
3190
+ \r
3191
+ }`;var xa={};ke(xa,{default:()=>Vv});var Vv=`---@meta _\r
3192
+ \r
3193
+ ---@type table\r
3194
+ storage = {}\r
3195
+ `;var La={};ke(La,{default:()=>zv});var zv=`--##
3196
+ ---cSpell:ignore userdata, nups, nparams
3197
+
3198
+ -- (this should probably be in some better location, maybe the readme? i'm not sure)
3199
+ -- what do the different prefixes for gmatch results mean:
3200
+ -- s = start, f = finish, p = position, no prefix = an actual string capture
3201
+
3202
+ ---Dev Notes: confirm "path/to/lua-language-server/script/", in Lua.Workspace.Library for completions
3203
+
3204
+ -- define \`__plugin_dev\` variable used during development with https://github.com/JanSharp/SumnekoLuaPluginDevEnv
3205
+ ---@diagnostic disable-next-line
3206
+ if false then __plugin_dev = true end
3207
+
3208
+ local workspace
3209
+ local furi
3210
+ local client
3211
+ if not __plugin_dev then
3212
+ workspace = require("workspace")
3213
+ furi = require("file-uri")
3214
+ client = require("client")
3215
+ end
3216
+
3217
+ local arg_parser = require("factorio-plugin.arg-parser")
3218
+ local util = require("factorio-plugin.util")
3219
+ local require_module = require("factorio-plugin.require")
3220
+ local storage = require("factorio-plugin.storage")
3221
+ local remote = require("factorio-plugin.remote")
3222
+ local command_line = require("factorio-plugin.command-line")
3223
+
3224
+ ---@class Diff
3225
+ ---@field start integer @ The number of bytes at the beginning of the replacement
3226
+ ---@field finish integer @ The number of bytes at the end of the replacement
3227
+ ---@field text string @ What to replace
3228
+
3229
+ ---@alias Diff.ArrayWithCount {[integer]: Diff, ["count"]: integer}
3230
+
3231
+ ---@param msg string
3232
+ local function log_info(msg)
3233
+ if __plugin_dev then
3234
+ print(msg)
3235
+ return
3236
+ end
3237
+ client.logMessage("Info", msg)
3238
+ log.info(msg) ---@diagnostic disable-line: undefined-field
3239
+ end
3240
+
3241
+ ---@param msg string
3242
+ local function log_warn(msg)
3243
+ if __plugin_dev then
3244
+ print(msg)
3245
+ return
3246
+ end
3247
+ client.logMessage("Warning", msg)
3248
+ log.warn(msg) ---@diagnostic disable-line: undefined-field
3249
+ end
3250
+
3251
+ ---@param args string[]
3252
+ ---@param config ArgsConfig
3253
+ ---@param help_config? ArgsHelpConfig
3254
+ ---@return table? args @ returns \`nil\` if there was an error, \`{help = true}\` if it was help
3255
+ local function parse_and_show_msg_on_error_or_help(args, config, help_config)
3256
+ local result, err_or_index = arg_parser.parse(args, config)
3257
+
3258
+ if result and err_or_index < #args then
3259
+ result = nil
3260
+ err_or_index = string.format("Unknown/too many values. Consumed %d out of %d arguments.", err_or_index, #args)
3261
+ end
3262
+
3263
+ if result and not result.help then
3264
+ return result
3265
+ end
3266
+
3267
+ local long_msg = (result and "\\n" or (err_or_index.."\\n\\n"))..arg_parser.get_help_string(config, help_config)
3268
+ if not result then
3269
+ client.showMessage("Warning", "Invalid FMTK plugin args: "..err_or_index.." See Output/log for help message.")
3270
+ log_warn(long_msg)
3271
+ else
3272
+ client.showMessage("Info", "See Output/log for FMTK plugin help message.")
3273
+ log_info(long_msg)
3274
+ result = {help = true}
3275
+ end
3276
+ return result
3277
+ end
3278
+
3279
+ ---@type string
3280
+ local workspace_uri = __plugin_dev and "file:///dev/null" or select(2, ...)
3281
+ ---@type string|(string[])|{[string]: string|(string[])}
3282
+ local plugin_args = __plugin_dev and {} or select(3, ...)
3283
+
3284
+ if type(plugin_args) == "table" and not plugin_args[1] then
3285
+ local keys = {}
3286
+ for k in pairs(plugin_args) do
3287
+ keys[#keys+1] = k
3288
+ end
3289
+ -- Sort because I do not trust that they got added to the table in deterministic order.
3290
+ -- (Tmk LuaLS's pairs does have insertion iteration order, therefore the mention of "got added".)
3291
+ table.sort(keys)
3292
+ for _, k in ipairs(keys) do
3293
+ if (k:lower():find("factorio", 1, true)) then
3294
+ log_info(string.format("FMTK using plugin args from key %q", k))
3295
+ plugin_args = plugin_args[k]
3296
+ break
3297
+ end
3298
+ end
3299
+ end
3300
+
3301
+ -- Both to handle LuaLS <= v3.9.3, but also to handle args which were defined using
3302
+ -- {[string]: string|(string[])}, because I'm 99% certain that'll end up giving us a
3303
+ -- string instead of actual string arrays (aka I think it's also (a separate) bug.)
3304
+ if type(plugin_args) ~= "table" then
3305
+ -- The log message says string even though it could be anything. If it is not a string
3306
+ -- then the safety loop below will catch it and also log its message.
3307
+ log_warn("FMTK plugin received a string instead of a string array as plugin args.\\n\\z
3308
+ If LuaLS v3.9.3 or lower is used, make sure to update.\\n\\z
3309
+ If the issue persists it is likely a different bug in the LuaLS.")
3310
+ plugin_args = {plugin_args}
3311
+ end
3312
+
3313
+ do -- Major trust issues.
3314
+ local i = 1
3315
+ local c = #plugin_args
3316
+ local newI = 1
3317
+ while i <= c do
3318
+ local arg = plugin_args[i]
3319
+ plugin_args[i] = nil
3320
+ if type(arg) == "string" then
3321
+ plugin_args[newI] = arg
3322
+ newI = newI + 1
3323
+ else
3324
+ log_warn(string.format("FMTK plugin received non string plugin arg %s (type %s)", tostring(arg), type(arg)))
3325
+ end
3326
+ i = i + 1
3327
+ end
3328
+ end
3329
+
3330
+ do
3331
+ log_info("FMTK plugin workspace uri: "..workspace_uri)
3332
+ local pretty_args = {}
3333
+ for i = 1, #plugin_args do
3334
+ pretty_args[i] = string.format("%q", plugin_args[i])
3335
+ end
3336
+ log_info(string.format("FMTK plugin args (%d): %s", #plugin_args, table.concat(pretty_args, ", ")))
3337
+ end
3338
+
3339
+ ---@class PluginArgs
3340
+ ---@field ignore string[]?
3341
+ ---@field clusterio_modules boolean
3342
+
3343
+ ---@type PluginArgs
3344
+ local args = parse_and_show_msg_on_error_or_help(plugin_args, {
3345
+ options = {
3346
+ {
3347
+ field = "ignore",
3348
+ long = "ignore",
3349
+ description = "Completely disable the plugin for the given folders or files.\\n\\z
3350
+ Either absolute or relative to the workspace root.",
3351
+ type = "string",
3352
+ min_params = 1,
3353
+ optional = true,
3354
+ },
3355
+ {
3356
+ field = "clusterio_modules",
3357
+ long = "clusterio-modules",
3358
+ description = "Enable the require module path modification for\\n\\z
3359
+ \\"^modules/[^/]-/\\" to get replaced with \\"module/\\",\\n\\z
3360
+ except for \\"^modules/clusterio/\\" which remains untouched.",
3361
+ flag = true,
3362
+ },
3363
+ },
3364
+ })--[[@as PluginArgs]]
3365
+ args = args or {}
3366
+
3367
+ ---@type table<string, true>
3368
+ local ignored_paths = {}
3369
+ for _, path in ipairs(args.ignore or {}) do
3370
+ local full_path = workspace.getAbsolutePath(workspace_uri, path) -- Returns a normalized path.
3371
+ log_info(string.format("FMTK plugin --ignore %q resolved to %q", path, full_path or "<nil>"))
3372
+ if full_path then
3373
+ ignored_paths[full_path] = true
3374
+ end
3375
+ end
3376
+
3377
+ ---@param uri string @ The uri of file
3378
+ ---@param text string @ The content of file
3379
+ ---@return nil|Diff[]
3380
+ function OnSetText(uri, text)
3381
+ if not __plugin_dev then
3382
+ local path = furi.decode(uri)
3383
+ if path then
3384
+ for ignored_path in pairs(ignored_paths) do
3385
+ if path:sub(1, #ignored_path) == ignored_path then
3386
+ -- log.info("Plugin ignoring "..path.." because of ignored path "..ignored_path)
3387
+ return
3388
+ end
3389
+ end
3390
+ end
3391
+ end
3392
+
3393
+ ---I can't see a reason to process ---@meta files
3394
+ ---Speeds up loading by not reading annotation files
3395
+ if text:sub(1, 8) == "---@meta" or text:sub(1, 4) == "--##" then return end
3396
+
3397
+ local diffs = {count = 0} ---@type Diff.ArrayWithCount
3398
+
3399
+ util.on_pre_process_file(text, diffs)
3400
+
3401
+ require_module.replace(uri, text, diffs, args)
3402
+ remote.replace(uri, text, diffs)
3403
+ command_line.replace(uri, text, diffs)
3404
+ -- The following replacements require other diffs to be created already
3405
+ -- to be able to check for their existence to prevent duplication/overlaps.
3406
+ storage.replace(uri, text, diffs)
3407
+
3408
+ util.on_post_process_file()
3409
+
3410
+ diffs.count = nil
3411
+ return diffs
3412
+ end
3413
+ `;var Hv=[ia,oa,sa,aa,ca,la,ua,da,fa,pa,ha,ma,ga,_a,ba,ya,va,wa,Pa,Ra,Ea,Sa,xa,La],Da=Hv,rf=["../luals-addon/factorio/factorio-plugin/arg-parser.lua","../luals-addon/factorio/factorio-plugin/command-line.lua","../luals-addon/factorio/factorio-plugin/remote.lua","../luals-addon/factorio/factorio-plugin/require.lua","../luals-addon/factorio/factorio-plugin/storage.lua","../luals-addon/factorio/factorio-plugin/util.lua","../luals-addon/factorio/library/core/lualib/event_handler.lua","../luals-addon/factorio/library/core/lualib/meld.lua","../luals-addon/factorio/library/core/lualib/mod-gui.lua","../luals-addon/factorio/library/core/lualib/sound-util.lua","../luals-addon/factorio/library/core/lualib/util.lua","../luals-addon/factorio/library/data/mod-settings.lua","../luals-addon/factorio/library/data/mods.lua","../luals-addon/factorio/library/lua/builtins.lua","../luals-addon/factorio/library/lua/debug.lua","../luals-addon/factorio/library/lua/math.lua","../luals-addon/factorio/library/lua/package.lua","../luals-addon/factorio/library/lua/serpent.lua","../luals-addon/factorio/library/lua/string.lua","../luals-addon/factorio/library/runtime/LuaObject.lua","../luals-addon/factorio/library/runtime/blueprint.lua","../luals-addon/factorio/library/runtime/deprecated_2.0.lua","../luals-addon/factorio/library/runtime/storage.lua","../luals-addon/factorio/plugin.lua"];var of={name:"Factorio",files:["control%.lua","data%.lua","data%-updates%.lua","data%-final%-fixes%.lua","settings%.lua","settings%-updates%.lua","settings%-final%-fixes%.lua"],settings:{"Lua.runtime.version":"Lua 5.2","Lua.runtime.path":["?.lua"],"Lua.runtime.builtin":{io:"disable",os:"disable",coroutine:"disable",package:"disable",math:"disable",debug:"disable"},"Lua.diagnostics.globals":["__DebugAdapter","__Profiler"],"Lua.diagnostics.disable":["lowercase-global"],"Lua.language.fixIndent":!1}};var Gi;function e0(){if(!Gi){Gi=[];for(let n=0;n<Da.length;n++)Gi.push({name:rf[n].replace("../luals-addon/",""),content:Da[n].default})}return Gi}function n0(n){return{name:"factorio/config.json",content:JSON.stringify(Object.assign({},of,{bundleVersion:_n,factorioVersion:n}))}}var Ir=ti(uf(),1);import*as ht from"os";import*as ye from"path";import{execFile as Gv}from"child_process";function df(n,e){return n.match(/^~[\\\/]/)&&(n=ye.posix.join(ht.homedir().replace(/\\/g,"/"),n.replace(/^~[\\\/]/,""))),n=n.replace("${userHome}",ht.homedir()),e?.[0]&&(n=n.replace("${workspaceFolder}",e[0].uri.fsPath)),n=n.replace(/\$\{env:(\w+)}/g,(t,r)=>process.env[r]??t),n}var ff=class{constructor(e,t,r,i){this.fs=e;this.fv=t;this.docs=r;this.workspaceFolders=i}async getBinaryVersion(){return new Promise((e,t)=>{Gv(this.factorioPath,["--version"],{env:Object.assign({},process.env,{SteamAppId:"427520"})},(r,i,o)=>{r&&t(new Error(r.message));let s=i?.match(/^Version: ([0-9\.]+) /m);s&&e(s[1]),t(new Error(`Unable to read version:
3414
+ stdout: ${i}
3415
+ stderr: ${o}`))})})}async debugLaunchArgs(){let e=[];return e.push(this.factorioPath),this.fv.docsPath&&e.push("--docs",this.fv.docsPath),this.configPathIsOverriden()&&e.push("--config",await this.configPath()),this.workspaceFolders&&e.push("--workspace",...this.workspaceFolders.map(t=>t.uri.fsPath)),e}get name(){return this.fv.name}get onlineOnly(){return!this.fv.factorioPath}get factorioPath(){if(!this.fv.factorioPath)throw new Error("No factorioPath");return df(this.fv.factorioPath,this.workspaceFolders)}get docArgs(){return this.fv.onlineDocs?["luals-addon","-o",this.fv.onlineDocs===!0?"latest":this.fv.onlineDocs]:["luals-addon","-d",this.docsPath,"-p",this.protosPath]}get docsPath(){return ye.join(this.factorioPath,this.fv.docsPath?this.fv.docsPath:ht.platform()==="darwin"?"../../doc-html/runtime-api.json":"../../../doc-html/runtime-api.json")}get protosPath(){return ye.join(this.factorioPath,this.fv.protosPath?this.fv.protosPath:this.fv.docsPath?ye.join(this.fv.docsPath,"../prototype-api.json"):ht.platform()==="darwin"?"../../doc-html/prototype-api.json":"../../../doc-html/prototype-api.json")}configPathIsOverriden(){return!!this.fv.configPath}async configPath(){if(this.fv.configPath)return df(this.fv.configPath,this.workspaceFolders);let e=ye.resolve(ye.dirname(this.factorioPath),"../../config-path.cfg");try{let t=Ir.parse((await this.fs.readFile(tt.file(e))).toString());return ye.resolve(this.translatePath(t["config-path"]),"./config.ini")}catch{}return this.translatePath("__PATH__system-write-data__/config/config.ini")}get nativeDAP(){return this.fv.nativeDAP}iniData;async configIni(){return this.iniData||(this.iniData=this.fs.readFile(tt.file(await this.configPath())).then(e=>Ir.parse(e.toString()))),this.iniData}async isPrototypeCacheEnabled(){try{return(await this.configIni()).other?.["cache-prototype-data"]}catch{return}}async disablePrototypeCache(){this.iniData=void 0;let e=tt.file(await this.configPath()),t=(await this.fs.readFile(e)).toString();t=t.replace("cache-prototype-data=","; cache-prototype-data="),await this.fs.writeFile(e,Buffer.from(t)),this.iniData=Ir.parse(t)}async isMouseAutoCaptureDisabled(){try{return(await this.configIni()).other?.["disable-mouse-auto-capture"]}catch{return}}async disableMouseAutoCapture(){this.iniData=void 0;let e=tt.file(await this.configPath()),t=(await this.fs.readFile(e)).toString(),r=t.match(/^;? *disable-mouse-auto-capture=.*$/m);if(r)t=t.slice(0,r.index)+`
3416
+ disable-mouse-auto-capture=true
3417
+ `+t.slice(r.index+r[0].length);else{let i=t.match(/^\[other\]$/m);t=t.slice(0,i.index+i[0].length)+`
3418
+ disable-mouse-auto-capture=true
3419
+ `+t.slice(i.index+i[0].length)}await this.fs.writeFile(e,Buffer.from(t)),this.iniData=Ir.parse(t)}async defaultModsPath(){let e=(await this.configIni())?.path?.["write-data"];if(!e)throw new Error("path.write-data missing in config.ini");return ye.posix.normalize(ye.resolve(this.translatePath(e),"mods"))}async dataPath(){let e=(await this.configIni().catch(()=>({path:{"read-data":"__PATH__executable__/../../data"}}))).path?.["read-data"];if(!e)throw new Error("path.read-data missing in config.ini");return ye.posix.normalize(this.translatePath(e))}async lualibPath(){return ye.posix.normalize(ye.resolve(await this.dataPath(),"core","lualib"))}async writeDataPath(){let e=(await this.configIni()).path?.["write-data"];if(!e)throw new Error("path.write-data missing in config.ini");return ye.posix.normalize(this.translatePath(e))}translatePath(e){if(e.startsWith("__PATH__executable__"))return ye.join(ye.dirname(this.factorioPath),e.replace("__PATH__executable__",""));if(e.startsWith("__PATH__system-write-data__")){let t=ht.platform()==="win32"?ye.resolve(process.env.APPDATA,"Factorio"):ht.platform()==="linux"?ye.resolve(ht.homedir(),".factorio"):ht.platform()==="darwin"?ye.resolve(ht.homedir(),"Library/Application Support/factorio"):"??";return ye.join(t,e.replace("__PATH__system-write-data__",""))}if(e.startsWith("__PATH__system-read-data__")){let t=ht.platform()==="linux"?"/usr/share/factorio":ht.platform()==="darwin"?ye.resolve(ye.dirname(this.factorioPath),"../data"):ye.resolve(ye.dirname(this.factorioPath),"../../data");return ye.join(t,e.replace("__PATH__system-read-data__",""))}return e}is(e){let t=this.fv;return t.name===e.name&&t.factorioPath===e.factorioPath&&t.configPath===e.configPath&&t.nativeDAP===e.nativeDAP&&t.onlineDocs===e.onlineDocs&&t.docsPath===e.docsPath&&t.protosPath===e.protosPath}};var hf=(l=>(l[l.Nil=0]="Nil",l[l.BoolFalse=1]="BoolFalse",l[l.BoolTrue=2]="BoolTrue",l[l.Number=3]="Number",l[l.String=4]="String",l[l.Table=5]="Table",l[l.ExistingGCObject=6]="ExistingGCObject",l[l.LuaObject=7]="LuaObject",l[l.TableWithMeta=8]="TableWithMeta",l))(hf||{}),mf=(b=>(b[b.LuaEntity=0]="LuaEntity",b[b.LuaInvalidObject=1]="LuaInvalidObject",b[b.LuaRecipe=2]="LuaRecipe",b[b.LuaTechnology=3]="LuaTechnology",b[b.LuaRandomGenerator=4]="LuaRandomGenerator",b[b.LuaForce=5]="LuaForce",b[b.LuaBurner=6]="LuaBurner",b[b.LuaLogisticPoint=7]="LuaLogisticPoint",b[b.LuaDecorativePrototype=8]="LuaDecorativePrototype",b[b.LuaCustomChartTag=9]="LuaCustomChartTag",b[b.LuaPermissionGroups=10]="LuaPermissionGroups",b[b.LuaPermissionGroup=11]="LuaPermissionGroup",b[b.LuaUnitGroup=12]="LuaUnitGroup",b[b.LuaTrain=13]="LuaTrain",b[b.LuaFluidBox=14]="LuaFluidBox",b[b.LuaEntityPrototype=15]="LuaEntityPrototype",b[b.LuaItemPrototype=16]="LuaItemPrototype",b[b.LuaEquipmentGrid=18]="LuaEquipmentGrid",b[b.LuaEquipment=19]="LuaEquipment",b[b.LuaItemStack=20]="LuaItemStack",b[b.LuaPlayer=21]="LuaPlayer",b[b.LuaGui=22]="LuaGui",b[b.LuaGuiElement=23]="LuaGuiElement",b[b.LuaStyle=24]="LuaStyle",b[b.LuaSurface=25]="LuaSurface",b[b.LuaFluidPrototype=26]="LuaFluidPrototype",b[b.LuaGroup=27]="LuaGroup",b[b.LuaTile=28]="LuaTile",b[b.LuaChunkIterator=29]="LuaChunkIterator",b[b.LuaStructMapSettings=30]="LuaStructMapSettings",b[b.LuaTransportLine=31]="LuaTransportLine",b[b.LuaLogisticNetwork=32]="LuaLogisticNetwork",b[b.LuaLogisticCell=33]="LuaLogisticCell",b[b.LuaInventory=34]="LuaInventory",b[b.LuaControlBehavior=35]="LuaControlBehavior",b[b.LuaFlowStatistics=36]="LuaFlowStatistics",b[b.LuaTilePrototype=37]="LuaTilePrototype",b[b.LuaEquipmentPrototype=38]="LuaEquipmentPrototype",b[b.LuaCircuitNetwork=39]="LuaCircuitNetwork",b[b.LuaDamagePrototype=40]="LuaDamagePrototype",b[b.LuaVirtualSignalPrototype=41]="LuaVirtualSignalPrototype",b[b.LuaEquipmentGridPrototype=42]="LuaEquipmentGridPrototype",b[b.LuaRecipePrototype=43]="LuaRecipePrototype",b[b.LuaTechnologyPrototype=44]="LuaTechnologyPrototype",b[b.LuaBurnerPrototype=45]="LuaBurnerPrototype",b[b.LuaElectricEnergySourcePrototype=46]="LuaElectricEnergySourcePrototype",b[b.LuaCustomInputPrototype=47]="LuaCustomInputPrototype",b[b.LuaNoiseLayerPrototype=48]="LuaNoiseLayerPrototype",b[b.LuaAutoplaceControlPrototype=49]="LuaAutoplaceControlPrototype",b[b.LuaModSettingPrototype=50]="LuaModSettingPrototype",b[b.LuaAmmoCategoryPrototype=51]="LuaAmmoCategoryPrototype",b[b.LuaRailPath=52]="LuaRailPath",b[b.LuaFluidBoxPrototype=53]="LuaFluidBoxPrototype",b[b.LuaAISettings=54]="LuaAISettings",b[b.LuaProfiler=55]="LuaProfiler",b[b.LuaNamedNoiseExpression=56]="LuaNamedNoiseExpression",b[b.LuaFuelCategoryPrototype=57]="LuaFuelCategoryPrototype",b[b.LuaResourceCategoryPrototype=58]="LuaResourceCategoryPrototype",b[b.LuaAchievementPrototype=59]="LuaAchievementPrototype",b[b.LuaModuleCategoryPrototype=60]="LuaModuleCategoryPrototype",b[b.LuaEquipmentCategoryPrototype=61]="LuaEquipmentCategoryPrototype",b[b.LuaTrivialSmokePrototype=62]="LuaTrivialSmokePrototype",b[b.LuaShortcutPrototype=63]="LuaShortcutPrototype",b[b.LuaRecipeCategoryPrototype=64]="LuaRecipeCategoryPrototype",b[b.LuaParticlePrototype=65]="LuaParticlePrototype",b[b.LuaFluidEnergySourcePrototype=66]="LuaFluidEnergySourcePrototype",b[b.LuaHeatEnergySourcePrototype=67]="LuaHeatEnergySourcePrototype",b[b.LuaVoidEnergySourcePrototype=68]="LuaVoidEnergySourcePrototype",b[b.LuaFontPrototype=69]="LuaFontPrototype",b[b.LuaQualityPrototype=70]="LuaQualityPrototype",b[b.LuaSpaceLocationPrototype=71]="LuaSpaceLocationPrototype",b[b.LuaPlanetType=72]="LuaPlanetType",b[b.LuaUndoRedoStackType=73]="LuaUndoRedoStackType",b[b.LuaSurfacePropertyPrototype=74]="LuaSurfacePropertyPrototype",b[b.LuaCustomEventPrototype=75]="LuaCustomEventPrototype",b[b.LuaSpaceConnectionPrototype=76]="LuaSpaceConnectionPrototype",b[b.LuaActiveTriggerPrototype=77]="LuaActiveTriggerPrototype",b[b.LuaSpacePlatformType=78]="LuaSpacePlatformType",b[b.LuaHeatBufferPrototype=79]="LuaHeatBufferPrototype",b[b.LuaWireConnectorType=80]="LuaWireConnectorType",b[b.LuaAsteroidChunkPrototype=81]="LuaAsteroidChunkPrototype",b[b.LuaLogisticSection=82]="LuaLogisticSection",b[b.LuaRailEnd=83]="LuaRailEnd",b[b.LuaNamedNoiseFunction=84]="LuaNamedNoiseFunction",b[b.LuaCollisionLayerPrototype=85]="LuaCollisionLayerPrototype",b[b.LuaSimulationType=86]="LuaSimulationType",b[b.LuaAirbornePollutionPrototype=87]="LuaAirbornePollutionPrototype",b[b.LuaItem=88]="LuaItem",b[b.LuaTrainManager=89]="LuaTrainManager",b[b.LuaRenderObject=90]="LuaRenderObject",b[b.LuaRecord=91]="LuaRecord",b[b.LuaBurnerUsagePrototype=92]="LuaBurnerUsagePrototype",b[b.LuaSurfacePrototype=93]="LuaSurfacePrototype",b[b.LuaProcessionPrototype=94]="LuaProcessionPrototype",b[b.LuaProcessionLayerInheritanceGroupPrototype=95]="LuaProcessionLayerInheritanceGroupPrototype",b[b.LuaLogisticSections=96]="LuaLogisticSections",b[b.xLuaFutureObject=-1]="xLuaFutureObject",b))(mf||{}),sn=(k=>(k[k.None=0]="None",k[k.EntityInventory=1]="EntityInventory",k[k.ControllerInventory=2]="ControllerInventory",k[k.ItemEntity=3]="ItemEntity",k[k.EntityCursorStack=4]="EntityCursorStack",k[k.ControllerCursorStack=5]="ControllerCursorStack",k[k.Inserter=6]="Inserter",k[k.ItemWithInventory=7]="ItemWithInventory",k[k.BeltConnectable=8]="BeltConnectable",k[k.Equipment=9]="Equipment",k[k.TargetableInventory=10]="TargetableInventory",k[k.TargetableItemStack=11]="TargetableItemStack",k[k.PlayerBlueprint=12]="PlayerBlueprint",k[k.ScriptInventory=13]="ScriptInventory",k[k.LinkedInventory=14]="LinkedInventory",k))(sn||{}),gf=(B=>(B[B.Container=1]="Container",B[B.GenericOnOff=2]="GenericOnOff",B[B.Inserter=3]="Inserter",B[B.Lamp=4]="Lamp",B[B.LogisticContainer=5]="LogisticContainer",B[B.Roboport=6]="Roboport",B[B.StorageTank=7]="StorageTank",B[B.TrainStop=8]="TrainStop",B[B.DeciderCombinator=9]="DeciderCombinator",B[B.ArithmeticCombinator=10]="ArithmeticCombinator",B[B.ConstantCombinator=11]="ConstantCombinator",B[B.TransportBelt=12]="TransportBelt",B[B.Accumulator=13]="Accumulator",B[B.RailSignal=14]="RailSignal",B[B.Wall=15]="Wall",B[B.MiningDrill=16]="MiningDrill",B[B.ProgrammableSpeaker=17]="ProgrammableSpeaker",B[B.RailChainSignal=18]="RailChainSignal",B))(gf||{}),Zi=(s=>(s[s.ItemProduction=1]="ItemProduction",s[s.FluidProduction=2]="FluidProduction",s[s.KillCount=3]="KillCount",s[s.EntityBuild=6]="EntityBuild",s[s.ElectricNetwork=7]="ElectricNetwork",s[s.Pollution=8]="Pollution",s))(Zi||{}),pf=class{version;data;gcid=0;gcidmap=[];gcidmaps;constructor(e){this.version=Pn.load(e.read(9)),this.data={},this.gcidmaps={};let t=e.readUInt32LE();for(let r=0;r<t;r++){let i=e.readPackedUInt_8_32(),o=e.readString(i),s=e.readPackedUInt_8_32(),a=new Nn(e.read(s));Pn.load(a.read(9)),this.gcid=0,this.gcidmap=[];let d=this.loadLuaValue(a);if(a.readableLength>0)throw new Error(`Data for ${o} not fully consumed, ${a.readableLength} bytes left`);e.readUInt8(),this.data[o]=d,this.gcidmaps[o]=this.gcidmap}}find(e,t){return this.gcidmaps[e][t]}loadLuaValue(e){let t=e.readUInt8(),r=hf[t];switch(r){case"Nil":case"BoolFalse":case"BoolTrue":return{type:r};case"Number":{let o=e.readDoubleLE();return{type:r,value:o}}case"String":{let o=e.readPackedUInt_8_32(),s=e.readString(o);return{type:r,value:s}}case"TableWithMeta":case"Table":{let o=this.gcid++,s;if(r==="TableWithMeta"){let h=e.readPackedUInt_8_32();s=e.readString(h)}let a=e.readPackedUInt_8_32(),d=[];for(let h=0;h<a;h++){let v=this.loadLuaValue(e),w=this.loadLuaValue(e);d.push({key:v,value:w})}let l={type:r,id:o,values:d,meta:s};return this.gcidmap[o]=l,l}case"ExistingGCObject":let i=e.readPackedUInt_16_32();return{type:r,id:i};case"LuaObject":{let o="LuaObject",s=this.gcid++,a=e.readUInt32LE(),d=mf[a],l=this.loadLuaObjectData(a,e);return{type:o,id:s,value:Object.assign({type:d},l)}}default:throw new Error(`Invalid type ${r} in saved lua value`)}}loadLuaObjectData(e,t){switch(e){case 0:case 11:case 12:case 13:case 14:case 18:case 19:case 21:case 22:case 32:case 33:case 52:case 54:return{target:t.readUInt32LE()};case 10:return{};case 2:case 3:{let r=t.readUInt8(),i=t.readUInt16LE();return{force:r,id:i}}case 4:return{seed:[t.readUInt32LE(),t.readUInt32LE(),t.readUInt32LE()]};case 6:{let r=t.readUInt32LE(),i=t.readUInt32LE();return{entity:r,equipment:i}}case 7:{let r=t.readUInt8(),i=t.readUInt32LE();return{index:r,owner:i}}case 9:{let r=t.readUInt8(),i=t.readPackedUInt_8_32(),o=t.readUInt32LE();return{force:r,surface:i,target:o}}case 8:return this.version.isBeyond(1,2,1,4)?{id:t.readUInt16LE()}:{id:t.readUInt8()};case 37:return this.version.isBeyond(1,2,0,3)?{id:t.readUInt16LE()}:{id:t.readUInt8()};case 5:case 40:case 42:case 49:case 51:case 57:case 58:case 60:case 61:case 62:return{id:t.readUInt8()};case 15:case 16:case 26:case 38:case 41:case 43:case 44:case 47:case 48:case 50:case 59:case 63:case 64:case 65:case 66:case 67:case 68:case 79:return{id:t.readUInt16LE()};case 56:case 84:return{id:t.readUInt32LE()};case 28:{let r={x:t.readInt32LE(),y:t.readInt32LE()},i=t.readPackedUInt_8_32();return{position:r,surface:i}}case 23:case 24:{let r=t.readUInt32LE(),i=t.readUInt32LE();return{player:r,index:i}}case 25:return this.version.isBeyond(1,2,7,1)?{target:t.readUInt32LE()}:{surface:t.readPackedUInt_8_32()};case 27:{let r=t.readUInt8(),i=t.readUInt16LE();return{group:r,subgroup:i}}case 29:{let r=t.readPackedUInt_8_32(),i={x:t.readInt32LE(),y:t.readInt32LE()};return{surface:r,position:i}}case 31:{let r=t.readUInt32LE(),i=t.readUInt8();return{target:r,index:i}}case 34:{let r=t.readUInt32LE(),i=t.readUInt32LE(),o=t.readUInt32LE(),s=t.readUInt32LE(),a=t.readUInt32LE(),d=t.readUInt8()!==0,l;if(d){let v=t.readUInt8(),w=t.readUInt16LE(),_=t.readUInt32LE();l={force:v,proto:w,linkid:_}}let h=t.readUInt8();return{entity:r,controller:i,item:o,equipment:s,scriptinv:a,link:l,index:h}}case 45:case 46:{let r=t.readUInt16LE(),i=t.readUInt16LE();return{entity:r,equipment:i}}case 53:{let r=t.readUInt16LE(),i=t.readUInt32LE(),o=t.readUInt8();return{entity:r,index:i,targettype:o}}case 55:return{stopped:t.readUInt8()!==0};case 69:{let r=t.readUInt8()!==0,i;if(r){let o=t.readPackedUInt_8_32();i=t.readString(o)}return{name:i}}case 39:{let r=t.readUInt32LE(),i=t.readUInt8(),o=t.readUInt8();return{target:r,connector:i,wire:o}}case 20:return this.loadLuaItemStack(t);case 35:return this.loadLuaControlBehavior(t);case 36:return this.loadLuaFlowStatistics(t);case 30:throw new Error(`LuaObject of type ${e} cannot have been saved`);default:throw new Error(`Unknown LuaObject type ${e}`)}}loadItemStackLocation(e){let t=this.version.isBeyond(1,2,0,33)?e.readUInt8():0;if(t!==0)return{standaloneStack:t};let r=e.readUInt8(),i=e.readUInt16LE();return{inventoryIndex:r,slotIndex:i}}loadLuaItemStack(e){let t=this.version.isBeyond(1,2,0,359)?e.readUInt8():e.readUInt32LE();switch(t){case 0:return{stacktype:sn[t]};case 1:case 2:case 7:case 9:{let r=e.readUInt32LE(),i;if(this.version.isBeyond(1,2,0,361))i=this.loadItemStackLocation(e);else{let o=e.readUInt8(),s=e.readUInt16LE();i={inventoryIndex:o,slotIndex:s}}return{stacktype:sn[t],target:r,location:i}}case 3:case 4:case 5:case 6:case 12:{let r=e.readUInt32LE();return{stacktype:sn[t],target:r}}case 8:{let r=e.readUInt32LE(),i=e.readUInt8(),o=e.readUInt8();return{stacktype:sn[t],target:r,line:i,item:o}}case 10:throw new Error(`LuaItemStack type ${t} cannot have been saved`);case 11:return{stacktype:sn[t]};case 13:{let r=e.readUInt32LE(),i=e.readUInt16LE();return{stacktype:sn[t],target:r,slot:i}}case 14:{let r=e.readUInt8(),i=e.readUInt16LE(),o=e.readUInt32LE();return{stacktype:sn[t],force:r,proto:i,linkid:o}}default:throw new Error(`Unknown LuaItemStack type ${t}`)}}loadLuaControlBehavior(e){let t=e.readUInt32LE(),r=e.readUInt32LE();return{behavior:gf[t],target:r}}loadLuaFlowStatistics(e){let t=e.readUInt32LE();switch(t){case 1:case 2:case 3:case 6:let r=e.readUInt8();return{flow:Zi[t],force:r};case 7:let i=e.readUInt32LE();return{flow:Zi[t],target:i};case 8:return{flow:Zi[t]};default:throw new Error(`Unknown LuaFlowStatistics type ${t}`)}}};export{iR as a,_n as b,pt as c,Vn as d,Zy as e,Lr as f,tt as g,Lt as h,Nn as i,ji as j,Hm as k,Qw as l,sg as m,nR as n,yn as o,Pr as p,yd as q,zt as r,ce as s,Mt as t,Vi as u,kr as v,Wi as w,nn as x,rn as y,wt as z,ze as A,Ht as B,Je as C,xe as D,nf as E,e0 as F,n0 as G,df as H,ff as I,Er as J,ef as K,pf as L};
3420
+ //# sourceMappingURL=chunk-RGWVOEC5.js.map