@killingjacky/claude-code-router 2.1.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -19
- package/dist/cli.js +234 -238
- package/dist/main/cli.js +8896 -0
- package/dist/main/fusion-tool-fallback-mcp.js +5 -0
- package/dist/main/fusion-vision-mcp.js +10 -0
- package/dist/main/gateway-bootstrap.js +2 -0
- package/dist/main/local-agent-auth-provider-hook.js +294 -0
- package/dist/main/media-tools-proxy-mcp.js +6 -0
- package/dist/main/request-log-worker.js +951 -0
- package/dist/main/route-script-worker.js +61 -0
- package/dist/main/toolhub-mcp.js +48 -0
- package/dist/main/upstream-header-sanitizer.js +1 -0
- package/dist/models.json +657155 -0
- package/dist/renderer/assets/assets/anthropic-CJYB5ODC.png +0 -0
- package/dist/renderer/assets/assets/bailian-6RH6ASGG.ico +0 -0
- package/dist/renderer/assets/assets/claude-code-WX35JWK4.png +0 -0
- package/dist/renderer/assets/assets/claudeapi-A6VUG2I3.png +0 -0
- package/dist/renderer/assets/assets/code0-XF6QJ6WD.png +0 -0
- package/dist/renderer/assets/assets/codex-3X2KBXKY.png +0 -0
- package/dist/renderer/assets/assets/deepseek-ZIDCDTQF.ico +0 -0
- package/dist/renderer/assets/assets/fenno-XFKUO3XQ.jpg +0 -0
- package/dist/renderer/assets/assets/gemini-7QB7T63T.svg +1 -0
- package/dist/renderer/assets/assets/grok-RUIG6CO6.ico +0 -0
- package/dist/renderer/assets/assets/infistar-ai-QGWTTUZK.jpg +0 -0
- package/dist/renderer/assets/assets/kilo-WKXQUJ25.svg +13 -0
- package/dist/renderer/assets/assets/logo-IPLFWCDN.png +0 -0
- package/dist/renderer/assets/assets/mascot-transition-DUBPNIIV.svg +100 -0
- package/dist/renderer/assets/assets/minimax-5TL6POE3.ico +0 -0
- package/dist/renderer/assets/assets/mistral-2RFSC6K3.webp +0 -0
- package/dist/renderer/assets/assets/moonshot-FNEXMLNW.ico +0 -0
- package/dist/renderer/assets/assets/nvidia-CCRWBFBH.svg +1 -0
- package/dist/renderer/assets/assets/openai-2EIP7LI2.png +0 -0
- package/dist/renderer/assets/assets/opencode-CEWXDOQI.ico +0 -0
- package/dist/renderer/assets/assets/openrouter-CZIFREDB.ico +0 -0
- package/dist/renderer/assets/assets/pi-O6OOC4YY.svg +21 -0
- package/dist/renderer/assets/assets/qiniu-ai-A5VJAOJ6.png +0 -0
- package/dist/renderer/assets/assets/runapi-UAX35AOL.jpg +0 -0
- package/dist/renderer/assets/assets/siliconflow-QCZUQAH2.png +0 -0
- package/dist/renderer/assets/assets/teamorouter-3LCEETRZ.png +0 -0
- package/dist/renderer/assets/assets/tray-cyan-C3U4WBE7.png +0 -0
- package/dist/renderer/assets/assets/tray-orange-VUJTRHBB.png +0 -0
- package/dist/renderer/assets/assets/tray-violet-EGMLZ2GB.png +0 -0
- package/dist/renderer/assets/assets/unity2-QCJYG2D6.jpg +0 -0
- package/dist/renderer/assets/assets/workbuddy-LBUELROU.png +0 -0
- package/dist/renderer/assets/assets/xiaomi-mimo-LQ6RRXCR.png +0 -0
- package/dist/renderer/assets/assets/zai-global-coding-OMCES3LL.svg +219 -0
- package/dist/renderer/assets/assets/zai-global-general-OMCES3LL.svg +219 -0
- package/dist/renderer/assets/assets/zcode-Z7V7YY2Q.png +0 -0
- package/dist/renderer/assets/assets/zhipu-cn-coding-7BBWPUTC.png +0 -0
- package/dist/renderer/assets/assets/zhipu-cn-general-7BBWPUTC.png +0 -0
- package/dist/renderer/assets/browser.js +408 -0
- package/dist/renderer/assets/log-body.worker.js +3 -0
- package/dist/renderer/assets/main.css +2 -0
- package/dist/renderer/assets/main.js +103 -0
- package/dist/renderer/assets/tray.js +8 -0
- package/dist/renderer/assets/web-client-bridge.js +1 -0
- package/dist/renderer/pages/browser/index.html +13 -0
- package/dist/renderer/pages/home/index.html +18 -0
- package/dist/renderer/pages/tray/index.html +17 -0
- package/package.json +6 -2
|
@@ -0,0 +1,951 @@
|
|
|
1
|
+
"use strict";var Sk=Object.create;var Kh=Object.defineProperty;var Dk=Object.getOwnPropertyDescriptor;var Tk=Object.getOwnPropertyNames;var kk=Object.getPrototypeOf,Nk=Object.prototype.hasOwnProperty;var m=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Mk=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Tk(t))!Nk.call(e,o)&&o!==n&&Kh(e,o,{get:()=>t[o],enumerable:!(r=Dk(t,o))||r.enumerable});return e};var Ue=(e,t,n)=>(n=e!=null?Sk(kk(e)):{},Mk(t||!e||!e.__esModule?Kh(n,"default",{value:e,enumerable:!0}):n,e));var ne=m((_Z,$E)=>{"use strict";$E.exports={kClose:Symbol("close"),kDestroy:Symbol("destroy"),kDispatch:Symbol("dispatch"),kUrl:Symbol("url"),kWriting:Symbol("writing"),kResuming:Symbol("resuming"),kQueue:Symbol("queue"),kConnect:Symbol("connect"),kConnecting:Symbol("connecting"),kKeepAliveDefaultTimeout:Symbol("default keep alive timeout"),kKeepAliveMaxTimeout:Symbol("max keep alive timeout"),kKeepAliveTimeoutThreshold:Symbol("keep alive timeout threshold"),kKeepAliveTimeoutValue:Symbol("keep alive timeout"),kKeepAlive:Symbol("keep alive"),kHeadersTimeout:Symbol("headers timeout"),kBodyTimeout:Symbol("body timeout"),kServerName:Symbol("server name"),kLocalAddress:Symbol("local address"),kHost:Symbol("host"),kNoRef:Symbol("no ref"),kBodyUsed:Symbol("used"),kBody:Symbol("abstracted request body"),kRunning:Symbol("running"),kBlocking:Symbol("blocking"),kPending:Symbol("pending"),kSize:Symbol("size"),kBusy:Symbol("busy"),kQueued:Symbol("queued"),kFree:Symbol("free"),kConnected:Symbol("connected"),kClosed:Symbol("closed"),kNeedDrain:Symbol("need drain"),kReset:Symbol("reset"),kDestroyed:Symbol.for("nodejs.stream.destroyed"),kResume:Symbol("resume"),kOnError:Symbol("on error"),kMaxHeadersSize:Symbol("max headers size"),kRunningIdx:Symbol("running index"),kPendingIdx:Symbol("pending index"),kError:Symbol("error"),kClients:Symbol("clients"),kClient:Symbol("client"),kParser:Symbol("parser"),kOnDestroyed:Symbol("destroy callbacks"),kPipelining:Symbol("pipelining"),kSocket:Symbol("socket"),kHostHeader:Symbol("host header"),kConnector:Symbol("connector"),kStrictContentLength:Symbol("strict content length"),kMaxRedirections:Symbol("maxRedirections"),kMaxRequests:Symbol("maxRequestsPerClient"),kProxy:Symbol("proxy agent options"),kCounter:Symbol("socket request counter"),kMaxResponseSize:Symbol("max response size"),kHTTP2Session:Symbol("http2Session"),kHTTP2SessionState:Symbol("http2Session state"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable"),kListeners:Symbol("listeners"),kHTTPContext:Symbol("http context"),kMaxConcurrentStreams:Symbol("max concurrent streams"),kHTTP2InitialWindowSize:Symbol("http2 initial window size"),kHTTP2ConnectionWindowSize:Symbol("http2 connection window size"),kEnableConnectProtocol:Symbol("http2session connect protocol"),kRemoteSettings:Symbol("http2session remote settings"),kHTTP2Stream:Symbol("http2session client stream"),kPingInterval:Symbol("ping interval"),kNoProxyAgent:Symbol("no proxy agent"),kHttpProxyAgent:Symbol("http proxy agent"),kHttpsProxyAgent:Symbol("https proxy agent"),kSocks5ProxyAgent:Symbol("socks5 proxy agent")}});var Ud=m((PZ,nC)=>{"use strict";var ao=0,Dd=1e3,Td=(Dd>>1)-1,xn,kd=Symbol("kFastTimer"),un=[],Nd=-2,Md=-1,eC=0,ZE=1;function xd(){ao+=Td;let e=0,t=un.length;for(;e<t;){let n=un[e];n._state===eC?(n._idleStart=ao-Td,n._state=ZE):n._state===ZE&&ao>=n._idleStart+n._idleTimeout&&(n._state=Md,n._idleStart=-1,n._onTimeout(n._timerArg)),n._state===Md?(n._state=Nd,--t!==0&&(un[e]=un[t])):++e}un.length=t,un.length!==0&&tC()}function tC(){xn?.refresh?xn.refresh():(clearTimeout(xn),xn=setTimeout(xd,Td),xn?.unref())}var pA=class{[kd]=!0;_state=Nd;_idleTimeout=-1;_idleStart=-1;_onTimeout;_timerArg;constructor(t,n,r){this._onTimeout=t,this._idleTimeout=n,this._timerArg=r,this.refresh()}refresh(){this._state===Nd&&un.push(this),(!xn||un.length===1)&&tC(),this._state=eC}clear(){this._state=Md,this._idleStart=-1}};nC.exports={setTimeout(e,t,n){return t<=Dd?setTimeout(e,t,n):new pA(e,t,n)},clearTimeout(e){e[kd]?e.clear():clearTimeout(e)},setFastTimeout(e,t,n){return new pA(e,t,n)},clearFastTimeout(e){e.clear()},now(){return ao},tick(e=0){ao+=e-Dd+1,xd(),xd()},reset(){ao=0,un.length=0,clearTimeout(xn),xn=null},kFastTimer:kd}});var q=m((vZ,SC)=>{"use strict";var rC=Symbol.for("undici.error.UND_ERR"),Ae=class extends Error{constructor(t,n){super(t,n),this.name="UndiciError",this.code="UND_ERR"}static[Symbol.hasInstance](t){return t&&t[rC]===!0}get[rC](){return!0}},oC=Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT"),Ld=class extends Ae{constructor(t){super(t),this.name="ConnectTimeoutError",this.message=t||"Connect Timeout Error",this.code="UND_ERR_CONNECT_TIMEOUT"}static[Symbol.hasInstance](t){return t&&t[oC]===!0}get[oC](){return!0}},sC=Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT"),Fd=class extends Ae{constructor(t){super(t),this.name="HeadersTimeoutError",this.message=t||"Headers Timeout Error",this.code="UND_ERR_HEADERS_TIMEOUT"}static[Symbol.hasInstance](t){return t&&t[sC]===!0}get[sC](){return!0}},iC=Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW"),_d=class extends Ae{constructor(t){super(t),this.name="HeadersOverflowError",this.message=t||"Headers Overflow Error",this.code="UND_ERR_HEADERS_OVERFLOW"}static[Symbol.hasInstance](t){return t&&t[iC]===!0}get[iC](){return!0}},AC=Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT"),Pd=class extends Ae{constructor(t){super(t),this.name="BodyTimeoutError",this.message=t||"Body Timeout Error",this.code="UND_ERR_BODY_TIMEOUT"}static[Symbol.hasInstance](t){return t&&t[AC]===!0}get[AC](){return!0}},aC=Symbol.for("undici.error.UND_ERR_INVALID_ARG"),vd=class extends Ae{constructor(t){super(t),this.name="InvalidArgumentError",this.message=t||"Invalid Argument Error",this.code="UND_ERR_INVALID_ARG"}static[Symbol.hasInstance](t){return t&&t[aC]===!0}get[aC](){return!0}},cC=Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE"),Od=class extends Ae{constructor(t){super(t),this.name="InvalidReturnValueError",this.message=t||"Invalid Return Value Error",this.code="UND_ERR_INVALID_RETURN_VALUE"}static[Symbol.hasInstance](t){return t&&t[cC]===!0}get[cC](){return!0}},dC=Symbol.for("undici.error.UND_ERR_ABORT"),hA=class extends Ae{constructor(t){super(t),this.name="AbortError",this.message=t||"The operation was aborted",this.code="UND_ERR_ABORT"}static[Symbol.hasInstance](t){return t&&t[dC]===!0}get[dC](){return!0}},uC=Symbol.for("undici.error.UND_ERR_ABORTED"),qd=class extends hA{constructor(t){super(t),this.name="AbortError",this.message=t||"Request aborted",this.code="UND_ERR_ABORTED"}static[Symbol.hasInstance](t){return t&&t[uC]===!0}get[uC](){return!0}},lC=Symbol.for("undici.error.UND_ERR_INFO"),Gd=class extends Ae{constructor(t){super(t),this.name="InformationalError",this.message=t||"Request information",this.code="UND_ERR_INFO"}static[Symbol.hasInstance](t){return t&&t[lC]===!0}get[lC](){return!0}},gC=Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"),Hd=class extends Ae{constructor(t){super(t),this.name="RequestContentLengthMismatchError",this.message=t||"Request body length does not match content-length header",this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](t){return t&&t[gC]===!0}get[gC](){return!0}},fC=Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH"),Yd=class extends Ae{constructor(t){super(t),this.name="ResponseContentLengthMismatchError",this.message=t||"Response body length does not match content-length header",this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](t){return t&&t[fC]===!0}get[fC](){return!0}},pC=Symbol.for("undici.error.UND_ERR_DESTROYED"),Wd=class extends Ae{constructor(t){super(t),this.name="ClientDestroyedError",this.message=t||"The client is destroyed",this.code="UND_ERR_DESTROYED"}static[Symbol.hasInstance](t){return t&&t[pC]===!0}get[pC](){return!0}},hC=Symbol.for("undici.error.UND_ERR_CLOSED"),Vd=class extends Ae{constructor(t){super(t),this.name="ClientClosedError",this.message=t||"The client is closed",this.code="UND_ERR_CLOSED"}static[Symbol.hasInstance](t){return t&&t[hC]===!0}get[hC](){return!0}},EC=Symbol.for("undici.error.UND_ERR_SOCKET"),Jd=class extends Ae{constructor(t,n){super(t),this.name="SocketError",this.message=t||"Socket error",this.code="UND_ERR_SOCKET",this.socket=n}static[Symbol.hasInstance](t){return t&&t[EC]===!0}get[EC](){return!0}},CC=Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED"),zd=class extends Ae{constructor(t){super(t),this.name="NotSupportedError",this.message=t||"Not supported error",this.code="UND_ERR_NOT_SUPPORTED"}static[Symbol.hasInstance](t){return t&&t[CC]===!0}get[CC](){return!0}},IC=Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM"),Kd=class extends Ae{constructor(t){super(t),this.name="MissingUpstreamError",this.message=t||"No upstream has been added to the BalancedPool",this.code="UND_ERR_BPL_MISSING_UPSTREAM"}static[Symbol.hasInstance](t){return t&&t[IC]===!0}get[IC](){return!0}},BC=Symbol.for("undici.error.UND_ERR_HTTP_PARSER"),Xd=class extends Error{constructor(t,n,r){super(t),this.name="HTTPParserError",this.code=n?`HPE_${n}`:void 0,this.data=r?r.toString():void 0}static[Symbol.hasInstance](t){return t&&t[BC]===!0}get[BC](){return!0}},yC=Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE"),jd=class extends Ae{constructor(t){super(t),this.name="ResponseExceededMaxSizeError",this.message=t||"Response content exceeded max size",this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}static[Symbol.hasInstance](t){return t&&t[yC]===!0}get[yC](){return!0}},mC=Symbol.for("undici.error.UND_ERR_REQ_RETRY"),$d=class extends Ae{constructor(t,n,{headers:r,data:o}){super(t),this.name="RequestRetryError",this.message=t||"Request retry error",this.code="UND_ERR_REQ_RETRY",this.statusCode=n,this.data=o,this.headers=r}static[Symbol.hasInstance](t){return t&&t[mC]===!0}get[mC](){return!0}},QC=Symbol.for("undici.error.UND_ERR_RESPONSE"),Zd=class extends Ae{constructor(t,n,{headers:r,body:o}){super(t),this.name="ResponseError",this.message=t||"Response error",this.code="UND_ERR_RESPONSE",this.statusCode=n,this.body=o,this.headers=r}static[Symbol.hasInstance](t){return t&&t[QC]===!0}get[QC](){return!0}},wC=Symbol.for("undici.error.UND_ERR_PRX_TLS"),eu=class extends Ae{constructor(t,n,r={}){super(n,{cause:t,...r}),this.name="SecureProxyConnectionError",this.message=n||"Secure Proxy Connection failed",this.code="UND_ERR_PRX_TLS",this.cause=t}static[Symbol.hasInstance](t){return t&&t[wC]===!0}get[wC](){return!0}},RC=Symbol.for("undici.error.UND_ERR_MAX_ORIGINS_REACHED"),tu=class extends Ae{constructor(t){super(t),this.name="MaxOriginsReachedError",this.message=t||"Maximum allowed origins reached",this.code="UND_ERR_MAX_ORIGINS_REACHED"}static[Symbol.hasInstance](t){return t&&t[RC]===!0}get[RC](){return!0}},nu=class extends Ae{constructor(t,n){super(t),this.name="Socks5ProxyError",this.message=t||"SOCKS5 proxy error",this.code=n||"UND_ERR_SOCKS5"}},bC=Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"),ru=class extends Ae{constructor(t){super(t),this.name="MessageSizeExceededError",this.message=t||"Max decompressed message size exceeded",this.code="UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"}static[Symbol.hasInstance](t){return t&&t[bC]===!0}get[bC](){return!0}};SC.exports={AbortError:hA,HTTPParserError:Xd,UndiciError:Ae,HeadersTimeoutError:Fd,HeadersOverflowError:_d,BodyTimeoutError:Pd,RequestContentLengthMismatchError:Hd,ConnectTimeoutError:Ld,InvalidArgumentError:vd,InvalidReturnValueError:Od,RequestAbortedError:qd,ClientDestroyedError:Wd,ClientClosedError:Vd,InformationalError:Gd,SocketError:Jd,NotSupportedError:zd,ResponseContentLengthMismatchError:Yd,BalancedPoolMissingUpstreamError:Kd,ResponseExceededMaxSizeError:jd,RequestRetryError:$d,ResponseError:Zd,SecureProxyConnectionError:eu,MaxOriginsReachedError:tu,Socks5ProxyError:nu,MessageSizeExceededError:ru}});var CA=m((OZ,TC)=>{"use strict";var ou=["Accept","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Age","Allow","Alt-Svc","Alt-Used","Authorization","Cache-Control","Clear-Site-Data","Connection","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Security-Policy-Report-Only","Content-Type","Cookie","Cross-Origin-Embedder-Policy","Cross-Origin-Opener-Policy","Cross-Origin-Resource-Policy","Date","Device-Memory","Downlink","ECT","ETag","Expect","Expect-CT","Expires","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Keep-Alive","Last-Modified","Link","Location","Max-Forwards","Origin","Permissions-Policy","Pragma","Proxy-Authenticate","Proxy-Authorization","RTT","Range","Referer","Referrer-Policy","Refresh","Retry-After","Sec-WebSocket-Accept","Sec-WebSocket-Extensions","Sec-WebSocket-Key","Sec-WebSocket-Protocol","Sec-WebSocket-Version","Server","Server-Timing","Service-Worker-Allowed","Service-Worker-Navigation-Preload","Set-Cookie","SourceMap","Strict-Transport-Security","Supports-Loading-Mode","TE","Timing-Allow-Origin","Trailer","Transfer-Encoding","Upgrade","Upgrade-Insecure-Requests","User-Agent","Vary","Via","WWW-Authenticate","X-Content-Type-Options","X-DNS-Prefetch-Control","X-Frame-Options","X-Permitted-Cross-Domain-Policies","X-Powered-By","X-Requested-With","X-XSS-Protection"],EA={};Object.setPrototypeOf(EA,null);var DC={};Object.setPrototypeOf(DC,null);function DN(e){let t=DC[e];return t===void 0&&(t=Buffer.from(e)),t}for(let e=0;e<ou.length;++e){let t=ou[e],n=t.toLowerCase();EA[t]=EA[n]=n}TC.exports={wellknownHeaderNames:ou,headerNameLowerCasedRecord:EA,getHeaderNameAsBuffer:DN}});var xC=m((qZ,MC)=>{"use strict";var{wellknownHeaderNames:kC,headerNameLowerCasedRecord:TN}=CA(),su=class e{value=null;left=null;middle=null;right=null;code;constructor(t,n,r){if(r===void 0||r>=t.length)throw new TypeError("Unreachable");if((this.code=t.charCodeAt(r))>127)throw new TypeError("key must be ascii string");t.length!==++r?this.middle=new e(t,n,r):this.value=n}add(t,n){let r=t.length;if(r===0)throw new TypeError("Unreachable");let o=0,s=this;for(;;){let i=t.charCodeAt(o);if(i>127)throw new TypeError("key must be ascii string");if(s.code===i)if(r===++o){s.value=n;break}else if(s.middle!==null)s=s.middle;else{s.middle=new e(t,n,o);break}else if(s.code<i)if(s.left!==null)s=s.left;else{s.left=new e(t,n,o);break}else if(s.right!==null)s=s.right;else{s.right=new e(t,n,o);break}}}search(t){let n=t.length,r=0,o=this;for(;o!==null&&r<n;){let s=t[r];for(s<=90&&s>=65&&(s|=32);o!==null;){if(s===o.code){if(n===++r)return o;o=o.middle;break}o=o.code<s?o.left:o.right}}return null}},IA=class{node=null;insert(t,n){this.node===null?this.node=new su(t,n,0):this.node.add(t,n)}lookup(t){return this.node?.search(t)?.value??null}},NC=new IA;for(let e=0;e<kC.length;++e){let t=TN[kC[e]];NC.insert(t,t)}MC.exports={TernarySearchTree:IA,tree:NC}});var G=m((GZ,eI)=>{"use strict";var fs=require("node:assert"),{kDestroyed:_C,kBodyUsed:co,kListeners:yA,kBody:UC}=ne(),{IncomingMessage:kN}=require("node:http"),PC=require("node:stream"),NN=require("node:net"),{stringify:MN}=require("node:querystring"),{EventEmitter:xN}=require("node:events"),BA=Ud(),{InvalidArgumentError:be,ConnectTimeoutError:UN}=q(),{headerNameLowerCasedRecord:LN}=CA(),{tree:vC}=xC(),[FN,_N]=process.versions.node.split(".",2).map(e=>Number(e)),QA=class{constructor(t){this[UC]=t,this[co]=!1}async*[Symbol.asyncIterator](){fs(!this[co],"disturbed"),this[co]=!0,yield*this[UC]}};function LC(){}function PN(e){return wA(e)?(WC(e)===0&&e.on("data",function(){fs(!1)}),typeof e.readableDidRead!="boolean"&&(e[co]=!1,xN.prototype.on.call(e,"data",function(){this[co]=!0})),e):e&&typeof e.pipeTo=="function"?new QA(e):e&&XC(e)?e:e&&typeof e!="string"&&!ArrayBuffer.isView(e)&&YC(e)?new QA(e):e}function wA(e){return e&&typeof e=="object"&&typeof e.pipe=="function"&&typeof e.on=="function"}function OC(e){if(e===null)return!1;if(e instanceof Blob)return!0;if(typeof e!="object")return!1;{let t=e[Symbol.toStringTag];return(t==="Blob"||t==="File")&&("stream"in e&&typeof e.stream=="function"||"arrayBuffer"in e&&typeof e.arrayBuffer=="function")}}function qC(e){return e.includes("?")||e.includes("#")}function vN(e,t){if(qC(e))throw new Error('Query params cannot be passed when url already contains "?" or "#".');let n=MN(t);return n&&(e+="?"+n),e}function GC(e){let t=parseInt(e,10);return t===Number(e)&&t>=0&&t<=65535}function mA(e){return e!=null&&e[0]==="h"&&e[1]==="t"&&e[2]==="t"&&e[3]==="p"&&(e[4]===":"||e[4]==="s"&&e[5]===":")}function HC(e){if(typeof e=="string"){if(e=new URL(e),!mA(e.origin||e.protocol))throw new be("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}if(!e||typeof e!="object")throw new be("Invalid URL: The URL argument must be a non-null object.");if(!(e instanceof URL)){if(e.port!=null&&e.port!==""&&GC(e.port)===!1)throw new be("Invalid URL: port must be a valid integer or a string representation of an integer.");if(e.path!=null&&typeof e.path!="string")throw new be("Invalid URL path: the path must be a string or null/undefined.");if(e.pathname!=null&&typeof e.pathname!="string")throw new be("Invalid URL pathname: the pathname must be a string or null/undefined.");if(e.hostname!=null&&typeof e.hostname!="string")throw new be("Invalid URL hostname: the hostname must be a string or null/undefined.");if(e.origin!=null&&typeof e.origin!="string")throw new be("Invalid URL origin: the origin must be a string or null/undefined.");if(!mA(e.origin||e.protocol))throw new be("Invalid URL protocol: the URL must start with `http:` or `https:`.");let t=e.port!=null?e.port:e.protocol==="https:"?443:80,n=e.origin!=null?e.origin:`${e.protocol||""}//${e.hostname||""}:${t}`,r=e.path!=null?e.path:`${e.pathname||""}${e.search||""}`;return n[n.length-1]==="/"&&(n=n.slice(0,n.length-1)),r&&r[0]!=="/"&&(r=`/${r}`),new URL(`${n}${r}`)}if(!mA(e.origin||e.protocol))throw new be("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}function ON(e){if(e=HC(e),e.pathname!=="/"||e.search||e.hash)throw new be("invalid url");return e}function qN(e){if(e[0]==="["){let n=e.indexOf("]");return fs(n!==-1),e.substring(1,n)}let t=e.indexOf(":");return t===-1?e:e.substring(0,t)}function GN(e){if(!e)return null;fs(typeof e=="string");let t=qN(e);return NN.isIP(t)?"":t}function HN(e){return JSON.parse(JSON.stringify(e))}function YN(e){return e!=null&&typeof e[Symbol.asyncIterator]=="function"}function YC(e){return e!=null&&(typeof e[Symbol.iterator]=="function"||typeof e[Symbol.asyncIterator]=="function")}function WN(e){let t=Object.getPrototypeOf(e);return Object.prototype.hasOwnProperty.call(e,Symbol.iterator)||t!=null&&t!==Object.prototype&&typeof e[Symbol.iterator]=="function"}function WC(e){if(e==null)return 0;if(wA(e)){let t=e._readableState;return t&&t.objectMode===!1&&t.ended===!0&&Number.isFinite(t.length)?t.length:null}else{if(OC(e))return e.size!=null?e.size:null;if(KC(e))return e.byteLength}return null}function VC(e){return e&&!!(e.destroyed||e[_C]||PC.isDestroyed?.(e))}function JC(e,t){e==null||!wA(e)||VC(e)||(typeof e.destroy=="function"?(Object.getPrototypeOf(e).constructor===kN&&(e.socket=null),e.destroy(t)):t&&queueMicrotask(()=>{e.emit("error",t)}),e.destroyed!==!0&&(e[_C]=!0))}var VN=/timeout=(\d+)/;function JN(e){let t=e.match(VN);return t?parseInt(t[1],10)*1e3:null}function zC(e){return typeof e=="string"?LN[e]??e.toLowerCase():vC.lookup(e)??e.toString("latin1").toLowerCase()}function zN(e){return vC.lookup(e)??e.toString("latin1").toLowerCase()}function KN(e,t){t===void 0&&(t={});for(let n=0;n<e.length;n+=2){let r=zC(e[n]),o=t[r];if(o!==void 0)if(Object.hasOwn(t,r))typeof o=="string"&&(o=[o],t[r]=o),o.push(e[n+1].toString("latin1"));else{let s=typeof e[n+1]=="string"?e[n+1]:Array.isArray(e[n+1])?e[n+1].map(i=>i.toString("latin1")):e[n+1].toString("latin1");r==="__proto__"?Object.defineProperty(t,r,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[r]=s}else{let s=typeof e[n+1]=="string"?e[n+1]:Array.isArray(e[n+1])?e[n+1].map(i=>i.toString("latin1")):e[n+1].toString("latin1");t[r]=s}}return t}function XN(e){let t=e.length,n=new Array(t),r,o;for(let s=0;s<t;s+=2)r=e[s],o=e[s+1],typeof r!="string"&&(r=r.toString()),typeof o!="string"&&(o=o.toString("latin1")),n[s]=r,n[s+1]=o;return n}function jN(e){if(!Array.isArray(e))throw new TypeError("expected headers to be an array");return e.map(t=>Buffer.from(t))}function KC(e){return e instanceof Uint8Array||Buffer.isBuffer(e)}function $N(e,t,n){if(!e||typeof e!="object")throw new be("handler must be an object");if(typeof e.onRequestStart!="function"){if(typeof e.onConnect!="function")throw new be("invalid onConnect method");if(typeof e.onError!="function")throw new be("invalid onError method");if(typeof e.onBodySent!="function"&&e.onBodySent!==void 0)throw new be("invalid onBodySent method");if(n||t==="CONNECT"){if(typeof e.onUpgrade!="function")throw new be("invalid onUpgrade method")}else{if(typeof e.onHeaders!="function")throw new be("invalid onHeaders method");if(typeof e.onData!="function")throw new be("invalid onData method");if(typeof e.onComplete!="function")throw new be("invalid onComplete method")}}}function ZN(e){return!!(e&&(PC.isDisturbed(e)||e[co]))}function eM(e){return{localAddress:e.localAddress,localPort:e.localPort,remoteAddress:e.remoteAddress,remotePort:e.remotePort,remoteFamily:e.remoteFamily,timeout:e.timeout,bytesWritten:e.bytesWritten,bytesRead:e.bytesRead}}function tM(e){let t;return new ReadableStream({start(){t=e[Symbol.asyncIterator]()},pull(n){return t.next().then(({done:r,value:o})=>{if(r)return queueMicrotask(()=>{n.close(),n.byobRequest?.respond(0)});{let s=Buffer.isBuffer(o)?o:Buffer.from(o);return s.byteLength?n.enqueue(new Uint8Array(s)):this.pull(n)}})},cancel(){return t.return()},type:"bytes"})}function XC(e){return e&&typeof e=="object"&&typeof e.append=="function"&&typeof e.delete=="function"&&typeof e.get=="function"&&typeof e.getAll=="function"&&typeof e.has=="function"&&typeof e.set=="function"&&e[Symbol.toStringTag]==="FormData"}function nM(e,t){return"addEventListener"in e?(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)):(e.once("abort",t),()=>e.removeListener("abort",t))}var jC=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function rM(e){return jC[e]===1}var oM=/^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/;function sM(e){if(e.length>=12)return oM.test(e);if(e.length===0)return!1;for(let t=0;t<e.length;t++)if(jC[e.charCodeAt(t)]!==1)return!1;return!0}var iM=/[^\t\x20-\x7e\x80-\xff]/;function AM(e){return!iM.test(e)}var aM=/^bytes (\d+)-(\d+)\/(\d+)?$/;function cM(e){if(e==null||e==="")return{start:0,end:null,size:null};let t=e?e.match(aM):null;return t?{start:parseInt(t[1]),end:t[2]?parseInt(t[2]):null,size:t[3]?parseInt(t[3]):null}:null}function dM(e,t,n){return(e[yA]??=[]).push([t,n]),e.on(t,n),e}function uM(e){if(e[yA]!=null){for(let[t,n]of e[yA])e.removeListener(t,n);e[yA]=null}return e}function lM(e,t,n){try{t.onError(n),fs(t.aborted)}catch(r){e.emit("error",r)}}var gM=process.platform==="win32"?(e,t)=>{if(!t.timeout)return LC;let n=null,r=null,o=BA.setFastTimeout(()=>{n=setImmediate(()=>{r=setImmediate(()=>FC(e.deref(),t))})},t.timeout);return()=>{BA.clearFastTimeout(o),clearImmediate(n),clearImmediate(r)}}:(e,t)=>{if(!t.timeout)return LC;let n=null,r=BA.setFastTimeout(()=>{n=setImmediate(()=>{FC(e.deref(),t)})},t.timeout);return()=>{BA.clearFastTimeout(r),clearImmediate(n)}};function FC(e,t){if(e==null)return;let n="Connect Timeout Error";Array.isArray(e.autoSelectFamilyAttemptedAddresses)?n+=` (attempted addresses: ${e.autoSelectFamilyAttemptedAddresses.join(", ")},`:n+=` (attempted address: ${t.hostname}:${t.port},`,n+=` timeout: ${t.timeout}ms)`,JC(e,new UN(n))}function fM(e){if(e[0]==="h"&&e[1]==="t"&&e[2]==="t"&&e[3]==="p")switch(e[4]){case":":return"http:";case"s":if(e[5]===":")return"https:"}return e.slice(0,e.indexOf(":")+1)}var $C=Object.create(null);$C.enumerable=!0;var iu={delete:"DELETE",DELETE:"DELETE",get:"GET",GET:"GET",head:"HEAD",HEAD:"HEAD",options:"OPTIONS",OPTIONS:"OPTIONS",post:"POST",POST:"POST",put:"PUT",PUT:"PUT"},ZC={...iu,patch:"patch",PATCH:"PATCH"};Object.setPrototypeOf(iu,null);Object.setPrototypeOf(ZC,null);eI.exports={kEnumerableProperty:$C,isDisturbed:ZN,isBlobLike:OC,parseOrigin:ON,parseURL:HC,getServerName:GN,isStream:wA,isIterable:YC,hasSafeIterator:WN,isAsyncIterable:YN,isDestroyed:VC,headerNameToString:zC,bufferToLowerCasedHeaderName:zN,addListener:dM,removeAllListeners:uM,errorRequest:lM,parseRawHeaders:XN,encodeRawHeaders:jN,parseHeaders:KN,parseKeepAliveTimeout:JN,destroy:JC,bodyLength:WC,deepClone:HN,ReadableStreamFrom:tM,isBuffer:KC,assertRequestHandler:$N,getSocketInfo:eM,isFormDataLike:XC,pathHasQueryOrFragment:qC,serializePathWithQuery:vN,addAbortListener:nM,isValidHTTPToken:sM,isValidHeaderValue:AM,isTokenCharCode:rM,parseRangeHeader:cM,normalizedMethodRecordsBase:iu,normalizedMethodRecords:ZC,isValidPort:GC,isHttpOrHttpsPrefixed:mA,nodeMajor:FN,nodeMinor:_N,safeHTTPMethods:Object.freeze(["GET","HEAD","OPTIONS","TRACE"]),wrapRequestBody:PN,setupConnectTimeout:gM,getProtocolFromUrlString:fM}});var cu=m((HZ,sI)=>{"use strict";var{kConnected:tI,kPending:nI,kRunning:rI,kSize:oI,kFree:pM,kQueued:hM}=ne(),Au=class{constructor(t){this.connected=t[tI],this.pending=t[nI],this.running=t[rI],this.size=t[oI]}},au=class{constructor(t){this.connected=t[tI],this.free=t[pM],this.pending=t[nI],this.queued=t[hM],this.running=t[rI],this.size=t[oI]}};sI.exports={ClientStats:Au,PoolStats:au}});var Un=m((YZ,AI)=>{"use strict";var re=require("node:diagnostics_channel"),gu=require("node:util"),cr=gu.debuglog("undici"),ps=gu.debuglog("fetch"),RA=gu.debuglog("websocket"),st={beforeConnect:re.channel("undici:client:beforeConnect"),connected:re.channel("undici:client:connected"),connectError:re.channel("undici:client:connectError"),sendHeaders:re.channel("undici:client:sendHeaders"),create:re.channel("undici:request:create"),bodySent:re.channel("undici:request:bodySent"),bodyChunkSent:re.channel("undici:request:bodyChunkSent"),bodyChunkReceived:re.channel("undici:request:bodyChunkReceived"),headers:re.channel("undici:request:headers"),trailers:re.channel("undici:request:trailers"),error:re.channel("undici:request:error"),open:re.channel("undici:websocket:open"),close:re.channel("undici:websocket:close"),socketError:re.channel("undici:websocket:socket_error"),ping:re.channel("undici:websocket:ping"),pong:re.channel("undici:websocket:pong"),proxyConnected:re.channel("undici:proxy:connected")},du=!1;function iI(e=cr){if(!du){if(st.beforeConnect.hasSubscribers||st.connected.hasSubscribers||st.connectError.hasSubscribers||st.sendHeaders.hasSubscribers){du=!0;return}du=!0,re.subscribe("undici:client:beforeConnect",t=>{let{connectParams:{version:n,protocol:r,port:o,host:s}}=t;e("connecting to %s%s using %s%s",s,o?`:${o}`:"",r,n)}),re.subscribe("undici:client:connected",t=>{let{connectParams:{version:n,protocol:r,port:o,host:s}}=t;e("connected to %s%s using %s%s",s,o?`:${o}`:"",r,n)}),re.subscribe("undici:client:connectError",t=>{let{connectParams:{version:n,protocol:r,port:o,host:s},error:i}=t;e("connection to %s%s using %s%s errored - %s",s,o?`:${o}`:"",r,n,i.message)}),re.subscribe("undici:client:sendHeaders",t=>{let{request:{method:n,path:r,origin:o}}=t;e("sending request to %s %s%s",n,o,r)})}}var uu=!1;function EM(e=cr){if(!uu){if(st.headers.hasSubscribers||st.trailers.hasSubscribers||st.error.hasSubscribers){uu=!0;return}uu=!0,re.subscribe("undici:request:headers",t=>{let{request:{method:n,path:r,origin:o},response:{statusCode:s}}=t;e("received response to %s %s%s - HTTP %d",n,o,r,s)}),re.subscribe("undici:request:trailers",t=>{let{request:{method:n,path:r,origin:o}}=t;e("trailers received from %s %s%s",n,o,r)}),re.subscribe("undici:request:error",t=>{let{request:{method:n,path:r,origin:o},error:s}=t;e("request to %s %s%s errored - %s",n,o,r,s.message)})}}var lu=!1;function CM(e=RA){if(!lu){if(st.open.hasSubscribers||st.close.hasSubscribers||st.socketError.hasSubscribers||st.ping.hasSubscribers||st.pong.hasSubscribers){lu=!0;return}lu=!0,re.subscribe("undici:websocket:open",t=>{if(t.address!=null){let{address:n,port:r}=t.address;e("connection opened %s%s",n,r?`:${r}`:"")}else e("connection opened")}),re.subscribe("undici:websocket:close",t=>{let{websocket:n,code:r,reason:o}=t;e("closed connection to %s - %s %s",n.url,r,o)}),re.subscribe("undici:websocket:socket_error",t=>{e("connection errored - %s",t.message)}),re.subscribe("undici:websocket:ping",t=>{e("ping received")}),re.subscribe("undici:websocket:pong",t=>{e("pong received")})}}(cr.enabled||ps.enabled)&&(iI(ps.enabled?ps:cr),EM(ps.enabled?ps:cr));RA.enabled&&(iI(cr.enabled?cr:RA),CM(RA));AI.exports={channels:st}});var dI=m((WZ,cI)=>{"use strict";var{InvalidArgumentError:$,NotSupportedError:IM}=q(),Ht=require("node:assert"),{isValidHTTPToken:fu,isValidHeaderValue:hs,isStream:BM,destroy:yM,isBuffer:mM,isFormDataLike:QM,isIterable:wM,hasSafeIterator:RM,isBlobLike:bM,serializePathWithQuery:SM,assertRequestHandler:DM,getServerName:TM,normalizedMethodRecords:kM,getProtocolFromUrlString:NM}=G(),{channels:Ve}=Un(),{headerNameLowerCasedRecord:aI}=CA(),MM=/[^\u0021-\u00ff]/;function xM(e){if(typeof e!="string"||e.length===0)return!1;for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<48||n>57)return!1}return!0}var Ct=Symbol("handler"),pu=class{constructor(t,{path:n,method:r,body:o,headers:s,query:i,idempotent:A,blocking:a,upgrade:c,headersTimeout:d,bodyTimeout:l,reset:u,expectContinue:g,servername:h,throwOnError:E,maxRedirections:B,typeOfService:C},y){if(typeof n!="string")throw new $("path must be a string");if(n[0]!=="/"&&!(n.startsWith("http://")||n.startsWith("https://"))&&r!=="CONNECT")throw new $("path must be an absolute URL or start with a slash");if(MM.test(n))throw new $("invalid request path");if(typeof r!="string")throw new $("method must be a string");if(kM[r]===void 0&&!fu(r))throw new $("invalid request method");if(c&&typeof c!="string")throw new $("upgrade must be a string");if(c&&!hs(c))throw new $("invalid upgrade header");if(d!=null&&(!Number.isFinite(d)||d<0))throw new $("invalid headersTimeout");if(l!=null&&(!Number.isFinite(l)||l<0))throw new $("invalid bodyTimeout");if(u!=null&&typeof u!="boolean")throw new $("invalid reset");if(g!=null&&typeof g!="boolean")throw new $("invalid expectContinue");if(E!=null)throw new $("invalid throwOnError");if(B!=null&&B!==0)throw new $("maxRedirections is not supported, use the redirect interceptor");if(C!=null&&(!Number.isInteger(C)||C<0||C>255))throw new $("typeOfService must be an integer between 0 and 255");if(this.headersTimeout=d,this.bodyTimeout=l,this.method=r,this.typeOfService=C??0,this.abort=null,o==null)this.body=null;else if(BM(o)){this.body=o;let Q=this.body._readableState;(!Q||!Q.autoDestroy)&&(this.endHandler=function(){yM(this)},this.body.on("end",this.endHandler)),this.errorHandler=b=>{this.abort?this.abort(b):this.error=b},this.body.on("error",this.errorHandler)}else if(mM(o))this.body=o.byteLength?o:null;else if(ArrayBuffer.isView(o))this.body=o.buffer.byteLength?Buffer.from(o.buffer,o.byteOffset,o.byteLength):null;else if(o instanceof ArrayBuffer)this.body=o.byteLength?Buffer.from(o):null;else if(typeof o=="string")this.body=o.length?Buffer.from(o):null;else if(QM(o)||wM(o)||bM(o))this.body=o;else throw new $("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable");if(this.completed=!1,this.aborted=!1,this.upgrade=c||null,this.path=i?SM(n,i):n,this.origin=t,this.protocol=NM(t),this.idempotent=A??(r==="HEAD"||r==="GET"),this.blocking=a??this.method!=="HEAD",this.reset=u??null,this.host=null,this.contentLength=null,this.contentType=null,this.headers=[],this.expectContinue=g??!1,Array.isArray(s)){if(s.length%2!==0)throw new $("headers array must be even");for(let Q=0;Q<s.length;Q+=2)bA(this,s[Q],s[Q+1])}else if(s&&typeof s=="object")if(RM(s))for(let Q of s){if(!Array.isArray(Q)||Q.length!==2)throw new $("headers must be in key-value pair format");bA(this,Q[0],Q[1])}else{let Q=Object.keys(s);for(let b=0;b<Q.length;++b)bA(this,Q[b],s[Q[b]])}else if(s!=null)throw new $("headers must be an object or an array");DM(y,r,c),this.servername=h||TM(this.host)||null,this[Ct]=y,Ve.create.hasSubscribers&&Ve.create.publish({request:this})}onBodySent(t){if(Ve.bodyChunkSent.hasSubscribers&&Ve.bodyChunkSent.publish({request:this,chunk:t}),this[Ct].onBodySent)try{return this[Ct].onBodySent(t)}catch(n){this.abort(n)}}onRequestSent(){if(Ve.bodySent.hasSubscribers&&Ve.bodySent.publish({request:this}),this[Ct].onRequestSent)try{return this[Ct].onRequestSent()}catch(t){this.abort(t)}}onConnect(t){if(Ht(!this.aborted),Ht(!this.completed),this.error)t(this.error);else return this.abort=t,this[Ct].onConnect(t)}onResponseStarted(){return this[Ct].onResponseStarted?.()}onHeaders(t,n,r,o){Ht(!this.aborted),Ht(!this.completed),Ve.headers.hasSubscribers&&Ve.headers.publish({request:this,response:{statusCode:t,headers:n,statusText:o}});try{return this[Ct].onHeaders(t,n,r,o)}catch(s){this.abort(s)}}onData(t){Ht(!this.aborted),Ht(!this.completed),Ve.bodyChunkReceived.hasSubscribers&&Ve.bodyChunkReceived.publish({request:this,chunk:t});try{return this[Ct].onData(t)}catch(n){return this.abort(n),!1}}onUpgrade(t,n,r){return Ht(!this.aborted),Ht(!this.completed),this[Ct].onUpgrade(t,n,r)}onComplete(t){this.onFinally(),Ht(!this.aborted),Ht(!this.completed),this.completed=!0,Ve.trailers.hasSubscribers&&Ve.trailers.publish({request:this,trailers:t});try{return this[Ct].onComplete(t)}catch(n){this.onError(n)}}onError(t){if(this.onFinally(),Ve.error.hasSubscribers&&Ve.error.publish({request:this,error:t}),!this.aborted)return this.aborted=!0,this[Ct].onError(t)}onFinally(){this.errorHandler&&(this.body.off("error",this.errorHandler),this.errorHandler=null),this.endHandler&&(this.body.off("end",this.endHandler),this.endHandler=null)}addHeader(t,n){return bA(this,t,n),this}};function bA(e,t,n){if(n&&typeof n=="object"&&!Array.isArray(n))throw new $(`invalid ${t} header`);if(n===void 0)return;let r=aI[t];if(r===void 0&&(r=t.toLowerCase(),aI[r]===void 0&&!fu(r)))throw new $("invalid header key");if(Array.isArray(n)){let o=[];for(let s=0;s<n.length;s++)if(typeof n[s]=="string"){if(!hs(n[s]))throw new $(`invalid ${t} header`);o.push(n[s])}else if(n[s]===null)o.push("");else{if(typeof n[s]=="object")throw new $(`invalid ${t} header`);{let i=`${n[s]}`;if(!hs(i))throw new $(`invalid ${t} header`);o.push(i)}}n=o}else if(typeof n=="string"){if(!hs(n))throw new $(`invalid ${t} header`)}else if(n===null)n="";else if(n=`${n}`,!hs(n))throw new $(`invalid ${t} header`);if(r==="host"){if(e.host!==null)throw new $("duplicate host header");if(typeof n!="string")throw new $("invalid host header");e.host=n}else if(r==="content-length"){if(e.contentLength!==null)throw new $("duplicate content-length header");if(!xM(n))throw new $("invalid content-length header");e.contentLength=parseInt(n,10)}else if(e.contentType===null&&r==="content-type")e.contentType=n,e.headers.push(t,n);else{if(r==="transfer-encoding"||r==="keep-alive"||r==="upgrade")throw new $(`invalid ${r} header`);if(r==="connection"){let o=typeof n=="string"?n:null;if(o===null)throw new $("invalid connection header");for(let s of o.toLowerCase().split(",")){let i=s.trim();if(!fu(i))throw new $("invalid connection header");i==="close"&&(e.reset=!0)}}else{if(r==="expect")throw new IM("expect header not supported");e.headers.push(t,n)}}}cI.exports=pu});var Es=m((VZ,lI)=>{"use strict";var{InvalidArgumentError:UM}=q();lI.exports=class uI{#e;constructor(t){this.#e=t}static wrap(t){return t.onRequestStart?t:new uI(t)}onConnect(t,n){return this.#e.onConnect?.(t,n)}onResponseStarted(){return this.#e.onResponseStarted?.()}onHeaders(t,n,r,o){return this.#e.onHeaders?.(t,n,r,o)}onUpgrade(t,n,r){return this.#e.onUpgrade?.(t,n,r)}onData(t){return this.#e.onData?.(t)}onComplete(t){return this.#e.onComplete?.(t)}onError(t){if(!this.#e.onError)throw t;return this.#e.onError?.(t)}onRequestStart(t,n){this.#e.onConnect?.(r=>t.abort(r),n)}onRequestUpgrade(t,n,r,o){let s=[];for(let[i,A]of Object.entries(r))s.push(Buffer.from(i,"latin1"),hu(A));this.#e.onUpgrade?.(n,s,o)}onResponseStart(t,n,r,o){let s=[];for(let[i,A]of Object.entries(r))s.push(Buffer.from(i,"latin1"),hu(A));this.#e.onHeaders?.(n,s,()=>t.resume(),o)===!1&&t.pause()}onResponseData(t,n){this.#e.onData?.(n)===!1&&t.pause()}onResponseEnd(t,n){let r=[];for(let[o,s]of Object.entries(n))r.push(Buffer.from(o,"latin1"),hu(s));this.#e.onComplete?.(r)}onResponseError(t,n){if(!this.#e.onError)throw new UM("invalid onError method");this.#e.onError?.(n)}};function hu(e){return Array.isArray(e)?e.map(t=>Buffer.from(t,"latin1")):Buffer.from(e,"latin1")}});var Cs=m((JZ,gI)=>{"use strict";var LM=require("node:events"),FM=Es(),_M=e=>(t,n)=>e(t,FM.wrap(n)),Eu=class extends LM{dispatch(){throw new Error("not implemented")}close(){throw new Error("not implemented")}destroy(){throw new Error("not implemented")}compose(...t){let n=Array.isArray(t[0])?t[0]:t,r=this.dispatch.bind(this);for(let o of n)if(o!=null){if(typeof o!="function")throw new TypeError(`invalid interceptor, expected function received ${typeof o}`);if(r=o(r),r=_M(r),r==null||typeof r!="function"||r.length!==2)throw new TypeError("invalid interceptor")}return new Proxy(this,{get:(o,s)=>s==="dispatch"?r:o[s]})}};gI.exports=Eu});var hI=m((zZ,pI)=>{"use strict";var{parseHeaders:Cu}=G(),{InvalidArgumentError:PM}=q(),Iu=Symbol("resume"),Bu=class{#e=!1;#t=null;#n=!1;#r;[Iu]=null;rawHeaders=null;rawTrailers=null;constructor(t){this.#r=t}pause(){this.#e=!0}resume(){this.#e&&(this.#e=!1,this[Iu]?.())}abort(t){this.#n||(this.#n=!0,this.#t=t,this.#r(t))}get aborted(){return this.#n}get reason(){return this.#t}get paused(){return this.#e}};pI.exports=class fI{#e;#t;constructor(t){this.#e=t}static unwrap(t){return t.onRequestStart?new fI(t):t}onConnect(t,n){this.#t=new Bu(t),this.#e.onRequestStart?.(this.#t,n)}onResponseStarted(){return this.#e.onResponseStarted?.()}onUpgrade(t,n,r){this.#t.rawHeaders=n,this.#e.onRequestUpgrade?.(this.#t,t,Cu(n),r)}onHeaders(t,n,r,o){return this.#t[Iu]=r,this.#t.rawHeaders=n,this.#e.onResponseStart?.(this.#t,t,Cu(n),o),!this.#t.paused}onData(t){return this.#e.onResponseData?.(this.#t,t),!this.#t.paused}onComplete(t){this.#t.rawTrailers=t,this.#e.onResponseEnd?.(this.#t,Cu(t))}onError(t){if(!this.#e.onResponseError)throw new PM("invalid onError method");this.#e.onResponseError?.(this.#t,t)}}});var ur=m((KZ,EI)=>{"use strict";var vM=Cs(),OM=hI(),{ClientDestroyedError:yu,ClientClosedError:qM,InvalidArgumentError:SA}=q(),{kDestroy:GM,kClose:HM,kClosed:Is,kDestroyed:uo,kDispatch:YM}=ne(),Ln=Symbol("onDestroyed"),dr=Symbol("onClosed"),mu=Symbol("webSocketOptions"),Qu=class extends vM{[uo]=!1;[Ln]=null;[Is]=!1;[dr]=null;constructor(t){super(),this[mu]=t?.webSocket??{}}get webSocketOptions(){return{maxFragments:this[mu].maxFragments??131072,maxPayloadSize:this[mu].maxPayloadSize??128*1024*1024}}get destroyed(){return this[uo]}get closed(){return this[Is]}close(t){if(t===void 0)return new Promise((r,o)=>{this.close((s,i)=>s?o(s):r(i))});if(typeof t!="function")throw new SA("invalid callback");if(this[uo]){let r=new yu;queueMicrotask(()=>t(r,null));return}if(this[Is]){this[dr]?this[dr].push(t):queueMicrotask(()=>t(null,null));return}this[Is]=!0,this[dr]??=[],this[dr].push(t);let n=()=>{let r=this[dr];this[dr]=null;for(let o=0;o<r.length;o++)r[o](null,null)};this[HM]().then(()=>this.destroy()).then(()=>queueMicrotask(n))}destroy(t,n){if(typeof t=="function"&&(n=t,t=null),n===void 0)return new Promise((o,s)=>{this.destroy(t,(i,A)=>i?s(i):o(A))});if(typeof n!="function")throw new SA("invalid callback");if(this[uo]){this[Ln]?this[Ln].push(n):queueMicrotask(()=>n(null,null));return}t||(t=new yu),this[uo]=!0,this[Ln]??=[],this[Ln].push(n);let r=()=>{let o=this[Ln];this[Ln]=null;for(let s=0;s<o.length;s++)o[s](null,null)};this[GM](t).then(()=>queueMicrotask(r))}dispatch(t,n){if(!n||typeof n!="object")throw new SA("handler must be an object");n=OM.unwrap(n);try{if(!t||typeof t!="object")throw new SA("opts must be an object.");if(this[uo]||this[Ln])throw new yu;if(this[Is])throw new qM;return this[YM](t,n)}catch(r){if(typeof n.onError!="function")throw r;return n.onError(r),!1}}};EI.exports=Qu});var lr=m((jZ,BI)=>{"use strict";var WM=require("node:net"),CI=require("node:assert"),II=G(),{InvalidArgumentError:VM}=q(),wu,JM=class{constructor(t){this._maxCachedSessions=t,this._sessionCache=new Map,this._sessionRegistry=new FinalizationRegistry(n=>{if(this._sessionCache.size<this._maxCachedSessions)return;let r=this._sessionCache.get(n);r!==void 0&&r.deref()===void 0&&this._sessionCache.delete(n)})}get(t){let n=this._sessionCache.get(t);return n?n.deref():null}set(t,n){if(this._maxCachedSessions!==0){if(this._sessionCache.has(t))this._sessionCache.delete(t);else if(this._sessionCache.size>=this._maxCachedSessions){for(let[o,s]of this._sessionCache)if(s.deref()===void 0){this._sessionCache.delete(o);return}let r=this._sessionCache.keys().next();r.done||this._sessionCache.delete(r.value)}this._sessionCache.set(t,new WeakRef(n)),this._sessionRegistry.register(n,t)}}};function zM({allowH2:e,useH2c:t,maxCachedSessions:n,socketPath:r,timeout:o,session:s,...i}){if(n!=null&&(!Number.isInteger(n)||n<0))throw new VM("maxCachedSessions must be a positive integer or zero");let A={path:r,...i},a=new JM(n??100);return o=o??1e4,e=e??!1,function({hostname:d,host:l,protocol:u,port:g,servername:h,localAddress:E,httpSocket:B},C){let y;if(u==="https:"){wu||(wu=require("node:tls")),h=h||A.servername||II.getServerName(l)||null;let b=h||d;CI(b);let k=s||a.get(b)||null;g=g||443,y=wu.connect({highWaterMark:16384,...A,servername:h,session:k,localAddress:E,ALPNProtocols:e?["http/1.1","h2"]:["http/1.1"],socket:B,port:g,host:d}),y.on("session",function(x){a.set(b,x)})}else CI(!B,"httpSocket can only be sent on TLS update"),g=g||80,y=WM.connect({highWaterMark:64*1024,...A,localAddress:E,port:g,host:d}),t===!0&&(y.alpnProtocol="h2");if(A.keepAlive==null||A.keepAlive){let b=A.keepAliveInitialDelay===void 0?6e4:A.keepAliveInitialDelay;y.setKeepAlive(!0,b)}let Q=II.setupConnectTimeout(new WeakRef(y),{timeout:o,hostname:d,port:g});return y.setNoDelay(!0).once(u==="https:"?"secureConnect":"connect",function(){if(queueMicrotask(Q),C){let b=C;C=null,b(null,this)}}).on("error",function(b){if(queueMicrotask(Q),C){let k=C;C=null,k(b)}}),y}}BI.exports=zM});var yI=m(Ru=>{"use strict";Object.defineProperty(Ru,"__esModule",{value:!0});Ru.enumToMap=KM;function KM(e,t=[],n=[]){let r=(t?.length??0)===0,o=(n?.length??0)===0;return Object.fromEntries(Object.entries(e).filter(([,s])=>typeof s=="number"&&(r||t.includes(s))&&(o||!n.includes(s))))}});var mI=m(f=>{"use strict";Object.defineProperty(f,"__esModule",{value:!0});f.SPECIAL_HEADERS=f.MINOR=f.MAJOR=f.HTAB_SP_VCHAR_OBS_TEXT=f.QUOTED_STRING=f.CONNECTION_TOKEN_CHARS=f.HEADER_CHARS=f.TOKEN=f.HEX=f.URL_CHAR=f.USERINFO_CHARS=f.MARK=f.ALPHANUM=f.NUM=f.HEX_MAP=f.NUM_MAP=f.ALPHA=f.STATUSES_HTTP=f.H_METHOD_MAP=f.METHOD_MAP=f.METHODS_RTSP=f.METHODS_ICE=f.METHODS_HTTP=f.HEADER_STATE=f.FINISH=f.STATUSES=f.METHODS=f.LENIENT_FLAGS=f.FLAGS=f.TYPE=f.ERROR=void 0;var XM=yI();f.ERROR={OK:0,INTERNAL:1,STRICT:2,CR_EXPECTED:25,LF_EXPECTED:3,UNEXPECTED_CONTENT_LENGTH:4,UNEXPECTED_SPACE:30,CLOSED_CONNECTION:5,INVALID_METHOD:6,INVALID_URL:7,INVALID_CONSTANT:8,INVALID_VERSION:9,INVALID_HEADER_TOKEN:10,INVALID_CONTENT_LENGTH:11,INVALID_CHUNK_SIZE:12,INVALID_STATUS:13,INVALID_EOF_STATE:14,INVALID_TRANSFER_ENCODING:15,CB_MESSAGE_BEGIN:16,CB_HEADERS_COMPLETE:17,CB_MESSAGE_COMPLETE:18,CB_CHUNK_HEADER:19,CB_CHUNK_COMPLETE:20,PAUSED:21,PAUSED_UPGRADE:22,PAUSED_H2_UPGRADE:23,USER:24,CB_URL_COMPLETE:26,CB_STATUS_COMPLETE:27,CB_METHOD_COMPLETE:32,CB_VERSION_COMPLETE:33,CB_HEADER_FIELD_COMPLETE:28,CB_HEADER_VALUE_COMPLETE:29,CB_CHUNK_EXTENSION_NAME_COMPLETE:34,CB_CHUNK_EXTENSION_VALUE_COMPLETE:35,CB_RESET:31,CB_PROTOCOL_COMPLETE:38};f.TYPE={BOTH:0,REQUEST:1,RESPONSE:2};f.FLAGS={CONNECTION_KEEP_ALIVE:1,CONNECTION_CLOSE:2,CONNECTION_UPGRADE:4,CHUNKED:8,UPGRADE:16,CONTENT_LENGTH:32,SKIPBODY:64,TRAILING:128,TRANSFER_ENCODING:512};f.LENIENT_FLAGS={HEADERS:1,CHUNKED_LENGTH:2,KEEP_ALIVE:4,TRANSFER_ENCODING:8,VERSION:16,DATA_AFTER_CLOSE:32,OPTIONAL_LF_AFTER_CR:64,OPTIONAL_CRLF_AFTER_CHUNK:128,OPTIONAL_CR_BEFORE_LF:256,SPACES_AFTER_CHUNK_SIZE:512};f.METHODS={DELETE:0,GET:1,HEAD:2,POST:3,PUT:4,CONNECT:5,OPTIONS:6,TRACE:7,COPY:8,LOCK:9,MKCOL:10,MOVE:11,PROPFIND:12,PROPPATCH:13,SEARCH:14,UNLOCK:15,BIND:16,REBIND:17,UNBIND:18,ACL:19,REPORT:20,MKACTIVITY:21,CHECKOUT:22,MERGE:23,"M-SEARCH":24,NOTIFY:25,SUBSCRIBE:26,UNSUBSCRIBE:27,PATCH:28,PURGE:29,MKCALENDAR:30,LINK:31,UNLINK:32,SOURCE:33,PRI:34,DESCRIBE:35,ANNOUNCE:36,SETUP:37,PLAY:38,PAUSE:39,TEARDOWN:40,GET_PARAMETER:41,SET_PARAMETER:42,REDIRECT:43,RECORD:44,FLUSH:45,QUERY:46};f.STATUSES={CONTINUE:100,SWITCHING_PROTOCOLS:101,PROCESSING:102,EARLY_HINTS:103,RESPONSE_IS_STALE:110,REVALIDATION_FAILED:111,DISCONNECTED_OPERATION:112,HEURISTIC_EXPIRATION:113,MISCELLANEOUS_WARNING:199,OK:200,CREATED:201,ACCEPTED:202,NON_AUTHORITATIVE_INFORMATION:203,NO_CONTENT:204,RESET_CONTENT:205,PARTIAL_CONTENT:206,MULTI_STATUS:207,ALREADY_REPORTED:208,TRANSFORMATION_APPLIED:214,IM_USED:226,MISCELLANEOUS_PERSISTENT_WARNING:299,MULTIPLE_CHOICES:300,MOVED_PERMANENTLY:301,FOUND:302,SEE_OTHER:303,NOT_MODIFIED:304,USE_PROXY:305,SWITCH_PROXY:306,TEMPORARY_REDIRECT:307,PERMANENT_REDIRECT:308,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_ALLOWED:405,NOT_ACCEPTABLE:406,PROXY_AUTHENTICATION_REQUIRED:407,REQUEST_TIMEOUT:408,CONFLICT:409,GONE:410,LENGTH_REQUIRED:411,PRECONDITION_FAILED:412,PAYLOAD_TOO_LARGE:413,URI_TOO_LONG:414,UNSUPPORTED_MEDIA_TYPE:415,RANGE_NOT_SATISFIABLE:416,EXPECTATION_FAILED:417,IM_A_TEAPOT:418,PAGE_EXPIRED:419,ENHANCE_YOUR_CALM:420,MISDIRECTED_REQUEST:421,UNPROCESSABLE_ENTITY:422,LOCKED:423,FAILED_DEPENDENCY:424,TOO_EARLY:425,UPGRADE_REQUIRED:426,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL:430,REQUEST_HEADER_FIELDS_TOO_LARGE:431,LOGIN_TIMEOUT:440,NO_RESPONSE:444,RETRY_WITH:449,BLOCKED_BY_PARENTAL_CONTROL:450,UNAVAILABLE_FOR_LEGAL_REASONS:451,CLIENT_CLOSED_LOAD_BALANCED_REQUEST:460,INVALID_X_FORWARDED_FOR:463,REQUEST_HEADER_TOO_LARGE:494,SSL_CERTIFICATE_ERROR:495,SSL_CERTIFICATE_REQUIRED:496,HTTP_REQUEST_SENT_TO_HTTPS_PORT:497,INVALID_TOKEN:498,CLIENT_CLOSED_REQUEST:499,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,HTTP_VERSION_NOT_SUPPORTED:505,VARIANT_ALSO_NEGOTIATES:506,INSUFFICIENT_STORAGE:507,LOOP_DETECTED:508,BANDWIDTH_LIMIT_EXCEEDED:509,NOT_EXTENDED:510,NETWORK_AUTHENTICATION_REQUIRED:511,WEB_SERVER_UNKNOWN_ERROR:520,WEB_SERVER_IS_DOWN:521,CONNECTION_TIMEOUT:522,ORIGIN_IS_UNREACHABLE:523,TIMEOUT_OCCURED:524,SSL_HANDSHAKE_FAILED:525,INVALID_SSL_CERTIFICATE:526,RAILGUN_ERROR:527,SITE_IS_OVERLOADED:529,SITE_IS_FROZEN:530,IDENTITY_PROVIDER_AUTHENTICATION_ERROR:561,NETWORK_READ_TIMEOUT:598,NETWORK_CONNECT_TIMEOUT:599};f.FINISH={SAFE:0,SAFE_WITH_CB:1,UNSAFE:2};f.HEADER_STATE={GENERAL:0,CONNECTION:1,CONTENT_LENGTH:2,TRANSFER_ENCODING:3,UPGRADE:4,CONNECTION_KEEP_ALIVE:5,CONNECTION_CLOSE:6,CONNECTION_UPGRADE:7,TRANSFER_ENCODING_CHUNKED:8};f.METHODS_HTTP=[f.METHODS.DELETE,f.METHODS.GET,f.METHODS.HEAD,f.METHODS.POST,f.METHODS.PUT,f.METHODS.CONNECT,f.METHODS.OPTIONS,f.METHODS.TRACE,f.METHODS.COPY,f.METHODS.LOCK,f.METHODS.MKCOL,f.METHODS.MOVE,f.METHODS.PROPFIND,f.METHODS.PROPPATCH,f.METHODS.SEARCH,f.METHODS.UNLOCK,f.METHODS.BIND,f.METHODS.REBIND,f.METHODS.UNBIND,f.METHODS.ACL,f.METHODS.REPORT,f.METHODS.MKACTIVITY,f.METHODS.CHECKOUT,f.METHODS.MERGE,f.METHODS["M-SEARCH"],f.METHODS.NOTIFY,f.METHODS.SUBSCRIBE,f.METHODS.UNSUBSCRIBE,f.METHODS.PATCH,f.METHODS.PURGE,f.METHODS.MKCALENDAR,f.METHODS.LINK,f.METHODS.UNLINK,f.METHODS.PRI,f.METHODS.SOURCE,f.METHODS.QUERY];f.METHODS_ICE=[f.METHODS.SOURCE];f.METHODS_RTSP=[f.METHODS.OPTIONS,f.METHODS.DESCRIBE,f.METHODS.ANNOUNCE,f.METHODS.SETUP,f.METHODS.PLAY,f.METHODS.PAUSE,f.METHODS.TEARDOWN,f.METHODS.GET_PARAMETER,f.METHODS.SET_PARAMETER,f.METHODS.REDIRECT,f.METHODS.RECORD,f.METHODS.FLUSH,f.METHODS.GET,f.METHODS.POST];f.METHOD_MAP=(0,XM.enumToMap)(f.METHODS);f.H_METHOD_MAP=Object.fromEntries(Object.entries(f.METHODS).filter(([e])=>e.startsWith("H")));f.STATUSES_HTTP=[f.STATUSES.CONTINUE,f.STATUSES.SWITCHING_PROTOCOLS,f.STATUSES.PROCESSING,f.STATUSES.EARLY_HINTS,f.STATUSES.RESPONSE_IS_STALE,f.STATUSES.REVALIDATION_FAILED,f.STATUSES.DISCONNECTED_OPERATION,f.STATUSES.HEURISTIC_EXPIRATION,f.STATUSES.MISCELLANEOUS_WARNING,f.STATUSES.OK,f.STATUSES.CREATED,f.STATUSES.ACCEPTED,f.STATUSES.NON_AUTHORITATIVE_INFORMATION,f.STATUSES.NO_CONTENT,f.STATUSES.RESET_CONTENT,f.STATUSES.PARTIAL_CONTENT,f.STATUSES.MULTI_STATUS,f.STATUSES.ALREADY_REPORTED,f.STATUSES.TRANSFORMATION_APPLIED,f.STATUSES.IM_USED,f.STATUSES.MISCELLANEOUS_PERSISTENT_WARNING,f.STATUSES.MULTIPLE_CHOICES,f.STATUSES.MOVED_PERMANENTLY,f.STATUSES.FOUND,f.STATUSES.SEE_OTHER,f.STATUSES.NOT_MODIFIED,f.STATUSES.USE_PROXY,f.STATUSES.SWITCH_PROXY,f.STATUSES.TEMPORARY_REDIRECT,f.STATUSES.PERMANENT_REDIRECT,f.STATUSES.BAD_REQUEST,f.STATUSES.UNAUTHORIZED,f.STATUSES.PAYMENT_REQUIRED,f.STATUSES.FORBIDDEN,f.STATUSES.NOT_FOUND,f.STATUSES.METHOD_NOT_ALLOWED,f.STATUSES.NOT_ACCEPTABLE,f.STATUSES.PROXY_AUTHENTICATION_REQUIRED,f.STATUSES.REQUEST_TIMEOUT,f.STATUSES.CONFLICT,f.STATUSES.GONE,f.STATUSES.LENGTH_REQUIRED,f.STATUSES.PRECONDITION_FAILED,f.STATUSES.PAYLOAD_TOO_LARGE,f.STATUSES.URI_TOO_LONG,f.STATUSES.UNSUPPORTED_MEDIA_TYPE,f.STATUSES.RANGE_NOT_SATISFIABLE,f.STATUSES.EXPECTATION_FAILED,f.STATUSES.IM_A_TEAPOT,f.STATUSES.PAGE_EXPIRED,f.STATUSES.ENHANCE_YOUR_CALM,f.STATUSES.MISDIRECTED_REQUEST,f.STATUSES.UNPROCESSABLE_ENTITY,f.STATUSES.LOCKED,f.STATUSES.FAILED_DEPENDENCY,f.STATUSES.TOO_EARLY,f.STATUSES.UPGRADE_REQUIRED,f.STATUSES.PRECONDITION_REQUIRED,f.STATUSES.TOO_MANY_REQUESTS,f.STATUSES.REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL,f.STATUSES.REQUEST_HEADER_FIELDS_TOO_LARGE,f.STATUSES.LOGIN_TIMEOUT,f.STATUSES.NO_RESPONSE,f.STATUSES.RETRY_WITH,f.STATUSES.BLOCKED_BY_PARENTAL_CONTROL,f.STATUSES.UNAVAILABLE_FOR_LEGAL_REASONS,f.STATUSES.CLIENT_CLOSED_LOAD_BALANCED_REQUEST,f.STATUSES.INVALID_X_FORWARDED_FOR,f.STATUSES.REQUEST_HEADER_TOO_LARGE,f.STATUSES.SSL_CERTIFICATE_ERROR,f.STATUSES.SSL_CERTIFICATE_REQUIRED,f.STATUSES.HTTP_REQUEST_SENT_TO_HTTPS_PORT,f.STATUSES.INVALID_TOKEN,f.STATUSES.CLIENT_CLOSED_REQUEST,f.STATUSES.INTERNAL_SERVER_ERROR,f.STATUSES.NOT_IMPLEMENTED,f.STATUSES.BAD_GATEWAY,f.STATUSES.SERVICE_UNAVAILABLE,f.STATUSES.GATEWAY_TIMEOUT,f.STATUSES.HTTP_VERSION_NOT_SUPPORTED,f.STATUSES.VARIANT_ALSO_NEGOTIATES,f.STATUSES.INSUFFICIENT_STORAGE,f.STATUSES.LOOP_DETECTED,f.STATUSES.BANDWIDTH_LIMIT_EXCEEDED,f.STATUSES.NOT_EXTENDED,f.STATUSES.NETWORK_AUTHENTICATION_REQUIRED,f.STATUSES.WEB_SERVER_UNKNOWN_ERROR,f.STATUSES.WEB_SERVER_IS_DOWN,f.STATUSES.CONNECTION_TIMEOUT,f.STATUSES.ORIGIN_IS_UNREACHABLE,f.STATUSES.TIMEOUT_OCCURED,f.STATUSES.SSL_HANDSHAKE_FAILED,f.STATUSES.INVALID_SSL_CERTIFICATE,f.STATUSES.RAILGUN_ERROR,f.STATUSES.SITE_IS_OVERLOADED,f.STATUSES.SITE_IS_FROZEN,f.STATUSES.IDENTITY_PROVIDER_AUTHENTICATION_ERROR,f.STATUSES.NETWORK_READ_TIMEOUT,f.STATUSES.NETWORK_CONNECT_TIMEOUT];f.ALPHA=[];for(let e=65;e<=90;e++)f.ALPHA.push(String.fromCharCode(e)),f.ALPHA.push(String.fromCharCode(e+32));f.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9};f.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};f.NUM=["0","1","2","3","4","5","6","7","8","9"];f.ALPHANUM=f.ALPHA.concat(f.NUM);f.MARK=["-","_",".","!","~","*","'","(",")"];f.USERINFO_CHARS=f.ALPHANUM.concat(f.MARK).concat(["%",";",":","&","=","+","$",","]);f.URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(f.ALPHANUM);f.HEX=f.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]);f.TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(f.ALPHANUM);f.HEADER_CHARS=[" "];for(let e=32;e<=255;e++)e!==127&&f.HEADER_CHARS.push(e);f.CONNECTION_TOKEN_CHARS=f.HEADER_CHARS.filter(e=>e!==44);f.QUOTED_STRING=[" "," "];for(let e=33;e<=255;e++)e!==34&&e!==92&&f.QUOTED_STRING.push(e);f.HTAB_SP_VCHAR_OBS_TEXT=[" "," "];for(let e=33;e<=126;e++)f.HTAB_SP_VCHAR_OBS_TEXT.push(e);for(let e=128;e<=255;e++)f.HTAB_SP_VCHAR_OBS_TEXT.push(e);f.MAJOR=f.NUM_MAP;f.MINOR=f.MAJOR;f.SPECIAL_HEADERS={connection:f.HEADER_STATE.CONNECTION,"content-length":f.HEADER_STATE.CONTENT_LENGTH,"proxy-connection":f.HEADER_STATE.CONNECTION,"transfer-encoding":f.HEADER_STATE.TRANSFER_ENCODING,upgrade:f.HEADER_STATE.UPGRADE};f.default={ERROR:f.ERROR,TYPE:f.TYPE,FLAGS:f.FLAGS,LENIENT_FLAGS:f.LENIENT_FLAGS,METHODS:f.METHODS,STATUSES:f.STATUSES,FINISH:f.FINISH,HEADER_STATE:f.HEADER_STATE,ALPHA:f.ALPHA,NUM_MAP:f.NUM_MAP,HEX_MAP:f.HEX_MAP,NUM:f.NUM,ALPHANUM:f.ALPHANUM,MARK:f.MARK,USERINFO_CHARS:f.USERINFO_CHARS,URL_CHAR:f.URL_CHAR,HEX:f.HEX,TOKEN:f.TOKEN,HEADER_CHARS:f.HEADER_CHARS,CONNECTION_TOKEN_CHARS:f.CONNECTION_TOKEN_CHARS,QUOTED_STRING:f.QUOTED_STRING,HTAB_SP_VCHAR_OBS_TEXT:f.HTAB_SP_VCHAR_OBS_TEXT,MAJOR:f.MAJOR,MINOR:f.MINOR,SPECIAL_HEADERS:f.SPECIAL_HEADERS,METHODS_HTTP:f.METHODS_HTTP,METHODS_ICE:f.METHODS_ICE,METHODS_RTSP:f.METHODS_RTSP,METHOD_MAP:f.METHOD_MAP,H_METHOD_MAP:f.H_METHOD_MAP,STATUSES_HTTP:f.STATUSES_HTTP}});var Su=m((e5,QI)=>{"use strict";var{Buffer:jM}=require("node:buffer"),$M="AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgL5YUCAgd/A34gASACaiEEAkAgACIDKAIMIgANACADKAIEBEAgAyABNgIECyMAQRBrIgkkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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C0HjAQwHC0HXAQwGC0HYAQwFC0HZAQwEC0HaAQwDC0HbAQwCC0HdAQwBC0HcAQshAgNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAg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ogKiAqICogKiAqICogKiAqICogKiAqICogIAogILIAQgAUEBaiIBRw0AC0HJACECDOwCCyABQQFqIQEgA0Evai0AAEEBcQ2lAiADQQA2AhwgAyABNgIUIANBlxA2AhAgA0EKNgIMQQAhAgzrAgsgASAERwRAA0AgAS0AAEEgRw0VIAQgAUEBaiIBRw0AC0H4ACECDOsCC0H4ACECDOoCCyADQQI6ACgMOAtBACECIANBADYCHCADQb8LNgIQIANBAjYCDCADIAFBAWo2AhQM6AILQQAhAgzOAgtBDSECDM0CC0ETIQIMzAILQRUhAgzLAgtBFiECDMoCC0EYIQIMyQILQRkhAgzIAgtBGiECDMcCC0EbIQIMxgILQRwhAgzFAgtBHSECDMQCC0EeIQIMwwILQR8hAgzCAgtBICECDMECC0EiIQIMwAILQSMhAgy/AgtBJSECDL4CC0HlACECDL0CCyADQT02AhwgAyABNgIUIAMgADYCDEEAIQIM1QILIANBGzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDNQCCyADQSA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzTAgsgA0ETNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0gILIANBCzYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNECCyADQRA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzQAgsgA0EgNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzwILIANBCzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM4CCyADQQw2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzNAgtBACECIANBADYCHCADIAE2AhQgA0HdDjYCECADQRI2AgwMzAILAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB/QEhAgzMAgsCQAJAIAMtADZBAUcNAEEAIQACQCADKAI4IgJFDQAgAigCYCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUcNASADQfwBNgIcIAMgATYCFCADQdwZNgIQIANBFTYCDEEAIQIMzQILQdwBIQIMswILIANBADYCHCADIAE2AhQgA0H5CzYCECADQR82AgxBACECDMsCCwJAAkAgAy0AKEEBaw4CBAEAC0HbASECDLICC0HUASECDLECCyADQQI6ADFBACEAAkAgAygCOCICRQ0AIAIoAgAiAkUNACADIAIRAAAhAAsgAEUEQEHdASECDLECCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQbQMNgIQIANBEDYCDEEAIQIMygILIANB+wE2AhwgAyABNgIUIANBgRo2AhAgA0EVNgIMQQAhAgzJAgsgASAERgRAQfoBIQIMyQILIAEtAABByABGDQEgA0EBOgAoC0HAASECDK4CC0HaASECDK0CCyABIARHBEAgA0EMNgIIIAMgATYCBEHZASECDK0CC0H5ASECDMUCCyABIARGBEBB+AEhAgzFAgsgAS0AAEHIAEcNBCABQQFqIQFB2AEhAgyrAgsgASAERgRAQfcBIQIMxAILAkACQCABLQAAQcUAaw4QAAUFBQUFBQUFBQUFBQUFAQULIAFBAWohAUHWASECDKsCCyABQQFqIQFB1wEhAgyqAgtB9gEhAiABIARGDcICIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbrVAGotAABHDQMgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMMCCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIARQRAQeMBIQIMqgILIANB9QE2AhwgAyABNgIUIAMgADYCDEEAIQIMwgILQfQBIQIgASAERg3BAiADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEG41QBqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzCAgsgA0GBBDsBKCADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIADQMMAgsgA0EANgIAC0EAIQIgA0EANgIcIAMgATYCFCADQeUfNgIQIANBCDYCDAy/AgtB1QEhAgylAgsgA0HzATYCHCADIAE2AhQgAyAANgIMQQAhAgy9AgtBACEAAkAgAygCOCICRQ0AIAIoAkAiAkUNACADIAIRAAAhAAsgAEUNbiAAQRVHBEAgA0EANgIcIAMgATYCFCADQYIPNgIQIANBIDYCDEEAIQIMvQILIANBjwE2AhwgAyABNgIUIANB7Bs2AhAgA0EVNgIMQQAhAgy8AgsgASAERwRAIANBDTYCCCADIAE2AgRB0wEhAgyjAgtB8gEhAgy7AgsgASAERgRAQfEBIQIMuwILAkACQAJAIAEtAABByABrDgsAAQgICAgICAgIAggLIAFBAWohAUHQASECDKMCCyABQQFqIQFB0QEhAgyiAgsgAUEBaiEBQdIBIQIMoQILQfABIQIgASAERg25AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBtdUAai0AAEcNBCAAQQJGDQMgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuQILQe8BIQIgASAERg24AiADKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABBs9UAai0AAEcNAyAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuAILQe4BIQIgASAERg23AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMtwILIAMoAgQhACADQgA3AwAgAyAAIAVBAWoiARArIgBFDQIgA0HsATYCHCADIAE2AhQgAyAANgIMQQAhAgy2AgsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNnAIgA0HtATYCHCADIAE2AhQgAyAANgIMQQAhAgy0AgtBzwEhAgyaAgtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDLQCC0HOASECDJoCCyADQesBNgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMsgILIAEgBEYEQEHrASECDLICCyABLQAAQS9GBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GyODYCECADQQg2AgxBACECDLECC0HNASECDJcCCyABIARHBEAgA0EONgIIIAMgATYCBEHMASECDJcCC0HqASECDK8CCyABIARGBEBB6QEhAgyvAgsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFBywEhAgyWAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZcCIANB6AE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAEgBEYEQEHnASECDK4CCwJAIAEtAABBLkYEQCABQQFqIQEMAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5gE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILQcoBIQIMlAILIAEgBEYEQEHlASECDK0CC0EAIQBBASEFQQEhB0EAIQICQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABLQAAQTBrDgoKCQABAgMEBQYICwtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshAkEAIQVBACEHDAILQQkhAkEBIQBBACEFQQAhBwwBC0EAIQVBASECCyADIAI6ACsgAUEBaiEBAkACQCADLQAuQRBxDQACQAJAAkAgAy0AKg4DAQACBAsgB0UNAwwCCyAADQEMAgsgBUUNAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDQIgA0HiATYCHCADIAE2AhQgAyAANgIMQQAhAgyvAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZoCIANB4wE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ2YAiADQeQBNgIcIAMgATYCFCADIAA2AgwMrQILQckBIQIMkwILQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANBpA02AhAgA0EhNgIMQQAhAgytAgtByAEhAgyTAgsgA0HhATYCHCADIAE2AhQgA0HQGjYCECADQRU2AgxBACECDKsCCyABIARGBEBB4QEhAgyrAgsCQCABLQAAQSBGBEAgA0EAOwE0IAFBAWohAQwBCyADQQA2AhwgAyABNgIUIANBmRE2AhAgA0EJNgIMQQAhAgyrAgtBxwEhAgyRAgsgASAERgRAQeABIQIMqgILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyrAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqgILQcYBIQIMkAILIAEgBEYEQEHfASECDKkCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqgILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKkCC0HFASECDI8CCyABIARGBEBB3gEhAgyoAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKkCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyoAgtBxAEhAgyOAgsgASAERgRAQd0BIQIMpwILAkACQAJAAkAgAS0AAEEKaw4XAgMDAAMDAwMDAwMDAwMDAwMDAwMDAwEDCyABQQFqDAULIAFBAWohAUHDASECDI8CCyABQQFqIQEgA0Evai0AAEEBcQ0IIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKcCCyADQQA2AhwgAyABNgIUIANBjQs2AhAgA0ENNgIMQQAhAgymAgsgASAERwRAIANBDzYCCCADIAE2AgRBASECDI0CC0HcASECDKUCCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtB2wEhAgymAgsgAygCBCEAIANBADYCBCADIAAgARAtIgBFBEAgAUEBaiEBDAQLIANB2gE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMpQILIAMoAgQhACADQQA2AgQgAyAAIAEQLSIADQEgAUEBagshAUHBASECDIoCCyADQdkBNgIcIAMgADYCDCADIAFBAWo2AhRBACECDKICC0HCASECDIgCCyADQS9qLQAAQQFxDQEgA0EANgIcIAMgATYCFCADQeQcNgIQIANBGTYCDEEAIQIMoAILIAEgBEYEQEHZASEC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IAFBAWohAUGeASECDOQBCyABQQFqIQFBnwEhAgzjAQtBtwEhAiABIARGDfsBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQezUAGotAABHDSggAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPwBCyADQQA2AgAgBkEBaiEBQQ0MKAtBtgEhAiABIARGDfoBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDScgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPsBCyADQQA2AgAgBkEBaiEBQQwMJwtBtQEhAiABIARGDfkBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQerUAGotAABHDSYgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPoBCyADQQA2AgAgBkEBaiEBQQMMJgtBtAEhAiABIARGDfgBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQejUAGotAABHDSUgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPkBCyADQQA2AgAgBkEBaiEBQSYMJQsgASAERgRAQbMBIQIM+AELAkACQCABLQAAQdQAaw4CAAEnCyABQQFqIQFBmQEhAgzfAQsgAUEBaiEBQZoBIQIM3gELQbIBIQIgASAERg32ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHm1ABqLQAARw0jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz3AQsgA0EANgIAIAZBAWohAUEnDCMLQbEBIQIgASAERg31ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHk1ABqLQAARw0iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz2AQsgA0EANgIAIAZBAWohAUEcDCILQbABIQIgASAERg30ASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHe1ABqLQAARw0hIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz1AQsgA0EANgIAIAZBAWohAUEGDCELQa8BIQIgASAERg3zASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHZ1ABqLQAARw0gIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz0AQsgA0EANgIAIAZBAWohAUEZDCALIAEgBEYEQEGuASECDPMBCwJAAkACQAJAIAEtAABBLWsOIwAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAEkJCQkJAIkJCQDJAsgAUEBaiEBQY4BIQIM3AELIAFBAWohAUGPASECDNsBCyABQQFqIQFBlAEhAgzaAQsgAUEBaiEBQZUBIQIM2QELQa0BIQIgASAERg3xASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHX1ABqLQAARw0eIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzyAQsgA0EANgIAIAZBAWohAUELDB4LIAEgBEYEQEGsASECDPEBCwJAAkAgAS0AAEHBAGsOAwAgASALIAFBAWohAUGQASECDNgBCyABQQFqIQFBkwEhAgzXAQsgASAERgRAQasBIQIM8AELAkACQCABLQAAQcEAaw4PAB8fHx8fHx8fHx8fHx8BHwsgAUEBaiEBQZEBIQIM1wELIAFBAWohAUGSASECDNYBCyABIARGBEBBqgEhAgzvAQsgAS0AAEHMAEcNHCABQQFqIQFBCgwbC0GpASECIAEgBEYN7QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABB0dQAai0AAEcNGiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7gELIANBADYCACAGQQFqIQFBHgwaC0GoASECIAEgBEYN7AEgAygCACIAIAQgAWtqIQUgASAAa0EGaiEGAkADQCABLQAAIABBytQAai0AAEcNGSAAQQZGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7QELIANBADYCACAGQQFqIQFBFQwZC0GnASECIAEgBEYN6wEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBx9QAai0AAEcNGCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7AELIANBADYCACAGQQFqIQFBFwwYC0GmASECIAEgBEYN6gEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBwdQAai0AAEcNFyAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6wELIANBADYCACAGQQFqIQFBGAwXCyABIARGBEBBpQEhAgzqAQsCQAJAIAEtAABByQBrDgcAGRkZGRkBGQsgAUEBaiEBQYsBIQIM0QELIAFBAWohAUGMASECDNABC0GkASECIAEgBEYN6AEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBptUAai0AAEcNFSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6QELIANBADYCACAGQQFqIQFBCQwVC0GjASECIAEgBEYN5wEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBpNUAai0AAEcNFCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6AELIANBADYCACAGQQFqIQFBHwwUC0GiASECIAEgBEYN5gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBvtQAai0AAEcNEyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5wELIANBADYCACAGQQFqIQFBAgwTC0GhASECIAEgBEYN5QEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGA0AgAS0AACAAQbzUAGotAABHDREgAEEBRg0CIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADOUBCyABIARGBEBBoAEhAgzlAQtBASABLQAAQd8ARw0RGiABQQFqIQFBhwEhAgzLAQsgA0EANgIAIAZBAWohAUGIASECDMoBC0GfASECIAEgBEYN4gEgAygCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABBhNUAai0AAEcNDyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4wELIANBADYCACAGQQFqIQFBKQwPC0GeASECIAEgBEYN4QEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBuNQAai0AAEcNDiAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4gELIANBADYCACAGQQFqIQFBLQwOCyABIARGBEBBnQEhAgzhAQsgAS0AAEHFAEcNDiABQQFqIQFBhAEhAgzHAQsgASAERgRAQZwBIQIM4AELAkACQCABLQAAQcwAaw4IAA8PDw8PDwEPCyABQQFqIQFBggEhAgzHAQsgAUEBaiEBQYMBIQIMxgELQZsBIQIgASAERg3eASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEGz1ABqLQAARw0LIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzfAQsgA0EANgIAIAZBAWohAUEjDAsLQZoBIQIgASAERg3dASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGw1ABqLQAARw0KIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzeAQsgA0EANgIAIAZBAWohAUEADAoLIAEgBEYEQEGZASECDN0BCwJAAkAgAS0AAEHIAGsOCAAMDAwMDAwBDAsgAUEBaiEBQf0AIQIMxAELIAFBAWohAUGAASECDMMBCyABIARGBEBBmAEhAgzcAQsCQAJAIAEtAABBzgBrDgMACwELCyABQQFqIQFB/gAhAgzDAQsgAUEBaiEBQf8AIQIMwgELIAEgBEYEQEGXASECDNsBCyABLQAAQdkARw0IIAFBAWohAUEIDAcLQZYBIQIgASAERg3ZASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEGs1ABqLQAARw0GIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzaAQsgA0EANgIAIAZBAWohAUEFDAYLQZUBIQIgASAERg3YASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGm1ABqLQAARw0FIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzZAQsgA0EANgIAIAZBAWohAUEWDAULQZQBIQIgASAERg3XASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGh1QBqLQAARw0EIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzYAQsgA0EANgIAIAZBAWohAUEQDAQLIAEgBEYEQEGTASECDNcBCwJAAkAgAS0AAEHDAGsODAAGBgYGBgYGBgYGAQYLIAFBAWohAUH5ACECDL4BCyABQQFqIQFB+gAhAgy9AQtBkgEhAiABIARGDdUBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQaDUAGotAABHDQIgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNYBCyADQQA2AgAgBkEBaiEBQSQMAgsgA0EANgIADAILIAEgBEYEQEGRASECDNQBCyABLQAAQcwARw0BIAFBAWohAUETCzoAKSADKAIEIQAgA0EANgIEIAMgACABEC4iAA0CDAELQQAhAiADQQA2AhwgAyABNgIUIANB/h82AhAgA0EGNgIMDNEBC0H4ACECDLcBCyADQZABNgIcIAMgATYCFCADIAA2AgxBACECDM8BC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUYNASADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgzOAQtB9wAhAgy0AQsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDMwBCyABIARGBEBBjwEhAgzMAQsCQCABLQAAQSBGBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GbHzYCECADQQY2AgxBACECDMwBC0ECIQIMsgELA0AgAS0AAEEgRw0CIAQgAUEBaiIBRw0AC0GOASECDMoBCyABIARGBEBBjQEhAgzKAQsCQCABLQAAQQlrDgRKAABKAAtB9QAhAgywAQsgAy0AKUEFRgRAQfYAIQIMsAELQfQAIQIMrwELIAEgBEYEQEGMASECDMgBCyADQRA2AgggAyABNgIEDAoLIAEgBEYEQEGLASECDMcBCwJAIAEtAABBCWsOBEcAAEcAC0HzACECDK0BCyABIARHBEAgA0EQNgIIIAMgATYCBEHxACECDK0BC0GKASECDMUBCwJAIAEgBEcEQANAIAEtAABBoNAAai0AACIAQQNHBEACQCAAQQFrDgJJAAQLQfAAIQIMrwELIAQgAUEBaiIBRw0AC0GIASEC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BCABQQFqIgFHDQALQfsAIQIMpwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMpgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMpQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMpAELIANBADYCHCADIAE2AhQgA0G8CjYCECADQQc2AgxBACECDKMBC0HPACECDIkBC0HRACECDIgBC0HnACECDIcBCyABIARGBEBB+gAhAgygAQsCQCABLQAAQQlrDgQgAAAgAAsgAUEBaiEBQeYAIQIMhgELIAEgBEYEQEH5ACECDJ8BCwJAIAEtAABBCWsOBB8AAB8AC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQRAQeIBIQIMhgELIABBFUcEQCADQQA2AhwgAyABNgIUIANByQ02AhAgA0EaNgIMQQAhAgyfAQsgA0H4ADYCHCADIAE2AhQgA0HqGjYCECADQRU2AgxBACECDJ4BCyABIARHBEAgA0ENNgIIIAMgATYCBEHkACECDIUBC0H3ACECDJ0BCyABIARGBEBB9gAhAgydAQsCQAJAAkAgAS0AAEHIAGsOCwABCwsLCwsLCwsCCwsgAUEBaiEBQd0AIQIMhQELIAFBAWohAUHgACECDIQBCyABQQFqIQFB4wAhAgyDAQtB9QAhAiABIARGDZsBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbXVAGotAABHDQggAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJwBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIABEAgA0H0ADYCHCADIAE2AhQgAyAANgIMQQAhAgycAQtB4gAhAgyCAQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJwBC0HhACECDIIBCyADQfMANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMmgELIAMtACkiAEEja0ELSQ0JAkAgAEEGSw0AQQEgAHRBygBxRQ0ADAoLQQAhAiADQQA2AhwgAyABNgIUIANB7Qk2AhAgA0EINgIMDJkBC0HyACECIAEgBEYNmAEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBs9UAai0AAEcNBSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMmQELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfEANgIcIAMgATYCFCADIAA2AgxBACECDJkBC0HfACECDH8LQQAhAAJAIAMoAjgiAkUNACACKAI0IgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANB6g02AhAgA0EmNgIMQQAhAgyZAQtB3gAhAgx/CyADQfAANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMlwELIAMtAClBIUYNBiADQQA2AhwgAyABNgIUIANBkQo2AhAgA0EINgIMQQAhAgyWAQtB7wAhAiABIARGDZUBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDVAGotAABHDQIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJYBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIARQ0CIANB7QA2AhwgAyABNgIUIAMgADYCDEEAIQIMlQELIANBADYCAAsgAygCBCEAIANBADYCBCADIAAgARArIgBFDYABIANB7gA2AhwgAyABNgIUIAMgADYCDEEAIQIMkwELQdwAIQIMeQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJMBC0HbACECDHkLIANB7AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyRAQsgAy0AKSIAQSNJDQAgAEEuRg0AIANBADYCHCADIAE2AhQgA0HJCTYCECADQQg2AgxBACECDJABC0HaACECDHYLIAEgBEYEQEHrACECDI8BCwJAIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMjwELQdkAIQIMdQsgASAERwRAIANBDjYCCCADIAE2AgRB2AAhAgx1C0HqACECDI0BCyABIARGBEBB6QAhAgyNAQsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFB1wAhAgx0CyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeiADQegANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyABIARGBEBB5wAhAgyMAQsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ17IANB5gA2AhwgAyABNgIUIAMgADYCDEEAIQIMjAELQdYAIQIMcgsgASAERgRAQeUAIQIMiwELQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIANgIcIAMgATYCFCADIAA2AgxBACECDI0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNfSADQeMANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeyADQeQANgIcIAMgATYCFCADIAA2AgwMiwELQdQAIQIMcQsgAy0AKUEiRg2GAUHTACECDHALQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALIABFBEBB1QAhAgxwCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQaQNNgIQIANBITYCDEEAIQIMiQELIANB4QA2AhwgAyABNgIUIANB0Bo2AhAgA0EVNgIMQQAhAgyIAQsgASAERgRAQeAAIQIMiAELAkACQAJAAkACQCABLQAAQQprDgQBBAQABAsgAUEBaiEBDAELIAFBAWohASADQS9qLQAAQQFxRQ0BC0HSACECDHALIANBADYCHCADIAE2AhQgA0G2ETYCECADQQk2AgxBACECDIgBCyADQQA2AhwgAyABNgIUIANBthE2AhAgA0EJNgIMQQAhAgyHAQsgASAERgRAQd8AIQIMhwELIAEtAABBCkYEQCABQQFqIQEMCQsgAy0ALkHAAHENCCADQQA2AhwgAyABNgIUIANBthE2AhAgA0ECNgIMQQAhAgyGAQsgASAERgRAQd0AIQIMhgELIAEtAAAiAkENRgRAIAFBAWohAUHQACECDG0LIAEhACACQQlrDgQFAQEFAQsgBCABIgBGBEBB3AAhAgyFAQsgAC0AAEEKRw0AIABBAWoMAgtBACECIANBADYCHCADIAA2AhQgA0HKLTYCECADQQc2AgwMgwELIAEgBEYEQEHbACECDIMBCwJAIAEtAABBCWsOBAMAAAMACyABQQFqCyEBQc4AIQIMaAsgASAERgRAQdoAIQIMgQELIAEtAABBCWsOBAABAQABC0EAIQIgA0EANgIcIANBmhI2AhAgA0EHNgIMIAMgAUEBajYCFAx/CyADQYASOwEqQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB2QA2AhwgAyABNgIUIANB6ho2AhAgA0EVNgIMQQAhAgx+C0HNACECDGQLIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDHwLIAEgBEYEQEHZACECDHwLIAEtAABBIEcNPSABQQFqIQEgAy0ALkEBcQ09IANBADYCHCADIAE2AhQgA0HCHDYCECADQR42AgxBACECDHsLIAEgBEYEQEHYACECDHsLAkACQAJAAkACQCABLQAAIgBBCmsOBAIDAwABCyABQQFqIQFBLCECDGULIABBOkcNASADQQA2AhwgAyABNgIUIANB5xE2AhAgA0EKNgIMQQAhAgx9CyABQQFqIQEgA0Evai0AAEEBcUUNcyADLQAyQYABcUUEQCADQTJqIQIgAxA1QQAhAAJAIAMoAjgiBkUNACAGKAIoIgZFDQAgAyAGEQAAIQALAkACQCAADhZNTEsBAQEBAQEBAQEBAQEBAQEBAQEAAQsgA0EpNgIcIAMgATYCFCADQawZNgIQIANBFTYCDEEAIQIMfgsg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c3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==",bu;Object.defineProperty(QI,"exports",{get:()=>bu||(bu=jM.from($M,"base64"))})});var RI=m((t5,wI)=>{"use strict";var{Buffer:ZM}=require("node:buffer"),ex="AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgLhocCAwd/A34BeyABIAJqIQQCQCAAIgMoAgwiAA0AIAMoAgQEQCADIAE2AgQLIwBBEGsiCSQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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DAgLQeMBDAcLQdcBDAYLQdgBDAULQdkBDAQLQdoBDAMLQdsBDAILQd0BDAELQdwBCyECA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAn8CQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAwJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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A0EXNgIcIAMgADYCDCADIAFBAWo2AhQM+AILIABBFUYNI0EAIQIgA0EANgIcIAMgATYCFCADQdYMNgIQIANBIzYCDAz3AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQwdCyADQRk2AhwgAyAANgIMIAMgAUEBajYCFAz2AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQzvAgsgA0EaNgIcIAMgADYCDCADIAFBAWo2AhQM9QILIABBFUYNH0EAIQIgA0EANgIcIAMgATYCFCADQdAPNgIQIANBIjYCDAz0AgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDBsLIANBHDYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgzzAgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDOsCCyADQR02AhwgAyAANgIMIAMgAUEBajYCFEEAIQIM8gILIABBO0cNASABQQFqIQELQSYhAgzXAgtBACECIANBADYCHCADIAE2AhQgA0GfFTYCECADQQw2AgwM7wILIAEgBEcEQANAIAEtAABBIEcNhAIgBCABQQFqIgFHDQALQSwhAgzvAgtBLCECDO4CCyABIARGBEBBNCECDO4CCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtBNCECDO8CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUNnwIgA0EyNgIcIAMgATYCFCADIAA2AgxBACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUEQCABQQFqIQEMnwILIANBMjYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgztAgsgASAERwRAAkADQCABLQAAQTBrIgBB/wFxQQpPBEBBOiECDNcCCyADKQMgIgtCmbPmzJmz5swZVg0BIAMgC0IKfiIKNwMgIAogAK1C/wGDIgtCf4VWDQEgAyAKIAt8NwMgIAQgAUEBaiIBRw0AC0HAACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABQQFqIgEQMSIADRcM4gILQcAAIQIM7AILIAEgBEYEQEHJACECDOwCCwJAA0ACQCABLQAAQQlrDhgAAqICogKpAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAgCiAgsgBCABQQFqIgFHDQALQckAIQIM7AILIAFBAWohASADQS9qLQAAQQFxDaUCIANBADYCHCADIAE2AhQgA0GXEDYCECADQQo2AgxBACECDOsCCyABIARHBEADQCABLQAAQSBHDRUgBCABQQFqIgFHDQALQfgAIQIM6wILQfgAIQIM6gILIANBAjoAKAw4C0EAIQIgA0EANgIcIANBvws2AhAgA0ECNgIMIAMgAUEBajYCFAzoAgtBACECDM4CC0ENIQIMzQILQRMhAgzMAgtBFSECDMsCC0EWIQIMygILQRghAgzJAgtBGSECDMgCC0EaIQIMxwILQRshAgzGAgtBHCECDMUCC0EdIQIMxAILQR4hAgzDAgtBHyECDMICC0EgIQIMwQILQSIhAgzAAgtBIyECDL8CC0ElIQIMvgILQeUAIQIMvQILIANBPTYCHCADIAE2AhQgAyAANgIMQQAhAgzVAgsgA0EbNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIM1AILIANBIDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNMCCyADQRM2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzSAgsgA0ELNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0QILIANBEDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNACCyADQSA2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzPAgsgA0ELNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzgILIANBDDYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM0CC0EAIQIgA0EANgIcIAMgATYCFCADQd0ONgIQIANBEjYCDAzMAgsCQANAAkAgAS0AAEEKaw4EAAICAAILIAQgAUEBaiIBRw0AC0H9ASECDMwCCwJAAkAgAy0ANkEBRw0AQQAhAAJAIAMoAjgiAkUNACACKAJgIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB/AE2AhwgAyABNgIUIANB3Bk2AhAgA0EVNgIMQQAhAgzNAgtB3AEhAgyzAgsgA0EANgIcIAMgATYCFCADQfkLNgIQIANBHzYCDEEAIQIMywILAkACQCADLQAoQQFrDgIEAQALQdsBIQIMsgILQdQBIQIMsQILIANBAjoAMUEAIQACQCADKAI4IgJFDQAgAigCACICRQ0AIAMgAhEAACEACyAARQRAQd0BIQIMsQILIABBFUcEQCADQQA2AhwgAyABNgIUIANBtAw2AhAgA0EQNgIMQQAhAgzKAgsgA0H7ATYCHCADIAE2AhQgA0GBGjYCECADQRU2AgxBACECDMkCCyABIARGBEBB+gEhAgzJAgsgAS0AAEHIAEYNASADQQE6ACgLQcABIQIMrgILQdoBIQIMrQILIAEgBEcEQCADQQw2AgggAyABNgIEQdkBIQIMrQILQfkBIQIMxQILIAEgBEYEQEH4ASECDMUCCyABLQAAQcgARw0EIAFBAWohAUHYASECDKsCCyABIARGBEBB9wEhAgzEAgsCQAJAIAEtAABBxQBrDhAABQUFBQUFBQUFBQUFBQUBBQsgAUEBaiEBQdYBIQIMqwILIAFBAWohAUHXASECDKoCC0H2ASECIAEgBEYNwgIgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABButUAai0AAEcNAyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMwwILIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgBFBEBB4wEhAgyqAgsgA0H1ATYCHCADIAE2AhQgAyAANgIMQQAhAgzCAgtB9AEhAiABIARGDcECIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjVAGotAABHDQIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMICCyADQYEEOwEoIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgANAwwCCyADQQA2AgALQQAhAiADQQA2AhwgAyABNgIUIANB5R82AhAgA0EINgIMDL8CC0HVASECDKUCCyADQfMBNgIcIAMgATYCFCADIAA2AgxBACECDL0CC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ1uIABBFUcEQCADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgy9AgsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDLwCCyABIARHBEAgA0ENNgIIIAMgATYCBEHTASECDKMCC0HyASECDLsCCyABIARGBEBB8QEhAgy7AgsCQAJAAkAgAS0AAEHIAGsOCwABCAgICAgICAgCCAsgAUEBaiEBQdABIQIMowILIAFBAWohAUHRASECDKICCyABQQFqIQFB0gEhAgyhAgtB8AEhAiABIARGDbkCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEG11QBqLQAARw0EIABBAkYNAyAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy5AgtB7wEhAiABIARGDbgCIAMoAgAiACAEIAFraiEGIAEgAGtBAWohBQNAIAEtAAAgAEGz1QBqLQAARw0DIABBAUYNAiAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy4AgtB7gEhAiABIARGDbcCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEGw1QBqLQAARw0CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy3AgsgAygCBCEAIANCADcDACADIAAgBUEBaiIBECsiAEUNAiADQewBNgIcIAMgATYCFCADIAA2AgxBACECDLYCCyADQQA2AgALIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ2cAiADQe0BNgIcIAMgATYCFCADIAA2AgxBACECDLQCC0HPASECDJoCC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMtAILQc4BIQIMmgILIANB6wE2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyyAgsgASAERgRAQesBIQIMsgILIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMsQILQc0BIQIMlwILIAEgBEcEQCADQQ42AgggAyABNgIEQcwBIQIMlwILQeoBIQIMrwILIAEgBEYEQEHpASECDK8CCyABLQAAQTBrIgBB/wFxQQpJBEAgAyAAOgAqIAFBAWohAUHLASECDJYCCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNlwIgA0HoATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgASAERgRAQecBIQIMrgILAkAgAS0AAEEuRgRAIAFBAWohAQwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmAIgA0HmATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgtBygEhAgyUAgsgASAERgRAQeUBIQIMrQILQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIBNgIcIAMgATYCFCADIAA2AgxBACECDK8CCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmgIgA0HjATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5AE2AhwgAyABNgIUIAMgADYCDAytAgtByQEhAgyTAgtBACEAAkAgAygCOCICRQ0AIAIoAkQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GkDTYCECADQSE2AgxBACECDK0CC0HIASECDJMCCyADQeEBNgIcIAMgATYCFCADQdAaNgIQIANBFTYCDEEAIQIMqwILIAEgBEYEQEHhASECDKsCCwJAIAEtAABBIEYEQCADQQA7ATQgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GZETYCECADQQk2AgxBACECDKsCC0HHASECDJECCyABIARGBEBB4AEhAgyqAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKsCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyqAgtBxgEhAgyQAgsgASAERgRAQd8BIQIMqQILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyqAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqQILQcUBIQIMjwILIAEgBEYEQEHeASECDKgCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqQILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKgCC0HEASECDI4CCyABIARGBEBB3QEhAgynAgsCQAJAAkACQCABLQAAQQprDhcCAwMAAwMDAwMDAwMDAwMDAwMDAwMDAQMLIAFBAWoMBQsgAUEBaiEBQcMBIQIMjwILIAFBAWohASADQS9qLQAAQQFxDQggA0EANgIcIAMgATYCFCADQY0LNgIQIANBDTYCDEEAIQIMpwILIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKYCCyABIARHBEAgA0EPNgIIIAMgATYCBEEBIQIMjQILQdwBIQIMpQILAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0HbASECDKYCCyADKAIEIQAgA0EANgIEIAMgACABEC0iAEUEQCABQQFqIQEMBAsgA0HaATYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgylAgsgAygCBCEAIANBADYCBCADIAAgARAtIgANASABQQFqCyEBQcEBIQIMigILIANB2QE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMogILQcIBIQIMiAILIANBL2otAABBAXENASADQQA2AhwgAyABNgIUIANB5Bw2AhAgA0EZNgIMQQAhAgygAgsgASAERgRAQdkB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CyADIAU2AgAMkAILIANBADYCACAGQQFqIQFBGgw8C0HKASECIAEgBEYNjgIgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBjdUAai0AAEcNOyAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMjwILIANBADYCACAGQQFqIQFBIQw7CyABIARGBEBByQEhAgyOAgsCQAJAIAEtAABBwQBrDhQAPT09PT09PT09PT09PT09PT09AT0LIAFBAWohAUGtASECDPUBCyABQQFqIQFBsAEhAgz0AQsgASAERgRAQcgBIQIMjQILAkACQCABLQAAQdUAaw4LADw8PDw8PDw8PAE8CyABQQFqIQFBrgEhAgz0AQsgAUEBaiEBQa8BIQIM8wELQccBIQIgASAERg2LAiADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw04IABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyMAgsgA0EANgIAIAZBAWohAUEqDDgLIAEgBEYEQEHGASECDIsCCyABLQAAQdAARw04IAFBAWohAUElDDcLQcUBIQIgASAERg2JAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGB1QBqLQAARw02IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyKAgsgA0EANgIAIAZBAWohAUEODDYLIAEgBEYEQEHEASECDIkCCyABLQAAQcUARw02IAFBAWohAUGrASECDO8BCyABIARGBEBBwwEhAgyIAgsCQAJAAkACQCABLQAAQcIAaw4PAAECOTk5OTk5OTk5OTkDOQsgAUEBaiEBQacBIQIM8QELIAFBAWohAUGoASECDPABCyABQQFqIQFBqQEhAgzvAQsgAUEBaiEBQaoBIQIM7gELQcIBIQIgASAERg2GAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEH+1ABqLQAARw0zIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyHAgsgA0EANgIAIAZBAWohAUEUDDMLQcEBIQIgASAERg2FAiADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANA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BTYCAAzsAQsgA0EANgIAIAZBAWohAUEXDBgLQaYBIQIgASAERg3qASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHB1ABqLQAARw0XIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzrAQsgA0EANgIAIAZBAWohAUEYDBcLIAEgBEYEQEGlASECDOoBCwJAAkAgAS0AAEHJAGsOBwAZGRkZGQEZCyABQQFqIQFBiwEhAgzRAQsgAUEBaiEBQYwBIQIM0AELQaQBIQIgASAERg3oASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGm1QBqLQAARw0VIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzpAQsgA0EANgIAIAZBAWohAUEJDBULQaMBIQIgASAERg3nASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGk1QBqLQAARw0UIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzoAQsgA0EANgIAIAZBAWohAUEfDBQLQaIBIQIgASAERg3mASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEG+1ABqLQAARw0TIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAznAQsgA0EANgIAIAZBAWohAUECDBMLQaEBIQIgASAERg3lASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYDQCABLQAAIABBvNQAai0AAEcNESAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5QELIAEgBEYEQEGgASECDOUBC0EBIAEtAABB3wBHDREaIAFBAWohAUGHASECDMsBCyADQQA2AgAgBkEBaiEBQYgBIQIMygELQZ8BIQIgASAERg3iASADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw0PIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzjAQsgA0EANgIAIAZBAWohAUEpDA8LQZ4BIQIgASAERg3hASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEG41ABqLQAARw0OIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAziAQsgA0EANgIAIAZBAWohAUEtDA4LIAEgBEYEQEGdASECDOEBCyABLQAAQcUARw0OIAFBAWohAUGEASECDMcBCyABIARGBEBBnAEhAgzgAQsCQAJAIAEtAABBzABrDggADw8PDw8PAQ8LIAFBAWohAUGCASECDMcBCyABQQFqIQFBgwEhAgzGAQtBmwEhAiABIARGDd4BIAMoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQbPUAGotAABHDQsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN8BCyADQQA2AgAgBkEBaiEBQSMMCwtBmgEhAiABIARGDd0BIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDUAGotAABHDQogAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN4BCyADQQA2AgAgBkEBaiEBQQAMCgsgASAERgRAQZkBIQIM3QELAkACQCABLQAAQcgAaw4IAAwMDAwMDAEMCyABQQFqIQFB/QAhAgzEAQsgAUEBaiEBQYABIQIMwwELIAEgBEYEQEGYASECDNwBCwJAAkAgAS0AAEHOAGsOAwALAQsLIAFBAWohAUH+ACECDMMBCyABQQFqIQFB/wAhAgzCAQsgASAERgRAQZcBIQIM2wELIAEtAABB2QBHDQggAUEBaiEBQQgMBwtBlgEhAiABIARGDdkBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQazUAGotAABHDQYgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNoBCyADQQA2AgAgBkEBaiEBQQUMBgtBlQEhAiABIARGDdgBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQabUAGotAABHDQUgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNkBCyADQQA2AgAgBkEBaiEBQRYMBQtBlAEhAiABIARGDdcBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDQQgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNgBCyADQQA2AgAgBkEBaiEBQRAMBAsgASAERgRAQZMBIQIM1wELAkACQCABLQAAQcMAaw4MAAYGBgYGBgYGBgYBBgsgAUEBaiEBQfkAIQIMvgELIAFBAWohAUH6ACECDL0BC0GSASECIAEgBEYN1QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBoNQAai0AAEcNAiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1gELIANBADYCACAGQQFqIQFBJAwCCyADQQA2AgAMAgsgASAERgRAQZEBIQIM1AELIAEtAABBzABHDQEgAUEBaiEBQRMLOgApIAMoAgQhACADQQA2AgQgAyAAIAEQLiIADQIMAQtBACECIANBADYCHCADIAE2AhQgA0H+HzYCECADQQY2AgwM0QELQfgAIQIMtwELIANBkAE2AhwgAyABNgIUIAMgADYCDEEAIQIMzwELQQAhAAJAIAMoAjgiAkUNACACKAJAIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GCDzYCECADQSA2AgxBACECDM4BC0H3ACECDLQBCyADQY8BNgIcIAMgATYCFCADQewbNgIQIANBFTYCDEEAIQIMzAELIAEgBEYEQEGPASECDMwBCwJAIAEtAABBIEYEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQZsfNgIQIANBBjYCDEEAIQIMzAELQQIhAgyyAQsDQCABLQAAQSBHDQIgBCABQQFqIgFHDQALQY4BIQIMygELIAEgBEYEQEGNASECDMoBCwJAIAEtAABBCWsOBEoAAEoAC0H1ACECDLABCyADLQApQQVGBEBB9gAhAgywAQtB9AAhAgyvAQsgASAERgRAQYwBIQIMyAELIANBEDYCCCADIAE2AgQMCgsgASAERgRAQYsBIQIMxwELAkAgAS0AAEEJaw4ERwAARwALQfMAIQIMrQELIAEgBEcEQCADQRA2AgggAyABNgIEQfEAIQIMrQELQYoBIQIMxQELAkAgASAERwRAA0AgAS0AAEGg0ABqLQAAIgBBA0cEQAJAIABBAWsOAkkABAtB8AAhAgyvAQsgBCABQQFqIgFHDQALQYgBIQIMxgELQYgBIQIMxQELIANBADYCHCADIAE2AhQgA0HbIDYCECADQQc2AgxBACECDMQBCyABIARGBEBBiQEhAgzEAQsCQAJAAkAgAS0AAEGg0gBqLQAAQQFrDgNGAgABC0HyACECDKwBCyADQQA2AhwgAyABNgIUIANBtBI2AhAgA0EHNgIMQQAhAgzEAQtB6gAhAgyqAQsgASAERwRAIAFBAWohAUHvACECDKoBC0GHASECDMIBCyAEIAEiAEYEQEGGASECDMIBCyAALQAAIgFBL0YEQCAAQQFqIQFB7gAhAgypAQsgAUEJayICQRdLDQEgACEBQQEgAnRBm4CABHENQQwBCyAEIAEiAEYEQEGFASECDMEBCyAALQAAQS9HDQAgAEEBaiEBDAMLQQAhAiADQQA2AhwgAyAANgIUIANB2yA2AhAgA0EHNgIMDL8BCwJAAkACQAJAAkADQCABLQAAQaDOAGotAAAiAEEFRwRAAkACQCAAQQFrDghHBQYHCAAEAQgLQesAIQIMrQELIAFBAWohAUHtACECDKwBCyAEIAFBAWoiAUcNAAtBhAEhAgzDAQsgAUEBagwUCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDMEBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDMABCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDL8BCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy+AQsgASAERgRAQYMBIQIMvgELAkAgAS0AAEGgzgBqLQAAQQFrDgg+BAUGAAgCAwcLIAFBAWohAQtBAyECDKMBCyABQQFqDA0LQQAhAiADQQA2AhwgA0HREjYCECADQQc2AgwgAyABQQFqNgIUDLoBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDLkBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDLgBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDLcBCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy2AQtB7AAhAgycAQsgASAERgRAQYIBIQIMtQELIAFBAWoMAgsgASAERgRAQYEBIQIMtAELIAFBAWoMAQsgASAERg0BIAFBAWoLIQFBBCECDJgBC0GAASECDLABCwNAIAEtAABBoMwAai0AACIAQQJHBEAgAEEBRwRAQekAIQIMmQELDDELIAQgAUEBaiIBRw0AC0H/ACECDK8BCyABIARGBEBB/gAhAgyvAQsCQCABLQAAQQlrDjcvAwYvBAYGBgYGBgYGBgYGBgYGBgYGBgUGBgIGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYABgsgAUEBagshAUEFIQIMlAELIAFBAWoMBgsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgyrAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyqAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgypAQsgA0EANgIcIAMgATYCFCADQY0UNgIQIANBBzYCDEEAIQIMqAELAkACQAJAAkADQCABLQAAQaDKAGotAAAiAEEFRwRAAkAgAEEBaw4GLgMEBQYABgtB6AAhAgyUAQsgBCABQQFqIgFHDQALQf0AIQIMqwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMqgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMqQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMqAELIANBADYCHCADIAE2AhQgA0HkCDYCECADQQc2AgxBACECDKcBCyABIARGDQEgAUEBagshAUEGIQIMjAELQfwAIQIMpAELAkACQAJAAkADQCABLQAAQaDIAGotAAAiAEEFRwRAIABBAWsOBCkCAwQFCyAEIAFBAWoiAUcNAAtB+wAhAgynAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgymAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgylAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgykAQsgA0EANgIcIAMgATYCFCADQbwKNgIQIANBBzYCDEEAIQIMowELQc8AIQIMiQELQdEAIQIMiAELQecAIQIMhwELIAEgBEYEQEH6ACECDKABCwJAIAEtAABBCWsOBCAAACAACyABQQFqIQFB5gAhAgyGAQsgASAERgRAQfkAIQIMnwELAkAgAS0AAEEJaw4EHwAAHwALQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFBEBB4gEhAgyGAQsgAEEVRwRAIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDJ8BCyADQfgANgIcIAMgATYCFCADQeoaNgIQIANBFTYCDEEAIQIMngELIAEgBEcEQCADQQ02AgggAyABNgIEQeQAIQIMhQELQfcAIQIMnQELIAEgBEYEQEH2ACECDJ0BCwJAAkACQCABLQAAQcgAaw4LAAELCwsLCwsLCwILCyABQQFqIQFB3QAhAgyFAQsgAUEBaiEBQeAAIQIMhAELIAFBAWohAUHjACECDIMBC0H1ACECIAEgBEYNmwEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBtdUAai0AAEcNCCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMnAELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfQANgIcIAMgATYCFCADIAA2AgxBACECDJwBC0HiACECDIIBC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMnAELQeEAIQIMggELIANB8wA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyaAQsgAy0AKSIAQSNrQQtJDQkCQCAAQQZLDQBBASAAdEHKAHFFDQAMCgtBACECIANBADYCHCADIAE2AhQgA0HtCTYCECADQQg2AgwMmQELQfIAIQIgASAERg2YASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGz1QBqLQAARw0FIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyZAQsgAygCBCEAIANCADcDACADIAAgBkEBaiIBECsiAARAIANB8QA2AhwgAyABNgIUIAMgADYCDEEAIQIMmQELQd8AIQIMfwtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJkBC0HeACECDH8LIANB8AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyXAQsgAy0AKUEhRg0GIANBADYCHCADIAE2AhQgA0GRCjYCECADQQg2AgxBACECDJYBC0HvACECIAEgBEYNlQEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMlgELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgBFDQIgA0HtADYCHCADIAE2AhQgAyAANgIMQQAhAgyVAQsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNgAEgA0HuADYCHCADIAE2AhQgAyAANgIMQQAhAgyTAQtB3AAhAgx5C0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMkwELQdsAIQIMeQsgA0HsADYCHCADIAE2AhQgA0GAGzYCECADQRU2AgxBACECDJEBCyADLQApIgBBI0kNACAAQS5GDQAgA0EANgIcIAMgATYCFCADQckJNgIQIANBCDYCDEEAIQIMkAELQdoAIQIMdgsgASAERgRAQesAIQIMjwELAkAgAS0AAEEvRgRAIAFBAWohAQwBCyAD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ciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==",Du;Object.defineProperty(wI,"exports",{get:()=>Du||(Du=ZM.from(ex,"base64"))})});var Bs=m((n5,xI)=>{"use strict";var bI=["GET","HEAD","POST"],tx=new Set(bI),nx=[101,204,205,304],SI=[301,302,303,307,308],rx=new Set(SI),DI=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","4190","5060","5061","6000","6566","6665","6666","6667","6668","6669","6679","6697","10080"],ox=new Set(DI),TI=["no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"],sx=["",...TI],ix=new Set(TI),Ax=["follow","manual","error"],kI=["GET","HEAD","OPTIONS","TRACE"],ax=new Set(kI),cx=["navigate","same-origin","no-cors","cors"],dx=["omit","same-origin","include"],ux=["default","no-store","reload","no-cache","force-cache","only-if-cached"],lx=["content-encoding","content-language","content-location","content-type","content-length"],gx=["half"],NI=["CONNECT","TRACE","TRACK"],fx=new Set(NI),MI=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""],px=new Set(MI);xI.exports={subresource:MI,forbiddenMethods:NI,requestBodyHeader:lx,referrerPolicy:sx,requestRedirect:Ax,requestMode:cx,requestCredentials:dx,requestCache:ux,redirectStatus:SI,corsSafeListedMethods:bI,nullBodyStatus:nx,safeMethods:kI,badPorts:DI,requestDuplex:gx,subresourceSet:px,badPortsSet:ox,redirectStatusSet:rx,corsSafeListedMethodsSet:tx,safeMethodsSet:ax,forbiddenMethodsSet:fx,referrerPolicyTokens:ix}});var ku=m((r5,UI)=>{"use strict";var Tu=Symbol.for("undici.globalOrigin.1");function hx(){return globalThis[Tu]}function Ex(e){if(e===void 0){Object.defineProperty(globalThis,Tu,{value:void 0,writable:!0,enumerable:!1,configurable:!1});return}let t=new URL(e);if(t.protocol!=="http:"&&t.protocol!=="https:")throw new TypeError(`Only http & https urls are allowed, received ${t.protocol}`);Object.defineProperty(globalThis,Tu,{value:t,writable:!0,enumerable:!1,configurable:!1})}UI.exports={getGlobalOrigin:hx,setGlobalOrigin:Ex}});var DA=m((o5,LI)=>{"use strict";var Cx=new TextDecoder;function Ix(e){return e.length===0?"":(e[0]===239&&e[1]===187&&e[2]===191&&(e=e.subarray(3)),Cx.decode(e))}LI.exports={utf8DecodeBytes:Ix}});var ln=m((s5,vI)=>{"use strict";var FI=require("node:assert"),{utf8DecodeBytes:Bx}=DA();function yx(e,t,n){let r="";for(;n.position<t.length&&e(t[n.position]);)r+=t[n.position],n.position++;return r}function mx(e,t,n){let r=t.indexOf(e,n.position),o=n.position;return r===-1?(n.position=t.length,t.slice(o)):(n.position=r,t.slice(o,n.position))}var Qx=/[\u0009\u000A\u000C\u000D\u0020]/g;function wx(e){e=e.replace(Qx,"");let t=e.length;if(t%4===0&&e.charCodeAt(t-1)===61&&(--t,e.charCodeAt(t-1)===61&&--t),t%4===1||/[^+/0-9A-Za-z]/.test(e.length===t?e:e.substring(0,t)))return"failure";let n=Buffer.from(e,"base64");return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}function _I(e){return e===9||e===10||e===12||e===13||e===32}function Rx(e){let t=e.length;if(65535>t)return String.fromCharCode.apply(null,e);let n="",r=0,o=65535;for(;r<t;)r+o>t&&(o=t-r),n+=String.fromCharCode.apply(null,e.subarray(r,r+=o));return n}var bx=/[^\x00-\xFF]/;function Sx(e){return FI(!bx.test(e)),e}function Dx(e){return JSON.parse(Bx(e))}function Tx(e,t=!0,n=!0){return PI(e,t,n,_I)}function PI(e,t,n,r){let o=0,s=e.length-1;if(t)for(;o<e.length&&r(e.charCodeAt(o));)o++;if(n)for(;s>0&&r(e.charCodeAt(s));)s--;return o===0&&s===e.length-1?e:e.slice(o,s+1)}function kx(e){let t=JSON.stringify(e);if(t===void 0)throw new TypeError("Value is not JSON serializable");return FI(typeof t=="string"),t}vI.exports={collectASequenceOfCodePoints:yx,collectASequenceOfCodePointsFast:mx,forgivingBase64:wx,isASCIIWhitespace:_I,isomorphicDecode:Rx,isomorphicEncode:Sx,parseJSONFromBytes:Dx,removeASCIIWhitespace:Tx,removeChars:PI,serializeJavascriptValueToJSONString:kx}});var It=m((i5,WI)=>{"use strict";var kA=require("node:assert"),{forgivingBase64:Nx,collectASequenceOfCodePoints:Nu,collectASequenceOfCodePointsFast:ys,isomorphicDecode:Mx,removeASCIIWhitespace:xx,removeChars:Ux}=ln(),Lx=new TextEncoder,ms=/^[-!#$%&'*+.^_|~A-Za-z0-9]+$/u,Fx=/[\u000A\u000D\u0009\u0020]/u,_x=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/u;function Px(e){kA(e.protocol==="data:");let t=GI(e,!0);t=t.slice(5);let n={position:0},r=ys(",",t,n),o=r.length;if(r=xx(r,!0,!0),n.position>=t.length)return"failure";n.position++;let s=t.slice(o+1),i=HI(s);if(/;(?:\u0020*)base64$/ui.test(r)){let a=Mx(i);if(i=Nx(a),i==="failure")return"failure";r=r.slice(0,-6),r=r.replace(/(\u0020+)$/u,""),r=r.slice(0,-1)}r.startsWith(";")&&(r="text/plain"+r);let A=Mu(r);return A==="failure"&&(A=Mu("text/plain;charset=US-ASCII")),{mimeType:A,body:i}}function GI(e,t=!1){if(!t)return e.href;let n=e.href,r=e.hash.length,o=r===0?n:n.substring(0,n.length-r);return!r&&n.endsWith("#")?o.slice(0,-1):o}function HI(e){let t=Lx.encode(e);return vx(t)}function OI(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function qI(e){return e>=48&&e<=57?e-48:(e&223)-55}function vx(e){let t=e.length,n=new Uint8Array(t),r=0,o=0;for(;o<t;){let s=e[o];s!==37?n[r++]=s:s===37&&!(OI(e[o+1])&&OI(e[o+2]))?n[r++]=37:(n[r++]=qI(e[o+1])<<4|qI(e[o+2]),o+=2),++o}return t===r?n:n.subarray(0,r)}function Mu(e){e=TA(e,!0,!0);let t={position:0},n=ys("/",e,t);if(n.length===0||!ms.test(n)||t.position>=e.length)return"failure";t.position++;let r=ys(";",e,t);if(r=TA(r,!1,!0),r.length===0||!ms.test(r))return"failure";let o=n.toLowerCase(),s=r.toLowerCase(),i={type:o,subtype:s,parameters:new Map,essence:`${o}/${s}`};for(;t.position<e.length;){t.position++,Nu(c=>Fx.test(c),e,t);let A=Nu(c=>c!==";"&&c!=="=",e,t);if(A=A.toLowerCase(),t.position<e.length){if(e[t.position]===";")continue;t.position++}if(t.position>=e.length)break;let a=null;if(e[t.position]==='"')a=YI(e,t,!0),ys(";",e,t);else if(a=ys(";",e,t),a=TA(a,!1,!0),a.length===0)continue;A.length!==0&&ms.test(A)&&(a.length===0||_x.test(a))&&!i.parameters.has(A)&&i.parameters.set(A,a)}return i}function YI(e,t,n=!1){let r=t.position,o="";for(kA(e[t.position]==='"'),t.position++;o+=Nu(i=>i!=='"'&&i!=="\\",e,t),!(t.position>=e.length);){let s=e[t.position];if(t.position++,s==="\\"){if(t.position>=e.length){o+="\\";break}o+=e[t.position],t.position++}else{kA(s==='"');break}}return n?o:e.slice(r,t.position)}function Ox(e){kA(e!=="failure");let{parameters:t,essence:n}=e,r=n;for(let[o,s]of t.entries())r+=";",r+=o,r+="=",ms.test(s)||(s=s.replace(/[\\"]/ug,"\\$&"),s='"'+s,s+='"'),r+=s;return r}function qx(e){return e===13||e===10||e===9||e===32}function TA(e,t=!0,n=!0){return Ux(e,t,n,qx)}function Gx(e){switch(e.essence){case"application/ecmascript":case"application/javascript":case"application/x-ecmascript":case"application/x-javascript":case"text/ecmascript":case"text/javascript":case"text/javascript1.0":case"text/javascript1.1":case"text/javascript1.2":case"text/javascript1.3":case"text/javascript1.4":case"text/javascript1.5":case"text/jscript":case"text/livescript":case"text/x-ecmascript":case"text/x-javascript":return"text/javascript";case"application/json":case"text/json":return"application/json";case"image/svg+xml":return"image/svg+xml";case"text/xml":case"application/xml":return"application/xml"}return e.subtype.endsWith("+json")?"application/json":e.subtype.endsWith("+xml")?"application/xml":""}WI.exports={dataURLProcessor:Px,URLSerializer:GI,stringPercentDecode:HI,parseMIMEType:Mu,collectAnHTTPQuotedString:YI,serializeAMimeType:Ox,removeHTTPWhitespace:TA,minimizeSupportedMimeType:Gx,HTTP_TOKEN_CODEPOINTS:ms}});var gn=m((A5,Uu)=>{"use strict";var VI={__proto__:null,"node:crypto":()=>require("node:crypto"),"node:sqlite":()=>require("node:sqlite"),"node:worker_threads":()=>require("node:worker_threads"),"node:zlib":()=>require("node:zlib")};function Hx(e){try{return VI[e](),!0}catch(t){if(t.code!=="ERR_UNKNOWN_BUILTIN_MODULE"&&t.code!=="ERR_NO_CRYPTO")throw t;return!1}}function Yx(e,t){return typeof VI[e]()[t]<"u"}var JI=["markAsUncloneable","zstd"],Wx={markAsUncloneable:["node:worker_threads","markAsUncloneable"],zstd:["node:zlib","createZstdDecompress"]},zI=["crypto","sqlite"],Vx=[...zI,...JI];function Jx(e){if(zI.includes(e))return Hx(`node:${e}`);if(JI.includes(e)){let[t,n]=Wx[e];return Yx(t,n)}throw new TypeError(`unknown feature: ${e}`)}var xu=class{#e=new Map;clear(){this.#e.clear()}has(t){return this.#e.get(t)??this.#t(t)}set(t,n){if(Vx.includes(t)===!1)throw new TypeError(`unknown feature: ${t}`);this.#e.set(t,n)}#t(t){let n=Jx(t);return this.#e.set(t,n),n}},KI=new xu;Uu.exports.runtimeFeatures=KI;Uu.exports.default=KI});var De=m((a5,jI)=>{"use strict";var zx=require("node:assert"),{types:he,inspect:Kx}=require("node:util"),{runtimeFeatures:Xx}=gn(),Lu=1,Fu=2,NA=3,MA=4,_u=5,xA=6,Pu=7,it=8,XI=Function.call.bind(Function.prototype[Symbol.hasInstance]),I={converters:{},util:{},errors:{},is:{}};I.errors.exception=function(e){return new TypeError(`${e.header}: ${e.message}`)};I.errors.conversionFailed=function(e){let t=e.types.length===1?"":" one of",n=`${e.argument} could not be converted to${t}: ${e.types.join(", ")}.`;return I.errors.exception({header:e.prefix,message:n})};I.errors.invalidArgument=function(e){return I.errors.exception({header:e.prefix,message:`"${e.value}" is an invalid ${e.type}.`})};I.brandCheck=function(e,t){if(!XI(t,e)){let n=new TypeError("Illegal invocation");throw n.code="ERR_INVALID_THIS",n}};I.brandCheckMultiple=function(e){let t=e.map(n=>I.util.MakeTypeAssertion(n));return n=>{if(t.every(r=>!r(n))){let r=new TypeError("Illegal invocation");throw r.code="ERR_INVALID_THIS",r}}};I.argumentLengthCheck=function({length:e},t,n){if(e<t)throw I.errors.exception({message:`${t} argument${t!==1?"s":""} required, but${e?" only":""} ${e} found.`,header:n})};I.illegalConstructor=function(){throw I.errors.exception({header:"TypeError",message:"Illegal constructor"})};I.util.MakeTypeAssertion=function(e){return t=>XI(e,t)};I.util.Type=function(e){switch(typeof e){case"undefined":return Lu;case"boolean":return Fu;case"string":return NA;case"symbol":return MA;case"number":return _u;case"bigint":return xA;case"function":case"object":return e===null?Pu:it}};I.util.Types={UNDEFINED:Lu,BOOLEAN:Fu,STRING:NA,SYMBOL:MA,NUMBER:_u,BIGINT:xA,NULL:Pu,OBJECT:it};I.util.TypeValueToString=function(e){switch(I.util.Type(e)){case Lu:return"Undefined";case Fu:return"Boolean";case NA:return"String";case MA:return"Symbol";case _u:return"Number";case xA:return"BigInt";case Pu:return"Null";case it:return"Object"}};I.util.markAsUncloneable=Xx.has("markAsUncloneable")?require("node:worker_threads").markAsUncloneable:()=>{};I.util.ConvertToInt=function(e,t,n,r){let o,s;t===64?(o=Math.pow(2,53)-1,n==="unsigned"?s=0:s=Math.pow(-2,53)+1):n==="unsigned"?(s=0,o=Math.pow(2,t)-1):(s=-Math.pow(2,t-1),o=Math.pow(2,t-1)-1);let i=Number(e);if(i===0&&(i=0),I.util.HasFlag(r,I.attributes.EnforceRange)){if(Number.isNaN(i)||i===Number.POSITIVE_INFINITY||i===Number.NEGATIVE_INFINITY)throw I.errors.exception({header:"Integer conversion",message:`Could not convert ${I.util.Stringify(e)} to an integer.`});if(i=I.util.IntegerPart(i),i<s||i>o)throw I.errors.exception({header:"Integer conversion",message:`Value must be between ${s}-${o}, got ${i}.`});return i}return!Number.isNaN(i)&&I.util.HasFlag(r,I.attributes.Clamp)?(i=Math.min(Math.max(i,s),o),Math.floor(i)%2===0?i=Math.floor(i):i=Math.ceil(i),i):Number.isNaN(i)||i===0&&Object.is(0,i)||i===Number.POSITIVE_INFINITY||i===Number.NEGATIVE_INFINITY?0:(i=I.util.IntegerPart(i),i=i%Math.pow(2,t),n==="signed"&&i>=Math.pow(2,t-1)?i-Math.pow(2,t):i)};I.util.IntegerPart=function(e){let t=Math.floor(Math.abs(e));return e<0?-1*t:t};I.util.Stringify=function(e){switch(I.util.Type(e)){case MA:return`Symbol(${e.description})`;case it:return Kx(e);case NA:return`"${e}"`;case xA:return`${e}n`;default:return`${e}`}};I.util.IsResizableArrayBuffer=function(e){if(he.isArrayBuffer(e))return e.resizable;if(he.isSharedArrayBuffer(e))return e.growable;throw I.errors.exception({header:"IsResizableArrayBuffer",message:`"${I.util.Stringify(e)}" is not an array buffer.`})};I.util.HasFlag=function(e,t){return typeof e=="number"&&(e&t)===t};I.sequenceConverter=function(e){return(t,n,r,o)=>{if(I.util.Type(t)!==it)throw I.errors.exception({header:n,message:`${r} (${I.util.Stringify(t)}) is not iterable.`});let s=typeof o=="function"?o():t?.[Symbol.iterator]?.(),i=[],A=0;if(s===void 0||typeof s.next!="function")throw I.errors.exception({header:n,message:`${r} is not iterable.`});for(;;){let{done:a,value:c}=s.next();if(a)break;i.push(e(c,n,`${r}[${A++}]`))}return i}};I.recordConverter=function(e,t){return(n,r,o)=>{if(I.util.Type(n)!==it)throw I.errors.exception({header:r,message:`${o} ("${I.util.TypeValueToString(n)}") is not an Object.`});let s={};if(!he.isProxy(n)){let A=[...Object.getOwnPropertyNames(n),...Object.getOwnPropertySymbols(n)];for(let a of A){let c=I.util.Stringify(a),d=e(a,r,`Key ${c} in ${o}`),l=t(n[a],r,`${o}[${c}]`);s[d]=l}return s}let i=Reflect.ownKeys(n);for(let A of i)if(Reflect.getOwnPropertyDescriptor(n,A)?.enumerable){let c=e(A,r,o),d=t(n[A],r,o);s[c]=d}return s}};I.interfaceConverter=function(e,t){return(n,r,o)=>{if(!e(n))throw I.errors.exception({header:r,message:`Expected ${o} ("${I.util.Stringify(n)}") to be an instance of ${t}.`});return n}};I.dictionaryConverter=function(e){return e.sort((t,n)=>(t.key>n.key)-(t.key<n.key)),(t,n,r)=>{let o={};if(t!=null&&I.util.Type(t)!==it)throw I.errors.exception({header:n,message:`Expected ${t} to be one of: Null, Undefined, Object.`});for(let s of e){let{key:i,defaultValue:A,required:a,converter:c}=s;if(a===!0&&(t==null||!Object.hasOwn(t,i)))throw I.errors.exception({header:n,message:`Missing required key "${i}".`});let d=t?.[i],l=A!==void 0;if(l&&d===void 0&&(d=A()),a||l||d!==void 0){if(d=c(d,n,`${r}.${i}`),s.allowedValues&&!s.allowedValues.includes(d))throw I.errors.exception({header:n,message:`${d} is not an accepted type. Expected one of ${s.allowedValues.join(", ")}.`});o[i]=d}}return o}};I.nullableConverter=function(e){return(t,n,r)=>t===null?t:e(t,n,r)};I.is.USVString=function(e){return typeof e=="string"&&e.isWellFormed()};I.is.ReadableStream=I.util.MakeTypeAssertion(ReadableStream);I.is.Blob=I.util.MakeTypeAssertion(Blob);I.is.URLSearchParams=I.util.MakeTypeAssertion(URLSearchParams);I.is.File=I.util.MakeTypeAssertion(File);I.is.URL=I.util.MakeTypeAssertion(URL);I.is.AbortSignal=I.util.MakeTypeAssertion(AbortSignal);I.is.MessagePort=I.util.MakeTypeAssertion(MessagePort);I.is.BufferSource=function(e){return he.isArrayBuffer(e)||ArrayBuffer.isView(e)&&he.isArrayBuffer(e.buffer)};I.util.getCopyOfBytesHeldByBufferSource=function(e){let t=e,n=t,r=0,o=0;if(he.isTypedArray(t)||he.isDataView(t)?(n=t.buffer,r=t.byteOffset,o=t.byteLength):(zx(he.isAnyArrayBuffer(t)),o=t.byteLength),n.detached)return new Uint8Array(0);let s=new Uint8Array(o),i=new Uint8Array(n,r,o);return s.set(i),s};I.converters.DOMString=function(e,t,n,r){if(e===null&&I.util.HasFlag(r,I.attributes.LegacyNullToEmptyString))return"";if(typeof e=="symbol")throw I.errors.exception({header:t,message:`${n} is a symbol, which cannot be converted to a DOMString.`});return String(e)};I.converters.ByteString=function(e,t,n){if(typeof e=="symbol")throw I.errors.exception({header:t,message:`${n} is a symbol, which cannot be converted to a ByteString.`});let r=String(e);for(let o=0;o<r.length;o++)if(r.charCodeAt(o)>255)throw new TypeError(`Cannot convert argument to a ByteString because the character at index ${o} has a value of ${r.charCodeAt(o)} which is greater than 255.`);return r};I.converters.USVString=function(e){return typeof e=="string"?e.toWellFormed():`${e}`.toWellFormed()};I.converters.boolean=function(e){return!!e};I.converters.any=function(e){return e};I.converters["long long"]=function(e,t,n){return I.util.ConvertToInt(e,64,"signed",0,t,n)};I.converters["unsigned long long"]=function(e,t,n){return I.util.ConvertToInt(e,64,"unsigned",0,t,n)};I.converters["unsigned long"]=function(e,t,n){return I.util.ConvertToInt(e,32,"unsigned",0,t,n)};I.converters["unsigned short"]=function(e,t,n,r){return I.util.ConvertToInt(e,16,"unsigned",r,t,n)};I.converters.ArrayBuffer=function(e,t,n,r){if(I.util.Type(e)!==it||!he.isArrayBuffer(e))throw I.errors.conversionFailed({prefix:t,argument:`${n} ("${I.util.Stringify(e)}")`,types:["ArrayBuffer"]});if(!I.util.HasFlag(r,I.attributes.AllowResizable)&&I.util.IsResizableArrayBuffer(e))throw I.errors.exception({header:t,message:`${n} cannot be a resizable ArrayBuffer.`});return e};I.converters.SharedArrayBuffer=function(e,t,n,r){if(I.util.Type(e)!==it||!he.isSharedArrayBuffer(e))throw I.errors.conversionFailed({prefix:t,argument:`${n} ("${I.util.Stringify(e)}")`,types:["SharedArrayBuffer"]});if(!I.util.HasFlag(r,I.attributes.AllowResizable)&&I.util.IsResizableArrayBuffer(e))throw I.errors.exception({header:t,message:`${n} cannot be a resizable SharedArrayBuffer.`});return e};I.converters.TypedArray=function(e,t,n,r,o){if(I.util.Type(e)!==it||!he.isTypedArray(e)||e.constructor.name!==t.name)throw I.errors.conversionFailed({prefix:n,argument:`${r} ("${I.util.Stringify(e)}")`,types:[t.name]});if(!I.util.HasFlag(o,I.attributes.AllowShared)&&he.isSharedArrayBuffer(e.buffer))throw I.errors.exception({header:n,message:`${r} cannot be a view on a shared array buffer.`});if(!I.util.HasFlag(o,I.attributes.AllowResizable)&&I.util.IsResizableArrayBuffer(e.buffer))throw I.errors.exception({header:n,message:`${r} cannot be a view on a resizable array buffer.`});return e};I.converters.DataView=function(e,t,n,r){if(I.util.Type(e)!==it||!he.isDataView(e))throw I.errors.conversionFailed({prefix:t,argument:`${n} ("${I.util.Stringify(e)}")`,types:["DataView"]});if(!I.util.HasFlag(r,I.attributes.AllowShared)&&he.isSharedArrayBuffer(e.buffer))throw I.errors.exception({header:t,message:`${n} cannot be a view on a shared array buffer.`});if(!I.util.HasFlag(r,I.attributes.AllowResizable)&&I.util.IsResizableArrayBuffer(e.buffer))throw I.errors.exception({header:t,message:`${n} cannot be a view on a resizable array buffer.`});return e};I.converters.ArrayBufferView=function(e,t,n,r){if(I.util.Type(e)!==it||!he.isArrayBufferView(e))throw I.errors.conversionFailed({prefix:t,argument:`${n} ("${I.util.Stringify(e)}")`,types:["ArrayBufferView"]});if(!I.util.HasFlag(r,I.attributes.AllowShared)&&he.isSharedArrayBuffer(e.buffer))throw I.errors.exception({header:t,message:`${n} cannot be a view on a shared array buffer.`});if(!I.util.HasFlag(r,I.attributes.AllowResizable)&&I.util.IsResizableArrayBuffer(e.buffer))throw I.errors.exception({header:t,message:`${n} cannot be a view on a resizable array buffer.`});return e};I.converters.BufferSource=function(e,t,n,r){if(he.isArrayBuffer(e))return I.converters.ArrayBuffer(e,t,n,r);if(he.isArrayBufferView(e))return r&=~I.attributes.AllowShared,I.converters.ArrayBufferView(e,t,n,r);throw he.isSharedArrayBuffer(e)?I.errors.exception({header:t,message:`${n} cannot be a SharedArrayBuffer.`}):I.errors.conversionFailed({prefix:t,argument:`${n} ("${I.util.Stringify(e)}")`,types:["ArrayBuffer","ArrayBufferView"]})};I.converters.AllowSharedBufferSource=function(e,t,n,r){if(he.isArrayBuffer(e))return I.converters.ArrayBuffer(e,t,n,r);if(he.isSharedArrayBuffer(e))return I.converters.SharedArrayBuffer(e,t,n,r);if(he.isArrayBufferView(e))return r|=I.attributes.AllowShared,I.converters.ArrayBufferView(e,t,n,r);throw I.errors.conversionFailed({prefix:t,argument:`${n} ("${I.util.Stringify(e)}")`,types:["ArrayBuffer","SharedArrayBuffer","ArrayBufferView"]})};I.converters["sequence<ByteString>"]=I.sequenceConverter(I.converters.ByteString);I.converters["sequence<sequence<ByteString>>"]=I.sequenceConverter(I.converters["sequence<ByteString>"]);I.converters["record<ByteString, ByteString>"]=I.recordConverter(I.converters.ByteString,I.converters.ByteString);I.converters.Blob=I.interfaceConverter(I.is.Blob,"Blob");I.converters.AbortSignal=I.interfaceConverter(I.is.AbortSignal,"AbortSignal");I.converters.EventHandlerNonNull=function(e){return I.util.Type(e)!==it?null:typeof e=="function"?e:()=>{}};I.attributes={Clamp:1,EnforceRange:2,AllowShared:4,AllowResizable:8,LegacyNullToEmptyString:16};jI.exports={webidl:I}});var At=m((c5,uB)=>{"use strict";var{Transform:jx}=require("node:stream"),$I=require("node:zlib"),{redirectStatusSet:$x,referrerPolicyTokens:Zx,badPortsSet:eU}=Bs(),{getGlobalOrigin:ZI}=ku(),{collectAnHTTPQuotedString:tU,parseMIMEType:nU}=It(),{performance:rU}=require("node:perf_hooks"),{ReadableStreamFrom:oU,isValidHTTPToken:eB,normalizedMethodRecordsBase:sU}=G(),ws=require("node:assert"),{isUint8Array:iU}=require("node:util/types"),{webidl:Fn}=De(),{isomorphicEncode:vu,collectASequenceOfCodePoints:gr,removeChars:AU}=ln();function tB(e){let t=e.urlList,n=t.length;return n===0?null:t[n-1].toString()}function aU(e,t){if(!$x.has(e.status))return null;let n=e.headersList.get("location",!0);return n!==null&&rB(n)&&(nB(n)||(n=cU(n)),n=new URL(n,tB(e))),n&&!n.hash&&(n.hash=t),n}function nB(e){for(let t=0;t<e.length;++t){let n=e.charCodeAt(t);if(n>126||n<32)return!1}return!0}function cU(e){return Buffer.from(e,"binary").toString("utf8")}function pr(e){return e.urlList[e.urlList.length-1]}function dU(e){let t=pr(e);return cB(t)&&eU.has(t.port)?"blocked":"allowed"}function uU(e){return e instanceof Error||e?.constructor?.name==="Error"||e?.constructor?.name==="DOMException"}function lU(e){for(let t=0;t<e.length;++t){let n=e.charCodeAt(t);if(!(n===9||n>=32&&n<=126||n>=128&&n<=255))return!1}return!0}var gU=eB;function rB(e){return(e[0]===" "||e[0]===" "||e[e.length-1]===" "||e[e.length-1]===" "||e.includes(`
|
|
2
|
+
`)||e.includes("\r")||e.includes("\0"))===!1}function fU(e){let t=(e.headersList.get("referrer-policy",!0)??"").split(","),n="";if(t.length)for(let r=t.length;r!==0;r--){let o=t[r-1].trim();if(Zx.has(o)){n=o;break}}return n}function pU(e,t){let n=fU(t);n!==""&&(e.referrerPolicy=n)}function hU(){return"allowed"}function EU(){return"success"}function CU(){return"success"}function IU(e){let t=null;t=e.mode,e.headersList.set("sec-fetch-mode",t,!0)}function BU(e){let t=e.origin;if(!(t==="client"||t===void 0)){if(e.responseTainting==="cors"||e.mode==="websocket")e.headersList.append("origin",t,!0);else if(e.method!=="GET"&&e.method!=="HEAD"){switch(e.referrerPolicy){case"no-referrer":t=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":e.origin&&qu(e.origin)&&!qu(pr(e))&&(t=null);break;case"same-origin":Qs(e,pr(e))||(t=null);break;default:}e.headersList.append("origin",t,!0)}}}function lo(e,t){return e}function yU(e,t,n){return!e?.startTime||e.startTime<t?{domainLookupStartTime:t,domainLookupEndTime:t,connectionStartTime:t,connectionEndTime:t,secureConnectionStartTime:t,ALPNNegotiatedProtocol:e?.ALPNNegotiatedProtocol}:{domainLookupStartTime:lo(e.domainLookupStartTime,n),domainLookupEndTime:lo(e.domainLookupEndTime,n),connectionStartTime:lo(e.connectionStartTime,n),connectionEndTime:lo(e.connectionEndTime,n),secureConnectionStartTime:lo(e.secureConnectionStartTime,n),ALPNNegotiatedProtocol:e.ALPNNegotiatedProtocol}}function mU(e){return lo(rU.now(),e)}function QU(e){return{startTime:e.startTime??0,redirectStartTime:0,redirectEndTime:0,postRedirectStartTime:e.startTime??0,finalServiceWorkerStartTime:0,finalNetworkResponseStartTime:0,finalNetworkRequestStartTime:0,endTime:0,encodedBodySize:0,decodedBodySize:0,finalConnectionTimingInfo:null}}function oB(){return{referrerPolicy:"strict-origin-when-cross-origin"}}function wU(e){return{referrerPolicy:e.referrerPolicy}}function RU(e){let t=e.referrerPolicy;ws(t);let n=null;if(e.referrer==="client"){let s=ZI();if(!s||s.origin==="null")return"no-referrer";n=new URL(s)}else Fn.is.URL(e.referrer)&&(n=e.referrer);let r=Ou(n),o=Ou(n,!0);switch(r.toString().length>4096&&(r=o),t){case"no-referrer":return"no-referrer";case"origin":return o??Ou(n,!0);case"unsafe-url":return r;case"strict-origin":{let s=pr(e);return fr(r)&&!fr(s)?"no-referrer":o}case"strict-origin-when-cross-origin":{let s=pr(e);return Qs(r,s)?r:fr(r)&&!fr(s)?"no-referrer":o}case"same-origin":return Qs(e,r)?r:"no-referrer";case"origin-when-cross-origin":return Qs(e,r)?r:o;case"no-referrer-when-downgrade":{let s=pr(e);return fr(r)&&!fr(s)?"no-referrer":r}}}function Ou(e,t=!1){return ws(Fn.is.URL(e)),e=new URL(e),aB(e)?"no-referrer":(e.username="",e.password="",e.hash="",t===!0&&(e.pathname="",e.search=""),e)}var bU=RegExp.prototype.test.bind(/^127\.(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)\.){2}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)$/),SU=RegExp.prototype.test.bind(/^(?:(?:0{1,4}:){7}|(?:0{1,4}:){1,6}:|::)0{0,3}1$/);function sB(e){return e.includes(":")?(e[0]==="["&&e[e.length-1]==="]"&&(e=e.slice(1,-1)),SU(e)):bU(e)}function DU(e){return e==null||e==="null"?!1:(e=new URL(e),!!(e.protocol==="https:"||e.protocol==="wss:"||sB(e.hostname)||e.hostname==="localhost"||e.hostname==="localhost."||e.hostname.endsWith(".localhost")||e.hostname.endsWith(".localhost.")||e.protocol==="file:"))}function fr(e){return Fn.is.URL(e)?e.href==="about:blank"||e.href==="about:srcdoc"||e.protocol==="data:"||e.protocol==="blob:"?!0:DU(e.origin):!1}function TU(e){}function Qs(e,t){return e.origin===t.origin&&e.origin==="null"||e.protocol===t.protocol&&e.hostname===t.hostname&&e.port===t.port}function kU(e){return e.controller.state==="aborted"}function NU(e){return e.controller.state==="aborted"||e.controller.state==="terminated"}function MU(e){return sU[e.toLowerCase()]??e}var xU=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function iB(e,t,n=0,r=1){class o{#e;#t;#n;constructor(i,A){this.#e=i,this.#t=A,this.#n=0}next(){if(typeof this!="object"||this===null||!(#e in this))throw new TypeError(`'next' called on an object that does not implement interface ${e} Iterator.`);let i=this.#n,A=t(this.#e),a=A.length;if(i>=a)return{value:void 0,done:!0};let{[n]:c,[r]:d}=A[i];this.#n=i+1;let l;switch(this.#t){case"key":l=c;break;case"value":l=d;break;case"key+value":l=[c,d];break}return{value:l,done:!1}}}return delete o.prototype.constructor,Object.setPrototypeOf(o.prototype,xU),Object.defineProperties(o.prototype,{[Symbol.toStringTag]:{writable:!1,enumerable:!1,configurable:!0,value:`${e} Iterator`},next:{writable:!0,enumerable:!0,configurable:!0}}),function(s,i){return new o(s,i)}}function UU(e,t,n,r=0,o=1){let s=iB(e,n,r,o),i={keys:{writable:!0,enumerable:!0,configurable:!0,value:function(){return Fn.brandCheck(this,t),s(this,"key")}},values:{writable:!0,enumerable:!0,configurable:!0,value:function(){return Fn.brandCheck(this,t),s(this,"value")}},entries:{writable:!0,enumerable:!0,configurable:!0,value:function(){return Fn.brandCheck(this,t),s(this,"key+value")}},forEach:{writable:!0,enumerable:!0,configurable:!0,value:function(a,c=globalThis){if(Fn.brandCheck(this,t),Fn.argumentLengthCheck(arguments,1,`${e}.forEach`),typeof a!="function")throw new TypeError(`Failed to execute 'forEach' on '${e}': parameter 1 is not of type 'Function'.`);for(let{0:d,1:l}of s(this,"key+value"))a.call(c,l,d,this)}}};return Object.defineProperties(t.prototype,{...i,[Symbol.iterator]:{writable:!0,enumerable:!1,configurable:!0,value:i.entries.value}})}function LU(e,t,n){let r=t,o=n;try{let s=e.stream.getReader();AB(s,r,o)}catch(s){o(s)}}function FU(e){try{e.close(),e.byobRequest?.respond(0)}catch(t){if(!t.message.includes("Controller is already closed")&&!t.message.includes("ReadableStream is already closed"))throw t}}async function AB(e,t,n){try{let r=[],o=0;do{let{done:s,value:i}=await e.read();if(s){t(Buffer.concat(r,o));return}if(!iU(i)){n(new TypeError("Received non-Uint8Array chunk"));return}r.push(i),o+=i.length}while(!0)}catch(r){n(r)}}function aB(e){ws("protocol"in e);let t=e.protocol;return t==="about:"||t==="blob:"||t==="data:"}function qu(e){return typeof e=="string"&&e[5]===":"&&e[0]==="h"&&e[1]==="t"&&e[2]==="t"&&e[3]==="p"&&e[4]==="s"||e.protocol==="https:"}function cB(e){ws("protocol"in e);let t=e.protocol;return t==="http:"||t==="https:"}function _U(e,t){let n=e;if(!n.startsWith("bytes"))return"failure";let r={position:5};if(t&&gr(a=>a===" "||a===" ",n,r),n.charCodeAt(r.position)!==61)return"failure";r.position++,t&&gr(a=>a===" "||a===" ",n,r);let o=gr(a=>{let c=a.charCodeAt(0);return c>=48&&c<=57},n,r),s=o.length?Number(o):null;if(t&&gr(a=>a===" "||a===" ",n,r),n.charCodeAt(r.position)!==45)return"failure";r.position++,t&&gr(a=>a===" "||a===" ",n,r);let i=gr(a=>{let c=a.charCodeAt(0);return c>=48&&c<=57},n,r),A=i.length?Number(i):null;return r.position<n.length||A===null&&s===null||s>A?"failure":{rangeStartValue:s,rangeEndValue:A}}function PU(e,t,n){let r="bytes ";return r+=vu(`${e}`),r+="-",r+=vu(`${t}`),r+="/",r+=vu(`${n}`),r}var Gu=class extends jx{#e;constructor(t){super(),this.#e=t}_transform(t,n,r){if(!this._inflateStream){if(t.length===0){r();return}this._inflateStream=(t[0]&15)===8?$I.createInflate(this.#e):$I.createInflateRaw(this.#e),this._inflateStream.on("data",this.push.bind(this)),this._inflateStream.on("end",()=>this.push(null)),this._inflateStream.on("error",o=>this.destroy(o))}this._inflateStream.write(t,n,r)}_final(t){this._inflateStream&&(this._inflateStream.end(),this._inflateStream=null),t()}};function vU(e){return new Gu(e)}function OU(e){let t=null,n=null,r=null,o=dB("content-type",e);if(o===null)return"failure";for(let s of o){let i=nU(s);i==="failure"||i.essence==="*/*"||(r=i,r.essence!==n?(t=null,r.parameters.has("charset")&&(t=r.parameters.get("charset")),n=r.essence):!r.parameters.has("charset")&&t!==null&&r.parameters.set("charset",t))}return r??"failure"}function qU(e){let t=e,n={position:0},r=[],o="";for(;n.position<t.length;){if(o+=gr(s=>s!=='"'&&s!==",",t,n),n.position<t.length)if(t.charCodeAt(n.position)===34){if(o+=tU(t,n),n.position<t.length)continue}else ws(t.charCodeAt(n.position)===44),n.position++;o=AU(o,!0,!0,s=>s===9||s===32),r.push(o),o=""}return r}function dB(e,t){let n=t.get(e,!0);return n===null?null:qU(n)}function GU(e){return!1}function HU(e){return!!(e.username||e.password)}function YU(e){return e!=null&&e!=="client"&&e!=="no-traversable"}var Hu=class{get baseUrl(){return ZI()}get origin(){return this.baseUrl?.origin}policyContainer=oB()},Yu=class{settingsObject=new Hu},WU=new Yu;uB.exports={isAborted:kU,isCancelled:NU,isValidEncodedURL:nB,ReadableStreamFrom:oU,tryUpgradeRequestToAPotentiallyTrustworthyURL:TU,clampAndCoarsenConnectionTimingInfo:yU,coarsenedSharedCurrentTime:mU,determineRequestsReferrer:RU,makePolicyContainer:oB,clonePolicyContainer:wU,appendFetchMetadata:IU,appendRequestOriginHeader:BU,TAOCheck:CU,corsCheck:EU,crossOriginResourcePolicyCheck:hU,createOpaqueTimingInfo:QU,setRequestReferrerPolicyOnRedirect:pU,isValidHTTPToken:eB,requestBadPort:dU,requestCurrentURL:pr,responseURL:tB,responseLocationURL:aU,isURLPotentiallyTrustworthy:fr,isValidReasonPhrase:lU,sameOrigin:Qs,normalizeMethod:MU,iteratorMixin:UU,createIterator:iB,isValidHeaderName:gU,isValidHeaderValue:rB,isErrorLike:uU,fullyReadBody:LU,readableStreamClose:FU,urlIsLocal:aB,urlHasHttpsScheme:qu,urlIsHttpHttpsScheme:cB,readAllBytes:AB,simpleRangeHeaderValue:_U,buildContentRange:PU,createInflate:vU,extractMimeType:OU,getDecodeSplit:dB,environmentSettingsObject:WU,isOriginIPPotentiallyTrustworthy:sB,hasAuthenticationEntry:GU,includesCredentials:HU,isTraversableNavigable:YU}});var UA=m((d5,gB)=>{"use strict";var{iteratorMixin:VU}=At(),{kEnumerableProperty:go}=G(),{webidl:Z}=De(),lB=require("node:util"),fn=class e{#e=[];constructor(t=void 0){if(Z.util.markAsUncloneable(this),t!==void 0)throw Z.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]})}append(t,n,r=void 0){Z.brandCheck(this,e);let o="FormData.append";Z.argumentLengthCheck(arguments,2,o),t=Z.converters.USVString(t),arguments.length===3||Z.is.Blob(n)?(n=Z.converters.Blob(n,o,"value"),r!==void 0&&(r=Z.converters.USVString(r))):n=Z.converters.USVString(n);let s=Wu(t,n,r);this.#e.push(s)}delete(t){Z.brandCheck(this,e),Z.argumentLengthCheck(arguments,1,"FormData.delete"),t=Z.converters.USVString(t),this.#e=this.#e.filter(r=>r.name!==t)}get(t){Z.brandCheck(this,e),Z.argumentLengthCheck(arguments,1,"FormData.get"),t=Z.converters.USVString(t);let r=this.#e.findIndex(o=>o.name===t);return r===-1?null:this.#e[r].value}getAll(t){return Z.brandCheck(this,e),Z.argumentLengthCheck(arguments,1,"FormData.getAll"),t=Z.converters.USVString(t),this.#e.filter(r=>r.name===t).map(r=>r.value)}has(t){return Z.brandCheck(this,e),Z.argumentLengthCheck(arguments,1,"FormData.has"),t=Z.converters.USVString(t),this.#e.findIndex(r=>r.name===t)!==-1}set(t,n,r=void 0){Z.brandCheck(this,e);let o="FormData.set";Z.argumentLengthCheck(arguments,2,o),t=Z.converters.USVString(t),arguments.length===3||Z.is.Blob(n)?(n=Z.converters.Blob(n,o,"value"),r!==void 0&&(r=Z.converters.USVString(r))):n=Z.converters.USVString(n);let s=Wu(t,n,r),i=this.#e.findIndex(A=>A.name===t);i!==-1?this.#e=[...this.#e.slice(0,i),s,...this.#e.slice(i+1).filter(A=>A.name!==t)]:this.#e.push(s)}[lB.inspect.custom](t,n){let r=this.#e.reduce((s,i)=>(s[i.name]?Array.isArray(s[i.name])?s[i.name].push(i.value):s[i.name]=[s[i.name],i.value]:s[i.name]=i.value,s),{__proto__:null});n.depth??=t,n.colors??=!0;let o=lB.formatWithOptions(n,r);return`FormData ${o.slice(o.indexOf("]")+2)}`}static getFormDataState(t){return t.#e}static setFormDataState(t,n){t.#e=n}},{getFormDataState:JU,setFormDataState:zU}=fn;Reflect.deleteProperty(fn,"getFormDataState");Reflect.deleteProperty(fn,"setFormDataState");VU("FormData",fn,JU,"name","value");Object.defineProperties(fn.prototype,{append:go,delete:go,get:go,getAll:go,has:go,set:go,[Symbol.toStringTag]:{value:"FormData",configurable:!0}});function Wu(e,t,n){if(typeof t!="string"){if(Z.is.File(t)||(t=new File([t],"blob",{type:t.type})),n!==void 0){let r={type:t.type,lastModified:t.lastModified};t=new File([t],n,r)}}return{name:e,value:t}}Z.is.FormData=Z.util.MakeTypeAssertion(fn);gB.exports={FormData:fn,makeEntry:Wu,setFormDataState:zU}});var hB=m((u5,pB)=>{"use strict";var{bufferToLowerCasedHeaderName:KU}=G(),{HTTP_TOKEN_CODEPOINTS:XU}=It(),{makeEntry:jU}=UA(),{webidl:Vu}=De(),Ju=require("node:assert"),{isomorphicDecode:fB}=ln(),$U=Buffer.from("--"),zu=new TextDecoder,ZU=new TextDecoder("utf-8",{ignoreBOM:!0});function eL(e){for(let t=0;t<e.length;++t)if((e.charCodeAt(t)&-128)!==0)return!1;return!0}function tL(e){let t=e.length;if(t<27||t>70)return!1;for(let n=0;n<t;++n){let r=e.charCodeAt(n);if(!(r>=48&&r<=57||r>=65&&r<=90||r>=97&&r<=122||r===39||r===45||r===95))return!1}return!0}function nL(e,t){Ju(t!=="failure"&&t.essence==="multipart/form-data");let n=t.parameters.get("boundary");if(n===void 0)throw Je("missing boundary in content-type header");let r=Buffer.from(`--${n}`,"utf8"),o=[],s={position:0},i=e.indexOf(r);if(i===-1)throw Je("no boundary found in multipart body");for(s.position=i;;){if(e.subarray(s.position,s.position+r.length).equals(r))s.position+=r.length;else throw Je("expected a value starting with -- and the boundary");if(sL(e,$U,s))return o;if(e[s.position]!==13||e[s.position+1]!==10)throw Je("expected CRLF");s.position+=2;let A=oL(e,s),{name:a,filename:c,contentType:d,encoding:l}=A;s.position+=2;let u;{let h=e.indexOf(r.subarray(2),s.position);if(h===-1)throw Je("expected boundary after body");u=e.subarray(s.position,h-4),s.position+=u.length,l==="base64"&&(u=Buffer.from(u.toString(),"base64"))}if(e[s.position]!==13||e[s.position+1]!==10)throw Je("expected CRLF");s.position+=2;let g;c!==null?(d??="text/plain",eL(d)||(d=""),g=new File([u],c,{type:d})):g=ZU.decode(Buffer.from(u)),Ju(Vu.is.USVString(a)),Ju(typeof g=="string"&&Vu.is.USVString(g)||Vu.is.File(g)),o.push(jU(a,g,c))}}function rL(e,t){e[t.position]===59&&t.position++,Bt(i=>i===32||i===9,e,t);let n=Bt(i=>Xu(i)&&i!==61&&i!==42,e,t);if(n.length===0)return null;let r=n.toString("ascii").toLowerCase(),o=e[t.position]===42;if(o&&t.position++,e[t.position]!==61)return null;t.position++,Bt(i=>i===32||i===9,e,t);let s;if(o){let i=Bt(A=>A!==32&&A!==13&&A!==10&&A!==59,e,t);if(i[0]!==117&&i[0]!==85||i[1]!==116&&i[1]!==84||i[2]!==102&&i[2]!==70||i[3]!==45||i[4]!==56)throw Je("unknown encoding, expected utf-8''");s=decodeURIComponent(zu.decode(i.subarray(7)))}else if(e[t.position]===34){t.position++;let i=Bt(A=>A!==10&&A!==13&&A!==34,e,t);if(e[t.position]!==34)throw Je("Closing quote not found");t.position++,s=zu.decode(i).replace(/%0A/ig,`
|
|
3
|
+
`).replace(/%0D/ig,"\r").replace(/%22/g,'"')}else{let i=Bt(A=>Xu(A)&&A!==59,e,t);s=zu.decode(i)}return{name:r,value:s,extended:o}}function oL(e,t){let n=null,r=null,o=null,s=null;for(;;){if(e[t.position]===13&&e[t.position+1]===10){if(n===null)throw Je("header name is null");return{name:n,filename:r,contentType:o,encoding:s}}let i=Bt(A=>A!==10&&A!==13&&A!==58,e,t);if(i=Ku(i,!0,!0,A=>A===9||A===32),!XU.test(i.toString()))throw Je("header name does not match the field-name token production");if(e[t.position]!==58)throw Je("expected :");switch(t.position++,Bt(A=>A===32||A===9,e,t),KU(i)){case"content-disposition":{n=r=null;let A=!1;if(Bt(c=>Xu(c),e,t).toString("ascii").toLowerCase()!=="form-data")throw Je("expected form-data for content-disposition header");for(;t.position<e.length&&(e[t.position]!==13||e[t.position+1]!==10);){let c=rL(e,t);if(!c)break;c.name==="name"?n=c.value:c.name==="filename"&&(c.extended?(r=c.value,A=!0):A||(r=c.value))}if(n===null)throw Je("name attribute is required in content-disposition header");break}case"content-type":{let A=Bt(a=>a!==10&&a!==13,e,t);A=Ku(A,!1,!0,a=>a===9||a===32),o=fB(A);break}case"content-transfer-encoding":{let A=Bt(a=>a!==10&&a!==13,e,t);A=Ku(A,!1,!0,a=>a===9||a===32),s=fB(A);break}default:Bt(A=>A!==10&&A!==13,e,t)}if(e[t.position]!==13||e[t.position+1]!==10)throw Je("expected CRLF");t.position+=2}}function Bt(e,t,n){let r=n.position;for(;r<t.length&&e(t[r]);)++r;return t.subarray(n.position,n.position=r)}function Ku(e,t,n,r){let o=0,s=e.length-1;if(t)for(;o<e.length&&r(e[o]);)o++;if(n)for(;s>0&&r(e[s]);)s--;return o===0&&s===e.length-1?e:e.subarray(o,s+1)}function sL(e,t,n){if(e.length<t.length)return!1;for(let r=0;r<t.length;r++)if(t[r]!==e[n.position+r])return!1;return!0}function Je(e){return new TypeError("Failed to parse body as FormData.",{cause:new TypeError(e)})}function iL(e){return e<=31||e===127}function AL(e){return e===40||e===41||e===60||e===62||e===64||e===44||e===59||e===58||e===92||e===34||e===47||e===91||e===93||e===63||e===61}function Xu(e){return e<=127&&e!==32&&e!==9&&!iL(e)&&!AL(e)}pB.exports={multipartFormDataParser:nL,validateBoundary:tL}});var Rs=m((l5,EB)=>{"use strict";function aL(){let e,t;return{promise:new Promise((r,o)=>{e=r,t=o}),resolve:e,reject:t}}EB.exports={createDeferredPromise:aL}});var po=m((g5,mB)=>{"use strict";var Zu=G(),{ReadableStreamFrom:cL,readableStreamClose:dL,fullyReadBody:uL,extractMimeType:lL}=At(),{FormData:CB,setFormDataState:gL}=UA(),{webidl:Nt}=De(),ju=require("node:assert"),{isErrored:$u,isDisturbed:fL}=require("node:stream"),{isUint8Array:pL}=require("node:util/types"),{serializeAMimeType:hL}=It(),{multipartFormDataParser:EL}=hB(),{createDeferredPromise:CL}=Rs(),{parseJSONFromBytes:IL}=ln(),{utf8DecodeBytes:BL}=DA(),{runtimeFeatures:yL}=gn(),mL=yL.has("crypto")?require("node:crypto").randomInt:e=>Math.floor(Math.random()*e),LA=new TextEncoder;function QL(){}var wL=new FinalizationRegistry(e=>{let t=e.deref();t&&!t.locked&&!fL(t)&&!$u(t)&&t.cancel("Response object has been garbage collected").catch(QL)});function BB(e,t=!1){let n=null,r=null;Nt.is.ReadableStream(e)?n=e:Nt.is.Blob(e)?n=e.stream():n=new ReadableStream({pull(){},start(c){r=c},cancel(){},type:"bytes"}),ju(Nt.is.ReadableStream(n));let o=null,s=null,i=null,A=null;if(typeof e=="string")s=e,A="text/plain;charset=UTF-8";else if(Nt.is.URLSearchParams(e))s=e.toString(),A="application/x-www-form-urlencoded;charset=UTF-8";else if(Nt.is.BufferSource(e))s=Nt.util.getCopyOfBytesHeldByBufferSource(e);else if(Nt.is.FormData(e)){let c=`----formdata-undici-0${`${mL(1e11)}`.padStart(11,"0")}`,d=`--${c}\r
|
|
4
|
+
Content-Disposition: form-data`;let l=C=>C.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),u=C=>C.replace(/\r?\n|\r/g,`\r
|
|
5
|
+
`),g=[],h=new Uint8Array([13,10]);i=0;let E=!1;for(let[C,y]of e)if(typeof y=="string"){let Q=LA.encode(d+`; name="${l(u(C))}"\r
|
|
6
|
+
\r
|
|
7
|
+
${u(y)}\r
|
|
8
|
+
`);g.push(Q),i+=Q.byteLength}else{let Q=LA.encode(`${d}; name="${l(u(C))}"`+(y.name?`; filename="${l(y.name)}"`:"")+`\r
|
|
9
|
+
Content-Type: ${y.type||"application/octet-stream"}\r
|
|
10
|
+
\r
|
|
11
|
+
`);g.push(Q,y,h),typeof y.size=="number"?i+=Q.byteLength+y.size+h.byteLength:E=!0}let B=LA.encode(`--${c}--\r
|
|
12
|
+
`);g.push(B),i+=B.byteLength,E&&(i=null),s=e,o=async function*(){for(let C of g)C.stream?yield*C.stream():yield C},A=`multipart/form-data; boundary=${c}`}else if(Nt.is.Blob(e))s=e,i=e.size,e.type&&(A=e.type);else if(typeof e[Symbol.asyncIterator]=="function"){if(t)throw new TypeError("keepalive");if(Zu.isDisturbed(e)||e.locked)throw new TypeError("Response body object should not be disturbed or locked");n=Nt.is.ReadableStream(e)?e:cL(e)}return(typeof s=="string"||pL(s))&&(o=()=>(i=typeof s=="string"?Buffer.byteLength(s):s.length,s)),o!=null&&(async()=>{let c=o(),d=c?.[Symbol.asyncIterator]?.();if(d)for await(let l of d){if($u(n))break;l.length&&r.enqueue(new Uint8Array(l))}else c?.length&&!$u(n)&&r.enqueue(typeof c=="string"?LA.encode(c):new Uint8Array(c));queueMicrotask(()=>dL(r))})(),[{stream:n,source:s,length:i},A]}function RL(e,t=!1){return Nt.is.ReadableStream(e)&&(ju(!Zu.isDisturbed(e),"The body has already been consumed."),ju(!e.locked,"The stream is locked.")),BB(e,t)}function bL(e){let{0:t,1:n}=e.stream.tee();return e.stream=t,{stream:n,length:e.length,source:e.source}}function SL(e,t){return{blob(){return fo(this,r=>{let o=IB(t(this));return o===null?o="":o&&(o=hL(o)),new Blob([r],{type:o})},e,t)},arrayBuffer(){return fo(this,r=>new Uint8Array(r).buffer,e,t)},text(){return fo(this,BL,e,t)},json(){return fo(this,IL,e,t)},formData(){return fo(this,r=>{let o=IB(t(this));if(o!==null)switch(o.essence){case"multipart/form-data":{let s=EL(r,o),i=new CB;return gL(i,s),i}case"application/x-www-form-urlencoded":{let s=new URLSearchParams(r.toString()),i=new CB;for(let[A,a]of s)i.append(A,a);return i}}throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')},e,t)},bytes(){return fo(this,r=>new Uint8Array(r),e,t)}}}function DL(e,t){Object.assign(e.prototype,SL(e,t))}function fo(e,t,n,r){try{Nt.brandCheck(e,n)}catch(A){return Promise.reject(A)}if(e=r(e),yB(e))return Promise.reject(new TypeError("Body is unusable: Body has already been read"));let o=CL(),s=o.reject,i=A=>{try{o.resolve(t(A))}catch(a){s(a)}};return e.body==null?(i(Buffer.allocUnsafe(0)),o.promise):(uL(e.body,i,s),o.promise)}function yB(e){let t=e.body;return t!=null&&(t.stream.locked||Zu.isDisturbed(t.stream))}function IB(e){let t=e.headersList,n=lL(t);return n==="failure"?null:n}mB.exports={extractBody:BB,safelyExtractBody:RL,cloneBody:bL,mixinBody:DL,streamRegistry:wL,bodyUnusable:yB}});var _B=m((f5,FB)=>{"use strict";var v=require("node:assert"),P=G(),{channels:QB}=Un(),el=Ud(),{RequestContentLengthMismatchError:hr,ResponseContentLengthMismatchError:wB,RequestAbortedError:MB,InvalidArgumentError:TL,HeadersTimeoutError:kL,HeadersOverflowError:NL,SocketError:Er,InformationalError:ho,BodyTimeoutError:ML,HTTPParserError:xL,ResponseExceededMaxSizeError:UL}=q(),{kUrl:xB,kReset:ze,kClient:OA,kParser:ae,kBlocking:Ds,kRunning:ye,kPending:Al,kSize:RB,kWriting:_n,kQueue:Mt,kNoRef:bs,kKeepAliveDefaultTimeout:LL,kHostHeader:FL,kPendingIdx:_L,kRunningIdx:yt,kError:Oe,kPipelining:PA,kSocket:Ir,kKeepAliveTimeoutValue:qA,kMaxHeadersSize:PL,kKeepAliveMaxTimeout:vL,kKeepAliveTimeoutThreshold:OL,kHeadersTimeout:qL,kBodyTimeout:GL,kStrictContentLength:rl,kMaxRequests:bB,kCounter:HL,kMaxResponseSize:YL,kOnError:SB,kResume:pn,kHTTPContext:UB,kClosed:ol}=ne(),at=mI(),DB=Buffer.alloc(0),FA=Buffer[Symbol.species],WL=P.removeAllListeners,Br=Symbol("kIdleSocketValidation"),Cr=Symbol("kIdleSocketValidationTimeout"),al=Symbol("kSocketUsed"),tl;function VL(){let e=process.env.JEST_WORKER_ID?Su():void 0,t,n=process.arch!=="ppc64";if(process.env.UNDICI_NO_WASM_SIMD==="1"?n=!1:process.env.UNDICI_NO_WASM_SIMD==="0"&&(n=!0),n)try{t=new WebAssembly.Module(RI())}catch{}return t||(t=new WebAssembly.Module(e||Su())),new WebAssembly.Instance(t,{env:{wasm_on_url:(r,o,s)=>0,wasm_on_status:(r,o,s)=>{v(Ee.ptr===r);let i=o-Wt+Yt.byteOffset;return Ee.onStatus(new FA(Yt.buffer,i,s))},wasm_on_message_begin:r=>(v(Ee.ptr===r),Ee.onMessageBegin()),wasm_on_header_field:(r,o,s)=>{v(Ee.ptr===r);let i=o-Wt+Yt.byteOffset;return Ee.onHeaderField(new FA(Yt.buffer,i,s))},wasm_on_header_value:(r,o,s)=>{v(Ee.ptr===r);let i=o-Wt+Yt.byteOffset;return Ee.onHeaderValue(new FA(Yt.buffer,i,s))},wasm_on_headers_complete:(r,o,s,i)=>(v(Ee.ptr===r),Ee.onHeadersComplete(o,s===1,i===1)),wasm_on_body:(r,o,s)=>{v(Ee.ptr===r);let i=o-Wt+Yt.byteOffset;return Ee.onBody(new FA(Yt.buffer,i,s))},wasm_on_message_complete:r=>(v(Ee.ptr===r),Ee.onMessageComplete())}})}var nl=null,Ee=null,Yt=null,_A=0,Wt=null,JL=0,Ss=1,Eo=2|Ss,vA=4|Ss,sl=8|JL,il=class{constructor(t,n,{exports:r}){this.llhttp=r,this.ptr=this.llhttp.llhttp_alloc(at.TYPE.RESPONSE),this.client=t,this.socket=n,this.timeout=null,this.timeoutWeakRef=new WeakRef(this),this.timeoutValue=null,this.timeoutType=null,this.statusCode=0,this.statusText="",this.upgrade=!1,this.headers=[],this.headersSize=0,this.headersMaxSize=t[PL],this.shouldKeepAlive=!1,this.paused=!1,this.resume=this.resume.bind(this),this.bytesRead=0,this.keepAlive="",this.contentLength="",this.connection="",this.maxResponseSize=t[YL]}setTimeout(t,n){t!==this.timeoutValue||n&Ss^this.timeoutType&Ss?(this.timeout&&(el.clearTimeout(this.timeout),this.timeout=null),t&&(n&Ss?this.timeout=el.setFastTimeout(TB,t,this.timeoutWeakRef):(this.timeout=setTimeout(TB,t,this.timeoutWeakRef),this.timeout?.unref())),this.timeoutValue=t):this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.timeoutType=n}resume(){this.socket.destroyed||!this.paused||(v(this.ptr!=null),v(Ee===null),this.llhttp.llhttp_resume(this.ptr),v(this.timeoutType===vA),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.paused=!1,this.execute(this.socket.read()||DB),this.readMore())}readMore(){for(;!this.paused&&this.ptr;){let t=this.socket.read();if(t===null)break;this.execute(t)}}execute(t){v(Ee===null),v(this.ptr!=null),v(!this.paused);let{socket:n,llhttp:r}=this;t.length>_A&&(Wt&&r.free(Wt),_A=Math.ceil(t.length/4096)*4096,Wt=r.malloc(_A)),new Uint8Array(r.memory.buffer,Wt,_A).set(t);try{let o;try{Yt=t,Ee=this,o=r.llhttp_execute(this.ptr,Wt,t.length)}finally{Ee=null,Yt=null}if(o!==at.ERROR.OK){let s=t.subarray(r.llhttp_get_error_pos(this.ptr)-Wt);if(o===at.ERROR.PAUSED_UPGRADE)this.onUpgrade(s);else if(o===at.ERROR.PAUSED)this.paused=!0,n.unshift(s);else throw this.createError(o,s)}}catch(o){P.destroy(n,o)}}finish(){v(Ee===null),v(this.ptr!=null),v(!this.paused);let{llhttp:t}=this,n;try{Ee=this,n=t.llhttp_finish(this.ptr)}finally{Ee=null}return n===at.ERROR.OK?null:n===at.ERROR.PAUSED||n===at.ERROR.PAUSED_UPGRADE?(this.paused=!0,null):this.createError(n,DB)}createError(t,n){let{llhttp:r,contentLength:o,bytesRead:s}=this;if(o&&s!==parseInt(o,10))return new wB;let i=r.llhttp_get_error_reason(this.ptr),A="";if(i){let a=new Uint8Array(r.memory.buffer,i).indexOf(0);A="Response does not match the HTTP/1.1 protocol ("+Buffer.from(r.memory.buffer,i,a).toString()+")"}return new xL(A,at.ERROR[t],n)}destroy(){v(Ee===null),v(this.ptr!=null),this.llhttp.llhttp_free(this.ptr),this.ptr=null,this.timeout&&el.clearTimeout(this.timeout),this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.paused=!1}onStatus(t){return this.statusText=t.toString(),0}onMessageBegin(){let{socket:t,client:n}=this;if(t.destroyed)return-1;if(n[ye]===0)return P.destroy(t,new Er("bad response",P.getSocketInfo(t))),-1;let r=n[Mt][n[yt]];return r?(r.onResponseStarted(),0):-1}onHeaderField(t){let n=this.headers.length;return(n&1)===0?this.headers.push(t):this.headers[n-1]=Buffer.concat([this.headers[n-1],t]),this.trackHeader(t.length),0}onHeaderValue(t){let n=this.headers.length;(n&1)===1?(this.headers.push(t),n+=1):this.headers[n-1]=Buffer.concat([this.headers[n-1],t]);let r=this.headers[n-2];if(r.length===10){let o=P.bufferToLowerCasedHeaderName(r);o==="keep-alive"?this.keepAlive+=t.toString():o==="connection"&&(this.connection+=t.toString())}else r.length===14&&P.bufferToLowerCasedHeaderName(r)==="content-length"&&(this.contentLength+=t.toString());return this.trackHeader(t.length),0}trackHeader(t){this.headersSize+=t,this.headersSize>=this.headersMaxSize&&P.destroy(this.socket,new NL)}onUpgrade(t){let{upgrade:n,client:r,socket:o,headers:s,statusCode:i}=this;v(n),v(r[Ir]===o),v(!o.destroyed),v(!this.paused),v((s.length&1)===0);let A=r[Mt][r[yt]];v(A),v(A.upgrade||A.method==="CONNECT"),this.statusCode=0,this.statusText="",this.shouldKeepAlive=!1,this.headers=[],this.headersSize=0,o.unshift(t),o[ae].destroy(),o[ae]=null,o[OA]=null,o[Oe]=null,WL(o),r[Ir]=null,r[UB]=null,r[Mt][r[yt]++]=null,r.emit("disconnect",r[xB],[r],new ho("upgrade"));try{A.onUpgrade(i,s,o)}catch(a){P.destroy(o,a)}r[pn]()}onHeadersComplete(t,n,r){let{client:o,socket:s,headers:i,statusText:A}=this;if(s.destroyed)return-1;if(o[ye]===0)return P.destroy(s,new Er("bad response",P.getSocketInfo(s))),-1;let a=o[Mt][o[yt]];if(!a)return-1;if(v(!this.upgrade),v(this.statusCode<200),t===100)return P.destroy(s,new Er("bad response",P.getSocketInfo(s))),-1;if(n&&!a.upgrade)return P.destroy(s,new Er("bad upgrade",P.getSocketInfo(s))),-1;if(v(this.timeoutType===Eo),this.statusCode=t,this.shouldKeepAlive=r||a.method==="HEAD"&&!s[ze]&&this.connection.toLowerCase()==="keep-alive",this.statusCode>=200){let d=a.bodyTimeout!=null?a.bodyTimeout:o[GL];this.setTimeout(d,vA)}else this.timeout&&this.timeout.refresh&&this.timeout.refresh();if(a.method==="CONNECT")return v(o[ye]===1),this.upgrade=!0,2;if(n)return v(o[ye]===1),this.upgrade=!0,2;if(v((this.headers.length&1)===0),this.headers=[],this.headersSize=0,this.shouldKeepAlive&&o[PA]){let d=this.keepAlive?P.parseKeepAliveTimeout(this.keepAlive):null;if(d!=null){let l=Math.min(d-o[OL],o[vL]);l<=0?s[ze]=!0:o[qA]=l}else o[qA]=o[LL]}else s[ze]=!0;let c=a.onHeaders(t,i,this.resume,A)===!1;return a.aborted?-1:a.method==="HEAD"||t<200?1:(s[Ds]&&(s[Ds]=!1,o[pn]()),c?at.ERROR.PAUSED:0)}onBody(t){let{client:n,socket:r,statusCode:o,maxResponseSize:s}=this;if(r.destroyed)return-1;let i=n[Mt][n[yt]];return v(i),v(this.timeoutType===vA),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),v(o>=200),s>-1&&this.bytesRead+t.length>s?(P.destroy(r,new UL),-1):(this.bytesRead+=t.length,i.onData(t)===!1?at.ERROR.PAUSED:0)}onMessageComplete(){let{client:t,socket:n,statusCode:r,upgrade:o,headers:s,contentLength:i,bytesRead:A,shouldKeepAlive:a}=this;if(n.destroyed&&(!r||a))return-1;if(o)return 0;v(r>=100),v((this.headers.length&1)===0);let c=t[Mt][t[yt]];if(v(c),this.statusCode=0,this.statusText="",this.bytesRead=0,this.contentLength="",this.keepAlive="",this.connection="",this.headers=[],this.headersSize=0,r<200)return 0;if(c.method!=="HEAD"&&i&&A!==parseInt(i,10))return P.destroy(n,new wB),-1;if(c.onComplete(s),t[Mt][t[yt]++]=null,n[al]=t[Al]===0,n[_n])return v(t[ye]===0),P.destroy(n,new ho("reset")),at.ERROR.PAUSED;if(a){if(n[ze]&&t[ye]===0)return P.destroy(n,new ho("reset")),at.ERROR.PAUSED;t[PA]==null||t[PA]===1?setImmediate(t[pn]):t[pn]()}else return P.destroy(n,new ho("reset")),at.ERROR.PAUSED;return 0}};function TB(e){let t=e.deref();if(!t)return;let{socket:n,timeoutType:r,client:o,paused:s}=t;r===Eo?(!n[_n]||n.writableNeedDrain||o[ye]>1)&&(v(!s,"cannot be paused while waiting for headers"),P.destroy(n,new kL)):r===vA?s||P.destroy(n,new ML):r===sl&&(v(o[ye]===0&&o[qA]),P.destroy(n,new ho("socket idle timeout")))}function zL(e,t){if(e[Ir]=t,nl||(nl=VL()),t.errored)throw t.errored;if(t.destroyed)throw new Er("destroyed");return t[bs]=!1,t[_n]=!1,t[ze]=!1,t[Ds]=!1,t[Br]=0,t[Cr]=null,t[al]=!1,t[ae]=new il(e,t,nl),P.addListener(t,"error",KL),P.addListener(t,"readable",XL),P.addListener(t,"end",jL),P.addListener(t,"close",$L),t[ol]=!1,t.on("close",ZL),{version:"h1",defaultPipelining:1,write(n){return rF(e,n)},resume(){tF(e)},destroy(n,r){t[ol]?queueMicrotask(r):(t.on("close",r),t.destroy(n))},get destroyed(){return t.destroyed},busy(n){return!!(t[_n]||t[ze]||t[Ds]||t[Br]===1||n&&(e[ye]>0&&!n.idempotent||e[ye]>0&&(n.upgrade||n.method==="CONNECT")||e[ye]>0&&P.bodyLength(n.body)!==0&&(P.isStream(n.body)||P.isAsyncIterable(n.body)||P.isFormDataLike(n.body))))}}}function KL(e){v(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID");let t=this[ae];if(e.code==="ECONNRESET"&&t.statusCode&&!t.shouldKeepAlive){let n=t.finish();n&&(this[Oe]=n,this[OA][SB](n));return}this[Oe]=e,this[OA][SB](e)}function XL(){this[ae]?.readMore()}function jL(){let e=this[ae];if(e.statusCode&&!e.shouldKeepAlive){let t=e.finish();t&&P.destroy(this,t);return}P.destroy(this,new Er("other side closed",P.getSocketInfo(this)))}function $L(){let e=this[ae];LB(this),e&&(!this[Oe]&&e.statusCode&&!e.shouldKeepAlive&&(this[Oe]=e.finish()||this[Oe]),this[ae].destroy(),this[ae]=null);let t=this[Oe]||new Er("closed",P.getSocketInfo(this)),n=this[OA];if(n[Ir]=null,n[UB]=null,n.destroyed){v(n[Al]===0);let r=n[Mt].splice(n[yt]);for(let o=0;o<r.length;o++){let s=r[o];P.errorRequest(n,s,t)}}else if(n[ye]>0&&t.code!=="UND_ERR_INFO"){let r=n[Mt][n[yt]];n[Mt][n[yt]++]=null,P.errorRequest(n,r,t)}n[_L]=n[yt],v(n[ye]===0),n.emit("disconnect",n[xB],[n],t),n[pn]()}function ZL(){this[ol]=!0}function LB(e){e[Cr]&&(clearTimeout(e[Cr]),e[Cr]=null),e[Br]=0}function eF(e,t){t[Br]=1,t[Cr]=setTimeout(()=>{t[Cr]=null,t[Br]=2,e[Ir]===t&&!t.destroyed&&e[pn]()},0),t[Cr].unref?.()}function tF(e){let t=e[Ir];if(t&&!t.destroyed){if(e[RB]===0?!t[bs]&&t.unref&&(t.unref(),t[bs]=!0):t[bs]&&t.ref&&(t.ref(),t[bs]=!1),e[ye]===0&&e[Al]>0&&t[al]){if(t[Br]===0)return eF(e,t),t[ae].readMore(),t.destroyed,void 0;if(t[Br]===1)return t[ae].readMore(),t.destroyed,void 0}if(e[ye]===0&&(t[ae].readMore(),t.destroyed))return;if(e[RB]===0)t[ae].timeoutType!==sl&&t[ae].setTimeout(e[qA],sl);else if(e[ye]>0&&t[ae].statusCode<200&&t[ae].timeoutType!==Eo){let n=e[Mt][e[yt]],r=n.headersTimeout!=null?n.headersTimeout:e[qL];t[ae].setTimeout(r,Eo)}}}function nF(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function rF(e,t){let{method:n,path:r,host:o,upgrade:s,blocking:i,reset:A}=t,{body:a,headers:c,contentLength:d}=t,l=n==="PUT"||n==="POST"||n==="PATCH"||n==="QUERY"||n==="PROPFIND"||n==="PROPPATCH";if(P.isFormDataLike(a)){tl||(tl=po().extractBody);let[B,C]=tl(a);t.contentType==null&&c.push("content-type",C),a=B.stream,d=B.length}else if(P.isBlobLike(a)&&t.contentType==null){let B=a.type;if(B){let C=`${B}`;if(!P.isValidHeaderValue(C))return P.errorRequest(e,t,new TL("invalid content-type header")),!1;c.push("content-type",C)}}a&&typeof a.read=="function"&&a.read(0);let u=P.bodyLength(a);if(d=u??d,d===null&&(d=t.contentLength),d===0&&!l&&(d=null),nF(n)&&d>0&&t.contentLength!==null&&t.contentLength!==d){if(e[rl])return P.errorRequest(e,t,new hr),!1;process.emitWarning(new hr)}let g=e[Ir];LB(g);let h=B=>{t.aborted||t.completed||(P.errorRequest(e,t,B||new MB),P.destroy(a),P.destroy(g,new ho("aborted")))};try{t.onConnect(h)}catch(B){P.errorRequest(e,t,B)}if(t.aborted)return!1;n==="HEAD"&&(g[ze]=!0),(s||n==="CONNECT")&&(g[ze]=!0),A!=null&&(g[ze]=A),e[bB]&&g[HL]++>=e[bB]&&(g[ze]=!0),i&&(g[Ds]=!0),g.setTypeOfService&&g.setTypeOfService(t.typeOfService);let E=`${n} ${r} HTTP/1.1\r
|
|
13
|
+
`;if(typeof o=="string"?E+=`host: ${o}\r
|
|
14
|
+
`:E+=e[FL],s?E+=`connection: upgrade\r
|
|
15
|
+
upgrade: ${s}\r
|
|
16
|
+
`:e[PA]&&!g[ze]?E+=`connection: keep-alive\r
|
|
17
|
+
`:E+=`connection: close\r
|
|
18
|
+
`,Array.isArray(c))for(let B=0;B<c.length;B+=2){let C=c[B+0],y=c[B+1];if(Array.isArray(y))for(let Q=0;Q<y.length;Q++)E+=`${C}: ${y[Q]}\r
|
|
19
|
+
`;else E+=`${C}: ${y}\r
|
|
20
|
+
`}return QB.sendHeaders.hasSubscribers&&QB.sendHeaders.publish({request:t,headers:E,socket:g}),!a||u===0?kB(h,null,e,t,g,d,E,l):P.isBuffer(a)?kB(h,a,e,t,g,d,E,l):P.isBlobLike(a)?typeof a.stream=="function"?NB(h,a.stream(),e,t,g,d,E,l):sF(h,a,e,t,g,d,E,l):P.isStream(a)?oF(h,a,e,t,g,d,E,l):P.isIterable(a)?NB(h,a,e,t,g,d,E,l):v(!1),!0}function oF(e,t,n,r,o,s,i,A){v(s!==0||n[ye]===0,"stream body cannot be pipelined");let a=!1,c=new GA({abort:e,socket:o,request:r,contentLength:s,client:n,expectsPayload:A,header:i}),d=function(h){if(!a)try{!c.write(h)&&this.pause&&this.pause()}catch(E){P.destroy(this,E)}},l=function(){a||t.resume&&t.resume()},u=function(){if(queueMicrotask(()=>{t.removeListener("error",g)}),!a){let h=new MB;queueMicrotask(()=>g(h))}},g=function(h){if(!a){if(a=!0,v(o.destroyed||o[_n]&&n[ye]<=1),o.off("drain",l).off("error",g),t.removeListener("data",d).removeListener("end",g).removeListener("close",u),!h)try{c.end()}catch(E){h=E}c.destroy(h),h&&(h.code!=="UND_ERR_INFO"||h.message!=="reset")?P.destroy(t,h):P.destroy(t)}};t.on("data",d).on("end",g).on("error",g).on("close",u),t.resume&&t.resume(),o.on("drain",l).on("error",g),t.errorEmitted??t.errored?setImmediate(g,t.errored):(t.endEmitted??t.readableEnded)&&setImmediate(g,null),(t.closeEmitted??t.closed)&&setImmediate(u)}function kB(e,t,n,r,o,s,i,A){try{t?P.isBuffer(t)&&(v(s===t.byteLength,"buffer body must have content length"),o.cork(),o.write(`${i}content-length: ${s}\r
|
|
21
|
+
\r
|
|
22
|
+
`,"latin1"),o.write(t),o.uncork(),r.onBodySent(t),!A&&r.reset!==!1&&(o[ze]=!0)):s===0?o.write(`${i}content-length: 0\r
|
|
23
|
+
\r
|
|
24
|
+
`,"latin1"):(v(s===null,"no body must not have content length"),o.write(`${i}\r
|
|
25
|
+
`,"latin1")),r.onRequestSent(),n[pn]()}catch(a){e(a)}}async function sF(e,t,n,r,o,s,i,A){v(s===t.size,"blob body must have content length");try{if(s!=null&&s!==t.size)throw new hr;let a=Buffer.from(await t.arrayBuffer());o.cork(),o.write(`${i}content-length: ${s}\r
|
|
26
|
+
\r
|
|
27
|
+
`,"latin1"),o.write(a),o.uncork(),r.onBodySent(a),r.onRequestSent(),!A&&r.reset!==!1&&(o[ze]=!0),n[pn]()}catch(a){e(a)}}async function NB(e,t,n,r,o,s,i,A){v(s!==0||n[ye]===0,"iterator body cannot be pipelined");let a=null;function c(){if(a){let u=a;a=null,u()}}let d=()=>new Promise((u,g)=>{v(a===null),o[Oe]?g(o[Oe]):a=u});o.on("close",c).on("drain",c);let l=new GA({abort:e,socket:o,request:r,contentLength:s,client:n,expectsPayload:A,header:i});try{for await(let u of t){if(o[Oe])throw o[Oe];l.write(u)||await d()}l.end()}catch(u){l.destroy(u)}finally{o.off("close",c).off("drain",c)}}var GA=class{constructor({abort:t,socket:n,request:r,contentLength:o,client:s,expectsPayload:i,header:A}){this.socket=n,this.request=r,this.contentLength=o,this.client=s,this.bytesWritten=0,this.expectsPayload=i,this.header=A,this.abort=t,n[_n]=!0}write(t){let{socket:n,request:r,contentLength:o,client:s,bytesWritten:i,expectsPayload:A,header:a}=this;if(n[Oe])throw n[Oe];if(n.destroyed)return!1;let c=Buffer.byteLength(t);if(!c)return!0;if(o!==null&&i+c>o){if(s[rl])throw new hr;process.emitWarning(new hr)}n.cork(),i===0&&(!A&&r.reset!==!1&&(n[ze]=!0),o===null?n.write(`${a}transfer-encoding: chunked\r
|
|
28
|
+
`,"latin1"):n.write(`${a}content-length: ${o}\r
|
|
29
|
+
\r
|
|
30
|
+
`,"latin1")),o===null&&n.write(`\r
|
|
31
|
+
${c.toString(16)}\r
|
|
32
|
+
`,"latin1"),this.bytesWritten+=c;let d=n.write(t);return n.uncork(),r.onBodySent(t),d||n[ae].timeout&&n[ae].timeoutType===Eo&&n[ae].timeout.refresh&&n[ae].timeout.refresh(),d}end(){let{socket:t,contentLength:n,client:r,bytesWritten:o,expectsPayload:s,header:i,request:A}=this;if(A.onRequestSent(),t[_n]=!1,t[Oe])throw t[Oe];if(!t.destroyed){if(o===0?s?t.write(`${i}content-length: 0\r
|
|
33
|
+
\r
|
|
34
|
+
`,"latin1"):t.write(`${i}\r
|
|
35
|
+
`,"latin1"):n===null&&t.write(`\r
|
|
36
|
+
0\r
|
|
37
|
+
\r
|
|
38
|
+
`,"latin1"),n!==null&&o!==n){if(r[rl])throw new hr;process.emitWarning(new hr)}t[ae].timeout&&t[ae].timeoutType===Eo&&t[ae].timeout.refresh&&t[ae].timeout.refresh(),r[pn]()}}destroy(t){let{socket:n,client:r,abort:o}=this;n[_n]=!1,t&&(v(r[ye]<=1,"pipeline should only contain this request"),o(t))}};FB.exports=zL});var VB=m((p5,WB)=>{"use strict";var Qt=require("node:assert"),{pipeline:iF}=require("node:stream"),Y=G(),{RequestContentLengthMismatchError:ll,RequestAbortedError:AF,SocketError:Ms,InformationalError:Pn,InvalidArgumentError:aF}=q(),{kUrl:Ns,kReset:VA,kClient:ct,kRunning:xs,kPending:cF,kQueue:vn,kPendingIdx:fl,kRunningIdx:xt,kError:dt,kSocket:ge,kStrictContentLength:dF,kOnError:Co,kMaxConcurrentStreams:YA,kPingInterval:PB,kHTTP2Session:hn,kHTTP2InitialWindowSize:uF,kHTTP2ConnectionWindowSize:lF,kResume:Vt,kSize:gF,kHTTPContext:pl,kClosed:gl,kBodyTimeout:fF,kEnableConnectProtocol:Ts,kRemoteSettings:ks,kHTTP2Stream:HA,kHTTP2SessionState:hl}=ne(),{channels:vB}=Un(),mt=Symbol("open streams"),OB,WA;try{WA=require("node:http2")}catch{WA={constants:{}}}var{constants:{HTTP2_HEADER_AUTHORITY:pF,HTTP2_HEADER_METHOD:qB,HTTP2_HEADER_PATH:GB,HTTP2_HEADER_SCHEME:cl,HTTP2_HEADER_CONTENT_LENGTH:hF,HTTP2_HEADER_EXPECT:EF,HTTP2_HEADER_STATUS:dl,HTTP2_HEADER_PROTOCOL:CF,NGHTTP2_REFUSED_STREAM:IF,NGHTTP2_CANCEL:BF}}=WA;function ul(e){let t=[];for(let[n,r]of Object.entries(e))if(Array.isArray(r))for(let o of r)t.push(Buffer.from(n),Buffer.from(o));else t.push(Buffer.from(n),Buffer.from(r));return t}function yF(e,t){e[ge]=t;let n=e[uF],r=e[lF],o=WA.connect(e[Ns],{createConnection:()=>t,peerMaxConcurrentStreams:e[YA],settings:{enablePush:!1,...n!=null?{initialWindowSize:n}:null}});return e[ge]=t,o[mt]=0,o[ct]=e,o[ge]=t,o[hl]={ping:{interval:e[PB]===0?null:setInterval(RF,e[PB],o).unref()}},o[Ts]=!1,o[ks]=!1,r&&Y.addListener(o,"connect",QF.bind(o,r)),Y.addListener(o,"error",bF),Y.addListener(o,"frameError",SF),Y.addListener(o,"end",DF),Y.addListener(o,"goaway",TF),Y.addListener(o,"close",kF),Y.addListener(o,"remoteSettings",wF),o.unref(),e[hn]=o,t[hn]=o,Y.addListener(t,"error",MF),Y.addListener(t,"end",xF),Y.addListener(t,"close",NF),t[gl]=!1,t.on("close",UF),{version:"h2",defaultPipelining:1/0,write(s){return FF(e,s)},resume(){mF(e)},destroy(s,i){t[gl]?queueMicrotask(i):t.destroy(s).on("close",i)},get destroyed(){return t.destroyed},busy(s){if(s!=null)if(e[xs]>0){if(s.idempotent===!1||(s.upgrade==="websocket"||s.method==="CONNECT")&&o[ks]===!1||Y.bodyLength(s.body)!==0&&(Y.isStream(s.body)||Y.isAsyncIterable(s.body)||Y.isFormDataLike(s.body)))return!0}else return(s.upgrade==="websocket"||s.method==="CONNECT")&&o[ks]===!1;return!1}}}function mF(e){let t=e[ge];t?.destroyed===!1&&(e[gF]===0||e[YA]===0?(t.unref(),e[hn].unref()):(t.ref(),e[hn].ref()))}function QF(e){try{typeof this.setLocalWindowSize=="function"&&this.setLocalWindowSize(e)}catch{}}function wF(e){if(this[ct][YA]=e.maxConcurrentStreams??this[ct][YA],this[ks]===!0&&this[Ts]===!0&&e.enableConnectProtocol===!1){let t=new Pn("HTTP/2: Server disabled extended CONNECT protocol against RFC-8441");this[ge][dt]=t,this[ct][Co](t);return}this[Ts]=e.enableConnectProtocol??this[Ts],this[ks]=!0,this[ct][Vt]()}function RF(e){let t=e[hl];if((e.closed||e.destroyed)&&t.ping.interval!=null){clearInterval(t.ping.interval),t.ping.interval=null;return}e.ping(n.bind(e));function n(r,o){let s=this[ct],i=this[ct];if(r!=null){let A=new Pn(`HTTP/2: "PING" errored - type ${r.message}`);i[dt]=A,s[Co](A)}else s.emit("ping",o)}}function bF(e){Qt(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[ge][dt]=e,this[ct][Co](e)}function SF(e,t,n){if(n===0){let r=new Pn(`HTTP/2: "frameError" received - type ${e}, code ${t}`);this[ge][dt]=r,this[ct][Co](r)}}function DF(){let e=new Ms("other side closed",Y.getSocketInfo(this[ge]));this.destroy(e),Y.destroy(this[ge],e)}function TF(e){let t=this[dt]||new Ms(`HTTP/2: "GOAWAY" frame received with code ${e}`,Y.getSocketInfo(this[ge])),n=this[ct];if(n[ge]=null,n[pl]=null,this.close(),this[hn]=null,Y.destroy(this[ge],t),n[xt]<n[vn].length){let r=n[vn][n[xt]];n[vn][n[xt]++]=null,Y.errorRequest(n,r,t),n[fl]=n[xt]}Qt(n[xs]===0),n.emit("disconnect",n[Ns],[n],t),n.emit("connectionError",n[Ns],[n],t),n[Vt]()}function kF(){let{[ct]:e,[hl]:t}=this,{[ge]:n}=e,r=this[ge][dt]||this[dt]||new Ms("closed",Y.getSocketInfo(n));if(e[ge]=null,e[pl]=null,t.ping.interval!=null&&(clearInterval(t.ping.interval),t.ping.interval=null),e.destroyed){Qt(e[cF]===0);let o=e[vn].splice(e[xt]);for(let s=0;s<o.length;s++){let i=o[s];Y.errorRequest(e,i,r)}}}function NF(){let e=this[dt]||new Ms("closed",Y.getSocketInfo(this)),t=this[hn][ct];t[ge]=null,t[pl]=null,this[hn]!==null&&this[hn].destroy(e),t[fl]=t[xt],Qt(t[xs]===0),t.emit("disconnect",t[Ns],[t],e),t[Vt]()}function MF(e){Qt(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[dt]=e,this[ct][Co](e)}function xF(){Y.destroy(this,new Ms("other side closed",Y.getSocketInfo(this)))}function UF(){this[gl]=!0}function LF(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function FF(e,t){let n=t.bodyTimeout??e[fF],r=e[hn],{method:o,path:s,host:i,upgrade:A,expectContinue:a,signal:c,protocol:d,headers:l}=t,{body:u}=t;if(A!=null&&A!=="websocket")return Y.errorRequest(e,t,new aF(`Custom upgrade "${A}" not supported over HTTP/2`)),!1;let g={};for(let N=0;N<l.length;N+=2){let M=l[N+0],U=l[N+1];if(M==="cookie"){g[M]!=null?g[M]=Array.isArray(g[M])?(g[M].push(U),g[M]):[g[M],U]:g[M]=U;continue}if(Array.isArray(U))for(let V=0;V<U.length;V++)g[M]?g[M]+=`, ${U[V]}`:g[M]=U[V];else g[M]?g[M]+=`, ${U}`:g[M]=U}let h=null,{hostname:E,port:B}=e[Ns];g[pF]=i||`${E}${B?`:${B}`:""}`,g[qB]=o;let C=N=>{t.aborted||t.completed||(N=N||new AF,Y.errorRequest(e,t,N),h!=null&&(h.removeAllListeners("data"),h.close(),e[Co](N),e[Vt]()),Y.destroy(u,N))};try{t.onConnect(C)}catch(N){Y.errorRequest(e,t,N)}if(t.aborted)return!1;if(A||o==="CONNECT")return r.ref(),A==="websocket"?r[Ts]===!1?(Y.errorRequest(e,t,new Pn("HTTP/2: Extended CONNECT protocol not supported by server")),r.unref(),!1):(g[qB]="CONNECT",g[CF]="websocket",g[GB]=s,d==="ws:"||d==="wss:"?g[cl]=d==="ws:"?"http":"https":g[cl]=d==="http:"?"http":"https",h=r.request(g,{endStream:!1,signal:c}),h[HA]=!0,h.once("response",(N,M)=>{let{[dl]:U,...V}=N;t.onUpgrade(U,ul(V),h),++r[mt],e[vn][e[xt]++]=null}),h.on("error",()=>{(h.rstCode===IF||h.rstCode===BF)&&C(new Pn(`HTTP/2: "stream error" received - code ${h.rstCode}`))}),h.once("close",()=>{r[mt]-=1,r[mt]===0&&r.unref()}),h.setTimeout(n),!0):(h=r.request(g,{endStream:!1,signal:c}),h[HA]=!0,h.on("response",N=>{let{[dl]:M,...U}=N;t.onUpgrade(M,ul(U),h),++r[mt],e[vn][e[xt]++]=null}),h.once("close",()=>{r[mt]-=1,r[mt]===0&&r.unref()}),h.setTimeout(n),!0);g[GB]=s,g[cl]=d==="http:"?"http":"https";let y=o==="PUT"||o==="POST"||o==="PATCH";u&&typeof u.read=="function"&&u.read(0);let Q=Y.bodyLength(u);if(Y.isFormDataLike(u)){OB??=po().extractBody;let[N,M]=OB(u);g["content-type"]=M,u=N.stream,Q=N.length}if(Q==null&&(Q=t.contentLength),y||(Q=null),LF(o)&&Q>0&&t.contentLength!=null&&t.contentLength!==Q){if(e[dF])return Y.errorRequest(e,t,new ll),!1;process.emitWarning(new ll)}if(Q!=null&&(Qt(u||Q===0,"no body must not have content length"),g[hF]=`${Q}`),r.ref(),vB.sendHeaders.hasSubscribers){let N="";for(let M in g)N+=`${M}: ${g[M]}\r
|
|
39
|
+
`;vB.sendHeaders.publish({request:t,headers:N,socket:r[ge]})}let b=o==="GET"||o==="HEAD"||u===null;a?(g[EF]="100-continue",h=r.request(g,{endStream:b,signal:c}),h[HA]=!0,h.once("continue",x)):(h=r.request(g,{endStream:b,signal:c}),h[HA]=!0,x()),++r[mt],h.setTimeout(n);let k=!1;return h.once("response",N=>{let{[dl]:M,...U}=N;if(t.onResponseStarted(),k=!0,t.aborted){h.removeAllListeners("data");return}t.onHeaders(Number(M),ul(U),h.resume.bind(h),"")===!1&&h.pause(),h.on("data",V=>{t.aborted||t.completed||t.onData(V)===!1&&h.pause()})}),h.once("end",()=>{h.removeAllListeners("data"),k?(!t.aborted&&!t.completed&&t.onComplete({}),e[vn][e[xt]++]=null,e[Vt]()):(C(new Pn("HTTP/2: stream half-closed (remote)")),e[vn][e[xt]++]=null,e[fl]=e[xt],e[Vt]())}),h.once("close",()=>{h.removeAllListeners("data"),r[mt]-=1,r[mt]===0&&r.unref()}),h.once("error",function(N){h.removeAllListeners("data"),C(N)}),h.once("frameError",(N,M)=>{h.removeAllListeners("data"),C(new Pn(`HTTP/2: "frameError" received - type ${N}, code ${M}`))}),h.on("aborted",()=>{h.removeAllListeners("data")}),h.on("timeout",()=>{let N=new Pn(`HTTP/2: "stream timeout after ${n}"`);h.removeAllListeners("data"),r[mt]-=1,r[mt]===0&&r.unref(),C(N)}),h.once("trailers",N=>{t.aborted||t.completed||(h.removeAllListeners("data"),t.onComplete(N))}),!0;function x(){!u||Q===0?HB(C,h,null,e,t,e[ge],Q,y):Y.isBuffer(u)?HB(C,h,u,e,t,e[ge],Q,y):Y.isBlobLike(u)?typeof u.stream=="function"?YB(C,h,u.stream(),e,t,e[ge],Q,y):PF(C,h,u,e,t,e[ge],Q,y):Y.isStream(u)?_F(C,e[ge],y,h,u,e,t,Q):Y.isIterable(u)?YB(C,h,u,e,t,e[ge],Q,y):Qt(!1)}}function HB(e,t,n,r,o,s,i,A){try{n!=null&&Y.isBuffer(n)&&(Qt(i===n.byteLength,"buffer body must have content length"),t.cork(),t.write(n),t.uncork(),t.end(),o.onBodySent(n)),A||(s[VA]=!0),o.onRequestSent(),r[Vt]()}catch(a){e(a)}}function _F(e,t,n,r,o,s,i,A){Qt(A!==0||s[xs]===0,"stream body cannot be pipelined");let a=iF(o,r,d=>{d?(Y.destroy(a,d),e(d)):(Y.removeAllListeners(a),i.onRequestSent(),n||(t[VA]=!0),s[Vt]())});Y.addListener(a,"data",c);function c(d){i.onBodySent(d)}}async function PF(e,t,n,r,o,s,i,A){Qt(i===n.size,"blob body must have content length");try{if(i!=null&&i!==n.size)throw new ll;let a=Buffer.from(await n.arrayBuffer());t.cork(),t.write(a),t.uncork(),t.end(),o.onBodySent(a),o.onRequestSent(),A||(s[VA]=!0),r[Vt]()}catch(a){e(a)}}async function YB(e,t,n,r,o,s,i,A){Qt(i!==0||r[xs]===0,"iterator body cannot be pipelined");let a=null;function c(){if(a){let l=a;a=null,l()}}let d=()=>new Promise((l,u)=>{Qt(a===null),s[dt]?u(s[dt]):a=l});t.on("close",c).on("drain",c);try{for await(let l of n){if(s[dt])throw s[dt];let u=t.write(l);o.onBodySent(l),u||await d()}t.end(),o.onRequestSent(),A||(s[VA]=!0),r[Vt]()}catch(l){e(l)}finally{t.off("close",c).off("drain",c)}}WB.exports=yF});var Hn=m((h5,ey)=>{"use strict";var En=require("node:assert"),XB=require("node:net"),Us=require("node:http"),yr=G(),{ClientStats:vF}=cu(),{channels:Io}=Un(),OF=dI(),qF=ur(),{InvalidArgumentError:ce,InformationalError:GF,ClientDestroyedError:HF}=q(),YF=lr(),{kUrl:Jt,kServerName:Gn,kClient:WF,kBusy:Cl,kConnect:VF,kResuming:mr,kRunning:Ps,kPending:vs,kSize:Ls,kQueue:Ut,kConnected:JF,kConnecting:Bo,kNeedDrain:qn,kKeepAliveDefaultTimeout:JB,kHostHeader:zF,kPendingIdx:Lt,kRunningIdx:In,kError:KF,kPipelining:JA,kKeepAliveTimeoutValue:XF,kMaxHeadersSize:jF,kKeepAliveMaxTimeout:$F,kKeepAliveTimeoutThreshold:ZF,kHeadersTimeout:e_,kBodyTimeout:t_,kStrictContentLength:n_,kConnector:Fs,kMaxRequests:Il,kCounter:r_,kClose:o_,kDestroy:s_,kDispatch:i_,kLocalAddress:_s,kMaxResponseSize:A_,kOnError:a_,kHTTPContext:Ie,kMaxConcurrentStreams:c_,kHTTP2InitialWindowSize:d_,kHTTP2ConnectionWindowSize:u_,kResume:Cn,kPingInterval:l_}=ne(),g_=_B(),f_=VB(),On=Symbol("kClosedResolve"),p_=Us&&Us.maxHeaderSize&&Number.isInteger(Us.maxHeaderSize)&&Us.maxHeaderSize>0?()=>Us.maxHeaderSize:()=>{throw new ce("http module not available or http.maxHeaderSize invalid")},zB=()=>{};function jB(e){return e[JA]??e[Ie]?.defaultPipelining??1}var Bl=class extends qF{constructor(t,{maxHeaderSize:n,headersTimeout:r,socketTimeout:o,requestTimeout:s,connectTimeout:i,bodyTimeout:A,idleTimeout:a,keepAlive:c,keepAliveTimeout:d,maxKeepAliveTimeout:l,keepAliveMaxTimeout:u,keepAliveTimeoutThreshold:g,socketPath:h,pipelining:E,tls:B,strictContentLength:C,maxCachedSessions:y,connect:Q,maxRequestsPerClient:b,localAddress:k,maxResponseSize:x,autoSelectFamily:N,autoSelectFamilyAttemptTimeout:M,maxConcurrentStreams:U,allowH2:V,useH2c:ee,initialWindowSize:te,connectionWindowSize:ue,pingInterval:le,webSocket:xe}={}){if(c!==void 0)throw new ce("unsupported keepAlive, use pipelining=0 instead");if(o!==void 0)throw new ce("unsupported socketTimeout, use headersTimeout & bodyTimeout instead");if(s!==void 0)throw new ce("unsupported requestTimeout, use headersTimeout & bodyTimeout instead");if(a!==void 0)throw new ce("unsupported idleTimeout, use keepAliveTimeout instead");if(l!==void 0)throw new ce("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead");if(n!=null){if(!Number.isInteger(n)||n<1)throw new ce("invalid maxHeaderSize")}else n=p_();if(h!=null&&typeof h!="string")throw new ce("invalid socketPath");if(i!=null&&(!Number.isFinite(i)||i<0))throw new ce("invalid connectTimeout");if(d!=null&&(!Number.isFinite(d)||d<=0))throw new ce("invalid keepAliveTimeout");if(u!=null&&(!Number.isFinite(u)||u<=0))throw new ce("invalid keepAliveMaxTimeout");if(g!=null&&!Number.isFinite(g))throw new ce("invalid keepAliveTimeoutThreshold");if(r!=null&&(!Number.isInteger(r)||r<0))throw new ce("headersTimeout must be a positive integer or zero");if(A!=null&&(!Number.isInteger(A)||A<0))throw new ce("bodyTimeout must be a positive integer or zero");if(Q!=null&&typeof Q!="function"&&typeof Q!="object")throw new ce("connect must be a function or an object");if(b!=null&&(!Number.isInteger(b)||b<0))throw new ce("maxRequestsPerClient must be a positive number");if(k!=null&&(typeof k!="string"||XB.isIP(k)===0))throw new ce("localAddress must be valid string IP address");if(x!=null&&(!Number.isInteger(x)||x<-1))throw new ce("maxResponseSize must be a positive number");if(M!=null&&(!Number.isInteger(M)||M<-1))throw new ce("autoSelectFamilyAttemptTimeout must be a positive number");if(V!=null&&typeof V!="boolean")throw new ce("allowH2 must be a valid boolean value");if(U!=null&&(typeof U!="number"||U<1))throw new ce("maxConcurrentStreams must be a positive integer, greater than 0");if(ee!=null&&typeof ee!="boolean")throw new ce("useH2c must be a valid boolean value");if(te!=null&&(!Number.isInteger(te)||te<1))throw new ce("initialWindowSize must be a positive integer, greater than 0");if(ue!=null&&(!Number.isInteger(ue)||ue<1))throw new ce("connectionWindowSize must be a positive integer, greater than 0");if(le!=null&&(typeof le!="number"||!Number.isInteger(le)||le<0))throw new ce("pingInterval must be a positive integer, greater or equal to 0");if(super({webSocket:xe}),typeof Q!="function")Q=YF({...B,maxCachedSessions:y,allowH2:V,useH2c:ee,socketPath:h,timeout:i,...typeof N=="boolean"?{autoSelectFamily:N,autoSelectFamilyAttemptTimeout:M}:void 0,...Q});else{let Re=Q;Q=(ve,nt)=>Re({...ve,...h!=null?{socketPath:h}:null,...V!=null?{allowH2:V}:null},nt)}this[Jt]=yr.parseOrigin(t),this[Fs]=Q,this[JA]=E??1,this[jF]=n,this[JB]=d??4e3,this[$F]=u??6e5,this[ZF]=g??2e3,this[XF]=this[JB],this[Gn]=null,this[_s]=k??null,this[mr]=0,this[qn]=0,this[zF]=`host: ${this[Jt].hostname}${this[Jt].port?`:${this[Jt].port}`:""}\r
|
|
40
|
+
`,this[t_]=A??3e5,this[e_]=r??3e5,this[n_]=C??!0,this[Il]=b,this[On]=null,this[A_]=x>-1?x:-1,this[Ie]=null,this[c_]=U??100,this[d_]=te??262144,this[u_]=ue??524288,this[l_]=le??6e4,this[Ut]=[],this[In]=0,this[Lt]=0,this[Cn]=Re=>yl(this,Re),this[a_]=Re=>$B(this,Re)}get pipelining(){return this[JA]}set pipelining(t){this[JA]=t,this[Cn](!0)}get stats(){return new vF(this)}get[vs](){return this[Ut].length-this[Lt]}get[Ps](){return this[Lt]-this[In]}get[Ls](){return this[Ut].length-this[In]}get[JF](){return!!this[Ie]&&!this[Bo]&&!this[Ie].destroyed}get[Cl](){return!!(this[Ie]?.busy(null)||this[Ls]>=(jB(this)||1)||this[vs]>0)}[VF](t){ZB(this),this.once("connect",t)}[i_](t,n){let r=new OF(this[Jt].origin,t,n);return this[Ut].push(r),this[mr]||(yr.bodyLength(r.body)==null&&yr.isIterable(r.body)?(this[mr]=1,queueMicrotask(()=>yl(this))):this[Cn](!0)),this[mr]&&this[qn]!==2&&this[Cl]&&(this[qn]=2),this[qn]<2}[o_](){return new Promise(t=>{this[Ls]?this[On]=t:t(null)})}[s_](t){return new Promise(n=>{let r=this[Ut].splice(this[Lt]);for(let s=0;s<r.length;s++){let i=r[s];yr.errorRequest(this,i,t)}let o=()=>{this[On]&&(this[On](),this[On]=null),n(null)};this[Ie]?(this[Ie].destroy(t,o),this[Ie]=null):queueMicrotask(o),this[Cn]()})}};function $B(e,t){if(e[Ps]===0&&t.code!=="UND_ERR_INFO"&&t.code!=="UND_ERR_SOCKET"){En(e[Lt]===e[In]);let n=e[Ut].splice(e[In]);for(let r=0;r<n.length;r++){let o=n[r];yr.errorRequest(e,o,t)}En(e[Ls]===0)}}function ZB(e){En(!e[Bo]),En(!e[Ie]);let{host:t,hostname:n,protocol:r,port:o}=e[Jt];if(n[0]==="["){let s=n.indexOf("]");En(s!==-1);let i=n.substring(1,s);En(XB.isIPv6(i)),n=i}e[Bo]=!0,Io.beforeConnect.hasSubscribers&&Io.beforeConnect.publish({connectParams:{host:t,hostname:n,protocol:r,port:o,version:e[Ie]?.version,servername:e[Gn],localAddress:e[_s]},connector:e[Fs]});try{e[Fs]({host:t,hostname:n,protocol:r,port:o,servername:e[Gn],localAddress:e[_s]},(s,i)=>{if(s){El(e,s,{host:t,hostname:n,protocol:r,port:o}),e[Cn]();return}if(e.destroyed){yr.destroy(i.on("error",zB),new HF),e[Cn]();return}En(i);try{e[Ie]=i.alpnProtocol==="h2"?f_(e,i):g_(e,i)}catch(A){i.destroy().on("error",zB),El(e,A,{host:t,hostname:n,protocol:r,port:o}),e[Cn]();return}e[Bo]=!1,i[r_]=0,i[Il]=e[Il],i[WF]=e,i[KF]=null,Io.connected.hasSubscribers&&Io.connected.publish({connectParams:{host:t,hostname:n,protocol:r,port:o,version:e[Ie]?.version,servername:e[Gn],localAddress:e[_s]},connector:e[Fs],socket:i}),e.emit("connect",e[Jt],[e]),e[Cn]()})}catch(s){El(e,s,{host:t,hostname:n,protocol:r,port:o}),e[Cn]()}}function El(e,t,{host:n,hostname:r,protocol:o,port:s}){if(!e.destroyed){if(e[Bo]=!1,Io.connectError.hasSubscribers&&Io.connectError.publish({connectParams:{host:n,hostname:r,protocol:o,port:s,version:e[Ie]?.version,servername:e[Gn],localAddress:e[_s]},connector:e[Fs],error:t}),t.code==="ERR_TLS_CERT_ALTNAME_INVALID")for(En(e[Ps]===0);e[vs]>0&&e[Ut][e[Lt]].servername===e[Gn];){let i=e[Ut][e[Lt]++];yr.errorRequest(e,i,t)}else $B(e,t);e.emit("connectionError",e[Jt],[e],t)}}function KB(e){e[qn]=0,e.emit("drain",e[Jt],[e])}function yl(e,t){e[mr]!==2&&(e[mr]=2,h_(e,t),e[mr]=0,e[In]>256&&(e[Ut].splice(0,e[In]),e[Lt]-=e[In],e[In]=0))}function h_(e,t){for(;;){if(e.destroyed){En(e[vs]===0);return}if(e[On]&&!e[Ls]){e[On](),e[On]=null;return}if(e[Ie]&&e[Ie].resume(),e[Cl])e[qn]=2;else if(e[qn]===2){t?(e[qn]=1,queueMicrotask(()=>KB(e))):KB(e);continue}if(e[vs]===0||e[Ps]>=(jB(e)||1))return;let n=e[Ut][e[Lt]];if(n===null)return;if(e[Jt].protocol==="https:"&&e[Gn]!==n.servername){if(e[Ps]>0)return;e[Gn]=n.servername,e[Ie]?.destroy(new GF("servername changed"),()=>{e[Ie]=null,yl(e)})}if(e[Bo])return;if(!e[Ie]){ZB(e);return}if(e[Ie].destroyed||e[Ie].busy(n))return;!n.aborted&&e[Ie].write(n)?e[Lt]++:e[Ut].splice(e[Lt],1)}}ey.exports=Bl});var ml=m((C5,ty)=>{"use strict";var zA=class{bottom=0;top=0;list=new Array(2048).fill(void 0);next=null;isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&2047)===this.bottom}push(t){this.list[this.top]=t,this.top=this.top+1&2047}shift(){let t=this.list[this.bottom];return t===void 0?null:(this.list[this.bottom]=void 0,this.bottom=this.bottom+1&2047,t)}};ty.exports=class{constructor(){this.head=this.tail=new zA}isEmpty(){return this.head.isEmpty()}push(t){this.head.isFull()&&(this.head=this.head.next=new zA),this.head.push(t)}shift(){let t=this.tail,n=t.shift();return t.isEmpty()&&t.next!==null&&(this.tail=t.next,t.next=null),n}}});var KA=m((I5,dy)=>{"use strict";var{PoolStats:E_}=cu(),C_=ur(),I_=ml(),{kConnected:Ql,kSize:ny,kRunning:ry,kPending:oy,kQueued:Os,kBusy:B_,kFree:y_,kUrl:m_,kClose:Q_,kDestroy:w_,kDispatch:R_}=ne(),Se=Symbol("clients"),qe=Symbol("needDrain"),qs=Symbol("queue"),wl=Symbol("closed resolve"),Rl=Symbol("onDrain"),sy=Symbol("onConnect"),iy=Symbol("onDisconnect"),Ay=Symbol("onConnectionError"),bl=Symbol("get dispatcher"),ay=Symbol("add client"),cy=Symbol("remove client"),Sl=class extends C_{[qs]=new I_;[Os]=0;[Se]=[];[qe]=!1;[Rl](t,n,r){let o=this[qs],s=!1;for(;!s;){let i=o.shift();if(!i)break;this[Os]--,s=!t.dispatch(i.opts,i.handler)}if(t[qe]=s,!s&&this[qe]&&(this[qe]=!1,this.emit("drain",n,[this,...r])),this[wl]&&o.isEmpty()){let i=[];for(let A=0;A<this[Se].length;A++){let a=this[Se][A];a.destroyed||i.push(a.close())}return Promise.all(i).then(this[wl])}}[sy]=(t,n)=>{this.emit("connect",t,[this,...n])};[iy]=(t,n,r)=>{this.emit("disconnect",t,[this,...n],r)};[Ay]=(t,n,r)=>{this.emit("connectionError",t,[this,...n],r)};get[B_](){return this[qe]}get[Ql](){let t=0;for(let{[Ql]:n}of this[Se])t+=n;return t}get[y_](){let t=0;for(let{[Ql]:n,[qe]:r}of this[Se])t+=n&&!r;return t}get[oy](){let t=this[Os];for(let{[oy]:n}of this[Se])t+=n;return t}get[ry](){let t=0;for(let{[ry]:n}of this[Se])t+=n;return t}get[ny](){let t=this[Os];for(let{[ny]:n}of this[Se])t+=n;return t}get stats(){return new E_(this)}[Q_](){if(this[qs].isEmpty()){let t=[];for(let n=0;n<this[Se].length;n++){let r=this[Se][n];r.destroyed||t.push(r.close())}return Promise.all(t)}else return new Promise(t=>{this[wl]=t})}[w_](t){for(;;){let r=this[qs].shift();if(!r)break;r.handler.onError(t)}let n=new Array(this[Se].length);for(let r=0;r<this[Se].length;r++)n[r]=this[Se][r].destroy(t);return Promise.all(n)}[R_](t,n){let r=this[bl]();return r?r.dispatch(t,n)||(r[qe]=!0,this[qe]=!this[bl]()):(this[qe]=!0,this[qs].push({opts:t,handler:n}),this[Os]++),!this[qe]}[ay](t){return t.on("drain",this[Rl].bind(this,t)).on("connect",this[sy]).on("disconnect",this[iy]).on("connectionError",this[Ay]),this[Se].push(t),this[qe]&&queueMicrotask(()=>{this[qe]&&this[Rl](t,t[m_],[t,this])}),this}[cy](t){t.close(()=>{let n=this[Se].indexOf(t);n!==-1&&this[Se].splice(n,1)}),this[qe]=this[Se].some(n=>!n[qe]&&n.closed!==!0&&n.destroyed!==!0)}};dy.exports={PoolBase:Sl,kClients:Se,kNeedDrain:qe,kAddClient:ay,kRemoveClient:cy,kGetDispatcher:bl}});var Qr=m((B5,fy)=>{"use strict";var{PoolBase:b_,kClients:XA,kNeedDrain:S_,kAddClient:D_,kGetDispatcher:T_,kRemoveClient:k_}=KA(),N_=Hn(),{InvalidArgumentError:Dl}=q(),uy=G(),{kUrl:ly}=ne(),M_=lr(),jA=Symbol("options"),Tl=Symbol("connections"),gy=Symbol("factory");function x_(e,t){return new N_(e,t)}var kl=class extends b_{constructor(t,{connections:n,factory:r=x_,connect:o,connectTimeout:s,tls:i,maxCachedSessions:A,socketPath:a,autoSelectFamily:c,autoSelectFamilyAttemptTimeout:d,allowH2:l,clientTtl:u,...g}={}){if(n!=null&&(!Number.isFinite(n)||n<0))throw new Dl("invalid connections");if(typeof r!="function")throw new Dl("factory must be a function.");if(o!=null&&typeof o!="function"&&typeof o!="object")throw new Dl("connect must be a function or an object");typeof o!="function"&&(o=M_({...i,maxCachedSessions:A,allowH2:l,socketPath:a,timeout:s,...typeof c=="boolean"?{autoSelectFamily:c,autoSelectFamilyAttemptTimeout:d}:void 0,...o})),super(g),this[Tl]=n||null,this[ly]=uy.parseOrigin(t),this[jA]={...uy.deepClone(g),connect:o,allowH2:l,clientTtl:u,socketPath:a},this[jA].interceptors=g.interceptors?{...g.interceptors}:void 0,this[gy]=r,this.on("connect",(h,E)=>{if(u!=null&&u>0)for(let B of E)Object.assign(B,{ttl:Date.now()})}),this.on("connectionError",(h,E,B)=>{for(let C of E){let y=this[XA].indexOf(C);y!==-1&&this[XA].splice(y,1)}})}[T_](){let t=this[jA].clientTtl;for(let n of this[XA])if(t!=null&&t>0&&n.ttl&&Date.now()-n.ttl>t)this[k_](n);else if(!n[S_])return n;if(!this[Tl]||this[XA].length<this[Tl]){let n=this[gy](this[ly],this[jA]);return this[D_](n),n}}};fy.exports=kl});var Cy=m((y5,Ey)=>{"use strict";var{BalancedPoolMissingUpstreamError:U_,InvalidArgumentError:L_}=q(),{PoolBase:F_,kClients:Te,kNeedDrain:Gs,kAddClient:__,kRemoveClient:P_,kGetDispatcher:v_}=KA(),O_=Qr(),{kUrl:$A}=ne(),ZA=G(),py=Symbol("factory"),Hs=Symbol("options"),hy=Symbol("kGreatestCommonDivisor"),wr=Symbol("kCurrentWeight"),Rr=Symbol("kIndex"),wt=Symbol("kWeight"),ea=Symbol("kMaxWeightPerServer"),ta=Symbol("kErrorPenalty");function q_(e,t){if(e===0)return t;for(;t!==0;){let n=t;t=e%t,e=n}return e}function G_(e,t){return new O_(e,t)}var Nl=class extends F_{constructor(t=[],{factory:n=G_,...r}={}){if(typeof n!="function")throw new L_("factory must be a function.");super(r),this[Hs]={...ZA.deepClone(r)},this[Hs].interceptors=r.interceptors?{...r.interceptors}:void 0,this[Rr]=-1,this[wr]=0,this[ea]=this[Hs].maxWeightPerServer||100,this[ta]=this[Hs].errorPenalty||15,Array.isArray(t)||(t=[t]),this[py]=n;for(let o of t)this.addUpstream(o);this._updateBalancedPoolStats()}addUpstream(t){let n=ZA.parseOrigin(t).origin;if(this[Te].find(o=>o[$A].origin===n&&o.closed!==!0&&o.destroyed!==!0))return this;let r=this[py](n,this[Hs]);this[__](r),r.on("connect",()=>{r[wt]=Math.min(this[ea],r[wt]+this[ta])}),r.on("connectionError",()=>{r[wt]=Math.max(1,r[wt]-this[ta]),this._updateBalancedPoolStats()}),r.on("disconnect",(...o)=>{let s=o[2];s&&s.code==="UND_ERR_SOCKET"&&(r[wt]=Math.max(1,r[wt]-this[ta]),this._updateBalancedPoolStats())});for(let o of this[Te])o[wt]=this[ea];return this._updateBalancedPoolStats(),this}_updateBalancedPoolStats(){let t=0;for(let n=0;n<this[Te].length;n++)t=q_(this[Te][n][wt],t);this[hy]=t}removeUpstream(t){let n=ZA.parseOrigin(t).origin,r=this[Te].find(o=>o[$A].origin===n&&o.closed!==!0&&o.destroyed!==!0);return r&&this[P_](r),this}getUpstream(t){let n=ZA.parseOrigin(t).origin;return this[Te].find(r=>r[$A].origin===n&&r.closed!==!0&&r.destroyed!==!0)}get upstreams(){return this[Te].filter(t=>t.closed!==!0&&t.destroyed!==!0).map(t=>t[$A].origin)}[v_](){if(this[Te].length===0)throw new U_;if(!this[Te].find(s=>!s[Gs]&&s.closed!==!0&&s.destroyed!==!0)||this[Te].map(s=>s[Gs]).reduce((s,i)=>s&&i,!0))return;let r=0,o=this[Te].findIndex(s=>!s[Gs]);for(;r++<this[Te].length;){this[Rr]=(this[Rr]+1)%this[Te].length;let s=this[Te][this[Rr]];if(s[wt]>this[Te][o][wt]&&!s[Gs]&&(o=this[Rr]),this[Rr]===0&&(this[wr]=this[wr]-this[hy],this[wr]<=0&&(this[wr]=this[ea])),s[wt]>=this[wr]&&!s[Gs])return s}return this[wr]=this[Te][o][wt],this[Rr]=o,this[Te][o]}};Ey.exports=Nl});var my=m((m5,yy)=>{"use strict";var{PoolBase:H_,kClients:na,kNeedDrain:Y_,kAddClient:Iy,kGetDispatcher:W_,kRemoveClient:V_}=KA(),J_=Hn(),{InvalidArgumentError:Ml}=q(),By=G(),{kUrl:xl}=ne(),z_=lr(),Ys=Symbol("options"),Ul=Symbol("connections"),Ll=Symbol("factory"),ra=Symbol("index");function K_(e,t){return new J_(e,t)}var Fl=class extends H_{constructor(t,{connections:n,factory:r=K_,connect:o,connectTimeout:s,tls:i,maxCachedSessions:A,socketPath:a,autoSelectFamily:c,autoSelectFamilyAttemptTimeout:d,allowH2:l,clientTtl:u,...g}={}){if(n!=null&&(!Number.isFinite(n)||n<0))throw new Ml("invalid connections");if(typeof r!="function")throw new Ml("factory must be a function.");if(o!=null&&typeof o!="function"&&typeof o!="object")throw new Ml("connect must be a function or an object");typeof o!="function"&&(o=z_({...i,maxCachedSessions:A,allowH2:l,socketPath:a,timeout:s,...typeof c=="boolean"?{autoSelectFamily:c,autoSelectFamilyAttemptTimeout:d}:void 0,...o})),super(),this[Ul]=n||null,this[xl]=By.parseOrigin(t),this[Ys]={...By.deepClone(g),connect:o,allowH2:l,clientTtl:u,socketPath:a},this[Ys].interceptors=g.interceptors?{...g.interceptors}:void 0,this[Ll]=r,this[ra]=-1,this.on("connect",(h,E)=>{if(u!=null&&u>0)for(let B of E)Object.assign(B,{ttl:Date.now()})}),this.on("connectionError",(h,E,B)=>{for(let C of E){let y=this[na].indexOf(C);y!==-1&&this[na].splice(y,1)}})}[W_](){let t=this[Ys].clientTtl,n=this[na].length;if(n===0){let o=this[Ll](this[xl],this[Ys]);return this[Iy](o),o}let r=0;for(;r<n;){this[ra]=(this[ra]+1)%n;let o=this[na][this[ra]];if(t!=null&&t>0&&o.ttl&&Date.now()-o.ttl>t){this[V_](o),r++;continue}if(!o[Y_])return o;r++}if(!this[Ul]||n<this[Ul]){let o=this[Ll](this[xl],this[Ys]);return this[Iy](o),o}}};yy.exports=Fl});var br=m((Q5,Ty)=>{"use strict";var{InvalidArgumentError:oa,MaxOriginsReachedError:X_}=q(),{kClients:Rt,kRunning:Qy,kClose:j_,kDestroy:$_,kDispatch:Z_,kUrl:eP}=ne(),tP=ur(),nP=Qr(),rP=Hn(),oP=G(),wy=Symbol("onConnect"),Ry=Symbol("onDisconnect"),by=Symbol("onConnectionError"),Sy=Symbol("onDrain"),Dy=Symbol("factory"),_l=Symbol("options"),Ws=Symbol("origins");function sP(e,t){return t&&t.connections===1?new rP(e,t):new nP(e,t)}var Pl=class extends tP{constructor({factory:t=sP,maxOrigins:n=1/0,connect:r,...o}={}){if(typeof t!="function")throw new oa("factory must be a function.");if(r!=null&&typeof r!="function"&&typeof r!="object")throw new oa("connect must be a function or an object");if(typeof n!="number"||Number.isNaN(n)||n<=0)throw new oa("maxOrigins must be a number greater than 0");super(o),r&&typeof r!="function"&&(r={...r}),this[_l]={...oP.deepClone(o),maxOrigins:n,connect:r},this[Dy]=t,this[Rt]=new Map,this[Ws]=new Set,this[Sy]=(s,i)=>{this.emit("drain",s,[this,...i])},this[wy]=(s,i)=>{this.emit("connect",s,[this,...i])},this[Ry]=(s,i,A)=>{this.emit("disconnect",s,[this,...i],A)},this[by]=(s,i,A)=>{this.emit("connectionError",s,[this,...i],A)}}get[Qy](){let t=0;for(let{dispatcher:n}of this[Rt].values())t+=n[Qy];return t}[Z_](t,n){let r;if(t.origin&&(typeof t.origin=="string"||t.origin instanceof URL))r=String(t.origin);else throw new oa("opts.origin must be a non-empty string or URL.");if(this[Ws].size>=this[_l].maxOrigins&&!this[Ws].has(r))throw new X_;let o=this[Rt].get(r),s=o&&o.dispatcher;if(!s){let i=A=>{let a=this[Rt].get(r);a&&(A&&(a.count-=1),a.count<=0&&(this[Rt].delete(r),a.dispatcher.destroyed||a.dispatcher.close()),this[Ws].delete(r))};s=this[Dy](t.origin,this[_l]).on("drain",this[Sy]).on("connect",(A,a)=>{let c=this[Rt].get(r);c&&(c.count+=1),this[wy](A,a)}).on("disconnect",(A,a,c)=>{i(!0),this[Ry](A,a,c)}).on("connectionError",(A,a,c)=>{i(!1),this[by](A,a,c)}),this[Rt].set(r,{count:0,dispatcher:s}),this[Ws].add(r)}return s.dispatch(t,n)}[j_](){let t=[];for(let{dispatcher:n}of this[Rt].values())t.push(n.close());return this[Rt].clear(),Promise.all(t)}[$_](t){let n=[];for(let{dispatcher:r}of this[Rt].values())n.push(r.destroy(t));return this[Rt].clear(),Promise.all(n)}get stats(){let t={};for(let{dispatcher:n}of this[Rt].values())n.stats&&(t[n[eP].origin]=n.stats);return t}};Ty.exports=Pl});var My=m((w5,Ny)=>{"use strict";var{Buffer:Wn}=require("node:buffer"),vl=require("node:net"),{InvalidArgumentError:Yn}=q();function iP(e){if(vl.isIPv4(e)){let n=e.split(".").map(Number);return{type:1,buffer:Wn.from(n)}}if(vl.isIPv6(e))return{type:4,buffer:ky(e)};let t=Wn.from(e,"utf8");if(t.length>255)throw new Yn("Domain name too long (max 255 bytes)");return{type:3,buffer:Wn.concat([Wn.from([t.length]),t])}}function ky(e){let t=Wn.alloc(16),n=e;if(e.includes(".")){let o=e.lastIndexOf(":"),s=e.slice(o+1);if(vl.isIPv4(s)){let i=s.split(".").map(Number),A=(i[0]<<8|i[1]).toString(16),a=(i[2]<<8|i[3]).toString(16);n=`${e.slice(0,o)}:${A}:${a}`}}let r=n.indexOf("::");if(r!==-1){let o=n.slice(0,r),s=n.slice(r+2),i=o===""?[]:o.split(":"),A=s===""?[]:s.split(":"),a=0;for(let c of i)t.writeUInt16BE(parseInt(c,16),a),a+=2;a=16-A.length*2;for(let c of A)t.writeUInt16BE(parseInt(c,16),a),a+=2}else{let o=n.split(":");for(let s=0;s<o.length;s++)t.writeUInt16BE(parseInt(o[s],16),s*2)}return t}function AP(e,t,n){let r=Wn.allocUnsafe(2);return r.writeUInt16BE(n,0),Wn.concat([Wn.from([e]),t,r])}function aP(e,t=0){if(e.length<t+1)throw new Yn("Buffer too small to contain address type");let n=e[t],r,o=t+1;switch(n){case 1:{if(e.length<o+6)throw new Yn("Buffer too small for IPv4 address");r=Array.from(e.subarray(o,o+4)).join("."),o+=4;break}case 3:{if(e.length<o+1)throw new Yn("Buffer too small for domain length");let i=e[o];if(o+=1,e.length<o+i+2)throw new Yn("Buffer too small for domain address");r=e.subarray(o,o+i).toString("utf8"),o+=i;break}case 4:{if(e.length<o+18)throw new Yn("Buffer too small for IPv6 address");let i=[];for(let A=0;A<8;A++){let a=e.readUInt16BE(o+A*2);i.push(a.toString(16))}r=i.join(":"),o+=16;break}default:throw new Yn(`Invalid address type: ${n}`)}if(e.length<o+2)throw new Yn("Buffer too small for port");let s=e.readUInt16BE(o);return o+=2,{address:r,port:s,bytesRead:o-t}}function cP(e){let n={1:"General SOCKS server failure",2:"Connection not allowed by ruleset",3:"Network unreachable",4:"Host unreachable",5:"Connection refused",6:"TTL expired",7:"Command not supported",8:"Address type not supported"}[e]||`Unknown SOCKS5 error code: ${e}`,r=new Error(n);return r.code=`SOCKS5_${e}`,r}Ny.exports={parseAddress:iP,parseIPv6:ky,buildAddressBuffer:AP,parseResponseAddress:aP,createReplyError:cP}});var Fy=m((R5,Ly)=>{"use strict";var{EventEmitter:dP}=require("node:events"),{Buffer:Sr}=require("node:buffer"),{InvalidArgumentError:yo,Socks5ProxyError:Vn}=q(),{debuglog:uP}=require("node:util"),{parseAddress:lP}=My(),Bn=uP("undici:socks5"),xy=Sr.alloc(0),sa=5,mo={NO_AUTH:0,GSSAPI:1,USERNAME_PASSWORD:2,NO_ACCEPTABLE:255},Uy={CONNECT:1,BIND:2,UDP_ASSOCIATE:3},Dr={IPV4:1,DOMAIN:3,IPV6:4},zt={SUCCEEDED:0,GENERAL_FAILURE:1,CONNECTION_NOT_ALLOWED:2,NETWORK_UNREACHABLE:3,HOST_UNREACHABLE:4,CONNECTION_REFUSED:5,TTL_EXPIRED:6,COMMAND_NOT_SUPPORTED:7,ADDRESS_TYPE_NOT_SUPPORTED:8},Le={INITIAL:"initial",HANDSHAKING:"handshaking",AUTHENTICATING:"authenticating",AUTHENTICATED:"authenticated",CONNECTING:"connecting",CONNECTED:"connected",ERROR:"error",CLOSED:"closed"},Ol=class extends dP{constructor(t,n={}){if(super(),!t)throw new yo("socket is required");this.socket=t,this.options=n,this.state=Le.INITIAL,this.buffer=xy,this.onSocketData=this.onData.bind(this),this.onSocketError=this.onError.bind(this),this.onSocketClose=this.onClose.bind(this),this.authMethods=[],n.username&&n.password&&this.authMethods.push(mo.USERNAME_PASSWORD),this.authMethods.push(mo.NO_AUTH),this.socket.on("data",this.onSocketData),this.socket.on("error",this.onSocketError),this.socket.on("close",this.onSocketClose)}onData(t){Bn("received data",t.length,"bytes in state",this.state),this.buffer=Sr.concat([this.buffer,t]);try{switch(this.state){case Le.HANDSHAKING:this.handleHandshakeResponse();break;case Le.AUTHENTICATING:this.handleAuthResponse();break;case Le.CONNECTING:this.handleConnectResponse();break}}catch(n){this.onError(n)}}onError(t){Bn("socket error",t),this.state=Le.ERROR,this.emit("error",t),this.destroy()}onClose(){Bn("socket closed"),this.state=Le.CLOSED,this.emit("close")}destroy(){this.socket&&!this.socket.destroyed&&this.socket.destroy()}markAuthenticated(){this.state=Le.AUTHENTICATED,this.emit("authenticated")}handshake(){if(this.state!==Le.INITIAL)throw new yo("Handshake already started");Bn("starting handshake with",this.authMethods.length,"auth methods"),this.state=Le.HANDSHAKING;let t=Sr.alloc(2+this.authMethods.length);t[0]=sa,t[1]=this.authMethods.length,this.authMethods.forEach((n,r)=>{t[2+r]=n}),this.socket.write(t)}handleHandshakeResponse(){if(this.buffer.length<2)return;let t=this.buffer[0],n=this.buffer[1];if(t!==sa)throw new Vn(`Invalid SOCKS version: ${t}`,"UND_ERR_SOCKS5_VERSION");if(n===mo.NO_ACCEPTABLE)throw new Vn("No acceptable authentication method","UND_ERR_SOCKS5_AUTH_REJECTED");if(this.buffer=this.buffer.subarray(2),Bn("server selected auth method",n),n===mo.NO_AUTH)this.markAuthenticated();else if(n===mo.USERNAME_PASSWORD)this.state=Le.AUTHENTICATING,this.sendAuthRequest();else throw new Vn(`Unsupported authentication method: ${n}`,"UND_ERR_SOCKS5_AUTH_METHOD")}sendAuthRequest(){let{username:t,password:n}=this.options;if(!t||!n)throw new yo("Username and password required for authentication");Bn("sending username/password auth");let r=Sr.from(t),o=Sr.from(n);if(r.length>255||o.length>255)throw new yo("Username or password too long");let s=Sr.alloc(3+r.length+o.length);s[0]=1,s[1]=r.length,r.copy(s,2),s[2+r.length]=o.length,o.copy(s,3+r.length),this.socket.write(s)}handleAuthResponse(){if(this.buffer.length<2)return;let t=this.buffer[0],n=this.buffer[1];if(t!==1)throw new Vn(`Invalid auth sub-negotiation version: ${t}`,"UND_ERR_SOCKS5_AUTH_VERSION");if(n!==0)throw new Vn("Authentication failed","UND_ERR_SOCKS5_AUTH_FAILED");this.buffer=this.buffer.subarray(2),Bn("authentication successful"),this.markAuthenticated()}connect(t,n){if(this.state===Le.CONNECTING||this.state===Le.CONNECTED)throw new yo("Connection already in progress");if(this.state!==Le.AUTHENTICATED)throw new yo("Client must be authenticated before CONNECT");Bn("connecting to",t,n),this.state=Le.CONNECTING;let r=this.buildConnectRequest(Uy.CONNECT,t,n);this.socket.write(r)}buildConnectRequest(t,n,r){let{type:o,buffer:s}=lP(n),i=Sr.alloc(4+s.length+2);return i[0]=sa,i[1]=t,i[2]=0,i[3]=o,s.copy(i,4),i.writeUInt16BE(r,4+s.length),i}handleConnectResponse(){if(this.buffer.length<4)return;let t=this.buffer[0],n=this.buffer[1],r=this.buffer[3];if(t!==sa)throw new Vn(`Invalid SOCKS version in reply: ${t}`,"UND_ERR_SOCKS5_REPLY_VERSION");let o=4;if(r===Dr.IPV4)o+=6;else if(r===Dr.DOMAIN){if(this.buffer.length<5)return;o+=1+this.buffer[4]+2}else if(r===Dr.IPV6)o+=18;else throw new Vn(`Invalid address type in reply: ${r}`,"UND_ERR_SOCKS5_ADDR_TYPE");if(this.buffer.length<o)return;if(n!==zt.SUCCEEDED){let a=this.getReplyErrorMessage(n);throw new Vn(`SOCKS5 connection failed: ${a}`,`UND_ERR_SOCKS5_REPLY_${n}`)}let s,i=4;if(r===Dr.IPV4)s=Array.from(this.buffer.subarray(i,i+4)).join("."),i+=4;else if(r===Dr.DOMAIN){let a=this.buffer[i];i+=1,s=this.buffer.subarray(i,i+a).toString(),i+=a}else if(r===Dr.IPV6){let a=[];for(let c=0;c<8;c++){let d=this.buffer.readUInt16BE(i+c*2);a.push(d.toString(16))}s=a.join(":"),i+=16}let A=this.buffer.readUInt16BE(i);this.buffer=xy,this.state=Le.CONNECTED,this.socket.removeListener("data",this.onSocketData),Bn("connected, bound address:",s,"port:",A),this.emit("connected",{address:s,port:A})}getReplyErrorMessage(t){switch(t){case zt.GENERAL_FAILURE:return"General SOCKS server failure";case zt.CONNECTION_NOT_ALLOWED:return"Connection not allowed by ruleset";case zt.NETWORK_UNREACHABLE:return"Network unreachable";case zt.HOST_UNREACHABLE:return"Host unreachable";case zt.CONNECTION_REFUSED:return"Connection refused";case zt.TTL_EXPIRED:return"TTL expired";case zt.COMMAND_NOT_SUPPORTED:return"Command not supported";case zt.ADDRESS_TYPE_NOT_SUPPORTED:return"Address type not supported";default:return`Unknown error code: ${t}`}}};Ly.exports={Socks5Client:Ol,AUTH_METHODS:mo,COMMANDS:Uy,ADDRESS_TYPES:Dr,REPLY_CODES:zt,STATES:Le}});var Wl=m((b5,Yy)=>{"use strict";var{URL:_y}=require("node:url"),ql,gP=ur(),{InvalidArgumentError:Py}=q(),{Socks5Client:fP,STATES:pP}=Fy(),{kDispatch:vy,kClose:hP,kDestroy:EP}=ne(),CP=Qr(),IP=lr(),{debuglog:BP}=require("node:util"),Jn=BP("undici:socks5-proxy"),Gl=Symbol("proxy url"),yP=Symbol("proxy headers"),Oy=Symbol("proxy auth"),qy=Symbol("proxy protocol"),Tr=Symbol("pools"),Gy=Symbol("connector"),Hl=Symbol("request tls settings"),Hy=!1,Yl=class extends gP{constructor(t,n={}){if(super(),Hy||(process.emitWarning("SOCKS5 proxy support is experimental and subject to change","ExperimentalWarning"),Hy=!0),!t)throw new Py("Proxy URL is mandatory");let r=typeof t=="string"?new _y(t):t;if(r.protocol!=="socks5:"&&r.protocol!=="socks:")throw new Py("Proxy URL must use socks5:// or socks:// protocol");this[Gl]=r,this[yP]=n.headers||{},this[qy]=n.proxyTls?"https:":"http:",this[Hl]=n.requestTls,this[Oy]={username:n.username||(r.username?decodeURIComponent(r.username):null),password:n.password||(r.password?decodeURIComponent(r.password):null)},this[Gy]=n.connect||IP({...n.proxyTls,servername:n.proxyTls?.servername||r.hostname}),this[Tr]=new Map}async createSocks5Connection(t,n){let r=this[Gl].hostname,o=parseInt(this[Gl].port)||1080;Jn("creating SOCKS5 connection to",r,o);let s=await new Promise((A,a)=>{this[Gy]({hostname:r,host:r,port:o,protocol:this[qy]},(c,d)=>{c?a(c):A(d)})}),i=new fP(s,this[Oy]);return i.on("error",A=>{Jn("SOCKS5 error:",A),s.destroy()}),await i.handshake(),await new Promise((A,a)=>{let c=setTimeout(()=>{a(new Error("SOCKS5 authentication timeout"))},5e3),d=()=>{clearTimeout(c),i.removeListener("error",l),A()},l=u=>{clearTimeout(c),i.removeListener("authenticated",d),a(u)};i.state===pP.AUTHENTICATED?(clearTimeout(c),A()):(i.once("authenticated",d),i.once("error",l))}),await i.connect(t,n),await new Promise((A,a)=>{let c=setTimeout(()=>{a(new Error("SOCKS5 connection timeout"))},5e3),d=u=>{Jn("SOCKS5 tunnel established to",t,n,"via",u),clearTimeout(c),i.removeListener("error",l),A()},l=u=>{clearTimeout(c),i.removeListener("connected",d),a(u)};i.once("connected",d),i.once("error",l)}),s}[vy](t,n){let{origin:r}=t;Jn("dispatching request to",r,"via SOCKS5");try{let o=String(r),s=this[Tr].get(o);return(!s||s.destroyed||s.closed)&&(s=new CP(r,{pipelining:t.pipelining,connections:t.connections,connect:async(i,A)=>{try{let a=new _y(r),c=a.hostname,d=parseInt(a.port)||(a.protocol==="https:"?443:80);Jn("establishing SOCKS5 connection to",c,d);let l=await this.createSocks5Connection(c,d),u=l;a.protocol==="https:"&&(ql||(ql=require("node:tls")),Jn("upgrading to TLS"),u=ql.connect({...this[Hl],socket:l,servername:this[Hl]?.servername||c}),await new Promise((g,h)=>{u.once("secureConnect",g),u.once("error",h)})),A(null,u)}catch(a){Jn("SOCKS5 connection error:",a),A(a)}}}),this[Tr].set(o,s)),s[vy](t,n)}catch(o){if(Jn("dispatch error:",o),typeof n.onResponseError=="function")return n.onResponseError(null,o),!1;if(typeof n.onError=="function")return n.onError(o),!1;throw o}}async[hP](){let t=[];for(let n of this[Tr].values())t.push(n.close());this[Tr].clear(),await Promise.all(t)}async[EP](t){let n=[];for(let r of this[Tr].values())n.push(r.destroy(t));this[Tr].clear(),await Promise.all(n)}};Yy.exports=Yl});var Kl=m((S5,nm)=>{"use strict";var{kProxy:Qo,kClose:jy,kDestroy:$y,kDispatch:Wy}=ne(),mP=br(),Zy=Qr(),em=ur(),{InvalidArgumentError:kr,RequestAbortedError:QP,SecureProxyConnectionError:wP}=q(),Vy=lr(),tm=Hn(),{channels:Jy}=Un(),RP=Wl(),ia=Symbol("proxy agent"),zn=Symbol("proxy client"),yn=Symbol("proxy headers"),Vl=Symbol("request tls settings"),zy=Symbol("proxy tls settings"),Ky=Symbol("connect endpoint function"),Xy=Symbol("tunnel proxy");function bP(e){return e==="https:"?443:80}function SP(e,t){return new Zy(e,t)}var DP=()=>{};function TP(e,t){return t.connections===1?new tm(e,t):new Zy(e,t)}var Jl=class extends em{#e;constructor(t,{headers:n={},connect:r,factory:o}){if(!t)throw new kr("Proxy URL is mandatory");super(),this[yn]=n,o?this.#e=o(t,{connect:r}):this.#e=new tm(t,{connect:r})}[Wy](t,n){let r=n.onHeaders;n.onHeaders=function(A,a,c){if(A===407){typeof n.onError=="function"&&n.onError(new kr("Proxy Authentication Required (407)"));return}r&&r.call(this,A,a,c)};let{origin:o,path:s="/",headers:i={}}=t;if(t.path=o+s,!("host"in i)&&!("Host"in i)){let{host:A}=new URL(o);i.host=A}return t.headers={...this[yn],...i},this.#e[Wy](t,n)}[jy](){return this.#e.close()}[$y](t){return this.#e.destroy(t)}},zl=class extends em{constructor(t){if(!t||typeof t=="object"&&!(t instanceof URL)&&!t.uri)throw new kr("Proxy uri is mandatory");let{clientFactory:n=SP}=t;if(typeof n!="function")throw new kr("Proxy opts.clientFactory must be a function.");let{proxyTunnel:r=!0}=t;super();let o=this.#e(t),{href:s,origin:i,port:A,protocol:a,username:c,password:d,hostname:l}=o;if(this[Qo]={uri:s,protocol:a},this[Vl]=t.requestTls,this[zy]=t.proxyTls,this[yn]=t.headers||{},this[Xy]=r,t.auth&&t.token)throw new kr("opts.auth cannot be used in combination with opts.token");t.auth?this[yn]["proxy-authorization"]=`Basic ${t.auth}`:t.token?this[yn]["proxy-authorization"]=t.token:c&&d&&(this[yn]["proxy-authorization"]=`Basic ${Buffer.from(`${decodeURIComponent(c)}:${decodeURIComponent(d)}`).toString("base64")}`);let u=Vy({...t.proxyTls});this[Ky]=Vy({...t.requestTls});let g=t.factory||TP,h=(E,B)=>{let{protocol:C}=new URL(E);return this[Qo].protocol==="socks5:"||this[Qo].protocol==="socks:"?new RP(this[Qo].uri,{headers:this[yn],connect:u,factory:g,username:t.username||c,password:t.password||d,proxyTls:t.proxyTls,requestTls:t.requestTls}):!this[Xy]&&C==="http:"&&this[Qo].protocol==="http:"?new Jl(this[Qo].uri,{headers:this[yn],connect:u,factory:g}):g(E,B)};a==="socks5:"||a==="socks:"?this[zn]=null:this[zn]=n(o,{connect:u}),this[ia]=new mP({...t,factory:h,connect:async(E,B)=>{if(!this[zn]){B(new kr("Cannot establish tunnel connection without a proxy client"));return}let C=E.host;E.port||(C+=`:${bP(E.protocol)}`);try{let y={origin:i,port:A,path:C,signal:E.signal,headers:{...this[yn],host:E.host,...E.connections==null||E.connections>0?{"proxy-connection":"keep-alive"}:{}},servername:this[zy]?.servername||l},{socket:Q,statusCode:b}=await this[zn].connect(y);if(b!==200){Q.on("error",DP).destroy(),B(new QP(`Proxy response (${b}) !== 200 when HTTP Tunneling`));return}if(Jy.proxyConnected.hasSubscribers&&Jy.proxyConnected.publish({socket:Q,connectParams:y}),E.protocol!=="https:"){B(null,Q);return}let k;this[Vl]?k=this[Vl].servername:k=E.servername,this[Ky]({...E,servername:k,httpSocket:Q},B)}catch(y){y.code==="ERR_TLS_CERT_ALTNAME_INVALID"?B(new wP(y)):B(y)}}})}dispatch(t,n){let r=kP(t.headers);if(NP(r),r&&!("host"in r)&&!("Host"in r)){let{host:o}=new URL(t.origin);r.host=o}return this[ia].dispatch({...t,headers:r},n)}#e(t){return typeof t=="string"?new URL(t):t instanceof URL?t:new URL(t.uri)}[jy](){let t=[this[ia].close()];return this[zn]&&t.push(this[zn].close()),Promise.all(t)}[$y](){let t=[this[ia].destroy()];return this[zn]&&t.push(this[zn].destroy()),Promise.all(t)}};function kP(e){if(Array.isArray(e)){let t={};for(let n=0;n<e.length;n+=2)t[e[n]]=e[n+1];return t}return e}function NP(e){if(e&&Object.keys(e).find(n=>n.toLowerCase()==="proxy-authorization"))throw new kr("Proxy-Authorization should be sent in ProxyAgent constructor")}nm.exports=zl});var Am=m((D5,im)=>{"use strict";var MP=ur(),{kClose:xP,kDestroy:UP,kClosed:rm,kDestroyed:om,kDispatch:LP,kNoProxyAgent:Vs,kHttpProxyAgent:Kn,kHttpsProxyAgent:Nr}=ne(),sm=Kl(),FP=br(),_P={"http:":80,"https:":443},Xl=class extends MP{#e=null;#t=null;#n=null;constructor(t={}){super(),this.#n=t;let{httpProxy:n,httpsProxy:r,noProxy:o,...s}=t;this[Vs]=new FP(s);let i=n??process.env.http_proxy??process.env.HTTP_PROXY;i?this[Kn]=new sm({...s,uri:i}):this[Kn]=this[Vs];let A=r??process.env.https_proxy??process.env.HTTPS_PROXY;A?this[Nr]=new sm({...s,uri:A}):this[Nr]=this[Kn],this.#o()}[LP](t,n){let r=new URL(t.origin);return this.#r(r).dispatch(t,n)}[xP](){return Promise.all([this[Vs].close(),!this[Kn][rm]&&this[Kn].close(),!this[Nr][rm]&&this[Nr].close()])}[UP](t){return Promise.all([this[Vs].destroy(t),!this[Kn][om]&&this[Kn].destroy(t),!this[Nr][om]&&this[Nr].destroy(t)])}#r(t){let{protocol:n,host:r,port:o}=t;return r=r.replace(/:\d*$/,"").toLowerCase(),o=Number.parseInt(o,10)||_P[n]||0,this.#s(r,o)?n==="https:"?this[Nr]:this[Kn]:this[Vs]}#s(t,n){if(this.#a&&this.#o(),this.#t.length===0)return!0;if(this.#e==="*")return!1;for(let r=0;r<this.#t.length;r++){let o=this.#t[r];if(!(o.port&&o.port!==n)&&(t===o.hostname||t.slice(-(o.hostname.length+1))===`.${o.hostname}`))return!1}return!0}#o(){let t=this.#n.noProxy??this.#i,n=t.split(/[,\s]/),r=[];for(let o=0;o<n.length;o++){let s=n[o];if(!s)continue;let i=s.match(/^(.+):(\d+)$/);r.push({hostname:(i?i[1]:s).replace(/^\*?\./,"").toLowerCase(),port:i?Number.parseInt(i[2],10):0})}this.#e=t,this.#t=r}get#a(){return this.#n.noProxy!==void 0?!1:this.#e!==this.#i}get#i(){return process.env.no_proxy??process.env.NO_PROXY??""}};im.exports=Xl});var Aa=m((T5,lm)=>{"use strict";var wo=require("node:assert"),{kRetryHandlerDefaultRetry:am}=ne(),{RequestRetryError:Ro}=q(),PP=Es(),{isDisturbed:cm,parseRangeHeader:dm,wrapRequestBody:vP}=G();function OP(e){let t=new Date(e).getTime();return isNaN(t)?0:t-Date.now()}function um(e,t,n,r){let o=e["content-length"];if(o==null||!Number.isFinite(t.start)||!Number.isFinite(t.end))return;let s=Number(o),i=t.end-t.start+1;if(!Number.isFinite(s)||s!==i)throw new Ro("Content-Length mismatch",n,{headers:e,data:{count:r}})}var jl=class e{constructor(t,{dispatch:n,handler:r}){let{retryOptions:o,...s}=t,{retry:i,maxRetries:A,maxTimeout:a,minTimeout:c,timeoutFactor:d,methods:l,errorCodes:u,retryAfter:g,statusCodes:h,throwOnError:E}=o??{};this.error=null,this.dispatch=n,this.handler=PP.wrap(r),this.opts={...s,body:vP(t.body)},this.retryOpts={throwOnError:E??!0,retry:i??e[am],retryAfter:g??!0,maxTimeout:a??30*1e3,minTimeout:c??500,timeoutFactor:d??2,maxRetries:A??5,methods:l??["GET","HEAD","OPTIONS","PUT","DELETE","TRACE"],statusCodes:h??[500,502,503,504,429],errorCodes:u??["ECONNRESET","ECONNREFUSED","ENOTFOUND","ENETDOWN","ENETUNREACH","EHOSTDOWN","EHOSTUNREACH","EPIPE","UND_ERR_SOCKET"]},this.retryCount=0,this.retryCountCheckpoint=0,this.headersSent=!1,this.start=0,this.end=null,this.etag=null}onResponseStartWithRetry(t,n,r,o,s){if(this.retryOpts.throwOnError){this.retryOpts.statusCodes.includes(n)===!1?(this.headersSent=!0,this.handler.onResponseStart?.(t,n,r,o)):this.error=s;return}if(cm(this.opts.body)){this.headersSent=!0,this.handler.onResponseStart?.(t,n,r,o);return}function i(A){if(A){this.headersSent=!0,this.handler.onResponseStart?.(t,n,r,o),t.resume();return}this.error=s,t.resume()}t.pause(),this.retryOpts.retry(s,{state:{counter:this.retryCount},opts:{retryOptions:this.retryOpts,...this.opts}},i.bind(this))}onRequestStart(t,n){this.headersSent||this.handler.onRequestStart?.(t,n)}onRequestUpgrade(t,n,r,o){this.handler.onRequestUpgrade?.(t,n,r,o)}static[am](t,{state:n,opts:r},o){let{statusCode:s,code:i,headers:A}=t,{method:a,retryOptions:c}=r,{maxRetries:d,minTimeout:l,maxTimeout:u,timeoutFactor:g,statusCodes:h,errorCodes:E,methods:B}=c,{counter:C}=n;if(i&&i!=="UND_ERR_REQ_RETRY"&&!E.includes(i)){o(t);return}if(Array.isArray(B)&&!B.includes(a)){o(t);return}if(s!=null&&Array.isArray(h)&&!h.includes(s)){o(t);return}if(C>d){o(t);return}let y=A?.["retry-after"];y&&(y=Number(y),y=Number.isNaN(y)?OP(A["retry-after"]):y*1e3);let Q=y>0?Math.min(y,u):Math.min(l*g**(C-1),u);setTimeout(()=>o(null),Q)}onResponseStart(t,n,r,o){if(this.error=null,this.retryCount+=1,n>=300){let s=new Ro("Request failed",n,{headers:r,data:{count:this.retryCount}});this.onResponseStartWithRetry(t,n,r,o,s);return}if(this.headersSent){if(n!==206&&(this.start>0||n!==200))throw new Ro("server does not support the range header and the payload was partially consumed",n,{headers:r,data:{count:this.retryCount}});let s=dm(r["content-range"]);if(!s)throw new Ro("Content-Range mismatch",n,{headers:r,data:{count:this.retryCount}});if(this.etag!=null&&this.etag!==r.etag)throw new Ro("ETag mismatch",n,{headers:r,data:{count:this.retryCount}});um(r,s,n,this.retryCount);let{start:i,size:A,end:a=A?A-1:null}=s;wo(this.start===i,"content-range mismatch"),wo(this.end==null||this.end===a,"content-range mismatch");return}if(this.end==null){if(n===206){let s=dm(r["content-range"]);if(s==null){this.headersSent=!0,this.handler.onResponseStart?.(t,n,r,o);return}um(r,s,n,this.retryCount);let{start:i,size:A,end:a=A?A-1:null}=s;wo(i!=null&&Number.isFinite(i),"content-range mismatch"),wo(a!=null&&Number.isFinite(a),"invalid content-length"),this.start=i,this.end=a}if(this.end==null){let s=r["content-length"];this.end=s!=null?Number(s)-1:null}wo(Number.isFinite(this.start)),wo(this.end==null||Number.isFinite(this.end),"invalid content-length"),this.resume=!0,this.etag=r.etag!=null?r.etag:null,this.etag!=null&&this.etag[0]==="W"&&this.etag[1]==="/"&&(this.etag=null),this.headersSent=!0,this.handler.onResponseStart?.(t,n,r,o)}else throw new Ro("Request failed",n,{headers:r,data:{count:this.retryCount}})}onResponseData(t,n){this.error||(this.start+=n.length,this.handler.onResponseData?.(t,n))}onResponseEnd(t,n){if(this.error&&this.retryOpts.throwOnError)throw this.error;if(!this.error)return this.retryCount=0,this.handler.onResponseEnd?.(t,n);this.retry(t)}retry(t){if(this.start!==0){let n={range:`bytes=${this.start}-${this.end??""}`};this.etag!=null&&(n["if-match"]=this.etag),this.opts={...this.opts,headers:{...this.opts.headers,...n}}}try{this.retryCountCheckpoint=this.retryCount,this.dispatch(this.opts,this)}catch(n){this.handler.onResponseError?.(t,n)}}onResponseError(t,n){if(t?.aborted||cm(this.opts.body)){this.handler.onResponseError?.(t,n);return}function r(o){if(!o){this.retry(t);return}this.handler?.onResponseError?.(t,o)}this.retryCount-this.retryCountCheckpoint>0?this.retryCount=this.retryCountCheckpoint+(this.retryCount-this.retryCountCheckpoint):this.retryCount+=1,this.retryOpts.retry(n,{state:{counter:this.retryCount},opts:{retryOptions:this.retryOpts,...this.opts}},r.bind(this))}};lm.exports=jl});var fm=m((k5,gm)=>{"use strict";var qP=Cs(),GP=Aa(),$l=class extends qP{#e=null;#t=null;constructor(t,n={}){super(n),this.#e=t,this.#t=n}dispatch(t,n){let r=new GP({...t,retryOptions:this.#t},{dispatch:this.#e.dispatch.bind(this.#e),handler:n});return this.#e.dispatch(t,r)}close(){return this.#e.close()}destroy(){return this.#e.destroy()}};gm.exports=$l});var Em=m((N5,hm)=>{"use strict";var{InvalidArgumentError:pm}=q(),HP=Hn(),Zl=class extends HP{constructor(t,n){if(typeof t=="string"&&(t=new URL(t)),t.protocol!=="http:")throw new pm("h2c-client: Only h2c protocol is supported");let{maxConcurrentStreams:r,pipelining:o,...s}=n??{},i=100,A=100;if(r!=null&&Number.isInteger(r)&&r>0&&(i=r),o!=null&&Number.isInteger(o)&&o>0&&(A=o),A>i)throw new pm("h2c-client: pipelining cannot be greater than maxConcurrentStreams");super(t,{...s,maxConcurrentStreams:i,pipelining:A,allowH2:!0,useH2c:!0})}};hm.exports=Zl});var bm=m((M5,Rm)=>{"use strict";var ym=require("node:assert"),{Readable:YP}=require("node:stream"),{RequestAbortedError:mm,NotSupportedError:WP,InvalidArgumentError:VP,AbortError:aa}=q(),Qm=G(),{ReadableStreamFrom:JP}=G(),ut=Symbol("kConsume"),ca=Symbol("kReading"),Mr=Symbol("kBody"),Cm=Symbol("kAbort"),wm=Symbol("kContentType"),eg=Symbol("kContentLength"),tg=Symbol("kUsed"),da=Symbol("kBytesRead"),zP=()=>{},ng=class extends YP{constructor({resume:t,abort:n,contentType:r="",contentLength:o,highWaterMark:s=64*1024}){super({autoDestroy:!0,read:t,highWaterMark:s}),this._readableState.dataEmitted=!1,this[Cm]=n,this[ut]=null,this[da]=0,this[Mr]=null,this[tg]=!1,this[wm]=r,this[eg]=Number.isFinite(o)?o:null,this[ca]=!1}_destroy(t,n){!t&&!this._readableState.endEmitted&&(t=new mm),t&&this[Cm](),this[tg]?n(t):setImmediate(n,t)}on(t,n){return(t==="data"||t==="readable")&&(this[ca]=!0,this[tg]=!0),super.on(t,n)}addListener(t,n){return this.on(t,n)}off(t,n){let r=super.off(t,n);return(t==="data"||t==="readable")&&(this[ca]=this.listenerCount("data")>0||this.listenerCount("readable")>0),r}removeListener(t,n){return this.off(t,n)}push(t){return t&&(this[da]+=t.length,this[ut])?(og(this[ut],t),this[ca]?super.push(t):!0):super.push(t)}text(){return Js(this,"text")}json(){return Js(this,"json")}blob(){return Js(this,"blob")}bytes(){return Js(this,"bytes")}arrayBuffer(){return Js(this,"arrayBuffer")}async formData(){throw new WP}get bodyUsed(){return Qm.isDisturbed(this)}get body(){return this[Mr]||(this[Mr]=JP(this),this[ut]&&(this[Mr].getReader(),ym(this[Mr].locked))),this[Mr]}dump(t){let n=t?.signal;if(n!=null&&(typeof n!="object"||!("aborted"in n)))return Promise.reject(new VP("signal must be an AbortSignal"));let r=t?.limit&&Number.isFinite(t.limit)?t.limit:128*1024;return n?.aborted?Promise.reject(n.reason??new aa):this._readableState.closeEmitted?Promise.resolve(null):new Promise((o,s)=>{if((this[eg]&&this[eg]>r||this[da]>r)&&this.destroy(new aa),n){let i=()=>{this.destroy(n.reason??new aa)};n.addEventListener("abort",i),this.on("close",function(){n.removeEventListener("abort",i),n.aborted?s(n.reason??new aa):o(null)})}else this.on("close",o);this.on("error",zP).on("data",()=>{this[da]>r&&this.destroy()}).resume()})}setEncoding(t){return Buffer.isEncoding(t)&&(this._readableState.encoding=t),this}};function KP(e){return e[Mr]?.locked===!0||e[ut]!==null}function XP(e){return Qm.isDisturbed(e)||KP(e)}function Js(e,t){return ym(!e[ut]),new Promise((n,r)=>{if(XP(e)){let o=e._readableState;o.destroyed&&o.closeEmitted===!1?e.on("error",r).on("close",()=>{r(new TypeError("unusable"))}):r(o.errored??new TypeError("unusable"))}else queueMicrotask(()=>{e[ut]={type:t,stream:e,resolve:n,reject:r,length:0,body:[]},e.on("error",function(o){sg(this[ut],o)}).on("close",function(){this[ut].body!==null&&sg(this[ut],new mm)}),jP(e[ut])})})}function jP(e){if(e.body===null)return;let{_readableState:t}=e.stream;if(t.bufferIndex){let n=t.bufferIndex,r=t.buffer.length;for(let o=n;o<r;o++)og(e,t.buffer[o])}else for(let n of t.buffer)og(e,n);for(t.endEmitted?Bm(this[ut],this._readableState.encoding):e.stream.on("end",function(){Bm(this[ut],this._readableState.encoding)}),e.stream.resume();e.stream.read()!=null;);}function rg(e,t,n){if(e.length===0||t===0)return"";let r=e.length===1?e[0]:Buffer.concat(e,t),o=r.length,s=o>2&&r[0]===239&&r[1]===187&&r[2]===191?3:0;return!n||n==="utf8"||n==="utf-8"?r.utf8Slice(s,o):r.subarray(s,o).toString(n)}function Im(e,t){if(e.length===0||t===0)return new Uint8Array(0);if(e.length===1)return new Uint8Array(e[0]);let n=new Uint8Array(Buffer.allocUnsafeSlow(t).buffer),r=0;for(let o=0;o<e.length;++o){let s=e[o];n.set(s,r),r+=s.length}return n}function Bm(e,t){let{type:n,body:r,resolve:o,stream:s,length:i}=e;try{n==="text"?o(rg(r,i,t)):n==="json"?o(JSON.parse(rg(r,i,t))):n==="arrayBuffer"?o(Im(r,i).buffer):n==="blob"?o(new Blob(r,{type:s[wm]})):n==="bytes"&&o(Im(r,i)),sg(e)}catch(A){s.destroy(A)}}function og(e,t){e.length+=t.length,e.body.push(t)}function sg(e,t){e.body!==null&&(t?e.reject(t):e.resolve(),e.type=null,e.stream=null,e.resolve=null,e.reject=null,e.length=0,e.body=null)}Rm.exports={Readable:ng,chunksDecode:rg}});var Tm=m((x5,ig)=>{"use strict";var $P=require("node:assert"),{AsyncResource:ZP}=require("node:async_hooks"),{Readable:ev}=bm(),{InvalidArgumentError:bo,RequestAbortedError:Sm}=q(),bt=G();function zs(){}var ua=class extends ZP{constructor(t,n){if(!t||typeof t!="object")throw new bo("invalid opts");let{signal:r,method:o,opaque:s,body:i,onInfo:A,responseHeaders:a,highWaterMark:c}=t;try{if(typeof n!="function")throw new bo("invalid callback");if(c!=null&&(!Number.isFinite(c)||c<0))throw new bo("invalid highWaterMark");if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new bo("signal must be an EventEmitter or EventTarget");if(o==="CONNECT")throw new bo("invalid method");if(A&&typeof A!="function")throw new bo("invalid onInfo callback");super("UNDICI_REQUEST")}catch(d){throw bt.isStream(i)&&bt.destroy(i.on("error",zs),d),d}this.method=o,this.responseHeaders=a||null,this.opaque=s||null,this.callback=n,this.res=null,this.abort=null,this.body=i,this.trailers={},this.context=null,this.onInfo=A||null,this.highWaterMark=c,this.reason=null,this.removeAbortListener=null,r?.aborted?this.reason=r.reason??new Sm:r&&(this.removeAbortListener=bt.addAbortListener(r,()=>{this.reason=r.reason??new Sm,this.res?bt.destroy(this.res.on("error",zs),this.reason):this.abort&&this.abort(this.reason)}))}onConnect(t,n){if(this.reason){t(this.reason);return}$P(this.callback),this.abort=t,this.context=n}onHeaders(t,n,r,o){let{callback:s,opaque:i,abort:A,context:a,responseHeaders:c,highWaterMark:d}=this,l=c==="raw"?bt.parseRawHeaders(n):bt.parseHeaders(n);if(t<200){this.onInfo&&this.onInfo({statusCode:t,headers:l});return}let u=c==="raw"?bt.parseHeaders(n):l,g=u["content-type"],h=u["content-length"],E=new ev({resume:r,abort:A,contentType:g,contentLength:this.method!=="HEAD"&&h?Number(h):null,highWaterMark:d});if(this.removeAbortListener&&(E.on("close",this.removeAbortListener),this.removeAbortListener=null),this.callback=null,this.res=E,s!==null)try{this.runInAsyncScope(s,null,null,{statusCode:t,statusText:o,headers:l,trailers:this.trailers,opaque:i,body:E,context:a})}catch(B){this.res=null,bt.destroy(E.on("error",zs),B),queueMicrotask(()=>{throw B})}}onData(t){return this.res.push(t)}onComplete(t){bt.parseHeaders(t,this.trailers),this.res.push(null)}onError(t){let{res:n,callback:r,body:o,opaque:s}=this;r&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(r,null,t,{opaque:s})})),n&&(this.res=null,queueMicrotask(()=>{bt.destroy(n.on("error",zs),t)})),o&&(this.body=null,bt.isStream(o)&&(o.on("error",zs),bt.destroy(o,t))),this.removeAbortListener&&(this.removeAbortListener(),this.removeAbortListener=null)}};function Dm(e,t){if(t===void 0)return new Promise((n,r)=>{Dm.call(this,e,(o,s)=>o?r(o):n(s))});try{let n=new ua(e,t);this.dispatch(e,n)}catch(n){if(typeof t!="function")throw n;let r=e?.opaque;queueMicrotask(()=>t(n,{opaque:r}))}}ig.exports=Dm;ig.exports.RequestHandler=ua});var Ks=m((U5,Mm)=>{"use strict";var{addAbortListener:tv}=G(),{RequestAbortedError:nv}=q(),So=Symbol("kListener"),Kt=Symbol("kSignal");function km(e){e.abort?e.abort(e[Kt]?.reason):e.reason=e[Kt]?.reason??new nv,Nm(e)}function rv(e,t){if(e.reason=null,e[Kt]=null,e[So]=null,!!t){if(t.aborted){km(e);return}e[Kt]=t,e[So]=()=>{km(e)},tv(e[Kt],e[So])}}function Nm(e){e[Kt]&&("removeEventListener"in e[Kt]?e[Kt].removeEventListener("abort",e[So]):e[Kt].removeListener("abort",e[So]),e[Kt]=null,e[So]=null)}Mm.exports={addSignal:rv,removeSignal:Nm}});var Fm=m((L5,Lm)=>{"use strict";var ov=require("node:assert"),{finished:sv}=require("node:stream"),{AsyncResource:iv}=require("node:async_hooks"),{InvalidArgumentError:Do,InvalidReturnValueError:Av}=q(),mn=G(),{addSignal:av,removeSignal:xm}=Ks();function cv(){}var Ag=class extends iv{constructor(t,n,r){if(!t||typeof t!="object")throw new Do("invalid opts");let{signal:o,method:s,opaque:i,body:A,onInfo:a,responseHeaders:c}=t;try{if(typeof r!="function")throw new Do("invalid callback");if(typeof n!="function")throw new Do("invalid factory");if(o&&typeof o.on!="function"&&typeof o.addEventListener!="function")throw new Do("signal must be an EventEmitter or EventTarget");if(s==="CONNECT")throw new Do("invalid method");if(a&&typeof a!="function")throw new Do("invalid onInfo callback");super("UNDICI_STREAM")}catch(d){throw mn.isStream(A)&&mn.destroy(A.on("error",cv),d),d}this.responseHeaders=c||null,this.opaque=i||null,this.factory=n,this.callback=r,this.res=null,this.abort=null,this.context=null,this.trailers=null,this.body=A,this.onInfo=a||null,mn.isStream(A)&&A.on("error",d=>{this.onError(d)}),av(this,o)}onConnect(t,n){if(this.reason){t(this.reason);return}ov(this.callback),this.abort=t,this.context=n}onHeaders(t,n,r,o){let{factory:s,opaque:i,context:A,responseHeaders:a}=this,c=a==="raw"?mn.parseRawHeaders(n):mn.parseHeaders(n);if(t<200){this.onInfo&&this.onInfo({statusCode:t,headers:c});return}if(this.factory=null,s===null)return;let d=this.runInAsyncScope(s,null,{statusCode:t,headers:c,opaque:i,context:A});if(!d||typeof d.write!="function"||typeof d.end!="function"||typeof d.on!="function")throw new Av("expected Writable");return sv(d,{readable:!1},u=>{let{callback:g,res:h,opaque:E,trailers:B,abort:C}=this;this.res=null,(u||!h?.readable)&&mn.destroy(h,u),this.callback=null,this.runInAsyncScope(g,null,u||null,{opaque:E,trailers:B}),u&&C()}),d.on("drain",r),this.res=d,(d.writableNeedDrain!==void 0?d.writableNeedDrain:d._writableState?.needDrain)!==!0}onData(t){let{res:n}=this;return n?n.write(t):!0}onComplete(t){let{res:n}=this;xm(this),n&&(this.trailers=mn.parseHeaders(t),n.end())}onError(t){let{res:n,callback:r,opaque:o,body:s}=this;xm(this),this.factory=null,n?(this.res=null,mn.destroy(n,t)):r&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(r,null,t,{opaque:o})})),s&&(this.body=null,mn.destroy(s,t))}};function Um(e,t,n){if(n===void 0)return new Promise((r,o)=>{Um.call(this,e,t,(s,i)=>s?o(s):r(i))});try{let r=new Ag(e,t,n);this.dispatch(e,r)}catch(r){if(typeof n!="function")throw r;let o=e?.opaque;queueMicrotask(()=>n(r,{opaque:o}))}}Lm.exports=Um});var Om=m((F5,vm)=>{"use strict";var{Readable:Pm,Duplex:dv,PassThrough:uv}=require("node:stream"),lv=require("node:assert"),{AsyncResource:gv}=require("node:async_hooks"),{InvalidArgumentError:Xs,InvalidReturnValueError:fv,RequestAbortedError:ag}=q(),Xt=G(),{addSignal:pv,removeSignal:hv}=Ks();function _m(){}var To=Symbol("resume"),cg=class extends Pm{constructor(){super({autoDestroy:!0}),this[To]=null}_read(){let{[To]:t}=this;t&&(this[To]=null,t())}_destroy(t,n){this._read(),n(t)}},dg=class extends Pm{constructor(t){super({autoDestroy:!0}),this[To]=t}_read(){this[To]()}_destroy(t,n){!t&&!this._readableState.endEmitted&&(t=new ag),n(t)}},ug=class extends gv{constructor(t,n){if(!t||typeof t!="object")throw new Xs("invalid opts");if(typeof n!="function")throw new Xs("invalid handler");let{signal:r,method:o,opaque:s,onInfo:i,responseHeaders:A}=t;if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new Xs("signal must be an EventEmitter or EventTarget");if(o==="CONNECT")throw new Xs("invalid method");if(i&&typeof i!="function")throw new Xs("invalid onInfo callback");super("UNDICI_PIPELINE"),this.opaque=s||null,this.responseHeaders=A||null,this.handler=n,this.abort=null,this.context=null,this.onInfo=i||null,this.req=new cg().on("error",_m),this.ret=new dv({readableObjectMode:t.objectMode,autoDestroy:!0,read:()=>{let{body:a}=this;a?.resume&&a.resume()},write:(a,c,d)=>{let{req:l}=this;l.push(a,c)||l._readableState.destroyed?d():l[To]=d},destroy:(a,c)=>{let{body:d,req:l,res:u,ret:g,abort:h}=this;!a&&!g._readableState.endEmitted&&(a=new ag),h&&a&&h(),Xt.destroy(d,a),Xt.destroy(l,a),Xt.destroy(u,a),hv(this),c(a)}}).on("prefinish",()=>{let{req:a}=this;a.push(null)}),this.res=null,pv(this,r)}onConnect(t,n){let{res:r}=this;if(this.reason){t(this.reason);return}lv(!r,"pipeline cannot be retried"),this.abort=t,this.context=n}onHeaders(t,n,r){let{opaque:o,handler:s,context:i}=this;if(t<200){if(this.onInfo){let a=this.responseHeaders==="raw"?Xt.parseRawHeaders(n):Xt.parseHeaders(n);this.onInfo({statusCode:t,headers:a})}return}this.res=new dg(r);let A;try{this.handler=null;let a=this.responseHeaders==="raw"?Xt.parseRawHeaders(n):Xt.parseHeaders(n);A=this.runInAsyncScope(s,null,{statusCode:t,headers:a,opaque:o,body:this.res,context:i})}catch(a){throw this.res.on("error",_m),a}if(!A||typeof A.on!="function")throw new fv("expected Readable");A.on("data",a=>{let{ret:c,body:d}=this;!c.push(a)&&d.pause&&d.pause()}).on("error",a=>{let{ret:c}=this;Xt.destroy(c,a)}).on("end",()=>{let{ret:a}=this;a.push(null)}).on("close",()=>{let{ret:a}=this;a._readableState.ended||Xt.destroy(a,new ag)}),this.body=A}onData(t){let{res:n}=this;return n.push(t)}onComplete(t){let{res:n}=this;n.push(null)}onError(t){let{ret:n}=this;this.handler=null,Xt.destroy(n,t)}};function Ev(e,t){try{let n=new ug(e,t);return this.dispatch({...e,body:n.req},n),n.ret}catch(n){return new uv().destroy(n)}}vm.exports=Ev});var Vm=m((_5,Wm)=>{"use strict";var{InvalidArgumentError:lg,SocketError:Cv}=q(),{AsyncResource:Iv}=require("node:async_hooks"),qm=require("node:assert"),Gm=G(),{kHTTP2Stream:Bv}=ne(),{addSignal:yv,removeSignal:Hm}=Ks(),gg=class extends Iv{constructor(t,n){if(!t||typeof t!="object")throw new lg("invalid opts");if(typeof n!="function")throw new lg("invalid callback");let{signal:r,opaque:o,responseHeaders:s}=t;if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new lg("signal must be an EventEmitter or EventTarget");super("UNDICI_UPGRADE"),this.responseHeaders=s||null,this.opaque=o||null,this.callback=n,this.abort=null,this.context=null,yv(this,r)}onConnect(t,n){if(this.reason){t(this.reason);return}qm(this.callback),this.abort=t,this.context=null}onHeaders(){throw new Cv("bad upgrade",null)}onUpgrade(t,n,r){qm(r[Bv]===!0?t===200:t===101);let{callback:o,opaque:s,context:i}=this;Hm(this),this.callback=null;let A=this.responseHeaders==="raw"?Gm.parseRawHeaders(n):Gm.parseHeaders(n);this.runInAsyncScope(o,null,null,{headers:A,socket:r,opaque:s,context:i})}onError(t){let{callback:n,opaque:r}=this;Hm(this),n&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(n,null,t,{opaque:r})}))}};function Ym(e,t){if(t===void 0)return new Promise((n,r)=>{Ym.call(this,e,(o,s)=>o?r(o):n(s))});try{let n=new gg(e,t),r={...e,method:e.method||"GET",upgrade:e.protocol||"Websocket"};this.dispatch(r,n)}catch(n){if(typeof t!="function")throw n;let r=e?.opaque;queueMicrotask(()=>t(n,{opaque:r}))}}Wm.exports=Ym});var jm=m((P5,Xm)=>{"use strict";var mv=require("node:assert"),{AsyncResource:Qv}=require("node:async_hooks"),{InvalidArgumentError:fg,SocketError:wv}=q(),Jm=G(),{addSignal:Rv,removeSignal:zm}=Ks(),pg=class extends Qv{constructor(t,n){if(!t||typeof t!="object")throw new fg("invalid opts");if(typeof n!="function")throw new fg("invalid callback");let{signal:r,opaque:o,responseHeaders:s}=t;if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new fg("signal must be an EventEmitter or EventTarget");super("UNDICI_CONNECT"),this.opaque=o||null,this.responseHeaders=s||null,this.callback=n,this.abort=null,Rv(this,r)}onConnect(t,n){if(this.reason){t(this.reason);return}mv(this.callback),this.abort=t,this.context=n}onHeaders(){throw new wv("bad connect",null)}onUpgrade(t,n,r){let{callback:o,opaque:s,context:i}=this;zm(this),this.callback=null;let A=n;A!=null&&(A=this.responseHeaders==="raw"?Jm.parseRawHeaders(n):Jm.parseHeaders(n)),this.runInAsyncScope(o,null,null,{statusCode:t,headers:A,socket:r,opaque:s,context:i})}onError(t){let{callback:n,opaque:r}=this;zm(this),n&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(n,null,t,{opaque:r})}))}};function Km(e,t){if(t===void 0)return new Promise((n,r)=>{Km.call(this,e,(o,s)=>o?r(o):n(s))});try{let n=new pg(e,t),r={...e,method:"CONNECT"};this.dispatch(r,n)}catch(n){if(typeof t!="function")throw n;let r=e?.opaque;queueMicrotask(()=>t(n,{opaque:r}))}}Xm.exports=Km});var $m=m((v5,ko)=>{"use strict";ko.exports.request=Tm();ko.exports.stream=Fm();ko.exports.pipeline=Om();ko.exports.upgrade=Vm();ko.exports.connect=jm()});var Eg=m((O5,eQ)=>{"use strict";var{UndiciError:bv}=q(),Zm=Symbol.for("undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED"),hg=class extends bv{constructor(t){super(t),this.name="MockNotMatchedError",this.message=t||"The request does not match any registered mock dispatches",this.code="UND_MOCK_ERR_MOCK_NOT_MATCHED"}static[Symbol.hasInstance](t){return t&&t[Zm]===!0}get[Zm](){return!0}};eQ.exports={MockNotMatchedError:hg}});var xr=m((q5,tQ)=>{"use strict";tQ.exports={kAgent:Symbol("agent"),kOptions:Symbol("options"),kFactory:Symbol("factory"),kDispatches:Symbol("dispatches"),kDispatchKey:Symbol("dispatch key"),kDefaultHeaders:Symbol("default headers"),kDefaultTrailers:Symbol("default trailers"),kContentLength:Symbol("content length"),kMockAgent:Symbol("mock agent"),kMockAgentSet:Symbol("mock agent set"),kMockAgentGet:Symbol("mock agent get"),kMockDispatch:Symbol("mock dispatch"),kClose:Symbol("close"),kOriginalClose:Symbol("original agent close"),kOriginalDispatch:Symbol("original dispatch"),kOrigin:Symbol("origin"),kIsMockActive:Symbol("is mock active"),kNetConnect:Symbol("net connect"),kGetNetConnect:Symbol("get net connect"),kConnected:Symbol("connected"),kIgnoreTrailingSlash:Symbol("ignore trailing slash"),kMockAgentMockCallHistoryInstance:Symbol("mock agent mock call history name"),kMockAgentRegisterCallHistory:Symbol("mock agent register mock call history"),kMockAgentAddCallHistoryLog:Symbol("mock agent add call history log"),kMockAgentIsCallHistoryEnabled:Symbol("mock agent is call history enabled"),kMockAgentAcceptsNonStandardSearchParameters:Symbol("mock agent accepts non standard search parameters"),kMockCallHistoryAddLog:Symbol("mock call history add log"),kTotalDispatchCount:Symbol("total dispatch count")}});var js=m((G5,lQ)=>{"use strict";var{MockNotMatchedError:No}=Eg(),{kDispatches:Ur,kMockAgent:Sv,kOriginalDispatch:Dv,kOrigin:Tv,kGetNetConnect:kv,kTotalDispatchCount:Bg}=xr(),{serializePathWithQuery:Nv}=G(),{STATUS_CODES:Mv}=require("node:http"),{types:{isPromise:xv}}=require("node:util"),{InvalidArgumentError:Cg}=q();function jt(e,t){return typeof e=="string"?e===t:e instanceof RegExp?e.test(t):typeof e=="function"?e(t)===!0:!1}function rQ(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t.toLocaleLowerCase(),n]))}function oQ(e,t){if(Array.isArray(e)){for(let n=0;n<e.length;n+=2)if(e[n].toLocaleLowerCase()===t.toLocaleLowerCase())return e[n+1];return}else return typeof e.get=="function"?e.get(t):rQ(e)[t.toLocaleLowerCase()]}function Qg(e){let t=e.slice(),n=[];for(let r=0;r<t.length;r+=2)n.push([t[r],t[r+1]]);return Object.fromEntries(n)}function sQ(e,t){if(typeof e.headers=="function")return Array.isArray(t)&&(t=Qg(t)),e.headers(t?rQ(t):{});if(typeof e.headers>"u")return!0;if(typeof t!="object"||typeof e.headers!="object")return!1;for(let[n,r]of Object.entries(e.headers)){let o=oQ(t,n);if(!jt(r,o))return!1}return!0}function Uv(e){if(typeof e!="string")return e;let t=new URLSearchParams(e),n=new URLSearchParams;for(let[r,o]of t.entries()){if(r=r.replace("[]",""),/^(['"]).*\1$/.test(o)){n.append(r,o);continue}if(o.includes(",")){let i=o.split(",");for(let A of i)n.append(r,A);continue}n.append(r,o)}return n}function Ig(e){if(typeof e!="string")return e;let t=e.split("?",3);if(t.length!==2)return e;let n=new URLSearchParams(t.pop());return n.sort(),[...t,n.toString()].join("?")}function Lv(e,{path:t,method:n,body:r,headers:o}){let s=jt(e.path,t),i=jt(e.method,n),A=typeof e.body<"u"?jt(e.body,r):!0,a=sQ(e,o);return s&&i&&A&&a}function iQ(e){return Buffer.isBuffer(e)||e instanceof Uint8Array||e instanceof ArrayBuffer?e:typeof e=="object"?JSON.stringify(e):e?e.toString():""}function AQ(e,t){let n=t.query?Nv(t.path,t.query):t.path,r=typeof n=="string"?Ig(n):n,o=nQ(r),s=e.filter(({consumed:i})=>!i).filter(({path:i,ignoreTrailingSlash:A})=>A?jt(nQ(Ig(i)),o):jt(Ig(i),r));if(s.length===0)throw new No(`Mock dispatch not matched for path '${r}'`);if(s=s.filter(({method:i})=>jt(i,t.method)),s.length===0)throw new No(`Mock dispatch not matched for method '${t.method}' on path '${r}'`);if(s=s.filter(({body:i})=>typeof i<"u"?jt(i,t.body):!0),s.length===0)throw new No(`Mock dispatch not matched for body '${t.body}' on path '${r}'`);if(s=s.filter(i=>sQ(i,t.headers)),s.length===0){let i=typeof t.headers=="object"?JSON.stringify(t.headers):t.headers;throw new No(`Mock dispatch not matched for headers '${i}' on path '${r}'`)}return s[0]}function Fv(e,t,n,r){let o={timesInvoked:0,times:1,persist:!1,consumed:!1,...r},s=typeof n=="function"?{callback:n}:{...n},i={...o,...t,pending:!0,data:{error:null,...s}};return e.push(i),e[Bg]=(e[Bg]||0)+1,i}function yg(e,t){let n=e.findIndex(r=>r.consumed?Lv(r,t):!1);n!==-1&&e.splice(n,1)}function nQ(e){for(;e.endsWith("/");)e=e.slice(0,-1);return e.length===0&&(e="/"),e}function aQ(e){let{path:t,method:n,body:r,headers:o,query:s}=e;return{path:t,method:n,body:r,headers:o,query:s}}function mg(e){let t=Object.keys(e),n=[];for(let r=0;r<t.length;++r){let o=t[r],s=e[o],i=Buffer.from(`${o}`);if(Array.isArray(s))for(let A=0;A<s.length;++A)n.push(i,Buffer.from(`${s[A]}`));else n.push(i,Buffer.from(`${s}`))}return n}function cQ(e){return Mv[e]||"unknown"}async function _v(e){let t=[];for await(let n of e)t.push(n);return Buffer.concat(t).toString("utf8")}function dQ(e,t){let n=aQ(e),r=AQ(this[Ur],n);r.timesInvoked++,r.data.callback&&(r.data={...r.data,...r.data.callback(e)});let{data:{statusCode:o,data:s,headers:i,trailers:A,error:a},delay:c,persist:d}=r,{timesInvoked:l,times:u}=r;if(r.consumed=!d&&l>=u,r.pending=l<u,a!==null)return yg(this[Ur],n),t.onError(a),!0;let g=!1,h=null;function E(y){g||(g=!0,h!==null&&(clearTimeout(h),h=null),t.onError(y))}t.onConnect?.(E,null),typeof c=="number"&&c>0?h=setTimeout(()=>{h=null,B(this[Ur])},c):B(this[Ur]);function B(y,Q=s){if(g)return;let b=Array.isArray(e.headers)?Qg(e.headers):e.headers,k=typeof Q=="function"?Q({...e,headers:b}):Q;if(xv(k))return k.then(U=>B(y,U));if(g)return;let x=iQ(k),N=mg(i),M=mg(A);t.onHeaders?.(o,N,C,cQ(o)),t.onData?.(Buffer.from(x)),t.onComplete?.(M),yg(y,n)}function C(){}return!0}function Pv(){let e=this[Sv],t=this[Tv],n=this[Dv];return function(o,s){if(e.isMockActive)try{dQ.call(this,o,s)}catch(i){if(i.code==="UND_MOCK_ERR_MOCK_NOT_MATCHED"){let A=e[kv](),a=this[Ur][Bg]||this[Ur].length,d=`, ${this[Ur].filter(({consumed:l})=>!l).length} interceptor(s) remaining out of ${a} defined`;if(A===!1)throw new No(`${i.message}: subsequent request to origin ${t} was not allowed (net.connect disabled)${d}`);if(uQ(A,t))n.call(this,o,s);else throw new No(`${i.message}: subsequent request to origin ${t} was not allowed (net.connect is not enabled for this origin)${d}`)}else throw i}else n.call(this,o,s)}}function uQ(e,t){let n=new URL(t);return e===!0?!0:!!(Array.isArray(e)&&e.some(r=>jt(r,n.host)))}function vv(e){return typeof e!="string"&&!(e instanceof URL)?e:e instanceof URL?e.origin:e.toLowerCase()}function Ov(e){let{agent:t,...n}=e;if("enableCallHistory"in n&&typeof n.enableCallHistory!="boolean")throw new Cg("options.enableCallHistory must to be a boolean");if("acceptNonStandardSearchParameters"in n&&typeof n.acceptNonStandardSearchParameters!="boolean")throw new Cg("options.acceptNonStandardSearchParameters must to be a boolean");if("ignoreTrailingSlash"in n&&typeof n.ignoreTrailingSlash!="boolean")throw new Cg("options.ignoreTrailingSlash must to be a boolean");return n}lQ.exports={getResponseData:iQ,getMockDispatch:AQ,addMockDispatch:Fv,deleteMockDispatch:yg,buildKey:aQ,generateKeyValues:mg,matchValue:jt,getResponse:_v,getStatusText:cQ,mockDispatch:dQ,buildMockDispatch:Pv,checkNetConnect:uQ,buildAndValidateMockOptions:Ov,getHeaderByName:oQ,buildHeadersFromArray:Qg,normalizeSearchParams:Uv,normalizeOrigin:vv}});var kg=m((H5,Tg)=>{"use strict";var{getResponseData:qv,buildKey:Gv,addMockDispatch:wg}=js(),{kDispatches:la,kDispatchKey:ga,kDefaultHeaders:Rg,kDefaultTrailers:bg,kContentLength:Sg,kMockDispatch:fa,kIgnoreTrailingSlash:pa}=xr(),{InvalidArgumentError:$t}=q(),{serializePathWithQuery:Hv}=G(),Mo=class{constructor(t){this[fa]=t}delay(t){if(typeof t!="number"||!Number.isInteger(t)||t<=0)throw new $t("waitInMs must be a valid integer > 0");return this[fa].delay=t,this}persist(){return this[fa].persist=!0,this}times(t){if(typeof t!="number"||!Number.isInteger(t)||t<=0)throw new $t("repeatTimes must be a valid integer > 0");return this[fa].times=t,this}},Dg=class{constructor(t,n){if(typeof t!="object")throw new $t("opts must be an object");if(typeof t.path>"u")throw new $t("opts.path must be defined");if(typeof t.method>"u"&&(t.method="GET"),typeof t.path=="string")if(t.query)t.path=Hv(t.path,t.query);else{let r=new URL(t.path,"data://");t.path=r.pathname+r.search}typeof t.method=="string"&&(t.method=t.method.toUpperCase()),this[ga]=Gv(t),this[la]=n,this[pa]=t.ignoreTrailingSlash??!1,this[Rg]={},this[bg]={},this[Sg]=!1}createMockScopeDispatchData({statusCode:t,data:n,responseOptions:r}){let o=qv(n),s=this[Sg]?{"content-length":o.length}:{},i={...this[Rg],...s,...r.headers},A={...this[bg],...r.trailers};return{statusCode:t,data:n,headers:i,trailers:A}}validateReplyParameters(t){if(typeof t.statusCode>"u")throw new $t("statusCode must be defined");if(typeof t.responseOptions!="object"||t.responseOptions===null)throw new $t("responseOptions must be an object")}reply(t){if(typeof t=="function"){let s=A=>{let a=t(A);if(typeof a!="object"||a===null)throw new $t("reply options callback must return an object");let c={data:"",responseOptions:{},...a};return this.validateReplyParameters(c),{...this.createMockScopeDispatchData(c)}},i=wg(this[la],this[ga],s,{ignoreTrailingSlash:this[pa]});return new Mo(i)}let n={statusCode:t,data:arguments[1]===void 0?"":arguments[1],responseOptions:arguments[2]===void 0?{}:arguments[2]};this.validateReplyParameters(n);let r=this.createMockScopeDispatchData(n),o=wg(this[la],this[ga],r,{ignoreTrailingSlash:this[pa]});return new Mo(o)}replyWithError(t){if(typeof t>"u")throw new $t("error must be defined");let n=wg(this[la],this[ga],{error:t},{ignoreTrailingSlash:this[pa]});return new Mo(n)}defaultReplyHeaders(t){if(typeof t>"u")throw new $t("headers must be defined");return this[Rg]=t,this}defaultReplyTrailers(t){if(typeof t>"u")throw new $t("trailers must be defined");return this[bg]=t,this}replyContentLength(){return this[Sg]=!0,this}};Tg.exports.MockInterceptor=Dg;Tg.exports.MockScope=Mo});var Ug=m((Y5,IQ)=>{"use strict";var{promisify:Yv}=require("node:util"),Wv=Hn(),{buildMockDispatch:Vv}=js(),{kDispatches:Ng,kMockAgent:gQ,kClose:fQ,kOriginalClose:pQ,kOrigin:hQ,kOriginalDispatch:Jv,kConnected:Mg,kIgnoreTrailingSlash:EQ}=xr(),{MockInterceptor:zv}=kg(),CQ=ne(),{InvalidArgumentError:Kv}=q(),xg=class extends Wv{constructor(t,n){if(!n||!n.agent||typeof n.agent.dispatch!="function")throw new Kv("Argument opts.agent must implement Agent");super(t,n),this[gQ]=n.agent,this[hQ]=t,this[EQ]=n.ignoreTrailingSlash??!1,this[Ng]=[],this[Mg]=1,this[Jv]=this.dispatch,this[pQ]=this.close.bind(this),this.dispatch=Vv.call(this),this.close=this[fQ]}get[CQ.kConnected](){return this[Mg]}intercept(t){return new zv(t&&{ignoreTrailingSlash:this[EQ],...t},this[Ng])}cleanMocks(){this[Ng]=[]}async[fQ](){await Yv(this[pQ])(),this[Mg]=0,this[gQ][CQ.kClients].delete(this[hQ])}};IQ.exports=xg});var _g=m((W5,Fg)=>{"use strict";var{kMockCallHistoryAddLog:Xv}=xr(),{InvalidArgumentError:$n}=q();function Xn(e,t,n,r,o){switch(t.operator){case"OR":return r.push(...n(e,o)),r;case"AND":return n(e,r);default:throw new $n("options.operator must to be a case insensitive string equal to 'OR' or 'AND'")}}function jv(e={}){let t={};if("operator"in e){if(typeof e.operator!="string"||e.operator.toUpperCase()!=="OR"&&e.operator.toUpperCase()!=="AND")throw new $n("options.operator must to be a case insensitive string equal to 'OR' or 'AND'");return{...t,operator:e.operator.toUpperCase()}}return t}function jn(e){return(t,n)=>{if(typeof t=="string"||t==null)return n.filter(r=>r[e]===t);if(t instanceof RegExp)return n.filter(r=>t.test(r[e]));throw new $n(`${e} parameter should be one of string, regexp, undefined or null`)}}function $v(e){try{let t=new URL(e.path,e.origin);return t.search.length!==0||(t.search=new URLSearchParams(e.query).toString()),t}catch(t){throw new $n("An error occurred when computing MockCallHistoryLog.url",{cause:t})}}var ha=class{constructor(t={}){this.body=t.body,this.headers=t.headers,this.method=t.method;let n=$v(t);this.fullUrl=n.toString(),this.origin=n.origin,this.path=n.pathname,this.searchParams=Object.fromEntries(n.searchParams),this.protocol=n.protocol,this.host=n.host,this.port=n.port,this.hash=n.hash}toMap(){return new Map([["protocol",this.protocol],["host",this.host],["port",this.port],["origin",this.origin],["path",this.path],["hash",this.hash],["searchParams",this.searchParams],["fullUrl",this.fullUrl],["method",this.method],["body",this.body],["headers",this.headers]])}toString(){let t={betweenKeyValueSeparator:"->",betweenPairSeparator:"|"},n="";return this.toMap().forEach((r,o)=>{(typeof r=="string"||r===void 0||r===null)&&(n=`${n}${o}${t.betweenKeyValueSeparator}${r}${t.betweenPairSeparator}`),(typeof r=="object"&&r!==null||Array.isArray(r))&&(n=`${n}${o}${t.betweenKeyValueSeparator}${JSON.stringify(r)}${t.betweenPairSeparator}`)}),n.slice(0,-1)}},Lg=class{logs=[];calls(){return this.logs}firstCall(){return this.logs.at(0)}lastCall(){return this.logs.at(-1)}nthCall(t){if(typeof t!="number")throw new $n("nthCall must be called with a number");if(!Number.isInteger(t))throw new $n("nthCall must be called with an integer");if(Math.sign(t)!==1)throw new $n("nthCall must be called with a positive value. use firstCall or lastCall instead");return this.logs.at(t-1)}filterCalls(t,n){if(this.logs.length===0)return this.logs;if(typeof t=="function")return this.logs.filter(t);if(t instanceof RegExp)return this.logs.filter(r=>t.test(r.toString()));if(typeof t=="object"&&t!==null){if(Object.keys(t).length===0)return this.logs;let r={operator:"OR",...jv(n)},o=r.operator==="AND"?this.logs:[];return"protocol"in t&&(o=Xn(t.protocol,r,this.filterCallsByProtocol,o,this.logs)),"host"in t&&(o=Xn(t.host,r,this.filterCallsByHost,o,this.logs)),"port"in t&&(o=Xn(t.port,r,this.filterCallsByPort,o,this.logs)),"origin"in t&&(o=Xn(t.origin,r,this.filterCallsByOrigin,o,this.logs)),"path"in t&&(o=Xn(t.path,r,this.filterCallsByPath,o,this.logs)),"hash"in t&&(o=Xn(t.hash,r,this.filterCallsByHash,o,this.logs)),"fullUrl"in t&&(o=Xn(t.fullUrl,r,this.filterCallsByFullUrl,o,this.logs)),"method"in t&&(o=Xn(t.method,r,this.filterCallsByMethod,o,this.logs)),[...new Set(o)]}throw new $n("criteria parameter should be one of function, regexp, or object")}filterCallsByProtocol=jn.call(this,"protocol");filterCallsByHost=jn.call(this,"host");filterCallsByPort=jn.call(this,"port");filterCallsByOrigin=jn.call(this,"origin");filterCallsByPath=jn.call(this,"path");filterCallsByHash=jn.call(this,"hash");filterCallsByFullUrl=jn.call(this,"fullUrl");filterCallsByMethod=jn.call(this,"method");clear(){this.logs=[]}[Xv](t){let n=new ha(t);return this.logs.push(n),n}*[Symbol.iterator](){for(let t of this.calls())yield t}};Fg.exports.MockCallHistory=Lg;Fg.exports.MockCallHistoryLog=ha});var qg=m((V5,bQ)=>{"use strict";var{promisify:Zv}=require("node:util"),eO=Qr(),{buildMockDispatch:tO}=js(),{kDispatches:Pg,kMockAgent:BQ,kClose:yQ,kOriginalClose:mQ,kOrigin:QQ,kOriginalDispatch:nO,kConnected:vg,kIgnoreTrailingSlash:wQ}=xr(),{MockInterceptor:rO}=kg(),RQ=ne(),{InvalidArgumentError:oO}=q(),Og=class extends eO{constructor(t,n){if(!n||!n.agent||typeof n.agent.dispatch!="function")throw new oO("Argument opts.agent must implement Agent");super(t,n),this[BQ]=n.agent,this[QQ]=t,this[wQ]=n.ignoreTrailingSlash??!1,this[Pg]=[],this[vg]=1,this[nO]=this.dispatch,this[mQ]=this.close.bind(this),this.dispatch=tO.call(this),this.close=this[yQ]}get[RQ.kConnected](){return this[vg]}intercept(t){return new rO(t&&{ignoreTrailingSlash:this[wQ],...t},this[Pg])}cleanMocks(){this[Pg]=[]}async[yQ](){await Zv(this[mQ])(),this[vg]=0,this[BQ][RQ.kClients].delete(this[QQ])}};bQ.exports=Og});var DQ=m((z5,SQ)=>{"use strict";var{Transform:sO}=require("node:stream"),{Console:iO}=require("node:console"),AO=process.versions.icu?"\u2705":"Y ",aO=process.versions.icu?"\u274C":"N ";SQ.exports=class{constructor({disableColors:t}={}){this.transform=new sO({transform(n,r,o){o(null,n)}}),this.logger=new iO({stdout:this.transform,inspectOptions:{colors:!t&&!process.env.CI}})}format(t){let n=t.map(({method:r,path:o,data:{statusCode:s},persist:i,times:A,timesInvoked:a,origin:c})=>({Method:r,Origin:c,Path:o,"Status code":s,Persistent:i?AO:aO,Invocations:a,Remaining:i?1/0:A-a}));return this.logger.table(n),this.transform.read().toString()}}});var Vg=m((K5,LQ)=>{"use strict";var{kClients:Lr}=ne(),cO=br(),{kAgent:Gg,kMockAgentSet:Ea,kMockAgentGet:TQ,kDispatches:Hg,kIsMockActive:Ca,kNetConnect:Fr,kGetNetConnect:dO,kOptions:Ia,kFactory:Ba,kMockAgentRegisterCallHistory:Yg,kMockAgentIsCallHistoryEnabled:$s,kMockAgentAddCallHistoryLog:kQ,kMockAgentMockCallHistoryInstance:xo,kMockAgentAcceptsNonStandardSearchParameters:NQ,kMockCallHistoryAddLog:uO,kIgnoreTrailingSlash:MQ}=xr(),lO=Ug(),gO=qg(),{matchValue:fO,normalizeSearchParams:pO,buildAndValidateMockOptions:hO,normalizeOrigin:xQ}=js(),{InvalidArgumentError:UQ,UndiciError:EO}=q(),CO=Cs(),IO=DQ(),{MockCallHistory:BO}=_g(),Wg=class extends CO{constructor(t={}){super(t);let n=hO(t);if(this[Fr]=!0,this[Ca]=!0,this[$s]=n.enableCallHistory??!1,this[NQ]=n.acceptNonStandardSearchParameters??!1,this[MQ]=n.ignoreTrailingSlash??!1,t?.agent&&typeof t.agent.dispatch!="function")throw new UQ("Argument opts.agent must implement Agent");let r=t?.agent?t.agent:new cO(t);this[Gg]=r,this[Lr]=r[Lr],this[Ia]=n,this[$s]&&this[Yg]()}get(t){let n=xQ(t),r=this[MQ]?n.replace(/\/$/,""):n,o=this[TQ](r);return o||(o=this[Ba](r),this[Ea](r,o)),o}dispatch(t,n){t.origin=xQ(t.origin),this.get(t.origin),this[kQ](t);let r=this[NQ],o={...t};if(r&&o.path){let[s,i]=o.path.split("?"),A=pO(i,r);o.path=`${s}?${A}`}return this[Gg].dispatch(o,n)}async close(){this.clearCallHistory(),await this[Gg].close(),this[Lr].clear()}deactivate(){this[Ca]=!1}activate(){this[Ca]=!0}enableNetConnect(t){if(typeof t=="string"||typeof t=="function"||t instanceof RegExp)Array.isArray(this[Fr])?this[Fr].push(t):this[Fr]=[t];else if(typeof t>"u")this[Fr]=!0;else throw new UQ("Unsupported matcher. Must be one of String|Function|RegExp.")}disableNetConnect(){this[Fr]=!1}enableCallHistory(){return this[$s]=!0,this}disableCallHistory(){return this[$s]=!1,this}getCallHistory(){return this[xo]}clearCallHistory(){this[xo]!==void 0&&this[xo].clear()}get isMockActive(){return this[Ca]}[Yg](){this[xo]===void 0&&(this[xo]=new BO)}[kQ](t){this[$s]&&(this[Yg](),this[xo][uO](t))}[Ea](t,n){this[Lr].set(t,{count:0,dispatcher:n})}[Ba](t){let n=Object.assign({agent:this},this[Ia]);return this[Ia]&&this[Ia].connections===1?new lO(t,n):new gO(t,n)}[TQ](t){let n=this[Lr].get(t);if(n?.dispatcher)return n.dispatcher;if(typeof t!="string"){let r=this[Ba]("http://localhost:9999");return this[Ea](t,r),r}for(let[r,o]of Array.from(this[Lr]))if(o&&typeof r!="string"&&fO(r,t)){let s=this[Ba](t);return this[Ea](t,s),s[Hg]=o.dispatcher[Hg],s}}[dO](){return this[Fr]}pendingInterceptors(){let t=this[Lr];return Array.from(t.entries()).flatMap(([n,r])=>r.dispatcher[Hg].map(o=>({...o,origin:n}))).filter(({pending:n})=>n)}assertNoPendingInterceptors({pendingInterceptorsFormatter:t=new IO}={}){let n=this.pendingInterceptors();if(n.length!==0)throw new EO(n.length===1?`1 interceptor is pending:
|
|
41
|
+
|
|
42
|
+
${t.format(n)}`.trim():`${n.length} interceptors are pending:
|
|
43
|
+
|
|
44
|
+
${t.format(n)}`.trim())}};LQ.exports=Wg});var Jg=m((X5,vQ)=>{"use strict";var{InvalidArgumentError:yO}=q(),{runtimeFeatures:mO}=gn();function QO(e={}){let{ignoreHeaders:t=[],excludeHeaders:n=[],matchHeaders:r=[],caseSensitive:o=!1}=e;return{ignore:new Set(t.map(s=>o?s:s.toLowerCase())),exclude:new Set(n.map(s=>o?s:s.toLowerCase())),match:new Set(r.map(s=>o?s:s.toLowerCase()))}}var FQ=mO.has("crypto")?require("node:crypto"):null,wO=FQ?.hash?e=>FQ.hash("sha256",e,"base64url"):e=>Buffer.from(e).toString("base64url");function PQ(e){return Array.isArray(e)&&(e.length&1)===0}function RO(e=[]){return e.length===0?()=>!1:function(n){let r;for(let o of e)if(typeof o=="string"){if(r||(r=n.toLowerCase()),r.includes(o.toLowerCase()))return!0}else if(o instanceof RegExp&&o.test(n))return!0;return!1}}function bO(e){let t={};if(!e)return t;if(PQ(e)){for(let n=0;n<e.length;n+=2){let r=e[n],o=e[n+1];if(r&&o!==void 0){let s=Buffer.isBuffer(r)?r.toString():r,i=Buffer.isBuffer(o)?o.toString():o;t[s.toLowerCase()]=i}}return t}if(e&&typeof e=="object")for(let[n,r]of Object.entries(e))n&&typeof n=="string"&&(t[n.toLowerCase()]=Array.isArray(r)?r.join(", "):String(r));return t}var _Q=["record","playback","update"];function SO(e){if(!_Q.includes(e))throw new yO(`Invalid snapshot mode: ${e}. Must be one of: ${_Q.join(", ")}`)}vQ.exports={createHeaderFilters:QO,hashId:wO,isUndiciHeaders:PQ,normalizeHeaders:bO,isUrlExcludedFactory:RO,validateSnapshotMode:SO}});var zQ=m((j5,JQ)=>{"use strict";var{writeFile:DO,readFile:TO,mkdir:kO}=require("node:fs/promises"),{dirname:NO,resolve:OQ}=require("node:path"),{setTimeout:MO,clearTimeout:qQ}=require("node:timers"),{InvalidArgumentError:GQ,UndiciError:xO}=q(),{hashId:UO,isUrlExcludedFactory:LO,normalizeHeaders:HQ,createHeaderFilters:YQ}=Jg();function Zs(e,t,n={}){let r=new URL(e.path,e.origin),o=e._normalizedHeaders||HQ(e.headers);return e._normalizedHeaders||(e._normalizedHeaders=o),{method:e.method||"GET",url:n.matchQuery!==!1?r.toString():`${r.origin}${r.pathname}`,headers:WQ(o,t,n),body:n.matchBody!==!1&&e.body?String(e.body):""}}function WQ(e,t,n={}){if(!e||typeof e!="object")return{};let{caseSensitive:r=!1}=n,o={},{ignore:s,exclude:i,match:A}=t;for(let[a,c]of Object.entries(e)){let d=r?a:a.toLowerCase();i.has(d)||s.has(d)||A.size!==0&&!A.has(d)||(o[d]=c)}return o}function VQ(e,t,n={}){if(!e||typeof e!="object")return{};let{caseSensitive:r=!1}=n,o={},{exclude:s}=t;for(let[i,A]of Object.entries(e)){let a=r?i:i.toLowerCase();s.has(a)||(o[a]=A)}return o}function ei(e){let t=[e.method,e.url];if(e.headers&&typeof e.headers=="object"){let r=Object.keys(e.headers).sort();for(let o of r){let s=Array.isArray(e.headers[o])?e.headers[o]:[e.headers[o]];t.push(o);for(let i of s.sort())t.push(String(i))}}t.push(e.body);let n=t.join("|");return UO(n)}var zg=class{#e;#t;#n=new Map;#r;#s=1/0;#o=!1;#a;constructor(t={}){this.#r=t.snapshotPath,this.#s=t.maxSnapshots||1/0,this.#o=t.autoFlush||!1,this.flushInterval=t.flushInterval||3e4,this._flushTimer=null,this.matchOptions={matchHeaders:t.matchHeaders||[],ignoreHeaders:t.ignoreHeaders||[],excludeHeaders:t.excludeHeaders||[],matchBody:t.matchBody!==!1,matchQuery:t.matchQuery!==!1,caseSensitive:t.caseSensitive||!1},this.#a=YQ(this.matchOptions),this.shouldRecord=t.shouldRecord||(()=>!0),this.shouldPlayback=t.shouldPlayback||(()=>!0),this.#t=LO(t.excludeUrls),this.#o&&this.#r&&this.#i()}async record(t,n){if(!this.shouldRecord(t)||this.isUrlExcluded(t))return;let r=Zs(t,this.#a,this.matchOptions),o=ei(r),s=HQ(n.headers),i={statusCode:n.statusCode,headers:VQ(s,this.#a,this.matchOptions),body:Buffer.isBuffer(n.body)?n.body.toString("base64"):Buffer.from(String(n.body||"")).toString("base64"),trailers:n.trailers};if(this.#n.size>=this.#s&&!this.#n.has(o)){let a=this.#n.keys().next().value;this.#n.delete(a)}let A=this.#n.get(o);A&&A.responses?(A.responses.push(i),A.timestamp=new Date().toISOString()):this.#n.set(o,{request:r,responses:[i],callCount:0,timestamp:new Date().toISOString()}),this.#o&&this.#r&&this.#c()}isUrlExcluded(t){let n=new URL(t.path,t.origin).toString();return this.#t(n)}findSnapshot(t){if(!this.shouldPlayback(t)||this.isUrlExcluded(t))return;let n=Zs(t,this.#a,this.matchOptions),r=ei(n),o=this.#n.get(r);if(!o)return;let s=o.callCount||0,i=Math.min(s,o.responses.length-1);return o.callCount=s+1,{...o,response:o.responses[i]}}async loadSnapshots(t){let n=t||this.#r;if(!n)throw new GQ("Snapshot path is required");try{let r=await TO(OQ(n),"utf8"),o=JSON.parse(r);if(Array.isArray(o)){this.#n.clear();for(let{hash:s,snapshot:i}of o)this.#n.set(s,i)}else this.#n=new Map(Object.entries(o))}catch(r){if(r.code==="ENOENT")this.#n.clear();else throw new xO(`Failed to load snapshots from ${n}`,{cause:r})}}async saveSnapshots(t){let n=t||this.#r;if(!n)throw new GQ("Snapshot path is required");let r=OQ(n);await kO(NO(r),{recursive:!0});let o=Array.from(this.#n.entries()).map(([s,i])=>({hash:s,snapshot:i}));await DO(r,JSON.stringify(o,null,2),{flush:!0})}clear(){this.#n.clear()}getSnapshots(){return Array.from(this.#n.values())}size(){return this.#n.size}resetCallCounts(){for(let t of this.#n.values())t.callCount=0}deleteSnapshot(t){let n=Zs(t,this.#a,this.matchOptions),r=ei(n);return this.#n.delete(r)}getSnapshotInfo(t){let n=Zs(t,this.#a,this.matchOptions),r=ei(n),o=this.#n.get(r);return o?{hash:r,request:o.request,responseCount:o.responses?o.responses.length:o.response?1:0,callCount:o.callCount||0,timestamp:o.timestamp}:null}replaceSnapshots(t){if(this.#n.clear(),Array.isArray(t))for(let{hash:n,snapshot:r}of t)this.#n.set(n,r);else t&&typeof t=="object"&&(this.#n=new Map(Object.entries(t)))}#i(){return this.#c()}#A(){this.#e&&(qQ(this.#e),this.saveSnapshots().catch(()=>{}),this.#e=null)}#c(){this.#e=MO(()=>{this.saveSnapshots().catch(()=>{}),this.#o?this.#e?.refresh():this.#e=null},1e3)}destroy(){this.#A(),this.#e&&(qQ(this.#e),this.#e=null)}async close(){this.#r&&this.#n.size!==0&&await this.saveSnapshots(),this.destroy()}};JQ.exports={SnapshotRecorder:zg,formatRequestKey:Zs,createRequestHash:ei,filterHeadersForMatching:WQ,filterHeadersForStorage:VQ,createHeaderFilters:YQ}});var jQ=m(($5,XQ)=>{"use strict";var FO=br(),_O=Vg(),{SnapshotRecorder:PO}=zQ(),vO=Es(),{InvalidArgumentError:OO,UndiciError:qO}=q(),{validateSnapshotMode:GO}=Jg(),Ke=Symbol("kSnapshotRecorder"),Zt=Symbol("kSnapshotMode"),ti=Symbol("kSnapshotPath"),Kg=Symbol("kSnapshotLoaded"),ya=Symbol("kRealAgent"),KQ=!1,Xg=class extends _O{constructor(t={}){KQ||(process.emitWarning("SnapshotAgent is experimental and subject to change","ExperimentalWarning"),KQ=!0);let{mode:n="record",snapshotPath:r=null,...o}=t;if(super(o),GO(n),(n==="playback"||n==="update")&&!r)throw new OO(`snapshotPath is required when mode is '${n}'`);this[Zt]=n,this[ti]=r,this[Ke]=new PO({snapshotPath:this[ti],mode:this[Zt],maxSnapshots:t.maxSnapshots,autoFlush:t.autoFlush,flushInterval:t.flushInterval,matchHeaders:t.matchHeaders,ignoreHeaders:t.ignoreHeaders,excludeHeaders:t.excludeHeaders,matchBody:t.matchBody,matchQuery:t.matchQuery,caseSensitive:t.caseSensitive,shouldRecord:t.shouldRecord,shouldPlayback:t.shouldPlayback,excludeUrls:t.excludeUrls}),this[Kg]=!1,(this[Zt]==="record"||this[Zt]==="update"||this[Zt]==="playback"&&t.excludeUrls&&t.excludeUrls.length>0)&&(this[ya]=new FO(t)),(this[Zt]==="playback"||this[Zt]==="update")&&this[ti]&&this.loadSnapshots().catch(()=>{})}dispatch(t,n){n=vO.wrap(n);let r=this[Zt];if(this[Ke].isUrlExcluded(t))return this[ya].dispatch(t,n);if(r==="playback"||r==="update"){if(!this[Kg])return this.#e(t,n);let o=this[Ke].findSnapshot(t);if(o)return this.#n(o,n);if(r==="update")return this.#t(t,n);{let s=new qO(`No snapshot found for ${t.method||"GET"} ${t.path}`);if(n.onError){n.onError(s);return}throw s}}else if(r==="record")return this.#t(t,n)}async#e(t,n){return await this.loadSnapshots(),this.dispatch(t,n)}#t(t,n){let r={statusCode:null,headers:{},trailers:{},body:[]},o=this,s={onRequestStart(A,a){return n.onRequestStart(A,{...a,history:this.history})},onRequestUpgrade(A,a,c,d){return n.onRequestUpgrade(A,a,c,d)},onResponseStart(A,a,c,d){return r.statusCode=a,r.headers=c,n.onResponseStart(A,a,c,d)},onResponseData(A,a){return r.body.push(a),n.onResponseData(A,a)},onResponseEnd(A,a){r.trailers=a;let c=Buffer.concat(r.body);o[Ke].record(t,{statusCode:r.statusCode,headers:r.headers,body:c,trailers:r.trailers}).then(()=>n.onResponseEnd(A,a)).catch(d=>n.onResponseError(A,d))}};return this[ya].dispatch(t,s)}#n(t,n){try{let{response:r}=t,o={pause(){},resume(){},abort(i){this.aborted=!0,this.reason=i},aborted:!1,paused:!1};n.onRequestStart(o),n.onResponseStart(o,r.statusCode,r.headers);let s=Buffer.from(r.body,"base64");n.onResponseData(o,s),n.onResponseEnd(o,r.trailers)}catch(r){n.onError?.(r)}}async loadSnapshots(t){await this[Ke].loadSnapshots(t||this[ti]),this[Kg]=!0,this[Zt]==="playback"&&this.#r()}async saveSnapshots(t){return this[Ke].saveSnapshots(t||this[ti])}#r(){for(let t of this[Ke].getSnapshots()){let{request:n,responses:r,response:o}=t,s=new URL(n.url),i=this.get(s.origin),A=r?r[0]:o;A&&i.intercept({path:s.pathname+s.search,method:n.method,headers:n.headers,body:n.body}).reply(A.statusCode,A.body,{headers:A.headers,trailers:A.trailers}).persist()}}getRecorder(){return this[Ke]}getMode(){return this[Zt]}clearSnapshots(){this[Ke].clear()}resetCallCounts(){this[Ke].resetCallCounts()}deleteSnapshot(t){return this[Ke].deleteSnapshot(t)}getSnapshotInfo(t){return this[Ke].getSnapshotInfo(t)}replaceSnapshots(t){this[Ke].replaceSnapshots(t)}async close(){await this[Ke].close(),await this[ya]?.close(),await super.close()}};XQ.exports=Xg});var ma=m((Z5,tw)=>{"use strict";var HO=Symbol.for("undici.globalDispatcher.2"),$Q=Symbol.for("undici.globalDispatcher.1"),{InvalidArgumentError:YO}=q(),WO=br();ew()===void 0&&ZQ(new WO);function ZQ(e){if(!e||typeof e.dispatch!="function")throw new YO("Argument agent must implement Agent");Object.defineProperty(globalThis,HO,{value:e,writable:!0,enumerable:!1,configurable:!1}),Object.defineProperty(globalThis,$Q,{value:e,writable:!0,enumerable:!1,configurable:!1})}function ew(){return globalThis[$Q]}var VO=["fetch","Headers","Response","Request","FormData","WebSocket","CloseEvent","ErrorEvent","MessageEvent","EventSource"];tw.exports={setGlobalDispatcher:ZQ,getGlobalDispatcher:ew,installedExports:VO}});var Uo=m((t3,nw)=>{"use strict";var Qn=require("node:assert"),JO=Es();nw.exports=class{#e;#t=!1;#n=!1;#r=!1;constructor(t){if(typeof t!="object"||t===null)throw new TypeError("handler must be an object");this.#e=JO.wrap(t)}onRequestStart(...t){this.#e.onRequestStart?.(...t)}onRequestUpgrade(...t){return Qn(!this.#t),Qn(!this.#n),this.#e.onRequestUpgrade?.(...t)}onResponseStart(...t){return Qn(!this.#t),Qn(!this.#n),Qn(!this.#r),this.#r=!0,this.#e.onResponseStart?.(...t)}onResponseData(...t){return Qn(!this.#t),Qn(!this.#n),this.#e.onResponseData?.(...t)}onResponseEnd(...t){return Qn(!this.#t),Qn(!this.#n),this.#t=!0,this.#e.onResponseEnd?.(...t)}onResponseError(...t){return this.#n=!0,this.#e.onResponseError?.(...t)}onBodySent(){}}});var ef=m((n3,iw)=>{"use strict";var Xe=G(),{kBodyUsed:ni}=ne(),Zg=require("node:assert"),{InvalidArgumentError:jg}=q(),zO=require("node:events"),KO=[300,301,302,303,307,308],rw=Symbol("body"),ow=()=>{},Qa=class{constructor(t){this[rw]=t,this[ni]=!1}async*[Symbol.asyncIterator](){Zg(!this[ni],"disturbed"),this[ni]=!0,yield*this[rw]}},$g=class e{static buildDispatch(t,n){if(n!=null&&(!Number.isInteger(n)||n<0))throw new jg("maxRedirections must be a positive number");let r=t.dispatch.bind(t);return(o,s)=>r(o,new e(r,n,o,s))}constructor(t,n,r,o){if(n!=null&&(!Number.isInteger(n)||n<0))throw new jg("maxRedirections must be a positive number");this.dispatch=t,this.location=null;let{maxRedirections:s,...i}=r;this.opts=i,this.maxRedirections=n,this.handler=o,this.history=[],Xe.isStream(this.opts.body)?(Xe.bodyLength(this.opts.body)===0&&this.opts.body.on("data",function(){Zg(!1)}),typeof this.opts.body.readableDidRead!="boolean"&&(this.opts.body[ni]=!1,zO.prototype.on.call(this.opts.body,"data",function(){this[ni]=!0}))):this.opts.body&&typeof this.opts.body.pipeTo=="function"?this.opts.body=new Qa(this.opts.body):this.opts.body&&typeof this.opts.body!="string"&&!ArrayBuffer.isView(this.opts.body)&&Xe.isIterable(this.opts.body)&&!Xe.isFormDataLike(this.opts.body)&&(this.opts.body=new Qa(this.opts.body))}onRequestStart(t,n){this.handler.onRequestStart?.(t,{...n,history:this.history})}onRequestUpgrade(t,n,r,o){this.handler.onRequestUpgrade?.(t,n,r,o)}onResponseStart(t,n,r,o){if(this.opts.throwOnMaxRedirect&&this.history.length>=this.maxRedirections)throw new Error("max redirects");if((n===301||n===302)&&this.opts.method==="POST"&&(this.opts.method="GET",Xe.isStream(this.opts.body)&&Xe.destroy(this.opts.body.on("error",ow)),this.opts.body=null),n===303&&this.opts.method!=="HEAD"&&(this.opts.method="GET",Xe.isStream(this.opts.body)&&Xe.destroy(this.opts.body.on("error",ow)),this.opts.body=null),this.location=this.history.length>=this.maxRedirections||Xe.isDisturbed(this.opts.body)||KO.indexOf(n)===-1?null:r.location,this.opts.origin&&this.history.push(new URL(this.opts.path,this.opts.origin)),!this.location){this.handler.onResponseStart?.(t,n,r,o);return}let{origin:s,pathname:i,search:A}=Xe.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin))),a=A?`${i}${A}`:i,c=`${s}${a}`;for(let d of this.history)if(d.toString()===c)throw new jg(`Redirect loop detected. Cannot redirect to ${s}. This typically happens when using a Client or Pool with cross-origin redirects. Use an Agent for cross-origin redirects.`);this.opts.headers=XO(this.opts.headers,n===303,this.opts.origin!==s),this.opts.path=a,this.opts.origin=s,this.opts.query=null}onResponseData(t,n){this.location||this.handler.onResponseData?.(t,n)}onResponseEnd(t,n){this.location?this.dispatch(this.opts,this):this.handler.onResponseEnd(t,n)}onResponseError(t,n){this.handler.onResponseError?.(t,n)}};function sw(e,t,n){if(e.length===4)return Xe.headerNameToString(e)==="host";if(t&&Xe.headerNameToString(e).startsWith("content-"))return!0;if(n&&(e.length===13||e.length===6||e.length===19)){let r=Xe.headerNameToString(e);return r==="authorization"||r==="cookie"||r==="proxy-authorization"}return!1}function XO(e,t,n){let r=[];if(Array.isArray(e))for(let o=0;o<e.length;o+=2)sw(e[o],t,n)||r.push(e[o],e[o+1]);else if(e&&typeof e=="object"){let o=Xe.hasSafeIterator(e)?e:Object.entries(e);for(let[s,i]of o)sw(s,t,n)||r.push(s,i)}else Zg(e==null,"headers must be an object or an array");return r}iw.exports=$g});var aw=m((r3,Aw)=>{"use strict";var jO=ef();function $O({maxRedirections:e}={}){return t=>function(r,o){let{maxRedirections:s=e,...i}=r;if(s==null||s===0)return t(r,o);let A={...i},a=new jO(t,s,A,o);return t(A,a)}}Aw.exports=$O});var dw=m((o3,cw)=>{"use strict";var ZO=Uo(),{ResponseError:eq}=q(),tf=class extends ZO{#e;#t;#n;#r;#s;constructor(t,{handler:n}){super(n)}#o(t){return(this.#t??"").indexOf(t)===0}onRequestStart(t,n){return this.#e=0,this.#t=null,this.#n=null,this.#r=null,this.#s="",super.onRequestStart(t,n)}onResponseStart(t,n,r,o){if(this.#e=n,this.#r=r,this.#t=r["content-type"],this.#e<400)return super.onResponseStart(t,n,r,o);(this.#o("application/json")||this.#o("text/plain"))&&(this.#n=new TextDecoder("utf-8"))}onResponseData(t,n){if(this.#e<400)return super.onResponseData(t,n);this.#s+=this.#n?.decode(n,{stream:!0})??""}onResponseEnd(t,n){if(this.#e>=400){if(this.#s+=this.#n?.decode(void 0,{stream:!1})??"",this.#o("application/json"))try{this.#s=JSON.parse(this.#s)}catch{}let r,o=Error.stackTraceLimit;Error.stackTraceLimit=0;try{r=new eq("Response Error",this.#e,{body:this.#s,headers:this.#r})}finally{Error.stackTraceLimit=o}super.onResponseError(t,r)}else super.onResponseEnd(t,n)}onResponseError(t,n){super.onResponseError(t,n)}};cw.exports=()=>e=>function(n,r){return e(n,new tf(n,{handler:r}))}});var lw=m((s3,uw)=>{"use strict";var tq=Aa();uw.exports=e=>t=>function(r,o){return t(r,new tq({...r,retryOptions:{...e,...r.retryOptions}},{handler:o,dispatch:t}))}});var fw=m((i3,gw)=>{"use strict";var{InvalidArgumentError:nq,RequestAbortedError:rq}=q(),oq=Uo(),nf=class extends oq{#e=1024*1024;#t=!1;#n=0;#r=null;aborted=!1;reason=!1;constructor({maxSize:t,signal:n},r){if(t!=null&&(!Number.isFinite(t)||t<1))throw new nq("maxSize must be a number greater than 0");super(r),this.#e=t??this.#e}#s(t){this.aborted=!0,this.reason=t}onRequestStart(t,n){return t.abort=this.#s.bind(this),this.#r=t,super.onRequestStart(t,n)}onResponseStart(t,n,r,o){let s=r["content-length"];if(s!=null&&s>this.#e)throw new rq(`Response size (${s}) larger than maxSize (${this.#e})`);return this.aborted===!0?!0:super.onResponseStart(t,n,r,o)}onResponseError(t,n){this.#t||(n=this.#r?.reason??n,super.onResponseError(t,n))}onResponseData(t,n){return this.#n=this.#n+n.length,this.#n>=this.#e&&(this.#t=!0,this.aborted===!0?super.onResponseError(t,this.reason):super.onResponseEnd(t,{})),!0}onResponseEnd(t,n){if(!this.#t){if(this.#r.aborted===!0){super.onResponseError(t,this.reason);return}super.onResponseEnd(t,n)}}};function sq({maxSize:e}={maxSize:1024*1024}){return t=>function(r,o){let{dumpMaxSize:s=e}=r,i=new nf({maxSize:s,signal:r.signal},o);return t(r,i)}}gw.exports=sq});var Cw=m((A3,Ew)=>{"use strict";var{isIP:iq}=require("node:net"),{lookup:Aq}=require("node:dns"),aq=Uo(),{InvalidArgumentError:_r,InformationalError:cq}=q(),rf=Math.pow(2,31)-1;function dq(e){let t=Object.getPrototypeOf(e);return Object.prototype.hasOwnProperty.call(e,Symbol.iterator)||t!=null&&t!==Object.prototype&&typeof e[Symbol.iterator]=="function"}function pw(e){return typeof e=="string"&&e.toLowerCase()==="host"}function uq(e){if(e==null)return null;if(Array.isArray(e)){if(e.length===0||!Array.isArray(e[0]))return e;let t=[];for(let n of e)Array.isArray(n)&&n.length===2?t.push(n[0],n[1]):t.push(n);return t}if(typeof e=="object"&&dq(e)){let t=[];for(let n of e)Array.isArray(n)&&n.length===2?t.push(n[0],n[1]):t.push(n);return t}return e}function lq(e){if(e==null)return!1;if(Array.isArray(e)){if(e.length===0)return!1;for(let t=0;t<e.length;t+=2)if(pw(e[t]))return!0;return!1}if(typeof e=="object"){for(let t in e)if(pw(t))return!0}return!1}function hw(e,t){let n=uq(t);return lq(n)?n:Array.isArray(n)?["host",e,...n]:n&&typeof n=="object"?{host:e,...n}:{host:e}}var of=class{#e=0;#t=new Map;constructor(t){this.#e=t.maxItems}get size(){return this.#t.size}get(t){return this.#t.get(t)??null}set(t,n){this.#t.set(t,n)}delete(t){this.#t.delete(t)}full(){return this.size>=this.#e}},sf=class{#e=0;#t=0;dualStack=!0;affinity=null;lookup=null;pick=null;storage=null;constructor(t){this.#e=t.maxTTL,this.#t=t.maxItems,this.dualStack=t.dualStack,this.affinity=t.affinity,this.lookup=t.lookup??this.#n,this.pick=t.pick??this.#r,this.storage=t.storage??new of(t)}runLookup(t,n,r){let o=this.storage.get(t.hostname);if(o==null&&this.storage.full()){r(null,t);return}let s={affinity:this.affinity,dualStack:this.dualStack,lookup:this.lookup,pick:this.pick,...n.dns,maxTTL:this.#e,maxItems:this.#t};if(o==null)this.lookup(t,s,(i,A)=>{if(i||A==null||A.length===0){r(i??new cq("No DNS entries found"));return}this.setRecords(t,A);let a=this.storage.get(t.hostname),c=this.pick(t,a,s.affinity),d;typeof c.port=="number"?d=`:${c.port}`:t.port!==""?d=`:${t.port}`:d="",r(null,new URL(`${t.protocol}//${c.family===6?`[${c.address}]`:c.address}${d}`))});else{let i=this.pick(t,o,s.affinity);if(i==null){this.storage.delete(t.hostname),this.runLookup(t,n,r);return}let A;typeof i.port=="number"?A=`:${i.port}`:t.port!==""?A=`:${t.port}`:A="",r(null,new URL(`${t.protocol}//${i.family===6?`[${i.address}]`:i.address}${A}`))}}#n(t,n,r){Aq(t.hostname,{all:!0,family:this.dualStack===!1?this.affinity:0,order:"ipv4first"},(o,s)=>{if(o)return r(o);let i=new Map;for(let A of s)i.set(`${A.address}:${A.family}`,A);r(null,i.values())})}#r(t,n,r){let o=null,{records:s,offset:i}=n,A;if(this.dualStack?(r==null&&(i==null||i===rf?(n.offset=0,r=4):(n.offset++,r=(n.offset&1)===1?6:4)),s[r]!=null&&s[r].ips.length>0?A=s[r]:A=s[r===4?6:4]):A=s[r],A==null||A.ips.length===0)return o;A.offset==null||A.offset===rf?A.offset=0:A.offset++;let a=A.offset%A.ips.length;return o=A.ips[a]??null,o==null?o:Date.now()-o.timestamp>o.ttl?(A.ips.splice(a,1),this.pick(t,n,r)):o}pickFamily(t,n){let r=this.storage.get(t.hostname)?.records;if(!r)return null;let o=r[n];if(!o)return null;o.offset==null||o.offset===rf?o.offset=0:o.offset++;let s=o.offset%o.ips.length,i=o.ips[s]??null;return i==null||Date.now()-i.timestamp>i.ttl&&o.ips.splice(s,1),i}setRecords(t,n){let r=Date.now(),o={records:{4:null,6:null}},s=this.#e;for(let i of n){i.timestamp=r,typeof i.ttl=="number"?(i.ttl=Math.min(i.ttl,this.#e),s=Math.min(s,i.ttl)):i.ttl=this.#e;let A=o.records[i.family]??{ips:[]};A.ips.push(i),o.records[i.family]=A}this.storage.set(t.hostname,o,{ttl:s})}deleteRecords(t){this.storage.delete(t.hostname)}getHandler(t,n){return new Af(this,t,n)}},Af=class extends aq{#e=null;#t=null;#n=null;#r=null;#s=null;#o=null;#a=!0;constructor(t,{origin:n,handler:r,dispatch:o,newOrigin:s},i){super(r),this.#r=n,this.#o=s,this.#t={...i},this.#e=t,this.#n=o}onResponseError(t,n){switch(n.code){case"ETIMEDOUT":case"ECONNREFUSED":{if(this.#e.dualStack){if(!this.#a){super.onResponseError(t,n);return}this.#a=!1;let r=this.#o.hostname[0]==="["?4:6,o=this.#e.pickFamily(this.#r,r);if(o==null){super.onResponseError(t,n);return}let s;typeof o.port=="number"?s=`:${o.port}`:this.#r.port!==""?s=`:${this.#r.port}`:s="";let i={...this.#t,origin:`${this.#r.protocol}//${o.family===6?`[${o.address}]`:o.address}${s}`,headers:hw(this.#r.host,this.#t.headers)};this.#n(i,this);return}super.onResponseError(t,n);break}case"ENOTFOUND":this.#e.deleteRecords(this.#r),super.onResponseError(t,n);break;default:super.onResponseError(t,n);break}}};Ew.exports=e=>{if(e?.maxTTL!=null&&(typeof e?.maxTTL!="number"||e?.maxTTL<0))throw new _r("Invalid maxTTL. Must be a positive number");if(e?.maxItems!=null&&(typeof e?.maxItems!="number"||e?.maxItems<1))throw new _r("Invalid maxItems. Must be a positive number and greater than zero");if(e?.affinity!=null&&e?.affinity!==4&&e?.affinity!==6)throw new _r("Invalid affinity. Must be either 4 or 6");if(e?.dualStack!=null&&typeof e?.dualStack!="boolean")throw new _r("Invalid dualStack. Must be a boolean");if(e?.lookup!=null&&typeof e?.lookup!="function")throw new _r("Invalid lookup. Must be a function");if(e?.pick!=null&&typeof e?.pick!="function")throw new _r("Invalid pick. Must be a function");if(e?.storage!=null&&(typeof e?.storage?.get!="function"||typeof e?.storage?.set!="function"||typeof e?.storage?.full!="function"||typeof e?.storage?.delete!="function"))throw new _r("Invalid storage. Must be a object with methods: { get, set, full, delete }");let t=e?.dualStack??!0,n;t?n=e?.affinity??null:n=e?.affinity??4;let r={maxTTL:e?.maxTTL??1e4,lookup:e?.lookup??null,pick:e?.pick??null,dualStack:t,affinity:n,maxItems:e?.maxItems??1/0,storage:e?.storage},o=new sf(r);return s=>function(A,a){let c=A.origin.constructor===URL?A.origin:new URL(A.origin);return iq(c.hostname)!==0?s(A,a):(o.runLookup(c,A,(d,l)=>{if(d)return a.onResponseError(null,d);let u={...A,servername:c.hostname,origin:l.origin,headers:hw(c.host,A.headers)};s(u,o.getHandler({origin:c,dispatch:s,handler:a,newOrigin:l},A))}),!0)}}});var Lo=m((a3,Tw)=>{"use strict";var{safeHTTPMethods:Iw,pathHasQueryOrFragment:gq,hasSafeIterator:fq,isValidHTTPToken:ri}=G(),{serializePathWithQuery:pq}=G(),hq=2147483647,Bw=["no-store","private","no-cache"],af=Symbol("invalid cache-control directives");function Pr(e){return e.replace(/^[\t ]+|[\t ]+$/g,"")}function bw(e,t){for(let n=0;n<e.length;n++)if(e[n]===t)return!0;return!1}function yw(e){return e.replace(/^[\t ]+/,"")}function mw(e){return e.replace(/[\t ]+$/,"")}function Qw(e,t){let n=!1;for(let r=t;r<e.length;r++)if(n)n=!1;else if(e[r]==="\\")n=!0;else if(e[r]==='"')return r;return-1}function Eq(e){let t=[],n=0,r=-1,o=!1,s=!1;for(let c=0;c<e.length;c++)o?s?s=!1:e[c]==="\\"?s=!0:e[c]==='"'&&(o=!1,r=-1):e[c]==='"'?(o=!0,r=c):e[c]===","&&(t.push({value:e.substring(n,c),fromMalformedQuote:!1}),n=c+1);if(!o)return t.push({value:e.substring(n),fromMalformedQuote:!1}),t;let i=e.substring(n),A=r-n,a=0;for(let c=0;c<i.length;c++)i[c]===","&&(t.push({value:i.substring(a,c),fromMalformedQuote:a>A}),a=c+1);return t.push({value:i.substring(a),fromMalformedQuote:a>A}),t}function ww(e,t){let n=e[af];n===void 0&&(n=new Set,Object.defineProperty(e,af,{value:n})),n.add(t)}function Cq(e,t){return e[af]?.has(t)===!0}function Iq(e){for(let r of Bw)if(e.startsWith(r)&&e.length>r.length&&!ri(e[r.length]))return r;let t="",n=!1;for(let r=0;r<e.length;r++)ri(e[r])?t+=e[r]:n=!0;if(n&&bw(Bw,t))return t}function Bq(e){if(!e.origin)throw new Error("opts.origin is undefined");let t=e.path||"/";return e.query&&!gq(t)&&(t=pq(t,e.query)),{origin:e.origin.toString(),method:e.method,path:t,headers:e.headers}}function Rw(e,t,n){let r=t.toLowerCase(),o=e[r],s=Array.isArray(n)?n:[n];o===void 0?e[r]=Array.isArray(n)?n.slice():n:Array.isArray(o)?o.push(...s):e[r]=[o,...s]}function yq(e){let t;if(e.headers==null)t={};else if(typeof e.headers=="object")if(t={},fq(e.headers))for(let n of e.headers){if(!Array.isArray(n))throw new Error("opts.headers is not a valid header map");let[r,o]=n;if(typeof r!="string"||typeof o!="string")throw new Error("opts.headers is not a valid header map");Rw(t,r,o)}else for(let n of Object.keys(e.headers))Rw(t,n,e.headers[n]);else throw new Error("opts.headers is not an object");return t}function mq(e){if(typeof e!="object")throw new TypeError(`expected key to be object, got ${typeof e}`);for(let t of["origin","method","path"])if(typeof e[t]!="string")throw new TypeError(`expected key.${t} to be string, got ${typeof e[t]}`);if(e.headers!==void 0&&typeof e.headers!="object")throw new TypeError(`expected headers to be object, got ${typeof e}`)}function Qq(e){if(typeof e!="object")throw new TypeError(`expected value to be object, got ${typeof e}`);for(let t of["statusCode","cachedAt","staleAt","deleteAt"])if(typeof e[t]!="number")throw new TypeError(`expected value.${t} to be number, got ${typeof e[t]}`);if(typeof e.statusMessage!="string")throw new TypeError(`expected value.statusMessage to be string, got ${typeof e.statusMessage}`);if(e.headers!=null&&typeof e.headers!="object")throw new TypeError(`expected value.rawHeaders to be object, got ${typeof e.headers}`);if(e.vary!==void 0&&typeof e.vary!="object")throw new TypeError(`expected value.vary to be object, got ${typeof e.vary}`);if(e.etag!==void 0&&typeof e.etag!="string")throw new TypeError(`expected value.etag to be string, got ${typeof e.etag}`)}function wq(e){let t={},n=new Set,r=new Set,o=Eq(Array.isArray(e)?e.join(","):e);for(let s=0;s<o.length;s++){let i=o[s],A=i.value.toLowerCase(),a=i.fromMalformedQuote,c=A.indexOf("="),d,l,u=!1,g=!1;if(c!==-1){let E=A.substring(0,c),B=A.substring(c+1);u=mw(E)!==E,g=yw(B)!==B,d=Pr(E),l=yw(B)}else d=Pr(A);let h=Iq(d);if(h!==void 0){t[h]=!0;continue}switch(d){case"min-fresh":case"max-stale":case"max-age":case"s-maxage":case"stale-while-revalidate":case"stale-if-error":{if(a||n.has(d))continue;if(l===void 0||u||g){delete t[d],n.add(d),ww(t,d);continue}if(l.length>=2&&l[0]==='"'&&l[l.length-1]==='"'&&(l=l.substring(1,l.length-1)),!/^[0-9]+$/.test(l)){delete t[d],n.add(d),ww(t,d);continue}let E=Math.min(parseInt(l,10),hq);d==="min-fresh"?(!(d in t)||t[d]<E)&&(t[d]=E):(!(d in t)||t[d]>E)&&(t[d]=E);break}case"private":case"no-cache":{if(a){t[d]=!0;break}if(l!==void 0&&l.length===0){t[d]=!0;break}if(l){if(l[0]==='"'){l=mw(l);let E="",B=s,C=!1,y=Qw(l,1);if(y!==-1)E=l.substring(1,y),C=!0;else{let k=[l.substring(1)];for(let x=s+1;x<o.length;x++){let N=Pr(o[x].value),M=Qw(N,0);if(B=x,M!==-1){k.push(N.substring(0,M)),C=!0;break}k.push(N)}E=k.join(",")}if(!C){t[d]=!0;break}s=B;let Q=E.split(","),b=!0;for(let k=0;k<Q.length;k++)Q[k]=Pr(Q[k]),ri(Q[k])||(b=!1);b?t[d]!==!0&&(d in t?t[d]=t[d].concat(Q):t[d]=Q):t[d]=!0}else{let E=Pr(l);ri(E)?t[d]!==!0&&(d in t?t[d]=t[d].concat(E):t[d]=[E]):t[d]=!0}break}}case"public":case"must-revalidate":case"proxy-revalidate":case"immutable":case"no-transform":case"must-understand":case"only-if-cached":if(a||r.has(d))continue;if(l!==void 0){delete t[d],r.add(d);continue}t[d]=!0;break;case"no-store":t[d]=!0;break;default:continue}}return t}function Sw(e){let t=Array.isArray(e)?e:[e],n=[];for(let r=0;r<t.length;r++){let o=t[r].split(",");for(let s=0;s<o.length;s++)n.push(o[s])}return n}function cf(e){let t=Sw(e);for(let n=0;n<t.length;n++)if(Pr(t[n]).indexOf("*")!==-1)return!0;return!1}function Dw(e,t){if(cf(e))return t;let n={},r=Sw(e);for(let o of r){let s=Pr(o).toLowerCase();if(s.length===0)continue;if(!ri(s))return;let i=t[s];n[s]=Array.isArray(i)?i.slice():i??null}return n}function Rq(e){return cf(e)||Dw(e,{})===void 0}function bq(e){return e.length<=2?!1:e[0]==='"'&&e[e.length-1]==='"'?!(e[1]==='"'||e.startsWith('"W/')):e.startsWith('W/"')&&e[e.length-1]==='"'?e.length!==4:!1}function Sq(e,t="CacheStore"){if(typeof e!="object"||e===null)throw new TypeError(`expected type of ${t} to be a CacheStore, got ${e===null?"null":typeof e}`);for(let n of["get","createWriteStream","delete"])if(typeof e[n]!="function")throw new TypeError(`${t} needs to have a \`${n}()\` function`)}function Dq(e,t="CacheMethods"){if(!Array.isArray(e))throw new TypeError(`expected type of ${t} needs to be an array, got ${e===null?"null":typeof e}`);if(e.length===0)throw new TypeError(`${t} needs to have at least one method`);for(let n of e)if(!bw(Iw,n))throw new TypeError(`element of ${t}-array needs to be one of following values: ${Iw.join(", ")}, got ${n}`)}function Tq(e,t){let n={};if(e.headers){let r=Object.keys(e.headers).sort();for(let o of r)t?.has(o.toLowerCase())||(n[o]=e.headers[o])}return JSON.stringify([e.origin,e.method,e.path,n])}Tw.exports={makeCacheKey:Bq,normalizeHeaders:yq,assertCacheKey:mq,assertCacheValue:Qq,parseCacheControlHeader:wq,hasInvalidCacheControlDirective:Cq,parseVaryHeader:Dw,hasVaryStar:cf,isInvalidOrWildcardVaryHeader:Rq,isEtagUsable:bq,assertCacheMethods:Dq,assertCacheStore:Sq,makeDeduplicationKey:Tq}});var uf=m((c3,kw)=>{"use strict";function kq(e){switch(e[3]){case",":return Nq(e);case" ":return Mq(e);default:return xq(e)}}function df(e,t,n,r,o,s,i){let A=new Date(Date.UTC(e,t,n,r,o,s));return e>=0&&e<=99&&A.setUTCFullYear(e),A.getUTCFullYear()===e&&A.getUTCMonth()===t&&A.getUTCDate()===n&&A.getUTCHours()===r&&A.getUTCMinutes()===o&&A.getUTCSeconds()===s&&A.getUTCDay()===i?A:void 0}function Nq(e){if(e.length!==29||e[4]!==" "||e[7]!==" "||e[11]!==" "||e[16]!==" "||e[19]!==":"||e[22]!==":"||e[25]!==" "||e[26]!=="G"||e[27]!=="M"||e[28]!=="T")return;let t=-1;if(e[0]==="S"&&e[1]==="u"&&e[2]==="n")t=0;else if(e[0]==="M"&&e[1]==="o"&&e[2]==="n")t=1;else if(e[0]==="T"&&e[1]==="u"&&e[2]==="e")t=2;else if(e[0]==="W"&&e[1]==="e"&&e[2]==="d")t=3;else if(e[0]==="T"&&e[1]==="h"&&e[2]==="u")t=4;else if(e[0]==="F"&&e[1]==="r"&&e[2]==="i")t=5;else if(e[0]==="S"&&e[1]==="a"&&e[2]==="t")t=6;else return;let n=0;if(e[5]==="0"){let u=e.charCodeAt(6);if(u<49||u>57)return;n=u-48}else{let u=e.charCodeAt(5);if(u<49||u>51)return;let g=e.charCodeAt(6);if(g<48||g>57)return;n=(u-48)*10+(g-48)}let r=-1;if(e[8]==="J"&&e[9]==="a"&&e[10]==="n")r=0;else if(e[8]==="F"&&e[9]==="e"&&e[10]==="b")r=1;else if(e[8]==="M"&&e[9]==="a")if(e[10]==="r")r=2;else if(e[10]==="y")r=4;else return;else if(e[8]==="J")if(e[9]==="a"&&e[10]==="n")r=0;else if(e[9]==="u")if(e[10]==="n")r=5;else if(e[10]==="l")r=6;else return;else return;else if(e[8]==="A")if(e[9]==="p"&&e[10]==="r")r=3;else if(e[9]==="u"&&e[10]==="g")r=7;else return;else if(e[8]==="S"&&e[9]==="e"&&e[10]==="p")r=8;else if(e[8]==="O"&&e[9]==="c"&&e[10]==="t")r=9;else if(e[8]==="N"&&e[9]==="o"&&e[10]==="v")r=10;else if(e[8]==="D"&&e[9]==="e"&&e[10]==="c")r=11;else return;let o=e.charCodeAt(12);if(o<48||o>57)return;let s=e.charCodeAt(13);if(s<48||s>57)return;let i=e.charCodeAt(14);if(i<48||i>57)return;let A=e.charCodeAt(15);if(A<48||A>57)return;let a=(o-48)*1e3+(s-48)*100+(i-48)*10+(A-48),c=0;if(e[17]==="0"){let u=e.charCodeAt(18);if(u<48||u>57)return;c=u-48}else{let u=e.charCodeAt(17);if(u<48||u>50)return;let g=e.charCodeAt(18);if(g<48||g>57||u===50&&g>51)return;c=(u-48)*10+(g-48)}let d=0;if(e[20]==="0"){let u=e.charCodeAt(21);if(u<48||u>57)return;d=u-48}else{let u=e.charCodeAt(20);if(u<48||u>53)return;let g=e.charCodeAt(21);if(g<48||g>57)return;d=(u-48)*10+(g-48)}let l=0;if(e[23]==="0"){let u=e.charCodeAt(24);if(u<48||u>57)return;l=u-48}else{let u=e.charCodeAt(23);if(u<48||u>53)return;let g=e.charCodeAt(24);if(g<48||g>57)return;l=(u-48)*10+(g-48)}return df(a,r,n,c,d,l,t)}function Mq(e){if(e.length!==24||e[7]!==" "||e[10]!==" "||e[19]!==" ")return;let t=-1;if(e[0]==="S"&&e[1]==="u"&&e[2]==="n")t=0;else if(e[0]==="M"&&e[1]==="o"&&e[2]==="n")t=1;else if(e[0]==="T"&&e[1]==="u"&&e[2]==="e")t=2;else if(e[0]==="W"&&e[1]==="e"&&e[2]==="d")t=3;else if(e[0]==="T"&&e[1]==="h"&&e[2]==="u")t=4;else if(e[0]==="F"&&e[1]==="r"&&e[2]==="i")t=5;else if(e[0]==="S"&&e[1]==="a"&&e[2]==="t")t=6;else return;let n=-1;if(e[4]==="J"&&e[5]==="a"&&e[6]==="n")n=0;else if(e[4]==="F"&&e[5]==="e"&&e[6]==="b")n=1;else if(e[4]==="M"&&e[5]==="a")if(e[6]==="r")n=2;else if(e[6]==="y")n=4;else return;else if(e[4]==="J")if(e[5]==="a"&&e[6]==="n")n=0;else if(e[5]==="u")if(e[6]==="n")n=5;else if(e[6]==="l")n=6;else return;else return;else if(e[4]==="A")if(e[5]==="p"&&e[6]==="r")n=3;else if(e[5]==="u"&&e[6]==="g")n=7;else return;else if(e[4]==="S"&&e[5]==="e"&&e[6]==="p")n=8;else if(e[4]==="O"&&e[5]==="c"&&e[6]==="t")n=9;else if(e[4]==="N"&&e[5]==="o"&&e[6]==="v")n=10;else if(e[4]==="D"&&e[5]==="e"&&e[6]==="c")n=11;else return;let r=0;if(e[8]===" "){let u=e.charCodeAt(9);if(u<49||u>57)return;r=u-48}else{let u=e.charCodeAt(8);if(u<49||u>51)return;let g=e.charCodeAt(9);if(g<48||g>57)return;r=(u-48)*10+(g-48)}let o=0;if(e[11]==="0"){let u=e.charCodeAt(12);if(u<48||u>57)return;o=u-48}else{let u=e.charCodeAt(11);if(u<48||u>50)return;let g=e.charCodeAt(12);if(g<48||g>57||u===50&&g>51)return;o=(u-48)*10+(g-48)}let s=0;if(e[14]==="0"){let u=e.charCodeAt(15);if(u<48||u>57)return;s=u-48}else{let u=e.charCodeAt(14);if(u<48||u>53)return;let g=e.charCodeAt(15);if(g<48||g>57)return;s=(u-48)*10+(g-48)}let i=0;if(e[17]==="0"){let u=e.charCodeAt(18);if(u<48||u>57)return;i=u-48}else{let u=e.charCodeAt(17);if(u<48||u>53)return;let g=e.charCodeAt(18);if(g<48||g>57)return;i=(u-48)*10+(g-48)}let A=e.charCodeAt(20);if(A<48||A>57)return;let a=e.charCodeAt(21);if(a<48||a>57)return;let c=e.charCodeAt(22);if(c<48||c>57)return;let d=e.charCodeAt(23);if(d<48||d>57)return;let l=(A-48)*1e3+(a-48)*100+(c-48)*10+(d-48);return df(l,n,r,o,s,i,t)}function xq(e){let t=-1,n=-1;if(e[0]==="S")e[1]==="u"&&e[2]==="n"&&e[3]==="d"&&e[4]==="a"&&e[5]==="y"?(n=0,t=6):e[1]==="a"&&e[2]==="t"&&e[3]==="u"&&e[4]==="r"&&e[5]==="d"&&e[6]==="a"&&e[7]==="y"&&(n=6,t=8);else if(e[0]==="M"&&e[1]==="o"&&e[2]==="n"&&e[3]==="d"&&e[4]==="a"&&e[5]==="y")n=1,t=6;else if(e[0]==="T")e[1]==="u"&&e[2]==="e"&&e[3]==="s"&&e[4]==="d"&&e[5]==="a"&&e[6]==="y"?(n=2,t=7):e[1]==="h"&&e[2]==="u"&&e[3]==="r"&&e[4]==="s"&&e[5]==="d"&&e[6]==="a"&&e[7]==="y"&&(n=4,t=8);else if(e[0]==="W"&&e[1]==="e"&&e[2]==="d"&&e[3]==="n"&&e[4]==="e"&&e[5]==="s"&&e[6]==="d"&&e[7]==="a"&&e[8]==="y")n=3,t=9;else if(e[0]==="F"&&e[1]==="r"&&e[2]==="i"&&e[3]==="d"&&e[4]==="a"&&e[5]==="y")n=5,t=6;else return;if(e[t]!==","||e.length-t-1!==23||e[t+1]!==" "||e[t+4]!=="-"||e[t+8]!=="-"||e[t+11]!==" "||e[t+14]!==":"||e[t+17]!==":"||e[t+20]!==" "||e[t+21]!=="G"||e[t+22]!=="M"||e[t+23]!=="T")return;let r=0;if(e[t+2]==="0"){let l=e.charCodeAt(t+3);if(l<49||l>57)return;r=l-48}else{let l=e.charCodeAt(t+2);if(l<49||l>51)return;let u=e.charCodeAt(t+3);if(u<48||u>57)return;r=(l-48)*10+(u-48)}let o=-1;if(e[t+5]==="J"&&e[t+6]==="a"&&e[t+7]==="n")o=0;else if(e[t+5]==="F"&&e[t+6]==="e"&&e[t+7]==="b")o=1;else if(e[t+5]==="M"&&e[t+6]==="a"&&e[t+7]==="r")o=2;else if(e[t+5]==="A"&&e[t+6]==="p"&&e[t+7]==="r")o=3;else if(e[t+5]==="M"&&e[t+6]==="a"&&e[t+7]==="y")o=4;else if(e[t+5]==="J"&&e[t+6]==="u"&&e[t+7]==="n")o=5;else if(e[t+5]==="J"&&e[t+6]==="u"&&e[t+7]==="l")o=6;else if(e[t+5]==="A"&&e[t+6]==="u"&&e[t+7]==="g")o=7;else if(e[t+5]==="S"&&e[t+6]==="e"&&e[t+7]==="p")o=8;else if(e[t+5]==="O"&&e[t+6]==="c"&&e[t+7]==="t")o=9;else if(e[t+5]==="N"&&e[t+6]==="o"&&e[t+7]==="v")o=10;else if(e[t+5]==="D"&&e[t+6]==="e"&&e[t+7]==="c")o=11;else return;let s=e.charCodeAt(t+9);if(s<48||s>57)return;let i=e.charCodeAt(t+10);if(i<48||i>57)return;let A=(s-48)*10+(i-48);A+=A<70?2e3:1900;let a=0;if(e[t+12]==="0"){let l=e.charCodeAt(t+13);if(l<48||l>57)return;a=l-48}else{let l=e.charCodeAt(t+12);if(l<48||l>50)return;let u=e.charCodeAt(t+13);if(u<48||u>57||l===50&&u>51)return;a=(l-48)*10+(u-48)}let c=0;if(e[t+15]==="0"){let l=e.charCodeAt(t+16);if(l<48||l>57)return;c=l-48}else{let l=e.charCodeAt(t+15);if(l<48||l>53)return;let u=e.charCodeAt(t+16);if(u<48||u>57)return;c=(l-48)*10+(u-48)}let d=0;if(e[t+18]==="0"){let l=e.charCodeAt(t+19);if(l<48||l>57)return;d=l-48}else{let l=e.charCodeAt(t+18);if(l<48||l>53)return;let u=e.charCodeAt(t+19);if(u<48||u>57)return;d=(l-48)*10+(u-48)}return df(A,o,r,a,c,d,n)}kw.exports={parseHttpDate:kq}});var _w=m((d3,Fw)=>{"use strict";var lf=G(),{parseCacheControlHeader:Uq,hasInvalidCacheControlDirective:Nw,parseVaryHeader:Lq,hasVaryStar:Fq,isInvalidOrWildcardVaryHeader:xw,isEtagUsable:_q}=Lo(),{parseHttpDate:gf}=uf();function Pq(){}var Uw=[200,203,204,206,300,301,308,404,405,410,414,501],vq=[206],oi=2147483647e3;function Oq(e){return e.replace(/^[\t ]+|[\t ]+$/g,"")}function Fo(e,t){for(let n=0;n<e.length;n++)if(e[n]===t)return!0;return!1}function qq(e,t){let n=Array.isArray(t)?t:[t];for(let r=0;r<n.length;r++){let o=n[r].split(",");for(let s=0;s<o.length;s++)e.push(Oq(o[s]).toLowerCase())}}function Gq(e,t){if(typeof t!="string")return;let n,r,o;try{n=new URL(e.origin),r=new URL(e.path,n),o=new URL(t,r)}catch{return}if(o.origin===n.origin)return o.pathname+o.search}function Lw(e,t,n){si(e,{...t,path:n});for(let r=0;r<lf.safeHTTPMethods.length;r++){let o=lf.safeHTTPMethods[r];o!==t.method&&si(e,{...t,method:o,path:n})}}function Mw(e,t,n){if(n===void 0)return;let r=Array.isArray(n)?n:[n];for(let o=0;o<r.length;o++){let s=Gq(t,r[o]);s!==void 0&&Lw(e,t,s)}}function Hq(e,t,n){Lw(e,t,t.path),Mw(e,t,n.location),Mw(e,t,n["content-location"])}var ff=class{#e;#t;#n;#r;#s;#o;constructor({store:t,type:n,cacheByDefault:r},o,s){this.#r=t,this.#t=n,this.#n=r,this.#e=o,this.#s=s}onRequestStart(t,n){this.#o?.destroy(),this.#o=void 0,this.#s.onRequestStart?.(t,n)}onRequestUpgrade(t,n,r,o){this.#s.onRequestUpgrade?.(t,n,r,o)}onResponseStart(t,n,r,o){let s=()=>this.#s.onResponseStart?.(t,n,r,o),i=this;if(!Fo(lf.safeHTTPMethods,this.#e.method)&&n>=200&&n<=399)return Hq(this.#r,this.#e,r),s();let A=r["cache-control"],a=r["last-modified"]&&Fo(Uw,n);if(!A&&!r.expires&&!a&&!this.#n)return n===304&&r.vary&&xw(r.vary)&&si(this.#r,this.#e),s();let c=A?Uq(A):{};if(!Wq(this.#t,n,r,c,this.#e.headers))return n===304&&(A||Yq(this.#t,r,c))&&si(this.#r,this.#e),s();let d=Date.now(),l=Object.hasOwn(r,"age")?Jq(r.age):void 0;if(l!==void 0&&l>=oi)return wa(n,this.#r,this.#e),s();let u=Object.hasOwn(r,"date")?Vq(r.date):void 0;if(u===null)return wa(n,this.#r,this.#e),s();let g=u?Math.max(0,d-u.getTime()):0,h=Math.max(g,l??0),E=zq(this.#t,d,l,r,u,c)??this.#n;if(E===void 0||h>=E)return(A||E!==void 0)&&wa(n,this.#r,this.#e),s();let B=d-h,C=E+B;if(d>=C)return wa(n,this.#r,this.#e),s();let y;if(this.#e.headers&&r.vary&&(y=Lq(r.vary,this.#e.headers),!y))return s();let Q=B,b=Kq(B,d,c,C),k=Xq(r,c),x={statusCode:n,statusMessage:o,headers:k,vary:y,cacheControlDirectives:c,cachedAt:Q,staleAt:C,deleteAt:b};if(n===304){let N=U=>{if(!U)return s();if(x.statusCode=U.statusCode,x.statusMessage=U.statusMessage,x.etag=U.etag,x.vary=y??U.vary,x.headers={...U.headers,...k},s(),this.#o=this.#r.createWriteStream(this.#e,x),!(!this.#o||!U?.body))if(typeof U.body.values=="function"){let V=U.body.values(),ee=()=>{for(let te of V){let ue=this.#o.write(te)===!1;if(this.#s.onResponseData?.(t,te),ue)break}};this.#o.on("error",function(){i.#o=void 0,i.#r.delete(i.#e)}).on("drain",()=>{ee()}).on("close",function(){i.#o===this&&(i.#o=void 0)}),ee()}else typeof U.body.on=="function"&&(U.body.on("data",V=>{this.#o.write(V),this.#s.onResponseData?.(t,V)}).on("end",()=>{this.#o.end()}).on("error",()=>{this.#o=void 0,this.#r.delete(this.#e)}),this.#o.on("error",function(){i.#o=void 0,i.#r.delete(i.#e)}).on("close",function(){i.#o===this&&(i.#o=void 0)}))},M=this.#r.get(this.#e);M&&typeof M.then=="function"?M.then(N):N(M)}else{if(typeof r.etag=="string"&&_q(r.etag)&&(x.etag=r.etag),this.#o=this.#r.createWriteStream(this.#e,x),!this.#o)return s();this.#o.on("drain",()=>t.resume()).on("error",function(){i.#o=void 0,i.#r.delete(i.#e)}).on("close",function(){i.#o===this&&(i.#o=void 0),t.resume()}),s()}}onResponseData(t,n){this.#o?.write(n)===!1&&t.pause(),this.#s.onResponseData?.(t,n)}onResponseEnd(t,n){this.#o?.end(),this.#s.onResponseEnd?.(t,n)}onResponseError(t,n){this.#o?.destroy(n),this.#o=void 0,this.#s.onResponseError?.(t,n)}};function si(e,t){try{e.delete(t)?.catch?.(Pq)}catch{}}function wa(e,t,n){e===304&&si(t,n)}function Yq(e,t,n){return n["no-store"]===!0||e==="shared"&&n.private===!0||(t.vary?xw(t.vary):!1)}function Wq(e,t,n,r,o){return!(t<200||Fo(vq,t)||!Fo(Uw,t)&&!n.expires&&!r.public&&r["max-age"]===void 0&&!(r.private&&e==="private")&&!(r["s-maxage"]!==void 0&&e==="shared")||r["no-store"]||e==="shared"&&r.private===!0||n.vary&&Fq(n.vary)||o!=null&&Object.hasOwn(o,"authorization")&&(!r.public&&!r["s-maxage"]&&!r["must-revalidate"]||typeof o.authorization!="string"||Array.isArray(r["no-cache"])&&Fo(r["no-cache"],"authorization")||Array.isArray(r.private)&&Fo(r.private,"authorization")))}function Vq(e){let t=e;if(Array.isArray(t)){if(t.length!==1)return null;t=t[0]}return typeof t!="string"?null:gf(t)}function Jq(e){let t=e;if(Array.isArray(t)){if(t.length!==1)return oi;t=t[0]}if(typeof t!="string"||!/^[\t ]*[0-9]+[\t ]*$/.test(t))return oi;let n=BigInt(t.replace(/^[\t ]+|[\t ]+$/g,""));return n>=BigInt(oi/1e3)?oi:Number(n)*1e3}function zq(e,t,n,r,o,s){if(e==="shared"){if(Nw(s,"s-maxage"))return 0;let A=s["s-maxage"];if(A!==void 0)return A*1e3}if(Nw(s,"max-age"))return 0;let i=s["max-age"];if(i!==void 0)return i*1e3;if(Object.hasOwn(r,"expires")){if(typeof r.expires!="string")return 0;let A=gf(r.expires);if(!A||t>=A.getTime())return 0;if(o){if(o>=A)return 0;let a=A.getTime()-o.getTime();return n!==void 0&&n>=a?0:a}return A.getTime()-t}if(typeof r["last-modified"]=="string"){let A=gf(r["last-modified"]);if(A)return A.getTime()>=t?void 0:(t-A.getTime())*.1}if(s.immutable)return 31536e6}function Kq(e,t,n,r){let o=-1/0,s=-1/0,i=-1/0;if(n["stale-while-revalidate"]&&(o=r+n["stale-while-revalidate"]*1e3),n["stale-if-error"]&&(s=r+n["stale-if-error"]*1e3),n.immutable&&o===-1/0&&s===-1/0&&(i=t+31536e6),o===-1/0&&s===-1/0&&i===-1/0){let A=r-e,a=Math.min(Math.max(t-e,0),1e3);return r+A+a}return Math.max(r,o,s,i)}function Xq(e,t){let n=["connection","proxy-authenticate","proxy-authentication-info","proxy-authorization","proxy-connection","te","transfer-encoding","upgrade","age"];e.connection&&qq(n,e.connection),Array.isArray(t["no-cache"])&&n.push(...t["no-cache"]),Array.isArray(t.private)&&n.push(...t.private);let r;for(let o of n)Object.hasOwn(e,o)&&(r??={...e},delete r[o]);return r??e}Fw.exports=ff});var hf=m((u3,Ow)=>{"use strict";var{Writable:jq}=require("node:stream"),{EventEmitter:$q}=require("node:events"),{assertCacheKey:Pw,assertCacheValue:Zq}=Lo(),pf=class extends $q{#e=1024;#t=104857600;#n=5242880;#r=0;#s=0;#o=new Map;#a=!1;constructor(t){if(super(),t){if(typeof t!="object")throw new TypeError("MemoryCacheStore options must be an object");if(t.maxCount!==void 0){if(typeof t.maxCount!="number"||!Number.isInteger(t.maxCount)||t.maxCount<0)throw new TypeError("MemoryCacheStore options.maxCount must be a non-negative integer");this.#e=t.maxCount}if(t.maxSize!==void 0){if(typeof t.maxSize!="number"||!Number.isInteger(t.maxSize)||t.maxSize<0)throw new TypeError("MemoryCacheStore options.maxSize must be a non-negative integer");this.#t=t.maxSize}if(t.maxEntrySize!==void 0){if(typeof t.maxEntrySize!="number"||!Number.isInteger(t.maxEntrySize)||t.maxEntrySize<0)throw new TypeError("MemoryCacheStore options.maxEntrySize must be a non-negative integer");this.#n=t.maxEntrySize}}}get size(){return this.#r}isFull(){return this.#r>=this.#t||this.#s>=this.#e}get(t){Pw(t);let n=`${t.origin}:${t.path}`,r=Date.now(),o=this.#o.get(n),s=o?vw(t,o,r):null;return s==null?void 0:{statusMessage:s.statusMessage,statusCode:s.statusCode,headers:s.headers,body:s.body,vary:s.vary?s.vary:void 0,etag:s.etag,cacheControlDirectives:s.cacheControlDirectives,cachedAt:s.cachedAt,staleAt:s.staleAt,deleteAt:s.deleteAt}}createWriteStream(t,n){Pw(t),Zq(n);let r=`${t.origin}:${t.path}`,o=this,s={...t,...n,body:[],size:0};return new jq({write(i,A,a){typeof i=="string"&&(i=Buffer.from(i,A)),s.size+=i.byteLength,s.size>=o.#n?this.destroy():s.body.push(i),a(null)},final(i){let A=o.#o.get(r);A||(A=[],o.#o.set(r,A));let a=vw(t,A,Date.now());if(a){let c=A.indexOf(a);A.splice(c,1,s),o.#r-=a.size}else A.push(s),o.#s+=1;if(o.#r+=s.size,o.#r>o.#t||o.#s>o.#e){o.#a||(o.emit("maxSizeExceeded",{size:o.#r,maxSize:o.#t,count:o.#s,maxCount:o.#e}),o.#a=!0);for(let[c,d]of o.#o){for(let l of d.splice(0,d.length/2))o.#r-=l.size,o.#s-=1;d.length===0&&o.#o.delete(c)}o.#r<o.#t&&o.#s<o.#e&&(o.#a=!1)}i(null)}})}delete(t){if(typeof t!="object")throw new TypeError(`expected key to be object, got ${typeof t}`);let n=`${t.origin}:${t.path}`;for(let r of this.#o.get(n)??[])this.#r-=r.size,this.#s-=1;this.#o.delete(n)}};function vw(e,t,n){for(let r=0;r<t.length;r++){let o=t[r];if(o.deleteAt>n&&o.method===e.method&&eG(e,o))return o}}function eG(e,t){if(t.vary==null)return!0;for(let n in t.vary)if(Object.hasOwn(t.vary,n)&&!tG(e.headers?.[n],t.vary[n]))return!1;return!0}function tG(e,t){if(e==null&&t==null)return!0;if(e==null&&t!=null||e!=null&&t==null)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}return e===t}Ow.exports=pf});var Gw=m((l3,qw)=>{"use strict";var nG=require("node:assert"),Ef=class{#e=!1;#t;#n;#r;#s;constructor(t,n,r){if(typeof t!="function")throw new TypeError("callback must be a function");this.#t=t,this.#n=n,this.#s=r}onRequestStart(t,n){this.#e=!1,this.#r=n}onRequestUpgrade(t,n,r,o){this.#n.onRequestUpgrade?.(t,n,r,o)}onResponseStart(t,n,r,o){if(nG(this.#t!=null),this.#e=n===304||this.#s&&n>=500&&n<=504,this.#t(this.#e,this.#r,n,r),this.#t=null,this.#e)return!0;this.#n.onRequestStart?.(t,this.#r),this.#n.onResponseStart?.(t,n,r,o)}onResponseData(t,n){if(!this.#e)return this.#n.onResponseData?.(t,n)}onResponseEnd(t,n){this.#e||this.#n.onResponseEnd?.(t,n)}onResponseError(t,n){if(!this.#e)if(this.#t&&(this.#t(!1),this.#t=null),typeof this.#n.onResponseError=="function")this.#n.onResponseError(t,n);else throw n}};qw.exports=Ef});var Xw=m((g3,Kw)=>{"use strict";var Hw=require("node:assert"),{Readable:rG}=require("node:stream"),Zn=G(),_o=_w(),oG=hf(),sG=Gw(),{assertCacheStore:iG,assertCacheMethods:AG,makeCacheKey:aG,normalizeHeaders:cG,parseCacheControlHeader:zw,isInvalidOrWildcardVaryHeader:dG}=Lo(),{AbortError:uG}=q(),{parseHttpDate:lG}=uf();function gG(e,t){if(e!==void 0){if(!Array.isArray(e))throw new TypeError(`expected ${t} to be an array or undefined, got ${typeof e}`);for(let n=0;n<e.length;n++){let r=e[n];if(typeof r!="string"&&!(r instanceof RegExp))throw new TypeError(`expected ${t}[${n}] to be a string or RegExp, got ${typeof r}`)}}}var ii=()=>{};function fG(e){return e.replace(/^[\t ]+|[\t ]+$/g,"")}function Yw(e,t){for(let n=0;n<e.length;n++)if(e[n]===t)return!0;return!1}function pG(e){let t=e?.pragma;if(!t)return!1;let n=Array.isArray(t)?t:[t];for(let r=0;r<n.length;r++){let o=n[r];if(typeof o!="string")continue;let s=o.split(",");for(let i=0;i<s.length;i++)if(fG(s[i]).toLowerCase()==="no-cache")return!0}return!1}function hG(e,t,{headers:n={}}){return!!(t?.["no-cache"]||e.cacheControlDirectives?.["no-cache"]&&!Array.isArray(e.cacheControlDirectives["no-cache"])||n["if-modified-since"]||n["if-none-match"])}function If(e,t){return e.cacheControlDirectives?.["must-revalidate"]===!0||t==="shared"&&(e.cacheControlDirectives?.["proxy-revalidate"]===!0||e.cacheControlDirectives?.["s-maxage"]!==void 0)}function EG(e,t){if(t.vary&&dG(t.vary))return!0;let n=t["cache-control"];if(!n)return!1;let r=zw(n);return r["no-store"]===!0||e==="shared"&&r.private===!0}function CG(e){return e["cache-control"]!==void 0}function Ww(e,t){try{e.delete(t)?.catch?.(ii)}catch{}}function IG(e){let t=e?.["last-modified"];if(typeof t=="string"&&lG(t))return t}function Vw(e,t){let n={...e.headers,"if-modified-since":IG(t.headers)??new Date(t.cachedAt).toUTCString()};if(t.etag&&(n["if-none-match"]=t.etag),t.vary)for(let r in t.vary)t.vary[r]!=null&&(n[r]=t.vary[r]);return n}function BG(e,t,n){let r=Date.now();if(r>e.staleAt){if(!If(e,n)&&t?.["max-stale"]){let o=e.staleAt+t["max-stale"]*1e3;return r>o}return!0}if(t?.["min-fresh"]){let o=e.staleAt-r,s=t["min-fresh"]*1e3;return o<=s}return!1}function yG(e,t){let n=e.cacheControlDirectives?.["stale-while-revalidate"];if(!n||If(e,t))return!1;let r=Date.now(),o=e.staleAt+n*1e3;return r<=o}function mG(e,t,n,r,o,s){if(s?.["only-if-cached"]){let i=!1;try{if(typeof r.onConnect=="function"&&(r.onConnect(()=>{i=!0}),i)||typeof r.onHeaders=="function"&&(r.onHeaders(504,[],ii,"Gateway Timeout"),i))return;typeof r.onComplete=="function"&&r.onComplete([])}catch(A){typeof r.onError=="function"&&r.onError(A)}return!0}return e(o,new _o(t,n,r))}function Cf(e,t,n,r,o,s){let i=Zn.isStream(n.body)?n.body:rG.from(n.body??[]);Hw(!i.destroyed,"stream should not be destroyed"),Hw(!i.readableDidRead,"stream should not be readableDidRead");let A={resume(){i.resume()},pause(){i.pause()},get paused(){return i.isPaused()},get aborted(){return i.destroyed},get reason(){return i.errored},abort(c){i.destroy(c??new uG)}};if(i.on("error",function(c){if(!this.readableEnded)if(typeof e.onResponseError=="function")e.onResponseError(A,c);else throw c}).on("close",function(){this.errored||e.onResponseEnd?.(A,{})}),e.onRequestStart?.(A,o),i.destroyed)return;let a={...n.headers,age:String(r)};s&&(a.warning='110 - "response is stale"'),e.onResponseStart?.(A,n.statusCode,a,n.statusMessage),t.method==="HEAD"?i.destroy():i.on("data",function(c){e.onResponseData?.(A,c)})}function Jw(e,t,n,r,o,s,i){if(!i)return mG(e,t,n,r,o,s);let A=Date.now();if(A>i.deleteAt)return e(o,new _o(t,n,r));let a=Math.round((A-i.cachedAt)/1e3),c=s?.["max-age"]!==void 0&&a>=s["max-age"],d=c||BG(i,s,t.type),l=c||hG(i,s,o);if(d||l){if(Zn.isStream(o.body)&&Zn.bodyLength(o.body)!==0)return e(o,new _o(t,n,r));if(!l&&yG(i,t.type))return Cf(r,o,i,a,null,!0),queueMicrotask(()=>{let h=Vw(o,i);e({...o,headers:h},new _o(t,n,{onRequestStart(){},onRequestUpgrade(){},onResponseStart(){},onResponseData(){},onResponseEnd(){},onResponseError(){}}))}),!0;let u=!1;if(!If(i,t.type)){let h=i.cacheControlDirectives["stale-if-error"]??s?.["stale-if-error"];h&&(u=A<i.staleAt+h*1e3)}let g=Vw(o,i);return e({...o,headers:g},new sG((h,E,B,C)=>{if(h){if(B===304){if(EG(t.type,C))return Zn.isStream(i.body)&&i.body.on("error",ii).destroy(),Ww(t.store,n),e(o,new _o(t,n,r));CG(C)&&Ww(t.store,n)}Cf(r,o,i,a,E,d)}else Zn.isStream(i.body)&&i.body.on("error",ii).destroy()},new _o(t,n,r),u))}Zn.isStream(o.body)&&o.body.on("error",ii).destroy(),Cf(r,o,i,a,null,!1)}Kw.exports=(e={})=>{let{store:t=new oG,methods:n=["GET"],cacheByDefault:r=void 0,type:o="shared",origins:s=void 0}=e;if(typeof e!="object"||e===null)throw new TypeError(`expected type of opts to be an Object, got ${e===null?"null":typeof e}`);if(iG(t,"opts.store"),AG(n,"opts.methods"),gG(s,"opts.origins"),typeof r<"u"&&typeof r!="number")throw new TypeError(`expected opts.cacheByDefault to be number or undefined, got ${typeof r}`);if(typeof o<"u"&&o!=="shared"&&o!=="private")throw new TypeError(`expected opts.type to be shared, private, or undefined, got ${typeof o}`);let i={store:t,methods:n,cacheByDefault:r,type:o},A=[];for(let a=0;a<Zn.safeHTTPMethods.length;a++){let c=Zn.safeHTTPMethods[a];Yw(n,c)||A.push(c)}return a=>(c,d)=>{if(!c.origin||Yw(A,c.method))return a(c,d);if(s!==void 0){let h=c.origin.toString().toLowerCase(),E=!1;for(let B=0;B<s.length;B++){let C=s[B];if(typeof C=="string"){if(C.toLowerCase()===h){E=!0;break}}else if(C.test(h)){E=!0;break}}if(!E)return a(c,d)}c={...c,headers:cG(c)};let l=c.headers?.["cache-control"]?zw(c.headers["cache-control"]):pG(c.headers)?{"no-cache":!0}:void 0;if(l?.["no-store"])return a(c,d);let u=aG(c),g=t.get(u);return g&&typeof g.then=="function"?g.then(h=>Jw(a,i,u,d,c,l,h)):Jw(a,i,u,d,c,l,g)}}});var tR=m((f3,eR)=>{"use strict";var{createInflate:Bf,createGunzip:jw,createBrotliDecompress:QG,createZstdDecompress:wG}=require("node:zlib"),{pipeline:RG}=require("node:stream"),bG=Uo(),{runtimeFeatures:SG}=gn(),$w={gzip:jw,"x-gzip":jw,br:QG,deflate:Bf,compress:Bf,"x-compress":Bf,...SG.has("zstd")?{zstd:wG}:{}},DG=[204,304],Zw=!1,yf=class extends bG{#e=[];#t;#n;constructor(t,{skipStatusCodes:n=DG,skipErrorResponses:r=!0}={}){super(t),this.#t=n,this.#n=r}#r(t,n){return!!(!t||n<200||this.#t.includes(n)||this.#n&&n>=400)}#s(t){let n=t.split(","),r=5;if(n.length>r)throw new Error(`too many content-encodings in response: ${n.length}, maximum allowed is ${r}`);let o=[];for(let s=n.length-1;s>=0;s--){let i=n[s].trim();if(i){if(!$w[i])return o.length=0,o;o.push($w[i]())}}return o}#o(t,n){t.on("readable",()=>{let r;for(;(r=t.read())!==null&&super.onResponseData(n,r)!==!1;);}),t.on("error",r=>{super.onResponseError(n,r)})}#a(t){let n=this.#e[0];this.#o(n,t),n.on("end",()=>{super.onResponseEnd(t,{})})}#i(t){let n=this.#e[this.#e.length-1];this.#o(n,t),RG(this.#e,r=>{if(r){super.onResponseError(t,r);return}super.onResponseEnd(t,{})})}#A(){this.#e.length=0}onResponseStart(t,n,r,o){let s=r["content-encoding"];if(this.#r(s,n))return super.onResponseStart(t,n,r,o);let i=this.#s(s.toLowerCase());if(i.length===0)return this.#A(),super.onResponseStart(t,n,r,o);this.#e=i;let{"content-encoding":A,"content-length":a,...c}=r;return this.#e.length===1?this.#a(t):this.#i(t),super.onResponseStart(t,n,c,o)}onResponseData(t,n){if(this.#e.length>0){this.#e[0].write(n);return}super.onResponseData(t,n)}onResponseEnd(t,n){if(this.#e.length>0){this.#e[0].end(),this.#A();return}super.onResponseEnd(t,n)}onResponseError(t,n){if(this.#e.length>0){for(let r of this.#e)r.destroy(n);this.#A()}super.onResponseError(t,n)}};function TG(e={}){return Zw||(process.emitWarning("DecompressInterceptor is experimental and subject to change","ExperimentalWarning"),Zw=!0),t=>(n,r)=>{let o=new yf(r,e);return t(n,o)}}eR.exports=TG});var oR=m((p3,rR)=>{"use strict";var{RequestAbortedError:kG}=q(),nR=5*1024*1024,mf=class{#e;#t=[];#n=nR;#r=0;#s={};#o="";#a=!1;#i=!1;#A=!1;#c=!1;#u=null;#d=null;constructor(t,n,r=nR){this.#e=t,this.#d=n,this.#n=r}addWaitingHandler(t){if(this.#c||this.#A)return!1;let n=this.#l(t),r=n.controller;try{if(t.onRequestStart?.(r,null),r.aborted)return n.done=!0,!0;this.#i&&t.onResponseStart?.(r,this.#r,this.#s,this.#o)}catch{return n.done=!0,!0}return r.aborted||this.#t.push(n),!0}onRequestStart(t,n){this.#u=t,this.#e.onRequestStart?.(t,n)}onRequestUpgrade(t,n,r,o){this.#e.onRequestUpgrade?.(t,n,r,o)}onResponseStart(t,n,r,o){this.#i=!0,this.#r=n,this.#s=r,this.#o=o,this.#e.onResponseStart?.(t,n,r,o);for(let s of this.#t){let{handler:i,controller:A}=s;if(s.done||A.aborted){s.done=!0;continue}try{i.onResponseStart?.(A,n,r,o)}catch{}A.aborted&&(s.done=!0)}this.#p()}onResponseData(t,n){if(!(this.#a||this.#c)){this.#A=!0,this.#e.onResponseData?.(t,n);for(let r of this.#t){let{handler:o,controller:s}=r;if(r.done||s.aborted){r.done=!0;continue}if(s.paused){this.#g(r,n);continue}try{o.onResponseData?.(s,n)}catch{}s.aborted&&(r.done=!0,r.bufferedChunks=[],r.bufferedBytes=0)}this.#p()}}onResponseEnd(t,n){if(!(this.#a||this.#c)){this.#c=!0,this.#e.onResponseEnd?.(t,n);for(let r of this.#t){if(r.done||r.controller.aborted){r.done=!0;continue}if(this.#f(r),r.done||r.controller.aborted){r.done=!0;continue}if(r.controller.paused&&r.bufferedChunks.length>0){r.pendingTrailers=n;continue}try{r.handler.onResponseEnd?.(r.controller,n)}catch{}r.done=!0}this.#p(),this.#d?.()}}onResponseError(t,n){if(!this.#c){this.#a=!0,this.#c=!0,this.#e.onResponseError?.(t,n);for(let r of this.#t)this.#h(r,n);this.#t=[],this.#d?.()}}#l(t){let n={handler:t,controller:null,bufferedChunks:[],bufferedBytes:0,pendingTrailers:null,done:!1},r={aborted:!1,paused:!1,reason:null};return n.controller={resume:()=>{if(!r.aborted){if(r.paused=!1,this.#f(n),this.#c&&n.pendingTrailers&&n.bufferedChunks.length===0&&!r.paused&&!r.aborted){try{n.handler.onResponseEnd?.(n.controller,n.pendingTrailers)}catch{}n.pendingTrailers=null,n.done=!0}this.#p()}},pause:()=>{r.aborted||(r.paused=!0)},get paused(){return r.paused},get aborted(){return r.aborted},get reason(){return r.reason},abort:o=>{r.aborted=!0,r.reason=o??null,n.done=!0,n.pendingTrailers=null,n.bufferedChunks=[],n.bufferedBytes=0}},n}#g(t,n){if(t.done||t.controller.aborted){t.done=!0,t.bufferedChunks=[],t.bufferedBytes=0;return}let r=Buffer.from(n);if(t.bufferedChunks.push(r),t.bufferedBytes+=r.length,t.bufferedBytes>this.#n){let o=new kG(`Deduplicated waiting handler exceeded maxBufferSize (${this.#n} bytes) while paused`);this.#h(t,o)}}#f(t){let{handler:n,controller:r}=t;for(;!t.done&&!r.aborted&&!r.paused&&t.bufferedChunks.length>0;){let o=t.bufferedChunks.shift();t.bufferedBytes-=o.length;try{n.onResponseData?.(r,o)}catch{}if(r.aborted){t.done=!0,t.pendingTrailers=null,t.bufferedChunks=[],t.bufferedBytes=0;break}}}#h(t,n){if(!t.done){t.done=!0,t.pendingTrailers=null,t.bufferedChunks=[],t.bufferedBytes=0;try{t.controller.abort(n),t.handler.onResponseError?.(t.controller,n)}catch{}}}#p(){this.#t=this.#t.filter(t=>t.done===!1)}};rR.exports=mf});var iR=m((h3,sR)=>{"use strict";var NG=require("node:diagnostics_channel"),MG=G(),xG=oR(),{normalizeHeaders:UG,makeCacheKey:LG,makeDeduplicationKey:FG}=Lo(),Ra=NG.channel("undici:request:pending-requests");sR.exports=(e={})=>{let{methods:t=["GET"],skipHeaderNames:n=[],excludeHeaderNames:r=[],maxBufferSize:o=5*1024*1024}=e;if(typeof e!="object"||e===null)throw new TypeError(`expected type of opts to be an Object, got ${e===null?"null":typeof e}`);if(!Array.isArray(t))throw new TypeError(`expected opts.methods to be an array, got ${typeof t}`);for(let a of t)if(!MG.safeHTTPMethods.includes(a))throw new TypeError(`expected opts.methods to only contain safe HTTP methods, got ${a}`);if(!Array.isArray(n))throw new TypeError(`expected opts.skipHeaderNames to be an array, got ${typeof n}`);if(!Array.isArray(r))throw new TypeError(`expected opts.excludeHeaderNames to be an array, got ${typeof r}`);if(!Number.isFinite(o)||o<=0)throw new TypeError(`expected opts.maxBufferSize to be a positive finite number, got ${o}`);let s=new Set(n.map(a=>a.toLowerCase())),i=new Set(r.map(a=>a.toLowerCase())),A=new Map;return a=>(c,d)=>{if(!c.origin||t.includes(c.method)===!1)return a(c,d);if(c={...c,headers:UG(c)},s.size>0){for(let E of Object.keys(c.headers))if(s.has(E.toLowerCase()))return a(c,d)}let l=LG(c),u=FG(l,i),g=A.get(u);if(g)return g.addWaitingHandler(d)?!0:a(c,d);let h=new xG(d,()=>{A.delete(u),Ra.hasSubscribers&&Ra.publish({size:A.size,key:u,type:"removed"})},o);return A.set(u,h),Ra.hasSubscribers&&Ra.publish({size:A.size,key:u,type:"added"}),a(c,h)}}});var cR=m((C3,aR)=>{"use strict";var{Writable:_G}=require("node:stream"),{assertCacheKey:Qf,assertCacheValue:PG}=Lo(),wf,lt=3,AR=2*1e3*1e3*1e3;aR.exports=class{#e=AR;#t=1/0;#n;#r;#s;#o;#a;#i;#A;#c;constructor(t){if(t){if(typeof t!="object")throw new TypeError("SqliteCacheStore options must be an object");if(t.maxEntrySize!==void 0){if(typeof t.maxEntrySize!="number"||!Number.isInteger(t.maxEntrySize)||t.maxEntrySize<0)throw new TypeError("SqliteCacheStore options.maxEntrySize must be a non-negative integer");if(t.maxEntrySize>AR)throw new TypeError("SqliteCacheStore options.maxEntrySize must be less than 2gb");this.#e=t.maxEntrySize}if(t.maxCount!==void 0){if(typeof t.maxCount!="number"||!Number.isInteger(t.maxCount)||t.maxCount<0)throw new TypeError("SqliteCacheStore options.maxCount must be a non-negative integer");this.#t=t.maxCount}}wf||(wf=require("node:sqlite").DatabaseSync),this.#n=new wf(t?.location??":memory:"),this.#n.exec(`
|
|
45
|
+
PRAGMA journal_mode = WAL;
|
|
46
|
+
PRAGMA synchronous = NORMAL;
|
|
47
|
+
PRAGMA temp_store = memory;
|
|
48
|
+
PRAGMA optimize;
|
|
49
|
+
|
|
50
|
+
CREATE TABLE IF NOT EXISTS cacheInterceptorV${lt} (
|
|
51
|
+
-- Data specific to us
|
|
52
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
53
|
+
url TEXT NOT NULL,
|
|
54
|
+
method TEXT NOT NULL,
|
|
55
|
+
|
|
56
|
+
-- Data returned to the interceptor
|
|
57
|
+
body BUF NULL,
|
|
58
|
+
deleteAt INTEGER NOT NULL,
|
|
59
|
+
statusCode INTEGER NOT NULL,
|
|
60
|
+
statusMessage TEXT NOT NULL,
|
|
61
|
+
headers TEXT NULL,
|
|
62
|
+
cacheControlDirectives TEXT NULL,
|
|
63
|
+
etag TEXT NULL,
|
|
64
|
+
vary TEXT NULL,
|
|
65
|
+
cachedAt INTEGER NOT NULL,
|
|
66
|
+
staleAt INTEGER NOT NULL
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${lt}_getValuesQuery ON cacheInterceptorV${lt}(url, method, deleteAt);
|
|
70
|
+
CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${lt}_deleteByUrlQuery ON cacheInterceptorV${lt}(deleteAt);
|
|
71
|
+
`),this.#r=this.#n.prepare(`
|
|
72
|
+
SELECT
|
|
73
|
+
id,
|
|
74
|
+
body,
|
|
75
|
+
deleteAt,
|
|
76
|
+
statusCode,
|
|
77
|
+
statusMessage,
|
|
78
|
+
headers,
|
|
79
|
+
etag,
|
|
80
|
+
cacheControlDirectives,
|
|
81
|
+
vary,
|
|
82
|
+
cachedAt,
|
|
83
|
+
staleAt
|
|
84
|
+
FROM cacheInterceptorV${lt}
|
|
85
|
+
WHERE
|
|
86
|
+
url = ?
|
|
87
|
+
AND method = ?
|
|
88
|
+
ORDER BY
|
|
89
|
+
deleteAt ASC
|
|
90
|
+
`),this.#s=this.#n.prepare(`
|
|
91
|
+
UPDATE cacheInterceptorV${lt} SET
|
|
92
|
+
body = ?,
|
|
93
|
+
deleteAt = ?,
|
|
94
|
+
statusCode = ?,
|
|
95
|
+
statusMessage = ?,
|
|
96
|
+
headers = ?,
|
|
97
|
+
etag = ?,
|
|
98
|
+
cacheControlDirectives = ?,
|
|
99
|
+
cachedAt = ?,
|
|
100
|
+
staleAt = ?
|
|
101
|
+
WHERE
|
|
102
|
+
id = ?
|
|
103
|
+
`),this.#o=this.#n.prepare(`
|
|
104
|
+
INSERT INTO cacheInterceptorV${lt} (
|
|
105
|
+
url,
|
|
106
|
+
method,
|
|
107
|
+
body,
|
|
108
|
+
deleteAt,
|
|
109
|
+
statusCode,
|
|
110
|
+
statusMessage,
|
|
111
|
+
headers,
|
|
112
|
+
etag,
|
|
113
|
+
cacheControlDirectives,
|
|
114
|
+
vary,
|
|
115
|
+
cachedAt,
|
|
116
|
+
staleAt
|
|
117
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
118
|
+
`),this.#i=this.#n.prepare(`DELETE FROM cacheInterceptorV${lt} WHERE url = ?`),this.#A=this.#n.prepare(`SELECT COUNT(*) AS total FROM cacheInterceptorV${lt}`),this.#a=this.#n.prepare(`DELETE FROM cacheInterceptorV${lt} WHERE deleteAt <= ?`),this.#c=this.#t===1/0?null:this.#n.prepare(`
|
|
119
|
+
DELETE FROM cacheInterceptorV${lt}
|
|
120
|
+
WHERE id IN (
|
|
121
|
+
SELECT
|
|
122
|
+
id
|
|
123
|
+
FROM cacheInterceptorV${lt}
|
|
124
|
+
ORDER BY cachedAt ASC
|
|
125
|
+
LIMIT ?
|
|
126
|
+
)
|
|
127
|
+
`)}close(){this.#n.close()}get(t){Qf(t);let n=this.#l(t);return n?{body:n.body?Buffer.from(n.body.buffer,n.body.byteOffset,n.body.byteLength):void 0,statusCode:n.statusCode,statusMessage:n.statusMessage,headers:n.headers?JSON.parse(n.headers):void 0,etag:n.etag?n.etag:void 0,vary:n.vary?JSON.parse(n.vary):void 0,cacheControlDirectives:n.cacheControlDirectives?JSON.parse(n.cacheControlDirectives):void 0,cachedAt:n.cachedAt,staleAt:n.staleAt,deleteAt:n.deleteAt}:void 0}set(t,n){Qf(t);let r=this.#d(t),o=Array.isArray(n.body)?Buffer.concat(n.body):n.body,s=o?.byteLength;if(s&&s>this.#e)return;let i=this.#l(t,!0);i?this.#s.run(o,n.deleteAt,n.statusCode,n.statusMessage,n.headers?JSON.stringify(n.headers):null,n.etag?n.etag:null,n.cacheControlDirectives?JSON.stringify(n.cacheControlDirectives):null,n.cachedAt,n.staleAt,i.id):(this.#o.run(r,t.method,o,n.deleteAt,n.statusCode,n.statusMessage,n.headers?JSON.stringify(n.headers):null,n.etag?n.etag:null,n.cacheControlDirectives?JSON.stringify(n.cacheControlDirectives):null,n.vary?JSON.stringify(n.vary):null,n.cachedAt,n.staleAt),this.#u())}createWriteStream(t,n){Qf(t),PG(n);let r=0,o=[],s=this;return new _G({decodeStrings:!0,write(i,A,a){r+=i.byteLength,r<s.#e?o.push(i):this.destroy(),a()},final(i){s.set(t,{...n,body:o}),i()}})}delete(t){if(typeof t!="object")throw new TypeError(`expected key to be object, got ${typeof t}`);this.#i.run(this.#d(t))}#u(){if(Number.isFinite(this.#t)&&this.size<=this.#t)return 0;{let t=this.#a.run(Date.now()).changes;if(t)return t}{let t=this.#c?.run(Math.max(Math.floor(this.#t*.1),1)).changes;if(t)return t}return 0}get size(){let{total:t}=this.#A.get();return t}#d(t){return`${t.origin}/${t.path}`}#l(t,n=!1){let r=this.#d(t),{headers:o,method:s}=t,i=this.#r.all(r,s);if(i.length===0)return;let A=Date.now();for(let a of i){if(A>=a.deleteAt&&!n)continue;let c=!0;if(a.vary){let d=JSON.parse(a.vary);for(let l in d)if(!vG(o[l],d[l])){c=!1;break}}if(c)return a}}};function vG(e,t){if(e==null&&t==null)return!0;if(e==null&&t!=null||e!=null&&t==null)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}return e===t}});var vr=m((I3,hR)=>{"use strict";var{kConstruct:OG}=ne(),{kEnumerableProperty:Po}=G(),{iteratorMixin:qG,isValidHeaderName:Ai,isValidHeaderValue:uR}=At(),{webidl:z}=De(),Rf=require("node:assert"),ba=require("node:util");function dR(e){return e===10||e===13||e===9||e===32}function lR(e){let t=0,n=e.length;for(;n>t&&dR(e.charCodeAt(n-1));)--n;for(;n>t&&dR(e.charCodeAt(t));)++t;return t===0&&n===e.length?e:e.substring(t,n)}function gR(e,t){if(Array.isArray(t))for(let n=0;n<t.length;++n){let r=t[n];if(r.length!==2)throw z.errors.exception({header:"Headers constructor",message:`expected name/value pair to be length 2, found ${r.length}.`});bf(e,r[0],r[1])}else if(typeof t=="object"&&t!==null){let n=Object.keys(t);for(let r=0;r<n.length;++r)bf(e,n[r],t[n[r]])}else throw z.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})}function bf(e,t,n){if(n=lR(n),Ai(t)){if(!uR(n))throw z.errors.invalidArgument({prefix:"Headers.append",value:n,type:"header value"})}else throw z.errors.invalidArgument({prefix:"Headers.append",value:t,type:"header name"});if(pR(e)==="immutable")throw new TypeError("immutable");return Da(e).append(t,n,!1)}function GG(e){let t=Da(e);if(!t)return[];if(t.sortedMap)return t.sortedMap;let n=[],r=t.toSortedArray(),o=t.cookies;if(o===null||o.length===1)return t.sortedMap=r;for(let s=0;s<r.length;++s){let{0:i,1:A}=r[s];if(i==="set-cookie")for(let a=0;a<o.length;++a)n.push([i,o[a]]);else n.push([i,A])}return t.sortedMap=n}function fR(e,t){return e[0]<t[0]?-1:1}var Sa=class e{cookies=null;sortedMap;headersMap;constructor(t){t instanceof e?(this.headersMap=new Map(t.headersMap),this.sortedMap=t.sortedMap,this.cookies=t.cookies===null?null:[...t.cookies]):(this.headersMap=new Map(t),this.sortedMap=null)}contains(t,n){return this.headersMap.has(n?t:t.toLowerCase())}clear(){this.headersMap.clear(),this.sortedMap=null,this.cookies=null}append(t,n,r){this.sortedMap=null;let o=r?t:t.toLowerCase(),s=this.headersMap.get(o);if(s){let i=o==="cookie"?"; ":", ";this.headersMap.set(o,{name:s.name,value:`${s.value}${i}${n}`})}else this.headersMap.set(o,{name:t,value:n});o==="set-cookie"&&(this.cookies??=[]).push(n)}set(t,n,r){this.sortedMap=null;let o=r?t:t.toLowerCase();o==="set-cookie"&&(this.cookies=[n]),this.headersMap.set(o,{name:t,value:n})}delete(t,n){this.sortedMap=null,n||(t=t.toLowerCase()),t==="set-cookie"&&(this.cookies=null),this.headersMap.delete(t)}get(t,n){return this.headersMap.get(n?t:t.toLowerCase())?.value??null}*[Symbol.iterator](){for(let{0:t,1:{value:n}}of this.headersMap)yield[t,n]}get entries(){let t={};if(this.headersMap.size!==0)for(let{name:n,value:r}of this.headersMap.values())t[n]=r;return t}rawValues(){return this.headersMap.values()}get entriesList(){let t=[];if(this.headersMap.size!==0)for(let{0:n,1:{name:r,value:o}}of this.headersMap)if(n==="set-cookie")for(let s of this.cookies)t.push([r,s]);else t.push([r,o]);return t}toSortedArray(){let t=this.headersMap.size,n=new Array(t);if(t<=32){if(t===0)return n;let r=this.headersMap[Symbol.iterator](),o=r.next().value;n[0]=[o[0],o[1].value],Rf(o[1].value!==null);for(let s=1,i=0,A=0,a=0,c=0,d,l;s<t;++s){for(l=r.next().value,d=n[s]=[l[0],l[1].value],Rf(d[1]!==null),a=0,A=s;a<A;)c=a+(A-a>>1),n[c][0]<=d[0]?a=c+1:A=c;if(s!==c){for(i=s;i>a;)n[i]=n[--i];n[a]=d}}if(!r.next().done)throw new TypeError("Unreachable");return n}else{let r=0;for(let{0:o,1:{value:s}}of this.headersMap)n[r++]=[o,s],Rf(s!==null);return n.sort(fR)}}},Ft=class e{#e;#t;constructor(t=void 0){z.util.markAsUncloneable(this),t!==OG&&(this.#t=new Sa,this.#e="none",t!==void 0&&(t=z.converters.HeadersInit(t,"Headers constructor","init"),gR(this,t)))}append(t,n){z.brandCheck(this,e),z.argumentLengthCheck(arguments,2,"Headers.append");let r="Headers.append";return t=z.converters.ByteString(t,r,"name"),n=z.converters.ByteString(n,r,"value"),bf(this,t,n)}delete(t){if(z.brandCheck(this,e),z.argumentLengthCheck(arguments,1,"Headers.delete"),t=z.converters.ByteString(t,"Headers.delete","name"),!Ai(t))throw z.errors.invalidArgument({prefix:"Headers.delete",value:t,type:"header name"});if(this.#e==="immutable")throw new TypeError("immutable");this.#t.contains(t,!1)&&this.#t.delete(t,!1)}get(t){z.brandCheck(this,e),z.argumentLengthCheck(arguments,1,"Headers.get");let n="Headers.get";if(t=z.converters.ByteString(t,n,"name"),!Ai(t))throw z.errors.invalidArgument({prefix:n,value:t,type:"header name"});return this.#t.get(t,!1)}has(t){z.brandCheck(this,e),z.argumentLengthCheck(arguments,1,"Headers.has");let n="Headers.has";if(t=z.converters.ByteString(t,n,"name"),!Ai(t))throw z.errors.invalidArgument({prefix:n,value:t,type:"header name"});return this.#t.contains(t,!1)}set(t,n){z.brandCheck(this,e),z.argumentLengthCheck(arguments,2,"Headers.set");let r="Headers.set";if(t=z.converters.ByteString(t,r,"name"),n=z.converters.ByteString(n,r,"value"),n=lR(n),Ai(t)){if(!uR(n))throw z.errors.invalidArgument({prefix:r,value:n,type:"header value"})}else throw z.errors.invalidArgument({prefix:r,value:t,type:"header name"});if(this.#e==="immutable")throw new TypeError("immutable");this.#t.set(t,n,!1)}getSetCookie(){z.brandCheck(this,e);let t=this.#t.cookies;return t?[...t]:[]}[ba.inspect.custom](t,n){return n.depth??=t,`Headers ${ba.formatWithOptions(n,this.#t.entries)}`}static getHeadersGuard(t){return t.#e}static setHeadersGuard(t,n){t.#e=n}static getHeadersList(t){return t.#t}static setHeadersList(t,n){t.#t=n}},{getHeadersGuard:pR,setHeadersGuard:HG,getHeadersList:Da,setHeadersList:YG}=Ft;Reflect.deleteProperty(Ft,"getHeadersGuard");Reflect.deleteProperty(Ft,"setHeadersGuard");Reflect.deleteProperty(Ft,"getHeadersList");Reflect.deleteProperty(Ft,"setHeadersList");qG("Headers",Ft,GG,0,1);Object.defineProperties(Ft.prototype,{append:Po,delete:Po,get:Po,has:Po,set:Po,getSetCookie:Po,[Symbol.toStringTag]:{value:"Headers",configurable:!0},[ba.inspect.custom]:{enumerable:!1}});z.converters.HeadersInit=function(e,t,n){if(z.util.Type(e)===z.util.Types.OBJECT){let r=Reflect.get(e,Symbol.iterator);if(!ba.types.isProxy(e)&&r===Ft.prototype.entries)try{return Da(e).entriesList}catch{}return typeof r=="function"?z.converters["sequence<sequence<ByteString>>"](e,t,n,r.bind(e)):z.converters["record<ByteString, ByteString>"](e,t,n)}throw z.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})};hR.exports={fill:gR,compareHeaderName:fR,Headers:Ft,HeadersList:Sa,getHeadersGuard:pR,setHeadersGuard:HG,setHeadersList:YG,getHeadersList:Da}});var ci=m((B3,DR)=>{"use strict";var{Headers:mR,HeadersList:ER,fill:WG,getHeadersGuard:VG,setHeadersGuard:QR,setHeadersList:wR}=vr(),{extractBody:CR,cloneBody:JG,mixinBody:zG,streamRegistry:RR,bodyUnusable:KG}=po(),bR=G(),IR=require("node:util"),{kEnumerableProperty:gt}=bR,{isValidReasonPhrase:XG,isCancelled:jG,isAborted:$G,isErrorLike:ZG,environmentSettingsObject:eH}=At(),{redirectStatusSet:tH,nullBodyStatus:nH}=Bs(),{webidl:J}=De(),{URLSerializer:BR}=It(),{kConstruct:ka}=ne(),Sf=require("node:assert"),{isomorphicEncode:rH,serializeJavascriptValueToJSONString:oH}=ln(),sH=new TextEncoder("utf-8"),ft=class e{#e;#t;static error(){return ai(Na(),"immutable")}static json(t,n=void 0){J.argumentLengthCheck(arguments,1,"Response.json"),n!==null&&(n=J.converters.ResponseInit(n));let r=sH.encode(oH(t)),o=CR(r),s=ai(vo({}),"response");return yR(s,n,{body:o[0],type:"application/json"}),s}static redirect(t,n=302){J.argumentLengthCheck(arguments,1,"Response.redirect"),t=J.converters.USVString(t),n=J.converters["unsigned short"](n);let r;try{r=new URL(t,eH.settingsObject.baseUrl)}catch(i){throw new TypeError(`Failed to parse URL from ${t}`,{cause:i})}if(!tH.has(n))throw new RangeError(`Invalid status code ${n}`);let o=ai(vo({}),"immutable");o.#t.status=n;let s=rH(BR(r));return o.#t.headersList.append("location",s,!0),o}constructor(t=null,n=void 0){if(J.util.markAsUncloneable(this),t===ka)return;t!==null&&(t=J.converters.BodyInit(t,"Response","body")),n=J.converters.ResponseInit(n),this.#t=vo({}),this.#e=new mR(ka),QR(this.#e,"response"),wR(this.#e,this.#t.headersList);let r=null;if(t!=null){let[o,s]=CR(t);r={body:o,type:s}}yR(this,n,r)}get type(){return J.brandCheck(this,e),this.#t.type}get url(){J.brandCheck(this,e);let t=this.#t.urlList,n=t[t.length-1]??null;return n===null?"":BR(n,!0)}get redirected(){return J.brandCheck(this,e),this.#t.urlList.length>1}get status(){return J.brandCheck(this,e),this.#t.status}get ok(){return J.brandCheck(this,e),this.#t.status>=200&&this.#t.status<=299}get statusText(){return J.brandCheck(this,e),this.#t.statusText}get headers(){return J.brandCheck(this,e),this.#e}get body(){return J.brandCheck(this,e),this.#t.body?this.#t.body.stream:null}get bodyUsed(){return J.brandCheck(this,e),!!this.#t.body&&bR.isDisturbed(this.#t.body.stream)}clone(){if(J.brandCheck(this,e),KG(this.#t))throw J.errors.exception({header:"Response.clone",message:"Body has already been consumed."});let t=Df(this.#t);return this.#t.urlList.length!==0&&this.#t.body?.stream&&RR.register(this,new WeakRef(this.#t.body.stream)),ai(t,VG(this.#e))}[IR.inspect.custom](t,n){n.depth===null&&(n.depth=2),n.colors??=!0;let r={status:this.status,statusText:this.statusText,headers:this.headers,body:this.body,bodyUsed:this.bodyUsed,ok:this.ok,redirected:this.redirected,type:this.type,url:this.url};return`Response ${IR.formatWithOptions(n,r)}`}static getResponseHeaders(t){return t.#e}static setResponseHeaders(t,n){t.#e=n}static getResponseState(t){return t.#t}static setResponseState(t,n){t.#t=n}},{getResponseHeaders:iH,setResponseHeaders:AH,getResponseState:Or,setResponseState:aH}=ft;Reflect.deleteProperty(ft,"getResponseHeaders");Reflect.deleteProperty(ft,"setResponseHeaders");Reflect.deleteProperty(ft,"getResponseState");Reflect.deleteProperty(ft,"setResponseState");zG(ft,Or);Object.defineProperties(ft.prototype,{type:gt,url:gt,status:gt,ok:gt,redirected:gt,statusText:gt,headers:gt,clone:gt,body:gt,bodyUsed:gt,[Symbol.toStringTag]:{value:"Response",configurable:!0}});Object.defineProperties(ft,{json:gt,redirect:gt,error:gt});function Df(e){if(e.internalResponse)return SR(Df(e.internalResponse),e.type);let t=vo({...e,body:null});return e.body!=null&&(t.body=JG(e.body)),t}function vo(e){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...e,headersList:e?.headersList?new ER(e?.headersList):new ER,urlList:e?.urlList?[...e.urlList]:[]}}function Na(e){let t=ZG(e);return vo({type:"error",status:0,error:t?e:new Error(e&&String(e)),aborted:e&&e.name==="AbortError"})}function cH(e){return e.type==="error"&&e.status===0}function Ta(e,t){return t={internalResponse:e,...t},new Proxy(e,{get(n,r){return r in t?t[r]:n[r]},set(n,r,o){return Sf(!(r in t)),n[r]=o,!0}})}function SR(e,t){if(t==="basic")return Ta(e,{type:"basic",headersList:e.headersList});if(t==="cors")return Ta(e,{type:"cors",headersList:e.headersList});if(t==="opaque")return Ta(e,{type:"opaque",urlList:[],status:0,statusText:"",body:null});if(t==="opaqueredirect")return Ta(e,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null});Sf(!1)}function dH(e,t=null){return Sf(jG(e)),$G(e)?Na(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:t})):Na(Object.assign(new DOMException("Request was cancelled."),{cause:t}))}function yR(e,t,n){if(t.status!==null&&(t.status<200||t.status>599))throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.');if("statusText"in t&&t.statusText!=null&&!XG(String(t.statusText)))throw new TypeError("Invalid statusText");if("status"in t&&t.status!=null&&(Or(e).status=t.status),"statusText"in t&&t.statusText!=null&&(Or(e).statusText=t.statusText),"headers"in t&&t.headers!=null&&WG(iH(e),t.headers),n){if(nH.includes(e.status))throw J.errors.exception({header:"Response constructor",message:`Invalid response status code ${e.status}`});Or(e).body=n.body,n.type!=null&&!Or(e).headersList.contains("content-type",!0)&&Or(e).headersList.append("content-type",n.type,!0)}}function ai(e,t){let n=new ft(ka);aH(n,e);let r=new mR(ka);return AH(n,r),wR(r,e.headersList),QR(r,t),e.urlList.length!==0&&e.body?.stream&&RR.register(n,new WeakRef(e.body.stream)),n}J.converters.XMLHttpRequestBodyInit=function(e,t,n){return typeof e=="string"?J.converters.USVString(e,t,n):J.is.Blob(e)||J.is.BufferSource(e)||J.is.FormData(e)||J.is.URLSearchParams(e)?e:J.converters.DOMString(e,t,n)};J.converters.BodyInit=function(e,t,n){return J.is.ReadableStream(e)||e?.[Symbol.asyncIterator]?e:J.converters.XMLHttpRequestBodyInit(e,t,n)};J.converters.ResponseInit=J.dictionaryConverter([{key:"status",converter:J.converters["unsigned short"],defaultValue:()=>200},{key:"statusText",converter:J.converters.ByteString,defaultValue:()=>""},{key:"headers",converter:J.converters.HeadersInit}]);J.is.Response=J.util.MakeTypeAssertion(ft);DR.exports={isNetworkError:cH,makeNetworkError:Na,makeResponse:vo,makeAppropriateNetworkError:dH,filterResponse:SR,Response:ft,cloneResponse:Df,fromInnerResponse:ai,getResponseState:Or}});var Oo=m((y3,GR)=>{"use strict";var{extractBody:uH,mixinBody:lH,cloneBody:gH,bodyUnusable:TR}=po(),{Headers:LR,fill:fH,HeadersList:Ua,setHeadersGuard:Tf,getHeadersGuard:pH,setHeadersList:FR,getHeadersList:kR}=vr(),xa=G(),NR=require("node:util"),{isValidHTTPToken:hH,sameOrigin:MR,environmentSettingsObject:Ma}=At(),{forbiddenMethodsSet:EH,corsSafeListedMethodsSet:CH,referrerPolicy:IH,requestRedirect:BH,requestMode:yH,requestCredentials:mH,requestCache:QH,requestDuplex:wH}=Bs(),{kEnumerableProperty:me,normalizedMethodRecordsBase:RH,normalizedMethodRecords:bH}=xa,{webidl:O}=De(),{URLSerializer:SH}=It(),{kConstruct:La}=ne(),DH=require("node:assert"),{getMaxListeners:_R,setMaxListeners:TH,defaultMaxListeners:kH}=require("node:events"),NH=Symbol("abortController"),PR=new FinalizationRegistry(({signal:e,abort:t})=>{e.removeEventListener("abort",t)}),Fa=new WeakMap,kf;try{kf=_R(new AbortController().signal)>0}catch{kf=!1}function xR(e){return t;function t(){let n=e.deref();if(n!==void 0){PR.unregister(t),this.removeEventListener("abort",t),n.abort(this.reason);let r=Fa.get(n.signal);if(r!==void 0){if(r.size!==0){for(let o of r){let s=o.deref();s!==void 0&&s.abort(this.reason)}r.clear()}Fa.delete(n.signal)}}}}var UR=!1,je=class e{#e;#t;#n;#r;constructor(t,n=void 0){if(O.util.markAsUncloneable(this),t===La)return;O.argumentLengthCheck(arguments,1,"Request constructor"),t=O.converters.RequestInfo(t),n=O.converters.RequestInit(n);let o=null,s=null,i=Ma.settingsObject.baseUrl,A=null;if(typeof t=="string"){this.#t=n.dispatcher;let C;try{C=new URL(t,i)}catch(y){throw new TypeError("Failed to parse URL from "+t,{cause:y})}if(C.username||C.password)throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+t);o=_a({urlList:[C]}),s="cors"}else DH(O.is.Request(t)),o=t.#r,A=t.#e,this.#t=n.dispatcher||t.#t;let a=Ma.settingsObject.origin,c="client";if(o.window?.constructor?.name==="EnvironmentSettingsObject"&&MR(o.window,a)&&(c=o.window),n.window!=null)throw new TypeError(`'window' option '${c}' must be null`);"window"in n&&(c="no-window"),o=_a({method:o.method,headersList:o.headersList,unsafeRequest:o.unsafeRequest,client:Ma.settingsObject,window:c,priority:o.priority,origin:o.origin,referrer:o.referrer,referrerPolicy:o.referrerPolicy,mode:o.mode,credentials:o.credentials,cache:o.cache,redirect:o.redirect,integrity:o.integrity,keepalive:o.keepalive,reloadNavigation:o.reloadNavigation,historyNavigation:o.historyNavigation,urlList:[...o.urlList]});let d=Object.keys(n).length!==0;if(d&&(o.mode==="navigate"&&(o.mode="same-origin"),o.reloadNavigation=!1,o.historyNavigation=!1,o.origin="client",o.referrer="client",o.referrerPolicy="",o.url=o.urlList[o.urlList.length-1],o.urlList=[o.url]),n.referrer!==void 0){let C=n.referrer;if(C==="")o.referrer="no-referrer";else{let y;try{y=new URL(C,i)}catch(Q){throw new TypeError(`Referrer "${C}" is not a valid URL.`,{cause:Q})}y.protocol==="about:"&&y.hostname==="client"||a&&!MR(y,Ma.settingsObject.baseUrl)?o.referrer="client":o.referrer=y}}n.referrerPolicy!==void 0&&(o.referrerPolicy=n.referrerPolicy);let l;if(n.mode!==void 0?l=n.mode:l=s,l==="navigate")throw O.errors.exception({header:"Request constructor",message:"invalid request mode navigate."});if(l!=null&&(o.mode=l),n.credentials!==void 0&&(o.credentials=n.credentials),n.cache!==void 0&&(o.cache=n.cache),o.cache==="only-if-cached"&&o.mode!=="same-origin")throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode");if(n.redirect!==void 0&&(o.redirect=n.redirect),n.integrity!=null&&(o.integrity=String(n.integrity)),n.keepalive!==void 0&&(o.keepalive=!!n.keepalive),n.method!==void 0){let C=n.method,y=bH[C];if(y!==void 0)o.method=y;else{if(!hH(C))throw new TypeError(`'${C}' is not a valid HTTP method.`);let Q=C.toUpperCase();if(EH.has(Q))throw new TypeError(`'${C}' HTTP method is unsupported.`);C=RH[Q]??C,o.method=C}!UR&&o.method==="patch"&&(process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.",{code:"UNDICI-FETCH-patch"}),UR=!0)}n.signal!==void 0&&(A=n.signal),this.#r=o;let u=new AbortController;if(this.#e=u.signal,A!=null)if(A.aborted)u.abort(A.reason);else{this[NH]=u;let C=new WeakRef(u),y=xR(C);kf&&_R(A)===kH&&TH(1500,A),xa.addAbortListener(A,y),PR.register(u,{signal:A,abort:y},y)}if(this.#n=new LR(La),FR(this.#n,o.headersList),Tf(this.#n,"request"),l==="no-cors"){if(!CH.has(o.method))throw new TypeError(`'${o.method} is unsupported in no-cors mode.`);Tf(this.#n,"request-no-cors")}if(d){let C=kR(this.#n),y=n.headers!==void 0?n.headers:new Ua(C);if(C.clear(),y instanceof Ua){for(let{name:Q,value:b}of y.rawValues())C.append(Q,b,!1);C.cookies=y.cookies}else fH(this.#n,y)}let g=O.is.Request(t)?t.#r.body:null;if((n.body!=null||g!=null)&&(o.method==="GET"||o.method==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body.");let h=null;if(n.body!=null){let[C,y]=uH(n.body,o.keepalive);h=C,y&&!kR(this.#n).contains("content-type",!0)&&this.#n.append("content-type",y,!0)}let E=h??g;if(E!=null&&E.source==null){if(h!=null&&n.duplex==null)throw new TypeError("RequestInit: duplex option is required when sending a body.");if(o.mode!=="same-origin"&&o.mode!=="cors")throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"');o.useCORSPreflightFlag=!0}let B=E;if(h==null&&g!=null){if(TR(t.#r))throw new TypeError("Cannot construct a Request with a Request object that has already been used.");let C=new TransformStream;g.stream.pipeThrough(C),B={source:g.source,length:g.length,stream:C.readable}}this.#r.body=B}get method(){return O.brandCheck(this,e),this.#r.method}get url(){return O.brandCheck(this,e),SH(this.#r.url)}get headers(){return O.brandCheck(this,e),this.#n}get destination(){return O.brandCheck(this,e),this.#r.destination}get referrer(){return O.brandCheck(this,e),this.#r.referrer==="no-referrer"?"":this.#r.referrer==="client"?"about:client":this.#r.referrer.toString()}get referrerPolicy(){return O.brandCheck(this,e),this.#r.referrerPolicy}get mode(){return O.brandCheck(this,e),this.#r.mode}get credentials(){return O.brandCheck(this,e),this.#r.credentials}get cache(){return O.brandCheck(this,e),this.#r.cache}get redirect(){return O.brandCheck(this,e),this.#r.redirect}get integrity(){return O.brandCheck(this,e),this.#r.integrity}get keepalive(){return O.brandCheck(this,e),this.#r.keepalive}get isReloadNavigation(){return O.brandCheck(this,e),this.#r.reloadNavigation}get isHistoryNavigation(){return O.brandCheck(this,e),this.#r.historyNavigation}get signal(){return O.brandCheck(this,e),this.#e}get body(){return O.brandCheck(this,e),this.#r.body?this.#r.body.stream:null}get bodyUsed(){return O.brandCheck(this,e),!!this.#r.body&&xa.isDisturbed(this.#r.body.stream)}get duplex(){return O.brandCheck(this,e),"half"}clone(){if(O.brandCheck(this,e),TR(this.#r))throw new TypeError("unusable");let t=OR(this.#r),n=new AbortController;if(this.signal.aborted)n.abort(this.signal.reason);else{let r=Fa.get(this.signal);r===void 0&&(r=new Set,Fa.set(this.signal,r));let o=new WeakRef(n);r.add(o),xa.addAbortListener(n.signal,xR(o))}return qR(t,this.#t,n.signal,pH(this.#n))}[NR.inspect.custom](t,n){n.depth===null&&(n.depth=2),n.colors??=!0;let r={method:this.method,url:this.url,headers:this.headers,destination:this.destination,referrer:this.referrer,referrerPolicy:this.referrerPolicy,mode:this.mode,credentials:this.credentials,cache:this.cache,redirect:this.redirect,integrity:this.integrity,keepalive:this.keepalive,isReloadNavigation:this.isReloadNavigation,isHistoryNavigation:this.isHistoryNavigation,signal:this.signal};return`Request ${NR.formatWithOptions(n,r)}`}static setRequestSignal(t,n){return t.#e=n,t}static getRequestDispatcher(t){return t.#t}static setRequestDispatcher(t,n){t.#t=n}static setRequestHeaders(t,n){t.#n=n}static getRequestState(t){return t.#r}static setRequestState(t,n){t.#r=n}},{setRequestSignal:MH,getRequestDispatcher:xH,setRequestDispatcher:UH,setRequestHeaders:LH,getRequestState:vR,setRequestState:FH}=je;Reflect.deleteProperty(je,"setRequestSignal");Reflect.deleteProperty(je,"getRequestDispatcher");Reflect.deleteProperty(je,"setRequestDispatcher");Reflect.deleteProperty(je,"setRequestHeaders");Reflect.deleteProperty(je,"getRequestState");Reflect.deleteProperty(je,"setRequestState");lH(je,vR);function _a(e){return{method:e.method??"GET",localURLsOnly:e.localURLsOnly??!1,unsafeRequest:e.unsafeRequest??!1,body:e.body??null,client:e.client??null,reservedClient:e.reservedClient??null,replacesClientId:e.replacesClientId??"",window:e.window??"client",keepalive:e.keepalive??!1,serviceWorkers:e.serviceWorkers??"all",initiator:e.initiator??"",destination:e.destination??"",priority:e.priority??null,origin:e.origin??"client",policyContainer:e.policyContainer??"client",referrer:e.referrer??"client",referrerPolicy:e.referrerPolicy??"",mode:e.mode??"no-cors",useCORSPreflightFlag:e.useCORSPreflightFlag??!1,credentials:e.credentials??"same-origin",useCredentials:e.useCredentials??!1,cache:e.cache??"default",redirect:e.redirect??"follow",integrity:e.integrity??"",cryptoGraphicsNonceMetadata:e.cryptoGraphicsNonceMetadata??"",parserMetadata:e.parserMetadata??"",reloadNavigation:e.reloadNavigation??!1,historyNavigation:e.historyNavigation??!1,userActivation:e.userActivation??!1,taintedOrigin:e.taintedOrigin??!1,redirectCount:e.redirectCount??0,responseTainting:e.responseTainting??"basic",preventNoCacheCacheControlHeaderModification:e.preventNoCacheCacheControlHeaderModification??!1,done:e.done??!1,timingAllowFailed:e.timingAllowFailed??!1,useURLCredentials:e.useURLCredentials??void 0,traversableForUserPrompts:e.traversableForUserPrompts??"client",urlList:e.urlList,url:e.urlList[0],headersList:e.headersList?new Ua(e.headersList):new Ua}}function OR(e){let t=_a({...e,body:null});return e.body!=null&&(t.body=gH(e.body)),t}function qR(e,t,n,r){let o=new je(La);FH(o,e),UH(o,t),MH(o,n);let s=new LR(La);return LH(o,s),FR(s,e.headersList),Tf(s,r),o}Object.defineProperties(je.prototype,{method:me,url:me,headers:me,redirect:me,clone:me,signal:me,duplex:me,destination:me,body:me,bodyUsed:me,isHistoryNavigation:me,isReloadNavigation:me,keepalive:me,integrity:me,cache:me,credentials:me,attribute:me,referrerPolicy:me,referrer:me,mode:me,[Symbol.toStringTag]:{value:"Request",configurable:!0}});O.is.Request=O.util.MakeTypeAssertion(je);O.converters.RequestInfo=function(e){return typeof e=="string"?O.converters.USVString(e):O.is.Request(e)?e:O.converters.USVString(e)};O.converters.RequestInit=O.dictionaryConverter([{key:"method",converter:O.converters.ByteString},{key:"headers",converter:O.converters.HeadersInit},{key:"body",converter:O.nullableConverter(O.converters.BodyInit)},{key:"referrer",converter:O.converters.USVString},{key:"referrerPolicy",converter:O.converters.DOMString,allowedValues:IH},{key:"mode",converter:O.converters.DOMString,allowedValues:yH},{key:"credentials",converter:O.converters.DOMString,allowedValues:mH},{key:"cache",converter:O.converters.DOMString,allowedValues:QH},{key:"redirect",converter:O.converters.DOMString,allowedValues:BH},{key:"integrity",converter:O.converters.DOMString},{key:"keepalive",converter:O.converters.boolean},{key:"signal",converter:O.nullableConverter(e=>O.converters.AbortSignal(e,"RequestInit","signal"))},{key:"window",converter:O.converters.any},{key:"duplex",converter:O.converters.DOMString,allowedValues:wH},{key:"dispatcher",converter:O.converters.any},{key:"priority",converter:O.converters.DOMString,allowedValues:["high","low","auto"],defaultValue:()=>"auto"}]);GR.exports={Request:je,makeRequest:_a,fromInnerRequest:qR,cloneRequest:OR,getRequestDispatcher:xH,getRequestState:vR}});var XR=m((m3,KR)=>{"use strict";var _H=require("node:assert"),{runtimeFeatures:YR}=gn(),qr=new Map([["sha256",0],["sha384",1],["sha512",2]]),Nf;if(YR.has("crypto")){Nf=require("node:crypto");let e=Nf.getHashes();e.length===0&&qr.clear();for(let t of qr.keys())e.includes(t)===!1&&qr.delete(t)}else qr.clear();var HR=Map.prototype.get.bind(qr),Mf=Map.prototype.has.bind(qr),PH=YR.has("crypto")===!1||qr.size===0?()=>!0:(e,t)=>{let n=VR(t);if(n.length===0)return!0;let r=WR(n);for(let o of r){let s=o.alg,i=o.val,A=JR(s,e);if(zR(A,i))return!0}return!1};function WR(e){let t=[],n=null;for(let r of e){if(_H(Mf(r.alg),"Invalid SRI hash algorithm token"),t.length===0){t.push(r),n=r;continue}let o=n.alg,s=HR(o),i=r.alg,A=HR(i);A<s||(A>s?(n=r,t[0]=r,t.length=1):t.push(r))}return t}function VR(e){let t=[];for(let n of e.split(" ")){let o=n.split("?",1)[0],s="",i=[o.slice(0,6),o.slice(7)],A=i[0];if(!Mf(A))continue;i[1]&&(s=i[1]);let a={alg:A,val:s};t.push(a)}return t}var JR=(e,t)=>Nf.hash(e,t,"base64");function zR(e,t){let n=e.length;n!==0&&e[n-1]==="="&&(n-=1),n!==0&&e[n-1]==="="&&(n-=1);let r=t.length;if(r!==0&&t[r-1]==="="&&(r-=1),r!==0&&t[r-1]==="="&&(r-=1),n!==r)return!1;for(let o=0;o<n;++o)if(!(e[o]===t[o]||e[o]==="+"&&t[o]==="-"||e[o]==="/"&&t[o]==="_"))return!1;return!0}KR.exports={applyAlgorithmToBytes:JR,bytesMatch:PH,caseSensitiveMatch:zR,isValidSRIHashAlgorithm:Mf,getStrongestMetadata:WR,parseMetadata:VR}});var li=m((Q3,db)=>{"use strict";var{makeNetworkError:oe,makeAppropriateNetworkError:di,filterResponse:xf,makeResponse:Pa,fromInnerResponse:vH,getResponseState:OH}=ci(),{HeadersList:Uf}=vr(),{Request:qH,cloneRequest:GH,getRequestDispatcher:HH,getRequestState:YH}=Oo(),_t=require("node:zlib"),{makePolicyContainer:WH,clonePolicyContainer:VH,requestBadPort:JH,TAOCheck:zH,appendRequestOriginHeader:KH,responseLocationURL:XH,requestCurrentURL:pt,setRequestReferrerPolicyOnRedirect:jH,tryUpgradeRequestToAPotentiallyTrustworthyURL:$H,createOpaqueTimingInfo:Of,appendFetchMetadata:ZH,corsCheck:eY,crossOriginResourcePolicyCheck:tY,determineRequestsReferrer:nY,coarsenedSharedCurrentTime:ui,sameOrigin:Pf,isCancelled:er,isAborted:jR,isErrorLike:rY,fullyReadBody:oY,readableStreamClose:sY,urlIsLocal:iY,urlIsHttpHttpsScheme:Ga,urlHasHttpsScheme:AY,clampAndCoarsenConnectionTimingInfo:aY,simpleRangeHeaderValue:cY,buildContentRange:dY,createInflate:uY,extractMimeType:lY,hasAuthenticationEntry:gY,includesCredentials:$R,isTraversableNavigable:fY}=At(),Gr=require("node:assert"),{safelyExtractBody:Ha,extractBody:ZR}=po(),{redirectStatusSet:rb,nullBodyStatus:ob,safeMethodsSet:pY,requestBodyHeader:hY,subresourceSet:EY}=Bs(),CY=require("node:events"),{Readable:IY,pipeline:BY,finished:yY,isErrored:mY,isReadable:va}=require("node:stream"),{addAbortListener:QY,bufferToLowerCasedHeaderName:eb}=G(),{dataURLProcessor:wY,serializeAMimeType:RY,minimizeSupportedMimeType:bY}=It(),{getGlobalDispatcher:SY}=ma(),{webidl:qf}=De(),{STATUS_CODES:tb}=require("node:http"),{bytesMatch:DY}=XR(),{createDeferredPromise:TY}=Rs(),{isomorphicEncode:Oa}=ln(),{runtimeFeatures:kY}=gn(),NY=kY.has("zstd"),MY=["GET","HEAD"],xY=typeof __UNDICI_IS_NODE__<"u"||typeof esbuildDetection<"u"?"node":"undici",Lf,qa=class extends CY{constructor(t){super(),this.dispatcher=t,this.connection=null,this.dump=!1,this.state="ongoing"}terminate(t){this.state==="ongoing"&&(this.state="terminated",this.connection?.destroy(t),this.emit("terminated",t))}abort(t){this.state==="ongoing"&&(this.state="aborted",t||(t=new DOMException("The operation was aborted.","AbortError")),this.serializedAbortReason=t,this.connection?.destroy(t),this.emit("terminated",t))}};function UY(e){sb(e,"fetch")}function LY(e,t=void 0){qf.argumentLengthCheck(arguments,1,"globalThis.fetch");let n=TY(),r;try{r=new qH(e,t)}catch(d){return n.reject(d),n.promise}let o=YH(r);if(r.signal.aborted)return Ff(n,o,null,r.signal.reason,null),n.promise;o.client.globalObject?.constructor?.name==="ServiceWorkerGlobalScope"&&(o.serviceWorkers="none");let i=null,A=!1,a=null;return QY(r.signal,()=>{A=!0,Gr(a!=null),a.abort(r.signal.reason);let d=i?.deref();Ff(n,o,d,r.signal.reason,a.controller)}),a=Ab({request:o,processResponseEndOfBody:UY,processResponse:d=>{if(!A){if(d.aborted){Ff(n,o,i,a.serializedAbortReason,a.controller);return}if(d.type==="error"){n.reject(new TypeError("fetch failed",{cause:d.error}));return}i=new WeakRef(vH(d,"immutable")),n.resolve(i.deref()),n=null}},dispatcher:HH(r),requestObject:r}),n.promise}function sb(e,t="other"){if(e.type==="error"&&e.aborted||!e.urlList?.length)return;let n=e.urlList[0],r=e.timingInfo,o=e.cacheState;Ga(n)&&r!==null&&(e.timingAllowPassed||(r=Of({startTime:r.startTime}),o=""),r.endTime=ui(),e.timingInfo=r,ib(r,n.href,t,globalThis,o,"",e.status))}var ib=performance.markResourceTiming;function Ff(e,t,n,r,o){if(e&&e.reject(r),t.body?.stream!=null&&va(t.body.stream)&&t.body.stream.cancel(r).catch(i=>{if(i.code!=="ERR_INVALID_STATE")throw i}),n==null)return;let s=OH(n);s.body?.stream!=null&&va(s.body.stream)&&o.error(r)}function Ab({request:e,processRequestBodyChunkLength:t,processRequestEndOfBody:n,processResponse:r,processResponseEndOfBody:o,processResponseConsumeBody:s,useParallelQueue:i=!1,dispatcher:A=SY(),requestObject:a=null}){Gr(A);let c=null,d=!1;e.client!=null&&(c=e.client.globalObject,d=e.client.crossOriginIsolatedCapability);let l=ui(d),u=Of({startTime:l}),g={controller:new qa(A),request:e,timingInfo:u,processRequestBodyChunkLength:t,processRequestEndOfBody:n,processResponse:r,processResponseConsumeBody:s,processResponseEndOfBody:o,taskDestination:c,crossOriginIsolatedCapability:d,requestObject:a};return Gr(!e.body||e.body.stream),e.window==="client"&&(e.window=e.client?.globalObject?.constructor?.name==="Window"?e.client:"no-window"),e.origin==="client"&&(e.origin=e.client.origin),e.policyContainer==="client"&&(e.client!=null?e.policyContainer=VH(e.client.policyContainer):e.policyContainer=WH()),e.headersList.contains("accept",!0)||e.headersList.append("accept","*/*",!0),e.headersList.contains("accept-language",!0)||e.headersList.append("accept-language","*",!0),e.priority,EY.has(e.destination),ab(g,!1),g.controller}async function ab(e,t){try{let n=e.request,r=null;if(n.localURLsOnly&&!iY(pt(n))&&(r=oe("local URLs only")),$H(n),JH(n)==="blocked"&&(r=oe("bad port")),n.referrerPolicy===""&&(n.referrerPolicy=n.policyContainer.referrerPolicy),n.referrer!=="no-referrer"&&(n.referrer=nY(n)),r===null){let s=pt(n);Pf(s,n.url)&&n.responseTainting==="basic"||s.protocol==="data:"||n.mode==="navigate"||n.mode==="websocket"?(n.responseTainting="basic",r=await nb(e)):n.mode==="same-origin"?r=oe('request mode cannot be "same-origin"'):n.mode==="no-cors"?n.redirect!=="follow"?r=oe('redirect mode cannot be "follow" for "no-cors" request'):(n.responseTainting="opaque",r=await nb(e)):Ga(pt(n))?(n.responseTainting="cors",r=await cb(e)):r=oe("URL scheme must be a HTTP(S) scheme")}if(t)return r;r.status!==0&&!r.internalResponse&&(n.responseTainting,n.responseTainting==="basic"?r=xf(r,"basic"):n.responseTainting==="cors"?r=xf(r,"cors"):n.responseTainting==="opaque"?r=xf(r,"opaque"):Gr(!1));let o=r.status===0?r:r.internalResponse;if(o.urlList.length===0&&o.urlList.push(...n.urlList),n.timingAllowFailed||(r.timingAllowPassed=!0),r.type==="opaque"&&o.status===206&&o.rangeRequested&&!n.headers.contains("range",!0)&&(r=o=oe()),r.status!==0&&(n.method==="HEAD"||n.method==="CONNECT"||ob.includes(o.status))&&(o.body=null,e.controller.dump=!0),n.integrity){let s=A=>_f(e,oe(A));if(n.responseTainting==="opaque"||r.body==null){s(r.error);return}let i=A=>{if(!DY(A,n.integrity)){s("integrity mismatch");return}r.body=Ha(A)[0],_f(e,r)};oY(r.body,i,s)}else _f(e,r)}catch(n){e.controller.terminate(n)}}function nb(e){if(er(e)&&e.request.redirectCount===0)return Promise.resolve(di(e));let{request:t}=e,{protocol:n}=pt(t);switch(n){case"about:":return Promise.resolve(oe("about scheme is not supported"));case"blob:":{Lf||(Lf=require("node:buffer").resolveObjectURL);let r=pt(t);if(r.search.length!==0)return Promise.resolve(oe("NetworkError when attempting to fetch resource."));let o=Lf(r.toString());if(t.method!=="GET"||!qf.is.Blob(o))return Promise.resolve(oe("invalid method"));let s=Pa(),i=o.size,A=Oa(`${i}`),a=o.type;if(t.headersList.contains("range",!0)){s.rangeRequested=!0;let c=t.headersList.get("range",!0),d=cY(c,!0);if(d==="failure")return Promise.resolve(oe("failed to fetch the data URL"));let{rangeStartValue:l,rangeEndValue:u}=d;if(l===null)l=i-u,u=l+u-1;else{if(l>=i)return Promise.resolve(oe("Range start is greater than the blob's size."));(u===null||u>=i)&&(u=i-1)}let g=o.slice(l,u+1,a),h=ZR(g);s.body=h[0];let E=Oa(`${g.size}`),B=dY(l,u,i);s.status=206,s.statusText="Partial Content",s.headersList.set("content-length",E,!0),s.headersList.set("content-type",a,!0),s.headersList.set("content-range",B,!0)}else{let c=ZR(o);s.statusText="OK",s.body=c[0],s.headersList.set("content-length",A,!0),s.headersList.set("content-type",a,!0)}return Promise.resolve(s)}case"data:":{let r=pt(t),o=wY(r);if(o==="failure")return Promise.resolve(oe("failed to fetch the data URL"));let s=RY(o.mimeType);return Promise.resolve(Pa({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:s}]],body:Ha(o.body)[0]}))}case"file:":return Promise.resolve(oe("not implemented... yet..."));case"http:":case"https:":return cb(e).catch(r=>oe(r));default:return Promise.resolve(oe("unknown scheme"))}}function FY(e,t){e.request.done=!0,e.processResponseDone!=null&&queueMicrotask(()=>e.processResponseDone(t))}function _f(e,t){let n=e.timingInfo,r=()=>{let s=Date.now();e.request.destination==="document"&&(e.controller.fullTimingInfo=n),e.controller.reportTimingSteps=()=>{if(!Ga(e.request.url))return;n.endTime=s;let A=t.cacheState,a=t.bodyInfo;t.timingAllowPassed||(n=Of(n),A="");let c=0;if(e.request.mode!=="navigate"||!t.hasCrossOriginRedirects){c=t.status;let d=lY(t.headersList);d!=="failure"&&(a.contentType=bY(d))}e.request.initiatorType!=null&&ib(n,e.request.url.href,e.request.initiatorType,globalThis,A,a,c)};let i=()=>{e.request.done=!0,e.processResponseEndOfBody!=null&&queueMicrotask(()=>e.processResponseEndOfBody(t)),e.request.initiatorType!=null&&e.controller.reportTimingSteps()};queueMicrotask(()=>i())};e.processResponse!=null&&queueMicrotask(()=>{e.processResponse(t),e.processResponse=null});let o=t.type==="error"?t:t.internalResponse??t;o.body==null?r():yY(o.body.stream,()=>{r()})}async function cb(e){let t=e.request,n=null,r=null,o=e.timingInfo;if(t.serviceWorkers,n===null){if(t.redirect==="follow"&&(t.serviceWorkers="none"),r=n=await vf(e),t.responseTainting==="cors"&&eY(t,n)==="failure")return oe("cors failure");zH(t,n)==="failure"&&(t.timingAllowFailed=!0)}return(t.responseTainting==="opaque"||n.type==="opaque")&&tY(t.origin,t.client,t.destination,r)==="blocked"?oe("blocked"):(rb.has(r.status)&&(t.redirect!=="manual"&&e.controller.connection.destroy(void 0,!1),t.redirect==="error"?n=oe("unexpected redirect"):t.redirect==="manual"?n=r:t.redirect==="follow"?n=await _Y(e,n):Gr(!1)),n.timingInfo=o,n)}function _Y(e,t){let n=e.request,r=t.internalResponse?t.internalResponse:t,o;try{if(o=XH(r,pt(n).hash),o==null)return t}catch(i){return Promise.resolve(oe(i))}if(!Ga(o))return Promise.resolve(oe("URL scheme must be a HTTP(S) scheme"));if(n.redirectCount===20)return Promise.resolve(oe("redirect count exceeded"));if(n.redirectCount+=1,n.mode==="cors"&&(o.username||o.password)&&!Pf(n,o))return Promise.resolve(oe('cross origin not allowed for request mode "cors"'));if(n.responseTainting==="cors"&&(o.username||o.password))return Promise.resolve(oe('URL cannot contain credentials for request mode "cors"'));if(r.status!==303&&n.body!=null&&n.body.source==null)return Promise.resolve(oe());if([301,302].includes(r.status)&&n.method==="POST"||r.status===303&&!MY.includes(n.method)){n.method="GET",n.body=null;for(let i of hY)n.headersList.delete(i)}Pf(pt(n),o)||(n.headersList.delete("authorization",!0),n.headersList.delete("proxy-authorization",!0),n.headersList.delete("cookie",!0),n.headersList.delete("host",!0)),n.body!=null&&(Gr(n.body.source!=null),n.body=Ha(n.body.source)[0]);let s=e.timingInfo;return s.redirectEndTime=s.postRedirectStartTime=ui(e.crossOriginIsolatedCapability),s.redirectStartTime===0&&(s.redirectStartTime=s.startTime),n.urlList.push(o),jH(n,r),ab(e,!0)}async function vf(e,t=!1,n=!1){let r=e.request,o=null,s=null,i=null,A=null,a=!1;r.window==="no-window"&&r.redirect==="error"?(o=e,s=r):(s=GH(r),o={...e},o.request=s);let c=r.credentials==="include"||r.credentials==="same-origin"&&r.responseTainting==="basic",d=s.body?s.body.length:null,l=null;if(s.body==null&&["POST","PUT"].includes(s.method)&&(l="0"),d!=null&&(l=Oa(`${d}`)),l!=null&&!s.headersList.contains("content-length",!0)&&s.headersList.append("content-length",l,!0),d!=null&&s.keepalive,qf.is.URL(s.referrer)&&s.headersList.append("referer",Oa(s.referrer.href),!0),KH(s),ZH(s),s.headersList.contains("user-agent",!0)||s.headersList.append("user-agent",xY,!0),s.cache==="default"&&(s.headersList.contains("if-modified-since",!0)||s.headersList.contains("if-none-match",!0)||s.headersList.contains("if-unmodified-since",!0)||s.headersList.contains("if-match",!0)||s.headersList.contains("if-range",!0))&&(s.cache="no-store"),s.cache==="no-cache"&&!s.preventNoCacheCacheControlHeaderModification&&!s.headersList.contains("cache-control",!0)&&s.headersList.append("cache-control","max-age=0",!0),(s.cache==="no-store"||s.cache==="reload")&&(s.headersList.contains("pragma",!0)||s.headersList.append("pragma","no-cache",!0),s.headersList.contains("cache-control",!0)||s.headersList.append("cache-control","no-cache",!0)),s.headersList.contains("range",!0)&&s.headersList.append("accept-encoding","identity",!0),s.headersList.contains("accept-encoding",!0)||(AY(pt(s))?s.headersList.append("accept-encoding","br, gzip, deflate",!0):s.headersList.append("accept-encoding","gzip, deflate",!0)),s.headersList.delete("host",!0),c&&!s.headersList.contains("authorization",!0)){let u=null;if(!(gY(s)&&(s.useURLCredentials===void 0||!$R(pt(s))))){if($R(pt(s))&&t){let{username:g,password:h}=pt(s);u=`Basic ${Buffer.from(`${g}:${h}`).toString("base64")}`}}u!==null&&s.headersList.append("Authorization",u,!1)}if(A==null&&(s.cache="no-store"),s.cache!=="no-store"&&s.cache,i==null){if(s.cache==="only-if-cached")return oe("only if cached");let u=await PY(o,c,n);!pY.has(s.method)&&u.status>=200&&u.status<=399,a&&u.status,i==null&&(i=u)}if(i.urlList=[...s.urlList],s.headersList.contains("range",!0)&&(i.rangeRequested=!0),i.requestIncludesCredentials=c,i.status===401&&s.responseTainting!=="cors"&&c&&(r.useURLCredentials!==void 0||fY(r.traversableForUserPrompts))){if(r.body!=null){if(r.body.source==null)return i;r.body=Ha(r.body.source)[0]}if(r.useURLCredentials===void 0||t)return er(e)?di(e):i;e.controller.connection.destroy(),i=await vf(e,!0)}if(i.status===407)return r.window==="no-window"?oe():er(e)?di(e):oe("proxy authentication required");if(i.status===421&&!n&&(r.body==null||r.body.source!=null)){if(er(e))return di(e);e.controller.connection.destroy(),i=await vf(e,t,!0)}return i}async function PY(e,t=!1,n=!1){Gr(!e.controller.connection||e.controller.connection.destroyed),e.controller.connection={abort:null,destroyed:!1,destroy(h,E=!0){this.destroyed||(this.destroyed=!0,E&&this.abort?.(h??new DOMException("The operation was aborted.","AbortError")))}};let r=e.request,o=null,s=e.timingInfo;null==null&&(r.cache="no-store");let A=n?"yes":"no";r.mode;let a=null;if(r.body==null&&e.processRequestEndOfBody)queueMicrotask(()=>e.processRequestEndOfBody());else if(r.body!=null){let h=async function*(C){er(e)||(yield C,e.processRequestBodyChunkLength?.(C.byteLength))},E=()=>{er(e)||e.processRequestEndOfBody&&e.processRequestEndOfBody()},B=C=>{er(e)||(C.name==="AbortError"?e.controller.abort():e.controller.terminate(C))};a=(async function*(){try{for await(let C of r.body.stream)yield*h(C);E()}catch(C){B(C)}})()}try{let{body:h,status:E,statusText:B,headersList:C,socket:y}=await g({body:a});if(y)o=Pa({status:E,statusText:B,headersList:C,socket:y});else{let Q=h[Symbol.asyncIterator]();e.controller.next=()=>Q.next(),o=Pa({status:E,statusText:B,headersList:C})}}catch(h){return h.name==="AbortError"?(e.controller.connection.destroy(),di(e,h)):oe(h)}let c=()=>e.controller.resume(),d=h=>{er(e)||e.controller.abort(h)},l=new ReadableStream({start(h){e.controller.controller=h},pull:c,cancel:d,type:"bytes"});o.body={stream:l,source:null,length:null},e.controller.resume||e.controller.on("terminated",u),e.controller.resume=async()=>{for(;;){let h,E;try{let{done:C,value:y}=await e.controller.next();if(jR(e))break;h=C?void 0:y}catch(C){e.controller.ended&&!s.encodedBodySize?h=void 0:(h=C,E=!0)}if(h===void 0){sY(e.controller.controller),FY(e,o);return}if(s.decodedBodySize+=h?.byteLength??0,E){e.controller.terminate(h);return}let B=new Uint8Array(h);if(B.byteLength&&e.controller.controller.enqueue(B),mY(l)){e.controller.terminate();return}if(e.controller.controller.desiredSize<=0)return}};function u(h){jR(e)?(o.aborted=!0,va(l)&&e.controller.controller.error(e.controller.serializedAbortReason)):va(l)&&e.controller.controller.error(new TypeError("terminated",{cause:rY(h)?h:void 0})),e.controller.connection.destroy()}return o;function g({body:h}){let E=pt(r),B=e.controller.dispatcher,C=E.pathname+E.search,y=E.search.length===0&&E.href[E.href.length-E.hash.length-1]==="?";return new Promise((Q,b)=>B.dispatch({path:y?`${C}?`:C,origin:E.origin,method:r.method,body:B.isMockActive?r.body&&(r.body.source||r.body.stream):h,headers:r.headersList.entries,maxRedirections:0,upgrade:r.mode==="websocket"?"websocket":void 0},{body:null,abort:null,onConnect(k){let{connection:x}=e.controller;s.finalConnectionTimingInfo=aY(void 0,s.postRedirectStartTime,e.crossOriginIsolatedCapability),x.destroyed?k(new DOMException("The operation was aborted.","AbortError")):(e.controller.on("terminated",k),this.abort=x.abort=k),s.finalNetworkRequestStartTime=ui(e.crossOriginIsolatedCapability)},onResponseStarted(){s.finalNetworkResponseStartTime=ui(e.crossOriginIsolatedCapability)},onHeaders(k,x,N,M){if(k<200)return!1;let U=new Uf;for(let le=0;le<x.length;le+=2){let xe=eb(x[le]),Re=x[le+1];if(Array.isArray(Re)&&!Buffer.isBuffer(x[le+1]))for(let ve of Re)U.append(xe,ve.toString("latin1"),!0);else U.append(xe,Re.toString("latin1"),!0)}let V=U.get("location",!0);this.body=new IY({read:N});let ee=V&&r.redirect==="follow"&&rb.has(k),te=[];if(r.method!=="HEAD"&&r.method!=="CONNECT"&&!ob.includes(k)&&!ee){let le=U.get("content-encoding",!0),xe=le?le.toLowerCase().split(","):[],Re=5;if(xe.length>Re)return b(new Error(`too many content-encodings in response: ${xe.length}, maximum allowed is ${Re}`)),!0;for(let ve=xe.length-1;ve>=0;--ve){let nt=xe[ve].trim();if(nt==="x-gzip"||nt==="gzip")te.push(_t.createGunzip({flush:_t.constants.Z_SYNC_FLUSH,finishFlush:_t.constants.Z_SYNC_FLUSH}));else if(nt==="deflate")te.push(uY({flush:_t.constants.Z_SYNC_FLUSH,finishFlush:_t.constants.Z_SYNC_FLUSH}));else if(nt==="br")te.push(_t.createBrotliDecompress({flush:_t.constants.BROTLI_OPERATION_FLUSH,finishFlush:_t.constants.BROTLI_OPERATION_FLUSH}));else if(nt==="zstd"&&NY)te.push(_t.createZstdDecompress({flush:_t.constants.ZSTD_e_continue,finishFlush:_t.constants.ZSTD_e_end}));else{te.length=0;break}}}let ue=this.onError.bind(this);return Q({status:k,statusText:M,headersList:U,body:te.length?BY(this.body,...te,le=>{le&&this.onError(le)}).on("error",ue):this.body.on("error",ue)}),!0},onData(k){if(e.controller.dump)return;let x=k;return s.encodedBodySize+=x.byteLength,this.body.push(x)},onComplete(){this.abort&&e.controller.off("terminated",this.abort),e.controller.ended=!0,this.body.push(null)},onError(k){this.abort&&e.controller.off("terminated",this.abort),this.body?.destroy(k),e.controller.terminate(k),b(k)},onRequestUpgrade(k,x,N,M){if(M.session!=null&&x!==200||M.session==null&&x!==101)return!1;let U=new Uf;for(let[V,ee]of Object.entries(N)){if(ee==null)continue;let te=V.toLowerCase();if(Array.isArray(ee))for(let ue of ee)U.append(te,String(ue),!0);else U.append(te,String(ee),!0)}return Q({status:x,statusText:tb[x],headersList:U,socket:M}),!0},onUpgrade(k,x,N){if(N.session!=null&&k!==200||N.session==null&&k!==101)return!1;let M=new Uf;for(let U=0;U<x.length;U+=2){let V=eb(x[U]),ee=x[U+1];if(Array.isArray(ee)&&!Buffer.isBuffer(x[U+1]))for(let te of ee)M.append(V,te.toString("latin1"),!0);else M.append(V,ee.toString("latin1"),!0)}return Q({status:k,statusText:tb[k],headersList:M,socket:N}),!0}}))}}db.exports={fetch:LY,Fetch:qa,fetching:Ab,finalizeAndReportTiming:sb}});var gb=m((w3,lb)=>{"use strict";var vY=require("node:assert"),{URLSerializer:ub}=It(),{isValidHeaderName:OY}=At();function qY(e,t,n=!1){let r=ub(e,n),o=ub(t,n);return r===o}function GY(e){vY(e!==null);let t=[];for(let n of e.split(","))n=n.trim(),OY(n)&&t.push(n);return t}lb.exports={urlEquals:qY,getFieldValues:GY}});var Eb=m((R3,hb)=>{"use strict";var Gf=require("node:assert"),{kConstruct:HY}=ne(),{urlEquals:YY,getFieldValues:Hf}=gb(),{kEnumerableProperty:Hr,isDisturbed:WY}=G(),{webidl:L}=De(),{cloneResponse:fb,fromInnerResponse:VY,getResponseState:JY}=ci(),{Request:gi,fromInnerRequest:zY,getRequestState:en}=Oo(),{fetching:KY}=li(),{urlIsHttpHttpsScheme:Ya,readAllBytes:XY}=At(),{createDeferredPromise:qo}=Rs(),Wa=class e{#e;constructor(){arguments[0]!==HY&&L.illegalConstructor(),L.util.markAsUncloneable(this),this.#e=arguments[1]}async match(t,n={}){L.brandCheck(this,e);let r="Cache.match";L.argumentLengthCheck(arguments,1,r),t=L.converters.RequestInfo(t),n=L.converters.CacheQueryOptions(n,r,"options");let o=this.#s(t,n,1);if(o.length!==0)return o[0]}async matchAll(t=void 0,n={}){L.brandCheck(this,e);let r="Cache.matchAll";return t!==void 0&&(t=L.converters.RequestInfo(t)),n=L.converters.CacheQueryOptions(n,r,"options"),this.#s(t,n)}async add(t){L.brandCheck(this,e),L.argumentLengthCheck(arguments,1,"Cache.add"),t=L.converters.RequestInfo(t);let r=[t];return await this.addAll(r)}async addAll(t){L.brandCheck(this,e);let n="Cache.addAll";L.argumentLengthCheck(arguments,1,n);let r=[],o=[];for(let u of t){if(u===void 0)throw L.errors.conversionFailed({prefix:n,argument:"Argument 1",types:["undefined is not allowed"]});if(u=L.converters.RequestInfo(u),typeof u=="string")continue;let g=en(u);if(!Ya(g.url)||g.method!=="GET")throw L.errors.exception({header:n,message:"Expected http/s scheme when method is not GET."})}let s=[];for(let u of t){let g=en(new gi(u));if(!Ya(g.url))throw L.errors.exception({header:n,message:"Expected http/s scheme."});g.initiator="fetch",g.destination="subresource",o.push(g);let h=qo();s.push(KY({request:g,processResponse(E){if(E.type==="error"||E.status===206||E.status<200||E.status>299)h.reject(L.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}));else if(E.headersList.contains("vary")){let B=Hf(E.headersList.get("vary"));for(let C of B)if(C==="*"){h.reject(L.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(let y of s)y.abort();return}}},processResponseEndOfBody(E){if(E.aborted){h.reject(new DOMException("aborted","AbortError"));return}h.resolve(E)}})),r.push(h.promise)}let A=await Promise.all(r),a=[],c=0;for(let u of A){let g={type:"put",request:o[c],response:u};a.push(g),c++}let d=qo(),l=null;try{this.#t(a)}catch(u){l=u}return queueMicrotask(()=>{l===null?d.resolve(void 0):d.reject(l)}),d.promise}async put(t,n){L.brandCheck(this,e);let r="Cache.put";L.argumentLengthCheck(arguments,2,r),t=L.converters.RequestInfo(t),n=L.converters.Response(n,r,"response");let o=null;if(L.is.Request(t)?o=en(t):o=en(new gi(t)),!Ya(o.url)||o.method!=="GET")throw L.errors.exception({header:r,message:"Expected an http/s scheme when method is not GET"});let s=JY(n);if(s.status===206)throw L.errors.exception({header:r,message:"Got 206 status"});if(s.headersList.contains("vary")){let g=Hf(s.headersList.get("vary"));for(let h of g)if(h==="*")throw L.errors.exception({header:r,message:"Got * vary field value"})}if(s.body&&(WY(s.body.stream)||s.body.stream.locked))throw L.errors.exception({header:r,message:"Response body is locked or disturbed"});let i=fb(s),A=qo();if(s.body!=null){let h=s.body.stream.getReader();XY(h,A.resolve,A.reject)}else A.resolve(void 0);let a=[],c={type:"put",request:o,response:i};a.push(c);let d=await A.promise;i.body!=null&&(i.body.source=d);let l=qo(),u=null;try{this.#t(a)}catch(g){u=g}return queueMicrotask(()=>{u===null?l.resolve():l.reject(u)}),l.promise}async delete(t,n={}){L.brandCheck(this,e);let r="Cache.delete";L.argumentLengthCheck(arguments,1,r),t=L.converters.RequestInfo(t),n=L.converters.CacheQueryOptions(n,r,"options");let o=null;if(L.is.Request(t)){if(o=en(t),o.method!=="GET"&&!n.ignoreMethod)return!1}else Gf(typeof t=="string"),o=en(new gi(t));let s=[],i={type:"delete",request:o,options:n};s.push(i);let A=qo(),a=null,c;try{c=this.#t(s)}catch(d){a=d}return queueMicrotask(()=>{a===null?A.resolve(!!c?.length):A.reject(a)}),A.promise}async keys(t=void 0,n={}){L.brandCheck(this,e);let r="Cache.keys";t!==void 0&&(t=L.converters.RequestInfo(t)),n=L.converters.CacheQueryOptions(n,r,"options");let o=null;if(t!==void 0)if(L.is.Request(t)){if(o=en(t),o.method!=="GET"&&!n.ignoreMethod)return[]}else typeof t=="string"&&(o=en(new gi(t)));let s=qo(),i=[];if(t===void 0)for(let A of this.#e)i.push(A[0]);else{let A=this.#n(o,n);for(let a of A)i.push(a[0])}return queueMicrotask(()=>{let A=[];for(let a of i){let c=zY(a,void 0,new AbortController().signal,"immutable");A.push(c)}s.resolve(Object.freeze(A))}),s.promise}#t(t){let n=this.#e,r=[...n],o=[],s=[];try{for(let i of t){if(i.type!=="delete"&&i.type!=="put")throw L.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'});if(i.type==="delete"&&i.response!=null)throw L.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"});if(this.#n(i.request,i.options,o).length)throw new DOMException("???","InvalidStateError");let A;if(i.type==="delete"){if(A=this.#n(i.request,i.options),A.length===0)return[];for(let a of A){let c=n.indexOf(a);Gf(c!==-1),n.splice(c,1)}}else if(i.type==="put"){if(i.response==null)throw L.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"});let a=i.request;if(!Ya(a.url))throw L.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"});if(a.method!=="GET")throw L.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"});if(i.options!=null)throw L.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"});A=this.#n(i.request);for(let c of A){let d=n.indexOf(c);Gf(d!==-1),n.splice(d,1)}n.push([i.request,i.response]),o.push([i.request,i.response])}s.push([i.request,i.response])}return s}catch(i){throw this.#e.length=0,this.#e=r,i}}#n(t,n,r){let o=[],s=r??this.#e;for(let i of s){let[A,a]=i;this.#r(t,A,a,n)&&o.push(i)}return o}#r(t,n,r=null,o){let s=new URL(t.url),i=new URL(n.url);if(o?.ignoreSearch&&(i.search="",s.search=""),!YY(s,i,!0))return!1;if(r==null||o?.ignoreVary||!r.headersList.contains("vary"))return!0;let A=Hf(r.headersList.get("vary"));for(let a of A){if(a==="*")return!1;let c=n.headersList.get(a),d=t.headersList.get(a);if(c!==d)return!1}return!0}#s(t,n,r=1/0){let o=null;if(t!==void 0)if(L.is.Request(t)){if(o=en(t),o.method!=="GET"&&!n.ignoreMethod)return[]}else typeof t=="string"&&(o=en(new gi(t)));let s=[];if(t===void 0)for(let A of this.#e)s.push(A[1]);else{let A=this.#n(o,n);for(let a of A)s.push(a[1])}let i=[];for(let A of s){let a=VY(fb(A),"immutable");if(i.push(a),i.length>=r)break}return Object.freeze(i)}};Object.defineProperties(Wa.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:!0},match:Hr,matchAll:Hr,add:Hr,addAll:Hr,put:Hr,delete:Hr,keys:Hr});var pb=[{key:"ignoreSearch",converter:L.converters.boolean,defaultValue:()=>!1},{key:"ignoreMethod",converter:L.converters.boolean,defaultValue:()=>!1},{key:"ignoreVary",converter:L.converters.boolean,defaultValue:()=>!1}];L.converters.CacheQueryOptions=L.dictionaryConverter(pb);L.converters.MultiCacheQueryOptions=L.dictionaryConverter([...pb,{key:"cacheName",converter:L.converters.DOMString}]);L.converters.Response=L.interfaceConverter(L.is.Response,"Response");L.converters["sequence<RequestInfo>"]=L.sequenceConverter(L.converters.RequestInfo);hb.exports={Cache:Wa}});var Ib=m((b3,Cb)=>{"use strict";var{Cache:Va}=Eb(),{webidl:Fe}=De(),{kEnumerableProperty:fi}=G(),{kConstruct:pi}=ne(),Ja=class e{#e=new Map;constructor(){arguments[0]!==pi&&Fe.illegalConstructor(),Fe.util.markAsUncloneable(this)}async match(t,n={}){if(Fe.brandCheck(this,e),Fe.argumentLengthCheck(arguments,1,"CacheStorage.match"),t=Fe.converters.RequestInfo(t),n=Fe.converters.MultiCacheQueryOptions(n),n.cacheName!=null){if(this.#e.has(n.cacheName)){let r=this.#e.get(n.cacheName);return await new Va(pi,r).match(t,n)}}else for(let r of this.#e.values()){let s=await new Va(pi,r).match(t,n);if(s!==void 0)return s}}async has(t){Fe.brandCheck(this,e);let n="CacheStorage.has";return Fe.argumentLengthCheck(arguments,1,n),t=Fe.converters.DOMString(t,n,"cacheName"),this.#e.has(t)}async open(t){Fe.brandCheck(this,e);let n="CacheStorage.open";if(Fe.argumentLengthCheck(arguments,1,n),t=Fe.converters.DOMString(t,n,"cacheName"),this.#e.has(t)){let o=this.#e.get(t);return new Va(pi,o)}let r=[];return this.#e.set(t,r),new Va(pi,r)}async delete(t){Fe.brandCheck(this,e);let n="CacheStorage.delete";return Fe.argumentLengthCheck(arguments,1,n),t=Fe.converters.DOMString(t,n,"cacheName"),this.#e.delete(t)}async keys(){return Fe.brandCheck(this,e),[...this.#e.keys()]}};Object.defineProperties(Ja.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:!0},match:fi,has:fi,open:fi,delete:fi,keys:fi});Cb.exports={CacheStorage:Ja}});var yb=m((S3,Bb)=>{"use strict";Bb.exports={maxAttributeValueSize:1024,maxNameValuePairSize:4096}});var Vf=m((D3,Rb)=>{"use strict";function jY(e){for(let t=0;t<e.length;++t){let n=e.charCodeAt(t);if(n>=0&&n<=8||n>=10&&n<=31||n===127)return!0}return!1}function Yf(e){for(let t=0;t<e.length;++t){let n=e.charCodeAt(t);if(n<33||n>126||n===34||n===40||n===41||n===60||n===62||n===64||n===44||n===59||n===58||n===92||n===47||n===91||n===93||n===63||n===61||n===123||n===125)throw new Error("Invalid cookie name")}}function Wf(e){let t=e.length,n=0;if(e[0]==='"'){if(t===1||e[t-1]!=='"')throw new Error("Invalid cookie value");--t,++n}for(;n<t;){let r=e.charCodeAt(n++);if(r<33||r>126||r===34||r===44||r===59||r===92)throw new Error("Invalid cookie value")}}function Qb(e){for(let t=0;t<e.length;++t){let n=e.charCodeAt(t);if(n<32||n>126||n===59)throw new Error("Invalid cookie path")}}function mb(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122}function $Y(e){if(e===" ")return;if(e.length>255)throw new Error("Invalid cookie domain");let t=0;for(let n=0;n<e.length;++n){let r=e.charCodeAt(n);if(r===46){if(t===0)throw new Error("Invalid cookie domain");if(e.charCodeAt(n-1)===45)throw new Error("Invalid cookie domain");t=0;continue}if(t===0&&!mb(r))throw new Error("Invalid cookie domain");if(!mb(r)&&r!==45)throw new Error("Invalid cookie domain");if(++t>63)throw new Error("Invalid cookie domain")}if(t===0||e.charCodeAt(e.length-1)===45)throw new Error("Invalid cookie domain")}var ZY=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],e2=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],za=Array(61).fill(0).map((e,t)=>t.toString().padStart(2,"0"));function wb(e){return typeof e=="number"&&(e=new Date(e)),`${ZY[e.getUTCDay()]}, ${za[e.getUTCDate()]} ${e2[e.getUTCMonth()]} ${e.getUTCFullYear()} ${za[e.getUTCHours()]}:${za[e.getUTCMinutes()]}:${za[e.getUTCSeconds()]} GMT`}function t2(e){if(e<0)throw new Error("Invalid cookie max-age")}function n2(e){if(e.name.length===0)return null;Yf(e.name),Wf(e.value);let t=[`${e.name}=${e.value}`];e.name.startsWith("__Secure-")&&(e.secure=!0),e.name.startsWith("__Host-")&&(e.secure=!0,e.domain=null,e.path="/"),e.secure&&t.push("Secure"),e.httpOnly&&t.push("HttpOnly"),typeof e.maxAge=="number"&&(t2(e.maxAge),t.push(`Max-Age=${e.maxAge}`)),e.domain&&($Y(e.domain),t.push(`Domain=${e.domain}`)),e.path&&(Qb(e.path),t.push(`Path=${e.path}`)),e.expires&&e.expires.toString()!=="Invalid Date"&&t.push(`Expires=${wb(e.expires)}`),e.sameSite&&t.push(`SameSite=${e.sameSite}`);for(let n of e.unparsed){if(!n.includes("="))throw new Error("Invalid unparsed");let[r,...o]=n.split("="),s=r.trim(),i=o.join("=");Yf(s),Wf(i),t.push(`${s}=${i}`)}return t.join("; ")}Rb.exports={isCTLExcludingHtab:jY,validateCookieName:Yf,validateCookiePath:Qb,validateCookieValue:Wf,toIMFDate:wb,stringify:n2}});var Sb=m((T3,bb)=>{"use strict";var{collectASequenceOfCodePointsFast:Ka}=ln(),{maxNameValuePairSize:r2,maxAttributeValueSize:o2}=yb(),{isCTLExcludingHtab:s2}=Vf(),i2=require("node:assert");function A2(e){if(s2(e))return null;let t="",n="",r="",o="";if(e.includes(";")){let s={position:0};t=Ka(";",e,s),n=e.slice(s.position)}else t=e;if(!t.includes("="))o=t;else{let s={position:0};r=Ka("=",t,s),o=t.slice(s.position+1)}return r=r.trim(),o=o.trim(),r.length+o.length>r2?null:{name:r,value:o,...Go(n)}}function Go(e,t={}){if(e.length===0)return t;i2(e[0]===";"),e=e.slice(1);let n="";e.includes(";")?(n=Ka(";",e,{position:0}),e=e.slice(n.length)):(n=e,e="");let r="",o="";if(n.includes("=")){let i={position:0};r=Ka("=",n,i),o=n.slice(i.position+1)}else r=n;if(r=r.trim(),o=o.trim(),o.length>o2)return Go(e,t);let s=r.toLowerCase();if(s==="expires"){let i=new Date(o);t.expires=i}else if(s==="max-age"){let i=o.charCodeAt(0);if((i<48||i>57)&&o[0]!=="-"||!/^\d+$/.test(o))return Go(e,t);let A=Number(o);t.maxAge=A}else if(s==="domain"){let i=o;i[0]==="."&&(i=i.slice(1)),i=i.toLowerCase(),t.domain=i}else if(s==="path"){let i="";o.length===0||o[0]!=="/"?i="/":i=o,t.path=i}else if(s==="secure")t.secure=!0;else if(s==="httponly")t.httpOnly=!0;else if(s==="samesite"){let i=o.toLowerCase();i==="none"?t.sameSite="None":i==="strict"?t.sameSite="Strict":i==="lax"&&(t.sameSite="Lax")}else t.unparsed??=[],t.unparsed.push(`${r}=${o}`);return Go(e,t)}bb.exports={parseSetCookie:A2,parseUnparsedAttributes:Go}});var Nb=m((k3,kb)=>{"use strict";var{parseSetCookie:Db}=Sb(),{stringify:a2}=Vf(),{webidl:K}=De(),{Headers:c2}=vr(),Xa=K.brandCheckMultiple([c2,globalThis.Headers].filter(Boolean));function d2(e){K.argumentLengthCheck(arguments,1,"getCookies"),Xa(e);let t=e.get("cookie"),n={};if(!t)return n;for(let r of t.split(";")){let[o,...s]=r.split("=");n[o.trim()]=s.join("=")}return n}function u2(e,t,n){Xa(e);let r="deleteCookie";K.argumentLengthCheck(arguments,2,r),t=K.converters.DOMString(t,r,"name"),n=K.converters.DeleteCookieAttributes(n),Tb(e,{name:t,value:"",expires:new Date(0),...n})}function l2(e){K.argumentLengthCheck(arguments,1,"getSetCookies"),Xa(e);let t=e.getSetCookie();return t?t.map(n=>Db(n)):[]}function g2(e){return e=K.converters.DOMString(e),Db(e)}function Tb(e,t){K.argumentLengthCheck(arguments,2,"setCookie"),Xa(e),t=K.converters.Cookie(t);let n=a2(t);n&&e.append("set-cookie",n,!0)}K.converters.DeleteCookieAttributes=K.dictionaryConverter([{converter:K.nullableConverter(K.converters.DOMString),key:"path",defaultValue:()=>null},{converter:K.nullableConverter(K.converters.DOMString),key:"domain",defaultValue:()=>null}]);K.converters.Cookie=K.dictionaryConverter([{converter:K.converters.DOMString,key:"name"},{converter:K.converters.DOMString,key:"value"},{converter:K.nullableConverter(e=>typeof e=="number"?K.converters["unsigned long long"](e):new Date(e)),key:"expires",defaultValue:()=>null},{converter:K.nullableConverter(K.converters["long long"]),key:"maxAge",defaultValue:()=>null},{converter:K.nullableConverter(K.converters.DOMString),key:"domain",defaultValue:()=>null},{converter:K.nullableConverter(K.converters.DOMString),key:"path",defaultValue:()=>null},{converter:K.nullableConverter(K.converters.boolean),key:"secure",defaultValue:()=>null},{converter:K.nullableConverter(K.converters.boolean),key:"httpOnly",defaultValue:()=>null},{converter:K.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:K.sequenceConverter(K.converters.DOMString),key:"unparsed",defaultValue:()=>[]}]);kb.exports={getCookies:d2,deleteCookie:u2,getSetCookies:l2,setCookie:Tb,parseCookie:g2}});var Za=m((N3,xb)=>{"use strict";var{webidl:F}=De(),{kEnumerableProperty:$e}=G(),{kConstruct:Mb}=ne(),Ho=class e extends Event{#e;constructor(t,n={}){if(t===Mb){super(arguments[1],arguments[2]),F.util.markAsUncloneable(this);return}let r="MessageEvent constructor";F.argumentLengthCheck(arguments,1,r),t=F.converters.DOMString(t,r,"type"),n=F.converters.MessageEventInit(n,r,"eventInitDict"),super(t,n),this.#e=n,F.util.markAsUncloneable(this)}get data(){return F.brandCheck(this,e),this.#e.data}get origin(){return F.brandCheck(this,e),this.#e.origin}get lastEventId(){return F.brandCheck(this,e),this.#e.lastEventId}get source(){return F.brandCheck(this,e),this.#e.source}get ports(){return F.brandCheck(this,e),Object.isFrozen(this.#e.ports)||Object.freeze(this.#e.ports),this.#e.ports}initMessageEvent(t,n=!1,r=!1,o=null,s="",i="",A=null,a=[]){return F.brandCheck(this,e),F.argumentLengthCheck(arguments,1,"MessageEvent.initMessageEvent"),new e(t,{bubbles:n,cancelable:r,data:o,origin:s,lastEventId:i,source:A,ports:a})}static createFastMessageEvent(t,n){let r=new e(Mb,t,n);return r.#e=n,r.#e.data??=null,r.#e.origin??="",r.#e.lastEventId??="",r.#e.source??=null,r.#e.ports??=[],r}},{createFastMessageEvent:f2}=Ho;delete Ho.createFastMessageEvent;var ja=class e extends Event{#e;constructor(t,n={}){let r="CloseEvent constructor";F.argumentLengthCheck(arguments,1,r),t=F.converters.DOMString(t,r,"type"),n=F.converters.CloseEventInit(n),super(t,n),this.#e=n,F.util.markAsUncloneable(this)}get wasClean(){return F.brandCheck(this,e),this.#e.wasClean}get code(){return F.brandCheck(this,e),this.#e.code}get reason(){return F.brandCheck(this,e),this.#e.reason}},$a=class e extends Event{#e;constructor(t,n){let r="ErrorEvent constructor";F.argumentLengthCheck(arguments,1,r),super(t,n),F.util.markAsUncloneable(this),t=F.converters.DOMString(t,r,"type"),n=F.converters.ErrorEventInit(n??{}),this.#e=n}get message(){return F.brandCheck(this,e),this.#e.message}get filename(){return F.brandCheck(this,e),this.#e.filename}get lineno(){return F.brandCheck(this,e),this.#e.lineno}get colno(){return F.brandCheck(this,e),this.#e.colno}get error(){return F.brandCheck(this,e),this.#e.error}};Object.defineProperties(Ho.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:!0},data:$e,origin:$e,lastEventId:$e,source:$e,ports:$e,initMessageEvent:$e});Object.defineProperties(ja.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:!0},reason:$e,code:$e,wasClean:$e});Object.defineProperties($a.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:!0},message:$e,filename:$e,lineno:$e,colno:$e,error:$e});F.converters.MessagePort=F.interfaceConverter(F.is.MessagePort,"MessagePort");F.converters["sequence<MessagePort>"]=F.sequenceConverter(F.converters.MessagePort);var Jf=[{key:"bubbles",converter:F.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:F.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:F.converters.boolean,defaultValue:()=>!1}];F.converters.MessageEventInit=F.dictionaryConverter([...Jf,{key:"data",converter:F.converters.any,defaultValue:()=>null},{key:"origin",converter:F.converters.USVString,defaultValue:()=>""},{key:"lastEventId",converter:F.converters.DOMString,defaultValue:()=>""},{key:"source",converter:F.nullableConverter(F.converters.MessagePort),defaultValue:()=>null},{key:"ports",converter:F.converters["sequence<MessagePort>"],defaultValue:()=>[]}]);F.converters.CloseEventInit=F.dictionaryConverter([...Jf,{key:"wasClean",converter:F.converters.boolean,defaultValue:()=>!1},{key:"code",converter:F.converters["unsigned short"],defaultValue:()=>0},{key:"reason",converter:F.converters.USVString,defaultValue:()=>""}]);F.converters.ErrorEventInit=F.dictionaryConverter([...Jf,{key:"message",converter:F.converters.DOMString,defaultValue:()=>""},{key:"filename",converter:F.converters.USVString,defaultValue:()=>""},{key:"lineno",converter:F.converters["unsigned long"],defaultValue:()=>0},{key:"colno",converter:F.converters["unsigned long"],defaultValue:()=>0},{key:"error",converter:F.converters.any}]);xb.exports={MessageEvent:Ho,CloseEvent:ja,ErrorEvent:$a,createFastMessageEvent:f2}});var tr=m((M3,Ub)=>{"use strict";var p2="258EAFA5-E914-47DA-95CA-C5AB0DC85B11",h2={enumerable:!0,writable:!1,configurable:!1},E2={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},C2={SENT:1,RECEIVED:2},I2={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},B2=65535,y2={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},m2=Buffer.allocUnsafe(0),Q2={text:1,typedArray:2,arrayBuffer:3,blob:4};Ub.exports={uid:p2,sentCloseFrameState:C2,staticPropertyDescriptors:h2,states:E2,opcodes:I2,maxUnsigned16Bit:B2,parserStates:y2,emptyBuffer:m2,sendHints:Q2}});var Yr=m((x3,vb)=>{"use strict";var{states:ec,opcodes:Yo}=tr(),{isUtf8:w2}=require("node:buffer"),{removeHTTPWhitespace:Lb}=It(),{collectASequenceOfCodePointsFast:R2}=ln();function b2(e){return e===ec.CONNECTING}function S2(e){return e===ec.OPEN}function D2(e){return e===ec.CLOSING}function T2(e){return e===ec.CLOSED}function k2(e,t,n=(o,s)=>new Event(o,s),r={}){let o=n(e,r);t.dispatchEvent(o)}function N2(e,t,n){e.onMessage(t,n)}function M2(e){return e.byteLength===e.buffer.byteLength?e.buffer:new Uint8Array(e).buffer}function x2(e){if(e.length===0)return!1;for(let t=0;t<e.length;++t){let n=e.charCodeAt(t);if(n<33||n>126||n===34||n===40||n===41||n===44||n===47||n===58||n===59||n===60||n===61||n===62||n===63||n===64||n===91||n===92||n===93||n===123||n===125)return!1}return!0}function U2(e){return e>=1e3&&e<1015?e!==1004&&e!==1005&&e!==1006:e>=3e3&&e<=4999}function Fb(e){return e===Yo.CLOSE||e===Yo.PING||e===Yo.PONG}function _b(e){return e===Yo.CONTINUATION}function Pb(e){return e===Yo.TEXT||e===Yo.BINARY}function L2(e){return Pb(e)||_b(e)||Fb(e)}function F2(e){let t={position:0},n=new Map;for(;t.position<e.length;){let r=R2(";",e,t),[o,s=""]=r.split("=",2);n.set(Lb(o,!0,!1),Lb(s,!1,!0)),t.position++}return n}function _2(e){if(e.length===0)return!1;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(r<48||r>57)return!1}let t=Number.parseInt(e,10);return t>=8&&t<=15}function P2(e,t){let n;try{n=new URL(e,t)}catch(r){throw new DOMException(r,"SyntaxError")}if(n.protocol==="http:"?n.protocol="ws:":n.protocol==="https:"&&(n.protocol="wss:"),n.protocol!=="ws:"&&n.protocol!=="wss:")throw new DOMException("expected a ws: or wss: url","SyntaxError");if(n.hash.length||n.href.endsWith("#"))throw new DOMException("hash","SyntaxError");return n}function v2(e,t){if(e!==null&&e!==1e3&&(e<3e3||e>4999))throw new DOMException("invalid code","InvalidAccessError");if(t!==null){let n=Buffer.byteLength(t);if(n>123)throw new DOMException(`Reason must be less than 123 bytes; received ${n}`,"SyntaxError")}}var O2=(()=>{if(typeof process.versions.icu=="string"){let e=new TextDecoder("utf-8",{fatal:!0});return e.decode.bind(e)}return function(e){if(w2(e))return e.toString("utf-8");throw new TypeError("Invalid utf-8 received.")}})();vb.exports={isConnecting:b2,isEstablished:S2,isClosing:D2,isClosed:T2,fireEvent:k2,isValidSubprotocol:x2,isValidStatusCode:U2,websocketMessageReceived:N2,utf8Decode:O2,isControlFrame:Fb,isContinuationFrame:_b,isTextBinaryFrame:Pb,isValidOpcode:L2,parseExtensions:F2,isValidClientWindowBits:_2,toArrayBuffer:M2,getURLRecord:P2,validateCloseCodeAndReason:v2}});var Vo=m((U3,qb)=>{"use strict";var{runtimeFeatures:q2}=gn(),{maxUnsigned16Bit:Ob,opcodes:G2}=tr(),tc=8*1024,hi=null,Wo=tc,H2=q2.has("crypto")?require("node:crypto").randomFillSync:function(t,n,r){for(let o=0;o<t.length;++o)t[o]=Math.random()*255|0;return t};function zf(){return Wo===tc&&(Wo=0,H2(hi??=Buffer.allocUnsafeSlow(tc),0,tc)),[hi[Wo++],hi[Wo++],hi[Wo++],hi[Wo++]]}var Kf=class{constructor(t){this.frameData=t}createFrame(t){let n=this.frameData,r=zf(),o=n?.byteLength??0,s=o,i=6;o>Ob?(i+=8,s=127):o>125&&(i+=2,s=126);let A=Buffer.allocUnsafe(o+i);A[0]=A[1]=0,A[0]|=128,A[0]=(A[0]&240)+t;A[i-4]=r[0],A[i-3]=r[1],A[i-2]=r[2],A[i-1]=r[3],A[1]=s,s===126?A.writeUInt16BE(o,2):s===127&&(A[2]=A[3]=0,A.writeUIntBE(o,4,6)),A[1]|=128;for(let a=0;a<o;++a)A[i+a]=n[a]^r[a&3];return A}static createFastTextFrame(t){let n=zf(),r=t.length;for(let A=0;A<r;++A)t[A]^=n[A&3];let o=r,s=6;r>Ob?(s+=8,o=127):r>125&&(s+=2,o=126);let i=Buffer.allocUnsafeSlow(s);return i[0]=128|G2.TEXT,i[1]=o|128,i[s-4]=n[0],i[s-3]=n[1],i[s-2]=n[2],i[s-1]=n[3],o===126?i.writeUInt16BE(r,2):o===127&&(i[2]=i[3]=0,i.writeUIntBE(r,4,6)),[i,t]}};qb.exports={WebsocketFrameSend:Kf,generateMask:zf}});var nc=m((L3,Jb)=>{"use strict";var{uid:Y2,states:Xf,sentCloseFrameState:jf,emptyBuffer:Gb,opcodes:W2}=tr(),{parseExtensions:V2,isClosed:J2,isClosing:z2,isEstablished:Wb,isConnecting:K2,validateCloseCodeAndReason:X2}=Yr(),{makeRequest:j2}=Oo(),{fetching:$2}=li(),{Headers:Z2,getHeadersList:e1}=vr(),{getDecodeSplit:t1}=At(),{WebsocketFrameSend:n1}=Vo(),r1=require("node:assert"),{runtimeFeatures:o1}=gn(),Hb=o1.has("crypto")?require("node:crypto"):null,Yb=!1;function s1(e,t,n,r,o){let s=e;s.protocol=e.protocol==="ws:"?"http:":"https:";let i=j2({urlList:[s],client:n,serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error",useURLCredentials:!0});if(o.headers){let d=e1(new Z2(o.headers));i.headersList=d}let A=Hb.randomBytes(16).toString("base64");i.headersList.append("sec-websocket-key",A,!0),i.headersList.append("sec-websocket-version","13",!0);for(let d of t)i.headersList.append("sec-websocket-protocol",d,!0);return i.headersList.append("sec-websocket-extensions","permessage-deflate; client_max_window_bits",!0),$2({request:i,useParallelQueue:!0,dispatcher:o.dispatcher,processResponse(d){if(d.type==="error"||d.status!==101){if(d.socket?.session==null){tn(r,1002,"Received network error or non-101 status code.",d.error);return}if(d.status!==200){tn(r,1002,"Received network error or non-200 status code.",d.error);return}}if(Yb===!1&&d.socket?.session!=null&&(process.emitWarning("WebSocket over HTTP2 is experimental, and subject to change.","ExperimentalWarning"),Yb=!0),t.length!==0&&!d.headersList.get("Sec-WebSocket-Protocol")){tn(r,1002,"Server did not respond with sent protocols.");return}if(d.socket.session==null&&d.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){tn(r,1002,'Server did not set Upgrade header to "websocket".');return}if(d.socket.session==null&&d.headersList.get("Connection")?.toLowerCase()!=="upgrade"){tn(r,1002,'Server did not set Connection header to "upgrade".');return}let l=d.headersList.get("Sec-WebSocket-Accept"),u=Hb.hash("sha1",A+Y2,"base64");if(l!==u){tn(r,1002,"Incorrect hash received in Sec-WebSocket-Accept header.");return}let g=d.headersList.get("Sec-WebSocket-Extensions"),h;if(g!==null&&(h=V2(g),!h.has("permessage-deflate"))){tn(r,1002,"Sec-WebSocket-Extensions header does not match.");return}let E=d.headersList.get("Sec-WebSocket-Protocol");if(E!==null&&!t1("sec-websocket-protocol",i.headersList).includes(E)){tn(r,1002,"Protocol was not set in the opening handshake.");return}d.socket.on("data",r.onSocketData),d.socket.on("close",r.onSocketClose),d.socket.on("error",r.onSocketError),r.wasEverConnected=!0,r.onConnectionEstablished(d,h)}})}function Vb(e,t,n,r=!1){if(t??=null,n??="",r&&X2(t,n),!(J2(e.readyState)||z2(e.readyState)))if(!Wb(e.readyState))tn(e),e.readyState=Xf.CLOSING;else if(!e.closeState.has(jf.SENT)&&!e.closeState.has(jf.RECEIVED)){let o=new n1;n.length!==0&&t===null&&(t=1e3),r1(t===null||Number.isInteger(t)),t===null&&n.length===0?o.frameData=Gb:t!==null&&n===null?(o.frameData=Buffer.allocUnsafe(2),o.frameData.writeUInt16BE(t,0)):t!==null&&n!==null?(o.frameData=Buffer.allocUnsafe(2+Buffer.byteLength(n)),o.frameData.writeUInt16BE(t,0),o.frameData.write(n,2,"utf-8")):o.frameData=Gb,e.socket.write(o.createFrame(W2.CLOSE)),e.closeState.add(jf.SENT),e.readyState=Xf.CLOSING}else e.readyState=Xf.CLOSING}function tn(e,t,n,r){Wb(e.readyState)&&Vb(e,t,n,!1),e.controller.abort(),K2(e.readyState)?e.onSocketClose():e.socket?.destroyed===!1&&e.socket.destroy()}Jb.exports={establishWebSocketConnection:s1,failWebsocketConnection:tn,closeWebSocketConnection:Vb}});var Kb=m((F3,zb)=>{"use strict";var{createInflateRaw:i1,Z_DEFAULT_WINDOWBITS:A1}=require("node:zlib"),{isValidClientWindowBits:a1}=Yr(),{MessageSizeExceededError:c1}=q(),d1=Buffer.from([0,0,255,255]),rc=Symbol("kBuffer"),Ei=Symbol("kLength"),$f=class{#e;#t={};#n=0;constructor(t,n){this.#t.serverNoContextTakeover=t.has("server_no_context_takeover"),this.#t.serverMaxWindowBits=t.get("server_max_window_bits"),this.#n=n.maxPayloadSize}decompress(t,n,r){if(!this.#e){let o=A1;if(this.#t.serverMaxWindowBits){if(!a1(this.#t.serverMaxWindowBits)){r(new Error("Invalid server_max_window_bits"));return}o=Number.parseInt(this.#t.serverMaxWindowBits)}try{this.#e=i1({windowBits:o})}catch(s){r(s);return}this.#e[rc]=[],this.#e[Ei]=0,this.#e.on("data",s=>{if(this.#e[Ei]+=s.length,this.#n>0&&this.#e[Ei]>this.#n){r(new c1),this.#e.removeAllListeners(),this.#e=null;return}this.#e[rc].push(s)}),this.#e.on("error",s=>{this.#e=null,r(s)})}this.#e.write(t),n&&this.#e.write(d1),this.#e.flush(()=>{if(!this.#e)return;let o=Buffer.concat(this.#e[rc],this.#e[Ei]);this.#e[rc].length=0,this.#e[Ei]=0,r(null,o)})}};zb.exports={PerMessageDeflate:$f}});var np=m((_3,eS)=>{"use strict";var{Writable:u1}=require("node:stream"),l1=require("node:assert"),{parserStates:Ze,opcodes:Jo,states:g1,emptyBuffer:Xb,sentCloseFrameState:Ci}=tr(),{isValidStatusCode:f1,isValidOpcode:p1,websocketMessageReceived:jb,utf8Decode:h1,isControlFrame:Zf,isTextBinaryFrame:ep,isContinuationFrame:E1}=Yr(),{failWebsocketConnection:_e}=nc(),{WebsocketFrameSend:$b}=Vo(),{PerMessageDeflate:C1}=Kb(),{MessageSizeExceededError:Zb}=q(),tp=class extends u1{#e=[];#t=0;#n=0;#r=!1;#s=Ze.INFO;#o={};#a=[];#i;#A;#c;#u;constructor(t,n,r={}){super(),this.#A=t,this.#i=n??new Map,this.#c=r.maxFragments??0,this.#u=r.maxPayloadSize??0,this.#i.has("permessage-deflate")&&this.#i.set("permessage-deflate",new C1(n,r))}_write(t,n,r){this.#e.push(t),this.#n+=t.length,this.#r=!0,this.run(r)}#d(){return this.#u>0&&!Zf(this.#o.opcode)&&this.#o.payloadLength+this.#t>this.#u?(_e(this.#A,1009,"Payload size exceeds maximum allowed size"),!1):!0}run(t){for(;this.#r;)if(this.#s===Ze.INFO){if(this.#n<2)return t();let n=this.consume(2),r=(n[0]&128)!==0,o=n[0]&15,s=(n[1]&128)===128,i=!r&&o!==Jo.CONTINUATION,A=n[1]&127,a=n[0]&64,c=n[0]&32,d=n[0]&16;if(!p1(o))return _e(this.#A,1002,"Invalid opcode received"),t();if(s)return _e(this.#A,1002,"Frame cannot be masked"),t();if(a!==0&&!this.#i.has("permessage-deflate")){_e(this.#A,1002,"Expected RSV1 to be clear.");return}if(c!==0||d!==0){_e(this.#A,1002,"RSV1, RSV2, RSV3 must be clear");return}if(i&&!ep(o)){_e(this.#A,1002,"Invalid frame type was fragmented.");return}if(ep(o)&&this.#a.length>0){_e(this.#A,1002,"Expected continuation frame");return}if(this.#o.fragmented&&i){_e(this.#A,1002,"Fragmented frame exceeded 125 bytes.");return}if((A>125||i)&&Zf(o)){_e(this.#A,1002,"Control frame either too large or fragmented");return}if(E1(o)&&this.#a.length===0&&!this.#o.compressed){_e(this.#A,1002,"Unexpected continuation frame");return}if(A<=125){if(this.#o.payloadLength=A,this.#s=Ze.READ_DATA,!this.#d())return}else A===126?this.#s=Ze.PAYLOADLENGTH_16:A===127&&(this.#s=Ze.PAYLOADLENGTH_64);ep(o)&&(this.#o.binaryType=o,this.#o.compressed=a!==0),this.#o.opcode=o,this.#o.masked=s,this.#o.fin=r,this.#o.fragmented=i}else if(this.#s===Ze.PAYLOADLENGTH_16){if(this.#n<2)return t();let n=this.consume(2);if(this.#o.payloadLength=n.readUInt16BE(0),this.#s=Ze.READ_DATA,!this.#d())return}else if(this.#s===Ze.PAYLOADLENGTH_64){if(this.#n<8)return t();let n=this.consume(8),r=n.readUInt32BE(0),o=n.readUInt32BE(4);if(r!==0||o>2**31-1){_e(this.#A,1009,"Received payload length > 2^31 bytes.");return}if(this.#o.payloadLength=o,this.#s=Ze.READ_DATA,!this.#d())return}else if(this.#s===Ze.READ_DATA){if(this.#n<this.#o.payloadLength)return t();let n=this.consume(this.#o.payloadLength);if(Zf(this.#o.opcode))this.#r=this.parseControlFrame(n),this.#s=Ze.INFO;else if(this.#o.compressed){this.#i.get("permessage-deflate").decompress(n,this.#o.fin,(r,o)=>{if(r){let s=r instanceof Zb?1009:1007;_e(this.#A,s,r.message);return}if(this.writeFragments(o)){if(this.#u>0&&this.#t>this.#u){_e(this.#A,1009,new Zb().message);return}if(!this.#o.fin){this.#s=Ze.INFO,this.#r=!0,this.run(t);return}jb(this.#A,this.#o.binaryType,this.consumeFragments()),this.#r=!0,this.#s=Ze.INFO,this.run(t)}},this.#t),this.#r=!1;break}else{if(!this.writeFragments(n))return;!this.#o.fragmented&&this.#o.fin&&jb(this.#A,this.#o.binaryType,this.consumeFragments()),this.#s=Ze.INFO}}}consume(t){if(t>this.#n)throw new Error("Called consume() before buffers satiated.");if(t===0)return Xb;this.#n-=t;let n=this.#e[0];if(n.length>t)return this.#e[0]=n.subarray(t,n.length),n.subarray(0,t);if(n.length===t)return this.#e.shift();{let r=0,o=Buffer.allocUnsafeSlow(t);for(;r!==t;){let s=this.#e[0],i=s.length;if(i+r===t){o.set(this.#e.shift(),r);break}else if(i+r>t){o.set(s.subarray(0,t-r),r),this.#e[0]=s.subarray(t-r);break}else o.set(this.#e.shift(),r),r+=i}return o}}writeFragments(t){return this.#c>0&&this.#a.length===this.#c?(_e(this.#A,1008,"Too many message fragments"),!1):(this.#t+=t.length,this.#a.push(t),!0)}consumeFragments(){let t=this.#a;if(t.length===1)return this.#t=0,t.shift();let n=0,r=Buffer.allocUnsafeSlow(this.#t);for(let o=0;o<t.length;++o){let s=t[o];r.set(s,n),n+=s.length}return this.#a=[],this.#t=0,r}parseCloseBody(t){l1(t.length!==1);let n;if(t.length>=2&&(n=t.readUInt16BE(0)),n!==void 0&&!f1(n))return{code:1002,reason:"Invalid status code",error:!0};let r=t.subarray(2);r[0]===239&&r[1]===187&&r[2]===191&&(r=r.subarray(3));try{r=h1(r)}catch{return{code:1007,reason:"Invalid UTF-8",error:!0}}return{code:n,reason:r,error:!1}}parseControlFrame(t){let{opcode:n,payloadLength:r}=this.#o;if(n===Jo.CLOSE){if(r===1)return _e(this.#A,1002,"Received close frame with a 1-byte body."),!1;if(this.#o.closeInfo=this.parseCloseBody(t),this.#o.closeInfo.error){let{code:o,reason:s}=this.#o.closeInfo;return _e(this.#A,o,s),!1}if(!this.#A.closeState.has(Ci.SENT)&&!this.#A.closeState.has(Ci.RECEIVED)){let o=Xb;this.#o.closeInfo.code&&(o=Buffer.allocUnsafe(2),o.writeUInt16BE(this.#o.closeInfo.code,0));let s=new $b(o);this.#A.socket.write(s.createFrame(Jo.CLOSE)),this.#A.closeState.add(Ci.SENT)}return this.#A.readyState=g1.CLOSING,this.#A.closeState.add(Ci.RECEIVED),!1}else if(n===Jo.PING){if(!this.#A.closeState.has(Ci.RECEIVED)){let o=new $b(t);this.#A.socket.write(o.createFrame(Jo.PONG)),this.#A.onPing(t)}}else n===Jo.PONG&&this.#A.onPong(t);return!0}get closingInfo(){return this.#o.closeInfo}};eS.exports={ByteParser:tp}});var oS=m((P3,rS)=>{"use strict";var{WebsocketFrameSend:nS}=Vo(),{opcodes:tS,sendHints:Wr}=tr(),I1=ml(),op=class{#e=new I1;#t=!1;#n;constructor(t){this.#n=t}add(t,n,r){if(r!==Wr.blob){if(this.#t){let s={promise:null,callback:n,frame:rp(t,r)};this.#e.push(s)}else if(r===Wr.text){let{0:s,1:i}=nS.createFastTextFrame(t);this.#n.cork(),this.#n.write(s),this.#n.write(i,n),this.#n.uncork()}else this.#n.write(rp(t,r),n);return}let o={promise:t.arrayBuffer().then(s=>{o.promise=null,o.frame=rp(s,r)}),callback:n,frame:null};this.#e.push(o),this.#t||this.#r()}async#r(){this.#t=!0;let t=this.#e;for(;!t.isEmpty();){let n=t.shift();n.promise!==null&&await n.promise,this.#n.write(n.frame,n.callback),n.callback=n.frame=null}this.#t=!1}};function rp(e,t){return new nS(B1(e,t)).createFrame(t===Wr.text?tS.TEXT:tS.BINARY)}function B1(e,t){switch(t){case Wr.text:case Wr.typedArray:return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);case Wr.arrayBuffer:case Wr.blob:return new Uint8Array(e)}}rS.exports={SendQueue:op}});var dS=m((v3,cS)=>{"use strict";var{isArrayBuffer:y1}=require("node:util/types"),{webidl:_}=De(),{URLSerializer:m1}=It(),{environmentSettingsObject:sS}=At(),{staticPropertyDescriptors:nr,states:wn,sentCloseFrameState:sp,sendHints:oc,opcodes:ip}=tr(),{isConnecting:Q1,isEstablished:iS,isClosing:AS,isClosed:w1,isValidSubprotocol:R1,fireEvent:sc,utf8Decode:b1,toArrayBuffer:S1,getURLRecord:D1}=Yr(),{establishWebSocketConnection:T1,closeWebSocketConnection:k1,failWebsocketConnection:aS}=nc(),{ByteParser:N1}=np(),{kEnumerableProperty:St}=G(),{getGlobalDispatcher:M1}=ma(),{ErrorEvent:x1,CloseEvent:U1,createFastMessageEvent:L1}=Za(),{SendQueue:F1}=oS(),{WebsocketFrameSend:_1}=Vo(),{channels:nn}=Un();function P1(e){return typeof e?.address=="function"?e.address():typeof e?.session?.socket?.address=="function"?e.session.socket.address():null}var Ge=class e extends EventTarget{#e={open:null,error:null,close:null,message:null};#t=0;#n="";#r="";#s;#o={onConnectionEstablished:(t,n)=>this.#c(t,n),onMessage:(t,n)=>this.#u(t,n),onParserError:t=>aS(this.#o,null,t.message),onParserDrain:()=>this.#d(),onSocketData:t=>{this.#A.write(t)||this.#o.socket.pause()},onSocketError:t=>{this.#o.readyState=wn.CLOSING,nn.socketError.hasSubscribers&&nn.socketError.publish(t),this.#o.socket.destroy()},onSocketClose:()=>this.#l(),onPing:t=>{nn.ping.hasSubscribers&&nn.ping.publish({payload:t,websocket:this})},onPong:t=>{nn.pong.hasSubscribers&&nn.pong.publish({payload:t,websocket:this})},readyState:wn.CONNECTING,socket:null,closeState:new Set,controller:null,wasEverConnected:!1};#a;#i;#A;constructor(t,n=[]){super(),_.util.markAsUncloneable(this);let r="WebSocket constructor";_.argumentLengthCheck(arguments,1,r);let o=_.converters["DOMString or sequence<DOMString> or WebSocketInit"](n,r,"options");t=_.converters.USVString(t),n=o.protocols;let s=sS.settingsObject.baseUrl,i=D1(t,s);if(typeof n=="string"&&(n=[n]),n.length!==new Set(n.map(a=>a.toLowerCase())).size)throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if(n.length>0&&!n.every(a=>R1(a)))throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");this.#a=new URL(i.href);let A=sS.settingsObject;this.#o.controller=T1(i,n,A,this.#o,o),this.#o.readyState=e.CONNECTING,this.#i="blob"}close(t=void 0,n=void 0){_.brandCheck(this,e),t!==void 0&&(t=_.converters["unsigned short"](t,"WebSocket.close","code",_.attributes.Clamp)),n!==void 0&&(n=_.converters.USVString(n)),t??=null,n??="",k1(this.#o,t,n,!0)}send(t){_.brandCheck(this,e);let n="WebSocket.send";if(_.argumentLengthCheck(arguments,1,n),t=_.converters.WebSocketSendData(t,n,"data"),Q1(this.#o.readyState))throw new DOMException("Sent before connected.","InvalidStateError");if(!(!iS(this.#o.readyState)||AS(this.#o.readyState)))if(typeof t=="string"){let r=Buffer.from(t);this.#t+=r.byteLength,this.#s.add(r,()=>{this.#t-=r.byteLength},oc.text)}else y1(t)?(this.#t+=t.byteLength,this.#s.add(t,()=>{this.#t-=t.byteLength},oc.arrayBuffer)):ArrayBuffer.isView(t)?(this.#t+=t.byteLength,this.#s.add(t,()=>{this.#t-=t.byteLength},oc.typedArray)):_.is.Blob(t)&&(this.#t+=t.size,this.#s.add(t,()=>{this.#t-=t.size},oc.blob))}get readyState(){return _.brandCheck(this,e),this.#o.readyState}get bufferedAmount(){return _.brandCheck(this,e),this.#t}get url(){return _.brandCheck(this,e),m1(this.#a)}get extensions(){return _.brandCheck(this,e),this.#r}get protocol(){return _.brandCheck(this,e),this.#n}get onopen(){return _.brandCheck(this,e),this.#e.open}set onopen(t){_.brandCheck(this,e),this.#e.open&&this.removeEventListener("open",this.#e.open);let n=_.converters.EventHandlerNonNull(t);n!==null?(this.addEventListener("open",n),this.#e.open=t):this.#e.open=null}get onerror(){return _.brandCheck(this,e),this.#e.error}set onerror(t){_.brandCheck(this,e),this.#e.error&&this.removeEventListener("error",this.#e.error);let n=_.converters.EventHandlerNonNull(t);n!==null?(this.addEventListener("error",n),this.#e.error=t):this.#e.error=null}get onclose(){return _.brandCheck(this,e),this.#e.close}set onclose(t){_.brandCheck(this,e),this.#e.close&&this.removeEventListener("close",this.#e.close);let n=_.converters.EventHandlerNonNull(t);n!==null?(this.addEventListener("close",n),this.#e.close=t):this.#e.close=null}get onmessage(){return _.brandCheck(this,e),this.#e.message}set onmessage(t){_.brandCheck(this,e),this.#e.message&&this.removeEventListener("message",this.#e.message);let n=_.converters.EventHandlerNonNull(t);n!==null?(this.addEventListener("message",n),this.#e.message=t):this.#e.message=null}get binaryType(){return _.brandCheck(this,e),this.#i}set binaryType(t){_.brandCheck(this,e),t!=="blob"&&t!=="arraybuffer"?this.#i="blob":this.#i=t}#c(t,n){this.#o.socket=t.socket;let r=this.#o.controller.dispatcher?.webSocketOptions,o=r?.maxFragments,s=r?.maxPayloadSize,i=new N1(this.#o,n,{maxFragments:o,maxPayloadSize:s});i.on("drain",()=>this.#o.onParserDrain()),i.on("error",c=>this.#o.onParserError(c)),this.#A=i,this.#s=new F1(t.socket),this.#o.readyState=wn.OPEN;let A=t.headersList.get("sec-websocket-extensions");A!==null&&(this.#r=A);let a=t.headersList.get("sec-websocket-protocol");if(a!==null&&(this.#n=a),sc("open",this),nn.open.hasSubscribers){let c=t.headersList.entries;nn.open.publish({address:P1(t.socket),protocol:this.#n,extensions:this.#r,websocket:this,handshakeResponse:{status:t.status,statusText:t.statusText,headers:c}})}}#u(t,n){if(this.#o.readyState!==wn.OPEN)return;let r;if(t===ip.TEXT)try{r=b1(n)}catch{aS(this.#o,1007,"Received invalid UTF-8 in text frame.");return}else t===ip.BINARY&&(this.#i==="blob"?r=new Blob([n]):r=S1(n));sc("message",this,L1,{origin:this.#a.origin,data:r})}#d(){this.#o.socket.resume()}#l(){let t=this.#o.closeState.has(sp.SENT)&&this.#o.closeState.has(sp.RECEIVED),n=1005,r="",o=this.#A?.closingInfo;o&&!o.error&&(n=o.code??1005,r=o.reason),this.#o.readyState=wn.CLOSED,this.#o.closeState.has(sp.RECEIVED)||(n=1006,sc("error",this,(s,i)=>new x1(s,i),{error:new TypeError(r)})),sc("close",this,(s,i)=>new U1(s,i),{wasClean:t,code:n,reason:r}),nn.close.hasSubscribers&&nn.close.publish({websocket:this,code:n,reason:r})}static ping(t,n){if(Buffer.isBuffer(n)){if(n.length>125)throw new TypeError("A PING frame cannot have a body larger than 125 bytes.")}else if(n!==void 0)throw new TypeError("Expected buffer payload");let r=t.#o.readyState;if(iS(r)&&!AS(r)&&!w1(r)){let o=new _1(n);t.#o.socket.write(o.createFrame(ip.PING))}}},{ping:v1}=Ge;Reflect.deleteProperty(Ge,"ping");Ge.CONNECTING=Ge.prototype.CONNECTING=wn.CONNECTING;Ge.OPEN=Ge.prototype.OPEN=wn.OPEN;Ge.CLOSING=Ge.prototype.CLOSING=wn.CLOSING;Ge.CLOSED=Ge.prototype.CLOSED=wn.CLOSED;Object.defineProperties(Ge.prototype,{CONNECTING:nr,OPEN:nr,CLOSING:nr,CLOSED:nr,url:St,readyState:St,bufferedAmount:St,onopen:St,onerror:St,onclose:St,close:St,onmessage:St,binaryType:St,send:St,extensions:St,protocol:St,[Symbol.toStringTag]:{value:"WebSocket",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(Ge,{CONNECTING:nr,OPEN:nr,CLOSING:nr,CLOSED:nr});_.converters["sequence<DOMString>"]=_.sequenceConverter(_.converters.DOMString);_.converters["DOMString or sequence<DOMString>"]=function(e,t,n){return _.util.Type(e)===_.util.Types.OBJECT&&Symbol.iterator in e?_.converters["sequence<DOMString>"](e):_.converters.DOMString(e,t,n)};_.converters.WebSocketInit=_.dictionaryConverter([{key:"protocols",converter:_.converters["DOMString or sequence<DOMString>"],defaultValue:()=>[]},{key:"dispatcher",converter:_.converters.any,defaultValue:()=>M1()},{key:"headers",converter:_.nullableConverter(_.converters.HeadersInit)}]);_.converters["DOMString or sequence<DOMString> or WebSocketInit"]=function(e){return _.util.Type(e)===_.util.Types.OBJECT&&!(Symbol.iterator in e)?_.converters.WebSocketInit(e):{protocols:_.converters["DOMString or sequence<DOMString>"](e)}};_.converters.WebSocketSendData=function(e){return _.util.Type(e)===_.util.Types.OBJECT&&(_.is.Blob(e)||_.is.BufferSource(e))?e:_.converters.USVString(e)};cS.exports={WebSocket:Ge,ping:v1}});var Ap=m((O3,gS)=>{"use strict";var{webidl:ic}=De(),{validateCloseCodeAndReason:O1}=Yr(),{kConstruct:uS}=ne(),{kEnumerableProperty:lS}=G();function q1(){class e extends DOMException{get reason(){return""}}return new e().reason!==void 0?DOMException:new Proxy(DOMException,{construct(t,n,r){let o=Reflect.construct(t,n,t);return Object.setPrototypeOf(o,r.prototype),o}})}var Vr=class e extends q1(){#e;#t;constructor(t="",n=void 0){if(t=ic.converters.DOMString(t,"WebSocketError","message"),super(t,"WebSocketError"),n===uS)return;n!==null&&(n=ic.converters.WebSocketCloseInfo(n));let r=n.closeCode??null,o=n.reason??"";O1(r,o),o.length!==0&&r===null&&(r=1e3),this.#e=r,this.#t=o}get closeCode(){return this.#e}get reason(){return this.#t}static createUnvalidatedWebSocketError(t,n,r){let o=new e(t,uS);return o.#e=n,o.#t=r,o}},{createUnvalidatedWebSocketError:G1}=Vr;delete Vr.createUnvalidatedWebSocketError;Object.defineProperties(Vr.prototype,{closeCode:lS,reason:lS,[Symbol.toStringTag]:{value:"WebSocketError",writable:!1,enumerable:!1,configurable:!0}});ic.is.WebSocketError=ic.util.MakeTypeAssertion(Vr);gS.exports={WebSocketError:Vr,createUnvalidatedWebSocketError:G1}});var CS=m((q3,ES)=>{"use strict";var{createDeferredPromise:ap}=Rs(),{environmentSettingsObject:fS}=At(),{states:zo,opcodes:Ac,sentCloseFrameState:Ko}=tr(),{webidl:Ce}=De(),{getURLRecord:H1,isValidSubprotocol:Y1,isEstablished:W1,utf8Decode:V1}=Yr(),{establishWebSocketConnection:J1,failWebsocketConnection:cp,closeWebSocketConnection:dp}=nc(),{channels:pS}=Un(),{WebsocketFrameSend:z1}=Vo(),{ByteParser:K1}=np(),{WebSocketError:X1,createUnvalidatedWebSocketError:j1}=Ap(),{kEnumerableProperty:ac}=G(),{utf8DecodeBytes:$1}=DA(),hS=!1,cc=class{#e;#t;#n;#r;#s;#o;#a=!1;#i={onConnectionEstablished:(t,n)=>this.#u(t,n),onMessage:(t,n)=>this.#d(t,n),onParserError:t=>cp(this.#i,null,t.message),onParserDrain:()=>this.#i.socket.resume(),onSocketData:t=>{this.#A.write(t)||this.#i.socket.pause()},onSocketError:t=>{this.#i.readyState=zo.CLOSING,pS.socketError.hasSubscribers&&pS.socketError.publish(t),this.#i.socket.destroy()},onSocketClose:()=>this.#l(),onPing:()=>{},onPong:()=>{},readyState:zo.CONNECTING,socket:null,closeState:new Set,controller:null,wasEverConnected:!1};#A;constructor(t,n=void 0){hS||(process.emitWarning("WebSocketStream is experimental! Expect it to change at any time.",{code:"UNDICI-WSS"}),hS=!0),Ce.argumentLengthCheck(arguments,1,"WebSocket"),t=Ce.converters.USVString(t),n!==null&&(n=Ce.converters.WebSocketStreamOptions(n));let r=fS.settingsObject.baseUrl,o=H1(t,r),s=n.protocols;if(s.length!==new Set(s.map(A=>A.toLowerCase())).size)throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if(s.length>0&&!s.every(A=>Y1(A)))throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if(this.#e=o.toString(),this.#t=ap(),this.#n=ap(),n.signal!=null){let A=n.signal;if(A.aborted){this.#t.reject(A.reason),this.#n.reject(A.reason);return}A.addEventListener("abort",()=>{W1(this.#i.readyState)||(cp(this.#i),this.#i.readyState=zo.CLOSING,this.#t.reject(A.reason),this.#n.reject(A.reason),this.#a=!0)},{once:!0})}let i=fS.settingsObject;this.#i.controller=J1(o,s,i,this.#i,n)}get url(){return this.#e.toString()}get opened(){return this.#t.promise}get closed(){return this.#n.promise}close(t=void 0){t!==null&&(t=Ce.converters.WebSocketCloseInfo(t));let n=t.closeCode??null,r=t.reason;dp(this.#i,n,r,!0)}#c(t){t=Ce.converters.WebSocketStreamWrite(t);let n=ap(),r=null,o=null;if(Ce.is.BufferSource(t))r=new Uint8Array(ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t.slice()),o=Ac.BINARY;else{let s;try{s=Ce.converters.DOMString(t)}catch(i){return n.reject(i),n.promise}r=new TextEncoder().encode(s),o=Ac.TEXT}if(!this.#i.closeState.has(Ko.SENT)&&!this.#i.closeState.has(Ko.RECEIVED)){let s=new z1(r);this.#i.socket.write(s.createFrame(o),()=>{n.resolve(void 0)})}return n.promise}#u(t,n){this.#i.socket=t.socket;let r=this.#i.controller.dispatcher?.webSocketOptions?.maxFragments,o=this.#i.controller.dispatcher?.webSocketOptions?.maxPayloadSize,s=new K1(this.#i,n,{maxFragments:r,maxPayloadSize:o});s.on("drain",()=>this.#i.onParserDrain()),s.on("error",d=>this.#i.onParserError(d)),this.#A=s,this.#i.readyState=zo.OPEN;let i=n??"",A=t.headersList.get("sec-websocket-protocol")??"",a=new ReadableStream({start:d=>{this.#s=d},cancel:d=>this.#f(d)}),c=new WritableStream({write:d=>this.#c(d),close:()=>dp(this.#i,null,null),abort:d=>this.#g(d)});this.#r=a,this.#o=c,this.#t.resolve({extensions:i,protocol:A,readable:a,writable:c})}#d(t,n){if(this.#i.readyState!==zo.OPEN)return;let r;if(t===Ac.TEXT)try{r=V1(n)}catch{cp(this.#i,1007,"Received invalid UTF-8 in text frame.");return}else t===Ac.BINARY&&(r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength));this.#s.enqueue(r)}#l(){let t=this.#i.closeState.has(Ko.SENT)&&this.#i.closeState.has(Ko.RECEIVED);if(this.#i.readyState=zo.CLOSED,this.#a)return;this.#i.wasEverConnected||this.#t.reject(new X1("Socket never opened"));let n=this.#A?.closingInfo,r=n?.code??1005;!this.#i.closeState.has(Ko.SENT)&&!this.#i.closeState.has(Ko.RECEIVED)&&(r=1006);let o=n?.reason==null?"":$1(Buffer.from(n.reason));if(t)this.#s.close(),this.#o.locked||this.#o.abort(new DOMException("A closed WebSocketStream cannot be written to","InvalidStateError")),this.#n.resolve({closeCode:r,reason:o});else{let s=j1("unclean close",r,o);this.#s?.error(s),this.#o?.abort(s),this.#n.reject(s)}}#g(t){let n=null,r="";Ce.is.WebSocketError(t)&&(n=t.closeCode,r=t.reason),dp(this.#i,n,r)}#f(t){this.#g(t)}};Object.defineProperties(cc.prototype,{url:ac,opened:ac,closed:ac,close:ac,[Symbol.toStringTag]:{value:"WebSocketStream",writable:!1,enumerable:!1,configurable:!0}});Ce.converters.WebSocketStreamOptions=Ce.dictionaryConverter([{key:"protocols",converter:Ce.sequenceConverter(Ce.converters.USVString),defaultValue:()=>[]},{key:"signal",converter:Ce.nullableConverter(Ce.converters.AbortSignal),defaultValue:()=>null}]);Ce.converters.WebSocketCloseInfo=Ce.dictionaryConverter([{key:"closeCode",converter:e=>Ce.converters["unsigned short"](e,Ce.attributes.EnforceRange)},{key:"reason",converter:Ce.converters.USVString,defaultValue:()=>""}]);Ce.converters.WebSocketStreamWrite=function(e){return typeof e=="string"?Ce.converters.USVString(e):Ce.converters.BufferSource(e)};ES.exports={WebSocketStream:cc}});var BS=m((G3,IS)=>{"use strict";function Z1(e){return e.indexOf("\0")===-1}function eW(e){if(e.length===0)return!1;for(let t=0;t<e.length;t++)if(e.charCodeAt(t)<48||e.charCodeAt(t)>57)return!1;return!0}IS.exports={isValidLastEventId:Z1,isASCIINumber:eW}});var wS=m((H3,QS)=>{"use strict";var{Transform:tW}=require("node:stream"),{isASCIINumber:yS,isValidLastEventId:mS}=BS(),Rn=[239,187,191],up=10,dc=13,nW=58,rW=32,lp=class extends tW{state;checkBOM=!0;crlfCheck=!1;eventEndCheck=!1;buffer=null;pos=0;event={data:void 0,event:void 0,id:void 0,retry:void 0};constructor(t={}){t.readableObjectMode=!0,super(t),this.state=t.eventSourceSettings||{},t.push&&(this.push=t.push)}_transform(t,n,r){if(t.length===0){r();return}if(this.buffer?this.buffer=Buffer.concat([this.buffer,t]):this.buffer=t,this.checkBOM)switch(this.buffer.length){case 1:if(this.buffer[0]===Rn[0]){r();return}this.checkBOM=!1,r();return;case 2:if(this.buffer[0]===Rn[0]&&this.buffer[1]===Rn[1]){r();return}this.checkBOM=!1;break;case 3:if(this.buffer[0]===Rn[0]&&this.buffer[1]===Rn[1]&&this.buffer[2]===Rn[2]){this.buffer=Buffer.alloc(0),this.checkBOM=!1,r();return}this.checkBOM=!1;break;default:this.buffer[0]===Rn[0]&&this.buffer[1]===Rn[1]&&this.buffer[2]===Rn[2]&&(this.buffer=this.buffer.subarray(3)),this.checkBOM=!1;break}for(;this.pos<this.buffer.length;){if(this.eventEndCheck){if(this.crlfCheck){if(this.buffer[this.pos]===up){this.buffer=this.buffer.subarray(this.pos+1),this.pos=0,this.crlfCheck=!1;continue}this.crlfCheck=!1}if(this.buffer[this.pos]===up||this.buffer[this.pos]===dc){this.buffer[this.pos]===dc&&(this.crlfCheck=!0),this.buffer=this.buffer.subarray(this.pos+1),this.pos=0,(this.event.data!==void 0||this.event.event||this.event.id!==void 0||this.event.retry)&&this.processEvent(this.event),this.clearEvent();continue}this.eventEndCheck=!1;continue}if(this.buffer[this.pos]===up||this.buffer[this.pos]===dc){this.buffer[this.pos]===dc&&(this.crlfCheck=!0),this.parseLine(this.buffer.subarray(0,this.pos),this.event),this.buffer=this.buffer.subarray(this.pos+1),this.pos=0,this.eventEndCheck=!0;continue}this.pos++}r()}parseLine(t,n){if(t.length===0)return;let r=t.indexOf(nW);if(r===0)return;let o="",s="";if(r!==-1){o=t.subarray(0,r).toString("utf8");let i=r+1;t[i]===rW&&++i,s=t.subarray(i).toString("utf8")}else o=t.toString("utf8"),s="";switch(o){case"data":n[o]===void 0?n[o]=s:n[o]+=`
|
|
128
|
+
${s}`;break;case"retry":yS(s)&&(n[o]=s);break;case"id":mS(s)&&(n[o]=s);break;case"event":s.length>0&&(n[o]=s);break}}processEvent(t){t.retry&&yS(t.retry)&&(this.state.reconnectionTime=parseInt(t.retry,10)),t.id!==void 0&&mS(t.id)&&(this.state.lastEventId=t.id),t.data!==void 0&&this.push({type:t.event||"message",options:{data:t.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}clearEvent(){this.event={data:void 0,event:void 0,id:void 0,retry:void 0}}};QS.exports={EventSourceStream:lp}});var MS=m((Y3,NS)=>{"use strict";var{pipeline:oW}=require("node:stream"),{fetching:sW}=li(),{makeRequest:iW}=Oo(),{webidl:He}=De(),{EventSourceStream:AW}=wS(),{parseMIMEType:aW}=It(),{createFastMessageEvent:cW}=Za(),{isNetworkError:RS}=ci(),{kEnumerableProperty:Jr}=G(),{environmentSettingsObject:bS}=At(),SS=!1,DS=3e3,Ii=0,TS=1,Bi=2,dW="anonymous",uW="use-credentials",Xo=class e extends EventTarget{#e={open:null,error:null,message:null};#t;#n=!1;#r=Ii;#s=null;#o=null;#a;#i;constructor(t,n={}){super(),He.util.markAsUncloneable(this);let r="EventSource constructor";He.argumentLengthCheck(arguments,1,r),SS||(SS=!0,process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})),t=He.converters.USVString(t),n=He.converters.EventSourceInitDict(n,r,"eventSourceInitDict"),this.#a=n.node.dispatcher||n.dispatcher,this.#i={lastEventId:"",reconnectionTime:n.node.reconnectionTime};let o=bS,s;try{s=new URL(t,o.settingsObject.baseUrl),this.#i.origin=s.origin}catch(a){throw new DOMException(a,"SyntaxError")}this.#t=s.href;let i=dW;n.withCredentials===!0&&(i=uW,this.#n=!0);let A={redirect:"follow",keepalive:!0,mode:"cors",credentials:i==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};A.client=bS.settingsObject,A.headersList=[["accept",{name:"accept",value:"text/event-stream"}]],A.cache="no-store",A.initiator="other",A.urlList=[new URL(this.#t)],this.#s=iW(A),this.#A()}get readyState(){return this.#r}get url(){return this.#t}get withCredentials(){return this.#n}#A(){if(this.#r===Bi)return;this.#r=Ii;let t={request:this.#s,dispatcher:this.#a},n=r=>{if(!RS(r))return this.#c()};t.processResponseEndOfBody=n,t.processResponse=r=>{if(RS(r))if(r.aborted){this.close(),this.dispatchEvent(new Event("error"));return}else{this.#c();return}let o=r.headersList.get("content-type",!0),s=o!==null?aW(o):"failure",i=s!=="failure"&&s.essence==="text/event-stream";if(r.status!==200||i===!1){this.close(),this.dispatchEvent(new Event("error"));return}this.#r=TS,this.dispatchEvent(new Event("open")),this.#i.origin=r.urlList[r.urlList.length-1].origin;let A=new AW({eventSourceSettings:this.#i,push:a=>{this.dispatchEvent(cW(a.type,a.options))}});oW(r.body.stream,A,a=>{a?.aborted===!1&&(this.close(),this.dispatchEvent(new Event("error")))})},this.#o=sW(t)}#c(){this.#r!==Bi&&(this.#r=Ii,this.dispatchEvent(new Event("error")),setTimeout(()=>{this.#r===Ii&&(this.#i.lastEventId.length&&this.#s.headersList.set("last-event-id",this.#i.lastEventId,!0),this.#A())},this.#i.reconnectionTime)?.unref())}close(){He.brandCheck(this,e),this.#r!==Bi&&(this.#r=Bi,this.#o.abort(),this.#s=null)}get onopen(){return this.#e.open}set onopen(t){this.#e.open&&this.removeEventListener("open",this.#e.open);let n=He.converters.EventHandlerNonNull(t);n!==null?(this.addEventListener("open",n),this.#e.open=t):this.#e.open=null}get onmessage(){return this.#e.message}set onmessage(t){this.#e.message&&this.removeEventListener("message",this.#e.message);let n=He.converters.EventHandlerNonNull(t);n!==null?(this.addEventListener("message",n),this.#e.message=t):this.#e.message=null}get onerror(){return this.#e.error}set onerror(t){this.#e.error&&this.removeEventListener("error",this.#e.error);let n=He.converters.EventHandlerNonNull(t);n!==null?(this.addEventListener("error",n),this.#e.error=t):this.#e.error=null}},kS={CONNECTING:{__proto__:null,configurable:!1,enumerable:!0,value:Ii,writable:!1},OPEN:{__proto__:null,configurable:!1,enumerable:!0,value:TS,writable:!1},CLOSED:{__proto__:null,configurable:!1,enumerable:!0,value:Bi,writable:!1}};Object.defineProperties(Xo,kS);Object.defineProperties(Xo.prototype,kS);Object.defineProperties(Xo.prototype,{close:Jr,onerror:Jr,onmessage:Jr,onopen:Jr,readyState:Jr,url:Jr,withCredentials:Jr});He.converters.EventSourceInitDict=He.dictionaryConverter([{key:"withCredentials",converter:He.converters.boolean,defaultValue:()=>!1},{key:"dispatcher",converter:He.converters.any},{key:"node",converter:He.dictionaryConverter([{key:"reconnectionTime",converter:He.converters["unsigned long"],defaultValue:()=>DS},{key:"dispatcher",converter:He.converters.any}]),defaultValue:()=>({})}]);NS.exports={EventSource:Xo,defaultReconnectionTime:DS}});var PS=m((W3,D)=>{"use strict";var lW=Hn(),US=Cs(),gW=Qr(),fW=Cy(),pW=my(),hW=br(),EW=Kl(),CW=Wl(),IW=Am(),BW=fm(),yW=Em(),LS=q(),lc=G(),{InvalidArgumentError:uc}=LS,jo=$m(),mW=lr(),QW=Ug(),{MockCallHistory:wW,MockCallHistoryLog:RW}=_g(),bW=Vg(),SW=qg(),DW=jQ(),TW=Eg(),kW=Aa(),{getGlobalDispatcher:FS,setGlobalDispatcher:NW}=ma(),MW=Uo(),xW=ef();Object.assign(US.prototype,jo);D.exports.Dispatcher=US;D.exports.Client=lW;D.exports.Pool=gW;D.exports.BalancedPool=fW;D.exports.RoundRobinPool=pW;D.exports.Agent=hW;D.exports.ProxyAgent=EW;D.exports.Socks5ProxyAgent=CW;D.exports.EnvHttpProxyAgent=IW;D.exports.RetryAgent=BW;D.exports.H2CClient=yW;D.exports.RetryHandler=kW;D.exports.DecoratorHandler=MW;D.exports.RedirectHandler=xW;D.exports.interceptors={redirect:aw(),responseError:dw(),retry:lw(),dump:fw(),dns:Cw(),cache:Xw(),decompress:tR(),deduplicate:iR()};D.exports.cacheStores={MemoryCacheStore:hf()};var UW=cR();D.exports.cacheStores.SqliteCacheStore=UW;D.exports.buildConnector=mW;D.exports.errors=LS;D.exports.util={parseHeaders:lc.parseHeaders,headerNameToString:lc.headerNameToString};function yi(e){return(t,n,r)=>{if(typeof n=="function"&&(r=n,n=null),!t||typeof t!="string"&&typeof t!="object"&&!(t instanceof URL))throw new uc("invalid url");if(n!=null&&typeof n!="object")throw new uc("invalid opts");if(n&&n.path!=null){if(typeof n.path!="string")throw new uc("invalid opts.path");let i=n.path;n.path.startsWith("/")||(i=`/${i}`),t=new URL(lc.parseOrigin(t).origin+i)}else n||(n=typeof t=="object"?t:{}),t=lc.parseURL(t);let{agent:o,dispatcher:s=FS()}=n;if(o)throw new uc("unsupported opts.agent. Did you mean opts.client?");return e.call(s,{...n,origin:t.origin,path:t.search?`${t.pathname}${t.search}`:t.pathname,method:n.method||(n.body?"PUT":"GET")},r)}}D.exports.setGlobalDispatcher=NW;D.exports.getGlobalDispatcher=FS;var LW=li().fetch,xS=typeof __filename<"u"?__filename:void 0;function _S(e,t){if(!e||typeof e!="object")return;let n=typeof e.stack=="string"?e.stack:"",r=t.replace(/\\/g,"/");if(n&&(n.includes(t)||n.includes(r)))return;let o={};if(Error.captureStackTrace(o,_S),!o.stack)return;let s=o.stack.split(`
|
|
129
|
+
`).slice(1).join(`
|
|
130
|
+
`);e.stack=n?`${n}
|
|
131
|
+
${s}`:o.stack}D.exports.fetch=function(t,n=void 0){return LW(t,n).catch(r=>{throw xS?_S(r,xS):r&&typeof r=="object"&&Error.captureStackTrace(r,D.exports.fetch),r})};D.exports.Headers=vr().Headers;D.exports.Response=ci().Response;D.exports.Request=Oo().Request;D.exports.FormData=UA().FormData;var{setGlobalOrigin:FW,getGlobalOrigin:_W}=ku();D.exports.setGlobalOrigin=FW;D.exports.getGlobalOrigin=_W;var{CacheStorage:PW}=Ib(),{kConstruct:vW}=ne();D.exports.caches=new PW(vW);var{deleteCookie:OW,getCookies:qW,getSetCookies:GW,setCookie:HW,parseCookie:YW}=Nb();D.exports.deleteCookie=OW;D.exports.getCookies=qW;D.exports.getSetCookies=GW;D.exports.setCookie=HW;D.exports.parseCookie=YW;var{parseMIMEType:WW,serializeAMimeType:VW}=It();D.exports.parseMIMEType=WW;D.exports.serializeAMimeType=VW;var{CloseEvent:JW,ErrorEvent:zW,MessageEvent:KW}=Za(),{WebSocket:XW,ping:jW}=dS();D.exports.WebSocket=XW;D.exports.CloseEvent=JW;D.exports.ErrorEvent=zW;D.exports.MessageEvent=KW;D.exports.ping=jW;D.exports.WebSocketStream=CS().WebSocketStream;D.exports.WebSocketError=Ap().WebSocketError;D.exports.request=yi(jo.request);D.exports.stream=yi(jo.stream);D.exports.pipeline=yi(jo.pipeline);D.exports.connect=yi(jo.connect);D.exports.upgrade=yi(jo.upgrade);D.exports.MockClient=QW;D.exports.MockCallHistory=wW;D.exports.MockCallHistoryLog=RW;D.exports.MockPool=SW;D.exports.MockAgent=bW;D.exports.SnapshotAgent=DW;D.exports.mockErrors=TW;var{EventSource:$W}=MS();D.exports.EventSource=$W;function ZW(){globalThis.fetch=D.exports.fetch,globalThis.Headers=D.exports.Headers,globalThis.Response=D.exports.Response,globalThis.Request=D.exports.Request,globalThis.FormData=D.exports.FormData,globalThis.WebSocket=D.exports.WebSocket,globalThis.CloseEvent=D.exports.CloseEvent,globalThis.ErrorEvent=D.exports.ErrorEvent,globalThis.MessageEvent=D.exports.MessageEvent,globalThis.EventSource=D.exports.EventSource}D.exports.install=ZW});var qt=require("node:fs"),ad=require("node:path"),Ck=require("node:string_decoder"),Ot=require("node:worker_threads");var Be=Ue(require("node:path"));var ji=Ue(require("node:os")),Mn=Ue(require("node:path")),Xh="Claude Code Router",pd="claude-code-router",xk="CCR_INTERNAL_HOME_DIR",Uk="CCR_INTERNAL_APP_DATA_DIR",Lk="CCR_INTERNAL_USER_DATA_DIR";function cs(e){let t=$h(e);return t||(e==="home"?ji.default.homedir():e==="appData"?Fk():_k())}var jh=Mn.default.join(cs("home"),".claude-code-router");function $i(){return process.platform==="win32"?Mn.default.join(cs("appData"),pd):Mn.default.join(cs("home"),`.${pd}`)}function hd(){let e=$h("userData");return e||(process.platform==="win32"?$i():Mn.default.join($i(),"app-data"))}function $h(e){let t=e==="home"?xk:e==="appData"?Uk:Lk;return process.env[t]?.trim()||void 0}function Fk(){return process.platform==="win32"?process.env.APPDATA||process.env.LOCALAPPDATA||(process.env.USERPROFILE?Mn.default.join(process.env.USERPROFILE,"AppData","Roaming"):Mn.default.join(ji.default.homedir(),"AppData","Roaming")):process.env.XDG_CONFIG_HOME||Mn.default.join(ji.default.homedir(),".config")}function _k(){return hd()}var Ao=require("node:fs"),Ed=Ue(require("node:path"));function Zh(e,t,n){if(!(!e||!t||Pk(e,t)||!(0,Ao.existsSync)(e)))try{(0,Ao.mkdirSync)(t,{recursive:!0}),(0,Ao.cpSync)(e,t,{errorOnExist:!1,force:!1,recursive:!0})}catch(r){console.warn(`Failed to migrate ${n} from ${e} to ${t}: ${vk(r)}`)}}function Pk(e,t){return Ed.default.resolve(e).toLowerCase()===Ed.default.resolve(t).toLowerCase()}function vk(e){return e instanceof Error?e.message:String(e)}var Zi=Be.default.join(jh,"config.json");var eA=$i(),tA=Be.default.join(cs("appData"),Xh),nA=Be.default.join(tA,"config.json"),rA=Be.default.join(eA,"config.json"),oA=Be.default.join(eA,".onboard_finished"),Cd="onboardingFinishedAt",Gt=hd(),ds=Be.default.join(eA,"config.sqlite"),Ok=Be.default.join(Gt,"api-keys.sqlite"),eE=process.platform==="win32"?[Be.default.join(tA,"config.sqlite")]:[],tE=[Ok,...process.platform==="win32"?[Be.default.join(tA,"api-keys.sqlite")]:[]],Id=Be.default.join(Gt,"certs"),U4=Be.default.join(Gt,"provider-icons"),L4=Be.default.join(Id,"ca.pem"),F4=Be.default.join(Id,"ca.cer"),_4=Be.default.join(Id,"key.pem"),sA=Be.default.join(Gt,"request-logs.sqlite"),nE=Be.default.join(Gt,"request-log-bodies"),P4=Be.default.join(Gt,"context-archive.sqlite"),iA=Be.default.join(Gt,"raw-trace-spool"),v4=Be.default.join(Gt,"usage.sqlite");process.platform==="win32"&&Zh(tA,eA,"Windows app data directory");var bT=require("node:crypto"),j=require("node:fs"),oo=require("node:path"),dn=require("node:string_decoder");var us="https://api.x.ai/v1",rE="grok-imagine-image-quality",oE="grok-imagine-video";var aA=1,G4=5*1024*1024,sE=2e3,iE=3e4,AE=9999,rt="claude-design",ot="claude-ship",qk={description:"Open Claude Design in a dedicated CCR Electron window.",icon:"palette",id:"claude-design",name:"Claude Design",url:"https://claude-design.ccrdesk.top/design"},Gk={description:"Open Claude Ship in a dedicated CCR Electron window.",icon:"rocket",id:"claude-ship",name:"Claude Ship",url:"https://claude.ai/claude-ship"},ar=["apps","gateway","provider"],Bd=["trusted-code","apps","gateway-routes","proxy-routes","http-backends","provider-account-connectors","gateway-request-transforms","core-gateway-config","core-provider-plugins","virtual-model-profiles","sqlite-store","system-launcher"],aE={"claude-design":{permissions:["trusted-code","apps","gateway-routes","proxy-routes","http-backends","sqlite-store"],surfaces:{apps:!0,gateway:!0,provider:!1}},"claude-ship":{permissions:["trusted-code","apps","gateway-routes","proxy-routes","http-backends","sqlite-store"],surfaces:{apps:!0,gateway:!0,provider:!1}},"cursor-proxy":{permissions:["trusted-code","gateway-routes","proxy-routes","http-backends"],surfaces:{apps:!1,gateway:!0,provider:!1}}};function yd(e){let t=aE[e.trim().toLowerCase()]?.permissions;return t?[...t]:void 0}function md(e){let t=aE[e.trim().toLowerCase()]?.surfaces;return t?{...t}:void 0}function cA(e){let t=e.trim().toLowerCase();if(t===rt)return[{...qk}];if(t===ot)return[{...Gk}]}var Qd="CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY",dA={[Qd]:"1"};var pe={account:"bar",modelShare:"bars",rings:"rings",stats:"cards",tokenFlow:"line",tokenMix:"bars"},cE=["1:1","2:1","3:1","4:1","1:2","2:2","3:2","4:2","1:3","2:3","3:3","4:3","1:4","2:4","3:4","4:4"],dE=[{enabled:!0,id:"system-status",size:"4:1",type:"system-status",variant:"timeline"},{enabled:!0,id:"account-balance",size:"4:2",type:"account-balance",variant:"cards"},{enabled:!0,id:"metric-requests",metric:"requests",size:"1:1",type:"metric",variant:"card"},{enabled:!0,id:"metric-input-tokens",metric:"input-tokens",size:"1:1",type:"metric",variant:"card"},{enabled:!0,id:"metric-output-tokens",metric:"output-tokens",size:"1:1",type:"metric",variant:"card"},{enabled:!0,id:"metric-cache-tokens",metric:"cache-tokens",size:"1:1",type:"metric",variant:"card"},{enabled:!0,id:"metric-cache-ratio",metric:"cache-ratio",size:"1:1",type:"metric",variant:"card"},{enabled:!0,id:"metric-estimated-cost",metric:"estimated-cost",size:"1:1",type:"metric",variant:"card"},{enabled:!0,id:"usage-trend",size:"3:2",type:"usage-trend",variant:"composed"},{enabled:!0,id:"token-activity",size:"4:2",type:"token-activity",variant:"heatmap"},{enabled:!0,id:"token-mix",size:"1:2",type:"token-mix",variant:"bars"},{enabled:!0,id:"client-analysis",size:"2:2",type:"client-analysis",variant:"table"},{enabled:!0,id:"provider-analysis",size:"2:2",type:"provider-analysis",variant:"table"}],wd=["source-tabs","header","account","token-flow","activity","stats","token-mix","rings","model-share","footer"],uE=["source-tabs","header"],lE=["source-tabs","header"],gE=[...wd],fE=[{id:"source-tabs",type:"source-tabs"},{id:"header",type:"header"},{id:"account",type:"account",variant:pe.account},{id:"token-flow",type:"token-flow",variant:pe.tokenFlow},{id:"activity",type:"activity"},{id:"stats",type:"stats",variant:pe.stats},{id:"token-mix",type:"token-mix",variant:pe.tokenMix},{id:"rings",type:"rings",variant:pe.rings},{id:"model-share",type:"model-share",variant:pe.modelShare}];function pE(e){return e==="ccr"||e==="custom"?e:"global"}function AA(e){return e.enabled&&pE(e.scope)==="global"}function Rd(e,t){let n=new Map,r=typeof t=="number"?t:void 0,o=r!==void 0?e[r]:void 0;return r!==void 0&&o&&AA(o)&&n.set(o.agent,r),e.map((s,i)=>{if(!AA(s))return s;let A=n.get(s.agent);return A===void 0?(n.set(s.agent,i),s):A===i?s:{...s,enabled:!1}})}var hE=require("node:fs"),Hk=require("node:path");function Yk(e){let t=e.trim();if(!t)throw new Error("Base URL is required.");let n=new URL(uA(t));n.username="",n.password="",n.hash="",n.search="",n.pathname=Vk(n.pathname),n.pathname=jk(n.pathname);let r=ls(n),o=Jk(r),s=o,i=Zk(s)?EE([s,tN(s,"anthropic")]):[s],A=r,a=$k(A)?EE([A,eN(o,"v1")]):[A];return{anthropicBaseUrl:s,anthropicBaseUrlCandidates:i,geminiBaseUrl:zk(r,o),normalizedInputBaseUrl:r,openaiBaseUrl:A,openaiBaseUrlCandidates:a,raw:t,rootBaseUrl:o}}function gs(e,t){let n=e.trim();if(!n)return"";try{let r=Yk(n);return t?Wk(r,t):r.normalizedInputBaseUrl}catch{return nN(n,t)}}function Wk(e,t){return t==="openai_responses"||t==="openai_chat_completions"?e.openaiBaseUrl:t==="anthropic_messages"?e.anthropicBaseUrl:e.geminiBaseUrl}function uA(e){return/^[a-z][a-z0-9+.-]*:\/\//i.test(e)?e:/^(localhost|127\.|0\.0\.0\.0|\[::1\])/i.test(e)?`http://${e}`:`https://${e}`}function ls(e){let t=e.toString();return t.endsWith("/")?t.slice(0,-1):t}function Vk(e){let t=e.replace(/\/+$/,"")||"/",n=[[/\/v1\/chat\/completions$/i,"/v1"],[/\/chat\/completions$/i,""],[/\/v1\/responses$/i,"/v1"],[/\/responses$/i,""],[/\/v1\/messages$/i,"/v1"],[/\/messages$/i,""],[/\/v1beta\/models\/[^/]+:(generateContent|streamGenerateContent)$/i,"/v1beta"],[/\/v1\/models\/[^/]+:(generateContent|streamGenerateContent)$/i,"/v1"],[/\/v1beta\/interactions(?:\/[^/]+(?:\/cancel)?)?$/i,"/v1beta"],[/\/v1\/interactions(?:\/[^/]+(?:\/cancel)?)?$/i,"/v1"],[/\/interactions(?:\/[^/]+(?:\/cancel)?)?$/i,""],[/\/v1beta\/models$/i,"/v1beta"],[/\/v1\/models$/i,"/v1"],[/\/models$/i,""]];for(let[r,o]of n)if(r.test(t))return t.replace(r,o)||"/";return t}function Jk(e){let t=new URL(e);return t.pathname=t.pathname.replace(/\/(v1|v1beta)$/i,"")||"/",ls(t)}function zk(e,t){return Kk(e)||Xk(e)?e:t}function Kk(e){try{let n=new URL(e).pathname.split("/").map(r=>r.trim().toLowerCase()).filter(Boolean);return n.includes("bypass")&&n.includes("vertex")&&/^(v1|v1beta)$/.test(n[n.length-1]??"")}catch{return!1}}function Xk(e){try{let n=new URL(e).pathname.split("/").map(r=>r.trim().toLowerCase()).filter(Boolean);return n.length>1&&/^(v1|v1beta)$/.test(n[n.length-1]??"")}catch{return!1}}function jk(e){return e.replace(/(\/v[0-9][a-z0-9-]*)\/v1$/i,"$1")||"/"}function $k(e){let n=new URL(e).pathname.replace(/\/+$/,"");return!/\/v[0-9][a-z0-9-]*$/i.test(n)}function Zk(e){return!new URL(e).pathname.split("/").map(r=>r.trim().toLowerCase()).filter(Boolean).includes("anthropic")}function eN(e,t){let n=new URL(e),r=n.pathname.replace(/\/+$/,"");return new RegExp(`/${t}$`,"i").test(r)||(n.pathname=`${r}/${t}`.replace(/\/{2,}/g,"/")),ls(n)}function tN(e,t){let n=new URL(e),r=n.pathname.replace(/\/+$/,"");return n.pathname=`${r}/${t}`.replace(/\/{2,}/g,"/"),ls(n)}function EE(e){return e.filter((t,n)=>e.indexOf(t)===n)}function nN(e,t){let n=e.trim().replace(/[?#].*$/,"").replace(/\/+$/,"");return t==="openai_chat_completions"?n.replace(/\/chat\/completions$/i,"").replace(/\/responses$/i,""):t==="openai_responses"?n.replace(/\/responses$/i,"").replace(/\/chat\/completions$/i,""):t==="anthropic_messages"?n.replace(/\/v1\/messages$/i,"").replace(/\/messages$/i,"").replace(/\/v1$/i,""):t==="gemini_generate_content"||t==="gemini_interactions"?n.replace(/\/v1beta\/models\/[^/]+:(generateContent|streamGenerateContent)$/i,"").replace(/\/v1\/models\/[^/]+:(generateContent|streamGenerateContent)$/i,"").replace(/\/v1beta\/interactions(?:\/[^/]+(?:\/cancel)?)?$/i,"").replace(/\/v1\/interactions(?:\/[^/]+(?:\/cancel)?)?$/i,"").replace(/\/interactions(?:\/[^/]+(?:\/cancel)?)?$/i,"").replace(/\/v1beta\/models$/i,"").replace(/\/v1\/models$/i,"").replace(/\/v1beta$/i,"").replace(/\/v1$/i,""):n}var se={connectors:[],enabled:!1},bd={connectors:[{auth:"provider-api-key",type:"standard"}],enabled:!0};var CE={account:se,aliases:["anthropic","claude"],defaultModels:["claude-sonnet-4-20250514"],endpoints:[{baseUrl:"https://api.anthropic.com",protocols:["anthropic_messages"]}],id:"anthropic",name:"Anthropic",officialApiKeyPatterns:[{flags:"i",source:"^sk-ant-[a-z0-9_-]+$"}],websiteUrl:"https://www.anthropic.com/"};var IE={account:se,aliases:["qwen","dashscope","bailian","alibaba"],endpoints:[{baseUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1",protocols:["openai_chat_completions"]}],id:"bailian",name:"Alibaba Bailian",websiteUrl:"https://bailian.console.aliyun.com/"};var BE={account:se,aliases:["claudeapi","claudeapi.com","www.claudeapi.com"],endpoints:[{baseUrl:"https://gw.claudeapi.com",protocols:["anthropic_messages"]}],id:"claudeapi",name:"claudeapi",websiteUrl:"https://console.claudeapi.com/agent/register/LbmB7Y9kPloyzhwF?utm_source=claudecoderouter&utm_medium=partner&utm_campaign=claudecoderouter_2026&utm_content=default"};var yE={account:se,aliases:["code0","code0.ai","code 0"],endpoints:[{baseUrl:"https://console.code0.ai",protocols:["anthropic_messages","openai_chat_completions","openai_responses"]}],id:"code0",name:"code0.ai",websiteUrl:"https://code0.ai/agent/register/9n9jOsSnYQoemIVL?utm_source=claudecoderouter&utm_medium=partner&utm_campaign=claudecoderouter_2026&utm_content=default"};var rN={connectors:[{auth:"provider-api-key",endpoint:"https://api.deepseek.com/user/balance",mapping:{meters:[{id:"balance",kind:"balance",label:"Balance",remaining:"$.balance_infos[0].total_balance",unit:"$.balance_infos[0].currency"},{id:"granted_balance",kind:"balance",label:"Granted balance",remaining:"$.balance_infos[0].granted_balance",unit:"$.balance_infos[0].currency"},{id:"topped_up_balance",kind:"balance",label:"Topped-up balance",remaining:"$.balance_infos[0].topped_up_balance",unit:"$.balance_infos[0].currency"}]},type:"http-json"}],enabled:!0},mE={account:rN,aliases:["deepseek"],endpoints:[{baseUrl:"https://api.deepseek.com",protocols:["openai_chat_completions"]}],id:"deepseek",name:"DeepSeek",websiteUrl:"https://www.deepseek.com/"};var QE={account:se,aliases:["fenno","fenno.ai","fenno ai"],endpoints:[{baseUrl:"https://api.fenno.ai",protocols:["openai_chat_completions","openai_responses","anthropic_messages"]}],id:"fenno",name:"Fenno.ai",websiteUrl:"https://api.fenno.ai/register?redirect=/purchase?tab=subscription%26group=16&aff=9HHHAB5QLAES"};var wE={account:se,aliases:["gemini","google"],endpoints:[{baseUrl:"https://generativelanguage.googleapis.com",protocols:["gemini_generate_content","gemini_interactions"]}],id:"gemini",name:"Google Gemini",officialApiKeyPatterns:[{flags:"i",source:"^AIza[a-z0-9_-]{20,}$"}],websiteUrl:"https://gemini.google.com/"};var RE={account:se,aliases:["infistar","infistar ai","\u65E0\u9650\u661F\u6CB3","\u65E0\u9650\u661F\u6CB3ai","\u65E0\u9650\u661F\u6CB3 ai"],defaultModels:["gpt-4o"],endpoints:[{baseUrl:"https://infistar.ai/v1",protocols:["openai_chat_completions"]}],id:"infistar-ai",name:"\u65E0\u9650\u661F\u6CB3",websiteUrl:"https://infistar.ai/register?aff=CCRCCR&ref_source=link"};var oN={connectors:[{auth:"provider-api-key",endpoint:"https://api.kimi.com/coding/v1/usages",mapping:{meters:[]},parser:"kimi-code-usages",type:"http-json"}],enabled:!0},bE={account:oN,aliases:["kimi code","kimi coding","kimi coding plan","kimi-for-coding"],defaultModelDisplayNames:{"kimi-for-coding":"K2.7 Code"},defaultModels:["kimi-for-coding"],endpoints:[{baseUrl:"https://api.kimi.com/coding/v1",protocols:["openai_chat_completions"],websiteUrl:"https://www.kimi.com/code?aff=ccr"},{baseUrl:"https://api.kimi.com/coding/",protocols:["anthropic_messages"],websiteUrl:"https://www.kimi.com/code?aff=ccr"}],id:"kimi-coding",name:"Kimi Code - Coding Plan",websiteUrl:"https://www.kimi.com/code?aff=ccr"};var SE={account:bd,aliases:["minimax","minimax global"],defaultModels:["MiniMax-M3"],endpoints:[{baseUrl:"https://api.minimax.io/v1",protocols:["openai_chat_completions"],websiteUrl:"https://platform.minimax.io/docs"},{baseUrl:"https://api.minimax.io/anthropic/v1",protocols:["anthropic_messages"],websiteUrl:"https://platform.minimax.io/docs"}],id:"minimax-global",name:"MiniMax (Global)",websiteUrl:"https://platform.minimax.io/docs"},DE={account:bd,aliases:["minimax","minimaxi","minimax china"],defaultModels:["MiniMax-M3"],endpoints:[{baseUrl:"https://api.minimaxi.com/v1",protocols:["openai_chat_completions"],websiteUrl:"https://platform.minimaxi.com/docs"},{baseUrl:"https://api.minimaxi.com/anthropic/v1",protocols:["anthropic_messages"],websiteUrl:"https://platform.minimaxi.com/docs"}],id:"minimax-cn",name:"MiniMax (China)",websiteUrl:"https://platform.minimaxi.com/docs"};var sN={connectors:[{auth:"provider-api-key",endpoint:"https://api.mistral.ai/v1/billing/subscription",mapping:{meters:[{id:"credit_balance",kind:"balance",label:"Credit balance",remaining:"$.credit_balance",unit:"EUR"},{id:"monthly_budget",kind:"quota",label:"Monthly budget",limit:"$.monthly_budget",unit:"EUR",window:"monthly"}]},type:"http-json"}],enabled:!0},TE={account:sN,aliases:["mistral"],endpoints:[{baseUrl:"https://api.mistral.ai/v1",protocols:["openai_chat_completions"]}],id:"mistral",name:"Mistral",websiteUrl:"https://mistral.ai/"};var iN={connectors:[{auth:"provider-api-key",endpoint:"https://api.moonshot.ai/v1/users/me/balance",mapping:{meters:[{id:"balance",kind:"balance",label:"Balance",remaining:"$.data.available_balance",unit:"CNY"},{id:"voucher_balance",kind:"balance",label:"Voucher balance",remaining:"$.data.voucher_balance",unit:"CNY"},{id:"cash_balance",kind:"balance",label:"Cash balance",remaining:"$.data.cash_balance",unit:"CNY"}]},type:"http-json"}],enabled:!0},AN={connectors:[{auth:"provider-api-key",endpoint:"https://api.moonshot.cn/v1/users/me/balance",mapping:{meters:[{id:"balance",kind:"balance",label:"Balance",remaining:"$.data.available_balance",unit:"CNY"},{id:"voucher_balance",kind:"balance",label:"Voucher balance",remaining:"$.data.voucher_balance",unit:"CNY"},{id:"cash_balance",kind:"balance",label:"Cash balance",remaining:"$.data.cash_balance",unit:"CNY"}]},type:"http-json"}],enabled:!0},kE={account:AN,aliases:["kimi","kimi api","moonshot","moonshot kimi"],defaultModels:["kimi-k2.7-code"],endpoints:[{baseUrl:"https://api.moonshot.cn/v1",protocols:["openai_chat_completions"],websiteUrl:"https://platform.kimi.com/?aff=ccr"}],id:"moonshot",name:"Kimi API (China)",websiteUrl:"https://platform.kimi.com/?aff=ccr"},NE={account:iN,aliases:["kimi","kimi api","moonshot","moonshot kimi"],defaultModels:["kimi-k2.7-code"],endpoints:[{baseUrl:"https://api.moonshot.ai/v1",protocols:["openai_chat_completions"],websiteUrl:"https://platform.kimi.ai/?aff=ccr"}],id:"moonshot-global",name:"Kimi API (Global)",websiteUrl:"https://platform.kimi.ai/?aff=ccr"};var ME={account:se,aliases:["nvidia","nvidia nim","nvidia api catalog","build.nvidia.com"],defaultModels:["nvidia/nemotron-3-super-120b-a12b","nvidia/nemotron-3-ultra-550b-a55b"],endpoints:[{baseUrl:"https://integrate.api.nvidia.com/v1",protocols:["openai_chat_completions"]}],id:"nvidia",name:"NVIDIA",officialApiKeyPatterns:[{flags:"i",source:"^nvapi-[a-z0-9_-]+$"}],websiteUrl:"https://build.nvidia.com/models"};var xE={account:se,aliases:["openai","chatgpt"],defaultModels:["gpt-4o"],endpoints:[{baseUrl:"https://api.openai.com/v1",protocols:["openai_responses","openai_chat_completions"]}],id:"openai",name:"OpenAI",officialApiKeyPatterns:[{flags:"i",source:"^sk-(?:proj|svcacct)-[a-z0-9_-]+$"}],websiteUrl:"https://openai.com/"};var aN={connectors:[{auth:"provider-api-key",endpoint:"https://openrouter.ai/api/v1/credits",mapping:{meters:[{id:"balance",kind:"balance",label:"Balance",limit:"$.data.total_credits",used:"$.data.total_usage",unit:"USD"},{id:"total_credits",kind:"balance",label:"Total credits",limit:"$.data.total_credits",unit:"USD"},{id:"total_usage",kind:"balance",label:"Total usage",unit:"USD",used:"$.data.total_usage"}]},type:"http-json"}],enabled:!0},UE={account:aN,aliases:["openrouter"],endpoints:[{baseUrl:"https://openrouter.ai/api/v1",protocols:["openai_chat_completions","openai_responses"]}],id:"openrouter",name:"OpenRouter",officialApiKeyPatterns:[{flags:"i",source:"^sk-or-v1-[a-z0-9_-]+$"}],websiteUrl:"https://openrouter.ai/"};var LE={account:se,aliases:["qiniu","qiniu ai","qiniu cloud ai","qiniu yun ai","qiniu yun","\u4E03\u725B\u4E91","\u4E03\u725B\u4E91ai","\u4E03\u725B\u4E91 ai","modelink"],endpoints:[{baseUrl:"https://api.qnaigc.com",label:"China mainland OpenAI",protocols:["openai_chat_completions"],websiteUrl:"https://s.qiniu.com/AVjMVf"},{baseUrl:"https://api.qnaigc.com/bypass/openai/v1",label:"China mainland OpenAI Responses",protocols:["openai_responses"],websiteUrl:"https://s.qiniu.com/AVjMVf"},{baseUrl:"https://api.qnaigc.com",label:"China mainland Anthropic",protocols:["anthropic_messages"],websiteUrl:"https://s.qiniu.com/AVjMVf"},{baseUrl:"https://api.qnaigc.com/bypass/vertex/v1",label:"China mainland Gemini Generate",protocols:["gemini_generate_content"],websiteUrl:"https://s.qiniu.com/AVjMVf"}],id:"qiniu-ai",name:"\u4E03\u725B\u4E91 AI",websiteUrl:"https://s.qiniu.com/AVjMVf"};var FE={account:se,aliases:["runapi"],endpoints:[{baseUrl:"https://runapi.co/v1",protocols:["openai_responses","openai_chat_completions"]}],id:"runapi",name:"RunAPI",websiteUrl:"https://runapi.co/register?aff=IX1t"};var cN={connectors:[{auth:"provider-api-key",endpoint:"https://api.siliconflow.cn/v1/user/info",mapping:{meters:[{id:"balance",kind:"balance",label:"Balance",remaining:"$.data.totalBalance",unit:"CNY"},{id:"current_balance",kind:"balance",label:"Current balance",remaining:"$.data.balance",unit:"CNY"},{id:"charge_balance",kind:"balance",label:"Charge balance",remaining:"$.data.chargeBalance",unit:"CNY"}]},type:"http-json"}],enabled:!0},_E={account:cN,aliases:["siliconflow"],endpoints:[{baseUrl:"https://api.siliconflow.cn/v1",protocols:["openai_chat_completions"]}],id:"siliconflow",name:"SiliconFlow",websiteUrl:"https://siliconflow.cn/"};var PE={account:se,aliases:["teamorouter","teamo router","teamo"],endpoints:[{baseUrl:"https://api.teamorouter.com",protocols:["anthropic_messages","openai_chat_completions","openai_responses"]}],id:"teamorouter",name:"TeamoRouter",websiteUrl:"https://teamorouter.com/"};var vE={account:se,aliases:["unity2","unity2.ai","unity2 ai","unity 2"],endpoints:[{baseUrl:"https://unity2.ai/v1",protocols:["openai_chat_completions"]}],id:"unity2",name:"Unity2.Ai",websiteUrl:"https://unity2.ai/register?source=claudecoderouter"};var dN=["mimo-v2.5-pro","mimo-v2.5"],uN="https://platform.xiaomimimo.com/";function lA(e){return{account:se,aliases:e.aliases,defaultModels:dN,endpoints:[{baseUrl:e.openAiBaseUrl,label:"OpenAI",protocols:["openai_responses","openai_chat_completions"]},{baseUrl:e.anthropicBaseUrl,label:"Anthropic",protocols:["anthropic_messages"]}],id:e.id,name:e.name,websiteUrl:uN}}var OE=lA({aliases:["mimo","xiaomi","xiaomi mimo","\u5C0F\u7C73","\u5C0F\u7C73 mimo"],anthropicBaseUrl:"https://api.xiaomimimo.com/anthropic",id:"xiaomi",name:"Xiaomi MiMo",openAiBaseUrl:"https://api.xiaomimimo.com/v1"}),qE=lA({aliases:["mimo token plan china","xiaomi token plan china","xiaomi token plan cn"],anthropicBaseUrl:"https://token-plan-cn.xiaomimimo.com/anthropic",id:"xiaomi-token-plan-cn",name:"Xiaomi Token Plan (China)",openAiBaseUrl:"https://token-plan-cn.xiaomimimo.com/v1"}),GE=lA({aliases:["mimo token plan singapore","xiaomi token plan singapore","xiaomi token plan sgp"],anthropicBaseUrl:"https://token-plan-sgp.xiaomimimo.com/anthropic",id:"xiaomi-token-plan-sgp",name:"Xiaomi Token Plan (Singapore)",openAiBaseUrl:"https://token-plan-sgp.xiaomimimo.com/v1"}),HE=lA({aliases:["mimo token plan europe","xiaomi token plan ams","xiaomi token plan europe"],anthropicBaseUrl:"https://token-plan-ams.xiaomimimo.com/anthropic",id:"xiaomi-token-plan-ams",name:"Xiaomi Token Plan (Europe)",openAiBaseUrl:"https://token-plan-ams.xiaomimimo.com/v1"});var lN={meters:[{id:"five_hour_quota",kind:"quota",label:"5h quota",limit:100,remaining:'100 - $.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==3)].percentage',resetAt:'$.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==3)].nextResetTime',unit:"%",used:'$.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==3)].percentage',window:"5h"},{id:"weekly_quota",kind:"quota",label:"Weekly quota",limit:100,remaining:'100 - $.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==6)].percentage',resetAt:'$.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==6)].nextResetTime',unit:"%",used:'$.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==6)].percentage',window:"weekly"}]},gN={connectors:[{auth:"provider-api-key-raw",endpoint:"https://api.z.ai/api/monitor/usage/quota/limit",headers:{"Accept-Language":"en-US,en"},mapping:lN,type:"http-json"}],enabled:!0},YE={account:gN,aliases:["z.ai","zai","z ai","z-ai","glm global"],defaultModels:["glm-5.2","glm-5.1","glm-4.7","glm-4.5-air"],endpoints:[{baseUrl:"https://api.z.ai/api/coding/paas/v4",protocols:["openai_chat_completions"]},{baseUrl:"https://api.z.ai/api/anthropic",protocols:["anthropic_messages"]}],id:"zai-global-coding",name:"Z.ai (Global) - Coding Plan",websiteUrl:"https://z.ai/"};var fN={meters:[{id:"five_hour_quota",kind:"quota",label:"5h quota",limit:100,remaining:'100 - $.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==3)].percentage',resetAt:'$.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==3)].nextResetTime',unit:"%",used:'$.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==3)].percentage',window:"5h"},{id:"weekly_quota",kind:"quota",label:"Weekly quota",limit:100,remaining:'100 - $.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==6)].percentage',resetAt:'$.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==6)].nextResetTime',unit:"%",used:'$.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==6)].percentage',window:"weekly"}]},pN={connectors:[{auth:"provider-api-key-raw",endpoint:"https://api.z.ai/api/monitor/usage/quota/limit",headers:{"Accept-Language":"en-US,en"},mapping:fN,type:"http-json"}],enabled:!0},WE={account:pN,aliases:["z.ai","zai","z ai","z-ai","glm global"],defaultModels:["glm-5.2","glm-5.1","glm-4.7","glm-4.5-air"],endpoints:[{baseUrl:"https://api.z.ai/api/paas/v4",protocols:["openai_chat_completions"]}],id:"zai-global-general",name:"Z.ai (Global) - General Endpoint",websiteUrl:"https://z.ai/"};var hN={meters:[{id:"five_hour_quota",kind:"quota",label:"5h quota",limit:100,remaining:'100 - $.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==3)].percentage',resetAt:'$.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==3)].nextResetTime',unit:"%",used:'$.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==3)].percentage',window:"5h"},{id:"weekly_quota",kind:"quota",label:"Weekly quota",limit:100,remaining:'100 - $.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==6)].percentage',resetAt:'$.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==6)].nextResetTime',unit:"%",used:'$.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==6)].percentage',window:"weekly"}]},EN={connectors:[{auth:"provider-api-key-raw",endpoint:"https://open.bigmodel.cn/api/monitor/usage/quota/limit",headers:{"Accept-Language":"en-US,en"},mapping:hN,type:"http-json"}],enabled:!0},VE={account:EN,aliases:["zhipu","bigmodel","glm","\u667A\u8C31","\u667A\u8C31ai","\u667A\u8C31\u6E05\u8A00"],defaultModels:["glm-5.2","glm-5.1","glm-4.7","glm-4.5-air"],endpoints:[{baseUrl:"https://open.bigmodel.cn/api/coding/paas/v4",protocols:["openai_chat_completions"]},{baseUrl:"https://open.bigmodel.cn/api/anthropic",protocols:["anthropic_messages"]}],id:"zhipu-cn-coding",name:"Zhipu AI (China) - Coding Plan",websiteUrl:"https://www.bigmodel.cn/"};var CN={meters:[{id:"five_hour_quota",kind:"quota",label:"5h quota",limit:100,remaining:'100 - $.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==3)].percentage',resetAt:'$.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==3)].nextResetTime',unit:"%",used:'$.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==3)].percentage',window:"5h"},{id:"weekly_quota",kind:"quota",label:"Weekly quota",limit:100,remaining:'100 - $.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==6)].percentage',resetAt:'$.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==6)].nextResetTime',unit:"%",used:'$.data.limits[?(@.type=="TOKENS_LIMIT" && @.unit==6)].percentage',window:"weekly"}]},IN={connectors:[{auth:"provider-api-key-raw",endpoint:"https://open.bigmodel.cn/api/monitor/usage/quota/limit",headers:{"Accept-Language":"en-US,en"},mapping:CN,type:"http-json"}],enabled:!0},JE={account:IN,aliases:["zhipu","bigmodel","glm","\u667A\u8C31","\u667A\u8C31ai","\u667A\u8C31\u6E05\u8A00"],defaultModels:["glm-5.2","glm-5.1","glm-4.7","glm-4.5-air"],endpoints:[{baseUrl:"https://open.bigmodel.cn/api/paas/v4",protocols:["openai_chat_completions"]}],id:"zhipu-cn-general",name:"Zhipu AI (China) - General Endpoint",websiteUrl:"https://www.bigmodel.cn/"};function XE(e,t){return e.find(n=>jE(n,t))}function Sd(e){return e.endpoints[0]}function jE(e,t){return e.endpoints.some(n=>BN(n.baseUrl,t))}function BN(e,t){let n=zE(e),r=zE(t);if(!n||!r||r.protocol!==n.protocol||r.host!==n.host)return!1;let o=KE(n.pathname),s=KE(r.pathname);return o==="/"||s==="/"||s===o||s.startsWith(`${o}/`)||o.startsWith(`${s}/`)}function zE(e){try{return new URL(uA(e.trim()))}catch{return}}function KE(e){return e.replace(/\/+$/,"")||"/"}var yN=[xE,CE,wE,UE,ME,mE,OE,qE,GE,HE,bE,VE,JE,YE,WE,SE,DE,TE,kE,NE,IE,_E,LE,QE,RE,FE,PE,vE,yE,BE];function gA(e){return XE(yN,e)}var RN=require("node:crypto");function SN(e){return e.trim().replace(/\[1m\]$/i,"").trim()}function fA(e){let t=SN(e).toLowerCase(),r=/^anthropic\/claude-ccr(?:\d+)?-h([0-9a-f]+)$/.exec(t)?.[1];if(!(!r||r.length%2!==0))try{return Buffer.from(r,"hex").toString("utf8").trim()||void 0}catch{return}}var CD=Ue(PS());var Dc=require("node:crypto"),es=require("node:fs"),Ye=Ue(require("node:path"));var hc=require("node:crypto"),Qe=require("node:fs"),rr=require("node:path");var OS=require("node:module"),gp=Ue(require("better-sqlite3")),eV=(0,OS.createRequire)(__filename),gc,vS=!1;function bn(e,t={}){let n=tV();return n?new gp.default(e,{...t,nativeBinding:n}):new gp.default(e,t)}function tV(){if(vS)return gc;vS=!0;try{gc=eV.resolve("better-sqlite3/build/Release/better_sqlite3.node")}catch{gc=void 0}return gc}var fp="default",Ec="plain",qS=448,pp=384,GS="legacy-storage-backup-dedup-v1",HS="legacy-storage-cleanup-queue-v1",YS="unified-config-store-v1",nV=[rA,nA,Zi],hp=class{constructor(t,n={}){this.dbFile=t;this.removeFile=n.removeFile??(r=>(0,Qe.rmSync)(r,{force:!0}))}dbFile;database;initPromise;removeFile;async readAppConfig(){return this.readSetting(fp)}async readSetting(t){let n=await this.getDatabase(),r=or(n,"SELECT value_json FROM app_config WHERE key = ? LIMIT 1",[t])[0],o=et(r?.value_json);return o?JSON.parse(o):void 0}async replaceAppConfig(t){let n=await this.getDatabase();fc(n,fp,t),zr(this.dbFile)}async replaceSetting(t,n){let r=await this.getDatabase();fc(r,t,n),zr(this.dbFile)}async readRuntimeState(t){let n=await this.getDatabase(),r=or(n,"SELECT value_json FROM runtime_state WHERE key = ? LIMIT 1",[t])[0],o=et(r?.value_json);return o?JSON.parse(o):void 0}async replaceRuntimeState(t,n){let r=await this.getDatabase();jS(r,"runtime_state",t,n),zr(this.dbFile)}async deleteRuntimeState(t){(await this.getDatabase()).prepare("DELETE FROM runtime_state WHERE key = ?").run(t),zr(this.dbFile)}async listApiKeys(){let t=await this.getDatabase();return dV(t)}async replaceApiKeys(t){let n=Ep(t),r=await this.getDatabase();return $o(r,()=>VS(r,n)),zr(this.dbFile),n}async replaceConfigSnapshot(t,n){let r=Ep(n),o=await this.getDatabase();return $o(o,()=>{fc(o,fp,t),VS(o,r)}),zr(this.dbFile),r}async archiveLegacyJsonConfigFiles(t){let n=mi(t),r=n.filter(s=>!nV.some(i=>Ri(i,s)));if(r.length>0)throw new Error(`Refusing to archive unknown legacy JSON config file: ${r.join(", ")}`);if(n.length===0)return;let o=await this.getDatabase();iV(o,n,"legacy-json-config",this.removeFile)}async getDatabase(){return this.database?this.database:(this.initPromise??=this.open(),this.initPromise)}async open(){let t=(0,rr.dirname)(this.dbFile);(0,Qe.mkdirSync)(t,{mode:qS,recursive:!0}),pc(t,qS);let n=bn(this.dbFile);pV(n),rV(n);try{oV(n,this.removeFile),sV(n,this.removeFile),Qi(n,this.removeFile,"legacy-json-config")}catch(r){throw n.close(),r}return this.database=n,zr(this.dbFile),n}},wi=new hp(ds);async function JS(){return wi.readAppConfig()}async function Cp(){return wi.listApiKeys()}async function zS(e){return wi.replaceApiKeys(e)}async function KS(e,t){return wi.replaceConfigSnapshot(e,t)}async function XS(e){await wi.archiveLegacyJsonConfigFiles(e)}function rV(e){e.exec(`
|
|
132
|
+
CREATE TABLE IF NOT EXISTS app_config (
|
|
133
|
+
key TEXT PRIMARY KEY,
|
|
134
|
+
value_json TEXT NOT NULL,
|
|
135
|
+
updated_at TEXT NOT NULL
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
CREATE TABLE IF NOT EXISTS api_keys (
|
|
139
|
+
id TEXT PRIMARY KEY,
|
|
140
|
+
name TEXT NOT NULL DEFAULT '',
|
|
141
|
+
encrypted_key TEXT NOT NULL,
|
|
142
|
+
encryption TEXT NOT NULL DEFAULT '${Ec}',
|
|
143
|
+
created_at TEXT NOT NULL,
|
|
144
|
+
expires_at TEXT NOT NULL DEFAULT '',
|
|
145
|
+
limits_json TEXT NOT NULL DEFAULT ''
|
|
146
|
+
);
|
|
147
|
+
CREATE INDEX IF NOT EXISTS api_keys_created_at_idx ON api_keys(created_at);
|
|
148
|
+
|
|
149
|
+
CREATE TABLE IF NOT EXISTS config_schema_migrations (
|
|
150
|
+
id TEXT PRIMARY KEY,
|
|
151
|
+
applied_at TEXT NOT NULL,
|
|
152
|
+
details_json TEXT NOT NULL DEFAULT ''
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
CREATE TABLE IF NOT EXISTS runtime_state (
|
|
156
|
+
key TEXT PRIMARY KEY,
|
|
157
|
+
value_json TEXT NOT NULL,
|
|
158
|
+
updated_at TEXT NOT NULL
|
|
159
|
+
);
|
|
160
|
+
|
|
161
|
+
CREATE TABLE IF NOT EXISTS legacy_storage_backups (
|
|
162
|
+
id TEXT PRIMARY KEY,
|
|
163
|
+
source_path TEXT NOT NULL,
|
|
164
|
+
source_kind TEXT NOT NULL,
|
|
165
|
+
sha256 TEXT NOT NULL,
|
|
166
|
+
content BLOB NOT NULL,
|
|
167
|
+
archived_at TEXT NOT NULL
|
|
168
|
+
);
|
|
169
|
+
|
|
170
|
+
DELETE FROM legacy_storage_backups
|
|
171
|
+
WHERE NOT EXISTS (
|
|
172
|
+
SELECT 1
|
|
173
|
+
FROM config_schema_migrations
|
|
174
|
+
WHERE id = '${GS}'
|
|
175
|
+
)
|
|
176
|
+
AND rowid NOT IN (
|
|
177
|
+
SELECT MIN(rowid)
|
|
178
|
+
FROM legacy_storage_backups
|
|
179
|
+
GROUP BY source_path, source_kind, sha256
|
|
180
|
+
);
|
|
181
|
+
|
|
182
|
+
CREATE UNIQUE INDEX IF NOT EXISTS legacy_storage_backups_content_idx
|
|
183
|
+
ON legacy_storage_backups(source_kind, source_path, sha256);
|
|
184
|
+
|
|
185
|
+
INSERT OR IGNORE INTO config_schema_migrations (id, applied_at, details_json)
|
|
186
|
+
VALUES ('${GS}', '${new Date().toISOString()}', '');
|
|
187
|
+
|
|
188
|
+
CREATE TABLE IF NOT EXISTS legacy_storage_cleanup (
|
|
189
|
+
source_path TEXT PRIMARY KEY,
|
|
190
|
+
source_kind TEXT NOT NULL,
|
|
191
|
+
sha256 TEXT NOT NULL,
|
|
192
|
+
queued_at TEXT NOT NULL
|
|
193
|
+
);
|
|
194
|
+
|
|
195
|
+
INSERT OR IGNORE INTO legacy_storage_cleanup (
|
|
196
|
+
source_path,
|
|
197
|
+
source_kind,
|
|
198
|
+
sha256,
|
|
199
|
+
queued_at
|
|
200
|
+
)
|
|
201
|
+
SELECT
|
|
202
|
+
source_path,
|
|
203
|
+
source_kind,
|
|
204
|
+
sha256,
|
|
205
|
+
archived_at
|
|
206
|
+
FROM legacy_storage_backups
|
|
207
|
+
WHERE NOT EXISTS (
|
|
208
|
+
SELECT 1
|
|
209
|
+
FROM config_schema_migrations
|
|
210
|
+
WHERE id = '${HS}'
|
|
211
|
+
);
|
|
212
|
+
|
|
213
|
+
INSERT OR IGNORE INTO config_schema_migrations (id, applied_at, details_json)
|
|
214
|
+
VALUES ('${HS}', '${new Date().toISOString()}', '');
|
|
215
|
+
`)}function oV(e,t){let n=AV(),r=aV(),o=n.rows,s=r.rows,i=mi([...n.failedFiles,...r.failedFiles]),A=mi([...n.readableFiles,...r.readableFiles]).filter(l=>!i.some(u=>Ri(l,u))),a=Ip(A.flatMap(fV),"legacy-sqlite-config");$o(e,()=>{for(let l of o)e.prepare(`
|
|
216
|
+
INSERT INTO app_config (key, value_json, updated_at)
|
|
217
|
+
VALUES (?, ?, ?)
|
|
218
|
+
ON CONFLICT(key) DO NOTHING
|
|
219
|
+
`).run(l.key,l.valueJson,l.updatedAt);cV(e,s),Bp(e,a)});let c=Qi(e,t,"legacy-sqlite-config"),d=mi([...i,...c]);$o(e,()=>{if(d.length>0){e.prepare("DELETE FROM config_schema_migrations WHERE id = ?").run(YS);return}e.prepare(`
|
|
220
|
+
INSERT INTO config_schema_migrations (id, applied_at, details_json)
|
|
221
|
+
VALUES (?, ?, ?)
|
|
222
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
223
|
+
applied_at = excluded.applied_at,
|
|
224
|
+
details_json = excluded.details_json
|
|
225
|
+
`).run(YS,new Date().toISOString(),JSON.stringify({appConfigRows:o.length,apiKeyRows:s.length,archivedFiles:a.length}))}),d.length>0&&console.warn(`[config] Preserving legacy SQLite source${d.length===1?"":"s"} for a future migration retry: ${d.join(", ")}`)}function sV(e,t){if(!(0,Qe.existsSync)(oA)){Qi(e,t,"legacy-onboarding-state");return}let n=Ip([oA],"legacy-onboarding-state")[0];if(!n)return;let r=or(e,"SELECT key FROM app_config WHERE key = ? LIMIT 1",[Cd]).length>0;$o(e,()=>{if(!r){let o=(0,Qe.statSync)(oA).mtime.toISOString();fc(e,Cd,o)}Bp(e,[n])}),Qi(e,t,"legacy-onboarding-state")}function iV(e,t,n,r){let o=Ip(mi(t),n);o.length>0&&$o(e,()=>Bp(e,o)),Qi(e,r,n)}function Ip(e,t){return e.flatMap(n=>{if(!(0,Qe.existsSync)(n)||Ri(n,ds))return[];let r=(0,Qe.readFileSync)(n),o=(0,hc.createHash)("sha256").update(r).digest("hex");return[{content:r,id:(0,hc.createHash)("sha256").update(`${t}\0${(0,rr.resolve)(n)}\0${o}`).digest("hex"),sha256:o,sourceKind:t,sourcePath:(0,rr.resolve)(n)}]})}function Bp(e,t){let n=new Date().toISOString(),r=e.prepare(`
|
|
226
|
+
INSERT OR IGNORE INTO legacy_storage_backups (
|
|
227
|
+
id, source_path, source_kind, sha256, content, archived_at
|
|
228
|
+
) VALUES (?, ?, ?, ?, ?, ?)
|
|
229
|
+
`),o=e.prepare(`
|
|
230
|
+
INSERT INTO legacy_storage_cleanup (
|
|
231
|
+
source_path, source_kind, sha256, queued_at
|
|
232
|
+
) VALUES (?, ?, ?, ?)
|
|
233
|
+
ON CONFLICT(source_path) DO UPDATE SET
|
|
234
|
+
source_kind = excluded.source_kind,
|
|
235
|
+
sha256 = excluded.sha256,
|
|
236
|
+
queued_at = excluded.queued_at
|
|
237
|
+
`);for(let s of t)r.run(s.id,s.sourcePath,s.sourceKind,s.sha256,s.content,n),o.run(s.sourcePath,s.sourceKind,s.sha256,n)}function Qi(e,t,n){let r=or(e,`
|
|
238
|
+
SELECT source_path, sha256
|
|
239
|
+
FROM legacy_storage_cleanup
|
|
240
|
+
WHERE source_kind = ?
|
|
241
|
+
ORDER BY queued_at, source_path
|
|
242
|
+
`,[n]),o=[];for(let s of r){let i=et(s.source_path),A=et(s.sha256);if(!(!i||!A)){if(!(0,Qe.existsSync)(i)){WS(e,i);continue}try{let a=(0,hc.createHash)("sha256").update((0,Qe.readFileSync)(i)).digest("hex");if(a!==A){if(!or(e,`
|
|
243
|
+
SELECT id
|
|
244
|
+
FROM legacy_storage_backups
|
|
245
|
+
WHERE source_path = ? AND sha256 = ?
|
|
246
|
+
LIMIT 1
|
|
247
|
+
`,[i,a])[0]){o.push(i),console.warn(`[config] Preserving changed legacy config source for a future migration retry: ${i}`);continue}e.prepare(`
|
|
248
|
+
UPDATE legacy_storage_cleanup
|
|
249
|
+
SET sha256 = ?, queued_at = ?
|
|
250
|
+
WHERE source_path = ?
|
|
251
|
+
`).run(a,new Date().toISOString(),i)}if(t(i),(0,Qe.existsSync)(i))throw new Error("source still exists after cleanup");WS(e,i)}catch(a){o.push(i),console.warn(`[config] Failed to remove migrated config source ${i}: ${yp(a)}`)}}}return o}function WS(e,t){e.prepare("DELETE FROM legacy_storage_cleanup WHERE source_path = ?").run(t)}function AV(){let e={failedFiles:[],readableFiles:[],rows:[]};for(let t of eE){if(!(0,Qe.existsSync)(t)||Ri(t,ds))continue;let n;try{n=bn(t,{fileMustExist:!0,readonly:!0});let r=or(n,"SELECT key, value_json, updated_at FROM app_config");e.readableFiles.push(t),e.rows.push(...r.flatMap(o=>{let s=et(o.key),i=et(o.value_json);return!s||!i?[]:[{key:s,updatedAt:et(o.updated_at)||new Date(0).toISOString(),valueJson:i}]}))}catch(r){e.failedFiles.push(t),console.warn(`[config] Failed to read legacy app config database ${t}: ${yp(r)}`)}finally{n?.close()}}return e}function aV(){let e={failedFiles:[],readableFiles:[],rows:[]};for(let t of tE){if(!(0,Qe.existsSync)(t)||Ri(t,ds))continue;let n;try{n=bn(t,{fileMustExist:!0,readonly:!0});let r=or(n,`
|
|
252
|
+
SELECT id, name, encrypted_key, encryption, created_at, expires_at, limits_json
|
|
253
|
+
FROM api_keys
|
|
254
|
+
ORDER BY rowid
|
|
255
|
+
`);e.readableFiles.push(t),e.rows.push(...r)}catch(r){e.failedFiles.push(t),console.warn(`[config] Failed to read legacy API key database ${t}: ${yp(r)}`)}finally{n?.close()}}return e}function cV(e,t){let n=e.prepare(`
|
|
256
|
+
INSERT OR IGNORE INTO api_keys (
|
|
257
|
+
id, name, encrypted_key, encryption, created_at, expires_at, limits_json
|
|
258
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
259
|
+
`);for(let r of t){let o=$S(r);o&&n.run(o.id,o.name,o.storedKey,o.encryption,o.createdAt,o.expiresAt,o.limitsJson)}}function fc(e,t,n){jS(e,"app_config",t,n)}function jS(e,t,n,r){e.prepare(`
|
|
260
|
+
INSERT INTO ${t} (key, value_json, updated_at)
|
|
261
|
+
VALUES (?, ?, ?)
|
|
262
|
+
ON CONFLICT(key) DO UPDATE SET
|
|
263
|
+
value_json = excluded.value_json,
|
|
264
|
+
updated_at = excluded.updated_at
|
|
265
|
+
`).run(n,JSON.stringify(r),new Date().toISOString())}function dV(e){let t=or(e,`
|
|
266
|
+
SELECT id, name, encrypted_key, encryption, created_at, expires_at, limits_json
|
|
267
|
+
FROM api_keys
|
|
268
|
+
ORDER BY rowid
|
|
269
|
+
`);return Ep(t.map(uV))}function VS(e,t){let n=e.prepare(`
|
|
270
|
+
INSERT INTO api_keys (
|
|
271
|
+
id, name, encrypted_key, encryption, created_at, expires_at, limits_json
|
|
272
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
273
|
+
`);e.exec("DELETE FROM api_keys");for(let r of t)n.run(r.id,r.name??"",r.key,Ec,r.createdAt,r.expiresAt??"",r.limits?JSON.stringify(r.limits):"")}function uV(e){let t=$S(e);if(!t)return;if(t.encryption!==Ec){console.warn(`[api-keys] Stored API key uses unsupported storage "${t.encryption}". Re-save the API key to migrate it.`);return}let n=t.storedKey.trim();if(!n)return;let r=lV(t.limitsJson);return{createdAt:t.createdAt,...t.expiresAt?{expiresAt:t.expiresAt}:{},id:t.id,key:n,...r?{limits:r}:{},...t.name?{name:t.name}:{}}}function $S(e){let t=et(e.id),n=et(e.encrypted_key);if(!(!t||!n))return{createdAt:et(e.created_at)||new Date(0).toISOString(),encryption:et(e.encryption)||Ec,expiresAt:et(e.expires_at)||"",id:t,limitsJson:et(e.limits_json)||"",name:et(e.name)||"",storedKey:n}}function lV(e){if(e)try{let t=JSON.parse(e);if(!EV(t))return;let n={};for(let r of["ipd","iph","ipm","maxRequests","maxTokens","quotaWindowMs","rpd","rph","rpm","tpd","tph","tpm","windowMs"]){let o=hV(t[r]);o&&(n[r]=o)}return Object.keys(n).length?n:void 0}catch{return}}function Ep(e){let t=new Set,n=new Set,r=[];for(let[o,s]of e.entries()){let i=s?.key.trim();if(!s||!i||t.has(i))continue;t.add(i);let A=gV(s.id||`key-${o+1}`,n,o);r.push({createdAt:s.createdAt||new Date(0).toISOString(),...s.expiresAt?{expiresAt:s.expiresAt}:{},id:A,key:i,...s.limits?{limits:s.limits}:{},...s.name?{name:s.name}:{}})}return r}function gV(e,t,n){let r=e.trim()||`key-${n+1}`,o=r,s=2;for(;t.has(o);)o=`${r}-${s}`,s+=1;return t.add(o),o}function $o(e,t){try{e.exec("BEGIN IMMEDIATE"),t(),e.exec("COMMIT")}catch(n){try{e.exec("ROLLBACK")}catch{}throw n}}function fV(e){return[e,`${e}-wal`,`${e}-shm`]}function pV(e){e.pragma("journal_mode = WAL"),e.pragma("synchronous = NORMAL"),e.pragma("busy_timeout = 5000")}function or(e,t,n=[]){return e.prepare(t).all(...n)}function hV(e){let t=Number(e);return Number.isFinite(t)&&t>0?Math.ceil(t):void 0}function et(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function zr(e){pc(e,pp),pc(`${e}-wal`,pp),pc(`${e}-shm`,pp)}function pc(e,t){if(!(process.platform==="win32"||!(0,Qe.existsSync)(e)))try{(0,Qe.chmodSync)(e,t)}catch{}}function mi(e){let t=new Set;return e.filter(n=>{let r=(0,rr.resolve)(n).toLowerCase();return t.has(r)?!1:(t.add(r),!0)})}function Ri(e,t){return(0,rr.resolve)(e).toLowerCase()===(0,rr.resolve)(t).toLowerCase()}function EV(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function yp(e){return e instanceof Error?e.message:String(e)}var QV=Ue(require("node:os")),wV=Ue(require("node:path"));var Cc=require("node:fs");var Ic="ccr-local-agent-login";function Bc(e){if((0,Cc.existsSync)(e))try{let t=JSON.parse((0,Cc.readFileSync)(e,"utf8"));return Qc(t)?t:void 0}catch{return}}function yc(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function mc(e){let t=new Set,n=[];for(let r of e){let o=r?.trim();!o||t.has(o)||(t.add(o),n.push(o))}return n}function Qc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var RV="https://chatgpt.com/backend-api/codex",mp="https://chatgpt.com/backend-api";var bV=368e3,SV=256e3;var DV={meters:[{id:"codex_primary_quota",kind:"quota",label:"Primary quota",limit:100,remaining:["100 - $.rate_limit.primary_window.used_percent","100 - $.rate_limits.primary.used_percent"],resetAt:["$.rate_limit.primary_window.reset_at","$.rate_limit.primary_window.resets_at","$.rate_limits.primary.resets_at"],unit:"%",used:["$.rate_limit.primary_window.used_percent","$.rate_limits.primary.used_percent"],window:"primary"},{id:"codex_manual_resets",kind:"requests",label:"Manual resets",remaining:["$.resetsAvailable","$.availableRateLimitResetCount","$.rate_limit_reset_credits.available_count","$.rate_limit.resetsAvailable","$.rate_limits.resetsAvailable","$.rate_limit.manual_resets.remaining","$.rate_limit.manual_resets.resetsAvailable","$.rate_limit.manual_reset.remaining","$.rate_limit.manual_reset.resetsAvailable","$.rate_limits.manual_resets.remaining","$.rate_limits.manual_resets.resetsAvailable","$.rate_limits.manual_reset.remaining","$.rate_limits.manual_reset.resetsAvailable","$.manual_resets.remaining","$.manual_resets.resetsAvailable","$.manual_reset.remaining","$.manual_reset.resetsAvailable","$.resets.remaining","$.resets.resetsAvailable","$.rate_limit.manual_resets.available","$.rate_limit.manual_reset.available","$.rate_limit.resets.available","$.rate_limits.resets.available","$.manual_resets.available","$.manual_reset.available","$.resets.available",0],resetAt:["$.resetExpires","$.expires_at","$.resets_at","$.rate_limit.manual_resets.expires_at","$.rate_limit.manual_resets.expire_at","$.rate_limit.manual_resets.reset_at","$.rate_limit.manual_resets.resets_at","$.rate_limit.manual_reset.expires_at","$.rate_limit.manual_reset.expire_at","$.rate_limit.manual_reset.reset_at","$.rate_limit.manual_reset.resets_at","$.rate_limits.manual_resets.expires_at","$.rate_limits.manual_resets.expire_at","$.rate_limits.manual_resets.reset_at","$.rate_limits.manual_resets.resets_at","$.rate_limits.manual_reset.expires_at","$.rate_limits.manual_reset.expire_at","$.rate_limits.manual_reset.reset_at","$.rate_limits.manual_reset.resets_at","$.rate_limit.resets.expires_at","$.rate_limit.resets.expire_at","$.rate_limit.resets.reset_at","$.rate_limit.resets.resets_at","$.rate_limits.resets.expires_at","$.rate_limits.resets.expire_at","$.rate_limits.resets.reset_at","$.rate_limits.resets.resets_at","$.manual_resets.expires_at","$.manual_resets.expire_at","$.manual_resets.reset_at","$.manual_resets.resets_at","$.manual_reset.expires_at","$.manual_reset.expire_at","$.manual_reset.reset_at","$.manual_reset.resets_at","$.resets.expires_at","$.resets.expire_at","$.resets.reset_at","$.resets.resets_at"],unit:"resets",used:["$.rate_limit.manual_resets.used","$.rate_limit.manual_reset.used","$.rate_limits.manual_resets.used","$.manual_resets.used","$.manual_reset.used","$.resets.used"],window:"manual-reset"},{id:"codex_secondary_quota",kind:"quota",label:"Secondary quota",limit:100,remaining:["100 - $.rate_limit.secondary_window.used_percent","100 - $.rate_limits.secondary.used_percent"],resetAt:["$.rate_limit.secondary_window.reset_at","$.rate_limit.secondary_window.resets_at","$.rate_limits.secondary.resets_at"],unit:"%",used:["$.rate_limit.secondary_window.used_percent","$.rate_limits.secondary.used_percent"],window:"secondary"},{id:"codex_individual_limit",kind:"quota",label:"Individual limit",limit:"$.spend_control.individual_limit.limit",remaining:"$.spend_control.individual_limit.remaining",resetAt:"$.spend_control.individual_limit.reset_at",unit:"credits",used:"$.spend_control.individual_limit.used",window:"monthly"},{id:"codex_credit_balance",kind:"balance",label:"Credit balance",remaining:"$.credits.balance",unit:"credits"}]},TV={meters:[{id:"codex_manual_resets",kind:"requests",label:"Manual resets",remaining:["$.available_count","$.rate_limit_reset_credits.available_count",0],resetAt:["$.expires_at","$.expiresAt","$.reset_at","$.resetAt"],unit:"resets",window:"manual-reset"}]},kV={meters:[{id:"codex_lifetime_tokens",kind:"tokens",label:"Lifetime tokens",unit:"tokens",used:"$.stats.lifetime_tokens"},{id:"codex_peak_daily_tokens",kind:"tokens",label:"Peak daily tokens",unit:"tokens",used:"$.stats.peak_daily_tokens",window:"daily"}]};function NV(){return{connectors:[{auth:"provider-api-key",endpoint:`${mp}/wham/usage`,headers:{"User-Agent":"codex-cli"},mapping:DV,type:"http-json"},{auth:"provider-api-key",endpoint:`${mp}/wham/rate-limit-reset-credits`,headers:{"User-Agent":"codex-cli"},mapping:TV,type:"http-json"},{auth:"provider-api-key",endpoint:`${mp}/wham/profiles/me`,headers:{"User-Agent":"codex-cli"},mapping:kV,type:"http-json"}],enabled:!0}}function r0(e){let t=MV(e);if(!o0(t)||!xV(t.account))return t;let n=NV();return{...t,account:{...n,refreshIntervalMs:t.account?.refreshIntervalMs??n.refreshIntervalMs}}}function MV(e){if(!o0(e))return e;let t=_V(e.modelMetadata,e.models??[]);return t===e.modelMetadata?e:{...e,modelMetadata:t}}function o0(e){return FV(e)===Ic&&gs(LV(e))===gs(RV)}function xV(e){if(e?.enabled===!1)return!1;let t=e?.connectors??[];return t.length===0?!0:t.every(UV)}function UV(e){return e.type==="standard"?!e.endpoint?.trim()&&!e.endpoints?.length&&!e.headers&&!e.id:e.type!=="http-json"?!1:/^https:\/\/chatgpt\.com\/backend-api\/wham\//i.test(e.endpoint.trim())}function LV(e){return e.api_base_url||e.baseUrl||e.baseurl||""}function FV(e){return e.api_key||e.apiKey||e.apikey||""}function _V(e,t){let n={...e??{}},r=!1;for(let o of t){let s=PV(o);s&&(n[o]={...n[o]??{},contextWindow:s,maxContextWindow:s},r=!0)}return r?n:e}function PV(e){let t=e.trim().toLowerCase().split("/").at(-1)??"";if(/^gpt-5\.6(?:[.-]|$)/.test(t))return bV;if(/^gpt-5(?:[.-]|$)/.test(t))return SV}var Qp=require("node:fs"),s0=Ue(require("node:os")),wp=Ue(require("node:path"));var OV="https://cli-chat-proxy.grok.com/v1",qV="https://cli-chat-proxy.grok.com/v1/billing?format=credits",GV="https://cli-chat-proxy.grok.com/v1/user?include=subscription";var HV="0.2.93";var bi=["$.billingPeriodEnd","$.currentPeriod.end","$.currentPeriod.billingPeriodEnd","$.config.billingPeriodEnd","$.config.currentPeriod.end","$.end"],YV={meters:[{id:"grok_credit_usage_percent",kind:"quota",label:"Credit usage",limit:100,remaining:["100 - $.creditUsagePercent","100 - $.config.creditUsagePercent","100 - $.config.creditUsagePercent.val"],resetAt:bi,unit:"%",used:["$.creditUsagePercent","$.config.creditUsagePercent","$.config.creditUsagePercent.val"],window:"monthly"},{id:"grok_included_credits",kind:"quota",label:"Included credits",limit:["$.monthlyLimit","$.monthlyLimit.val","$.currentPeriod.monthlyLimit","$.currentPeriod.monthlyLimit.val","$.config.monthlyLimit","$.config.monthlyLimit.val","$.config.currentPeriod.monthlyLimit","$.config.currentPeriod.monthlyLimit.val"],resetAt:bi,unit:"credits",used:["$.includedUsed","$.includedUsed.val","$.currentPeriod.includedUsed","$.currentPeriod.includedUsed.val","$.config.includedUsed","$.config.includedUsed.val","$.config.currentPeriod.includedUsed","$.config.currentPeriod.includedUsed.val"],window:"monthly"},{id:"grok_total_credits",kind:"quota",label:"Total credits",limit:["$.monthlyLimit","$.monthlyLimit.val","$.currentPeriod.monthlyLimit","$.currentPeriod.monthlyLimit.val","$.config.monthlyLimit","$.config.monthlyLimit.val","$.config.currentPeriod.monthlyLimit","$.config.currentPeriod.monthlyLimit.val"],resetAt:bi,unit:"credits",used:["$.totalUsed","$.totalUsed.val","$.currentPeriod.totalUsed","$.currentPeriod.totalUsed.val","$.config.totalUsed","$.config.totalUsed.val","$.config.currentPeriod.totalUsed","$.config.currentPeriod.totalUsed.val"],window:"monthly"},{id:"grok_pay_as_you_go_cap",kind:"quota",label:"Pay-as-you-go cap",limit:["$.onDemandCap","$.onDemandCap.val","$.currentPeriod.onDemandCap","$.currentPeriod.onDemandCap.val","$.config.onDemandCap","$.config.onDemandCap.val","$.config.currentPeriod.onDemandCap","$.config.currentPeriod.onDemandCap.val"],resetAt:bi,unit:"credits",used:["$.onDemandUsed","$.onDemandUsed.val","$.currentPeriod.onDemandUsed","$.currentPeriod.onDemandUsed.val","$.config.onDemandUsed","$.config.onDemandUsed.val","$.config.currentPeriod.onDemandUsed","$.config.currentPeriod.onDemandUsed.val"],window:"monthly"},{id:"grok_prepaid_balance",kind:"balance",label:"Prepaid balance",remaining:["$.prepaidBalance","$.prepaidBalance.val","$.currentPeriod.prepaidBalance","$.currentPeriod.prepaidBalance.val","$.config.prepaidBalance","$.config.prepaidBalance.val","$.config.currentPeriod.prepaidBalance","$.config.currentPeriod.prepaidBalance.val"],resetAt:bi,unit:"credits",window:"monthly"}]};function WV(){let e=XV();return{connectors:[{auth:"provider-api-key",endpoint:$V(),headers:{"x-grok-client-identifier":"xai-grok-cli","x-grok-client-version":e},mapping:YV,type:"http-json"},{auth:"provider-api-key",endpoint:ZV(),headers:{"x-grok-client-identifier":"xai-grok-cli","x-grok-client-version":e},mapping:{meters:[]},parser:"grok-subscription",type:"http-json"}],enabled:!0}}function i0(e){if(!a0(e)||!JV(e.account))return e;let t=WV();return{...e,account:{...t,refreshIntervalMs:e.account?.refreshIntervalMs??t.refreshIntervalMs}}}function A0(e){if(!a0(e))return e;let t=(e.capabilities??[]).map(o=>o.type==="openai_video_generations"&&VV(o.baseUrl)?{...o,type:"xai_video_generations"}:o),n=o=>{t.some(s=>s.type===o.type)||t.push(o)},r=c0(e)||OV;return n({baseUrl:r,source:"preset",type:"openai_responses"}),n({baseUrl:us,endpoint:`${us}/images/generations`,source:"preset",type:"openai_image_generations"}),n({baseUrl:us,endpoint:`${us}/videos/generations`,source:"preset",type:"xai_video_generations"}),{...e,capabilities:t,models:mc([...e.models,rE,oE])}}function VV(e){try{return/(?:^|\.)api\.x\.ai$/i.test(new URL(e).hostname)}catch{return!1}}function a0(e){if(KV(e)!==Ic)return!1;let t=gs(c0(e)).toLowerCase(),n=e.name?.toLowerCase()??"";return t.includes("cli-chat-proxy.grok.com")||n.includes("grok")}function JV(e){if(e?.enabled===!1)return!1;let t=e?.connectors??[];return t.length===0?!0:t.every(zV)}function zV(e){return e.type==="standard"?!e.endpoint?.trim()&&!e.endpoints?.length&&!e.headers&&!e.id:e.type!=="http-json"?!1:/^https:\/\/grok\.com\/(?:billing|user)(?:$|[?#/])/i.test(e.endpoint.trim())||/^https:\/\/cli-chat-proxy\.grok\.com\/v1\/(?:billing|user)(?:$|[?#/])/i.test(e.endpoint.trim())}function c0(e){return e.api_base_url||e.baseurl||e.baseUrl||""}function KV(e){return e.api_key||e.apiKey||e.apikey||""}function XV(){let e=process.env.GROK_CLI_VERSION?.trim();if(e)return e;let t=Bc(wp.default.join(jV(),"version.json"));return yc(t?.version)||HV}function jV(){let e=process.env.GROK_HOME?.trim()||process.env.GROK_STORAGE_DIR?.trim()||process.env.GROK_CONFIG_DIR?.trim();if(e)return e;let t=process.env.CCR_INTERNAL_HOME_DIR?.trim()||process.env.HOME?.trim()||process.env.USERPROFILE?.trim()||s0.default.homedir();return wp.default.join(t,".grok")}function $V(){return process.env.GROK_BILLING_ENDPOINT?.trim()||qV}function ZV(){return process.env.GROK_SUBSCRIPTION_ENDPOINT?.trim()||GV}var u0=require("node:fs"),eJ=Ue(require("node:os")),tJ=Ue(require("node:path"));function l0(e){let t=e.account;if(!t?.connectors?.some(d0))return e;let n=t.connectors.filter(r=>!d0(r));return{...e,account:n.length>0?{...t,connectors:n}:void 0}}function d0(e){if(e.type!=="local-estimate")return!1;let t=new Set(e.windows.map(n=>n.id));return t.has("opencode_monthly_spend")&&t.has("opencode_monthly_tokens")&&t.has("opencode_monthly_requests")}var l8=Number.MAX_SAFE_INTEGER;function Rc(e){let t=e??52428800;return Number.isFinite(t)?Math.max(0,Math.min(52428800,Math.floor(t))):52428800}var nJ=[{host:"api.anthropic.com",paths:["/v1/messages","/v1/messages/count_tokens"]},{host:"api.openai.com",paths:["/v1/chat/completions","/v1/responses","/v1/models"]},{host:"generativelanguage.googleapis.com",paths:["/v1beta/models","/v1/models"]},{host:"openrouter.ai",paths:["/api/v1/chat/completions","/api/v1/responses","/api/v1/models"]},{host:"api.deepseek.com",paths:["/chat/completions","/v1/chat/completions","/models","/v1/models"]},{host:"api.mistral.ai",paths:["/v1/chat/completions","/v1/models"]}];function g0(e={}){let t=e.coreHost??"127.0.0.1";return{APIKEY:"",APIKEYS:[],API_TIMEOUT_MS:6e5,CUSTOM_ROUTER_PATH:"",HOST:"127.0.0.1",PORT:3456,Providers:[],Router:{builtInRules:{"claude-code":{enabled:!0},codex:{enabled:!0}},fallback:{mode:"off",models:[],retryCount:1},rules:[]},agent:{mcpServers:[]},autoStart:!1,botConfigs:[],botGateway:{acknowledgeEvents:!1,args:[],authType:"",autoStartIntegration:!0,command:"",createIntegration:!1,credentials:{},cwd:"",enabled:!1,forwardAllAgentMessages:!0,handoff:{enabled:!1,idleSeconds:30,phoneBluetoothTargets:[],phoneWifiTargets:[],screenLock:!0,userIdle:!0},integrationConfig:{},integrationId:"",language:"auto",maxAttachmentBytes:20*1024*1024,maxTurnTimeMs:600*1e3,mediaEnabled:!0,messageChunkChars:3500,platform:"none",pollIntervalMs:2e3,requestTimeoutMs:6e5,sessionIdleMinutes:0,shellEnabled:!1,sourceDir:"",startupTimeoutMs:1e4,stateDir:"",streamReplies:!0,tenantId:"ccr"},contextArchive:{enabled:!1,maxBytes:512*1024*1024,maxSnapshotBytes:32*1024*1024,maxSnapshots:200,mcpEnabled:!0,replayTimeoutMs:6e4,retentionDays:30,storagePath:"",toolName:"ccr_history_ask"},gateway:{coreHost:t,corePort:3457,enabled:!0,host:"127.0.0.1",port:3456},mediaTools:{allowedInputRoots:[],artifactTtlHours:24,enabled:!1,jobTimeoutMs:6e5,maxImageConcurrency:2,maxVideoConcurrency:1},launchAtLogin:!1,observability:{agentAnalysis:!1,requestLogBodyCapture:"all",requestLogMaxBodyBytes:52428800,requestLogSuccessSampleRate:1,requestLogs:!1},preferredProvider:"",plugins:[],profile:{claudeCode:{enabled:!0,fableModel:"",haikuModel:"",managedCompact:!1,model:"",opusModel:"",settingsFile:"~/.claude/settings.json",sonnetModel:"",smallFastModel:""},codex:{cliMiddleware:!0,codexCliPath:"",codexHome:"",configFormat:"separate_profile_files",configFile:"~/.codex/config.toml",enabled:!0,managedCompact:!1,model:"",providerId:"claude-code-router",providerName:"Claude Code Router",showAllSessions:!1},enabled:!0,profiles:[{agent:"claude-code",enabled:!0,env:{...dA},fableModel:"",haikuModel:"",id:"default-claude-code",managedCompact:!1,model:"",name:"Claude Code",opusModel:"",scope:"global",settingsFile:"~/.claude/settings.json",sonnetModel:"",smallFastModel:"",surface:"auto"},{agent:"codex",cliMiddleware:!0,codexCliPath:"",codexHome:"",configFormat:"separate_profile_files",configFile:"~/.codex/config.toml",enabled:!0,env:{},id:"default-codex",managedCompact:!1,model:"",name:"Codex",providerId:"claude-code-router",providerName:"Claude Code Router",showAllSessions:!1,scope:"global",surface:"auto"}]},proxy:{browserMode:!0,captureNetwork:!1,enabled:!1,host:"127.0.0.1",mode:"gateway",port:7890,systemProxy:!1,targets:nJ,upstream:{custom:{password:"",port:7890,server:"",username:""},mode:"system"}},providerPlugins:[],overviewWidgets:dE,routerEndpoint:"http://127.0.0.1:3456",theme:"system",trayComponentVariants:pe,trayIcon:"random",trayProgressTargetTokens:1e5,trayWidgets:fE,trayWindowModules:gE,toolHub:{browserAutomation:!1,enabled:!1,llm:{apiKey:"",baseUrl:"https://api.openai.com/v1",model:""},mcpServers:[],maxTools:10,requestTimeoutMs:6e4},virtualModelProfiles:[]}}var rJ="CCR_DESKTOP_APP";function f0(){return process.env[rJ]==="1"&&!!process.versions.electron}var oJ=new Set(["legacy-subagent","legacy-background","legacy-thinking","legacy-web-search","legacy-image"]),Mp="127.0.0.1",sJ="local-gateway",iJ=new Set(Bd),H=g0({coreHost:Mp});function xp(e){let t=AJ(e?.platform??H.botGateway.platform);return{...H.botGateway,...e??{},authType:aJ(t,e?.authType??H.botGateway.authType),credentials:D0(e?.credentials??H.botGateway.credentials),handoff:{...H.botGateway.handoff,...e?.handoff??{}},integrationConfig:dJ(t,e?.integrationConfig??H.botGateway.integrationConfig),platform:t}}function AJ(e){let t=typeof e=="string"?e.trim().toLowerCase():"";return!t||t==="off"||t==="disabled"?"none":t==="lark"?"feishu":t==="dingding"?"dingtalk":["wechat","weixin","wx","weixin-ilink","weixin_ilink","ilink"].includes(t)?"weixin-ilink":["wecom","wework","wechat-work","work-weixin","enterprise-wechat"].includes(t)?"wecom":t}function aJ(e,t){let n=typeof t=="string"?t.trim().toLowerCase().replace(/-/g,"_"):"";return!e||e==="none"?"":!n||n==="default"||n==="auto"||n==="webhook"||n==="webhook_secret"||n==="outgoing_webhook"?cJ(e):n==="appsecret"?"app_secret":n==="bottoken"||n==="token"?"bot_token":n==="oauth"||n==="oauth_2"?"oauth2":["qr","qr_login","qrcode","qr_code"].includes(n)?"qr_login":n}function cJ(e){return e==="weixin-ilink"?"qr_login":e==="feishu"||e==="dingtalk"||e==="wecom"?"app_secret":e==="slack"||e==="discord"||e==="telegram"||e==="line"?"bot_token":e==="imessage"?"local":""}function dJ(e,t){let n=D0(t);delete n.transport,delete n.sendMode;let r=uJ(e);return r?{...n,transport:r}:n}function uJ(e){return!e||e==="none"?"":e==="slack"?"socket":"websocket"}function D0(e){let t={};if(!T(e))return t;for(let[n,r]of Object.entries(e))!n.trim()||lJ(n)||(t[n]=r);return t}function lJ(e){let t=e.trim().toLowerCase().replace(/[_-]+/g,"");return t.includes("webhook")||t==="sendmode"}async function Up(){try{let e=await EJ(),t=e.value,n=BK(t,e.source),r=yJ(n),o=r.Providers??H.Providers,s=r.PORT??yK(r.routerEndpoint)??H.PORT,i=r.HOST??H.HOST,A=r.routerEndpoint??`http://${QK(i)}:${s}`,a=r.gateway??{},c=a.corePort??mK(s),d=EK(r.APIKEYS,r.APIKEY).filter(Q=>!Sp(Q)),l=(await Cp()).filter(Q=>!Sp(Q)),u=Op([...l,...d]),g=S0(u),h=xz(r.plugins??H.plugins),E=gJ({...H,...r,APIKEY:g[0]?.key??"",APIKEYS:g,HOST:i,PORT:s,Providers:o,Router:{...H.Router,...r.Router},agent:{...H.agent,...r.agent??{},mcpServers:r.agent?.mcpServers??H.agent.mcpServers},botConfigs:r.botConfigs??H.botConfigs,botGateway:xp(r.botGateway),contextArchive:{enabled:r.contextArchive?.enabled??H.contextArchive.enabled,maxBytes:r.contextArchive?.maxBytes??H.contextArchive.maxBytes,maxSnapshotBytes:r.contextArchive?.maxSnapshotBytes??H.contextArchive.maxSnapshotBytes,maxSnapshots:r.contextArchive?.maxSnapshots??H.contextArchive.maxSnapshots,mcpEnabled:r.contextArchive?.mcpEnabled??H.contextArchive.mcpEnabled,replayTimeoutMs:r.contextArchive?.replayTimeoutMs??H.contextArchive.replayTimeoutMs,retentionDays:r.contextArchive?.retentionDays??H.contextArchive.retentionDays,storagePath:r.contextArchive?.storagePath??H.contextArchive.storagePath,toolName:r.contextArchive?.toolName??H.contextArchive.toolName},gateway:{...H.gateway,...a,coreHost:Mp,corePort:c,host:a.host??i,port:a.port??s},mediaTools:{...H.mediaTools,...r.mediaTools??{},allowedInputRoots:r.mediaTools?.allowedInputRoots??H.mediaTools.allowedInputRoots},observability:{...H.observability,...r.observability??{}},plugins:h.plugins,preferredProvider:r.preferredProvider||o[0]?.name||H.preferredProvider,profile:{...H.profile,...r.profile??{},claudeCode:{...H.profile.claudeCode,...r.profile?.claudeCode??{}},codex:{...H.profile.codex,...r.profile?.codex??{},cliMiddleware:!0},profiles:r.profile?.profiles??H.profile.profiles},proxy:{...H.proxy,...r.proxy??{},targets:r.proxy?.targets?.length?r.proxy.targets:H.proxy.targets},routerEndpoint:A,toolHub:{...H.toolHub,...r.toolHub??{},llm:{...H.toolHub.llm,...r.toolHub?.llm??{}},mcpServers:r.toolHub?.mcpServers??H.toolHub.mcpServers}}),B=u.length===0||IK(t)||d.length>0,C=hJ(n.Providers),y=h.changed;return(e.source!=="sqlite"||B||C||y)&&await KS(IJ(E),g),e.source==="legacy-json"&&e.legacyJsonFile&&await XS([e.legacyJsonFile]).catch(Q=>{console.warn(`[config] Failed to archive legacy JSON config: ${Di(Q)}`)}),E}catch(e){console.warn(`[config] Failed to load config: ${Di(e)}`);let t=await Cp().catch(r=>(console.warn(`[config] Failed to load API keys: ${Di(r)}`),[])),n=S0(t.filter(r=>!Sp(r)));return t.length===0&&await zS(n).catch(r=>{console.warn(`[config] Failed to persist generated API key: ${Di(r)}`)}),{...H,APIKEY:n[0]?.key??"",APIKEYS:n}}}var N8=Promise.resolve();function gJ(e){let t=Rd(e.profile.profiles);return{...e,Providers:e.Providers.map(k0),profile:T0({...e.profile,profiles:t})}}function T0(e){let t=Rd(e.profiles),n=e.enabled!==!1&&t.some(s=>s.enabled),r=n?p0(t,"claude-code"):void 0,o=n?p0(t,"codex"):void 0;return{...e,enabled:n,claudeCode:fJ(e.claudeCode,r),codex:pJ(e.codex,o),profiles:t}}function p0(e,t){return e.find(n=>n.agent===t&&AA(n))}function fJ(e,t){return t?{...e,enabled:!0,fableModel:t.fableModel??e.fableModel,haikuModel:t.haikuModel??e.haikuModel,managedCompact:t.managedCompact??e.managedCompact,model:t.model,opusModel:t.opusModel??e.opusModel,settingsFile:t.settingsFile??e.settingsFile,sonnetModel:t.sonnetModel??e.sonnetModel,smallFastModel:t.smallFastModel??e.smallFastModel}:{...e,enabled:!1}}function pJ(e,t){return t?{...e,cliMiddleware:t.cliMiddleware??e.cliMiddleware,codexCliPath:t.codexCliPath??e.codexCliPath,codexHome:t.codexHome??e.codexHome,configFormat:t.configFormat??e.configFormat,configFile:t.configFile??e.configFile,enabled:!0,managedCompact:t.managedCompact??e.managedCompact,model:t.model,providerId:t.providerId??e.providerId,providerName:t.providerName??e.providerName,showAllSessions:t.showAllSessions??e.showAllSessions}:{...e,enabled:!1}}function k0(e){let t=gA(Dp(e));if(t?.id!=="nvidia")return e;let n=e.capabilities?.find(o=>o.type==="openai_chat_completions"),r=Sd(t)?.baseUrl??Dp(e);return{...e,capabilities:[{baseUrl:n?.baseUrl||r,endpoint:n?.endpoint,source:n?.source??"preset",type:"openai_chat_completions"}]}}function hJ(e){return Array.isArray(e)?e.some(t=>{if(!T(t))return!1;let n=p(t.api_base_url)||p(t.baseUrl)||p(t.baseurl);return!n||gA(n)?.id!=="nvidia"||!Array.isArray(t.capabilities)?!1:t.capabilities.some(r=>{if(!T(r))return!1;let o=Lp(p(r.type)||p(r.protocol));return!!(o&&o!=="openai_chat_completions")})}):!1}function Dp(e){return e.api_base_url||e.baseUrl||e.baseurl||""}async function EJ(){let e=await JS();if(T(e))return{source:"sqlite",value:e};let t=CJ();return t?{legacyJsonFile:t.file,source:"legacy-json",value:t.value}:{source:"default",value:{}}}function CJ(){let e=rn([rA,nA,Zi]);for(let t of e)if((0,es.existsSync)(t))try{let n=JSON.parse((0,es.readFileSync)(t,"utf8"));if(T(n))return{file:t,value:n};console.warn(`[config] Ignoring legacy config with non-object root: ${t}`)}catch(n){console.warn(`[config] Failed to read legacy config ${t}: ${Di(n)}`)}}function IJ(e){return{...e,APIKEY:"",APIKEYS:[],gateway:{...e.gateway,coreHost:Mp},Providers:x0(e.Providers),profile:BJ(e.profile)}}function BJ(e){let t=T0(e),{remoteFrontendMode:n,...r}=t.codex;return{...t,codex:r,profiles:t.profiles.map(o=>{if(o.agent!=="codex"&&o.agent!=="opencode"&&o.agent!=="kilo"&&o.agent!=="workbuddy"&&o.agent!=="zcode")return o;let{coreMode:s,frontendMode:i,remoteFrontendMode:A,...a}=o;return a})}}function yJ(e){let t={},n=Zo(e.PORT);n&&(t.PORT=n),typeof e.HOST=="string"&&e.HOST.trim()&&(t.HOST=e.HOST.trim()),typeof e.APIKEY=="string"&&(t.APIKEY=e.APIKEY);let r=pK(e.APIKEYS??e.apiKeys);r&&(t.APIKEYS=r),(typeof e.API_TIMEOUT_MS=="string"||typeof e.API_TIMEOUT_MS=="number")&&(t.API_TIMEOUT_MS=e.API_TIMEOUT_MS),typeof e.CUSTOM_ROUTER_PATH=="string"&&(t.CUSTOM_ROUTER_PATH=e.CUSTOM_ROUTER_PATH.trim());let o=$J(e.Providers??e.providers);o&&(t.Providers=o),Array.isArray(e.providerPlugins)&&(t.providerPlugins=e.providerPlugins);let s=e.virtualModelProfiles;Array.isArray(s)&&(t.virtualModelProfiles=s.map(QJ));let i=Nz(e.plugins??e.gatewayPlugins);i&&(t.plugins=i);let A=uz(e.Router);A&&(t.Router=A);let a=Qz(e.agent??e.Agent,e.mcpServers);a&&(t.agent=a);let c=Fp(e.botGateway??e.bot_gateway??e.bot);c&&(t.botGateway=c);let d=wz(e.botConfigs??e.bot_configs);d&&(t.botConfigs=d);let l=mJ(e.contextArchive??e.context_archive);l&&(t.contextArchive=l),typeof e.autoStart=="boolean"&&(t.autoStart=e.autoStart);let u=e.launchAtLogin;if(typeof u=="boolean"&&(t.launchAtLogin=u),T(e.gateway)){let V=e.gateway,ee={};typeof V.enabled=="boolean"&&(ee.enabled=V.enabled),typeof V.host=="string"&&V.host.trim()&&(ee.host=V.host.trim());let te=Zo(V.port);te&&(ee.port=te);let ue=Zo(V.corePort);ue&&(ee.corePort=ue),t.gateway=ee}let g=sK(e.profile);g&&(t.profile=g);let h=Dz(e.proxy);h&&(t.proxy=h);let E=wJ(e.observability);E&&(t.observability=E);let B=bJ(e.mediaTools??e.media_tools??e.grokMedia??e.grok_media);B&&(t.mediaTools=B);let C=RJ(e.toolHub??e.tool_hub);C&&(t.toolHub=C),typeof e.preferredProvider=="string"&&e.preferredProvider.trim()&&(t.preferredProvider=e.preferredProvider.trim()),typeof e.routerEndpoint=="string"&&e.routerEndpoint.trim()&&(t.routerEndpoint=e.routerEndpoint.trim()),(e.theme==="system"||e.theme==="light"||e.theme==="dark")&&(t.theme=e.theme);let y=OJ(e.trayIcon);y&&(t.trayIcon=y);let Q=qJ(e.trayBalanceProgress);Q?t.trayBalanceProgress=Q:t.trayIcon==="progress"&&(t.trayIcon="random");let b=X(e.trayProgressTargetTokens);b&&b>0&&(t.trayProgressTargetTokens=fe(b,1e3,1e9));let k=jJ(e.trayComponentVariants);k&&(t.trayComponentVariants=k);let x=k??pe,N=GJ(e.trayWindowModules);N!==void 0&&(t.trayWindowModules=N);let M=HJ(e.trayWidgets);M!==void 0?t.trayWidgets=M:N!==void 0&&(t.trayWidgets=XJ(N,x));let U=SJ(e.overviewWidgets);return U!==void 0&&(t.overviewWidgets=U),t}function mJ(e){if(!T(e))return;let t={};typeof e.enabled=="boolean"&&(t.enabled=e.enabled);let n=e.mcpEnabled??e.mcp_enabled;typeof n=="boolean"&&(t.mcpEnabled=n);let r=X(e.maxBytes??e.max_bytes);r!==void 0&&(t.maxBytes=fe(r,1024*1024,64*1024*1024*1024));let o=X(e.maxSnapshotBytes??e.max_snapshot_bytes);o!==void 0&&(t.maxSnapshotBytes=fe(o,64*1024,1024*1024*1024));let s=X(e.maxSnapshots??e.max_snapshots);s!==void 0&&(t.maxSnapshots=fe(s,1,1e5));let i=X(e.replayTimeoutMs??e.replay_timeout_ms);i!==void 0&&(t.replayTimeoutMs=fe(i,1e3,6e5));let A=X(e.retentionDays??e.retention_days);A!==void 0&&(t.retentionDays=fe(A,1,3650));let a=p(e.storagePath??e.storage_path);a!==void 0&&(t.storagePath=a);let c=p(e.toolName??e.tool_name);return c!==void 0&&(t.toolName=c),Object.keys(t).length?t:void 0}function QJ(e){if(!T(e)||!T(e.execution)||!("maxTurns"in e.execution)&&!("maxToolCalls"in e.execution))return e;let{maxToolCalls:t,maxTurns:n,...r}=e.execution;return{...e,execution:r}}function wJ(e){if(!T(e))return;let t={};return typeof e.requestLogs=="boolean"&&(t.requestLogs=e.requestLogs),typeof e.agentAnalysis=="boolean"&&(t.agentAnalysis=e.agentAnalysis),(e.requestLogBodyCapture==="all"||e.requestLogBodyCapture==="errors"||e.requestLogBodyCapture==="none")&&(t.requestLogBodyCapture=e.requestLogBodyCapture),typeof e.requestLogMaxBodyBytes=="number"&&Number.isFinite(e.requestLogMaxBodyBytes)&&(t.requestLogMaxBodyBytes=Math.max(0,Math.min(52428800,Math.floor(e.requestLogMaxBodyBytes)))),typeof e.requestLogSuccessSampleRate=="number"&&Number.isFinite(e.requestLogSuccessSampleRate)&&(t.requestLogSuccessSampleRate=Math.max(0,Math.min(1,e.requestLogSuccessSampleRate))),Object.keys(t).length?t:void 0}function RJ(e){if(!T(e))return;let t={};typeof e.enabled=="boolean"&&(t.enabled=e.enabled);let n=e.browserAutomation??e.browser_automation;typeof n=="boolean"&&(t.browserAutomation=n);let r=X(e.maxTools??e.max_tools);r!==void 0&&(t.maxTools=fe(r,1,20));let o=X(e.requestTimeoutMs??e.request_timeout_ms);o!==void 0&&(t.requestTimeoutMs=fe(o,8e3,3e5));let s=_0(e.mcpServers??e.mcp_servers);s&&(t.mcpServers=s);let i=T(e.llm)?e.llm:e,A={},a=p(i.apiKey)||p(i.api_key);a!==void 0&&(A.apiKey=a);let c=p(i.baseUrl)||p(i.base_url);c!==void 0&&(A.baseUrl=c);let d=p(i.model);return d!==void 0&&(A.model=d),Object.keys(A).length>0&&(t.llm=A),Object.keys(t).length?t:void 0}function bJ(e){if(!T(e))return;let t={};typeof e.enabled=="boolean"&&(t.enabled=e.enabled);let n=e.allowedInputRoots??e.allowed_input_roots;Array.isArray(n)&&(t.allowedInputRoots=n.filter(A=>typeof A=="string"&&!!A.trim()).map(A=>A.trim()));let r=X(e.artifactTtlHours??e.artifact_ttl_hours);r!==void 0&&(t.artifactTtlHours=fe(r,1,720));let o=X(e.jobTimeoutMs??e.job_timeout_ms);o!==void 0&&(t.jobTimeoutMs=fe(o,3e4,36e5));let s=X(e.maxImageConcurrency??e.max_image_concurrency);s!==void 0&&(t.maxImageConcurrency=fe(s,1,8));let i=X(e.maxVideoConcurrency??e.max_video_concurrency);return i!==void 0&&(t.maxVideoConcurrency=fe(i,1,4)),Object.keys(t).length?t:void 0}function SJ(e){return Array.isArray(e)?e.map(DJ).filter(n=>!!n):void 0}function DJ(e){if(!T(e))return;let t=xJ(e.type);if(!t)return;let n=t==="metric"?FJ(e.metric)??"requests":void 0,r=t==="account-balance"?TJ(e):[],o=t==="account-balance"?kJ(e.accountCardOrder):[],s=t==="account-balance"?NJ(e.accountCardSizes):void 0;return{...o.length>0?{accountCardOrder:o}:{},...s?{accountCardSizes:s}:{},...r.length===1?{accountProvider:r[0]}:{},...r.length>0?{accountProviders:r}:{},enabled:typeof e.enabled=="boolean"?e.enabled:!0,id:p(e.id)||vJ(t,n),...n?{metric:n}:{},size:UJ(e.size,t)??_J(t),type:t,variant:LJ(e.variant)??PJ(t)}}function TJ(e){let t=p(e.accountProvider);return rn([...sr(e.accountProviders),...t?[t]:[]])}function kJ(e){return rn(sr(e))}function NJ(e){if(!T(e))return;let t={};for(let[n,r]of Object.entries(e)){let o=n.trim(),s=MJ(r);o&&s&&(t[o]=s)}return Object.keys(t).length>0?t:void 0}function MJ(e){return e==="small"?"1:1":e==="large"?"1:2":Pe(e,["1:1","1:2","2:1","2:2"],void 0)}function xJ(e){return Pe(e,["account-balance","client-analysis","metric","model-distribution","provider-analysis","share-fuel-cockpit","share-model-leaderboard","share-route-map","share-spend-receipt","share-token-calendar","share-usage-wrapped","system-status","token-activity","token-mix","usage-trend"],void 0)}function UJ(e,t){let n=Pe(e,cE,void 0);if(n)return n;if(e==="small")return"1:1";if(e==="medium"||e==="large")return"2:2";if(e==="wide")return"3:2";if(e==="full")return t==="system-status"?"4:1":"4:2"}function LJ(e){return Pe(e,["arc","area","bar","bars","card","cards","compact","composed","donut","heatmap","line","nested-rings","pie","ring","semicircle","stacked","table","timeline"],void 0)}function FJ(e){return Pe(e,["avg-latency","cache-ratio","cache-tokens","errors","estimated-cost","input-tokens","output-tokens","requests","success-rate","total-tokens"],void 0)}function _J(e){return e==="metric"?"1:1":e==="model-distribution"?"2:2":e==="token-mix"?"1:2":e==="token-activity"?"4:2":e==="client-analysis"||e==="provider-analysis"?"2:2":e==="usage-trend"?"3:2":e==="system-status"?"4:1":N0(e)?"1:4":"4:2"}function PJ(e){return e==="account-balance"?"cards":e==="metric"?"card":e==="model-distribution"?"pie":e==="token-mix"?"bars":e==="token-activity"?"heatmap":e==="usage-trend"?"composed":e==="system-status"?"timeline":N0(e)?"card":"table"}function vJ(e,t){return e==="metric"?`metric-${t??"requests"}`:e}function N0(e){return e==="share-fuel-cockpit"||e==="share-model-leaderboard"||e==="share-route-map"||e==="share-spend-receipt"||e==="share-token-calendar"||e==="share-usage-wrapped"}function OJ(e){if(e==="random"||e==="violet"||e==="orange"||e==="cyan"||e==="progress")return e}function qJ(e){if(!T(e))return;let t=p(e.provider),n=p(e.meterId);return t&&n?{meterId:n,provider:t}:void 0}function GJ(e){if(!Array.isArray(e))return;let t=new Set(wd);return rn(e.map(n=>p(n)).filter(n=>!!n)).filter(n=>t.has(n))}function HJ(e){if(Array.isArray(e))return M0(KJ(e.map(YJ).filter(t=>!!t)))}function YJ(e){if(!T(e))return;let t=WJ(e.type);if(!t)return;let n=VJ(t,e.variant);return{id:p(e.id)||t,type:t,...n?{variant:n}:{}}}function WJ(e){return Pe(e,["account","activity","header","model-share","rings","source-tabs","stats","token-flow","token-mix"],void 0)}function VJ(e,t){let n=JJ(e);return n===void 0?Pe(t,h0(e),void 0):Pe(t,h0(e),n)}function h0(e){return e==="account"?["bar","compact","ring","arc","stacked"]:e==="model-share"?["bars","list","donut","pie"]:e==="rings"?["rings","arcs","gauges"]:e==="stats"?["cards","compact","pills"]:e==="token-flow"?["line","area","bar","sparkline"]:e==="token-mix"?["bars","stacked","donut","pie"]:[]}function JJ(e){if(e==="account")return pe.account;if(e==="model-share")return pe.modelShare;if(e==="rings")return pe.rings;if(e==="stats")return pe.stats;if(e==="token-flow")return pe.tokenFlow;if(e==="token-mix")return pe.tokenMix}function zJ(e){return uE.includes(e)}function E0(e){return lE.includes(e)}function M0(e){return[...e.filter(t=>E0(t.type)),...e.filter(t=>!E0(t.type))]}function KJ(e){let t=new Set;return e.filter(n=>zJ(n.type)?t.has(n.type)?!1:(t.add(n.type),!0):!0)}function XJ(e,t){return M0(e.filter(n=>n!=="footer").map(n=>({id:n,type:n,...n==="account"?{variant:t.account}:{},...n==="model-share"?{variant:t.modelShare}:{},...n==="rings"?{variant:t.rings}:{},...n==="stats"?{variant:t.stats}:{},...n==="token-flow"?{variant:t.tokenFlow}:{},...n==="token-mix"?{variant:t.tokenMix}:{}})))}function jJ(e){if(T(e))return{account:Pe(e.account,["bar","compact","ring","arc","stacked"],pe.account),modelShare:Pe(e.modelShare,["bars","list","donut","pie"],pe.modelShare),rings:Pe(e.rings,["rings","arcs","gauges"],pe.rings),stats:Pe(e.stats,["cards","compact","pills"],pe.stats),tokenFlow:Pe(e.tokenFlow,["line","area","bar","sparkline"],pe.tokenFlow),tokenMix:Pe(e.tokenMix,["bars","stacked","donut","pie"],pe.tokenMix)}}function Pe(e,t,n){return typeof e=="string"&&t.includes(e)?e:n}function $J(e){if(!Array.isArray(e))return;let t=e.map(n=>{if(!T(n))return;let r=p(n.name),o=Array.isArray(n.models)?n.models.map(c=>p(c)).filter(c=>!!c):[],s=ZJ(n.modelDescriptions??n.model_descriptions,o),i=ez(n.modelDisplayNames??n.model_display_names,o),A=tz(n.modelMetadata??n.model_metadata,o);if(!r)return;let a={account:U0(n.account),api_base_url:p(n.api_base_url),api_key:p(n.api_key),apiKey:p(n.apiKey),apikey:p(n.apikey),baseUrl:p(n.baseUrl),baseurl:p(n.baseurl),billing:n.billing,capabilities:cz(n.capabilities)??dz(n),credentials:az(n.credentials??n.keys??n.apiKeys),extraBody:n.extraBody,extraHeaders:n.extraHeaders,icon:p(n.icon),id:p(n.id),enabled:n.enabled===!1?!1:void 0,autoFetchModels:Tp(n.autoFetchModels??n.auto_fetch_models??n.autoRefreshModels??n.auto_refresh_models),autoFetchKnownModels:bc(n.autoFetchKnownModels??n.auto_fetch_known_models??n.autoRefreshKnownModels??n.auto_refresh_known_models),modelDescriptions:s,modelDisplayNames:i,modelMetadata:A,models:o,name:r,provider:p(n.provider),protocolDetectionMode:Pe(n.protocolDetectionMode,["auto","manual"],void 0),transformer:n.transformer,type:p(n.type)};return l0(k0(A0(i0(r0(a)))))}).filter(n=>!!n);return x0(t)}function ZJ(e,t){if(!T(e))return;let n=new Set(t),r=Object.entries(e).map(([o,s])=>[o.trim(),p(s)]).filter(o=>{let[s,i]=o;return!!(s&&i&&n.has(s))});return r.length>0?Object.fromEntries(r):void 0}function ez(e,t){if(!T(e))return;let n=new Set(t),r=Object.entries(e).map(([o,s])=>[o.trim(),p(s)]).filter(o=>{let[s,i]=o;return!!(s&&i&&n.has(s)&&s!==i)});return r.length>0?Object.fromEntries(r):void 0}function tz(e,t){if(!T(e))return;let n=new Set(t),r=Object.entries(e).map(([o,s])=>[o.trim(),nz(s)]).filter(o=>{let[s,i]=o;return!!(s&&i&&n.has(s))});return r.length>0?Object.fromEntries(r):void 0}function nz(e){if(!T(e))return;let t=iz(e.supportedReasoningLevels??e.supported_reasoning_levels),n=oz(e.capabilities),r=Kr(e.contextWindow??e.context_window),o=wK(e.effectiveContextWindowPercent??e.effective_context_window_percent),s=Kr(e.maxContextWindow??e.max_context_window),i=Kr(e.maxOutputTokens??e.max_output_tokens??e.outputTokens??e.output_tokens),A=rz(e.openRouterDiscountRouting??e.open_router_discount_routing),a=sz(e.pricing),c={...Array.isArray(e.additionalSpeedTiers)?{additionalSpeedTiers:e.additionalSpeedTiers}:{},...Array.isArray(e.additional_speed_tiers)?{additionalSpeedTiers:e.additional_speed_tiers}:{},...n?{capabilities:n}:{},...r?{contextWindow:r}:{},...e.defaultReasoningLevel===null?{defaultReasoningLevel:null}:{},...p(e.defaultReasoningLevel)?{defaultReasoningLevel:p(e.defaultReasoningLevel)}:{},...e.default_reasoning_level===null?{defaultReasoningLevel:null}:{},...p(e.default_reasoning_level)?{defaultReasoningLevel:p(e.default_reasoning_level)}:{},...p(e.defaultReasoningSummary)?{defaultReasoningSummary:p(e.defaultReasoningSummary)}:{},...p(e.default_reasoning_summary)?{defaultReasoningSummary:p(e.default_reasoning_summary)}:{},...o?{effectiveContextWindowPercent:o}:{},...s?{maxContextWindow:s}:{},...i?{maxOutputTokens:i}:{},...A?{openRouterDiscountRouting:A}:{},...a?{pricing:a}:{},...Array.isArray(e.serviceTiers)?{serviceTiers:e.serviceTiers}:{},...Array.isArray(e.service_tiers)?{serviceTiers:e.service_tiers}:{},...typeof e.supportsFastMode=="boolean"?{supportsFastMode:e.supportsFastMode}:{},...typeof e.supports_fast_mode=="boolean"?{supportsFastMode:e.supports_fast_mode}:{},...t?{supportedReasoningLevels:t}:{},...typeof e.supportsReasoningSummaries=="boolean"?{supportsReasoningSummaries:e.supportsReasoningSummaries}:{},...typeof e.supports_reasoning_summaries=="boolean"?{supportsReasoningSummaries:e.supports_reasoning_summaries}:{}};return Object.keys(c).length>0?c:void 0}function rz(e){if(e===!0)return{enabled:!0};if(e===!1||!T(e))return;let t=sr(e.providerBlacklist??e.provider_blacklist??e.ignoredProviders??e.ignored_providers??e.ignore),n={...typeof e.allowFallbacks=="boolean"?{allowFallbacks:e.allowFallbacks}:{},...typeof e.allow_fallbacks=="boolean"?{allowFallbacks:e.allow_fallbacks}:{},...Pt(e.cacheHitRate??e.cache_hit_rate)!==void 0?{cacheHitRate:Pt(e.cacheHitRate??e.cache_hit_rate)}:{},...typeof e.enabled=="boolean"?{enabled:e.enabled}:{},...Kr(e.endpointTtlMs??e.endpoint_ttl_ms??e.priceTtlMs??e.price_ttl_ms)?{endpointTtlMs:Kr(e.endpointTtlMs??e.endpoint_ttl_ms??e.priceTtlMs??e.price_ttl_ms)}:{},...Kr(e.minOutputTokens??e.min_output_tokens)?{minOutputTokens:Kr(e.minOutputTokens??e.min_output_tokens)}:{},...Pt(e.minSavingsRatio??e.min_savings_ratio)!==void 0?{minSavingsRatio:Pt(e.minSavingsRatio??e.min_savings_ratio)}:{},...Pt(e.minSavingsUsd??e.min_savings_usd)!==void 0?{minSavingsUsd:Pt(e.minSavingsUsd??e.min_savings_usd)}:{},...Pt(e.minUptime5m??e.min_uptime_5m)!==void 0?{minUptime5m:Pt(e.minUptime5m??e.min_uptime_5m)}:{},...Pt(e.outputTokenRatio??e.output_token_ratio)!==void 0?{outputTokenRatio:Pt(e.outputTokenRatio??e.output_token_ratio)}:{},...t.length>0?{providerBlacklist:t}:{},...typeof e.requireParameters=="boolean"?{requireParameters:e.requireParameters}:{},...typeof e.require_parameters=="boolean"?{requireParameters:e.require_parameters}:{},...typeof e.respectExistingProviderOrder=="boolean"?{respectExistingProviderOrder:e.respectExistingProviderOrder}:{},...typeof e.respect_existing_provider_order=="boolean"?{respectExistingProviderOrder:e.respect_existing_provider_order}:{}};return Object.keys(n).length>0?n:void 0}function oz(e){if(!T(e))return;let t={},n=["imageInput","webSearch"];for(let r of n){let o=r.replace(/[A-Z]/g,i=>`_${i.toLowerCase()}`),s=e[r]??e[o];typeof s=="boolean"&&(t[r]=s)}return Object.keys(t).length>0?t:void 0}function sz(e){if(!T(e))return;let t={},n=["cacheReadUsdPerMillionTokens","cacheWriteUsdPerMillionTokens","cacheWrite1hUsdPerMillionTokens","cacheWrite5mUsdPerMillionTokens","inputUsdPerMillionTokens","outputUsdPerMillionTokens"];for(let r of n){let o=r.replace(/[A-Z]/g,A=>`_${A.toLowerCase()}`),s=o.replace(/([a-z])([0-9])/g,"$1_$2"),i=Pt(e[r]??e[s]??e[o]);i!==void 0&&(t[r]=i)}return Object.keys(t).length>0?t:void 0}function iz(e){if(!Array.isArray(e))return;let t=e.map(n=>{if(!T(n)){let o=p(n);return o?{description:o,effort:o}:void 0}let r=p(n.effort);if(r)return{description:p(n.description)||r,effort:r}}).filter(n=>!!n);return t.length>0?t:e.length===0?[]:void 0}function x0(e){let t=new Map;return e.map(n=>{let r=Az(n),o=(t.get(r)??0)+1;return t.set(r,o),{...n,id:o===1?r:`${r}-${o}`}})}function Az(e){let t=C0(e.id);if(t)return t;let n=C0(e.name)||"provider",r=[e.name,e.provider??"",Dp(e),e.type??""].join(`
|
|
274
|
+
`),o=(0,Dc.createHash)("sha256").update(r).digest("hex").slice(0,10);return`provider-${n.slice(0,48)}-${o}`}function C0(e){return e?.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9_.-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,72)||void 0}function az(e){if(!Array.isArray(e))return;let t=e.map((n,r)=>{if(!T(n))return;let o=p(n.api_key)||p(n.apiKey)||p(n.apikey)||p(n.key)||p(n.token);if(!o)return;let s=p(n.label),i=p(n.id),A=p(n.name)||s||i||`Key ${r+1}`,a=X(n.priority),c=X(n.weight);return{account:U0(n.account),api_key:o,enabled:typeof n.enabled=="boolean"?n.enabled:void 0,...s?{label:s}:{},...i?{id:i}:{},name:A,limits:Y0(n.limits),priority:a!==void 0?a:void 0,weight:c!==void 0&&c>0?c:void 0}}).filter(n=>!!n);return t.length>0?t:void 0}function U0(e){if(!T(e))return;let t=X(e.refreshIntervalMs),n=Array.isArray(e.connectors)?e.connectors.filter(r=>T(r)).map(r=>({...r})):void 0;if(!(typeof e.enabled!="boolean"&&!t&&!n?.length))return{connectors:n,enabled:typeof e.enabled=="boolean"?e.enabled:void 0,refreshIntervalMs:t&&t>0?t:void 0}}function cz(e){if(!Array.isArray(e))return;let t=e.map(n=>{if(!T(n))return;let r=Lp(p(n.type)||p(n.protocol)),o=p(n.baseUrl)||p(n.baseurl)||p(n.api_base_url);if(!r||!o)return;let s=p(n.source);return{baseUrl:o,endpoint:p(n.endpoint),source:s==="preset"||s==="detected"?s:void 0,type:r}}).filter(n=>!!n);return t.length>0?t:void 0}function dz(e){let t=Lp(p(e.protocol)),n=p(e.baseUrl)||p(e.baseurl)||p(e.api_base_url);if(!(!t||!n))return[{baseUrl:n,type:t}]}function Lp(e){if(!e)return;let t=e.trim().toLowerCase();if(t==="openai_responses"||t==="openai")return"openai_responses";if(t==="openai_chat"||t==="openai_chat_completions")return"openai_chat_completions";if(t==="openai_image_generations"||t==="openai_images")return"openai_image_generations";if(t==="openai_video_generations"||t==="openai_videos")return"openai_video_generations";if(t==="xai_video_generations"||t==="xai_videos")return"xai_video_generations";if(t==="anthropic"||t==="anthropic_messages")return"anthropic_messages";if(t==="gemini"||t==="gemini_generate_content")return"gemini_generate_content";if(t==="gemini_interactions"||t==="gemini-interactions"||t==="google_interactions"||t==="google-interactions"||t==="interactions"||t==="interaction")return"gemini_interactions"}function uz(e){if(!T(e))return;let t={},n=lz(e.builtInRules??e.builtinRules??e.agentRules);n&&(t.builtInRules=n);let r=F0(e.rules);r?t.rules=r:t.rules=[];let o=L0(e.fallback??e.failureFallback??e.fallbackStrategy);return o&&(t.fallback=o),t}function lz(e){if(T(e))return{"claude-code":I0(e["claude-code"]??e.claudeCode??e.claude),codex:I0(e.codex)}}function I0(e){return typeof e=="boolean"?{enabled:e}:T(e)?{enabled:typeof e.enabled=="boolean"?e.enabled:!0}:{enabled:!0}}function L0(e){if(!T(e))return;let t=B0(e.mode)??B0(e.strategy)??gz(e),n=fe(X(e.retryCount??e.retries??e.maxRetries)??1,0,AE),r=sr(e.models??e.chain??e.fallbackModels).map(o=>o.trim()).filter(Boolean);return{mode:t,models:rn(r),retryCount:n}}function gz(e){return e.enabled===!1?"off":sr(e.models??e.chain??e.fallbackModels).length>0?"model-chain":e.enabled===!0?"retry":"off"}function B0(e){if(typeof e!="string")return;let t=e.trim().toLowerCase();if(t==="off"||t==="disabled"||t==="none")return"off";if(t==="retry"||t==="retries")return"retry";if(t==="model-chain"||t==="chain"||t==="fallback-chain"||t==="switch-model"||t==="switch")return"model-chain"}function sr(e){return Array.isArray(e)?e.map(t=>p(t)).filter(t=>!!t):typeof e=="string"?e.split(/\r?\n|,/g).map(t=>t.trim()).filter(Boolean):[]}function bc(e){if(!Array.isArray(e)&&typeof e!="string")return;let t=sr(e);return t.length?t:void 0}function F0(e){if(Array.isArray(e))return e.map((t,n)=>{if(!T(t))return;let r=fz(t.type);if(!r)return;let o=p(t.id)||`rule-${n+1}`;if(oJ.has(o))return;let s=p(t.name)||mz(r),i=p(t.target),A=p(t.pattern),a=X(t.threshold),c=hz(t.condition??t)??Cz(r,{pattern:A}),d=Bz(t),l=r==="script"?pz(t.script??t):void 0,u=L0(t.fallback??t.failureFallback??t.fallbackStrategy);return{...c?{condition:c}:{},enabled:typeof t.enabled=="boolean"?t.enabled:!0,...u?{fallback:u}:{},id:o,name:s,...A?{pattern:A}:{},...d.length===1?{rewrite:d[0]}:{},...d.length>0?{rewrites:d}:{},...l?{script:l}:{},...i?{target:i}:{},...a!==void 0&&a>0?{threshold:a}:{},type:r==="script"?"script":c?"condition":r}}).filter(t=>!!t)}function fz(e){if(typeof e!="string")return;let t=e.trim().toLowerCase();if(t==="condition"||t==="model-prefix"||t==="script")return t}function pz(e){if(!T(e))return;let t=p(e.file??e.filePath??e.path),n=typeof e.source=="string"?e.source:typeof e.code=="string"?e.code:void 0;if(!t&&n===void 0)return;let r=p(e.language)?.toLowerCase();if(r&&r!=="javascript"&&r!=="js"||(X(e.apiVersion??e.version)??aA)!==aA)return;let s=X(e.timeoutMs??e.timeout),i=s===void 0?sE:Math.max(10,Math.min(iE,Math.trunc(s)));return{apiVersion:aA,...t?{file:t}:{},language:"javascript",...n!==void 0?{source:n}:{},timeoutMs:i}}function hz(e){if(!T(e))return;let t=p(e.left)??p(e.path)??p(e.field)??p(e.parameter),n=Ez(e.operator??e.op),r=Iz(e.right??e.value);return t&&n&&r!==void 0?{left:t,operator:n,right:r}:void 0}function Ez(e){if(typeof e!="string")return;let t=e.trim();if(t==="=="||t==="!="||t===">"||t===">="||t==="<"||t==="<="||t==="starts-with"||t==="contains"||t==="contains-deep"||t==="not-contains")return t}function Cz(e,t){if(e==="model-prefix"&&t.pattern)return{left:"request.body.model",operator:"starts-with",right:t.pattern}}function Iz(e){if(typeof e=="string")return e.trim();if(typeof e=="number"||typeof e=="boolean")return String(e)}function Bz(e){if(Array.isArray(e.rewrites))return e.rewrites.map(r=>y0(r)).filter(r=>!!r);let t=y0(e.rewrite??e.action),n=p(e.target);return[...t?[t]:[],...n?[{key:"request.body.model",operation:"set",value:n}]:[]]}function y0(e){if(!T(e))return;let t=p(e.key)??p(e.path)??p(e.field)??p(e.parameter),n=yz(e.operation??e.op??e.type)??"set",r=m0(e.value),o=m0(e.match);if(t)return n==="delete"?{key:t,operation:n}:n==="array-replace"?o!==void 0&&r!==void 0?{key:t,match:o,operation:n,value:r}:void 0:r!==void 0?{key:t,operation:n,value:r}:void 0}function yz(e){if(typeof e!="string")return;let t=e.trim().toLowerCase();if(t==="set"||t==="delete"||t==="array-append"||t==="array-prepend"||t==="array-remove"||t==="array-replace")return t}function m0(e){if(typeof e=="string")return e.trim();if(typeof e=="number"||typeof e=="boolean")return String(e)}function mz(e){return e==="condition"?"Condition":e==="script"?"JavaScript":"Legacy"}function Qz(e,t){let n=T(e)?e:{},r=_0(n.mcpServers??t);if(r)return{mcpServers:r}}function Fp(e){if(!T(e))return;let t={};typeof e.enabled=="boolean"&&(t.enabled=e.enabled);let n=p(e.sourceDir)||p(e.source_dir)||p(e.projectDir)||p(e.project_dir);n&&(t.sourceDir=n);let r=p(e.command);r&&(t.command=r);let o=bc(e.args);o&&(t.args=o);let s=p(e.cwd)||p(e.rootDir)||p(e.root_dir);s&&(t.cwd=s);let i=p(e.stateDir)||p(e.state_dir);i&&(t.stateDir=i);let A=p(e.tenantId)||p(e.tenant_id);A&&(t.tenantId=A);let a=p(e.integrationId)||p(e.integration_id);a&&(t.integrationId=a);let c=p(e.platform);c&&(t.platform=c);let d=p(e.authType)||p(e.auth_type);d&&(t.authType=d);let l=Si(e.credentials)||Si(e.authFields)||Si(e.auth_fields);l&&(t.credentials=l);let u=Si(e.integrationConfig)||Si(e.config);u&&(t.integrationConfig=u);let g=bz(e.conversationRef??e.conversation_ref??e.conversation);g&&(t.conversationRef=g),typeof e.createIntegration=="boolean"?t.createIntegration=e.createIntegration:typeof e.create_integration=="boolean"&&(t.createIntegration=e.create_integration),typeof e.autoStartIntegration=="boolean"?t.autoStartIntegration=e.autoStartIntegration:typeof e.auto_start_integration=="boolean"&&(t.autoStartIntegration=e.auto_start_integration),typeof e.acknowledgeEvents=="boolean"?t.acknowledgeEvents=e.acknowledgeEvents:typeof e.acknowledge_events=="boolean"&&(t.acknowledgeEvents=e.acknowledge_events),typeof e.forwardAllAgentMessages=="boolean"?t.forwardAllAgentMessages=e.forwardAllAgentMessages:(typeof e.forward_all_agent_messages=="boolean"||typeof e.forward_all_codex_messages=="boolean")&&(t.forwardAllAgentMessages=!!(e.forward_all_agent_messages??e.forward_all_codex_messages)),typeof e.mediaEnabled=="boolean"&&(t.mediaEnabled=e.mediaEnabled),typeof e.streamReplies=="boolean"&&(t.streamReplies=e.streamReplies),typeof e.shellEnabled=="boolean"?t.shellEnabled=e.shellEnabled:typeof e.shell_enabled=="boolean"&&(t.shellEnabled=e.shell_enabled);let h=p(e.language);(h==="auto"||h==="en"||h==="zh-CN")&&(t.language=h);let E=X(e.requestTimeoutMs??e.request_timeout_ms);E!==void 0&&(t.requestTimeoutMs=fe(E,1e3,36e5));let B=X(e.startupTimeoutMs??e.startup_timeout_ms);B!==void 0&&(t.startupTimeoutMs=fe(B,1e3,12e4));let C=X(e.pollIntervalMs??e.poll_interval_ms);C!==void 0&&(t.pollIntervalMs=fe(C,500,6e4));let y=X(e.maxTurnTimeMs??e.max_turn_time_ms);y!==void 0&&(t.maxTurnTimeMs=fe(y,1e4,36e5));let Q=X(e.maxAttachmentBytes??e.max_attachment_bytes);Q!==void 0&&(t.maxAttachmentBytes=fe(Q,1024,100*1024*1024));let b=X(e.messageChunkChars??e.message_chunk_chars);b!==void 0&&(t.messageChunkChars=fe(b,500,2e4));let k=X(e.sessionIdleMinutes??e.session_idle_minutes);k!==void 0&&(t.sessionIdleMinutes=fe(k,0,43200));let x=Rz(e.handoff);return x&&(t.handoff=x),t}function wz(e){if(!Array.isArray(e))return;let t=[],n=new Set;return e.forEach((r,o)=>{if(!T(r))return;let s=r.botGateway??r.bot_gateway??r.bot??r.config,i=Fp(s);if(!i)return;let A=xp(i);if(!A.enabled||!A.platform||A.platform==="none")return;let a=A.integrationId||`bot-${o+1}`,c=p(r.id)||p(r.savedConfigId)||p(r.saved_config_id)||a;!c||n.has(c)||(n.add(c),t.push({botGateway:A,id:c,name:p(r.name)||A.platform||c,...p(r.updatedAt)||p(r.updated_at)?{updatedAt:p(r.updatedAt)||p(r.updated_at)}:{}}))}),t}function Rz(e){if(!T(e))return;let t={};typeof e.enabled=="boolean"&&(t.enabled=e.enabled);let n=X(e.idleSeconds??e.idle_seconds);n!==void 0&&(t.idleSeconds=fe(n,30,86400)),typeof e.screenLock=="boolean"?t.screenLock=e.screenLock:typeof e.screen_lock=="boolean"&&(t.screenLock=e.screen_lock),typeof e.userIdle=="boolean"?t.userIdle=e.userIdle:typeof e.user_idle=="boolean"&&(t.userIdle=e.user_idle);let r=bc(e.phoneWifiTargets??e.phone_wifi_targets);r&&(t.phoneWifiTargets=rn(r).slice(0,1));let o=bc(e.phoneBluetoothTargets??e.phone_bluetooth_targets);return o&&(t.phoneBluetoothTargets=rn(o).slice(0,1)),Object.keys(t).length?t:void 0}function bz(e){if(!T(e))return;let t=p(e.platformConversationId)||p(e.platform_conversation_id)||p(e.conversationId)||p(e.chatId)||p(e.channelId),n=p(e.gatewayConversationId)||p(e.gateway_conversation_id);if(!t&&!n)return;let r=Pe(e.type,["dm","group","channel","thread"],"dm"),o=p(e.threadId)||p(e.thread_id);return{...n?{gatewayConversationId:n}:{},...t?{platformConversationId:t}:{},...o?{threadId:o}:{},type:r}}function _0(e){if(!Array.isArray(e))return;let t=e.map((n,r)=>{if(!T(n))return;let o=Sz(n.transport??n.type),s=p(n.name)||p(o!=="stdio"?n.url:n.command)||`mcp-${r+1}`,i=p(n.protocolVersion)||"2024-11-05",A=fe(X(n.startupTimeoutMs)??6e5,100,6e5),a=fe(X(n.requestTimeoutMs)??3e4,100,6e5);if(o!=="stdio"){let l=p(n.url);return l?{...p(n.apiKey)?{apiKey:p(n.apiKey)}:{},...p(n.apiKeyEnv)?{apiKeyEnv:p(n.apiKeyEnv)}:{},headers:Sc(n.headers)??{},name:s,protocolVersion:i,requestTimeoutMs:a,startupTimeoutMs:A,transport:o,url:l}:void 0}let c=p(n.command);if(!c)return;let d=p(n.stdioMessageMode)==="newline-json"?"newline-json":"content-length";return{args:sr(n.args),command:c,...p(n.cwd)?{cwd:p(n.cwd)}:{},env:Sc(n.env)??{},name:s,protocolVersion:i,requestTimeoutMs:a,startupTimeoutMs:A,stdioMessageMode:d,transport:o}}).filter(n=>!!n);return t.length?t:void 0}function Sz(e){let t=p(e)?.toLowerCase().replace(/_/g,"-").replace(/\s+/g,"-");return t==="sse"?"sse":t==="http"||t==="streamable-http"||t==="streamablehttp"||t==="streamble-http"||t==="websocket"?"streamable-http":"stdio"}function Dz(e){if(!T(e))return;let t={},n=typeof e.captureNetwork=="boolean"?e.captureNetwork:typeof e.networkCaptureEnabled=="boolean"?e.networkCaptureEnabled:void 0;n!==void 0&&(t.captureNetwork=n);let r=typeof e.browserMode=="boolean"?e.browserMode:typeof e.builtInBrowser=="boolean"?e.builtInBrowser:typeof e.builtInBrowserMode=="boolean"?e.builtInBrowserMode:void 0;r!==void 0&&(t.browserMode=r),typeof e.enabled=="boolean"&&(t.enabled=e.enabled),typeof e.host=="string"&&e.host.trim()&&(t.host=e.host.trim());let o=Zo(e.port);o&&(t.port=o),(e.mode==="gateway"||e.mode==="transparent")&&(t.mode=e.mode),typeof e.systemProxy=="boolean"?t.systemProxy=e.systemProxy:typeof e.systemProxyEnabled=="boolean"&&(t.systemProxy=e.systemProxyEnabled);let s=Tz(e.upstream??e.upstreamProxy??e.outboundProxy);s&&(t.upstream=s);let i=kz(e.targets);return i&&(t.targets=i),t}function Tz(e){let t=H.proxy.upstream;if(typeof e=="string"){let c=Q0(e);return c?{...t,mode:c}:void 0}if(!T(e))return;let n=Q0(e.mode??e.type),r=T(e.custom)?e.custom:e,o=p(r.server??r.host??r.hostname),s=Zo(r.port),i=p(r.username??r.user),A=typeof r.password=="string"?r.password:typeof r.pass=="string"?r.pass:void 0,a=o!==void 0||s!==void 0||i!==void 0||A!==void 0;return{...t,custom:{...t.custom,...o!==void 0?{server:o}:{},...s!==void 0?{port:s}:{},...i!==void 0?{username:i}:{},...A!==void 0?{password:A}:{}},mode:n??(a?"custom":t.mode)}}function Q0(e){if(typeof e!="string")return;let t=e.trim().toLowerCase().replace(/[\s_-]+/g,"");if(["none","off","disabled","direct","noproxy"].includes(t))return"none";if(["system","systemproxy","os","osproxy","env","environment"].includes(t))return"system";if(["custom","manual","http","httpproxy"].includes(t))return"custom"}function kz(e){if(!Array.isArray(e))return;let t=e.map(n=>{if(typeof n=="string"&&n.trim())return{host:n.trim().toLowerCase()};if(!T(n))return;let r=p(n.host)?.toLowerCase();if(!r)return;let o=Array.isArray(n.paths)?n.paths.map(s=>p(s)).filter(s=>!!s):void 0;return{host:r,paths:o?.length?o:void 0}}).filter(n=>!!n);return t.length?t:void 0}function Nz(e){if(!Array.isArray(e))return;let t=e.map((n,r)=>{if(!T(n))return;let o=p(n.id)||p(n.key)||`plugin-${r+1}`,s=p(n.module)||p(n.path),i=nK(n.apps),A=rK(T(n.proxy)?n.proxy.routes:void 0),a=oK(n.coreGateway),c=n.surfaces??n.surface,d=$z(n.permissions),l=Kz(c),u=n.permissions===void 0?yd(o):d,g=c===void 0?md(o):l;return{...i?{apps:i}:{},...n.config!==void 0?{config:n.config}:{},...a?{coreGateway:a}:{},enabled:typeof n.enabled=="boolean"?n.enabled:!0,id:o,...s?{module:s}:{},...u!==void 0?{permissions:u}:{},...A?{proxy:{routes:A}}:{},...g?{surfaces:g}:{}}}).filter(n=>!!n);return t.length?t:void 0}var Mz=new Set([rt,ot,"cursor-proxy"]);function xz(e){let t=e??[],n=!1,r=t.some(s=>s.id===ot),o=[];for(let s of t){let i=Uz(s),A=i.plugin;if(n=n||i.changed,A.id===ot){let c=vz(A);n=n||c.changed,o.push(c.plugin);continue}if(A.id!==rt){o.push(A);continue}let a=Lz(A);if(n=n||a.changed,o.push(a.plugin),!r&&Gz(A)){let c=qz(A);c&&(o.push(c),r=!0,n=!0)}}return{changed:n,plugins:o}}function Uz(e){let t=Hz(e.id,e.module);return!t||t===e.module?{changed:!1,plugin:e}:{changed:!0,plugin:{...e,module:t}}}function Lz(e){let t=!1,n={...e},r=_p(e.config);r.changed&&(t=!0,r.config===void 0?delete n.config:n.config=r.config);let o=Tc(e.module),s=v0(rt,e.module);s&&s!==e.module&&(n.module=s,t=!0);let i=!!e.apps?.some(A=>Pp(A)||P0(A.url));if(o||i){let A=Pz(e.apps);A.changed&&(n.apps=A.apps,t=!0)}return{changed:t,plugin:n,plugins:[n]}}var Fz=new Set(["appMode","autoAnswerQuestions","claudeAppAssetDir","claudeAppAssets","claudeAppIonDistDir","claudeAppPath","claudeShipAssetDir","claudeShipAssets","claudeShipIonDistDir","claudeShipLocalApp","designHtmlPath","htmlPath","localApp","localShell","onlineApp","savedHtmlPath","shipAssetDir","shipAssets","shipIonDistDir","shipLocalApp","useSavedHtml"]),_z=new Set(["assetsOrigin","designAssetsOrigin","designFrontendAssetsOrigin","designFrontendOrigin","designFrontendUrl","designWebUrl","frontendAssetsOrigin","frontendOrigin","frontendUrl","shipAssetsOrigin","shipFrontendAssetsOrigin","shipFrontendOrigin","shipFrontendUrl","shipWebUrl","staticAssetsOrigin","webUrl"]);function _p(e){if(!T(e))return{changed:!1,...e!==void 0?{config:e}:{}};let t={},n=!1;for(let[r,o]of Object.entries(e)){if(Fz.has(r)||o===!1&&_z.has(r)){n=!0;continue}t[r]=o}return n?{changed:!0,...Object.keys(t).length>0?{config:t}:{}}:{changed:!1,config:e}}function Pz(e){let t=cA(rt)??[];if(!e?.length)return{apps:t,changed:t.length>0};let n=!1,r=e.filter(o=>{let s=Pp(o);return n=n||s,!s}).map(o=>{if(!P0(o.url))return o;let s=t.find(i=>i.id===(o.id||"claude-design"))??t[0];return s?(n=!0,{...o,url:s.url}):o});return!r.length&&t.length?{apps:t,changed:!0}:{apps:r,changed:n}}function vz(e){let t=!1,n={...e},r=_p(e.config);r.changed&&(t=!0,r.config===void 0?delete n.config:n.config=r.config);let o=Oz(e.apps);return o.changed&&(t=!0,n.apps=o.apps),t?{changed:!0,plugin:n,plugins:[n]}:{changed:!1,plugin:e,plugins:[e]}}function Oz(e){let t=cA(ot)??[];return e?.length?{apps:e,changed:!1}:{apps:t,changed:t.length>0}}function qz(e){let t=Tc(e.module)?v0(ot,e.module):vp(ot,e.module);if(!t)return;let n=_p(e.config);return{...n.config!==void 0?{config:n.config}:{},apps:cA(ot),enabled:e.enabled,id:ot,module:t,permissions:yd(ot),surfaces:md(ot)}}function Gz(e){return Tc(e.module)||!!e.apps?.some(Pp)}function Pp(e){return[e.id,e.name,e.url].some(t=>typeof t=="string"&&t.toLowerCase().includes("claude-ship"))}function P0(e){try{let t=new URL(e,"https://claude.ai"),n=t.hostname.toLowerCase(),r=t.pathname.replace(/\/$/,"");return n==="claude.ai"?r==="/design"||r==="/discover/design":!1}catch{return!1}}function v0(e,t){return Tc(t)?vp(e,t)||t||"":t||""}function Hz(e,t){return O0(e,t)?vp(e,t)||t||"":t||""}function vp(e,t){let n=Yz(e);if(n)return n;for(let r of Jz(t)){let o=Ye.default.join(r,"plugins",e,"index.cjs");if((0,es.existsSync)(o))return o}return""}function Yz(e){if(!Wz(e))return"";for(let t of Vz(e))if((0,es.existsSync)(t))return t;return""}function Wz(e){return f0()&&(e===rt||e===ot)}function Vz(e){let t=process.resourcesPath,n=t?[Ye.default.join(t,"app.asar.unpacked","dist","bundled-plugins",e,"index.cjs"),Ye.default.join(t,"app.asar","dist","bundled-plugins",e,"index.cjs"),Ye.default.join(t,"app","dist","bundled-plugins",e,"index.cjs")]:[];return rn([...n,Ye.default.join(__dirname,"..","bundled-plugins",e,"index.cjs"),Ye.default.resolve(__dirname,"..","..","..","electron","bundled-plugins",e,"index.cjs"),Ye.default.resolve(process.cwd(),"packages","electron","dist","bundled-plugins",e,"index.cjs"),Ye.default.resolve(process.cwd(),"packages","electron","bundled-plugins",e,"index.cjs")])}function Tc(e){return O0(rt,e)}function O0(e,t){if(!Mz.has(e))return!1;let n=t?.replace(/\\/g,"/").toLowerCase()||"";return n.includes(`/marketplace/plugins/${e}/`)||n.includes(`/examples/plugins/${e}/`)||n.endsWith(`/examples/plugins/${e}-plugin.cjs`)||n.endsWith(`/examples/plugins/${e}/index.cjs`)}function Jz(e){let t=[process.env.CCR_EXTENSIONS_DIR,zz(e),Ye.default.resolve(process.cwd(),"..","ccr-extensions"),Ye.default.resolve(process.cwd(),"ccr-extensions")];return rn(t.filter(n=>!!n?.trim()))}function zz(e){if(!e)return"";let n=Ye.default.resolve(e).split(Ye.default.sep),r=n.lastIndexOf("claude-code-router");return r<=0?"":Ye.default.join(Ye.default.sep,...n.slice(1,r),"ccr-extensions")}function Kz(e){if(e===void 0)return;let t={},n=(r,o=!0)=>{let s=Xz(r);return s?(t[s]=o,!0):!1};if(typeof e=="string"){if(bp(e)){for(let r of ar)t[r]=!0;return t}if(!n(e))return;ar.forEach(r=>{t[r]??=!1})}else if(Array.isArray(e)){let r=!1;for(let o of e)if(typeof o=="string"&&bp(o)){for(let s of ar)t[s]=!0;r=!0}else r=n(o)||r;if(!r)return;ar.forEach(o=>{t[o]??=!1})}else if(T(e))for(let[r,o]of Object.entries(e))if(bp(r))for(let s of ar)t[s]=o!==!1;else n(r,o!==!1);return Object.keys(t).length>0?t:void 0}function Xz(e){if(typeof e!="string")return;let t=jz(e.trim().toLowerCase().replace(/[\s_]+/g,"-"));return ar.includes(t)?t:void 0}function jz(e){switch(e){case"app":case"browser-app":case"browser-apps":case"ui":return"apps";case"gateway-route":case"route":case"routes":case"gateway-routes":case"proxy-route":case"proxy":case"proxy-routes":case"http-backend":case"http-backends":case"backend":case"backends":case"core-gateway":case"core-gateway-config":case"fusion-profile":case"fusion-profiles":case"virtual-model":case"virtual-models":case"virtual-model-profile":case"virtual-model-profiles":case"request":case"requests":return"gateway";case"core-provider-plugin":case"provider-plugin":case"provider-plugins":case"provider-account":case"provider-account-connector":case"provider-account-connectors":case"providers":return"provider";default:return e}}function bp(e){let t=e.trim().toLowerCase();return t==="*"||t==="all"}function $z(e){if(e===void 0)return;let t=[],n=new Set,r=o=>{let s=Zz(o);!s||n.has(s)||(n.add(s),t.push(s))};if(typeof e=="string")r(e);else if(Array.isArray(e))e.forEach(r);else if(T(e))for(let[o,s]of Object.entries(e))s!==!1&&(tK(o)?Bd.forEach(r):r(o));return t}function Zz(e){if(typeof e!="string")return;let t=e.trim().toLowerCase().replace(/[\s_]+/g,"-"),n=eK(t);return iJ.has(n)?n:void 0}function eK(e){switch(e){case"code":case"execute-code":case"trusted":case"trusted-code":return"trusted-code";case"app":case"browser-app":case"browser-apps":return"apps";case"gateway-route":case"route":case"routes":return"gateway-routes";case"gateway-request-transform":case"gateway-request-transforms":case"request-transform":case"request-transforms":return"gateway-request-transforms";case"proxy":case"proxy-route":return"proxy-routes";case"backend":case"backends":case"http-backend":return"http-backends";case"provider-account":case"provider-account-connector":return"provider-account-connectors";case"core-gateway":return"core-gateway-config";case"provider-plugin":case"provider-plugins":case"core-provider-plugin":return"core-provider-plugins";case"fusion-profile":case"fusion-profiles":case"virtual-model":case"virtual-models":case"virtual-model-profile":return"virtual-model-profiles";case"sqlite":case"data-store":case"store":return"sqlite-store";case"launcher":case"mac-launcher":return"system-launcher";default:return e}}function tK(e){let t=e.trim().toLowerCase();return t==="*"||t==="all"}function nK(e){if(!Array.isArray(e))return;let t=e.map((n,r)=>{if(!T(n))return;let o=p(n.name)||p(n.title),s=p(n.url)||p(n.href)||p(n.target);if(!(!o||!s))return{...p(n.description)?{description:p(n.description)}:{},...p(n.icon)?{icon:p(n.icon)}:{},id:p(n.id)||`app-${r+1}`,name:o,url:s}}).filter(n=>!!n);return t.length?t:void 0}function rK(e){if(!Array.isArray(e))return;let t=e.map((n,r)=>{if(!T(n))return;let o=p(n.host)?.toLowerCase(),s=p(n.upstream)||p(n.target)||p(n.backend);if(!o||!s)return;let i=Array.isArray(n.paths)?n.paths.map(d=>p(d)).filter(d=>!!d):void 0,A=Sc(n.headers),a=typeof n.stripPathPrefix=="boolean"||typeof n.stripPathPrefix=="string"?n.stripPathPrefix:void 0,c=p(n.rewritePathPrefix);return{...A?{headers:A}:{},host:o,id:p(n.id)||`route-${r+1}`,...i?.length?{paths:i}:{},...typeof n.preserveHost=="boolean"?{preserveHost:n.preserveHost}:{},...c?{rewritePathPrefix:c}:{},...a!==void 0?{stripPathPrefix:a}:{},upstream:s}}).filter(n=>!!n);return t.length?t:void 0}function oK(e){if(!T(e))return;let t=Array.isArray(e.providerPlugins)?e.providerPlugins:void 0,n=Array.isArray(e.virtualModelProfiles)?e.virtualModelProfiles:void 0,r=T(e.config)?{...e.config}:void 0;if(!(!t&&!n&&!r))return{...r?{config:r}:{},...t?{providerPlugins:t}:{},...n?{virtualModelProfiles:n}:{}}}function sK(e){if(!T(e))return;let t={};typeof e.enabled=="boolean"&&(t.enabled=e.enabled);let n=T(e.claudeCode)?e.claudeCode:T(e.claude)?e.claude:void 0;if(n){t.claudeCode={},typeof n.enabled=="boolean"&&(t.claudeCode.enabled=n.enabled);let s=kp(n);s!==void 0&&(t.claudeCode.managedCompact=s);let i=p(n.settingsFile)||p(n.configFile)||p(n.path);i&&(t.claudeCode.settingsFile=i);let A=p(n.model);A!==void 0&&(t.claudeCode.model=A);let a=p(n.fableModel)||p(n.defaultFableModel);a!==void 0&&(t.claudeCode.fableModel=a);let c=p(n.opusModel)||p(n.defaultOpusModel);c!==void 0&&(t.claudeCode.opusModel=c);let d=p(n.sonnetModel)||p(n.defaultSonnetModel);d!==void 0&&(t.claudeCode.sonnetModel=d);let l=p(n.haikuModel)||p(n.defaultHaikuModel)||p(n.smallFastModel)||p(n.smallModel);l!==void 0&&(t.claudeCode.haikuModel=l);let u=p(n.smallFastModel)||p(n.smallModel);u!==void 0&&(t.claudeCode.smallFastModel=u)}let r=T(e.codex)?e.codex:void 0;if(r){t.codex={},typeof r.enabled=="boolean"&&(t.codex.enabled=r.enabled);let s=kp(r);s!==void 0&&(t.codex.managedCompact=s),typeof r.cliMiddleware=="boolean"&&(t.codex.cliMiddleware=r.cliMiddleware);let i=p(r.codexCliPath)||p(r.cliPath)||p(r.codexPath);i&&(t.codex.codexCliPath=i);let A=p(r.codexHome)||p(r.home);A&&(t.codex.codexHome=A);let a=G0(p(r.configFormat)||p(r.profileConfigFormat));a&&(t.codex.configFormat=a);let c=H0(p(r.remoteFrontendMode)||p(r.frontendMode)||p(r.coreMode));c&&(t.codex.remoteFrontendMode=c);let d=p(r.configFile)||p(r.settingsFile)||p(r.path);d&&(t.codex.configFile=d);let l=p(r.model);l!==void 0&&(t.codex.model=l);let u=p(r.providerId)||p(r.provider);u&&(t.codex.providerId=u);let g=p(r.providerName)||p(r.name);g&&(t.codex.providerName=g);let h=typeof r.showAllSessions=="boolean"?r.showAllSessions:typeof r.show_all_sessions=="boolean"?r.show_all_sessions:void 0;h!==void 0&&(t.codex.showAllSessions=h)}let o=iK(e.profiles);if(o)t.profiles=o;else{let s=[];t.claudeCode&&s.push(lK({...H.profile.claudeCode,...t.claudeCode})),t.codex&&s.push(gK({...H.profile.codex,...t.codex})),s.length&&(t.profiles=s)}return t}function iK(e){if(Array.isArray(e))return e.map((t,n)=>{if(!T(t))return;let r=aK(t.agent);if(!r)return;let o=typeof t.enabled=="boolean"?t.enabled:!0,s=p(t.id)||`profile-${n+1}`,i=p(t.name)||cK(r),A=p(t.model)??"",a=sr(t.availableModels??t.available_models??t.models),c=a.length>0?rn([A,...a].filter(Boolean)):void 0,d=Sc(t.env)??{},l=fK(p(t.surface)||p(t.entry)||p(t.frontend))||"auto",u=r==="workbuddy"||r==="zcode"||r===rt?"app":r==="pi"||r==="kilo"?"cli":l,g=u!=="cli"?p(t.botConfigId)||p(t.bot_config_id)||p(t.savedBotConfigId)||p(t.saved_bot_config_id):"",h=Fp(t.botGateway??t.bot_gateway??t.bot),E=u!=="cli"&&h?xp(h):void 0,B=kp(t),C=AK(t.routing??t.route,r);if(r==="claude-code"){let b=w0(t,r);return{agent:r,...b?{appPath:b}:{},...g?{botConfigId:g}:{},...E?{botGateway:E}:{},enabled:o,env:q0(d),fableModel:p(t.fableModel)||p(t.defaultFableModel)||"",haikuModel:p(t.haikuModel)||p(t.defaultHaikuModel)||p(t.smallFastModel)||p(t.smallModel)||"",id:s,...B!==void 0?{managedCompact:B}:{},...c?{availableModels:c}:{},model:A,name:i,opusModel:p(t.opusModel)||p(t.defaultOpusModel)||"",...C?{routing:C}:{},scope:b0(p(t.scope)||p(t.applyScope)||p(t.effectScope))||"global",settingsFile:p(t.settingsFile)||p(t.configFile)||"~/.claude/settings.json",sonnetModel:p(t.sonnetModel)||p(t.defaultSonnetModel)||"",smallFastModel:p(t.smallFastModel)||p(t.smallModel)||"",surface:u}}if(r==="grok"||r==="kimi"||r==="pi")return{agent:r,...c?{availableModels:c}:{},enabled:o,env:R0(d),id:s,model:A,name:i,...C?{routing:C}:{},scope:"ccr",surface:"cli"};if(r===rt)return{agent:r,enabled:o,env:{},id:s,model:"",name:i,...C?{routing:C}:{},scope:"ccr",surface:"app"};let y=w0(t,r),Q=r==="zcode"||r==="opencode"||r==="kilo"||r==="workbuddy"?!1:typeof t.showAllSessions=="boolean"?t.showAllSessions:typeof t.show_all_sessions=="boolean"?t.show_all_sessions:void 0;return{agent:r,...y?{appPath:y}:{},...g?{botConfigId:g}:{},...E?{botGateway:E}:{},cliMiddleware:!0,codexCliPath:p(t.codexCliPath)||p(t.cliPath)||p(t.codexPath)||"",codexHome:p(t.codexHome)||p(t.home)||"",configFormat:G0(p(t.configFormat)||p(t.profileConfigFormat))||"separate_profile_files",configFile:uK(r,p(t.configFile)||p(t.settingsFile)),enabled:o,env:R0(d),id:s,...B!==void 0?{managedCompact:B}:{},...c?{availableModels:c}:{},model:A,name:i,providerId:p(t.providerId)||p(t.provider)||"claude-code-router",providerName:p(t.providerName)||"Claude Code Router",remoteFrontendMode:H0(p(t.remoteFrontendMode)||p(t.frontendMode)||p(t.coreMode))||"app",...C?{routing:C}:{},scope:b0(p(t.scope)||p(t.applyScope)||p(t.effectScope))||"global",...Q!==void 0?{showAllSessions:Q}:{},surface:u}}).filter(t=>!!t)}function AK(e,t){if(e===!1)return{enabled:!1,enhancedRoute:!0,rules:[]};if(e===!0)return{enabled:!0,enhancedRoute:!0,rules:[]};if(!T(e))return;let n=Tp(e.enhancedRoute??e.useEnhancedRoute??e.builtInRoute??e.builtinRoute??e.useBuiltInRoute??e.use_builtin_route);return{enabled:Tp(e.enabled)??!0,enhancedRoute:n??!0,rules:F0(e.rules)??[]}}function Tp(e){return typeof e=="boolean"?e:void 0}function w0(e,t){return p(e.appPath)||p(e.app_path)||p(e.appExecutablePath)||p(e.app_executable_path)||(t==="claude-code"?p(e.claudeAppPath)||p(e.claude_app_path):t==="codex"?p(e.chatgptAppPath)||p(e.chatgpt_app_path)||p(e.codexAppPath)||p(e.codex_app_path):t==="opencode"?p(e.openCodeAppPath)||p(e.opencodeAppPath)||p(e.opencode_app_path):t==="workbuddy"?p(e.workbuddyAppPath)||p(e.workbuddy_app_path)||p(e.workBuddyAppPath)||p(e.work_buddy_app_path):p(e.zcodeAppPath)||p(e.zcode_app_path))}function aK(e){if(typeof e!="string")return;let t=e.trim().toLowerCase();if(t==="claude"||t==="claude-code"||t==="claude code")return"claude-code";if(t==="codex")return"codex";if(t==="grok"||t==="grok-cli"||t==="grok cli")return"grok";if(t==="kimi"||t==="kimi-cli"||t==="kimi cli"||t==="kimi-code"||t==="kimi code")return"kimi";if(t==="opencode"||t==="open-code"||t==="open code")return"opencode";if(t==="kilo"||t==="kilo-cli"||t==="kilo cli"||t==="kilocode"||t==="kilo-code"||t==="kilo code")return"kilo";if(t==="pi"||t==="pi-agent"||t==="pi agent"||t==="pi-coding-agent"||t==="pi coding agent")return"pi";if(t==="workbuddy"||t==="work-buddy"||t==="work buddy"||t==="workbuddy-agent"||t==="workbuddy agent")return"workbuddy";if(t==="zcode"||t==="z-code"||t==="z code")return"zcode";if(t==="claude-design"||t==="claude design"||t==="design")return rt}function kp(e){let t=e.managedCompact??e.managed_compact??e.ccrManagedCompact??e.ccr_managed_compact??e.contextArchiveCompact??e.context_archive_compact;return typeof t=="boolean"?t:void 0}function cK(e){return e==="claude-code"?"Claude Code":e==="zcode"?"ZCode":e==="grok"?"Grok CLI":e==="kimi"?"Kimi CLI":e==="opencode"?"OpenCode":e==="kilo"?"Kilo CLI":e==="pi"?"Pi":e==="workbuddy"?"Workbuddy":e===rt?"Claude Design":"Codex"}function dK(e){return e==="zcode"?"~/.zcode/cli/config.json":e==="opencode"?"~/.config/opencode/opencode.jsonc":e==="kilo"?"~/.config/kilo/kilo.jsonc":e==="workbuddy"?"~/.workbuddy/config.toml":e==="pi"?"~/.pi/agent":e===rt?"~/.claude-code-router/claude-design":"~/.codex/config.toml"}function uK(e,t){let n=t?.trim();return!n||e==="zcode"&&n==="~/.zcode/config.toml"?dK(e):n}function lK(e){return{agent:"claude-code",enabled:e.enabled,env:q0(),fableModel:e.fableModel,haikuModel:e.haikuModel||e.smallFastModel,id:"default-claude-code",managedCompact:e.managedCompact,model:e.model,name:"Claude Code",opusModel:e.opusModel,scope:"global",settingsFile:e.settingsFile,sonnetModel:e.sonnetModel,smallFastModel:e.smallFastModel,surface:"auto"}}function q0(e={}){return{...dA,...e}}function R0(e){let{[Qd]:t,...n}=e;return n}function gK(e){return{agent:"codex",cliMiddleware:!0,codexCliPath:e.codexCliPath,codexHome:e.codexHome,configFormat:e.configFormat,configFile:e.configFile,enabled:e.enabled,env:{},id:"default-codex",managedCompact:e.managedCompact,model:e.model,name:"Codex",providerId:e.providerId,providerName:e.providerName,remoteFrontendMode:e.remoteFrontendMode,scope:"global",showAllSessions:e.showAllSessions,surface:"auto"}}function b0(e){if(!e)return;let t=e.trim().toLowerCase().replace(/_/g,"-").replace(/\s+/g,"-");if(t==="ccr"||t==="managed"||t==="local"||t==="ccr-only"||t==="only-ccr")return"ccr";if(t==="global"||t==="system"||t==="system-default"||t==="default")return"global";if(t==="custom"||t==="custom-path"||t==="custom-config")return"custom"}function fK(e){if(!e)return;let t=e.trim().toLowerCase().replace(/_/g,"-").replace(/\s+/g,"-");if(t==="auto"||t==="automatic")return"auto";if(t==="cli"||t==="command-line")return"cli";if(t==="app"||t==="desktop"||t==="desktop-app")return"app"}function G0(e){if(!e)return;let t=e.trim().toLowerCase().replace(/-/g,"_").replace(/\s+/g,"_");if(t==="legacy"||t==="profiles"||t==="profile_table"||t==="profiles_table"||t==="separate"||t==="separate_profile_files"||t==="profile_files"||t==="profile_file"||t==="new")return"separate_profile_files"}function H0(e){if(!e)return;let t=e.trim().toLowerCase().replace(/_/g,"-").replace(/\s+/g,"-");if(t==="app"||t==="codex-app")return"app";if(t==="cli"||t==="codex-cli")return"cli";if(t==="claude-code"||t==="claude")return"claude-code"}function Sc(e){if(!T(e))return;let t={};for(let[n,r]of Object.entries(e)){let o=n.trim(),s=p(r);o&&s&&(t[o]=s)}return Object.keys(t).length?t:void 0}function Si(e){if(T(e))return{...e}}function pK(e){if(!Array.isArray(e))return;let t=e.map((n,r)=>hK(n,r)).filter(n=>!!n);return Op(t)}function hK(e,t){if(typeof e=="string"){let A=p(e);return A?W0(A,t):void 0}if(!T(e))return;let n=p(e.key)||p(e.value)||p(e.APIKEY);if(!n)return;let r=p(e.createdAt)||new Date(0).toISOString(),o=p(e.expiresAt),s=Y0(e.limits),i=p(e.name);return{createdAt:r,...o?{expiresAt:o}:{},id:p(e.id)||`key-${t+1}`,key:n,...s?{limits:s}:{},...i?{name:i}:{}}}function Y0(e){if(!T(e))return;let t={};for(let n of["ipd","iph","ipm","maxRequests","maxTokens","quotaWindowMs","rpd","rph","rpm","tpd","tph","tpm","windowMs"]){let r=X(e[n]);r!==void 0&&r>0&&(t[n]=r)}return Object.keys(t).length?t:void 0}function EK(e,t){return Op([...e??[],...t?[W0(t,e?.length??0)]:[]])}function S0(e){return e.length?e:[CK()]}function CK(){return{createdAt:new Date().toISOString(),id:sJ,key:`sk-ccr-${(0,Dc.randomBytes)(32).toString("base64url")}`,name:"Local Gateway"}}function W0(e,t){return{createdAt:new Date(0).toISOString(),id:`key-${t+1}`,key:e.trim(),name:`API Key ${t+1}`}}function Op(e){let t=new Set,n=[];for(let r of e){let o=r?.key.trim();!r||!o||t.has(o)||(t.add(o),n.push({createdAt:r.createdAt,...r.expiresAt?{expiresAt:r.expiresAt}:{},id:r.id,key:o,...r.limits?{limits:r.limits}:{},...r.name?{name:r.name}:{}}))}return n}function IK(e){let t=e;if(typeof t.APIKEY=="string"&&t.APIKEY.trim())return!0;let n=t.APIKEYS??t.apiKeys;return Array.isArray(n)?n.some(r=>typeof r=="string"?!!r.trim():T(r)?!!(p(r.key)||p(r.value)||p(r.APIKEY)):!1):!1}function Sp(e){return e.key==="sk-123"&&e.createdAt===new Date(0).toISOString()&&(e.id==="key-1"||e.id==="legacy")&&(!e.name||e.name==="API Key 1")}function BK(e,t){return t==="legacy-json"?Np(e):e}function Np(e){if(typeof e=="string")return e.replace(/\$\{([^}]+)\}|\$([A-Z_][A-Z0-9_]*)/g,(t,n,r)=>{let o=n||r;return process.env[o]??t});if(Array.isArray(e))return e.map(Np);if(T(e)){let t={};for(let[n,r]of Object.entries(e))t[n]=Np(r);return t}return e}function yK(e){if(e)try{return Zo(new URL(e).port)}catch{return}}function T(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function mK(e){return e>=65535?e-1:e+1}function QK(e){return e==="0.0.0.0"?"127.0.0.1":e}function X(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e!="string"||!e.trim())return;let t=Number(e);return Number.isFinite(t)?t:void 0}function Pt(e){let t=X(e);return t!==void 0&&t>=0?t:void 0}function wK(e){let t=X(e);return t!==void 0&&t>0&&t<=100?t:void 0}function Kr(e){let t=X(e);return t!==void 0&&t>0?Math.trunc(t):void 0}function fe(e,t,n){return Math.min(n,Math.max(t,Math.trunc(e)))}function Zo(e){let t=X(e);if(!(!t||t<1||t>65535))return Math.trunc(t)}function rn(e){let t=new Set,n=[];for(let r of e){let o=r.trim();!o||t.has(o)||(t.add(o),n.push(o))}return n}function p(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function Di(e){return e instanceof Error?e.message:String(e)}var rD=require("node:child_process"),bK=require("node:buffer"),An=require("node:fs"),Yp=Ue(require("node:path"));var RK=require("node:child_process"),V0=require("node:fs"),ts=Ue(require("node:path"));function on(e){if(process.platform!=="win32"||ts.default.isAbsolute(e))return e;let t=[process.env.SystemRoot,process.env.windir].map(o=>o?.trim()).filter(o=>!!o),n=e.toLowerCase();return t.flatMap(o=>n==="powershell.exe"?[ts.default.join(o,"System32","WindowsPowerShell","v1.0","powershell.exe"),ts.default.join(o,"Sysnative","WindowsPowerShell","v1.0","powershell.exe")]:[ts.default.join(o,"System32",e),ts.default.join(o,"Sysnative",e)]).find(o=>(0,V0.existsSync)(o))??e}var SK="/usr/sbin/networksetup",Lc="HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",Ui=Yp.default.join(Gt,"system-proxy-snapshot.json"),Gp=class{snapshot;status={state:process.platform==="darwin"||process.platform==="win32"?"inactive":"unsupported"};upstreamProxy;async enable(t){if(this.upstreamProxy=void 0,process.platform!=="darwin"&&process.platform!=="win32")return this.status={lastError:"Automatic system proxy switching is only implemented for macOS and Windows.",state:"unsupported"},this.current();try{let n=os(t);await this.restorePersistedSnapshotIfCurrentProxyIsManaged();let r=process.platform==="win32"?await aD(n):await AD(n),o=Hp(r,n);return this.snapshot=r,this.upstreamProxy=o,VK(r),await MK(r,n),this.status={state:"active",upstream:J0(o)},this.current()}catch(n){let r=await this.restoreSnapshotAfterEnableFailure();return this.status={lastError:[jr(n),r].filter(Boolean).join(" "),state:"error"},this.current()}}async restore(){if(this.upstreamProxy=void 0,process.platform!=="darwin"&&process.platform!=="win32")return this.snapshot=void 0,this.status={lastError:"Automatic system proxy switching is only implemented for macOS and Windows.",state:"unsupported"},this.getStatus();let t=this.snapshot,n=t??eD();if(this.snapshot=void 0,!n)return this.status={state:"inactive"},this.getStatus();if(!t&&n.platform!==process.platform)return ki(),this.status={state:"inactive"},this.getStatus();try{let r=!!t||await z0(n);return r&&await qp(n),ki(),this.status={state:r?"restored":"inactive",upstream:J0(Hp(n,os(n.managedEndpoint)))},this.getStatus()}catch(r){return this.status={lastError:jr(r),state:"error"},this.getStatus()}}getStatus(){return{...this.status}}getManagedEndpointUrl(){return this.status.state==="active"?this.snapshot?.managedEndpoint:void 0}getUpstreamProxy(){if(this.upstreamProxy)return{http:this.upstreamProxy.http?{...this.upstreamProxy.http}:void 0,https:this.upstreamProxy.https?{...this.upstreamProxy.https}:void 0}}current(){return{status:this.getStatus(),upstreamProxy:this.getUpstreamProxy()}}async restorePersistedSnapshotIfCurrentProxyIsManaged(){let t=eD();if(t){if(t.platform!==process.platform){ki();return}await z0(t)&&await qp(t),ki()}}async restoreSnapshotAfterEnableFailure(){let t=this.snapshot;if(this.snapshot=void 0,this.upstreamProxy=void 0,!!t)try{await qp(t),ki();return}catch(n){return`Failed to restore the previous system proxy: ${jr(n)}`}}},Fc=new Gp;function J0(e){if(!e?.http&&!e?.https)return;if(e.http&&Li(e.http,e.https))return`HTTP/HTTPS ${Xr(e.http)}`;let t=[];return e.http&&t.push(`HTTP ${Xr(e.http)}`),e.https&&!Li(e.http,e.https)&&t.push(`HTTPS ${Xr(e.https)}`),t.join(", ")}function oD(e){if(e?.mode!=="custom")return;let t=DK(e.custom.server),n=e.custom.port;if(!t||!Number.isInteger(n)||n<1||n>65535)return;let r={host:t,password:e.custom.password,port:n,protocol:"http",username:e.custom.username.trim()};return{http:r,https:r}}function sD(e){let t=e.username??"",n=e.password??"",r=t||n?`${encodeURIComponent(t)}:${encodeURIComponent(n)}@`:"";return`${e.protocol}://${r}${Wp(e.host)}:${e.port}`}async function iD(e){if(process.platform!=="darwin"&&process.platform!=="win32")return;let t=os(e),n=process.platform==="win32"?await aD(t):await AD(t);return Hp(n,t)}function os(e){let t=new URL(e),n=Number(t.port||(t.protocol==="https:"?443:80));if(!t.hostname||!Number.isInteger(n)||n<1||n>65535)throw new Error(`Invalid proxy endpoint: ${e}`);return{host:t.hostname,port:n,url:`http://${Wp(t.hostname)}:${n}`}}function DK(e){let t=e.trim();if(!t)return"";try{return new URL(/^[a-z][a-z0-9+.-]*:\/\//i.test(t)?t:`http://${t}`).hostname}catch{return t.replace(/^[a-z][a-z0-9+.-]*:\/\//i,"").replace(/\/.*$/,"").replace(/^\[(.*)]$/,"$1")}}async function AD(e){let t=await TK(),n=[];for(let r of t)r.disabled||n.push({name:r.name,secureWeb:await Mi("-getsecurewebproxy",r.name),socks:await Mi("-getsocksfirewallproxy",r.name),web:await Mi("-getwebproxy",r.name)});return{createdAt:new Date().toISOString(),managedEndpoint:e.url,platform:"darwin",services:n,version:1}}async function aD(e){return{createdAt:new Date().toISOString(),managedEndpoint:e.url,platform:"win32",settings:await cD(),version:1}}async function TK(){return(await Uc(["-listallnetworkservices"])).split(/\r?\n/).map(t=>t.trim()).filter(t=>t&&!t.toLowerCase().startsWith("an asterisk")).map(t=>({disabled:t.startsWith("*"),name:t.startsWith("*")?t.slice(1).trim():t})).filter(t=>t.name.length>0)}async function Mi(e,t){let n=await Uc([e,t]),r=kc(n,"Enabled").toLowerCase(),o=kc(n,"Server"),s=Number(kc(n,"Port")),i=kc(n,"Authenticated Proxy Enabled").toLowerCase();return{authenticated:i==="1"||i==="yes"||i==="true",enabled:r==="yes"||r==="1"||r==="true",port:Number.isInteger(s)&&s>0?s:0,server:o}}async function kK(e,t){for(let n of e.services)await rs("-setwebproxy","-setwebproxystate",n.name,{authenticated:!1,enabled:!0,port:t.port,server:t.host}),await rs("-setsecurewebproxy","-setsecurewebproxystate",n.name,{authenticated:!1,enabled:!0,port:t.port,server:t.host}),n.socks?.enabled&&await rs("-setsocksfirewallproxy","-setsocksfirewallproxystate",n.name,{...n.socks,enabled:!1})}async function NK(e){let t=os(e.managedEndpoint);for(let n of e.services)await rs("-setwebproxy","-setwebproxystate",n.name,Z0(n.web,t)),await rs("-setsecurewebproxy","-setsecurewebproxystate",n.name,Z0(n.secureWeb,t)),n.socks&&await rs("-setsocksfirewallproxy","-setsocksfirewallproxystate",n.name,n.socks)}async function MK(e,t){if(e.platform==="win32"){await xK(e,t);return}await kK(e,t)}async function qp(e){if(e.platform==="win32"){await UK(e);return}await NK(e)}async function rs(e,t,n,r){r.server&&r.port>0&&await Uc([e,n,r.server,String(r.port),r.authenticated?"on":"off","",""]),await Uc([t,n,r.enabled?"on":"off"])}async function cD(){let e=await Ni("AutoConfigURL"),t=await Ni("AutoDetect"),n=await Ni("ProxyEnable"),r=await Ni("ProxyServer"),o=await Ni("ProxyOverride"),s=await OK();return{autoConfigUrl:e?.value,autoDetect:t?tD(t.value):void 0,hadAutoConfigUrl:!!e,hadAutoDetect:!!t,hadProxyEnable:!!n,hadProxyOverride:!!o,hadProxyServer:!!r,proxyEnable:n?tD(n.value):void 0,proxyOverride:o?.value,proxyServer:r?.value,winHttp:s}}async function xK(e,t){let n=`http=${Xr(t)};https=${Xr(t)}`;await ns("AutoConfigURL"),await xc("AutoDetect",0),await xc("ProxyEnable",1),await xi("ProxyServer",n),await xi("ProxyOverride","<local>"),e.settings.winHttp&&await GK(t).catch(r=>{console.warn(`[proxy] Failed to set Windows WinHTTP proxy: ${jr(r)}`)}),await gD()}async function UK(e){let t=e.settings;t.hadProxyEnable&&t.proxyEnable!==void 0?await xc("ProxyEnable",t.proxyEnable):await ns("ProxyEnable"),t.hadProxyServer&&t.proxyServer!==void 0?await xi("ProxyServer",t.proxyServer):await ns("ProxyServer"),t.hadProxyOverride&&t.proxyOverride!==void 0?await xi("ProxyOverride",t.proxyOverride):await ns("ProxyOverride"),t.hadAutoConfigUrl&&t.autoConfigUrl!==void 0?await xi("AutoConfigURL",t.autoConfigUrl):await ns("AutoConfigURL"),t.hadAutoDetect&&t.autoDetect!==void 0?await xc("AutoDetect",t.autoDetect):await ns("AutoDetect"),await HK(t.winHttp).catch(n=>{console.warn(`[proxy] Failed to restore Windows WinHTTP proxy: ${jr(n)}`)}),await gD()}function Hp(e,t){return e.platform==="win32"?FK(e,t):LK(e,t)}function LK(e,t){let n={};for(let r of e.services)if(!n.http&&$0(r.web,t)&&(n.http={host:r.web.server,port:r.web.port,protocol:"http"}),!n.https&&$0(r.secureWeb,t)&&(n.https={host:r.secureWeb.server,port:r.secureWeb.port,protocol:"http"}),n.http&&n.https)break;return!n.https&&n.http&&(n.https=n.http),!n.http&&n.https&&(n.http=n.https),n.http||n.https?n:void 0}function FK(e,t){if(e.settings.proxyEnable===1&&e.settings.proxyServer){let n=dD(e.settings.proxyServer,t);if(n)return n}return YK(e.settings.winHttp,t)}async function z0(e){return e.platform==="win32"?PK(e):_K(e)}async function _K(e){let t=os(e.managedEndpoint);for(let n of e.services){let r=await Mi("-getwebproxy",n.name).catch(()=>{});if(r&&Nc(r,t))return!0;let o=await Mi("-getsecurewebproxy",n.name).catch(()=>{});if(o&&Nc(o,t))return!0}return!1}async function PK(e){let t=os(e.managedEndpoint),n=await cD();return n.proxyEnable===1&&n.proxyServer&&uD(n.proxyServer,t)?!0:WK(n.winHttp,t)}function dD(e,t){let n=lD(e),r={},o=n.http??n.default,s=n.https??n.default??o;return o&&!Li(o,t)&&(r.http=o),s&&!Li(s,t)&&(r.https=s),!r.https&&r.http&&(r.https=r.http),!r.http&&r.https&&(r.http=r.https),r.http||r.https?r:void 0}function uD(e,t){let n=lD(e);return[n.default,n.http,n.https].some(r=>Li(r,t))}function lD(e){let t=e.trim();if(!t)return{};if(!t.includes("="))return{default:K0(t,"http")};let n={};for(let r of t.split(";")){let[o,...s]=r.split("="),i=o.trim().toLowerCase(),A=s.join("=").trim(),a=K0(A,"http");a&&(i==="http"?n.http=a:i==="https"&&(n.https=a))}return n}function K0(e,t){let n=e.trim();if(!n||/^socks(?:4|5)?:\/\//i.test(n))return;let r=/^https?:\/\//i.test(n)?"http":void 0;n=n.replace(/^[a-z][a-z0-9+.-]*:\/\//i,"");let o=vK(n);if(!o?.hostname)return;let s=Number(o.port||80);if(!(!Number.isInteger(s)||s<1||s>65535))return{host:o.hostname,port:s,protocol:r??t}}function vK(e){try{return new URL(`http://${e}`)}catch{try{return new URL(`http://${e.replace(/^\[?([^\]]+)\]?:(\d+)$/,"[$1]:$2")}`)}catch{return}}}async function OK(){try{return qK(await sn(on("netsh.exe"),["winhttp","show","proxy"]))}catch(e){console.warn(`[proxy] Failed to read Windows WinHTTP proxy: ${jr(e)}`);return}}function qK(e){let t=j0(X0(e,"Proxy Server")),n=j0(X0(e,"Bypass List")),r=/Direct access\s*\(no proxy server\)/i.test(e);if(!r&&!t)throw new Error("Could not parse Windows WinHTTP proxy settings.");return{bypassList:n,direct:r,proxyServer:t,raw:e}}function X0(e,t){return(t==="Proxy Server"?/^\s*Proxy Server(?:\(s\))?\s*:\s*(.+?)\s*$/im:/^\s*Bypass List\s*:\s*(.+?)\s*$/im).exec(e)?.[1]?.trim()}function j0(e){if(!e)return;let t=e.trim();return!t||/^\(none\)$/i.test(t)?void 0:t}async function GK(e){let t=`http=${Xr(e)};https=${Xr(e)}`;await sn(on("netsh.exe"),["winhttp","set","proxy",`proxy-server=${t}`,"bypass-list=<local>"])}async function HK(e){if(e){if(e.direct||!e.proxyServer){await sn(on("netsh.exe"),["winhttp","reset","proxy"]);return}await sn(on("netsh.exe"),["winhttp","set","proxy",`proxy-server=${e.proxyServer}`,...e.bypassList?[`bypass-list=${e.bypassList}`]:[]])}}function YK(e,t){if(!(!e||e.direct||!e.proxyServer))return dD(e.proxyServer,t)}function WK(e,t){return!!(e&&!e.direct&&e.proxyServer&&uD(e.proxyServer,t))}function $0(e,t){return e.enabled&&e.server.length>0&&e.port>0&&!Nc(e,t)}function Z0(e,t){return Nc(e,t)?{...e,enabled:!1}:e}function Nc(e,t){return e.enabled&&Mc(e.server)===Mc(t.host)&&e.port===t.port}function Mc(e){let t=e.trim().toLowerCase();return t==="::1"||t==="[::1]"||t==="localhost"?"127.0.0.1":t}function kc(e,t){return new RegExp(`^${XK(t)}:\\s*(.*)$`,"im").exec(e)?.[1]?.trim()??""}function VK(e){(0,An.mkdirSync)(Yp.default.dirname(Ui),{recursive:!0}),(0,An.writeFileSync)(Ui,`${JSON.stringify(e,null,2)}
|
|
275
|
+
`,"utf8")}function eD(){if((0,An.existsSync)(Ui))try{let e=JSON.parse((0,An.readFileSync)(Ui,"utf8"));if(JK(e))return e}catch{return}}function ki(){(0,An.rmSync)(Ui,{force:!0})}function JK(e){return!nD(e)||e.version!==1||typeof e.managedEndpoint!="string"?!1:e.platform==="darwin"?Array.isArray(e.services):e.platform==="win32"?nD(e.settings):!1}function Li(e,t){return!!(e&&t&&Mc(e.host)===Mc(t.host)&&e.port===t.port&&(!("protocol"in t)||e.protocol===t.protocol))}function Xr(e){let t=`${Wp(e.host)}:${e.port}`;return"protocol"in e?`${e.protocol}://${t}`:t}function Wp(e){return e.includes(":")&&!e.startsWith("[")?`[${e}]`:e}async function Ni(e){try{let t=await sn(on("reg.exe"),["query",Lc,"/v",e]);return zK(t,e)}catch{return}}function zK(e,t){for(let n of e.split(/\r?\n/)){let r=/^\s*(\S+)\s+(REG_\S+)\s+(.+?)\s*$/.exec(n);if(r?.[1].toLowerCase()===t.toLowerCase())return{type:r[2],value:r[3]}}}function tD(e){let t=e.trim().toLowerCase(),n=t.startsWith("0x")?Number.parseInt(t.slice(2),16):Number.parseInt(t,10);return Number.isFinite(n)?n:void 0}async function xc(e,t){await sn(on("reg.exe"),["add",Lc,"/v",e,"/t","REG_DWORD","/d",String(t),"/f"])}async function xi(e,t){await sn(on("reg.exe"),["add",Lc,"/v",e,"/t","REG_SZ","/d",t,"/f"])}async function ns(e){await sn(on("reg.exe"),["delete",Lc,"/v",e,"/f"]).catch(()=>{})}async function gD(){let e=[`$signature = '[DllImport("wininet.dll", SetLastError=true)] public static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int dwBufferLength);';`,"Add-Type -MemberDefinition $signature -Namespace WinInet -Name NativeMethods;","[WinInet.NativeMethods]::InternetSetOption([IntPtr]::Zero, 39, [IntPtr]::Zero, 0) | Out-Null;","[WinInet.NativeMethods]::InternetSetOption([IntPtr]::Zero, 37, [IntPtr]::Zero, 0) | Out-Null;"].join(" ");await sn(on("powershell.exe"),["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-Command",e]).catch(t=>{console.warn(`[proxy] Failed to notify Windows system proxy change: ${jr(t)}`)})}function Uc(e){return sn(SK,e).then(t=>{if(KK(t))throw new Error(t.trim());return t})}function sn(e,t){return new Promise((n,r)=>{(0,rD.execFile)(e,t,{windowsHide:process.platform==="win32"},(o,s,i)=>{let A=i?.trim()||s?.trim();if(o){r(new Error(A||o.message));return}n(s)})})}function KK(e){return!!(e&&(/AuthorizationCreate\(\) failed/i.test(e)||/^\*\* Error:/m.test(e)))}function XK(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function jr(e){return e instanceof Error?e.message:String(e)}function nD(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var jK=30*1e3,$K="http://127.0.0.1:65535",fD=new Map,$r,Fi;async function wc(e,t){let n=aX(e);if(!n||!cX(n)||dX(n))return fetch(e,t);let r=await eX(n);return r?fetch(e,{...t,dispatcher:iX(r)}):fetch(e,t)}function ZK(){let e=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy;return e?e.trim():void 0}async function eX(e){let t=await oX(),n=t?.proxy.upstream.mode??"system";if(n==="none")return;let r=e.protocol==="https:"?"https":"http";if(n==="custom"){let i=pD(oD(t?.proxy.upstream),r);return i?hD(i):void 0}let o=await tX(t),s=pD(o.upstreamProxy,r);return s?hD(s):ZK()}async function tX(e){let t=Date.now(),n=Fc.getManagedEndpointUrl(),r=e?Vp(e):void 0;return $r&&$r.expiresAt>t&&(!n||$r.managedEndpointUrl===n)&&(!r||$r.managedEndpointUrl===r)?$r:Fi||(Fi=nX(e).then(o=>($r={...o,expiresAt:Date.now()+jK},$r)).finally(()=>{Fi=void 0}),Fi)}async function nX(e){let{managedEndpointUrl:t,systemProxyActive:n}=await rX(e);if(n){let r=Fc.getUpstreamProxy();if(r)return{managedEndpointUrl:t,upstreamProxy:r}}try{return{managedEndpointUrl:t,upstreamProxy:await iD(t)}}catch(r){return console.warn(`[network] Failed to read system proxy: ${Jp(r)}`),{managedEndpointUrl:t}}}async function rX(e){let t=Fc.getManagedEndpointUrl();if(t)return{managedEndpointUrl:t,systemProxyActive:!0};if(e)return{managedEndpointUrl:Vp(e),systemProxyActive:e.proxy.enabled&&e.proxy.systemProxy};try{return e=await Up(),{managedEndpointUrl:Vp(e),systemProxyActive:e.proxy.enabled&&e.proxy.systemProxy}}catch(n){console.warn(`[network] Failed to read proxy config: ${Jp(n)}`)}return{managedEndpointUrl:$K,systemProxyActive:!1}}async function oX(){try{return await Up()}catch(e){console.warn(`[network] Failed to read proxy config: ${Jp(e)}`);return}}function Vp(e){let t=sX(e.gateway.host);return`http://${AX(t)}:${e.gateway.port}`}function sX(e){let t=e.trim();return!t||t==="0.0.0.0"||t==="::"||t==="[::]"?"127.0.0.1":t}function pD(e,t){if(e)return t==="https"?e.https??e.http:e.http??e.https}function iX(e){let t=fD.get(e);if(t)return t;let n=new CD.ProxyAgent(e);return fD.set(e,n),n}function hD(e){return sD(e)}function AX(e){return e.includes(":")&&!e.startsWith("[")?`[${e}]`:e}function aX(e){try{return e instanceof URL?e:typeof e=="string"?new URL(e):new URL(e.url)}catch{return}}function cX(e){return e.protocol==="http:"||e.protocol==="https:"}function dX(e){let t=gX(e.hostname);if(t==="localhost"||t==="127.0.0.1"||t.startsWith("127.")||t==="0.0.0.0"||t==="::1"||t==="0:0:0:0:0:0:0:1")return!0;let n=process.env.NO_PROXY||process.env.no_proxy;if(!n)return!1;let r=n.split(",").map(o=>o.trim()).filter(Boolean);for(let o of r){if(o==="*")return!0;if(o.startsWith(".")){if(t.endsWith(o.toLowerCase())||t===o.slice(1).toLowerCase())return!0;continue}if(o.includes("/")&&uX(t)){if(lX(t,o))return!0;continue}if(t===o.toLowerCase())return!0}return!1}function uX(e){return/^\d+\.\d+\.\d+\.\d+$/.test(e)}function lX(e,t){let[n,r]=t.split("/"),o=parseInt(r,10);if(isNaN(o)||o<0||o>32)return!1;let s=ED(e),i=ED(n);if(s===null||i===null)return!1;let A=o===0?0:-1<<32-o>>>0;return(s&A)===(i&A)}function ED(e){let t=e.split(".");if(t.length!==4)return null;let n=0;for(let r of t){let o=parseInt(r,10);if(isNaN(o)||o<0||o>255)return null;n=n<<8|o}return n>>>0}function gX(e){return e.trim().toLowerCase().replace(/^\[(.*)]$/,"$1").replace(/\.$/,"")}function Jp(e){return e instanceof Error?e.message:String(e)}var ID=1440*60*1e3,fX=5e3,pX="https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json",hX="https://models.dev/api.json",EX="https://openrouter.ai/api/v1/models",Sn,zp;async function Kp(e){if(!wD(e))return;let t=e.model?.trim();if(!t||t==="unknown")return;let n=yD(e,t);if(n)return n;let r=await RD();return mD(e,r.index,t)}async function BD(){await RD()}function Xp(){return!Sn||Date.now()-Sn.loadedAt>=ID}function vc(e){if(!wD(e))return;let t=e.model?.trim();if(!t||t==="unknown")return;let n=yD(e,t);if(n)return n;if(!(Xp()||!Sn))return mD(e,Sn.index,t)}function yD(e,t){let n=e.pricing,r=Dt(n?.inputUsdPerMillionTokens),o=Dt(n?.outputUsdPerMillionTokens);if(r===void 0||o===void 0)return;let s={cacheReadUsdPerToken:Dt(n?.cacheReadUsdPerMillionTokens),cacheWrite1hUsdPerToken:Dt(n?.cacheWrite1hUsdPerMillionTokens),cacheWrite5mUsdPerToken:Dt(n?.cacheWrite5mUsdPerMillionTokens??n?.cacheWriteUsdPerMillionTokens),cacheWriteUsdPerToken:Dt(n?.cacheWriteUsdPerMillionTokens),inputUsdPerToken:r,model:t,outputUsdPerToken:o,provider:e.provider,source:"custom"};return QD(e,s)}function mD(e,t,n){let r=QX(t,n,e.provider);if(r)return QD(e,r)}function QD(e,t){let n=Tt(e.inputTokens),r=Tt(e.outputTokens),o=Tt(e.cacheReadTokens),s=Tt(e.cacheWrite5mTokens),i=Tt(e.cacheWrite1hTokens),A=s+i,a=Math.max(Tt(e.cacheWriteTokens),A),c=Math.max(0,a-A),d=t.cacheWrite5mUsdPerToken??t.cacheWriteUsdPerToken??t.inputUsdPerToken,l=t.cacheWrite1hUsdPerToken??d,u=n*t.inputUsdPerToken+r*t.outputUsdPerToken+o*(t.cacheReadUsdPerToken??t.inputUsdPerToken)+s*d+i*l+c*d;if(!(!Number.isFinite(u)||u<=0))return{amountUsd:u,model:t.model,source:t.source}}function wD(e){return Tt(e.inputTokens)+Tt(e.outputTokens)+Tt(e.cacheReadTokens)+Tt(e.cacheWriteTokens)+Tt(e.cacheWrite5mTokens)+Tt(e.cacheWrite1hTokens)>0}async function RD(){if(Sn&&Date.now()-Sn.loadedAt<ID)return Sn;zp??=CX();try{return Sn=await zp,Sn}finally{zp=void 0}}async function CX(){let t=(await Promise.allSettled([IX(),BX(),yX()])).flatMap(n=>n.status==="fulfilled"?n.value:[]);return{index:wX(t),loadedAt:Date.now()}}async function IX(){let e=await $p(pX);return an(e)?Object.entries(e).map(([t,n])=>{if(t==="sample_spec"||!an(n))return;let r=_i(n,["input_cost_per_token","prompt_cost_per_token"]),o=_i(n,["output_cost_per_token","completion_cost_per_token","output_cost_per_reasoning_token"]);return jp({cacheReadUsdPerToken:_i(n,["cache_read_input_token_cost","input_cache_read_cost_per_token","cache_read_cost_per_token"]),cacheWriteUsdPerToken:_i(n,["cache_creation_input_token_cost","input_cache_write_cost_per_token","cache_write_cost_per_token"]),cacheWrite1hUsdPerToken:_i(n,["cache_creation_input_token_cost_above_1hr","input_cache_write_1h"]),inputUsdPerToken:r,model:t,outputUsdPerToken:o,provider:_c(n.litellm_provider),source:"litellm"})}).filter(t=>!!t):[]}async function BX(){let e=await $p(hX);if(!an(e))return[];let t=[];for(let[n,r]of Object.entries(e))if(!(!an(r)||!an(r.models)))for(let[o,s]of Object.entries(r.models)){if(!an(s)||!an(s.cost))continue;let i=s.cost,A=mX({cacheReadUsdPerMillionTokens:tt(i.cache_read),cacheWriteUsdPerMillionTokens:tt(i.cache_write),cacheWrite1hUsdPerMillionTokens:tt(i.cache_write_1h),cacheWrite5mUsdPerMillionTokens:tt(i.cache_write_5m)??tt(i.cache_write),inputUsdPerMillionTokens:tt(i.input),model:_c(s.id)||o,outputUsdPerMillionTokens:tt(i.output),provider:n,source:"models.dev"});A&&t.push(A)}return t}async function yX(){let e=await $p(EX);return!an(e)||!Array.isArray(e.data)?[]:e.data.map(t=>{if(!an(t)||!an(t.pricing))return;let n=t.pricing;return jp({cacheReadUsdPerToken:tt(n.input_cache_read),cacheWriteUsdPerToken:tt(n.input_cache_write),cacheWrite1hUsdPerToken:tt(n.input_cache_write_1h),cacheWrite5mUsdPerToken:tt(n.input_cache_write),inputUsdPerToken:tt(n.prompt),model:_c(t.id)||_c(t.canonical_slug),outputUsdPerToken:tt(n.completion),provider:"openrouter",source:"openrouter"})}).filter(t=>!!t)}function mX(e){return jp({cacheReadUsdPerToken:Dt(e.cacheReadUsdPerMillionTokens),cacheWrite1hUsdPerToken:Dt(e.cacheWrite1hUsdPerMillionTokens),cacheWrite5mUsdPerToken:Dt(e.cacheWrite5mUsdPerMillionTokens??e.cacheWriteUsdPerMillionTokens),cacheWriteUsdPerToken:Dt(e.cacheWriteUsdPerMillionTokens),inputUsdPerToken:Dt(e.inputUsdPerMillionTokens),model:e.model,outputUsdPerToken:Dt(e.outputUsdPerMillionTokens),provider:e.provider,source:e.source})}function jp(e){let t=e.model?.trim(),n=ss(e.inputUsdPerToken),r=ss(e.outputUsdPerToken);if(!(!t||n===void 0||r===void 0))return{cacheReadUsdPerToken:ss(e.cacheReadUsdPerToken),cacheWrite1hUsdPerToken:ss(e.cacheWrite1hUsdPerToken),cacheWrite5mUsdPerToken:ss(e.cacheWrite5mUsdPerToken??e.cacheWriteUsdPerToken),cacheWriteUsdPerToken:ss(e.cacheWriteUsdPerToken),inputUsdPerToken:n,model:t,outputUsdPerToken:r,provider:e.provider?.trim()||void 0,source:e.source}}function QX(e,t,n){let r=bX(t,n),s=Zr(n).includes("openrouter")?["openrouter","models.dev","litellm"]:["models.dev","litellm","openrouter"];for(let i of s){let A=e.get(i);if(A)for(let a of r){let c=A.get(a);if(c)return c}}}function wX(e){let t=new Map;for(let n of e){if(n.source==="custom")continue;let r=t.get(n.source);r||(r=new Map,t.set(n.source,r));for(let o of RX(n))r.has(o)||r.set(o,n)}return t}function RX(e){let t=[Zr(e.model),Zr(Pc(e.model))];return e.provider&&(t.push(Zr(`${e.provider}/${e.model}`)),t.push(Zr(`${e.provider}/${Pc(e.model)}`))),bD(t.filter(Boolean))}function bX(e,t){let n=e.trim(),r=t?.trim()||"",o=SX(r),s=[n,Pc(n),...o.map(i=>`${i}/${n}`),...o.map(i=>`${i}/${Pc(n)}`)];return bD(s.map(Zr).filter(Boolean))}function SX(e){let t=Zr(e),n=new Set,r=o=>n.add(o);return t.includes("openai")&&r("openai"),(t.includes("anthropic")||t.includes("claude"))&&r("anthropic"),(t.includes("gemini")||t.includes("google"))&&r("google"),t.includes("deepseek")&&r("deepseek"),(t.includes("moonshot")||t.includes("kimi"))&&r("moonshotai"),t.includes("mistral")&&r("mistral"),(t.includes("zhipu")||t.includes("bigmodel")||t.includes("glm"))&&r("zhipuai"),(t.includes("zai")||t.includes("z-ai")||t.includes("z.ai"))&&r("z-ai"),t.includes("qwen")&&r("qwen"),(t.includes("alibaba")||t.includes("bailian")||t.includes("dashscope"))&&r("alibaba"),t.includes("siliconflow")&&r("siliconflow"),t.includes("openrouter")&&r("openrouter"),Array.from(n)}async function $p(e){let t=new AbortController,n=setTimeout(()=>t.abort(),fX);try{let r=await wc(e,{headers:{accept:"application/json"},signal:t.signal});if(!r.ok)throw new Error(`HTTP ${r.status}`);return await r.json()}finally{clearTimeout(n)}}function _i(e,t){for(let n of t){let r=tt(e[n]);if(r!==void 0)return r}}function tt(e){let t=typeof e=="number"?e:typeof e=="string"?Number(e):Number.NaN;return Number.isFinite(t)&&t>=0?t:void 0}function _c(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function ss(e){return e!==void 0&&Number.isFinite(e)&&e>=0?e:void 0}function Dt(e){return e===void 0?void 0:e/1e6}function Tt(e){let t=typeof e=="number"?e:Number(e);return Number.isFinite(t)&&t>0?t:0}function Zr(e){return e?.trim().toLowerCase().replace(/[\s:_]+/g,"-").replace(/-+/g,"-")??""}function Pc(e){let t=e.trim().replace(/^\/+|\/+$/g,"");return t.split("/").filter(Boolean).at(-1)??t}function bD(e){return Array.from(new Set(e))}function an(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Pi(e,t={}){if(!e)return;if(!DX(e,t)||e.inputTokens===void 0)return e;let r=Zp(e.cacheReadTokens)+Zp(e.cacheWriteTokens);return r<=0?e:{...e,inputTokens:Math.max(0,Zp(e.inputTokens)-r)}}function DX(e,t){if(t.source==="responseBody")return e.inputIncludesCacheTokens!==void 0?e.inputIncludesCacheTokens:t.usageHint?.inputIncludesCacheTokens!==void 0?t.usageHint.inputIncludesCacheTokens:SD(t.path);let n=TX(t.providerProtocol);return n!==void 0?n:e.inputIncludesCacheTokens!==void 0?e.inputIncludesCacheTokens:t.usageHint?.inputIncludesCacheTokens!==void 0?t.usageHint.inputIncludesCacheTokens:SD(t.path)}function TX(e){if(e==="anthropic_messages")return!1;if(e==="openai_chat_completions"||e==="openai_responses"||e==="gemini_generate_content"||e==="gemini_interactions")return!0}function SD(e){let t=e?.toLowerCase()??"";if(t){if(t.includes("/chat/completions")||t.includes("/responses")||t.includes(":generatecontent")||t.includes("/interactions"))return!0;if(t.includes("/messages"))return!1}}function Zp(e){return e!==void 0&&Number.isFinite(e)&&e>0?Math.trunc(e):0}var oh=require("node:crypto"),qi=require("node:fs/promises"),Yc=Ue(require("node:path")),GD=require("node:string_decoder"),sh=require("node:worker_threads");var DD=Buffer.from(";base64,"),eh=Buffer.from("data:image/"),kX=Buffer.from('"data"'),TD=Buffer.from('"base64"'),NX=[Buffer.from("inline_data"),Buffer.from("inlineData")],MX=[Buffer.from('"b64_json"'),Buffer.from('"image_base64"'),Buffer.from('"imageBase64"')],kD=Buffer.from("image/");function ir(e){let t=xX(e);if(t.length===0)return{buffer:e,compacted:!1,imageCount:0,omittedBytes:0};let n=[],r=0,o=0,s=0;for(let A of t){let a=e.subarray(r,A.start),c=A.end-A.start,d=OX(e,A),l=Buffer.from(`[base64 image omitted from log; encoded_bytes=${c}; decoded_bytes~=${d}]`);n.push(a,l),o+=a.byteLength+l.byteLength,s+=c,r=A.end}let i=e.subarray(r);return n.push(i),o+=i.byteLength,{buffer:Buffer.concat(n,o),compacted:!0,imageCount:t.length,omittedBytes:s}}function xX(e){let t=[...UX(e),...MX.flatMap(r=>ND(e,r,!1)),...ND(e,kX,!0)].sort((r,o)=>r.start-o.start||r.end-o.end),n=[];for(let r of t){let o=n.at(-1);o&&r.start<o.end||n.push(r)}return n}function UX(e){let t=[],n=0;for(;n<e.byteLength;){let r=e.indexOf(eh,n);if(r<0)break;let o=e.indexOf(DD,r+eh.byteLength);if(o<0||o-r>192){n=r+eh.byteLength;continue}let s=o+DD.byteLength,i=LD(e,s);i-s>=16384&&t.push({end:i,start:s}),n=Math.max(i,s+1)}return t}function ND(e,t,n){let r=[],o=0;for(;o<e.byteLength;){let s=e.indexOf(t,o);if(s<0)break;o=s+t.byteLength;let i=PX(e,o);if(i===void 0)continue;let A=LD(e,i);n&&!LX(e,s,A)||(A-i>=16384&&r.push({end:A,start:i}),o=Math.max(o,A))}return r}function LX(e,t,n){let r=e.lastIndexOf(123,t);if(r<0)return!1;let o=FX(e,n),s=Oc(e,kD,r,t)||Oc(e,kD,n,o),i=Oc(e,TD,r,t)||Oc(e,TD,n,o)||_X(e,r,NX);return s&&i}function FX(e,t){let n=1,r=!1,o=!1;for(let s=Math.min(e.byteLength,t+1);s<e.byteLength;s+=1){let i=e[s];if(r){o?o=!1:i===92?o=!0:i===34&&(r=!1);continue}if(i===34)r=!0;else if(i===123)n+=1;else if(i===125&&--n===0)return s+1}return e.byteLength}function _X(e,t,n){let r=xD(e,t-1);if(e[r]!==58||(r=xD(e,r-1),e[r]!==34))return!1;let o=r;for(r-=1;r>=0&&e[r]!==34;)r-=1;if(r<0)return!1;let s=e.subarray(r+1,o);return n.some(i=>s.equals(i))}function Oc(e,t,n,r){let o=e.indexOf(t,n);return o>=0&&o<r}function PX(e,t){let n=MD(e,t);if(e[n]===58)return n=MD(e,n+1),e[n]===34?n+1:void 0}function MD(e,t){let n=t;for(;n<e.byteLength;){let r=e[n];if(r!==32&&r!==9&&r!==10&&r!==13)break;n+=1}return n}function xD(e,t){let n=t;for(;n>=0;){let r=e[n];if(r!==32&&r!==9&&r!==10&&r!==13)break;n-=1}return n}function LD(e,t){let n=e.indexOf(34,t),r=n>=0?n:e.byteLength;return r<=t||!vX(e,t,r)?t:r}function vX(e,t,n){let o=Math.min(n,t+64);for(let i=t;i<o;i+=1)if(!UD(e[i]))return!1;let s=Math.max(o,n-64);for(let i=s;i<n;i+=1)if(!UD(e[i]))return!1;return!0}function UD(e){return e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===43||e===47||e===61||e===45||e===95}function OX(e,t){let n=0;return e[t.end-1]===61&&(n+=1),e[t.end-2]===61&&(n+=1),Math.max(0,Math.floor((t.end-t.start)*3/4)-n)}var Gc=require("node:fs"),FD=require("node:path");var qX=3e4,th=2880*60*1e3,GX=1e3,qc=class{database;pendingInsertStatement;pendingReadStatement;readStatement;requestLogsDatabase;requestLogsDbFile;requestLogsReadStatement;requestLogsUnavailableUntil=0;runtimeId;upsertStatement;constructor(t,n,r){(0,Gc.mkdirSync)((0,FD.dirname)(t),{recursive:!0});let o=bn(t);try{o.pragma("journal_mode = WAL"),o.pragma("synchronous = NORMAL"),o.pragma("busy_timeout = 0"),o.exec(`
|
|
276
|
+
CREATE TABLE IF NOT EXISTS request_log_admissions (
|
|
277
|
+
request_id TEXT PRIMARY KEY,
|
|
278
|
+
state TEXT NOT NULL,
|
|
279
|
+
runtime_id TEXT NOT NULL,
|
|
280
|
+
body_capture_policy TEXT NOT NULL DEFAULT 'all',
|
|
281
|
+
body_capture_max_bytes INTEGER NOT NULL DEFAULT 0,
|
|
282
|
+
reason TEXT NOT NULL DEFAULT '',
|
|
283
|
+
recorded_at INTEGER NOT NULL
|
|
284
|
+
);
|
|
285
|
+
CREATE INDEX IF NOT EXISTS request_log_admissions_state_runtime_idx
|
|
286
|
+
ON request_log_admissions(state, runtime_id);
|
|
287
|
+
CREATE INDEX IF NOT EXISTS request_log_admissions_recorded_at_idx
|
|
288
|
+
ON request_log_admissions(recorded_at);
|
|
289
|
+
CREATE TABLE IF NOT EXISTS request_log_admission_runtimes (
|
|
290
|
+
runtime_id TEXT PRIMARY KEY,
|
|
291
|
+
owner_pid INTEGER NOT NULL,
|
|
292
|
+
heartbeat_at INTEGER NOT NULL,
|
|
293
|
+
lease_expires_at INTEGER NOT NULL
|
|
294
|
+
);
|
|
295
|
+
CREATE INDEX IF NOT EXISTS request_log_admission_runtimes_lease_idx
|
|
296
|
+
ON request_log_admission_runtimes(lease_expires_at);
|
|
297
|
+
CREATE TABLE IF NOT EXISTS request_log_raw_admission_pending (
|
|
298
|
+
request_id TEXT PRIMARY KEY,
|
|
299
|
+
first_seen_at INTEGER NOT NULL,
|
|
300
|
+
last_seen_at INTEGER NOT NULL
|
|
301
|
+
);
|
|
302
|
+
CREATE INDEX IF NOT EXISTS request_log_raw_admission_pending_seen_idx
|
|
303
|
+
ON request_log_raw_admission_pending(first_seen_at);
|
|
304
|
+
`),WX(o),o.exec(`
|
|
305
|
+
UPDATE request_log_admissions
|
|
306
|
+
SET state = 'committed', reason = ''
|
|
307
|
+
WHERE state = 'consumed'
|
|
308
|
+
`),this.database=o,this.requestLogsDbFile=n,this.runtimeId=r,this.readStatement=o.prepare(`
|
|
309
|
+
SELECT state, body_capture_policy, body_capture_max_bytes, reason, recorded_at
|
|
310
|
+
FROM request_log_admissions
|
|
311
|
+
WHERE request_id = ?
|
|
312
|
+
LIMIT 1
|
|
313
|
+
`),this.upsertStatement=o.prepare(`
|
|
314
|
+
INSERT INTO request_log_admissions (
|
|
315
|
+
request_id,
|
|
316
|
+
state,
|
|
317
|
+
runtime_id,
|
|
318
|
+
body_capture_policy,
|
|
319
|
+
body_capture_max_bytes,
|
|
320
|
+
reason,
|
|
321
|
+
recorded_at
|
|
322
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
323
|
+
ON CONFLICT(request_id) DO UPDATE SET
|
|
324
|
+
state = excluded.state,
|
|
325
|
+
runtime_id = excluded.runtime_id,
|
|
326
|
+
body_capture_policy = excluded.body_capture_policy,
|
|
327
|
+
body_capture_max_bytes = excluded.body_capture_max_bytes,
|
|
328
|
+
reason = excluded.reason,
|
|
329
|
+
recorded_at = excluded.recorded_at
|
|
330
|
+
`),this.pendingReadStatement=o.prepare(`
|
|
331
|
+
SELECT first_seen_at
|
|
332
|
+
FROM request_log_raw_admission_pending
|
|
333
|
+
WHERE request_id = ?
|
|
334
|
+
`),this.pendingInsertStatement=o.prepare(`
|
|
335
|
+
INSERT INTO request_log_raw_admission_pending (request_id, first_seen_at, last_seen_at)
|
|
336
|
+
VALUES (?, ?, ?)
|
|
337
|
+
ON CONFLICT(request_id) DO NOTHING
|
|
338
|
+
`),this.heartbeat(r),this.prune()}catch(s){throw o.close(),s}}close(){try{this.database.prepare("DELETE FROM request_log_admission_runtimes WHERE runtime_id = ?").run(this.runtimeId)}finally{this.closeRequestLogsDatabase(),this.database.close()}}heartbeat(t){let n=Date.now();this.database.prepare(`
|
|
339
|
+
INSERT INTO request_log_admission_runtimes (
|
|
340
|
+
runtime_id,
|
|
341
|
+
owner_pid,
|
|
342
|
+
heartbeat_at,
|
|
343
|
+
lease_expires_at
|
|
344
|
+
) VALUES (?, ?, ?, ?)
|
|
345
|
+
ON CONFLICT(runtime_id) DO UPDATE SET
|
|
346
|
+
owner_pid = excluded.owner_pid,
|
|
347
|
+
heartbeat_at = excluded.heartbeat_at,
|
|
348
|
+
lease_expires_at = excluded.lease_expires_at
|
|
349
|
+
`).run(t,process.pid,n,n+qX),HX(this.database,this.requestLogsDbFile,t)}markCommitted(t,n){this.database.prepare(`
|
|
350
|
+
UPDATE request_log_admissions
|
|
351
|
+
SET state = 'committed', reason = '', recorded_at = ?
|
|
352
|
+
WHERE request_id = ? AND state = 'pending' AND runtime_id = ?
|
|
353
|
+
`).run(Date.now(),t,n)}prune(t=Date.now()){this.database.prepare(`
|
|
354
|
+
DELETE FROM request_log_admissions
|
|
355
|
+
WHERE state IN ('committed', 'rejected') AND recorded_at < ?
|
|
356
|
+
`).run(t-th),this.database.prepare(`
|
|
357
|
+
DELETE FROM request_log_raw_admission_pending
|
|
358
|
+
WHERE first_seen_at < ?
|
|
359
|
+
`).run(t-th),this.database.prepare(`
|
|
360
|
+
DELETE FROM request_log_admission_runtimes
|
|
361
|
+
WHERE lease_expires_at < ? AND runtime_id <> ?
|
|
362
|
+
`).run(t-th,this.runtimeId)}read(t){let n=this.readStatement.get(t);return n?YX(n):void 0}remember(t){this.database.exec("BEGIN IMMEDIATE");try{this.upsertStatement.run(t.requestId,t.accepted?"pending":"rejected",t.runtimeId,t.bodyCapturePolicy??"all",eo(t.bodyCaptureMaxBytes),t.reason??"",Date.now()),this.database.prepare("DELETE FROM request_log_raw_admission_pending WHERE request_id = ?").run(t.requestId),this.database.exec("COMMIT")}catch(n){throw this.database.inTransaction&&this.database.exec("ROLLBACK"),n}}resolveForRawTrace(t,n){let r=this.read(t);if(r&&r.state!=="pending")return r;let o=this.readCommittedRequestLogAdmission(t);if(o.state==="found")return o.admission;if(o.state==="unavailable")return"pending";if(r)return r;let s=Date.now(),i=this.pendingReadStatement.get(t),A=i?eo(i.first_seen_at):s;if(i&&s-A<Math.max(1,n))return"pending";this.database.exec("BEGIN IMMEDIATE");try{let a=this.read(t);if(a)return this.database.exec("COMMIT"),a;let c=this.pendingReadStatement.get(t),d=c?eo(c.first_seen_at):A;return c&&s-d>=Math.max(1,n)?(this.upsertStatement.run(t,"rejected",this.runtimeId,"none",0,"record_missing",s),this.database.prepare("DELETE FROM request_log_raw_admission_pending WHERE request_id = ?").run(t),this.database.exec("COMMIT"),this.read(t)):(this.pendingInsertStatement.run(t,d,s),this.database.exec("COMMIT"),"pending")}catch(a){throw this.database.inTransaction&&this.database.exec("ROLLBACK"),a}}closeRequestLogsDatabase(){try{this.requestLogsDatabase?.close()}catch{}this.requestLogsDatabase=void 0,this.requestLogsReadStatement=void 0}readCommittedRequestLogAdmission(t){if(!(0,Gc.existsSync)(this.requestLogsDbFile))return{state:"missing"};if(Date.now()<this.requestLogsUnavailableUntil)return{state:"unavailable"};try{this.requestLogsDatabase||(this.requestLogsDatabase=bn(this.requestLogsDbFile,{fileMustExist:!0,readonly:!0}),this.requestLogsDatabase.pragma("busy_timeout = 0"),this.requestLogsReadStatement=this.requestLogsDatabase.prepare(`
|
|
363
|
+
SELECT
|
|
364
|
+
gateway_body_capture_policy,
|
|
365
|
+
gateway_body_capture_max_bytes,
|
|
366
|
+
completed_at
|
|
367
|
+
FROM request_logs
|
|
368
|
+
WHERE request_id = ?
|
|
369
|
+
ORDER BY id DESC
|
|
370
|
+
LIMIT 1
|
|
371
|
+
`)),this.requestLogsUnavailableUntil=0;let n=this.requestLogsReadStatement.get(t);return n?{admission:{accepted:!0,bodyCapturePolicy:_D(n.gateway_body_capture_policy),bodyCaptureMaxBytes:eo(n.gateway_body_capture_max_bytes),recordedAt:zX(n.completed_at),state:"committed"},state:"found"}:{state:"missing"}}catch{return this.closeRequestLogsDatabase(),this.requestLogsUnavailableUntil=Date.now()+GX,{state:"unavailable"}}}};function HX(e,t,n){let r=Date.now(),s=e.prepare(`
|
|
372
|
+
SELECT
|
|
373
|
+
admissions.runtime_id,
|
|
374
|
+
runtimes.lease_expires_at
|
|
375
|
+
FROM request_log_admissions AS admissions
|
|
376
|
+
LEFT JOIN request_log_admission_runtimes AS runtimes
|
|
377
|
+
ON runtimes.runtime_id = admissions.runtime_id
|
|
378
|
+
WHERE admissions.state = 'pending' AND admissions.runtime_id <> ?
|
|
379
|
+
GROUP BY admissions.runtime_id
|
|
380
|
+
`).all(n).filter(A=>eo(A.lease_expires_at)<=r).map(A=>String(A.runtime_id??"")).filter(Boolean);if(s.length===0)return;let i=!1;try{e.prepare("ATTACH DATABASE ? AS request_logs_db").run(t),i=!0;for(let A of s)e.prepare(`
|
|
381
|
+
UPDATE request_log_admissions
|
|
382
|
+
SET
|
|
383
|
+
state = CASE
|
|
384
|
+
WHEN EXISTS (
|
|
385
|
+
SELECT 1
|
|
386
|
+
FROM request_logs_db.request_logs
|
|
387
|
+
WHERE request_logs.request_id = request_log_admissions.request_id
|
|
388
|
+
) THEN 'committed'
|
|
389
|
+
ELSE 'rejected'
|
|
390
|
+
END,
|
|
391
|
+
reason = CASE
|
|
392
|
+
WHEN EXISTS (
|
|
393
|
+
SELECT 1
|
|
394
|
+
FROM request_logs_db.request_logs
|
|
395
|
+
WHERE request_logs.request_id = request_log_admissions.request_id
|
|
396
|
+
) THEN ''
|
|
397
|
+
ELSE 'writer_unavailable'
|
|
398
|
+
END,
|
|
399
|
+
recorded_at = ?
|
|
400
|
+
WHERE state = 'pending' AND runtime_id = ?
|
|
401
|
+
`).run(r,A)}catch(A){console.warn(`[request-log] Admission reconciliation deferred: ${KX(A)}`)}finally{i&&e.exec("DETACH DATABASE request_logs_db")}}function YX(e){let t=VX(e.state);return{accepted:t==="committed"||t==="pending",bodyCapturePolicy:_D(e.body_capture_policy),bodyCaptureMaxBytes:eo(e.body_capture_max_bytes),reason:JX(e.reason),recordedAt:eo(e.recorded_at),state:t}}function WX(e){e.prepare("PRAGMA table_info('request_log_admissions')").all().some(n=>n.name==="body_capture_policy")||e.exec("ALTER TABLE request_log_admissions ADD COLUMN body_capture_policy TEXT NOT NULL DEFAULT 'all'")}function _D(e){return e==="errors"||e==="none"?e:"all"}function VX(e){return e==="committed"||e==="pending"?e:"rejected"}function eo(e){let t=Number(e);return Number.isFinite(t)?Math.max(0,Math.floor(t)):0}function JX(e){return typeof e=="string"&&e?e:void 0}function zX(e){let t=Date.parse(String(e??""));return Number.isFinite(t)?t:Date.now()}function KX(e){return e instanceof Error?e.message:String(e)}var XX=new Set(["api-key","authorization","cookie","ocp-apim-subscription-key","proxy-authorization","set-cookie","x-api-key","x-auth-api-key-id","x-auth-sub","x-goog-api-key"]),jX=/(?:^|[-_.])(?:auth(?:orization)?|bearer|cookie|credential|csrf|jwt|key|pass(?:word|wd)?|secret|signature|token)(?:$|[-_.])/i;function vi(e){let t=e.trim().toLowerCase();return XX.has(t)||jX.test(t)}var K8=2*1024;var X8=256*1024;function PD(e){let t=e.hops.map($X);return t.every((n,r)=>n===e.hops[r])?e:{...e,hops:t}}function $X(e){return e.changes.some(t=>t.scope==="body")?{...e,changes:e.changes.map(t=>{if(t.scope!=="body")return t;let{after:n,before:r,...o}=t;return o})}:e}var ZX=128*1024*1024,ej=3,tj=5e3,nj=2e4,rj=600*1e3,oj=1e4,sj=600*1e3,ij=5,Aj=100,ih=class{accepted=0;admissionHeartbeatTimer;admissionLastPrunedAt=0;admissionLastWarningAt=0;admissionOperationKeys=new Set;admissionOperations=new Map;admissionOverlay=new Map;admissionRetryTimer;admissionStore;batchId=0;closed=!1;committed=0;cleanupTasks=new Set;degraded=0;dropped=0;flushTimer;inFlight=new Map;nextRequestId=0;nextAdmissionOperationId=0;nextAdmissionOverlayVersion=0;nextSequence=0;options;outstandingBytes=0;queryRequests=new Map;queryWorker;queryWorkerReady;queue=[];revision=0;runtimeId=(0,oh.randomUUID)();writerRequests=new Map;writerRestartCount=0;writerWorker;writerWorkerReady;constructor(t){this.options={admissionDbFile:t.admissionDbFile??`${t.dbFile}.admissions.sqlite`,admissionMaxPendingOperations:cn(t.admissionMaxPendingOperations,nj),admissionOperationMaxAgeMs:cn(t.admissionOperationMaxAgeMs,rj),admissionOverlayMaxEntries:cn(t.admissionOverlayMaxEntries,oj),admissionOverlayTtlMs:cn(t.admissionOverlayTtlMs,sj),batchMaxBytes:cn(t.batchMaxBytes,4*1024*1024),batchMaxItems:cn(t.batchMaxItems,50),batchMaxWaitMs:cn(t.batchMaxWaitMs,10),dbFile:t.dbFile,pendingAdmissionTtlMs:cn(t.pendingAdmissionTtlMs,300*1e3),queueMaxBytes:cn(t.queueMaxBytes,ZX),queueMaxItems:cn(t.queueMaxItems,2e3),rawTraceSpoolDir:t.rawTraceSpoolDir??iA,workerFile:t.workerFile??Yc.default.join(__dirname,"request-log-worker.js")}}enqueueRecord(t){let n=this.pressureRatio(),r=t.statusCode>=200&&t.statusCode<400&&!t.error;if(n>=.95&&r){this.dropped+=1;let a={accepted:!1,degraded:!1,reason:"queue_full"};return this.rememberRecordAdmission(t.requestId,a,0,Oi(t)),a}let o=aj(t,n),s=uj(o.input),i={eventId:(0,oh.randomUUID)(),input:o.input,kind:"record",sequence:++this.nextSequence,batchBytes:s,sizeBytes:s,writeAttempts:0},A=this.enqueue(i,o.degraded?"body_removed":void 0);return this.rememberRecordAdmission(t.requestId,A,o.bodyCaptureMaxBytes,Oi(t)),A.accepted&&o.degraded&&(this.degraded+=1),A}rejectRecord(t,n="sampled"){this.rememberRecordAdmission(t,{accepted:!1,degraded:!1,reason:"record_dropped"},0,"none",n)}enqueueRawTrace(t,n){let r=t.deferOutcomeUntilRecord?this.resolveRecordAdmission(t.requestId):this.readRecordAdmission(t.requestId);if(r==="pending"||t.deferOutcomeUntilRecord&&r?.state==="pending"||r===void 0&&t.deferOutcomeUntilRecord)return{accepted:!1,degraded:!1,reason:"record_pending"};if(r&&!r.accepted)return this.dropped+=1,{accepted:!1,degraded:!1,reason:"record_dropped"};let o=t.statusCode!==void 0&&t.statusCode>=200&&t.statusCode<400;if(!r&&this.pressureRatio()>=.95&&o)return this.dropped+=1,{accepted:!1,degraded:!1,reason:"queue_full"};let s=Rc(n?.maxBodyBytes),i=Math.min(s,r?.bodyCaptureMaxBytes??s),A=i<s,a=r?{...t,bodyCapturePolicy:r.bodyCapturePolicy}:t,c=i===0?Vc(a):a,d=dj(n,i),l=cj(c,i),u=Math.max(lj(l,d),gj(d,i)),g={input:l,kind:"raw-trace-update",rawTraceFiles:d,sequence:++this.nextSequence,batchBytes:u,sizeBytes:u,writeAttempts:0};return this.enqueue(g,A?"body_removed":void 0)}async list(t){return await this.query("list",[t])}async getDetail(t){return await this.query("getDetail",[t])}async getBodyChunk(t){return await this.query("getBodyChunk",[t])}async analyze(t){return await this.query("analyze",[t])}async getTracePayload(t){return await this.query("getTracePayload",[t])}metrics(){return this.pruneAdmissionOverlay(),{accepted:this.accepted,admissionOverlayItems:this.admissionOverlay.size,admissionPendingOperations:this.admissionOperations.size,committed:this.committed,degraded:this.degraded,dropped:this.dropped,inFlightItems:[...this.inFlight.values()].reduce((t,n)=>t+n.commands.length,0),queueBytes:this.outstandingBytes,queueItems:this.queue.length,writerRestarts:this.writerRestartCount}}async flush(t){if(!this.writerWorker&&this.queue.length===0&&this.cleanupTasks.size===0)return{pending:0,timedOut:!1};this.schedulePump(!0);let n=await OD(()=>this.queue.length===0&&this.inFlight.size===0&&this.cleanupTasks.size===0,t.timeoutMs);return n&&this.writerWorker&&await qD(this.writerRpc("flush",[]),Math.max(1,t.timeoutMs)),{pending:this.queue.length+[...this.inFlight.values()].reduce((r,o)=>r+o.commands.length,0),timedOut:!n}}async close(t){if(!this.closed){this.closed=!0,this.flushTimer&&clearTimeout(this.flushTimer),await this.flush(t).catch(()=>{}),await Promise.all([this.shutdownWorker("query",this.queryWorker,this.queryRequests,t.timeoutMs),this.shutdownWorker("writer",this.writerWorker,this.writerRequests,t.timeoutMs)]),this.queryWorker=void 0,this.writerWorker=void 0,this.admissionHeartbeatTimer&&clearInterval(this.admissionHeartbeatTimer),this.admissionHeartbeatTimer=void 0,this.drainAdmissionOperations(),await OD(()=>this.admissionOperations.size===0,t.timeoutMs),this.admissionRetryTimer&&clearTimeout(this.admissionRetryTimer),this.admissionRetryTimer=void 0,this.admissionOperations.clear(),this.admissionOperationKeys.clear(),this.admissionOverlay.clear();try{this.admissionStore?.close()}catch(n){console.warn(`[request-log] Failed to close admission persistence: ${rh(n)}`)}this.admissionStore=void 0}}enqueue(t,n){return this.closed?(this.dropped+=1,{accepted:!1,degraded:!1,reason:"closed"}):t.sizeBytes>this.options.queueMaxBytes||this.outstandingBytes+t.sizeBytes>this.options.queueMaxBytes||this.queue.length+this.inFlightItemCount()>=this.options.queueMaxItems?(this.dropped+=1,{accepted:!1,degraded:!1,reason:"queue_full"}):(this.accepted+=1,this.outstandingBytes+=t.sizeBytes,this.queue.push(t),this.ensureWriter().catch(()=>{}),this.schedulePump(this.queue.length>=this.options.batchMaxItems||this.queuedBytes()>=this.options.batchMaxBytes),{accepted:!0,degraded:n!==void 0,...n?{reason:n}:{}})}pressureRatio(){return Math.max(this.outstandingBytes/this.options.queueMaxBytes,(this.queue.length+this.inFlightItemCount())/this.options.queueMaxItems)}inFlightItemCount(){return[...this.inFlight.values()].reduce((t,n)=>t+n.commands.length,0)}queuedBytes(){return this.queue.reduce((t,n)=>t+n.batchBytes,0)}rememberRecordAdmission(t,n,r,o,s=n.reason){let i=t?.trim();if(!i)return;let A=this.setAdmissionOverlay(i,{accepted:n.accepted,bodyCapturePolicy:o,bodyCaptureMaxBytes:r,reason:s,recordedAt:Date.now(),state:n.accepted?"pending":"rejected"});this.submitAdmissionOperation({attempts:0,createdAt:Date.now(),overlayRequestId:i,overlayVersion:A,run:a=>a.remember({accepted:n.accepted,bodyCapturePolicy:o,bodyCaptureMaxBytes:r,reason:s,requestId:i,runtimeId:this.runtimeId})})}readRecordAdmission(t){let n=t.trim();if(!n)return;this.pruneAdmissionOverlay();let r=this.admissionOverlay.get(n);return r||this.useAdmissionStore(o=>o.read(n))}resolveRecordAdmission(t){let n=t.trim();if(!n)return;this.pruneAdmissionOverlay();let r=this.admissionOverlay.get(n);return r||this.useAdmissionStore(o=>o.resolveForRawTrace(n,this.options.pendingAdmissionTtlMs))}markRecordAdmissionsCommitted(t){for(let n of t){if(n.kind!=="record")continue;let r=n.input.requestId?.trim();if(!r)continue;let o=this.admissionOverlay.get(r),s=this.setAdmissionOverlay(r,{accepted:!0,bodyCaptureMaxBytes:o?.bodyCaptureMaxBytes??pj(n.input.maxBodyBytes),bodyCapturePolicy:o?.bodyCapturePolicy??Oi(n.input),recordedAt:Date.now(),state:"committed"});this.submitAdmissionOperation({attempts:0,createdAt:Date.now(),overlayRequestId:r,overlayVersion:s,run:i=>i.markCommitted(r,this.runtimeId)})}}useAdmissionStore(t){try{let n=this.ensureAdmissionStore();return t(n)}catch(n){this.handleAdmissionFailure(n);return}}ensureAdmissionStore(){return this.admissionStore??=new qc(this.options.admissionDbFile,this.options.dbFile,this.runtimeId),this.ensureAdmissionHeartbeat(),this.admissionStore}submitAdmissionOperation(t){if(t.key&&this.admissionOperationKeys.has(t.key))return;let n=++this.nextAdmissionOperationId;for(this.admissionOperations.set(n,t),t.key&&this.admissionOperationKeys.add(t.key);this.admissionOperations.size>this.options.admissionMaxPendingOperations;){let r=this.admissionOperations.entries().next().value;if(!r)break;this.settleAdmissionOperation(r[0],r[1]),this.warnAdmissionBound("pending operation capacity")}this.drainAdmissionOperations()}drainAdmissionOperations(){if(this.admissionRetryTimer)return;let t=Date.now(),n=0;for(;this.admissionOperations.size>0;){if(n>=Aj||Date.now()-t>=ij){this.scheduleAdmissionDrain(0);return}let r=this.admissionOperations.entries().next().value;if(!r)return;let[o,s]=r;if(Date.now()-s.createdAt>=this.options.admissionOperationMaxAgeMs){this.settleAdmissionOperation(o,s),this.warnAdmissionBound("pending operation TTL"),n+=1;continue}try{s.run(this.ensureAdmissionStore()),this.settleAdmissionOperation(o,s),n+=1}catch(i){s.attempts+=1,this.handleAdmissionFailure(i);let A=Math.min(tj,25*2**Math.min(8,s.attempts-1));this.scheduleAdmissionDrain(A);return}}}scheduleAdmissionDrain(t){this.admissionRetryTimer||(this.admissionRetryTimer=setTimeout(()=>{this.admissionRetryTimer=void 0,this.drainAdmissionOperations()},t),this.admissionRetryTimer.unref?.())}handleAdmissionFailure(t){if(!hj(t)){try{this.admissionStore?.close()}catch{}this.admissionStore=void 0}let n=Date.now();n-this.admissionLastWarningAt>=3e4&&(this.admissionLastWarningAt=n,console.warn(`[request-log] Admission persistence operation queued for retry: ${rh(t)}`))}setAdmissionOverlay(t,n){this.pruneAdmissionOverlay(n.recordedAt);let r=++this.nextAdmissionOverlayVersion;for(this.admissionOverlay.delete(t),this.admissionOverlay.set(t,{...n,version:r});this.admissionOverlay.size>this.options.admissionOverlayMaxEntries;){let o=this.admissionOverlay.keys().next().value;if(!o)break;this.admissionOverlay.delete(o),this.warnAdmissionBound("overlay capacity")}return r}pruneAdmissionOverlay(t=Date.now()){let n=t-this.options.admissionOverlayTtlMs;for(let[r,o]of this.admissionOverlay){if(o.recordedAt>n)break;this.admissionOverlay.delete(r)}}settleAdmissionOperation(t,n){if(this.admissionOperations.delete(t),n.key&&this.admissionOperationKeys.delete(n.key),!n.overlayRequestId||n.overlayVersion===void 0)return;this.admissionOverlay.get(n.overlayRequestId)?.version===n.overlayVersion&&this.admissionOverlay.delete(n.overlayRequestId)}warnAdmissionBound(t){let n=Date.now();n-this.admissionLastWarningAt<3e4||(this.admissionLastWarningAt=n,console.warn(`[request-log] Admission ${t} reached; oldest fail-closed state was released.`))}ensureAdmissionHeartbeat(){this.admissionHeartbeatTimer||this.closed||(this.admissionHeartbeatTimer=setInterval(()=>{this.submitAdmissionOperation({attempts:0,createdAt:Date.now(),key:"heartbeat",run:t=>{t.heartbeat(this.runtimeId);let n=Date.now();n-this.admissionLastPrunedAt>=3600*1e3&&(t.prune(n),this.admissionLastPrunedAt=n)}})},1e4),this.admissionHeartbeatTimer.unref?.())}schedulePump(t=!1){if(!(this.inFlight.size>0||this.queue.length===0)){if(t){this.flushTimer&&clearTimeout(this.flushTimer),this.flushTimer=void 0,queueMicrotask(()=>{this.pump()});return}this.flushTimer??=setTimeout(()=>{this.flushTimer=void 0,this.pump()},this.options.batchMaxWaitMs),this.flushTimer.unref?.()}}async pump(){if(this.inFlight.size>0||this.queue.length===0)return;try{await this.ensureWriter()}catch{return}let t=[],n=0,r=!!this.queue[0]?.isolated;for(;this.queue.length>0&&t.length<this.options.batchMaxItems;){let s=this.queue[0];if(t.length>0&&(r||s.isolated||n+s.batchBytes>this.options.batchMaxBytes))break;let i=this.queue.shift();i.writeAttempts+=1,t.push(i),n+=s.batchBytes}if(t.length===0||!this.writerWorker)return;let o=++this.batchId;this.inFlight.set(o,{bytes:t.reduce((s,i)=>s+i.sizeBytes,0),commands:t}),this.writerWorker.postMessage({batchId:o,commands:t.map(fj),type:"batch"})}ensureWriter(){return this.writerWorkerReady?this.writerWorkerReady:(this.writerWorkerReady=new Promise((t,n)=>{let r=new sh.Worker(this.options.workerFile,{workerData:{dbFile:this.options.dbFile,mode:"writer",rawTraceSpoolDir:this.options.rawTraceSpoolDir}});this.writerWorker=r,r.unref();let o=s=>n(s);r.once("error",o),r.on("message",s=>{if(s.type==="ready"){r.off("error",o),t(),this.schedulePump(!0);return}this.handleWriterMessage(s)}),r.on("error",s=>this.handleWriterFailure(r,s)),r.on("exit",s=>{!this.closed&&s!==0&&this.handleWriterFailure(r,new Error(`request log writer exited with ${s}`))})}),this.writerWorkerReady)}handleWriterMessage(t){if(t.type==="ack"&&t.batchId!==void 0){let n=this.inFlight.get(t.batchId);if(!n)return;this.inFlight.delete(t.batchId),this.outstandingBytes=Math.max(0,this.outstandingBytes-n.bytes),this.committed+=n.commands.length,this.revision+=n.commands.length,this.markRecordAdmissionsCommitted(n.commands),this.scheduleRawTraceCleanup(n.commands),this.schedulePump(!0);return}if(t.type==="batch-error"){this.handleBatchError(t);return}if(t.type==="maintenance"&&(t.updated??0)>0){this.revision+=1;return}vD(this.writerRequests,t)}handleBatchError(t){if(t.batchId===void 0){this.handleWriterFailure(this.writerWorker,new Error(t.error||"request log batch failed"));return}let n=this.inFlight.get(t.batchId);if(!n)return;if(this.inFlight.delete(t.batchId),n.commands.length>1){this.queue.unshift(...n.commands.map(o=>({...o,isolated:!0}))),this.schedulePump(!0);return}let r=n.commands[0];r.writeAttempts<ej?this.queue.unshift({...r,isolated:!0}):(this.outstandingBytes=Math.max(0,this.outstandingBytes-r.sizeBytes),this.dropped+=1,r.kind==="record"&&(this.rememberRecordAdmission(r.input.requestId,{accepted:!1,degraded:!1,reason:"writer_unavailable"},0,Oi(r.input)),this.scheduleRawTraceCleanup([r])),console.warn(`[request-log] ${r.kind==="raw-trace-update"?"Retaining":"Dropping"} ${r.kind} sequence ${r.sequence} after ${r.writeAttempts} failed write attempts: ${t.error||"request log batch failed"}`)),this.schedulePump(!0)}handleWriterFailure(t,n){if(!t||t!==this.writerWorker)return;this.writerWorker=void 0,this.writerWorkerReady=void 0,t.terminate().catch(()=>{});for(let[,s]of[...this.inFlight].reverse())this.queue.unshift(...s.commands);if(this.inFlight.clear(),Hc(this.writerRequests,n),this.closed)return;this.writerRestartCount+=1;let r=Math.min(5e3,100*2**Math.min(6,this.writerRestartCount-1));setTimeout(()=>{this.ensureWriter().then(()=>this.schedulePump(!0)).catch(()=>{})},r).unref?.()}scheduleRawTraceCleanup(t){let n=new Set(t.flatMap(o=>o.kind==="raw-trace-update"&&o.rawTraceFiles?.cleanupDirectory?[o.rawTraceFiles.cleanupDirectory]:[]));if(n.size===0)return;let r=this.cleanupRawTraceDirectories(n).finally(()=>{this.cleanupTasks.delete(r)});this.cleanupTasks.add(r)}async cleanupRawTraceDirectories(t){for(let n of t)try{let r=await(0,qi.realpath)(this.options.rawTraceSpoolDir),o=await(0,qi.realpath)(Yc.default.resolve(n));if(o===r||!o.startsWith(`${r}${Yc.default.sep}`))throw new Error(`Raw trace path is outside the configured spool directory: ${n}`);await(0,qi.rm)(o,{force:!0,recursive:!0})}catch(r){YD(r)!=="ENOENT"&&console.warn(`[request-log] Failed to clean committed raw trace bundle: ${rh(r)}`)}}async ensureQueryWorker(){return this.queryWorkerReady?await this.queryWorkerReady:(await this.ensureWriter(),this.queryWorkerReady=new Promise((t,n)=>{let r=new sh.Worker(this.options.workerFile,{workerData:{dbFile:this.options.dbFile,mode:"query",rawTraceSpoolDir:this.options.rawTraceSpoolDir}});this.queryWorker=r,r.unref();let o=s=>n(s);r.once("error",o),r.on("message",s=>{if(s.type==="ready"){r.off("error",o),t();return}vD(this.queryRequests,s)}),r.on("error",s=>{r===this.queryWorker&&(this.queryWorker=void 0,this.queryWorkerReady=void 0,Hc(this.queryRequests,s))}),r.on("exit",s=>{r===this.queryWorker&&(this.queryWorker=void 0,this.queryWorkerReady=void 0,!this.closed&&s!==0&&Hc(this.queryRequests,new Error(`request log query worker exited with ${s}`)))})}),await this.queryWorkerReady)}async query(t,n){if(this.closed)throw new Error("Request log runtime is closed.");if(await this.ensureQueryWorker(),!this.queryWorker)throw new Error("Request log query worker is unavailable.");return await nh(this.queryWorker,this.queryRequests,++this.nextRequestId,t,n,{revision:this.revision})}async writerRpc(t,n){if(await this.ensureWriter(),!this.writerWorker)throw new Error("Request log writer is unavailable.");return await nh(this.writerWorker,this.writerRequests,++this.nextRequestId,t,n)}async shutdownWorker(t,n,r,o){if(n)try{await qD(nh(n,r,++this.nextRequestId,"shutdown",[]),o)}catch{await n.terminate()}finally{Hc(r,new Error(`Request log ${t} worker closed.`))}}};function ah(e){return new ih(e)}function aj(e,t){let n=Math.max(0,Math.min(52428800,e.maxBodyBytes??52428800)),r=e.statusCode>=200&&e.statusCode<400&&!e.error,o=e.captureBody===!1||t>=.7&&r,s=Oi(e),i=s==="none"||t>=.7&&r?0:n,A=t>=.85&&r,a=(o||n===0)&&e.routeTrace!==void 0,c=o?{buffer:Buffer.alloc(0),compacted:!1}:ir(e.requestBody),d=o?Buffer.alloc(0):HD(c.buffer,n),l=o?{compacted:!1,text:""}:Ah(e.responseBodyText??"",n),u=l.text,g=e.responseBodySizeBytes??Buffer.byteLength(e.responseBodyText??""),h=Buffer.byteLength(u);return{bodyCaptureMaxBytes:i,degraded:o||A||a||c.compacted||l.compacted||d.byteLength<c.buffer.byteLength||h<g,input:{...e,bodyCapturePolicy:s,captureBody:!o,maxBodyBytes:i,requestBody:d,requestBodySizeBytes:e.requestBodySizeBytes??e.requestBody.byteLength,requestBodyTruncated:o||c.compacted||!!e.requestBodyTruncated||d.byteLength<c.buffer.byteLength,requestHeaders:Wc(e.requestHeaders),routeTrace:A?void 0:a&&e.routeTrace?PD(e.routeTrace):e.routeTrace,responseBodyText:u,responseBodySizeBytes:g,responseBodyTruncated:o||l.compacted||!!e.responseBodyTruncated||h<g,responseHeaders:Wc(e.responseHeaders)}}}function Oi(e){return e.bodyCapturePolicy==="errors"||e.bodyCapturePolicy==="none"?e.bodyCapturePolicy:e.bodyCapturePolicy==="all"||e.captureBody!==!1?"all":"none"}function cj(e,t){let n=e.requestBodyText===void 0?void 0:Ah(e.requestBodyText,t),r=n?.text,o=e.requestBodySizeBytes??(e.requestBodyText===void 0?void 0:Buffer.byteLength(e.requestBodyText)),s=e.responseBodyText===void 0?void 0:Ah(e.responseBodyText,t),i=s?.text,A=e.responseBodySizeBytes??(e.responseBodyText===void 0?void 0:Buffer.byteLength(e.responseBodyText));return{...e,...r===void 0?{}:{requestBodySizeBytes:o,requestBodyText:r,requestBodyTruncated:!!e.requestBodyTruncated||!!n?.compacted||Buffer.byteLength(r)<(o??0)},requestHeaders:Wc(e.requestHeaders),...i===void 0?{}:{responseBodySizeBytes:A,responseBodyText:i,responseBodyTruncated:!!e.responseBodyTruncated||!!s?.compacted||Buffer.byteLength(i)<(A??0)},responseHeaders:Wc(e.responseHeaders)}}function dj(e,t){if(!e)return;let{requestBody:n,responseBody:r,...o}=e;return{...o,maxBodyBytes:t,...t>0&&e.requestBody?{requestBody:e.requestBody}:{},...t>0&&e.responseBody?{responseBody:e.responseBody}:{}}}function Vc(e){let{requestBodyRef:t,responseBodyRef:n,...r}=e,o=e.requestBodySizeBytes??(e.requestBodyText===void 0?void 0:Buffer.byteLength(e.requestBodyText)),s=e.responseBodySizeBytes??(e.responseBodyText===void 0?void 0:Buffer.byteLength(e.responseBodyText));return{...r,...o===void 0?{}:{requestBodySizeBytes:o,requestBodyText:"",requestBodyTruncated:!!e.requestBodyTruncated||o>0},...s===void 0?{}:{responseBodySizeBytes:s,responseBodyText:"",responseBodyTruncated:!!e.responseBodyTruncated||s>0}}}function HD(e,t){return e.byteLength<=t?e:Buffer.from(e.subarray(0,t))}function Ah(e,t){let n=ir(Buffer.from(e)),r=HD(n.buffer,t);return{compacted:n.compacted,text:new GD.StringDecoder("utf8").write(r)}}function Wc(e){if(!e)return{};let t=typeof Headers<"u"&&e instanceof Headers?[...e.entries()]:Object.entries(e).filter(n=>n[1]!==void 0);return Object.fromEntries(t.map(([n,r])=>[n,vi(n)?"[redacted]":r]))}function uj(e){return e.requestBody.byteLength+Buffer.byteLength(e.responseBodyText??"")+is(e.requestHeaders)+is(e.responseHeaders)+is(e.routeTrace)+1024}function lj(e,t){return Buffer.byteLength(e.requestBodyText??"")+Buffer.byteLength(e.responseBodyText??"")+is(e.requestHeaders)+is(e.responseHeaders)+is(t)+512}function gj(e,t){return Math.min(t,Math.max(0,e?.requestBody?.sizeBytes??0))+Math.min(t,Math.max(0,e?.responseBody?.sizeBytes??0))}function is(e){if(e===void 0)return 0;try{return Buffer.byteLength(JSON.stringify(e))}catch{return 0}}function fj(e){let{batchBytes:t,isolated:n,sizeBytes:r,writeAttempts:o,...s}=e;return s}function cn(e,t){return Number.isFinite(e)&&Number(e)>0?Math.floor(Number(e)):t}function pj(e){return Number.isFinite(e)?Math.max(0,Math.floor(Number(e))):0}function nh(e,t,n,r,o,s={}){return new Promise((i,A)=>{t.set(n,{reject:A,resolve:a=>i(a)}),e.postMessage({...s,args:o,method:r,requestId:n,type:"request"})})}function vD(e,t){if(t.type!=="response"||t.requestId===void 0)return;let n=e.get(t.requestId);n&&(e.delete(t.requestId),t.error?n.reject(new Error(t.error)):n.resolve(t.result))}function Hc(e,t){for(let n of e.values())n.reject(t);e.clear()}function YD(e){return typeof e=="object"&&e!==null&&"code"in e&&String(e.code??"")||void 0}function hj(e){let t=YD(e);return t==="SQLITE_BUSY"||t==="SQLITE_LOCKED"||e instanceof Error&&/database is (?:busy|locked)/i.test(e.message)}function rh(e){return e instanceof Error?e.stack||e.message:String(e)}async function OD(e,t){let n=Date.now()+Math.max(1,t);for(;!e();){if(Date.now()>=n)return!1;await new Promise(r=>setTimeout(r,5))}return!0}async function qD(e,t){let n;try{return await Promise.race([e,new Promise((r,o)=>{n=setTimeout(()=>o(new Error(`Request log operation timed out after ${t}ms.`)),t),n.unref?.()})])}finally{n&&clearTimeout(n)}}var WD=/(\/v1(?:beta)?\/models\/)([^/:]+)(:(?:generatecontent|streamgeneratecontent))/i;function VD(e){let t=WD.exec(e);if(WD.lastIndex=0,!!t?.[2])try{return decodeURIComponent(t[2])}catch{return t[2]}}function lh(e,t=""){let n=to(VD(t));return n||dh(uh(typeof e=="string"?e:e.toString("utf8")))}function Jc(e){let t=e.trim();if(!t)return;let n=dh(uh(t));if(n)return n;let r;for(let o of t.split(/\r?\n/)){let s=o.trim(),i=s.startsWith("data:")?s.slice(5).trim():s.startsWith("{")?s:"";!i||i==="[DONE]"||(r=dh(uh(i))??r)}return r}function dh(e){if(!ch(e))return;let t=ch(e.response)?e.response:void 0,n=ch(e.message)?e.message:void 0;return to(t?.model)??to(e.model)??to(n?.model)??to(t?.modelVersion)??to(e.modelVersion)??to(n?.modelVersion)}function uh(e){try{return JSON.parse(e)}catch{return}}function ch(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function to(e){return typeof e!="string"?void 0:e.trim()||void 0}var Qh=52428800,ro=160*1024,zD=1024*1024,gh=5e3,KD=1600,Ej=200,XD=2*1024*1024,Cj=512*1024,Ij=8*1024*1024,jD=300*1e3,Bj=2880*60*1e3,$D=new Set(["done","error","message_stop","response.completed","response.error","response.failed","response.incomplete"]),yj=new Set(["cancelled","completed","error","failed","incomplete"]),mj=`
|
|
402
|
+
'' AS request_body_text,
|
|
403
|
+
'' AS response_body_text,
|
|
404
|
+
request_body_ref,
|
|
405
|
+
response_body_ref
|
|
406
|
+
`,Qj={avgDurationMs:0,cacheRatio:0,cacheReadTokens:0,cacheTokens:0,cacheWriteTokens:0,costUsd:0,errorCount:0,inputTokens:0,maxConcurrentRequests:0,maxDurationMs:0,outputTokens:0,p50DurationMs:0,p95DurationMs:0,p99DurationMs:0,requestCount:0,sessionCount:0,subagentCallCount:0,successRate:0,toolCallCount:0,totalTokens:0},Wi=class{constructor(t,n=t===sA?nE:(0,oo.join)((0,oo.dirname)(t),"request-log-bodies")){this.dbFile=t;this.bodyDir=n}dbFile;bodyDir;database;initPromise;insertRequestStatement;insertRouteTraceStatement;lastRetentionCleanupDay;revision=0;analysisCache;async initialize(){await this.getDatabase()}invalidateAnalysisCache(){this.analysisCache=void 0}async checkpoint(){(await this.getDatabase()).pragma("wal_checkpoint(PASSIVE)")}async close(){let t=this.database??(this.initPromise?await this.initPromise.catch(()=>{}):void 0);this.database=void 0,this.initPromise=void 0,this.insertRequestStatement=void 0,this.insertRouteTraceStatement=void 0,t?.close()}async writeBatch(t){if(t.length===0)return{pricingRefreshNeeded:!1};let n=await this.getDatabase(),r=[...t].sort((s,i)=>s.sequence-i.sequence),o=a4(n,r)&&Xp();n.exec("BEGIN IMMEDIATE");try{for(let s of r){if(s.kind==="record"){await this.record({...s.input,eventId:s.eventId});let c=s.input.requestId?.trim();if(c){let d=this.takePendingRawTraceUpdate(n,c);if(d){s.input.captureBody===!1&&Yi(this.bodyDir,_h(d));let l=s.input.captureBody===!1?Vc(d):d;await this.updateFromRawTrace(l)&&d.bundleId&&CT(n,d.bundleId,c)}}continue}let i=s.input.bundleId?.trim();if(i&&X$(n,i))continue;let A=this.prepareRawTraceInput(s.input,s.rawTraceFiles),a=await this.updateFromRawTrace(A);i&&a?CT(n,i,A.requestId):a||this.storePendingRawTraceUpdate(n,A)}return n.exec("COMMIT"),{pricingRefreshNeeded:o}}catch(s){throw n.inTransaction&&n.exec("ROLLBACK"),s}}async backfillMissingUsageCosts(t=1e3){let n,r=0;do{let o=await this.backfillMissingUsageCostsPage({beforeId:n,limit:t});r+=o.updated,n=o.nextBeforeId}while(n!==void 0);return r}async backfillMissingUsageCostsPage(t={}){let n=await this.getDatabase(),r=Math.max(1,Math.floor(t.limit??1e3)),o=t.beforeId===void 0?void 0:Math.max(1,Math.floor(t.beforeId)),s=de(n,`
|
|
407
|
+
SELECT
|
|
408
|
+
id,
|
|
409
|
+
cache_read_tokens,
|
|
410
|
+
cache_write_tokens,
|
|
411
|
+
input_tokens,
|
|
412
|
+
model,
|
|
413
|
+
output_tokens,
|
|
414
|
+
pricing_json,
|
|
415
|
+
provider
|
|
416
|
+
FROM request_logs
|
|
417
|
+
WHERE cost_usd IS NULL
|
|
418
|
+
AND (cache_read_tokens + cache_write_tokens + input_tokens + output_tokens) > 0
|
|
419
|
+
${o===void 0?"":"AND id < ?"}
|
|
420
|
+
ORDER BY id DESC
|
|
421
|
+
LIMIT ?
|
|
422
|
+
`,o===void 0?[r]:[o,r]),i=n.prepare("UPDATE request_logs SET cost_usd = ? WHERE id = ? AND cost_usd IS NULL"),A=0;n.transaction(()=>{for(let c of s){let d=vc({cacheReadTokens:R(c.cache_read_tokens),cacheWriteTokens:R(c.cache_write_tokens),inputTokens:R(c.input_tokens),model:String(c.model??""),outputTokens:R(c.output_tokens),pricing:Ak(c.pricing_json),provider:String(c.provider??"")});d&&(A+=Number(i.run(d.amountUsd,R(c.id)).changes))}})(),A>0&&(this.revision+=1);let a=s.length===r?R(s[s.length-1]?.id):0;return{...a>0?{nextBeforeId:a}:{},scanned:s.length,updated:A}}async record(t){let n=await this.getDatabase();this.pruneOldRequestLogs(n);let r=Ph(t.requestHeaders),o=Ph(t.responseHeaders),s=Kc(r),i=Kc(o),A=t.responseBodyText??"",a=W(t.error)??mT(A,kn(i,"content-type")),c=sd(A),d=Vi(Pi(od(t.responseHeaders),{path:t.path,providerProtocol:t.providerProtocol,source:"providerBilling"}),Pi(c,{path:t.path,source:"responseBody"}))??{},l=E4(t.fallbackModel),u=lh(t.requestBody,t.path),g=W(t.model)??u,h=yh(g),E=lk(d.model),B=E?.model??W(d.model),C=W(t.requestedModel)??u??"",y=W(t.resolvedModel)??W(t.model)??l.model??u??W(t.fallbackModel)??"",Q=W(t.responseModel)??Jc(A)??"",b=W(t.providerName)??Oh(t.responseHeaders,"x-gateway-target-provider-name")??Oh(t.responseHeaders,"x-gateway-target-provider")??l.provider??E?.provider,k=R(d.inputTokens),x=R(d.outputTokens),N=R(d.reasoningTokens),M=R(d.cacheReadTokens),U=R(d.cacheWrite1hTokens),V=R(d.cacheWrite5mTokens),ee=R(d.cacheWriteTokens),te=R(d.totalTokens)||k+x+M+ee,ue=Ne(B??l.model??h??t.fallbackModel,"unknown"),le=Ne(b,"unknown"),xe=AT(o,r),Re={cacheReadTokens:M,cacheWrite1hTokens:U,cacheWrite5mTokens:V,cacheWriteTokens:ee,inputTokens:k,model:ue,outputTokens:x,pricing:t.pricing,provider:le},ve=n.inTransaction?vc(Re):await Kp(Re),nt=W$(t.requestBody,kn(s,"content-type"),{bodyDir:this.bodyDir,side:"request"}),ht={...nt,sizeBytes:Math.max(nt.sizeBytes,R(t.requestBodySizeBytes)),truncated:nt.truncated||!!t.requestBodyTruncated},Et=Bh(A,kn(i,"content-type"),!!t.responseBodyTruncated,t.responseBodySizeBytes,void 0,{bodyDir:this.bodyDir,side:"response"}),Xi=td({path:t.path,requestBodyText:ht.encoding==="utf8"?ht.text:void 0,requestHeaders:s,responseBodyContentType:Et.contentType,responseHeaders:i,url:t.url}),Vh=this.insertRequestStatement??=n.prepare(`
|
|
423
|
+
INSERT OR IGNORE INTO request_logs (
|
|
424
|
+
created_at,
|
|
425
|
+
completed_at,
|
|
426
|
+
request_id,
|
|
427
|
+
event_id,
|
|
428
|
+
client,
|
|
429
|
+
method,
|
|
430
|
+
path,
|
|
431
|
+
url,
|
|
432
|
+
provider,
|
|
433
|
+
credential_id,
|
|
434
|
+
credential_chain,
|
|
435
|
+
credential_saturated,
|
|
436
|
+
model,
|
|
437
|
+
requested_model,
|
|
438
|
+
resolved_model,
|
|
439
|
+
response_model,
|
|
440
|
+
route_trace_version,
|
|
441
|
+
route_hop_count,
|
|
442
|
+
route_attempt_count,
|
|
443
|
+
route_trace_truncated,
|
|
444
|
+
is_stream,
|
|
445
|
+
status_code,
|
|
446
|
+
ok,
|
|
447
|
+
duration_ms,
|
|
448
|
+
input_tokens,
|
|
449
|
+
output_tokens,
|
|
450
|
+
reasoning_tokens,
|
|
451
|
+
cache_read_tokens,
|
|
452
|
+
cache_write_tokens,
|
|
453
|
+
total_tokens,
|
|
454
|
+
cost_usd,
|
|
455
|
+
pricing_json,
|
|
456
|
+
request_headers,
|
|
457
|
+
response_headers,
|
|
458
|
+
request_body_text,
|
|
459
|
+
request_body_encoding,
|
|
460
|
+
request_body_content_type,
|
|
461
|
+
request_body_size_bytes,
|
|
462
|
+
request_body_truncated,
|
|
463
|
+
request_body_ref,
|
|
464
|
+
response_body_text,
|
|
465
|
+
response_body_encoding,
|
|
466
|
+
response_body_content_type,
|
|
467
|
+
response_body_size_bytes,
|
|
468
|
+
response_body_truncated,
|
|
469
|
+
response_body_ref,
|
|
470
|
+
error
|
|
471
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
472
|
+
`),cd=!1,dd=()=>{let io=Vh.run(t.startedAt,t.completedAt??new Date().toISOString(),t.requestId??"",t.eventId??"",Ne(t.client,"unknown"),t.method,t.path,t.url,le,xe.id,xe.chain.join(","),xe.saturated?1:0,ue,C,y,Q,t.routeTrace?.version??0,t.routeTrace?.hopCount??0,t.routeTrace?.attemptCount??0,t.routeTrace?.truncated?1:0,Xi?1:0,R(t.statusCode),mh(t.statusCode,a)?1:0,R(t.durationMs),k,x,N,M,ee,te,ve?.amountUsd??null,t.pricing?JSON.stringify(t.pricing):"",JSON.stringify(s),JSON.stringify(i),ht.text,ht.encoding,ht.contentType??"",ht.sizeBytes,ht.truncated?1:0,ht.bodyRef??"",Et.text,Et.encoding,Et.contentType??"",Et.sizeBytes,Et.truncated?1:0,Et.bodyRef??"",a??"");io.changes!==0&&(cd=!0,n.prepare(`
|
|
473
|
+
UPDATE request_logs
|
|
474
|
+
SET
|
|
475
|
+
gateway_status_code = ?,
|
|
476
|
+
gateway_ok = ?,
|
|
477
|
+
gateway_error = ?,
|
|
478
|
+
gateway_final_attempt = ?,
|
|
479
|
+
gateway_body_capture_policy = ?,
|
|
480
|
+
gateway_body_capture_max_bytes = ?
|
|
481
|
+
WHERE id = ?
|
|
482
|
+
`).run(R(t.statusCode),mh(t.statusCode,a)?1:0,a??"",ik(i,t.routeTrace?.attemptCount),t.bodyCapturePolicy??(t.captureBody===!1?"none":"all"),R(t.maxBodyBytes),Number(io.lastInsertRowid)),t.routeTrace&&F$(this.insertRouteTraceStatement??=_$(n),Number(io.lastInsertRowid),t.requestId??"",t.routeTrace))};n.inTransaction?dd():n.transaction(dd)(),cd&&(this.revision+=1)}async updateFromRawTrace(t){let n=t.requestId.trim();if(!n)return!1;let r=await this.getDatabase();if(this.pruneOldRequestLogs(r),!K$(r,n))return!1;let o=j$(r,n),s=o4(r,n),i=t.attempt===void 0?void 0:R(t.attempt);if(i!==void 0&&i!==s||i===void 0&&s>1)return!0;let A=t.statusCode===void 0?void 0:R(t.statusCode),a=t.responseHeaders===void 0?void 0:Kc(t.responseHeaders),c=t.responseBodyContentType??kn(a??{},"content-type"),d=t.responseBodyText===void 0?void 0:mT(t.responseBodyText,c),l=!!o.gatewayError||!o.gatewayOk&&o.gatewayStatusCode>0,u=l||!!o.error||!o.ok&&o.statusCode>0,g=A!==void 0&&A>0&&(A<200||A>=400),E=$$(t,!u&&!g&&!d);E.bodiesSuppressed&&Yi(this.bodyDir,_h(t));let B=E.input,C=s4(r,n),y=[],Q=[],b=(kt,We)=>{We!==void 0&&(y.push(`${kt} = ?`),Q.push(We))},k=W(B.url),x=W(B.path)??A4(k),N=x??C.path,M=W(B.model),U=yh(M),V=h4(M),ee=t.responseBodyText===void 0?void 0:Jc(t.responseBodyText),te=W(B.provider),ue=A,le=B.requestHeaders??{},xe=B.responseHeaders??{},Re=B.requestHeaders===void 0?void 0:Kc(B.requestHeaders),ve=a,nt=c,ht=d,Et=Re?i4(r4(r,n),Re):void 0;b("method",W(B.method)),b("path",x),b("url",k),b("provider",te),b("model",U),b("resolved_model",V),b("response_model",ee);let Xi=l;if(ue!==void 0&&ue>0&&!Xi&&(b("status_code",ue),b("ok",mh(ue,ht)?1:0)),ht&&(o.error||b("error",ht),ue===void 0&&!Xi&&b("ok",0)),Et&&b("request_headers",JSON.stringify(Et)),ve&&b("response_headers",JSON.stringify(ve)),B.responseBodyText!==void 0||ve){let kt=B.responseBodyText===void 0?void 0:sd(B.responseBodyText),We=Vi(Pi(od(ve),{path:N,source:"providerBilling"}),Pi(kt,{path:N,source:"responseBody"}))??{};if(vh(We)){let ud=R(We.inputTokens),ld=R(We.outputTokens),yk=R(We.reasoningTokens),gd=R(We.cacheReadTokens),mk=R(We.cacheWrite1hTokens),Qk=R(We.cacheWrite5mTokens),fd=R(We.cacheWriteTokens),wk=R(We.totalTokens)||ud+ld+gd+fd,Jh=Ne(yh(We.model)??U??C.model,"unknown"),Rk=Ne(te??C.provider,"unknown"),zh={cacheReadTokens:gd,cacheWrite1hTokens:mk,cacheWrite5mTokens:Qk,cacheWriteTokens:fd,inputTokens:ud,model:Jh,outputTokens:ld,pricing:C.pricing,provider:Rk},bk=r.inTransaction?vc(zh):await Kp(zh);b("input_tokens",ud),b("output_tokens",ld),b("reasoning_tokens",yk),b("cache_read_tokens",gd),b("cache_write_tokens",fd),b("total_tokens",wk),b("cost_usd",bk?.amountUsd),We.model&&!U&&b("model",Jh)}}if(iT(xe)||iT(le)){let kt=AT(xe,le);b("credential_id",kt.id),b("credential_chain",kt.chain.join(",")),b("credential_saturated",kt.saturated?1:0)}if((B.isStream!==void 0||B.path!==void 0||B.url!==void 0||B.requestBodyText!==void 0||B.requestHeaders!==void 0||B.responseBodyContentType!==void 0||B.responseHeaders!==void 0)&&b("is_stream",td({path:x,requestBodyText:B.requestBodyText,requestHeaders:Et,responseBodyContentType:B.responseBodyContentType,responseHeaders:ve,responseWasStream:B.isStream,url:k})?1:0),(B.requestBodyText!==void 0||!!(B.requestBodyRef&&(!B.requestBodyTruncated||!o.hasRequestBody)))&&(E.bodiesSuppressed||B.requestBodyRef||(B.requestBodyText?.length??0)>0||!o.hasRequestBody)){let kt=Bh(B.requestBodyText??"",B.requestBodyContentType??kn(Et??{},"content-type"),!!B.requestBodyTruncated,B.requestBodySizeBytes,52428800,{bodyDir:this.bodyDir,bodyRef:B.requestBodyRef,side:"request"});pT(y,Q,"request",kt)}if((B.responseBodyText!==void 0||!!(B.responseBodyRef&&(!B.responseBodyTruncated||!o.hasResponseBody)))&&(E.bodiesSuppressed||B.responseBodyRef||(B.responseBodyText?.length??0)>0||!o.hasResponseBody)){let kt=Bh(B.responseBodyText??"",nt,!!B.responseBodyTruncated,B.responseBodySizeBytes,52428800,{bodyDir:this.bodyDir,bodyRef:B.responseBodyRef,side:"response"});pT(y,Q,"response",kt)}let io=()=>{y.length>0&&r.prepare(`UPDATE request_logs SET ${y.join(", ")} WHERE request_id = ?`).run(...Q,n)};return r.inTransaction?io():r.transaction(io)(),y.length>0&&(this.revision+=1),!0}async list(t={}){let n=await this.getDatabase();this.pruneOldRequestLogs(n);let r=Xc(t.pageSize,1,100,25),o=Xc(t.page,1,Number.MAX_SAFE_INTEGER,1),s=U$(t),i=nd(de(n,`SELECT COUNT(*) AS total FROM request_logs ${s.where}`,s.params),"total"),A=Math.max(1,Math.ceil(i/r)),a=Math.min(o,A),c=(a-1)*r,d=de(n,`
|
|
483
|
+
SELECT
|
|
484
|
+
rowid AS id,
|
|
485
|
+
created_at,
|
|
486
|
+
completed_at,
|
|
487
|
+
request_id,
|
|
488
|
+
client,
|
|
489
|
+
method,
|
|
490
|
+
path,
|
|
491
|
+
url,
|
|
492
|
+
provider,
|
|
493
|
+
credential_id,
|
|
494
|
+
credential_chain,
|
|
495
|
+
credential_saturated,
|
|
496
|
+
model,
|
|
497
|
+
requested_model,
|
|
498
|
+
resolved_model,
|
|
499
|
+
response_model,
|
|
500
|
+
route_trace_version,
|
|
501
|
+
route_hop_count,
|
|
502
|
+
route_attempt_count,
|
|
503
|
+
route_trace_truncated,
|
|
504
|
+
is_stream,
|
|
505
|
+
status_code,
|
|
506
|
+
ok,
|
|
507
|
+
duration_ms,
|
|
508
|
+
input_tokens,
|
|
509
|
+
output_tokens,
|
|
510
|
+
reasoning_tokens,
|
|
511
|
+
cache_read_tokens,
|
|
512
|
+
cache_write_tokens,
|
|
513
|
+
total_tokens,
|
|
514
|
+
cost_usd,
|
|
515
|
+
request_headers,
|
|
516
|
+
response_headers,
|
|
517
|
+
${mj},
|
|
518
|
+
request_body_encoding,
|
|
519
|
+
request_body_content_type,
|
|
520
|
+
request_body_size_bytes,
|
|
521
|
+
request_body_truncated,
|
|
522
|
+
response_body_encoding,
|
|
523
|
+
response_body_content_type,
|
|
524
|
+
response_body_size_bytes,
|
|
525
|
+
response_body_truncated,
|
|
526
|
+
error
|
|
527
|
+
FROM request_logs
|
|
528
|
+
${s.where}
|
|
529
|
+
ORDER BY created_at DESC, id DESC
|
|
530
|
+
LIMIT ? OFFSET ?
|
|
531
|
+
`,[...s.params,r,c]).map(Fh);return{generatedAt:new Date().toISOString(),items:d,options:await this.getFilterOptions(),page:a,pageSize:r,total:i,totalPages:A}}async getDetail(t){let n=await this.getDatabase(),r=R(t.id);if(r<=0)return;let o=lT(n,r);if(o)return o.routeTrace=P$(n,r),o}async getBodyChunk(t){let n=await this.getDatabase(),r=R(t.id),o=t.side==="response"?"response":"request";if(r<=0)return;let s=de(n,`
|
|
532
|
+
SELECT
|
|
533
|
+
${o}_body_text AS body_text,
|
|
534
|
+
${o}_body_encoding AS body_encoding,
|
|
535
|
+
${o}_body_content_type AS body_content_type,
|
|
536
|
+
${o}_body_size_bytes AS body_size_bytes,
|
|
537
|
+
${o}_body_truncated AS body_truncated,
|
|
538
|
+
${o}_body_ref AS body_ref
|
|
539
|
+
FROM request_logs
|
|
540
|
+
WHERE rowid = ?
|
|
541
|
+
LIMIT 1
|
|
542
|
+
`,[r])[0];if(!s)return;let i=Xc(t.offset,0,Number.MAX_SAFE_INTEGER,0),A=Xc(t.length,1,zD,zD),a=String(s.body_encoding??"utf8")==="base64"?"base64":"utf8",c=W(String(s.body_content_type??"")),d=R(s.body_size_bytes),l=R(s.body_truncated)===1,u=W(String(s.body_ref??""));if(u){let B=Ji(this.bodyDir,u);if(B&&(0,j.existsSync)(B))return V$({bodyRef:u,contentType:c,encoding:a,filePath:B,length:A,offset:i,sizeBytes:d,truncated:l})}let g=String(s.body_text??""),h=g.slice(i,i+A),E=i+h.length;return{...u?{bodyRef:u}:{},contentType:c,encoding:a,eof:E>=g.length,length:h.length,...E<g.length?{nextOffset:E}:{},offset:i,sizeBytes:Math.max(d,g.length),text:h,truncated:l}}async analyze(t={}){let n=await this.getDatabase();this.pruneOldRequestLogs(n);let r=new Date,o=Rj(t);if(this.analysisCache?.revision===this.revision&&this.analysisCache.filterKey===o)return{...this.analysisCache.snapshot,generatedAt:r.toISOString()};let s=JT(t.range),i=B$(s,r),A=Nh(t.agent),a=[],c=!1,d=0,l=Y$(n,`
|
|
543
|
+
SELECT
|
|
544
|
+
rowid AS id,
|
|
545
|
+
created_at,
|
|
546
|
+
completed_at,
|
|
547
|
+
request_id,
|
|
548
|
+
client,
|
|
549
|
+
method,
|
|
550
|
+
path,
|
|
551
|
+
url,
|
|
552
|
+
provider,
|
|
553
|
+
credential_id,
|
|
554
|
+
credential_chain,
|
|
555
|
+
credential_saturated,
|
|
556
|
+
model,
|
|
557
|
+
requested_model,
|
|
558
|
+
resolved_model,
|
|
559
|
+
response_model,
|
|
560
|
+
is_stream,
|
|
561
|
+
status_code,
|
|
562
|
+
ok,
|
|
563
|
+
duration_ms,
|
|
564
|
+
input_tokens,
|
|
565
|
+
output_tokens,
|
|
566
|
+
reasoning_tokens,
|
|
567
|
+
cache_read_tokens,
|
|
568
|
+
cache_write_tokens,
|
|
569
|
+
total_tokens,
|
|
570
|
+
cost_usd,
|
|
571
|
+
request_headers,
|
|
572
|
+
response_headers,
|
|
573
|
+
request_body_text,
|
|
574
|
+
request_body_encoding,
|
|
575
|
+
request_body_content_type,
|
|
576
|
+
request_body_size_bytes,
|
|
577
|
+
request_body_truncated,
|
|
578
|
+
request_body_ref,
|
|
579
|
+
response_body_text,
|
|
580
|
+
response_body_encoding,
|
|
581
|
+
response_body_content_type,
|
|
582
|
+
response_body_size_bytes,
|
|
583
|
+
response_body_truncated,
|
|
584
|
+
response_body_ref,
|
|
585
|
+
error
|
|
586
|
+
FROM request_logs
|
|
587
|
+
WHERE source_usage_id IS NULL
|
|
588
|
+
AND path NOT LIKE ?
|
|
589
|
+
AND created_at >= ?
|
|
590
|
+
ORDER BY created_at DESC, id DESC
|
|
591
|
+
LIMIT ?
|
|
592
|
+
`,["%/count_tokens%",i.toISOString(),gh+1]);for(let C of l){if(d>=gh){c=!0;continue}d+=1;let y=wj(Fh(C));(A==="all"||y.agent===A)&&a.push(y)}a.reverse();let u=oT(a),g=o$(u,t),h=g?oT(g):u,E=g?s$(h,this.bodyDir):void 0,B={agents:t$(h),clients:n$(h),concurrency:f$(s,r,h),endpoints:_T(h),errors:vT(h),generatedAt:r.toISOString(),range:s,recentRequests:h.slice(-50).reverse().map(VT),routes:PT(h),requestScanLimit:gh,requestScanTruncated:c,scannedRequestCount:d,...E?{selectedSession:E}:{},sessions:r$(u),subagents:GT(h),tools:qT(h),totals:Nn(h)};return this.analysisCache={filterKey:o,revision:this.revision,snapshot:B},B}async getTracePayload(t){let n=await this.getDatabase(),r=R(t.requestLogId);if(r<=0)return zc();let o=lT(n,r);if(!o)return zc();let s=ZT(this.bodyDir,t.part==="tool-input"?o.responseBody:o.requestBody);if(!s||s.encoding!=="utf8")return zc(!!s?.truncated);let i=$c(s),A=t.part==="tool-input"?$j(i,t.callId):Zj(i,t.callId);return A.found?jj(A.value,s.truncated):zc(s.truncated)}async getFilterOptions(){let t=await this.getDatabase();return{credentials:Ih(t,"credential_id"),models:Ih(t,"model"),providers:Ih(t,"provider")}}async getDatabase(){return this.database?this.database:(this.initPromise??=this.open(),this.initPromise)}async open(){(0,j.mkdirSync)((0,oo.dirname)(this.dbFile),{recursive:!0});let t=bn(this.dbFile);return L$(t),t.exec(`
|
|
593
|
+
CREATE TABLE IF NOT EXISTS request_logs (
|
|
594
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
595
|
+
source_usage_id INTEGER,
|
|
596
|
+
created_at TEXT NOT NULL,
|
|
597
|
+
completed_at TEXT NOT NULL DEFAULT '',
|
|
598
|
+
request_id TEXT NOT NULL DEFAULT '',
|
|
599
|
+
event_id TEXT NOT NULL DEFAULT '',
|
|
600
|
+
client TEXT NOT NULL DEFAULT 'unknown',
|
|
601
|
+
method TEXT NOT NULL,
|
|
602
|
+
path TEXT NOT NULL,
|
|
603
|
+
url TEXT NOT NULL DEFAULT '',
|
|
604
|
+
provider TEXT NOT NULL DEFAULT 'unknown',
|
|
605
|
+
credential_id TEXT NOT NULL DEFAULT '',
|
|
606
|
+
credential_chain TEXT NOT NULL DEFAULT '',
|
|
607
|
+
credential_saturated INTEGER NOT NULL DEFAULT 0,
|
|
608
|
+
model TEXT NOT NULL DEFAULT 'unknown',
|
|
609
|
+
requested_model TEXT NOT NULL DEFAULT '',
|
|
610
|
+
resolved_model TEXT NOT NULL DEFAULT '',
|
|
611
|
+
response_model TEXT NOT NULL DEFAULT '',
|
|
612
|
+
route_trace_version INTEGER NOT NULL DEFAULT 0,
|
|
613
|
+
route_hop_count INTEGER NOT NULL DEFAULT 0,
|
|
614
|
+
route_attempt_count INTEGER NOT NULL DEFAULT 0,
|
|
615
|
+
route_trace_truncated INTEGER NOT NULL DEFAULT 0,
|
|
616
|
+
is_stream INTEGER NOT NULL DEFAULT 0,
|
|
617
|
+
status_code INTEGER NOT NULL DEFAULT 0,
|
|
618
|
+
ok INTEGER NOT NULL DEFAULT 0,
|
|
619
|
+
gateway_status_code INTEGER NOT NULL DEFAULT 0,
|
|
620
|
+
gateway_ok INTEGER NOT NULL DEFAULT 0,
|
|
621
|
+
gateway_error TEXT NOT NULL DEFAULT '',
|
|
622
|
+
gateway_final_attempt INTEGER NOT NULL DEFAULT 1,
|
|
623
|
+
gateway_body_capture_policy TEXT NOT NULL DEFAULT 'none',
|
|
624
|
+
gateway_body_capture_max_bytes INTEGER NOT NULL DEFAULT 0,
|
|
625
|
+
duration_ms INTEGER NOT NULL DEFAULT 0,
|
|
626
|
+
input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
627
|
+
output_tokens INTEGER NOT NULL DEFAULT 0,
|
|
628
|
+
reasoning_tokens INTEGER NOT NULL DEFAULT 0,
|
|
629
|
+
cache_read_tokens INTEGER NOT NULL DEFAULT 0,
|
|
630
|
+
cache_write_tokens INTEGER NOT NULL DEFAULT 0,
|
|
631
|
+
total_tokens INTEGER NOT NULL DEFAULT 0,
|
|
632
|
+
cost_usd REAL,
|
|
633
|
+
pricing_json TEXT NOT NULL DEFAULT '',
|
|
634
|
+
request_headers TEXT NOT NULL DEFAULT '{}',
|
|
635
|
+
response_headers TEXT NOT NULL DEFAULT '{}',
|
|
636
|
+
request_body_text TEXT NOT NULL DEFAULT '',
|
|
637
|
+
request_body_encoding TEXT NOT NULL DEFAULT 'utf8',
|
|
638
|
+
request_body_content_type TEXT NOT NULL DEFAULT '',
|
|
639
|
+
request_body_size_bytes INTEGER NOT NULL DEFAULT 0,
|
|
640
|
+
request_body_truncated INTEGER NOT NULL DEFAULT 0,
|
|
641
|
+
request_body_ref TEXT NOT NULL DEFAULT '',
|
|
642
|
+
response_body_text TEXT NOT NULL DEFAULT '',
|
|
643
|
+
response_body_encoding TEXT NOT NULL DEFAULT 'utf8',
|
|
644
|
+
response_body_content_type TEXT NOT NULL DEFAULT '',
|
|
645
|
+
response_body_size_bytes INTEGER NOT NULL DEFAULT 0,
|
|
646
|
+
response_body_truncated INTEGER NOT NULL DEFAULT 0,
|
|
647
|
+
response_body_ref TEXT NOT NULL DEFAULT '',
|
|
648
|
+
error TEXT NOT NULL DEFAULT ''
|
|
649
|
+
);
|
|
650
|
+
|
|
651
|
+
CREATE TABLE IF NOT EXISTS request_route_traces (
|
|
652
|
+
request_log_id INTEGER PRIMARY KEY,
|
|
653
|
+
request_id TEXT NOT NULL DEFAULT '',
|
|
654
|
+
version INTEGER NOT NULL DEFAULT 1,
|
|
655
|
+
complete INTEGER NOT NULL DEFAULT 1,
|
|
656
|
+
ingress_snapshot_json TEXT NOT NULL DEFAULT '{}',
|
|
657
|
+
final_snapshot_json TEXT NOT NULL DEFAULT '{}',
|
|
658
|
+
hop_count INTEGER NOT NULL DEFAULT 0,
|
|
659
|
+
attempt_count INTEGER NOT NULL DEFAULT 0,
|
|
660
|
+
truncated INTEGER NOT NULL DEFAULT 0,
|
|
661
|
+
trace_json TEXT NOT NULL DEFAULT '',
|
|
662
|
+
FOREIGN KEY(request_log_id) REFERENCES request_logs(id) ON DELETE CASCADE
|
|
663
|
+
);
|
|
664
|
+
|
|
665
|
+
CREATE TABLE IF NOT EXISTS request_route_hops (
|
|
666
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
667
|
+
request_log_id INTEGER NOT NULL,
|
|
668
|
+
request_id TEXT NOT NULL DEFAULT '',
|
|
669
|
+
seq INTEGER NOT NULL,
|
|
670
|
+
phase TEXT NOT NULL,
|
|
671
|
+
name TEXT NOT NULL,
|
|
672
|
+
kind TEXT NOT NULL,
|
|
673
|
+
attempt_no INTEGER,
|
|
674
|
+
started_offset_ms INTEGER NOT NULL DEFAULT 0,
|
|
675
|
+
duration_ms INTEGER NOT NULL DEFAULT 0,
|
|
676
|
+
status TEXT NOT NULL DEFAULT 'ok',
|
|
677
|
+
decision_json TEXT NOT NULL DEFAULT '{}',
|
|
678
|
+
target_json TEXT NOT NULL DEFAULT '{}',
|
|
679
|
+
changes_json TEXT NOT NULL DEFAULT '[]',
|
|
680
|
+
outcome_json TEXT NOT NULL DEFAULT '{}',
|
|
681
|
+
truncated INTEGER NOT NULL DEFAULT 0,
|
|
682
|
+
FOREIGN KEY(request_log_id) REFERENCES request_logs(id) ON DELETE CASCADE,
|
|
683
|
+
UNIQUE(request_log_id, seq)
|
|
684
|
+
);
|
|
685
|
+
|
|
686
|
+
CREATE TABLE IF NOT EXISTS request_log_pending_updates (
|
|
687
|
+
request_id TEXT PRIMARY KEY,
|
|
688
|
+
received_at INTEGER NOT NULL,
|
|
689
|
+
update_bytes INTEGER NOT NULL DEFAULT 0,
|
|
690
|
+
update_json TEXT NOT NULL
|
|
691
|
+
);
|
|
692
|
+
|
|
693
|
+
CREATE INDEX IF NOT EXISTS request_route_hops_request_idx
|
|
694
|
+
ON request_route_hops(request_log_id, seq);
|
|
695
|
+
|
|
696
|
+
CREATE INDEX IF NOT EXISTS request_route_traces_request_id_idx
|
|
697
|
+
ON request_route_traces(request_id);
|
|
698
|
+
`),R$(t),k$(t),N$(t),T$(t),t.exec(`
|
|
699
|
+
CREATE UNIQUE INDEX IF NOT EXISTS request_logs_event_id_idx
|
|
700
|
+
ON request_logs(event_id)
|
|
701
|
+
WHERE event_id <> '';
|
|
702
|
+
`),M$(t),this.database=t,this.pruneOldRequestLogs(t),t}pruneOldRequestLogs(t){let n=new Date,r=I$(n);if(this.lastRetentionCleanupDay===r)return;$T(t,n.getTime());let o=ed(n).toISOString();if(nd(de(t,"SELECT COUNT(*) AS total FROM request_logs WHERE source_usage_id IS NULL AND created_at < ?",[o]),"total")===0){this.lastRetentionCleanupDay=r;return}let i=de(t,`
|
|
703
|
+
SELECT request_body_ref, response_body_ref
|
|
704
|
+
FROM request_logs
|
|
705
|
+
WHERE source_usage_id IS NULL AND created_at < ?
|
|
706
|
+
`,[o]).flatMap(A=>[W(String(A.request_body_ref??"")),W(String(A.response_body_ref??""))]).filter(A=>!!A);t.prepare("DELETE FROM request_logs WHERE source_usage_id IS NULL AND created_at < ?").run(o),Yi(this.bodyDir,i),this.lastRetentionCleanupDay=r}storePendingRawTraceUpdate(t,n){let r=n.requestId.trim();if(!r)return;let o=Date.now(),s=Z$(n);s&&t.prepare(`
|
|
707
|
+
INSERT INTO request_log_pending_updates (request_id, received_at, update_bytes, update_json)
|
|
708
|
+
VALUES (?, ?, ?, ?)
|
|
709
|
+
ON CONFLICT(request_id) DO UPDATE SET
|
|
710
|
+
received_at = excluded.received_at,
|
|
711
|
+
update_bytes = excluded.update_bytes,
|
|
712
|
+
update_json = excluded.update_json
|
|
713
|
+
`).run(r,o,s.bytes,s.json),sk(t,o,this.bodyDir)}takePendingRawTraceUpdate(t,n){let r=de(t,"SELECT update_json FROM request_log_pending_updates WHERE request_id = ? LIMIT 1",[n])[0];if(!r)return;t.prepare("DELETE FROM request_log_pending_updates WHERE request_id = ?").run(n);let o=Me(String(r.update_json??""));return S(o)?o:void 0}prepareRawTraceInput(t,n){let r={...t},o=hT(this.bodyDir,n?.requestBody);o&&(r.requestBodyRef=o.bodyRef,o.truncated||(r.requestBodyText??=o.previewText),r.requestBodyContentType??=o.contentType,r.requestBodySizeBytes=Math.max(R(r.requestBodySizeBytes),o.sizeBytes),r.requestBodyTruncated=!!r.requestBodyTruncated||o.truncated);let s=hT(this.bodyDir,n?.responseBody);return s&&(r.responseBodyRef=s.bodyRef,s.truncated||(r.responseBodyText??=s.previewText),r.responseBodyContentType??=s.contentType,r.responseBodySizeBytes=Math.max(R(r.responseBodySizeBytes),s.sizeBytes),r.responseBodyTruncated=!!r.responseBodyTruncated||s.truncated),this.prepareRawTraceTextBodies(r)}prepareRawTraceTextBodies(t){let n={...t};if(!n.requestBodyRef&&n.requestBodyText!==void 0){let r=rd(this.bodyDir,Buffer.from(n.requestBodyText),n.requestBodyRef);r&&(n.requestBodyRef=r.bodyRef,n.requestBodySizeBytes=Math.max(Buffer.byteLength(n.requestBodyText),R(n.requestBodySizeBytes)))}if(!n.responseBodyRef&&n.responseBodyText!==void 0){let r=rd(this.bodyDir,Buffer.from(n.responseBodyText),n.responseBodyRef);r&&(n.responseBodyRef=r.bodyRef,n.responseBodySizeBytes=Math.max(Buffer.byteLength(n.responseBodyText),R(n.responseBodySizeBytes)))}return n}},C6=new Wi(sA),I6=ah({dbFile:sA});function wj(e){let t=bj(e),n=cT(e.createdAt),r=cT(e.completedAt),o=Math.max(n+1,r>n?r:n+Math.max(0,e.durationMs));return{agent:t.agent,cacheReadTokens:e.cacheReadTokens,cacheWriteTokens:e.cacheWriteTokens,client:e.client,completedAt:e.completedAt,concurrentRequests:1,...t.conversationMessages?{conversation:Sj(e,t)}:{},costUsd:e.costUsd,createdAt:e.createdAt,durationMs:e.durationMs,endedAtMs:o,error:e.error||void 0,id:e.id,inputTokens:e.inputTokens,method:e.method,model:e.model,ok:e.ok,outputTokens:e.outputTokens,path:e.path,provider:e.provider,requestBody:fT(e.requestBody)??ek(),requestId:e.requestId,routeReason:t.routeReason,sessionId:t.sessionId,startedAtMs:n,statusCode:e.statusCode,responseBody:fT(e.responseBody),subagentModel:t.subagentModel,toolCallCount:t.tools.length,toolCalls:t.toolCalls,toolResults:t.toolResults,tools:t.tools,totalTokens:e.totalTokens,userAgent:t.userAgent}}function Rj(e){return JSON.stringify({agent:Nh(e.agent),range:JT(e.range),sessionAgent:Nh(e.sessionAgent),sessionId:W(e.sessionId)})}function bj(e){let t=$c(e.requestBody),n=$c(e.responseBody),r=we(e.requestHeaders,"x-ccr-route-reason"),o=we(e.requestHeaders,"x-ccr-routed-model"),s=Fj(e,t,r,o),i=Dj(e,t,n),A=Jj(n),a=UT([...t,...n],e),c=Pj(e,t,n,A);return{agent:i,conversationMessages:c,routeReason:r,sessionId:Nj(e,t,i),subagentModel:s,toolCalls:A,toolResults:a,tools:A.map(d=>d.name),userAgent:kj(e.requestHeaders)}}function Sj(e,t){return{agent:t.agent,...t.conversationMessages?.assistant?{assistant:t.conversationMessages.assistant}:{},createdAt:e.createdAt,durationMs:e.durationMs,id:e.id,...t.conversationMessages?.messages?{messages:t.conversationMessages.messages}:{},model:e.model,provider:e.provider,requestId:e.requestId,sessionId:t.sessionId,statusCode:e.statusCode,...t.conversationMessages?.user?{user:t.conversationMessages.user}:{}}}function Dj(e,t,n){let r=ZD(Tj(e.requestHeaders));if(r)return r;let o=[e.path,e.url,JSON.stringify(e.responseHeaders),Uh(t),Uh(n)].join(" ").toLowerCase(),s=ZD(o,{allowStandaloneCodex:!1,allowStandaloneGrok:!1,allowStandaloneKilo:!1,allowStandaloneKimi:!1,allowStandaloneOpenCode:!1});return s||(we(e.requestHeaders,"x-claude-code-session-id")||t.some(Lj)?"claude-code":"unknown")}function Tj(e){let t=[];for(let[n,r]of Object.entries(e)){let o=n.toLowerCase();(o==="user-agent"||o==="x-user-agent"||o==="x-client-user-agent"||o==="x-ccr-client"||o==="x-client-name"||o.includes("user-agent")||o.endsWith("-ua"))&&t.push(Array.isArray(r)?r.join(" "):r)}return t.join(" ").toLowerCase()}function kj(e){return we(e,"user-agent")||we(e,"x-user-agent")||we(e,"x-client-user-agent")}function ZD(e,t={}){let n=e.toLowerCase(),r=t.allowStandaloneCodex??!0,o=t.allowStandaloneGrok??!0,s=t.allowStandaloneKilo??!0,i=t.allowStandaloneKimi??!0,A=t.allowStandaloneOpenCode??!0;if(n.includes("claude design")||n.includes("claude-design")||n.includes("claude.ai/design"))return"claude-design";if(n.includes("zcode")||n.includes("z-code")||n.includes("z code")||/(^|[^a-z0-9])zcode([/_\s-]|$)/.test(n))return"zcode";if(A&&(n.includes("opencode")||n.includes("open-code")||n.includes("open code")||/(^|[^a-z0-9])opencode([/_\s-]|$)/.test(n)))return"opencode";if(n==="pi"||n.includes("pi-coding-agent")||n.includes("pi coding agent")||n.includes("pi_coding_agent"))return"pi";if(n.includes("xai-grok-cli")||o&&(n.includes("grok-cli")||n.includes("grok cli")||/(^|[^a-z0-9])grok([/_\s-]|$)/.test(n)))return"grok";if(n.includes("kimi-code-cli")||n.includes("kimi_code_cli")||i&&(n.includes("kimi-cli")||n.includes("kimi cli")||/(^|[^a-z0-9])kimi([/_\s-]|$)/.test(n)))return"kimi";if(n.includes("kilo-code-cli")||n.includes("kilo_code_cli")||n.includes("kilocode")||s&&(n.includes("kilo-cli")||n.includes("kilo cli")||/(^|[^a-z0-9])kilo([/_\s-]|$)/.test(n)))return"kilo";if(n.includes("workbuddy")||n.includes("work-buddy")||n.includes("work buddy")||/(^|[^a-z0-9])workbuddy([/_\s-]|$)/.test(n))return"workbuddy";if(n.includes("openai-codex")||n.includes("codex_cli")||n.includes("codex-cli")||r&&/(^|[^a-z0-9])codex([/_\s-]|$)/.test(n))return"codex";if(n.includes("@anthropic-ai/claude-code")||n.includes("claude-code")||n.includes("claude code")||n.includes("claude_cli")||n.includes("claude-cli"))return"claude-code"}function Nj(e,t,n){let r=Mj(e.requestHeaders,n);if(r)return r;for(let o of t){let s=Uj(o);if(s)return s}return`request:${e.requestId||e.id}`}function Mj(e,t){let n=["x-agent-session-id","x-session-id","session-id","x-conversation-id","conversation-id","x-thread-id","thread-id","x-chat-id","chat-id"],r=["x-claude-code-session-id","x-claude-session-id","claude-code-session-id","claude-session-id"],o=["x-codex-session-id","codex-session-id","x-codex-conversation-id","codex-conversation-id","x-openai-session-id","openai-session-id","x-openai-conversation-id","openai-conversation-id","x-openai-thread-id","openai-thread-id"],s=["x-zcode-session-id","zcode-session-id","x-zcode-conversation-id","zcode-conversation-id","x-zcode-thread-id","zcode-thread-id","x-z-code-session-id","z-code-session-id"],a=t==="zcode"?[...s,...o,...n,...r]:t==="workbuddy"?[...["x-workbuddy-session-id","workbuddy-session-id","x-workbuddy-conversation-id","workbuddy-conversation-id","x-workbuddy-thread-id","workbuddy-thread-id","x-work-buddy-session-id","work-buddy-session-id"],...o,...n,...r]:t==="pi"?[...["x-pi-session-id","pi-session-id","x-pi-conversation-id","pi-conversation-id","x-pi-thread-id","pi-thread-id"],...n,...o,...r]:t==="codex"?[...o,...n,...r]:t==="claude-code"?[...r,...n,...o,...s]:[...r,...o,...s,...n];for(let c of a){let d=we(e,c);if(d)return d}return xj(e)}function xj(e){for(let[t,n]of Object.entries(e)){let r=t.toLowerCase();if(!ST(r)||DT(r))continue;let o=W(Array.isArray(n)?n[0]:n);if(o)return o}}function Uj(e){if(!S(e))return;let t=w(e.session_id)||w(e.sessionId)||w(e.conversation_id)||w(e.conversationId)||w(e.chat_id)||w(e.chatId)||w(e.thread_id)||w(e.threadId);if(t)return t;let n=S(e.metadata)?e.metadata:void 0,r=w(n?.session_id)||w(n?.sessionId)||w(n?.conversation_id)||w(n?.conversationId)||w(n?.chat_id)||w(n?.chatId);if(r)return r;let o=w(n?.user_id);return o?.includes("_session_")?o.split("_session_").at(-1)?.trim()||void 0:wh(e)}function wh(e,t=0){if(!(t>4)){if(Array.isArray(e)){for(let n of e){let r=wh(n,t+1);if(r)return r}return}if(S(e)){for(let[n,r]of Object.entries(e)){let o=n.toLowerCase();if(ST(o)&&!DT(o)){let s=w(r);if(s)return s}}for(let n of Object.values(e)){let r=wh(n,t+1);if(r)return r}}}}function ST(e){return e.includes("session")||e.includes("conversation")||e.includes("thread")||e==="chat_id"||e==="chatid"||e==="chat-id"}function DT(e){return e.includes("request")||e.includes("trace")||e.includes("span")||e.includes("message")||e.includes("event")||e.includes("parent")}function Lj(e){if(!S(e))return!1;let t=S(e.metadata)?e.metadata:void 0;return!!w(t?.user_id)?.includes("_session_")}function Fj(e,t,n,r){if(n?.toLowerCase().includes("subagent"))return r||e.model;for(let o of t){let s=_j(o);if(s)return s}}function _j(e){if(!S(e))return;let t=eT(e.system);if(t)return t;if(Array.isArray(e.messages))for(let n of e.messages.slice(0,2)){if(!S(n)||n.role!=="user")continue;let r=eT(n.content);if(r)return r}}function eT(e){if(typeof e=="string")return tT(e);if(Array.isArray(e))for(let t of e){let n=typeof t=="string"?t:S(t)&&typeof t.text=="string"?t.text:void 0,r=n?tT(n):void 0;if(r)return r}}function tT(e){let n=e.match(/<CCR-SUBAGENT-MODEL>(.*?)<\/CCR-SUBAGENT-MODEL>/s)?.[1]?.trim();return n&&n.toLowerCase()!=="provider/model"?n:void 0}function $c(e){if(!e||e.encoding!=="utf8"||!e.text.trim())return[];let t=Me(e.text.trim());return t!==void 0?[t]:ck(e.text)}function Pj(e,t,n,r){let o=TT(t),s=Yj(n)??Vj(r),i=rT(o,e.requestBody),A=rT(s,e.responseBody),a=Oj(e,t,s);if(!(!i&&!A&&a.length===0))return{...A?{assistant:A}:{},...a.length>0?{messages:a}:{},...i?{user:i}:{}}}function TT(e){let t=e.flatMap(vj);for(let n=t.length-1;n>=0;n-=1){let r=As(t[n]);if(r)return r}}function vj(e){if(!S(e))return[];let t=[];if(Array.isArray(e.messages))for(let r of e.messages){if(!S(r)||w(r.role)!=="user")continue;let o=ke(r.content??r.text);o&&t.push(o)}if(typeof e.input=="string")t.push(e.input);else if(Array.isArray(e.input)){for(let r of e.input)if(typeof r=="string")t.push(r);else if(S(r)&&w(r.role)==="user"){let o=ke(r.content??r.text??r.input);o&&t.push(o)}}Array.isArray(e.contents)&&t.push(...Wj(e.contents,"user"));let n=w(e.prompt);return n&&t.push(n),t}function Oj(e,t,n){let r=[];if(t.forEach((s,i)=>{r.push(...qj(s,e.requestBody,`request:${i}`))}),r.length===0){let s=TT(t),i=Ar("user",s,e.requestBody,"request:fallback:user");i&&r.push(i)}let o=Ar("assistant",n,e.responseBody,"response:assistant");return o&&r.push(o),Hj(r)}function qj(e,t,n){if(!S(e))return[];let r=[],o=ke(e.system??e.system_prompt??e.systemPrompt??e.instructions),s=Ar("system",o,t,`${n}:system`);if(s&&r.push(s),Array.isArray(e.messages)&&e.messages.forEach((A,a)=>{let c=nT(A,t,`${n}:messages:${a}`);c&&r.push(c)}),Array.isArray(e.input))e.input.forEach((A,a)=>{let c=nT(A,t,`${n}:input:${a}`);c&&r.push(c)});else if(typeof e.input=="string"){let A=Ar("user",e.input,t,`${n}:input`);A&&r.push(A)}Array.isArray(e.contents)&&e.contents.forEach((A,a)=>{let c=Gj(A,t,`${n}:contents:${a}`);c&&r.push(c)});let i=w(e.prompt);if(i){let A=Ar("user",i,t,`${n}:prompt`);A&&r.push(A)}return r}function nT(e,t,n){if(typeof e=="string")return Ar("user",e,t,n);if(!S(e))return;let r=kT(w(e.role)??w(e.type)),o=ke(e.content??e.text??e.input??e.output);return Ar(NT(r,o),o,t,n)}function Gj(e,t,n){if(!S(e))return;let r=kT(w(e.role)),o=ke(e.parts??e.content??e.text);return Ar(NT(r,o),o,t,n)}function Ar(e,t,n,r){let o=As(t);if(o)return{content:o,id:r,role:e,sourcePreview:!!n?.preview,sourceTruncated:!!n?.truncated,truncated:!1}}function kT(e){let t=e?.trim().toLowerCase();return t==="assistant"||t==="model"?"assistant":t==="developer"?"developer":t==="system"?"system":t==="tool"||t==="function"||t==="function_call_output"||t==="tool_result"?"tool":t==="context"||t==="system-reminder"?"context":"user"}function NT(e,t){if(e!=="user")return e;let n=t?.trim().toLowerCase()??"";return n.startsWith("<system-reminder>")||n.startsWith("current runtime context.")||n.startsWith("this snapshot supersedes earlier runtime-context snapshots.")?"context":e}function Hj(e){let t=new Set;return e.filter(n=>{let r=`${n.role}
|
|
714
|
+
${n.content}`;return t.has(r)?!1:(t.add(r),!0)})}function Yj(e){let t="",n=[];for(let o of e)t+=MT(o),n.push(...Hi(o));let r=As(t);return r||As(n.join(`
|
|
715
|
+
|
|
716
|
+
`))||void 0}function MT(e){if(Array.isArray(e))return e.map(MT).join("");if(!S(e))return"";let t=[],n=w(e.type),r=S(e.delta)?e.delta:void 0;if((n==="content_block_start"||n==="content_block_delta")&&r){let o=w(r.text)||w(r.partial_json);o&&w(r.type)!=="input_json_delta"&&t.push(o)}if(n==="content_block_start"&&S(e.content_block)){let o=ke(e.content_block);o&&t.push(o)}if(n==="response.output_text.delta"||n==="response.refusal.delta"||n==="response.output_text.done"||n==="response.refusal.done"){let o=w(e.delta)||w(e.text);o&&t.push(o)}if(n==="response.content_part.done"&&S(e.part)){let o=ke(e.part);o&&t.push(o)}if(n==="response.output_item.done"&&S(e.item)&&t.push(...Hi(e.item)),Array.isArray(e.choices))for(let o of e.choices){if(!S(o))continue;let s=S(o.delta)?o.delta:void 0,i=ke(s?.content??s?.text);i&&t.push(i)}return t.join("")}function Hi(e){if(Array.isArray(e))return e.flatMap(Hi);if(!S(e))return[];let t=[],n=w(e.type),r=w(e.output_text);if(r)return t.push(r),t;if(n==="response.output_text.done"||n==="response.refusal.done"){let i=w(e.text);i&&t.push(i)}if(Array.isArray(e.choices))for(let i of e.choices){if(!S(i))continue;let A=S(i.message)?i.message:void 0,a=ke(A?.content??A?.text);a&&t.push(a)}let o=S(e.message)?e.message:void 0;if(o&&(w(o.role)==="assistant"||o.content!==void 0||o.text!==void 0)){let i=ke(o.content??o.text);i&&t.push(i)}if(w(e.role)==="assistant"){let i=ke(e.content??e.text);i&&t.push(i)}else if(e.content!==void 0&&!Array.isArray(e.messages)){let i=ke(e.content);i&&t.push(i)}if(Array.isArray(e.output))for(let i of e.output){if(!S(i))continue;let A=w(i.type),a=w(i.role);if(A==="message"||a==="assistant"){let c=ke(i.content??i.text);c&&t.push(c)}else if(A==="output_text"){let c=ke(i.text??i.content);c&&t.push(c)}}if(S(e.response)){let i=w(e.response.output_text);i?t.push(i):t.push(...Hi(e.response))}if(S(e.part)){let i=ke(e.part);i&&t.push(i)}if(S(e.item)&&t.push(...Hi(e.item)),Array.isArray(e.candidates))for(let i of e.candidates){if(!S(i))continue;let A=S(i.content)?i.content:void 0,a=ke(A?.parts??A?.content??A);a&&t.push(a)}return t}function Wj(e,t){let n=[];for(let r of e){if(!S(r)||w(r.role)!==t)continue;let o=ke(r.parts??r.content??r.text);o&&n.push(o)}return n}function ke(e){let t=[];return jc(e,t),As(t.join(`
|
|
717
|
+
`))}function jc(e,t){if(typeof e=="string"){t.push(e);return}if(Array.isArray(e)){for(let o of e)jc(o,t);return}if(!S(e))return;let n=w(e.type)?.toLowerCase()??"";if(n==="tool_result"||n==="function_call_output"||n==="tool_call_output")return;if(n.includes("image")){t.push("[image]");return}if(n.includes("audio")){t.push("[audio]");return}if(S(e.inline_data)||S(e.inlineData)){t.push("[media]");return}let r=w(e.text)??w(e.input_text)??w(e.output_text);if(r){t.push(r);return}if(e.content!==void 0){jc(e.content,t);return}Array.isArray(e.parts)&&jc(e.parts,t)}function Vj(e){if(e.length!==0)return e.map(t=>{let n=t.input?.preview.trim();return n?`Tool call: ${t.name}
|
|
718
|
+
${n}`:`Tool call: ${t.name}`}).join(`
|
|
719
|
+
|
|
720
|
+
`)}function rT(e,t){let n=As(e);if(n)return{content:n,sourcePreview:!!t?.preview,sourceTruncated:!!t?.truncated,truncated:!1}}function As(e){return(e??"").replace(/\r\n/g,`
|
|
721
|
+
`).trim()}function Jj(e){let t=new Map;for(let n of e)Rh(n,t);for(let[n,r]of xT(e)){let o=qh(r.input),s=t.get(n);t.set(n,{id:n,input:o??s?.input,name:s?.name||r.name||"tool"})}return Array.from(t.values())}function Rh(e,t){if(Array.isArray(e)){for(let A of e)Rh(A,t);return}if(!S(e))return;let n=w(e.type),r=S(e.function)?e.function:void 0,o=r?r.arguments??r.parameters??r.input:void 0,s=w(e.name)||w(e.tool)||w(e.tool_name)||w(r?.name);if((n==="tool_use"||n==="server_tool_use"||n==="mcp_tool_use"||n==="function_call"||n==="tool_call"||n==="tool_block_complete"||n==="tool_delta"||!!r?.name)&&s){let A=w(e.id)||w(e.call_id)||w(e.tool_call_id);if(!A&&r&&Hh(e.index))return;let a=A||`${s}:${t.size}`;t.set(a,{id:a,input:qh(e.input??e.arguments??e.parameters??o),name:s})}for(let A of Object.values(e))Rh(A,t)}function xT(e){let t={calls:new Map,indexToId:new Map};for(let r of e)bh(r,t);let n=new Map;for(let[r,o]of t.calls){let s=o.fragments.join(""),i=s.trim()?Gh(s):o.input;i!==void 0&&n.set(r,{...o,input:i})}return n}function bh(e,t){if(Array.isArray(e)){for(let n of e)bh(n,t);return}if(S(e)){zj(e,t),Kj(e,t);for(let n of Object.values(e))bh(n,t)}}function zj(e,t){let n=w(e.type),r=Hh(e.index);if(n==="content_block_start"&&r&&S(e.content_block)){let i=e.content_block,A=w(i.type);if(A==="tool_use"||A==="server_tool_use"||A==="mcp_tool_use"){let a=w(i.id);if(a){t.indexToId.set(r,a);let c=Zc(t,a,w(i.name));i.input!==void 0&&(c.input=i.input)}}return}if(n!=="content_block_delta"||!r||!S(e.delta))return;let o=e.delta;if(w(o.type)!=="input_json_delta"||typeof o.partial_json!="string")return;let s=t.indexToId.get(r);s&&Zc(t,s).fragments.push(o.partial_json)}function Kj(e,t){let n=S(e.function)?e.function:void 0;if(!n)return;let r=Hh(e.index),o=w(e.id)||w(e.call_id)||w(e.tool_call_id),s=r?t.indexToId.get(r):void 0,i=o||s||(r?`tool-index:${r}`:void 0);if(!i)return;r&&!o&&!s&&t.indexToId.set(r,i),o&&r&&Xj(t,r,o);let A=Zc(t,o||i,w(n.name)||w(e.name)),a=n.arguments??n.parameters??n.input;typeof a=="string"?A.fragments.push(a):a!==void 0&&(A.input=a)}function Zc(e,t,n){let r=e.calls.get(t);if(r)return!r.name&&n&&(r.name=n),r;let o={fragments:[],id:t,name:n};return e.calls.set(t,o),o}function Xj(e,t,n){let r=e.indexToId.get(t);if(e.indexToId.set(t,n),!r||r===n)return;let o=e.calls.get(r);if(!o)return;let s=Zc(e,n,o.name);s.fragments.push(...o.fragments),s.input===void 0&&(s.input=o.input),e.calls.delete(r)}function UT(e,t){let n=new Map;for(let r of e)Sh(r,t,n);return Array.from(n.values())}function Sh(e,t,n){if(Array.isArray(e)){for(let A of e)Sh(A,t,n);return}if(!S(e))return;let r=w(e.type),o=w(e.role),s=w(e.tool_use_id)||w(e.tool_call_id)||w(e.call_id)||w(e.id);if(LT(r)||o==="tool"&&!!e.tool_call_id){let A=qh(e.content??e.output??e.result??e.text);if(A){let a=s||`tool-result:${n.size}`;n.set(a,{id:a,requestId:t.requestId,requestLogId:t.id,result:A})}}for(let A of Object.values(e))Sh(A,t,n)}function LT(e){let t=e?.trim().toLowerCase();return t==="tool_result"||t==="function_call_output"||t==="tool_call_output"||t==="custom_tool_call_output"}function qh(e){if(e==null)return;let t=Gh(e),n=typeof t=="string",r=n?"text":"json",o=n?t:FT(t),s=Buffer.byteLength(o,"utf8"),i=o.length>KD;return{kind:r,preview:i?`${o.slice(0,KD)}
|
|
722
|
+
...`:o,sizeBytes:s,truncated:i}}function zc(e=!1){return{content:"",found:!1,kind:"empty",sizeBytes:0,sourceTruncated:e}}function jj(e,t){if(e==null)return{content:"",found:!0,kind:"empty",sizeBytes:0,sourceTruncated:t};let n=Gh(e),r=typeof n=="string",o=r?n:FT(n);return{content:o,found:!0,kind:r?"text":"json",sizeBytes:Buffer.byteLength(o,"utf8"),sourceTruncated:t}}function $j(e,t){let n=xT(e);if(t&&n.has(t))return{found:!0,value:n.get(t)?.input};if(!t&&n.size===1)return{found:!0,value:Array.from(n.values())[0].input};let r=new Map;for(let o of e)Dh(o,r);return t&&r.has(t)?{found:!0,value:r.get(t)}:!t&&r.size===1?{found:!0,value:Array.from(r.values())[0]}:{found:!1}}function Dh(e,t){if(Array.isArray(e)){for(let A of e)Dh(A,t);return}if(!S(e))return;let n=w(e.type),r=S(e.function)?e.function:void 0,o=r?r.arguments??r.parameters??r.input:void 0,s=w(e.name)||w(e.tool)||w(e.tool_name)||w(r?.name);if((n==="tool_use"||n==="server_tool_use"||n==="mcp_tool_use"||n==="function_call"||n==="tool_call"||n==="tool_block_complete"||n==="tool_delta"||!!r?.name)&&s){let A=w(e.id)||w(e.call_id)||w(e.tool_call_id)||`${s}:${t.size}`;t.set(A,e.input??e.arguments??e.parameters??o)}for(let A of Object.values(e))Dh(A,t)}function Zj(e,t){let n=new Map;for(let r of e)Th(r,n);return t&&n.has(t)?{found:!0,value:n.get(t)}:n.size===1?{found:!0,value:Array.from(n.values())[0]}:{found:!1}}function Th(e,t){if(Array.isArray(e)){for(let i of e)Th(i,t);return}if(!S(e))return;let n=w(e.type),r=w(e.role),o=w(e.tool_use_id)||w(e.tool_call_id)||w(e.call_id)||w(e.id);if(LT(n)||r==="tool"&&!!e.tool_call_id){let i=e.content??e.output??e.result??e.text;i!==void 0&&t.set(o||`tool-result:${t.size}`,i)}for(let i of Object.values(e))Th(i,t)}function Gh(e){if(typeof e!="string")return e;let t=e.trim();return!t||!/^[{\[]/.test(t)?e:Me(t)??e}function Hh(e){if(typeof e=="number"&&Number.isFinite(e))return String(e);if(typeof e=="string"&&e.trim())return e.trim()}function FT(e){try{return JSON.stringify(e,null,2)??""}catch{return Uh(e)}}function oT(e){return e.map(t=>({...t,concurrentRequests:e$(e,t.startedAtMs)}))}function e$(e,t){return e.filter(n=>n.startedAtMs<=t&&n.endedAtMs>t).length||1}function t$(e){let t=so(e,o=>o.agent),n=Array.from(t.entries()).map(([o,s])=>({...Nn(s),agent:o,key:o,label:zT(o),maxShare:0})),r=Math.max(...n.map(o=>o.totalTokens||o.requestCount),0);return n.map(o=>({...o,maxShare:r>0?(o.totalTokens||o.requestCount)/r:0})).sort((o,s)=>s.totalTokens-o.totalTokens||s.requestCount-o.requestCount)}function n$(e){let t=so(e,n=>`${n.agent}:${n.client}:${n.userAgent??""}`);return Array.from(t.values()).map(n=>{let r=n[0],o=n.at(-1)??r;return{...Nn(n),agent:r.agent,key:`${r.agent}:${r.client}:${r.userAgent??""}`,label:r.client||r.userAgent||"unknown",lastSeenAt:o.completedAt||o.createdAt,userAgent:r.userAgent}}).sort(YT).slice(0,100)}function _T(e){let t=so(e,n=>`${n.agent}:${n.method}:${n.path}:${n.provider}:${n.model}`);return Array.from(t.values()).map(n=>{let r=n[0],o=n.at(-1)??r;return{...Nn(n),agent:r.agent,key:`${r.agent}:${r.method}:${r.path}:${r.provider}:${r.model}`,lastSeenAt:o.completedAt||o.createdAt,method:r.method,model:r.model,path:r.path,provider:r.provider,statusCodes:HT(n)}}).sort(YT).slice(0,100)}function PT(e){let t=so(e,n=>`${n.agent}:${n.routeReason||"unknown"}:${n.provider}:${n.model}`);return Array.from(t.values()).map(n=>{let r=n[0],o=n.at(-1)??r,s=Nn(n);return{agent:r.agent,cacheRatio:s.cacheRatio,errorCount:s.errorCount,key:`${r.agent}:${r.routeReason||"unknown"}:${r.provider}:${r.model}`,lastSeenAt:o.completedAt||o.createdAt,model:r.model,p95DurationMs:s.p95DurationMs,provider:r.provider,requestCount:s.requestCount,routeReason:r.routeReason||"unknown",successRate:s.successRate,totalTokens:s.totalTokens}}).sort((n,r)=>r.errorCount-n.errorCount||r.p95DurationMs-n.p95DurationMs||r.requestCount-n.requestCount).slice(0,100)}function vT(e){return e.filter(t=>!t.ok||!!t.error).slice(-100).reverse().map(t=>({agent:t.agent,client:t.client,createdAt:t.createdAt,durationMs:t.durationMs,error:t.error,id:t.id,method:t.method,model:t.model,path:t.path,provider:t.provider,requestId:t.requestId,routeReason:t.routeReason,sessionId:t.sessionId,statusCode:t.statusCode,userAgent:t.userAgent}))}function r$(e){let t=so(e,n=>`${n.agent}:${n.sessionId}`);return Array.from(t.values()).map(OT).sort((n,r)=>Date.parse(r.lastSeenAt)-Date.parse(n.lastSeenAt)).slice(0,100)}function OT(e){let t=e[0],n=e.at(-1)??t;return{...Nn(e),agent:t.agent,client:t.client,durationMs:Math.max(0,n.endedAtMs-t.startedAtMs),id:t.sessionId,lastRequestId:n.requestId,lastSeenAt:n.completedAt||n.createdAt,models:Mh(e.map(o=>o.model)).slice(0,8),providers:Mh(e.map(o=>o.provider)).slice(0,8),startedAt:t.createdAt,topTools:E$(e,5),userAgent:t.userAgent}}function o$(e,t){let n=W(t.sessionId);if(!n)return;let r=y$(t.sessionAgent);return e.filter(o=>o.sessionId===n&&(!r||o.agent===r))}function s$(e,t){if(e.length===0)return;let n=t?i$(e,t):[];return{conversation:A$(e),endpoints:_T(e),errors:vT(e),models:g$(e),requests:[...e].reverse().map(VT),routes:PT(e),session:OT(e),statusCodes:HT(e),subagents:GT(e),tools:qT(e),totals:Nn(e),trace:a$(e,n)}}function i$(e,t){let n=new Set(e.flatMap(s=>s.toolCalls.map(i=>i.id).filter(i=>!!i)));if(n.size===0)return[];let r=new Map,o=[...e].filter(s=>!!s.requestBody.bodyRef).sort((s,i)=>i.startedAtMs-s.startedAtMs||i.id-s.id);for(let s of o){let i=ZT(t,s.requestBody);if(!i||i===s.requestBody||i.encoding!=="utf8")continue;let A=$c(i),a=UT(A,{id:s.id,requestId:s.requestId});for(let c of a){let d=r.get(c.id);(!d||!d.result&&c.result)&&r.set(c.id,c),n.delete(c.id)}if(n.size===0)break}return Array.from(r.values())}function A$(e){return[...e].sort((t,n)=>t.startedAtMs-n.startedAtMs||t.id-n.id).map(t=>t.conversation).filter(t=>!!t)}function a$(e,t=[]){let n=[...e].sort((g,h)=>g.startedAtMs-h.startedAtMs||g.id-h.id),r=n[0],o=r.sessionId,s=Math.min(...n.map(g=>g.startedAtMs)),i=Math.max(...n.map(g=>g.endedAtMs)),A=Math.max(0,i-s),a=Nn(n),c=`agent:${r.agent}:${o}`,d=d$(n,t),l=0,u=[{agent:r.agent,cacheReadTokens:a.cacheReadTokens,cacheWriteTokens:a.cacheWriteTokens,concurrentRequests:a.maxConcurrentRequests,costUsd:a.costUsd,depth:0,durationMs:A,endedAt:no(i),id:c,inputTokens:a.inputTokens,kind:"agent",name:`${zT(r.agent)} session`,offsetMs:0,outputTokens:a.outputTokens,sessionId:o,startedAt:no(s),status:a.errorCount===0?"success":a.errorCount===a.requestCount?"error":"partial",totalTokens:a.totalTokens}];for(let g of n){let h=c,E=1;if(g.subagentModel){let C=fh({depth:E,kind:"subagent",name:`Subagent: ${g.subagentModel}`,parentId:h,request:g,startMs:s});u.push(C),h=C.id,E+=1}if(c$(g.routeReason)){let C=fh({depth:E,kind:"route",name:`Route: ${g.routeReason}`,parentId:h,request:g,startMs:s});u.push(C),h=C.id,E+=1}let B=fh({depth:E,kind:"llm",name:g.model&&g.model!=="unknown"?g.model:g.path,parentId:h,request:g,startMs:s});u.push(B),g.toolCalls.forEach((C,y)=>{u.push(l$({depth:E+1,index:y,parentId:B.id,request:g,startMs:s,tool:u$(C,d,l)})),l+=1})}return{agent:r.agent,durationMs:A,endedAt:no(i),errorCount:u.filter(g=>g.status==="error").length,id:`${r.agent}:${o}`,llmRunCount:u.filter(g=>g.kind==="llm").length,maxDepth:Math.max(...u.map(g=>g.depth),0),rootRunId:c,runCount:u.length,runs:u,sessionId:o,startedAt:no(s),subagentRunCount:u.filter(g=>g.kind==="subagent").length,toolRunCount:u.filter(g=>g.kind==="tool").length}}function c$(e){let t=e?.trim().toLowerCase();return!!(t&&t!=="default"&&t!=="inline-model")}function d$(e,t=[]){let n=new Map,r=[],o=new Set,s=[...e.flatMap(i=>i.toolResults),...t];for(let i of s){n.set(i.id,i);let A=i.id.startsWith("tool-result:")?`${i.result?.kind??"empty"}:${i.result?.preview??""}`:i.id;o.has(A)||(o.add(A),r.push(i))}return{byId:n,ordered:r}}function u$(e,t,n){let r=(e.id?t.byId.get(e.id):void 0)??t.ordered[n];return{callId:e.id,input:e.input,result:r?.result,resultRequestId:r?.requestId,resultRequestLogId:r?.requestLogId}}function fh({depth:e,kind:t,name:n,parentId:r,request:o,startMs:s}){return{agent:o.agent,cacheReadTokens:o.cacheReadTokens,cacheWriteTokens:o.cacheWriteTokens,concurrentRequests:o.concurrentRequests,costUsd:o.costUsd,depth:e,durationMs:o.durationMs,endedAt:no(o.endedAtMs),error:o.error,id:`${t}:${o.id}`,inputTokens:o.inputTokens,kind:t,model:o.model,name:n,offsetMs:Math.max(0,o.startedAtMs-s),outputTokens:o.outputTokens,parentId:r,path:o.path,provider:o.provider,requestId:o.requestId,requestLogId:o.id,routeReason:o.routeReason,sessionId:o.sessionId,startedAt:o.createdAt,status:o.ok&&!o.error?"success":"error",statusCode:o.statusCode,totalTokens:o.totalTokens}}function l$({depth:e,index:t,parentId:n,request:r,startMs:o,tool:s}){let i=r.endedAtMs,A=r.toolCalls[t]?.name||"tool";return{agent:r.agent,cacheReadTokens:0,cacheWriteTokens:0,concurrentRequests:r.concurrentRequests,depth:e,durationMs:0,endedAt:no(i),id:`tool:${r.id}:${t}:${A}`,inputTokens:0,kind:"tool",model:r.model,name:A,offsetMs:Math.max(0,i-o),outputTokens:0,parentId:n,path:r.path,provider:r.provider,requestId:r.requestId,requestLogId:r.id,routeReason:r.routeReason,sessionId:r.sessionId,startedAt:no(i),status:"success",tool:s,toolName:A,totalTokens:0}}function g$(e){let t=so(e,n=>`${n.provider}:${n.model}`);return Array.from(t.values()).map(n=>{let r=n[0],o=n.at(-1)??r;return{...Nn(n),key:`${r.provider}:${r.model}`,lastSeenAt:o.completedAt||o.createdAt,model:r.model,provider:r.provider}}).sort((n,r)=>r.totalTokens-n.totalTokens||r.requestCount-n.requestCount||n.model.localeCompare(r.model)).slice(0,50)}function qT(e){let t=new Map;for(let n of e){let r=new Set(n.tools);for(let o of n.tools){let s=t.get(o)??{agents:new Set,count:0,lastSeenAt:n.createdAt,requests:new Set,sessions:new Set};s.agents.add(n.agent),s.count+=1,s.lastSeenAt=n.createdAt,s.sessions.add(`${n.agent}:${n.sessionId}`),t.set(o,s)}for(let o of r)t.get(o)?.requests.add(n.id)}return Array.from(t.entries()).map(([n,r])=>({agents:Array.from(r.agents).sort(),count:r.count,lastSeenAt:r.lastSeenAt,name:n,requestCount:r.requests.size,sessions:r.sessions.size})).sort((n,r)=>r.count-n.count||n.name.localeCompare(r.name)).slice(0,100)}function GT(e){let t=new Map;for(let n of e){if(!n.subagentModel)continue;let r=`${n.agent}:${n.sessionId}:${n.provider}:${n.subagentModel}`,o=t.get(r)??{agent:n.agent,cacheReadTokens:0,cacheWriteTokens:0,count:0,lastSeenAt:n.createdAt,model:n.subagentModel,provider:n.provider,sessionId:n.sessionId,totalTokens:0};o.cacheReadTokens+=n.cacheReadTokens,o.cacheWriteTokens+=n.cacheWriteTokens,o.count+=1,o.lastSeenAt=n.createdAt,o.totalTokens+=n.totalTokens,t.set(r,o)}return Array.from(t.values()).sort((n,r)=>r.count-n.count||Date.parse(r.lastSeenAt)-Date.parse(n.lastSeenAt)).slice(0,100)}function f$(e,t,n){let r=C$(e,t),o=so(n,s=>kh(new Date(s.createdAt),e==="today"||e==="24h"?"hour":"day"));return r.map(({key:s,label:i})=>{let A=o.get(s)??[];return{bucket:s,label:i,maxConcurrentRequests:WT(A),requestCount:A.length}})}function Nn(e){if(e.length===0)return{...Qj};let t=Tn(e,u=>u.inputTokens),n=Tn(e,u=>u.outputTokens),r=Tn(e,u=>u.cacheReadTokens),o=Tn(e,u=>u.cacheWriteTokens),s=r,i=Tn(e,u=>u.costUsd??0),A=Tn(e,h$),a=Tn(e,p$),c=e.filter(u=>u.ok).length,d=new Set(e.map(u=>`${u.agent}:${u.sessionId}`)).size,l=e.map(u=>u.durationMs).sort((u,g)=>u-g);return{avgDurationMs:Math.round(Tn(e,u=>u.durationMs)/e.length),cacheRatio:B4(s,a),cacheReadTokens:r,cacheTokens:s,cacheWriteTokens:o,costUsd:i,errorCount:e.length-c,inputTokens:t,maxConcurrentRequests:WT(e),maxDurationMs:l.at(-1)??0,outputTokens:n,p50DurationMs:ph(l,.5),p95DurationMs:ph(l,.95),p99DurationMs:ph(l,.99),requestCount:e.length,sessionCount:d,subagentCallCount:e.filter(u=>!!u.subagentModel).length,successRate:c/e.length,toolCallCount:Tn(e,u=>u.toolCallCount),totalTokens:A}}function p$(e){let t=e.cacheReadTokens+e.cacheWriteTokens,n=e.totalTokens-e.outputTokens;return Math.max(e.inputTokens+t,n)}function h$(e){return Math.max(e.totalTokens,e.inputTokens+e.outputTokens+e.cacheReadTokens+e.cacheWriteTokens)}function HT(e){let t=new Map;for(let n of e)t.set(n.statusCode,(t.get(n.statusCode)??0)+1);return Array.from(t.entries()).map(([n,r])=>({count:r,statusCode:n})).sort((n,r)=>r.count-n.count||n.statusCode-r.statusCode).slice(0,6)}function YT(e,t){return t.errorCount-e.errorCount||t.p95DurationMs-e.p95DurationMs||t.requestCount-e.requestCount}function ph(e,t){if(e.length===0)return 0;let n=Math.ceil(e.length*t)-1;return e[Math.max(0,Math.min(e.length-1,n))]??0}function WT(e){if(e.length===0)return 0;let t=e.flatMap(o=>[{delta:1,time:o.startedAtMs},{delta:-1,time:o.endedAtMs}]);t.sort((o,s)=>o.time-s.time||o.delta-s.delta);let n=0,r=0;for(let o of t)n+=o.delta,r=Math.max(r,n);return r}function VT(e){let{completedAt:t,conversation:n,endedAtMs:r,requestBody:o,responseBody:s,startedAtMs:i,toolCalls:A,toolResults:a,...c}=e;return c}function E$(e,t){let n=new Map;for(let r of e)for(let o of r.tools)n.set(o,(n.get(o)??0)+1);return Array.from(n.entries()).map(([r,o])=>({count:o,name:r})).sort((r,o)=>o.count-r.count||r.name.localeCompare(o.name)).slice(0,t)}function C$(e,t){if(e==="today"||e==="24h"){let o=e==="today"?ed(t):sT(t);e==="24h"&&o.setHours(o.getHours()-23);let s=e==="today"?sT(t).getHours()+1:24;return Array.from({length:s},(i,A)=>{let a=new Date(o);return a.setHours(o.getHours()+A),{key:kh(a,"hour"),label:`${String(a.getHours()).padStart(2,"0")}:00`}})}let n=e==="7d"?7:30,r=ed(t);return r.setDate(r.getDate()-(n-1)),Array.from({length:n},(o,s)=>{let i=new Date(r);return i.setDate(r.getDate()+s),{key:kh(i,"day"),label:`${i.getMonth()+1}/${i.getDate()}`}})}function kh(e,t){let n=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0"),o=`${e.getFullYear()}-${n}-${r}`;return t==="day"?o:`${o} ${String(e.getHours()).padStart(2,"0")}:00`}function sT(e){let t=new Date(e);return t.setMinutes(0,0,0),t}function ed(e){let t=new Date(e);return t.setHours(0,0,0,0),t}function I$(e){let t=e.getFullYear(),n=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0");return`${t}-${n}-${r}`}function no(e){return new Date(e).toISOString()}function B$(e,t){let n=new Date(t);return e==="today"?ed(n):(e==="24h"?n.setHours(n.getHours()-24):e==="7d"?n.setDate(n.getDate()-7):n.setDate(n.getDate()-30),n)}function JT(e){return e==="today"||e==="24h"||e==="30d"?e:"7d"}function Nh(e){return e==="claude-code"||e==="codex"||e==="grok"||e==="kimi"||e==="kilo"||e==="opencode"||e==="pi"||e==="workbuddy"||e==="zcode"||e==="claude-design"||e==="unknown"?e:"all"}function y$(e){return e==="claude-code"||e==="codex"||e==="grok"||e==="kimi"||e==="kilo"||e==="opencode"||e==="pi"||e==="workbuddy"||e==="zcode"||e==="claude-design"||e==="unknown"?e:void 0}function zT(e){return e==="claude-code"?"Claude Code":e==="claude-design"?"Claude Design":e==="codex"?"Codex":e==="grok"?"Grok CLI":e==="kimi"?"Kimi CLI":e==="kilo"?"Kilo CLI":e==="opencode"?"OpenCode":e==="pi"?"Pi":e==="workbuddy"?"Workbuddy":e==="zcode"?"ZCode":"Unknown"}function Mh(e){let t=[],n=new Set;for(let r of e){let o=r.trim();!o||o==="unknown"||n.has(o)||(n.add(o),t.push(o))}return t}function so(e,t){let n=new Map;for(let r of e){let o=t(r),s=n.get(o)??[];s.push(r),n.set(o,s)}return n}function we(e,t){let n=e[t.toLowerCase()];return Array.isArray(n)?W(n[0]):W(n)}function iT(e){return!!(we(e,"x-ccr-provider-credential-id")||we(e,"x-ccr-provider-credential-chain")||we(e,"x-ccr-provider-credential-saturated"))}function AT(e,t){let n=xh(we(e,"x-ccr-provider-credential-chain")),r=xh(we(t,"x-ccr-provider-credential-chain")),o=Ne(we(e,"x-ccr-provider-credential-id")??we(t,"x-ccr-provider-credential-id")??n[0]??r[0],""),s=n.length>0?n:r.length>0?r:o?[o]:[],i=Q$(we(e,"x-ccr-provider-credential-saturated")??we(t,"x-ccr-provider-credential-saturated"));return{chain:s,id:o,saturated:i}}function m$(e,t){let n=ie(we(e,"x-ccr-fallback-attempts"))??0;if(n<=1)return[];let r=aT(we(e,"x-ccr-fallback-failures")),o=aT(we(e,"x-ccr-fallback-delays-ms")).map(i=>ie(i)??0),s=[];for(let i=0;i<n-1;i+=1)s.push({attempt:i+1,delayMs:o[i]??0,final:!1,status:r[i]||"failed"});return s.push({attempt:n,delayMs:0,final:!0,status:t>0?String(t):void 0}),s}function aT(e){return(e??"").split(",").map(t=>t.trim()).filter(Boolean)}function xh(e){return Mh((e??"").split(","))}function Q$(e){let t=e?.trim().toLowerCase();return t==="1"||t==="true"||t==="yes"}function Uh(e){if(typeof e=="string")return e;try{return JSON.stringify(e)||""}catch{return""}}function cT(e){let t=Date.parse(e);return Number.isFinite(t)?t:0}function w$(e){let t=de(e,`
|
|
723
|
+
SELECT
|
|
724
|
+
rowid AS id,
|
|
725
|
+
model,
|
|
726
|
+
path,
|
|
727
|
+
request_body_text,
|
|
728
|
+
response_body_text
|
|
729
|
+
FROM request_logs
|
|
730
|
+
`);if(t.length===0)return;let n=e.prepare(`
|
|
731
|
+
UPDATE request_logs
|
|
732
|
+
SET requested_model = ?, resolved_model = ?, response_model = ?
|
|
733
|
+
WHERE rowid = ?
|
|
734
|
+
`);e.transaction(()=>{for(let r of t){let o=lh(String(r.request_body_text??""),String(r.path??""))??"",s=W(String(r.model??""))??"",i=Jc(String(r.response_body_text??""))??"";n.run(o,s,i,R(r.id))}})()}function R$(e){let t=new Set(de(e,"PRAGMA table_info(request_logs)").map(o=>String(o.name??"")).filter(Boolean)),n=!t.has("requested_model")||!t.has("resolved_model")||!t.has("response_model"),r=(o,s)=>{t.has(o)||(e.exec(`ALTER TABLE request_logs ADD COLUMN ${o} ${s}`),t.add(o))};r("source_usage_id","INTEGER"),r("created_at","TEXT NOT NULL DEFAULT ''"),r("completed_at","TEXT NOT NULL DEFAULT ''"),r("request_id","TEXT NOT NULL DEFAULT ''"),r("event_id","TEXT NOT NULL DEFAULT ''"),r("client","TEXT NOT NULL DEFAULT 'unknown'"),r("method","TEXT NOT NULL DEFAULT ''"),r("path","TEXT NOT NULL DEFAULT ''"),r("url","TEXT NOT NULL DEFAULT ''"),r("provider","TEXT NOT NULL DEFAULT 'unknown'"),r("credential_id","TEXT NOT NULL DEFAULT ''"),r("credential_chain","TEXT NOT NULL DEFAULT ''"),r("credential_saturated","INTEGER NOT NULL DEFAULT 0"),r("model","TEXT NOT NULL DEFAULT 'unknown'"),r("requested_model","TEXT NOT NULL DEFAULT ''"),r("resolved_model","TEXT NOT NULL DEFAULT ''"),r("response_model","TEXT NOT NULL DEFAULT ''"),r("route_trace_version","INTEGER NOT NULL DEFAULT 0"),r("route_hop_count","INTEGER NOT NULL DEFAULT 0"),r("route_attempt_count","INTEGER NOT NULL DEFAULT 0"),r("route_trace_truncated","INTEGER NOT NULL DEFAULT 0"),r("is_stream","INTEGER NOT NULL DEFAULT 0"),r("status_code","INTEGER NOT NULL DEFAULT 0"),r("ok","INTEGER NOT NULL DEFAULT 0"),r("gateway_status_code","INTEGER NOT NULL DEFAULT 0"),r("gateway_ok","INTEGER NOT NULL DEFAULT 0"),r("gateway_error","TEXT NOT NULL DEFAULT ''"),r("gateway_final_attempt","INTEGER NOT NULL DEFAULT 1"),r("gateway_body_capture_policy","TEXT NOT NULL DEFAULT 'none'"),r("gateway_body_capture_max_bytes","INTEGER NOT NULL DEFAULT 0"),r("duration_ms","INTEGER NOT NULL DEFAULT 0"),r("input_tokens","INTEGER NOT NULL DEFAULT 0"),r("output_tokens","INTEGER NOT NULL DEFAULT 0"),r("reasoning_tokens","INTEGER NOT NULL DEFAULT 0"),r("cache_read_tokens","INTEGER NOT NULL DEFAULT 0"),r("cache_write_tokens","INTEGER NOT NULL DEFAULT 0"),r("total_tokens","INTEGER NOT NULL DEFAULT 0"),r("cost_usd","REAL"),r("pricing_json","TEXT NOT NULL DEFAULT ''"),r("request_headers","TEXT NOT NULL DEFAULT '{}'"),r("response_headers","TEXT NOT NULL DEFAULT '{}'"),r("request_body_text","TEXT NOT NULL DEFAULT ''"),r("request_body_encoding","TEXT NOT NULL DEFAULT 'utf8'"),r("request_body_content_type","TEXT NOT NULL DEFAULT ''"),r("request_body_size_bytes","INTEGER NOT NULL DEFAULT 0"),r("request_body_truncated","INTEGER NOT NULL DEFAULT 0"),r("request_body_ref","TEXT NOT NULL DEFAULT ''"),r("response_body_text","TEXT NOT NULL DEFAULT ''"),r("response_body_encoding","TEXT NOT NULL DEFAULT 'utf8'"),r("response_body_content_type","TEXT NOT NULL DEFAULT ''"),r("response_body_size_bytes","INTEGER NOT NULL DEFAULT 0"),r("response_body_truncated","INTEGER NOT NULL DEFAULT 0"),r("response_body_ref","TEXT NOT NULL DEFAULT ''"),r("error","TEXT NOT NULL DEFAULT ''"),n&&w$(e),b$(e),S$(e),D$(e),e.exec("CREATE INDEX IF NOT EXISTS request_logs_created_at_idx ON request_logs(created_at)"),e.exec("CREATE INDEX IF NOT EXISTS request_logs_credential_id_idx ON request_logs(credential_id)"),e.exec("CREATE INDEX IF NOT EXISTS request_logs_model_idx ON request_logs(model)"),e.exec("CREATE INDEX IF NOT EXISTS request_logs_provider_idx ON request_logs(provider)"),e.exec("CREATE INDEX IF NOT EXISTS request_logs_request_id_idx ON request_logs(request_id)"),e.exec("CREATE INDEX IF NOT EXISTS request_logs_source_usage_id_idx ON request_logs(source_usage_id)"),e.exec("CREATE INDEX IF NOT EXISTS request_logs_status_idx ON request_logs(ok, status_code)"),e.exec("CREATE INDEX IF NOT EXISTS request_logs_list_idx ON request_logs(source_usage_id, created_at DESC, id DESC)"),e.exec("CREATE INDEX IF NOT EXISTS request_logs_credential_created_at_idx ON request_logs(credential_id, created_at DESC)"),e.exec("CREATE INDEX IF NOT EXISTS request_logs_model_created_at_idx ON request_logs(model, created_at DESC)"),e.exec("CREATE INDEX IF NOT EXISTS request_logs_provider_created_at_idx ON request_logs(provider, created_at DESC)"),e.exec("CREATE INDEX IF NOT EXISTS request_logs_status_created_at_idx ON request_logs(ok, created_at DESC)")}var KT=500,hh="gateway-outcome-v1",Eh="gateway-final-attempt-v1";function b$(e){e.exec(`
|
|
735
|
+
CREATE TABLE IF NOT EXISTS request_log_schema_migrations (
|
|
736
|
+
migration TEXT PRIMARY KEY,
|
|
737
|
+
last_id INTEGER NOT NULL DEFAULT 0,
|
|
738
|
+
completed INTEGER NOT NULL DEFAULT 0,
|
|
739
|
+
updated_at INTEGER NOT NULL
|
|
740
|
+
)
|
|
741
|
+
`)}function XT(e,t){e.prepare(`
|
|
742
|
+
INSERT OR IGNORE INTO request_log_schema_migrations (migration, last_id, completed, updated_at)
|
|
743
|
+
VALUES (?, 0, 0, ?)
|
|
744
|
+
`).run(t,Date.now());let n=e.prepare(`
|
|
745
|
+
SELECT last_id, completed
|
|
746
|
+
FROM request_log_schema_migrations
|
|
747
|
+
WHERE migration = ?
|
|
748
|
+
`).get(t);return{completed:R(n?.completed)===1,lastId:R(n?.last_id)}}function jT(e,t,n){e.prepare(`
|
|
749
|
+
UPDATE request_log_schema_migrations
|
|
750
|
+
SET last_id = ?, completed = 1, updated_at = ?
|
|
751
|
+
WHERE migration = ?
|
|
752
|
+
`).run(n,Date.now(),t)}function S$(e){let t=XT(e,hh);if(t.completed)return;let n=e.prepare(`
|
|
753
|
+
SELECT id
|
|
754
|
+
FROM request_logs
|
|
755
|
+
WHERE id > ?
|
|
756
|
+
ORDER BY id ASC
|
|
757
|
+
LIMIT ?
|
|
758
|
+
`),r=e.prepare(`
|
|
759
|
+
UPDATE request_logs
|
|
760
|
+
SET gateway_status_code = status_code, gateway_ok = ok, gateway_error = error
|
|
761
|
+
WHERE id > ? AND id <= ?
|
|
762
|
+
AND gateway_status_code = 0 AND gateway_ok = 0 AND gateway_error = ''
|
|
763
|
+
AND (status_code <> 0 OR ok <> 0 OR error <> '')
|
|
764
|
+
`),o=e.prepare(`
|
|
765
|
+
UPDATE request_log_schema_migrations
|
|
766
|
+
SET last_id = ?, updated_at = ?
|
|
767
|
+
WHERE migration = ?
|
|
768
|
+
`),s=t.lastId;for(;;){let i=n.all(s,KT);if(i.length===0){jT(e,hh,s);return}let A=R(i.at(-1)?.id);e.exec("BEGIN IMMEDIATE");try{r.run(s,A),o.run(A,Date.now(),hh),e.exec("COMMIT"),s=A}catch(a){throw e.inTransaction&&e.exec("ROLLBACK"),a}}}function D$(e){let t=XT(e,Eh);if(t.completed)return;let n=e.prepare(`
|
|
769
|
+
SELECT id, response_headers
|
|
770
|
+
FROM request_logs
|
|
771
|
+
WHERE id > ?
|
|
772
|
+
ORDER BY id ASC
|
|
773
|
+
LIMIT ?
|
|
774
|
+
`),r=e.prepare("UPDATE request_logs SET gateway_final_attempt = ? WHERE id = ?"),o=e.prepare(`
|
|
775
|
+
UPDATE request_log_schema_migrations
|
|
776
|
+
SET last_id = ?, updated_at = ?
|
|
777
|
+
WHERE migration = ?
|
|
778
|
+
`),s=t.lastId;for(;;){let i=n.all(s,KT);if(i.length===0){jT(e,Eh,s);return}e.exec("BEGIN IMMEDIATE");try{for(let A of i){let a=R(A.id);r.run(ik(as(String(A.response_headers??"{}"))),a),s=a}o.run(s,Date.now(),Eh),e.exec("COMMIT")}catch(A){throw e.inTransaction&&e.exec("ROLLBACK"),A}}}function T$(e){e.exec(`
|
|
779
|
+
CREATE TABLE IF NOT EXISTS request_log_raw_trace_events (
|
|
780
|
+
bundle_id TEXT PRIMARY KEY,
|
|
781
|
+
request_id TEXT NOT NULL,
|
|
782
|
+
processed_at INTEGER NOT NULL
|
|
783
|
+
);
|
|
784
|
+
CREATE INDEX IF NOT EXISTS request_log_raw_trace_events_processed_idx
|
|
785
|
+
ON request_log_raw_trace_events(processed_at);
|
|
786
|
+
`),$T(e)}function $T(e,t=Date.now()){e.prepare("DELETE FROM request_log_raw_trace_events WHERE processed_at < ?").run(t-Bj)}function k$(e){new Set(de(e,"PRAGMA table_info(request_route_traces)").map(n=>String(n.name??"")).filter(Boolean)).has("trace_json")||e.exec("ALTER TABLE request_route_traces ADD COLUMN trace_json TEXT NOT NULL DEFAULT ''")}function N$(e){new Set(de(e,"PRAGMA table_info(request_log_pending_updates)").map(n=>String(n.name??"")).filter(Boolean)).has("update_bytes")||e.exec("ALTER TABLE request_log_pending_updates ADD COLUMN update_bytes INTEGER NOT NULL DEFAULT 0"),e.exec(`
|
|
787
|
+
UPDATE request_log_pending_updates
|
|
788
|
+
SET update_bytes = length(CAST(update_json AS BLOB))
|
|
789
|
+
WHERE update_bytes <= 0
|
|
790
|
+
`),sk(e,Date.now())}function M$(e){let t=de(e,`
|
|
791
|
+
SELECT
|
|
792
|
+
rowid AS id,
|
|
793
|
+
path,
|
|
794
|
+
url,
|
|
795
|
+
request_headers,
|
|
796
|
+
response_headers,
|
|
797
|
+
request_body_text,
|
|
798
|
+
request_body_encoding,
|
|
799
|
+
response_body_content_type
|
|
800
|
+
FROM request_logs
|
|
801
|
+
WHERE source_usage_id IS NULL
|
|
802
|
+
AND is_stream = 0
|
|
803
|
+
AND (
|
|
804
|
+
path LIKE '%stream%' OR
|
|
805
|
+
url LIKE '%stream%' OR
|
|
806
|
+
request_body_text LIKE '%stream%' OR
|
|
807
|
+
response_headers LIKE '%event-stream%' OR
|
|
808
|
+
response_body_content_type LIKE '%event-stream%'
|
|
809
|
+
)
|
|
810
|
+
`);if(t.length===0)return;let n=e.prepare("UPDATE request_logs SET is_stream = 1 WHERE rowid = ?");for(let r of t){let o=String(r.request_body_encoding??"utf8")==="utf8"?String(r.request_body_text??""):void 0;td({path:String(r.path??""),requestBodyText:o,requestHeaders:as(r.request_headers),responseBodyContentType:String(r.response_body_content_type??""),responseHeaders:as(r.response_headers),url:String(r.url??"")})&&n.run(R(r.id))}}function td(e){return!!(e.responseWasStream||dT(e.path)||dT(e.url)||Ch(e.responseBodyContentType)||Ch(kn(e.responseHeaders??{},"content-type"))||Ch(kn(e.requestHeaders??{},"accept"))||x$(e.requestBodyText))}function dT(e){return(e?.toLowerCase()??"").includes(":streamgeneratecontent")}function Ch(e){let t=e?.toLowerCase()??"";return t.includes("text/event-stream")||t.includes("application/x-ndjson")}function x$(e){let t=e?.trim();if(!t)return!1;let n=Me(t);return Lh(n)}function Lh(e,t=0){return t>3?!1:Array.isArray(e)?e.some(n=>Lh(n,t+1)):S(e)?e.stream===!0||e.stream==="true"?!0:Object.values(e).some(n=>Lh(n,t+1)):!1}function U$(e){let t=["source_usage_id IS NULL","path NOT LIKE ?"],n=["%/count_tokens%"],r=C4(e.status),o=W(e.credential),s=W(e.model),i=W(e.provider),A=W(e.query);if(r==="success"?t.push("ok = 1"):r==="error"&&t.push("ok = 0"),s&&(t.push("model = ?"),n.push(s)),i&&(t.push("provider = ?"),n.push(i)),o&&(t.push("credential_id = ?"),n.push(o)),A){let a=`%${A}%`;t.push(`(
|
|
811
|
+
request_id LIKE ? OR
|
|
812
|
+
client LIKE ? OR
|
|
813
|
+
method LIKE ? OR
|
|
814
|
+
path LIKE ? OR
|
|
815
|
+
url LIKE ? OR
|
|
816
|
+
provider LIKE ? OR
|
|
817
|
+
credential_id LIKE ? OR
|
|
818
|
+
credential_chain LIKE ? OR
|
|
819
|
+
model LIKE ? OR
|
|
820
|
+
request_body_text LIKE ? OR
|
|
821
|
+
response_body_text LIKE ? OR
|
|
822
|
+
error LIKE ?
|
|
823
|
+
)`),n.push(a,a,a,a,a,a,a,a,a,a,a,a)}return{params:n,where:t.length>0?`WHERE ${t.join(" AND ")}`:""}}function L$(e){e.pragma("foreign_keys = ON"),e.pragma("journal_mode = WAL"),e.pragma("synchronous = NORMAL"),e.pragma("busy_timeout = 5000")}function F$(e,t,n,r){e.run(t,n,r.version,r.complete?1:0,JSON.stringify(r.ingressSnapshot??{}),JSON.stringify(r.finalSnapshot??{}),r.hopCount,r.attemptCount,r.truncated?1:0,JSON.stringify(r))}function _$(e){return e.prepare(`
|
|
824
|
+
INSERT INTO request_route_traces (
|
|
825
|
+
request_log_id,
|
|
826
|
+
request_id,
|
|
827
|
+
version,
|
|
828
|
+
complete,
|
|
829
|
+
ingress_snapshot_json,
|
|
830
|
+
final_snapshot_json,
|
|
831
|
+
hop_count,
|
|
832
|
+
attempt_count,
|
|
833
|
+
truncated,
|
|
834
|
+
trace_json
|
|
835
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
836
|
+
`)}function P$(e,t){let n=de(e,`
|
|
837
|
+
SELECT
|
|
838
|
+
version,
|
|
839
|
+
complete,
|
|
840
|
+
ingress_snapshot_json,
|
|
841
|
+
final_snapshot_json,
|
|
842
|
+
hop_count,
|
|
843
|
+
attempt_count,
|
|
844
|
+
truncated,
|
|
845
|
+
trace_json
|
|
846
|
+
FROM request_route_traces
|
|
847
|
+
WHERE request_log_id = ?
|
|
848
|
+
LIMIT 1
|
|
849
|
+
`,[t])[0];if(!n)return;let r=v$(n.trace_json);if(r)return r;let o=de(e,`
|
|
850
|
+
SELECT
|
|
851
|
+
seq,
|
|
852
|
+
phase,
|
|
853
|
+
name,
|
|
854
|
+
kind,
|
|
855
|
+
attempt_no,
|
|
856
|
+
started_offset_ms,
|
|
857
|
+
duration_ms,
|
|
858
|
+
status,
|
|
859
|
+
decision_json,
|
|
860
|
+
target_json,
|
|
861
|
+
changes_json,
|
|
862
|
+
outcome_json,
|
|
863
|
+
truncated
|
|
864
|
+
FROM request_route_hops
|
|
865
|
+
WHERE request_log_id = ?
|
|
866
|
+
ORDER BY seq ASC
|
|
867
|
+
`,[t]).map(O$),s=uT(n.ingress_snapshot_json),i=uT(n.final_snapshot_json);return{attemptCount:R(n.attempt_count),complete:R(n.complete)===1,...i?{finalSnapshot:i}:{},hopCount:Math.max(R(n.hop_count),o.length),hops:o,...s?{ingressSnapshot:s}:{},truncated:R(n.truncated)===1,version:R(n.version)===2?2:1}}function v$(e){if(typeof e!="string"||!e.trim())return;let t=Me(e);if(!(!S(t)||!Array.isArray(t.hops)))return t}function O$(e){let t=Me(String(e.decision_json??"")),n=Me(String(e.target_json??"")),r=Me(String(e.changes_json??"")),o=Me(String(e.outcome_json??"")),s=R(e.attempt_no);return{...s>0?{attempt:s}:{},changes:Array.isArray(r)?r:[],...S(t)&&Object.keys(t).length>0?{decision:t}:{},durationMs:R(e.duration_ms),kind:q$(e.kind),name:String(e.name??"route-hop"),...S(o)&&Object.keys(o).length>0?{outcome:o}:{},phase:H$(e.phase),seq:R(e.seq),startedOffsetMs:R(e.started_offset_ms),status:G$(e.status),...S(n)&&Object.keys(n).length>0?{target:n}:{},...R(e.truncated)===1?{truncated:!0}:{}}}function uT(e){if(typeof e!="string"||!e.trim())return;let t=Me(e);if(!(!S(t)||typeof t.method!="string"||typeof t.url!="string"))return t}function q$(e){let t=String(e??"");return t==="attempt"||t==="decision"||t==="outcome"||t==="snapshot"?t:"mutation"}function G$(e){let t=String(e??"");return t==="error"||t==="noop"?t:"ok"}function H$(e){let t=String(e??"");return t==="ingress"||t==="compatibility"||t==="routing"||t==="capability"||t==="enrichment"||t==="planning"||t==="attempt"||t==="core"||t==="outcome"?t:"routing"}function de(e,t,n=[]){return e.prepare(t).all(...n)}function Y$(e,t,n=[]){return e.prepare(t).iterate(...n)}function nd(e,t){let n=e[0];return R(n?.[t])}function lT(e,t){let n=de(e,`
|
|
868
|
+
SELECT
|
|
869
|
+
rowid AS id,
|
|
870
|
+
created_at,
|
|
871
|
+
completed_at,
|
|
872
|
+
request_id,
|
|
873
|
+
client,
|
|
874
|
+
method,
|
|
875
|
+
path,
|
|
876
|
+
url,
|
|
877
|
+
provider,
|
|
878
|
+
credential_id,
|
|
879
|
+
credential_chain,
|
|
880
|
+
credential_saturated,
|
|
881
|
+
model,
|
|
882
|
+
requested_model,
|
|
883
|
+
resolved_model,
|
|
884
|
+
response_model,
|
|
885
|
+
route_trace_version,
|
|
886
|
+
route_hop_count,
|
|
887
|
+
route_attempt_count,
|
|
888
|
+
route_trace_truncated,
|
|
889
|
+
is_stream,
|
|
890
|
+
status_code,
|
|
891
|
+
ok,
|
|
892
|
+
duration_ms,
|
|
893
|
+
input_tokens,
|
|
894
|
+
output_tokens,
|
|
895
|
+
reasoning_tokens,
|
|
896
|
+
cache_read_tokens,
|
|
897
|
+
cache_write_tokens,
|
|
898
|
+
total_tokens,
|
|
899
|
+
cost_usd,
|
|
900
|
+
request_headers,
|
|
901
|
+
response_headers,
|
|
902
|
+
request_body_text,
|
|
903
|
+
request_body_encoding,
|
|
904
|
+
request_body_content_type,
|
|
905
|
+
request_body_size_bytes,
|
|
906
|
+
request_body_truncated,
|
|
907
|
+
request_body_ref,
|
|
908
|
+
response_body_text,
|
|
909
|
+
response_body_encoding,
|
|
910
|
+
response_body_content_type,
|
|
911
|
+
response_body_size_bytes,
|
|
912
|
+
response_body_truncated,
|
|
913
|
+
response_body_ref,
|
|
914
|
+
error
|
|
915
|
+
FROM request_logs
|
|
916
|
+
WHERE rowid = ?
|
|
917
|
+
LIMIT 1
|
|
918
|
+
`,[t])[0];return n?Fh(n):void 0}function Fh(e){let t=I4(e.cost_usd),n=gT(e,"request")??ek(),r=gT(e,"response"),o=as(e.request_headers),s=as(e.response_headers),i=R(e.is_stream)===1||td({path:String(e.path??""),requestBodyText:n.encoding==="utf8"?n.text:void 0,requestHeaders:o,responseBodyContentType:r?.contentType,responseHeaders:s,url:String(e.url??"")});return{cacheReadTokens:R(e.cache_read_tokens),cacheWriteTokens:R(e.cache_write_tokens),client:Ne(String(e.client??""),"unknown"),completedAt:String(e.completed_at??""),costUsd:t,createdAt:String(e.created_at??""),credentialChain:xh(String(e.credential_chain??"")),credentialId:Ne(String(e.credential_id??""),""),credentialSaturated:R(e.credential_saturated)===1,durationMs:R(e.duration_ms),error:String(e.error??""),id:R(e.id),inputTokens:R(e.input_tokens),isStream:i,method:String(e.method??""),model:Ne(String(e.model??""),"unknown"),ok:R(e.ok)===1,outputTokens:R(e.output_tokens),path:Ne(String(e.path??""),"/"),provider:Ne(String(e.provider??""),"unknown"),reasoningTokens:R(e.reasoning_tokens),requestedModel:Ne(String(e.requested_model??""),""),requestBody:n,requestHeaders:o,requestId:String(e.request_id??""),routeAttemptCount:R(e.route_attempt_count),routeHopCount:R(e.route_hop_count),routeTraceTruncated:R(e.route_trace_truncated)===1,retryAttempts:m$(s,R(e.status_code)),resolvedModel:Ne(String(e.resolved_model??""),""),responseBody:r,responseHeaders:s,responseModel:Ne(String(e.response_model??""),""),statusCode:R(e.status_code),totalTokens:R(e.total_tokens),url:String(e.url??"")}}function gT(e,t){let n=String(e[`${t}_body_text`]??""),r=R(e[`${t}_body_size_bytes`]);if(!n&&r===0&&t==="response")return;let o=String(e[`${t}_body_encoding`]??"utf8")==="base64"?"base64":"utf8",s=W(String(e[`${t}_body_content_type`]??"")),i=W(String(e[`${t}_body_ref`]??""));return{...i?{bodyRef:i,preview:!0}:{},contentType:s,encoding:o,sizeBytes:r,text:n,truncated:R(e[`${t}_body_truncated`])===1}}function ZT(e,t){if(!t?.bodyRef||t.encoding!=="utf8")return t;let n=Ji(e,t.bodyRef);if(!n||!(0,j.existsSync)(n))return t;let r=(0,j.readFileSync)(n);return{...t,preview:!1,sizeBytes:Math.max(t.sizeBytes,r.byteLength),text:new dn.StringDecoder("utf8").write(r)}}function fT(e){if(e)return{...e.bodyRef?{bodyRef:e.bodyRef,preview:!0}:{},contentType:e.contentType,encoding:e.encoding,sizeBytes:e.sizeBytes,text:"",truncated:e.truncated}}function ek(){return{encoding:"utf8",sizeBytes:0,text:"",truncated:!1}}function as(e){if(typeof e!="string"||!e.trim())return{};try{let t=JSON.parse(e);if(!S(t))return{};let n={};for(let[r,o]of Object.entries(t))Array.isArray(o)?n[r]=o.map(String):typeof o=="string"&&(n[r]=o);return n}catch{return{}}}function Ih(e,t){return de(e,`
|
|
919
|
+
SELECT DISTINCT ${t} AS value
|
|
920
|
+
FROM request_logs
|
|
921
|
+
WHERE source_usage_id IS NULL AND path NOT LIKE ? AND ${t} <> '' AND ${t} <> 'unknown'
|
|
922
|
+
ORDER BY ${t} COLLATE NOCASE ASC
|
|
923
|
+
LIMIT 100
|
|
924
|
+
`,["%/count_tokens%"]).map(n=>String(n.value??"")).filter(Boolean)}function W$(e,t,n){let r=ir(e),o=r.buffer.byteLength>Qh,s=o?r.buffer.subarray(0,Qh):r.buffer,i=z$(t),A=i&&n?rd(n.bodyDir,e,n.bodyRef,r.buffer):void 0,a=i?A?.previewText??s.toString("utf8"):s.toString("base64"),c=!A&&(r.compacted||o);return{...A?{bodyRef:A.bodyRef,preview:!0}:{},contentType:t,encoding:i?"utf8":"base64",sizeBytes:e.byteLength,text:a,truncated:c}}function Bh(e,t,n=!1,r,o=Qh,s){let i=Buffer.from(e),A=Math.max(i.byteLength,R(r)),a=ir(i),c=a.buffer.byteLength>o,d=c?a.buffer.subarray(0,o):a.buffer,l=s?rd(s.bodyDir,i,s.bodyRef,a.buffer):void 0,u=n||!l&&(a.compacted||i.byteLength<A||c),g=l?.previewText??(c?new dn.StringDecoder("utf8").write(d):d.toString("utf8"));return{...l?{bodyRef:l.bodyRef,preview:!0}:{},contentType:t,encoding:"utf8",sizeBytes:A,text:g,truncated:u}}function pT(e,t,n,r){e.push(`${n}_body_text = ?`),t.push(r.text),e.push(`${n}_body_encoding = ?`),t.push(r.encoding),e.push(`${n}_body_content_type = ?`),t.push(r.contentType??""),e.push(`${n}_body_size_bytes = ?`),t.push(r.sizeBytes),e.push(`${n}_body_truncated = ?`),t.push(r.truncated?1:0),e.push(`${n}_body_ref = ?`),t.push(r.bodyRef??"")}function hT(e,t){if(!t||t.sizeBytes<=0||!(0,j.existsSync)(t.filePath))return;let n=rk(),r=Ji(e,n,!0);if(!r)return;(0,j.copyFileSync)(t.filePath,r);let o=(0,j.statSync)(r).size,s=Math.max(t.sizeBytes,o);return{bodyRef:n,contentType:t.contentType,previewText:tk(r),sizeBytes:s,truncated:!!t.truncated||o<s}}function rd(e,t,n,r=t){if(!(!!n||t.byteLength>ro))return;let s=ok(n)??rk(),i=Ji(e,s,!0);if(i)return n&&(0,j.existsSync)(i)?{bodyRef:s,previewText:r.byteLength>0?ET(r):tk(i)}:((!n||!(0,j.existsSync)(i))&&(0,j.writeFileSync)(i,t),{bodyRef:s,previewText:ET(t)})}function V$({bodyRef:e,contentType:t,encoding:n,filePath:r,length:o,offset:s,sizeBytes:i,truncated:A}){let a=(0,j.openSync)(r,"r");try{let c=(0,j.fstatSync)(a).size,d=Math.max(0,Math.min(s,c)),l=Math.max(0,Math.min(n==="utf8"?Math.max(o,4):o,c-d)),u=Buffer.allocUnsafe(l),g=0;for(;g<l;){let y=(0,j.readSync)(a,u,g,l-g,d+g);if(y===0)break;g+=y}let h=g===u.byteLength?u:u.subarray(0,g),E=n==="utf8"&&d+h.byteLength<c?J$(h):h.byteLength,B=E>0?h.subarray(0,E):h,C=d+B.byteLength;return{bodyRef:e,contentType:t,encoding:n,eof:C>=c,length:B.byteLength,...C<c?{nextOffset:C}:{},offset:d,sizeBytes:Math.max(i,c),text:n==="base64"?B.toString("base64"):new dn.StringDecoder("utf8").write(B),truncated:A}}finally{(0,j.closeSync)(a)}}function J$(e){if(e.byteLength===0)return 0;let t=e.byteLength-1;for(;t>=0&&(e[t]&192)===128;)t-=1;if(t<0)return 0;let n=e[t];if((n&128)===0)return e.byteLength;let r=e.byteLength-t-1,o=(n&224)===192?1:(n&240)===224?2:(n&248)===240?3:0;return o===0?t:r>=o?e.byteLength:t}function tk(e){let t=(0,j.openSync)(e,"r");try{let n=(0,j.fstatSync)(t).size;if(n<=ro){let c=Buffer.allocUnsafe(n);return(0,j.readSync)(t,c,0,n,0),new dn.StringDecoder("utf8").write(c)}let r=Math.floor(ro*.65),o=ro-r,s=Buffer.allocUnsafe(r),i=Buffer.allocUnsafe(o),A=(0,j.readSync)(t,s,0,r,0),a=(0,j.readSync)(t,i,0,o,Math.max(0,n-o));return nk(s.subarray(0,A),i.subarray(0,a),Math.max(0,n-A-a))}finally{(0,j.closeSync)(t)}}function ET(e){if(e.byteLength<=ro)return new dn.StringDecoder("utf8").write(e);let t=Math.floor(ro*.65),n=ro-t;return nk(e.subarray(0,t),e.subarray(Math.max(0,e.byteLength-n)),Math.max(0,e.byteLength-t-n))}function nk(e,t,n){return[new dn.StringDecoder("utf8").write(e),"",`... ${n} bytes omitted from preview ...`,"",new dn.StringDecoder("utf8").write(t)].join(`
|
|
925
|
+
`)}function rk(){return(0,bT.randomUUID)()}function Ji(e,t,n=!1){let r=ok(t);if(!r)return;let o=r.slice(0,2),s=(0,oo.join)(e,o);return n&&(0,j.mkdirSync)(s,{recursive:!0}),(0,oo.join)(s,r)}function ok(e){let t=e?.trim();if(!(!t||!/^[A-Za-z0-9._-]+$/.test(t)))return t}function Yi(e,t){for(let n of t){let r=Ji(e,n);r&&(0,j.rmSync)(r,{force:!0})}}function z$(e){if(!e)return!0;let t=e.toLowerCase();return t.includes("json")||t.includes("text")||t.includes("xml")||t.includes("x-www-form-urlencoded")||t.includes("event-stream")}function K$(e,t){return nd(de(e,"SELECT COUNT(*) AS total FROM request_logs WHERE request_id = ?",[t]),"total")>0}function X$(e,t){return nd(de(e,"SELECT COUNT(*) AS total FROM request_log_raw_trace_events WHERE bundle_id = ?",[t]),"total")>0}function CT(e,t,n){e.prepare(`
|
|
926
|
+
INSERT OR IGNORE INTO request_log_raw_trace_events (bundle_id, request_id, processed_at)
|
|
927
|
+
VALUES (?, ?, ?)
|
|
928
|
+
`).run(t,n,Date.now())}function j$(e,t){let n=de(e,`
|
|
929
|
+
SELECT
|
|
930
|
+
error,
|
|
931
|
+
gateway_error,
|
|
932
|
+
gateway_ok,
|
|
933
|
+
gateway_status_code,
|
|
934
|
+
length(request_body_text) AS request_body_chars,
|
|
935
|
+
length(response_body_text) AS response_body_chars,
|
|
936
|
+
request_body_ref,
|
|
937
|
+
response_body_ref,
|
|
938
|
+
ok,
|
|
939
|
+
status_code
|
|
940
|
+
FROM request_logs
|
|
941
|
+
WHERE request_id = ?
|
|
942
|
+
ORDER BY id DESC
|
|
943
|
+
LIMIT 1
|
|
944
|
+
`,[t])[0];return{error:String(n?.error??""),gatewayError:String(n?.gateway_error??""),gatewayOk:R(n?.gateway_ok)===1,gatewayStatusCode:R(n?.gateway_status_code),hasRequestBody:R(n?.request_body_chars)>0||!!W(String(n?.request_body_ref??"")),hasResponseBody:R(n?.response_body_chars)>0||!!W(String(n?.response_body_ref??"")),ok:R(n?.ok)===1,statusCode:R(n?.status_code)}}function $$(e,t){let n=e.bodyCapturePolicy==="none"||e.bodyCapturePolicy==="errors"&&t;return{bodiesSuppressed:n,input:n?Vc(e):e}}function Z$(e){let t=e4(e,Cj),n=JSON.stringify(t),r=Buffer.byteLength(n);return r>XD&&n4(t)&&(t=t4(t),n=JSON.stringify(t),r=Buffer.byteLength(n)),r<=XD?{bytes:r,json:n}:void 0}function e4(e,t){let n=Buffer.byteLength(e.requestBodyText??""),r=Buffer.byteLength(e.responseBodyText??""),o=e.requestBodyText===void 0?void 0:IT(e.requestBodyText,t),s=e.responseBodyText===void 0?void 0:IT(e.responseBodyText,t);return{...e,...o===void 0?{}:{requestBodySizeBytes:Math.max(n,R(e.requestBodySizeBytes)),requestBodyText:o,requestBodyTruncated:!!e.requestBodyTruncated||!e.requestBodyRef&&Buffer.byteLength(o)<n},...s===void 0?{}:{responseBodySizeBytes:Math.max(r,R(e.responseBodySizeBytes)),responseBodyText:s,responseBodyTruncated:!!e.responseBodyTruncated||!e.responseBodyRef&&Buffer.byteLength(s)<r}}}function IT(e,t){if(Buffer.byteLength(e)<=t)return e;let n=Buffer.allocUnsafe(t),r=n.write(e,0,t,"utf8");return new dn.StringDecoder("utf8").write(n.subarray(0,r))}function t4(e){let{requestBodyText:t,responseBodyText:n,...r}=e;return{...r,...t===void 0?{}:{requestBodySizeBytes:Math.max(Buffer.byteLength(t),R(e.requestBodySizeBytes)),requestBodyTruncated:!!e.requestBodyTruncated||!e.requestBodyRef},...n===void 0?{}:{responseBodySizeBytes:Math.max(Buffer.byteLength(n),R(e.responseBodySizeBytes)),responseBodyTruncated:!!e.responseBodyTruncated||!e.responseBodyRef}}}function n4(e){return e.requestBodyText!==void 0||e.responseBodyText!==void 0}function sk(e,t,n){let r=de(e,"SELECT update_json FROM request_log_pending_updates WHERE received_at < ?",[t-jD]);n&&Yi(n,BT(r)),e.prepare("DELETE FROM request_log_pending_updates WHERE received_at < ?").run(t-jD);let o=de(e,`
|
|
945
|
+
SELECT request_id, update_bytes, update_json
|
|
946
|
+
FROM request_log_pending_updates
|
|
947
|
+
ORDER BY received_at DESC, request_id DESC
|
|
948
|
+
`),s=e.prepare("DELETE FROM request_log_pending_updates WHERE request_id = ?"),i=0,A=0;for(let a of o){let c=R(a.update_bytes);if(A>=Ej||i+c>Ij){n&&Yi(n,BT([a])),s.run(String(a.request_id??""));continue}A+=1,i+=c}}function BT(e){return e.flatMap(t=>{let n=Me(String(t.update_json??""));return S(n)?_h(n):[]})}function _h(e){return[W(String(e.requestBodyRef??"")),W(String(e.responseBodyRef??""))].filter(t=>!!t)}function r4(e,t){let n=de(e,"SELECT request_headers FROM request_logs WHERE request_id = ? LIMIT 1",[t])[0];return n?as(n.request_headers):{}}function o4(e,t){let n=de(e,"SELECT gateway_final_attempt FROM request_logs WHERE request_id = ? ORDER BY id DESC LIMIT 1",[t])[0],r=Number(n?.gateway_final_attempt);return Number.isFinite(r)&&r>=1?Math.floor(r):1}function ik(e,t){let n=Number(kn(e,"x-ccr-fallback-attempts"));return Number.isFinite(n)&&n>=1?Math.floor(n):Number.isFinite(t)&&Number(t)>=1?Math.floor(Number(t)):1}function s4(e,t){let n=de(e,"SELECT model, path, pricing_json, provider FROM request_logs WHERE request_id = ? LIMIT 1",[t])[0];return{model:Ne(String(n?.model??""),"unknown"),path:Ne(String(n?.path??""),""),pricing:Ak(n?.pricing_json),provider:Ne(String(n?.provider??""),"unknown")}}function Ak(e){let t=typeof e=="string"?Me(e):e;if(!S(t))return;let n={},r=["cacheReadUsdPerMillionTokens","cacheWriteUsdPerMillionTokens","cacheWrite1hUsdPerMillionTokens","cacheWrite5mUsdPerMillionTokens","inputUsdPerMillionTokens","outputUsdPerMillionTokens"];for(let o of r){let s=t[o];typeof s=="number"&&Number.isFinite(s)&&s>=0&&(n[o]=s)}return Object.keys(n).length>0?n:void 0}function i4(e,t){return{...t,...e}}function A4(e){if(e)try{return new URL(e).pathname||void 0}catch{return}}function Kc(e){let t={};for(let[n,r]of Object.entries(e)){if(r===void 0)continue;let o=n.toLowerCase();if(vi(o)){t[o]="[redacted]";continue}t[o]=Array.isArray(r)?r.map(String):String(r)}return t}function Ph(e){if(!e)return{};if(e instanceof Headers){let t={};return e.forEach((n,r)=>{t[r]=n}),t}return e}function kn(e,t){let n=e[t.toLowerCase()];return Array.isArray(n)?n[0]:n}function a4(e,t){for(let n of t){if(n.kind==="raw-trace-update"){if(yT(n.input))return!0;continue}if(c4(n.input)&&!d4(n.input.pricing))return!0;let r=n.input.requestId?.trim();if(!r)continue;let o=de(e,"SELECT update_json FROM request_log_pending_updates WHERE request_id = ? LIMIT 1",[r])[0],s=Me(String(o?.update_json??""));if(S(s)&&yT(s))return!0}return!1}function c4(e){let t=sd(e.responseBodyText??"");return ak(Vi(od(e.responseHeaders),t)??{})}function d4(e){return typeof e?.inputUsdPerMillionTokens=="number"&&Number.isFinite(e.inputUsdPerMillionTokens)&&e.inputUsdPerMillionTokens>=0&&typeof e.outputUsdPerMillionTokens=="number"&&Number.isFinite(e.outputUsdPerMillionTokens)&&e.outputUsdPerMillionTokens>=0}function yT(e){let t=sd(e.responseBodyText??"");return ak(Vi(od(e.responseHeaders),t)??{})}function ak(e){return R(e.inputTokens)+R(e.outputTokens)+R(e.cacheReadTokens)+R(e.cacheWrite1hTokens)+R(e.cacheWrite5mTokens)+R(e.cacheWriteTokens)>0}function od(e){let t=Dn(e,"x-gateway-billing-input-tokens"),n=Dn(e,"x-gateway-billing-output-tokens"),r=Dn(e,"x-gateway-billing-reasoning-tokens")??Dn(e,"x-gateway-billing-thinking-tokens"),o=Dn(e,"x-gateway-billing-cache-read-tokens"),s=Dn(e,"x-gateway-billing-cache-write-1h-tokens"),i=Dn(e,"x-gateway-billing-cache-write-5m-tokens"),A=Dn(e,"x-gateway-billing-cache-write-tokens")??uk(i,s),a=Dn(e,"x-gateway-billing-total-tokens");if(![t,n,r,o,s,i,A,a].every(c=>c===void 0))return{cacheReadTokens:o,cacheWrite1hTokens:s,cacheWrite5mTokens:i,cacheWriteTokens:A,inputTokens:t,outputTokens:n,reasoningTokens:r,totalTokens:a}}function sd(e){let t=[],n=e.trim();if(!n)return;let r=Me(n);if(r!==void 0){let s=RT(r);return s&&vh(s)?s:void 0}for(let s of ck(n)){let i=RT(s);i&&vh(i)&&t.push(i)}let o;for(let s of t)o=Vi(s,o);return o}function ck(e){let t=[];for(let n of e.split(/\r?\n/)){let r=n.trim(),o=r.startsWith("data:")?r.slice(5).trim():r.startsWith("{")?r:"";if(!o||o==="[DONE]")continue;let s=Me(o);s!==void 0&&t.push(s)}return t}function mT(e,t){if(!e||!dk(t)&&!f4(e))return;let n=u4(t,!0);return n.append(e),n.finish()}function u4(e,t=!1){let n=t||dk(e),r=new dn.StringDecoder("utf8"),o="",s=[],i,A=!1,a="",c=!1,d=()=>i,l=()=>{let h=g4(o,s);c||=!!h||l4(o,s),i??=h,o="",s=[]},u=h=>{if(!n||i)return;if(h===""){l();return}if(h.startsWith(":"))return;let E=h.indexOf(":"),B=E===-1?h:h.slice(0,E),C=E===-1?"":h.slice(E+1),y=C.startsWith(" ")?C.slice(1):C;B==="event"?o=y.trim():B==="data"&&s.push(y)},g=h=>{for(a+=h;;){let E=a.indexOf(`
|
|
949
|
+
`);if(E===-1)break;let B=a.slice(0,E);a=a.slice(E+1),u(B.endsWith("\r")?B.slice(0,-1):B)}};return{append(h){return!n||i||A||g(Buffer.isBuffer(h)?r.write(h):h),i},finish(){return!n||A||(A=!0,g(r.end()),a&&(u(a.endsWith("\r")?a.slice(0,-1):a),a=""),(o||s.length>0)&&l()),i},hasTerminalEvent(){return c},read:d}}function l4(e,t){let n=e.trim().toLowerCase(),r=t.join(`
|
|
950
|
+
`).trim();if(r==="[DONE]")return!0;let o=r?Me(r):void 0,s=S(o)?w(o.type)?.toLowerCase():void 0,i=S(o)&&S(o.response)?o.response:void 0,A=w(i?.status)?.toLowerCase();return $D.has(n)||!!(s&&$D.has(s))||!!(A&&yj.has(A))}function g4(e,t){let n=e.trim().toLowerCase(),r=t.join(`
|
|
951
|
+
`).trim(),o=r&&r!=="[DONE]"?Me(r):void 0;if(n==="error")return Gi(o,r||"SSE error event");if(n==="response.failed"||n==="response.error")return Gi(o,n);if(S(o)){let s=w(o.type)?.toLowerCase();if(s==="error"||s==="response.failed"||s==="response.error")return Gi(o,s);if(o.error!==void 0&&o.error!==null)return Gi(o,n||"SSE error");let i=S(o.response)?o.response:void 0,A=w(i?.status)?.toLowerCase();if((A==="failed"||A==="error")&&i?.error!==void 0&&i.error!==null)return Gi(i,A)}}function Gi(e,t){if(S(e)){let n=S(e.response)?e.response:void 0,r=e.error??n?.error,o=QT(r)??QT(e),s=wT(r)??wT(e),i=S(r)?w(r.code):void 0,A=p4([s,i]).join(" ");if(o&&A&&o!==A)return`${A}: ${o}`;if(o)return o;if(A)return A}return typeof e=="string"&&e.trim()?e.trim():t}function QT(e){if(typeof e=="string")return W(e);if(S(e))return w(e.message)??w(e.detail)??w(e.reason)??w(e.error_description)??w(e.error)}function wT(e){if(S(e))return w(e.type)??w(e.code)??w(e.status)}function dk(e){return!!e?.toLowerCase().includes("event-stream")}function f4(e){let t=e.trimStart();return t.startsWith("event:")||t.startsWith("data:")}function p4(e){let t=new Set,n=[];for(let r of e){let o=r?.trim();!o||t.has(o)||(t.add(o),n.push(o))}return n}function RT(e){if(!S(e))return;let t=S(e.response)?e.response:e,n=S(e.message)?e.message:void 0,r=S(t.usage)?t.usage:S(e.usage)?e.usage:S(n?.usage)?n.usage:void 0,o=S(t.usageMetadata)?t.usageMetadata:S(e.usageMetadata)?e.usageMetadata:void 0;if(o)return{cacheReadTokens:ie(o.cachedContentTokenCount),inputIncludesCacheTokens:!0,inputTokens:ie(o.promptTokenCount),model:w(t.modelVersion)??w(e.modelVersion),outputTokens:ie(o.candidatesTokenCount),totalTokens:ie(o.totalTokenCount)};if(!r)return;let s=S(r.input_tokens_details)?r.input_tokens_details:S(r.prompt_tokens_details)?r.prompt_tokens_details:void 0,i=S(r.output_tokens_details)?r.output_tokens_details:S(r.completion_tokens_details)?r.completion_tokens_details:void 0,A=r.cache_read_input_tokens!==void 0||r.cache_creation_input_tokens!==void 0,a=s?.cached_tokens!==void 0||s?.cache_creation_tokens!==void 0||r.cached_tokens!==void 0||r.prompt_tokens!==void 0,c=S(r.cache_creation)?r.cache_creation:void 0,d=ie(c?.ephemeral_5m_input_tokens),l=ie(c?.ephemeral_1h_input_tokens);return{cacheReadTokens:ie(r.cache_read_tokens)??ie(r.cache_read_input_tokens)??ie(r.cached_tokens)??ie(s?.cached_tokens),cacheWrite1hTokens:l,cacheWrite5mTokens:d,cacheWriteTokens:ie(r.cache_write_tokens)??ie(r.cache_creation_tokens)??ie(r.cache_creation_input_tokens)??ie(s?.cache_creation_tokens)??uk(d,l),inputIncludesCacheTokens:A?!1:a?!0:void 0,inputTokens:ie(r.input_tokens)??ie(r.prompt_tokens),model:w(t.model)??w(e.model)??w(n?.model)??w(t.modelVersion)??w(e.modelVersion),outputTokens:ie(r.output_tokens)??ie(r.completion_tokens),reasoningTokens:ie(i?.reasoning_tokens)??ie(i?.thinking_tokens)??ie(r.reasoning_tokens)??ie(r.thinking_tokens),totalTokens:ie(r.total_tokens)}}function vh(e){return[e.cacheReadTokens,e.cacheWrite1hTokens,e.cacheWrite5mTokens,e.cacheWriteTokens,e.inputTokens,e.outputTokens,e.reasoningTokens,e.totalTokens].some(t=>t!==void 0)}function Vi(e,t){return e?t?{...t,...Object.fromEntries(Object.entries(e).filter(([,n])=>n!==void 0))}:e:t}function uk(...e){let t=e.filter(n=>n!==void 0);return t.length>0?t.reduce((n,r)=>n+r,0):void 0}function Oh(e,t){if(e)return e instanceof Headers?W(e.get(t)??void 0):W(kn(Ph(e),t))}function Dn(e,t){return ie(Oh(e,t))}function Me(e){try{return JSON.parse(e)}catch{return}}function lk(e){let t=fA(e??"");return t?gk(t):void 0}function yh(e){return lk(e)?.model??W(e)}function h4(e){return W(fA(e??"")??e)}function E4(e){return gk(fA(e??"")??e)}function gk(e){let t=e?.trim();if(!t)return{};let n=t.indexOf("/");return n<=0||n>=t.length-1?{model:t}:{model:t.slice(n+1).trim(),provider:t.slice(0,n).trim()}}function C4(e){return e==="success"||e==="error"?e:"all"}function W(e){return e?.trim()||void 0}function Ne(e,t){return e?.trim()||t}function R(e){return ie(e)??0}function ie(e){let t=typeof e=="number"?e:typeof e=="string"?Number(e):Number.NaN;return Number.isFinite(t)?Math.max(0,Math.round(t)):void 0}function I4(e){let t=typeof e=="number"?e:typeof e=="string"?Number(e):Number.NaN;return Number.isFinite(t)?Math.max(0,t):void 0}function w(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function S(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function mh(e,t){return!t&&e>=200&&e<400}function Xc(e,t,n,r){let o=Number(e);return Number.isFinite(o)?Math.max(t,Math.min(n,Math.trunc(o))):r}function B4(e,t){return t<=0?0:Math.max(0,Math.min(1,e/t))}function Tn(e,t){return e.reduce((n,r)=>n+t(r),0)}var id=Ot.workerData,vt=new Wi(id.dbFile),Ad=Promise.resolve(),zi=!1,Yh,fk=-1,Ki=!1;vt.initialize().then(()=>{Ot.parentPort?.postMessage({type:"ready"}),Ot.parentPort?.on("message",e=>{Ad=Ad.then(()=>y4(e)).catch(t=>{let n=Wh(t);e.type==="batch"?Ot.parentPort?.postMessage({batchId:e.batchId,error:n,type:"batch-error"}):Ot.parentPort?.postMessage({error:n,requestId:e.requestId,type:"response"})})})}).catch(e=>{throw e});async function y4(e){if(e.type==="batch"){if(id.mode!=="writer")throw new Error("Query worker cannot process writes.");let r=e.commands??[],o=await vt.writeBatch(r.map(Q4));Ot.parentPort?.postMessage({batchId:e.batchId,type:"ack"}),o.pricingRefreshNeeded&&m4();return}let t=e.args??[];id.mode==="query"&&e.revision!==void 0&&e.revision!==fk&&(fk=e.revision,vt.invalidateAnalysisCache());let n;switch(e.method){case"analyze":n=await vt.analyze(t[0]);break;case"flush":await vt.checkpoint(),n=!0;break;case"getDetail":n=await vt.getDetail(t[0]);break;case"getBodyChunk":n=await vt.getBodyChunk(t[0]);break;case"getTracePayload":n=await vt.getTracePayload(t[0]);break;case"list":n=await vt.list(t[0]);break;case"shutdown":Ki=!0,await vt.close(),n=!0;break;default:throw new Error(`Unknown request log worker method: ${e.method??""}`)}Ot.parentPort?.postMessage({requestId:e.requestId,result:n,type:"response"}),e.method==="shutdown"&&Ot.parentPort?.close()}function m4(){Ki||Yh||(Yh=BD().then(()=>{Ki||Ik()}).catch(e=>{console.warn(`[request-log] Failed to refresh pricing catalog: ${Wh(e)}`)}).finally(()=>{Yh=void 0}))}function Ik(e){Ki||zi&&e===void 0||(zi=!0,Ad=Ad.then(async()=>{if(Ki){zi=!1;return}let t=await vt.backfillMissingUsageCostsPage({beforeId:e});if(t.updated>0&&Ot.parentPort?.postMessage({type:"maintenance",updated:t.updated}),t.nextBeforeId===void 0){zi=!1;return}setImmediate(()=>Ik(t.nextBeforeId))}).catch(t=>{zi=!1,console.warn(`[request-log] Failed to backfill usage costs: ${Wh(t)}`)}))}function Q4(e){if(e.kind==="raw-trace-update"){let n={...e.input},r=Rc(e.rawTraceFiles?.maxBodyBytes),o=e.rawTraceFiles?{cleanupDirectory:e.rawTraceFiles.cleanupDirectory,maxBodyBytes:e.rawTraceFiles.maxBodyBytes}:void 0;if(e.rawTraceFiles?.requestBody){let s=hk(e.rawTraceFiles.requestBody,r);s&&(o&&(o.requestBody=pk(s)),n.requestBodyContentType=s.contentType??n.requestBodyContentType,n.requestBodySizeBytes=s.sizeBytes,n.requestBodyTruncated=s.truncated,Ek(s)&&(n.requestBodyText=s.text))}if(e.rawTraceFiles?.responseBody){let s=hk(e.rawTraceFiles.responseBody,r);s&&(o&&(o.responseBody=pk(s)),n.responseBodyContentType=s.contentType??n.responseBodyContentType,n.responseBodySizeBytes=s.sizeBytes,n.responseBodyTruncated=s.truncated,Ek(s)&&(n.responseBodyText=s.text))}return{input:n,kind:"raw-trace-update",...o?{rawTraceFiles:o}:{},sequence:e.sequence}}let t=e.input;return{...e,input:{...t,requestBody:Buffer.isBuffer(t.requestBody)?t.requestBody:Buffer.from(t.requestBody)}}}function pk(e){return{contentType:e.contentType,filePath:e.filePath,sizeBytes:e.sizeBytes,truncated:e.truncated}}function hk(e,t){let n;try{let r=R4(e.filePath);n=(0,qt.openSync)(r,"r");let o=(0,qt.fstatSync)(n).size,s=Math.min(o,t),i=Buffer.allocUnsafe(s),A=0;for(;A<s;){let l=(0,qt.readSync)(n,i,A,s-A,A);if(l===0)break;A+=l}let a=A===i.byteLength?i:i.subarray(0,A),c=ir(a),d=Math.max(e.sizeBytes,o);return{...e,filePath:r,sizeBytes:d,text:new Ck.StringDecoder("utf8").write(c.buffer),textTruncated:A<o,truncated:!!e.truncated||o<d}}catch(r){if(b4(r)==="ENOENT")return;throw r}finally{n!==void 0&&(0,qt.closeSync)(n)}}function Ek(e){if(!e.truncated&&!e.textTruncated)return!0;let t=e.contentType?.split(";",1)[0].trim().toLowerCase()??"",n=Bk(e.text,0),r=e.text.charCodeAt(n);return t==="application/json"||t.endsWith("+json")||r===123||r===91?w4(e.text,n):!0}function w4(e,t){let n=e.charCodeAt(t);if(n!==123&&n!==91)return!1;let r=[n],o=!1,s=!1;for(let i=t+1;i<e.length;i+=1){let A=e.charCodeAt(i);if(s){o?o=!1:A===92?o=!0:A===34&&(s=!1);continue}if(A===34){s=!0;continue}if(A===123||A===91){r.push(A);continue}if(A!==125&&A!==93)continue;let a=r.pop();if(A===125&&a!==123||A===93&&a!==91)return!1;if(r.length===0)return Bk(e,i+1)===e.length}return!1}function Bk(e,t){let n=t;for(;n<e.length;){let r=e.charCodeAt(n);if(r!==32&&r!==9&&r!==10&&r!==13)break;n+=1}return n}function R4(e){let t=(0,qt.realpathSync)(id.rawTraceSpoolDir??iA),n=(0,qt.realpathSync)((0,ad.resolve)(e));if(n===t||!n.startsWith(`${t}${ad.sep}`))throw new Error(`Raw trace path is outside the configured spool directory: ${e}`);return n}function Wh(e){return e instanceof Error?e.stack||e.message:String(e)}function b4(e){return typeof e=="object"&&e!==null&&"code"in e&&String(e.code??"")||void 0}
|