@hafez/claude-code-router 2.0.0 → 2.0.1

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 CHANGED
@@ -40,7 +40,7 @@ npm install -g @anthropic-ai/claude-code
40
40
  Then, install Claude Code Router:
41
41
 
42
42
  ```shell
43
- npm install -g @musistudio/claude-code-router
43
+ npm install -g @hafez/claude-code-router
44
44
  ```
45
45
 
46
46
  ### 2. Configuration
@@ -319,6 +319,63 @@ The `activate` command sets the following environment variables:
319
319
 
320
320
  > **Note**: Make sure the Claude Code Router service is running (`ccr start`) before using the activated environment variables. The environment variables are only valid for the current shell session. To make them persistent, you can add `eval "$(ccr activate)"` to your shell configuration file (e.g., `~/.zshrc` or `~/.bashrc`).
321
321
 
322
+ ### 8. OpenAI Codex Authentication (ChatGPT Plus/Pro)
323
+
324
+ If you have a ChatGPT Plus or Pro subscription, you can route requests through the OpenAI Codex API using OAuth, without needing a separate API key or local proxy.
325
+
326
+ #### Login
327
+
328
+ ```shell
329
+ ccr auth login
330
+ ```
331
+
332
+ Select "OpenAI Codex (ChatGPT Plus/Pro)", then follow the device authorization flow:
333
+ 1. Visit the URL shown in the terminal
334
+ 2. Enter the code displayed
335
+ 3. Authorize the application in your browser
336
+
337
+ #### Check Status
338
+
339
+ ```shell
340
+ ccr auth status
341
+ ```
342
+
343
+ Shows stored credentials, expiry time, and account ID.
344
+
345
+ #### Configuration
346
+
347
+ After logging in, configure your provider in `~/.claude-code-router/config.json`:
348
+
349
+ ```json
350
+ {
351
+ "Providers": [
352
+ {
353
+ "name": "openai-codex",
354
+ "api_base_url": "https://chatgpt.com/backend-api/codex/responses",
355
+ "api_key": "",
356
+ "models": ["gpt-5.3-codex", "gpt-5.1-codex", "gpt-5.2-codex"],
357
+ "transformer": {
358
+ "use": ["openai-responses", "openai-codex"]
359
+ }
360
+ }
361
+ ],
362
+ "Router": {
363
+ "default": "openai-codex,gpt-5.3-codex"
364
+ }
365
+ }
366
+ ```
367
+
368
+ The `openai-codex` transformer handles OAuth token management automatically, including token refresh when credentials are about to expire. The `openai-responses` transformer converts between the Anthropic Messages format and the OpenAI Responses API format. Transformer order matters: `openai-responses` must come before `openai-codex`.
369
+
370
+ #### Other Auth Commands
371
+
372
+ ```shell
373
+ ccr auth logout # Remove stored credentials
374
+ ccr auth list # List all stored credentials
375
+ ```
376
+
377
+ Credentials are stored in `~/.claude-code-router/auth.json` with restricted file permissions.
378
+
322
379
  #### Providers
323
380
 
324
381
  The `Providers` array is where you define the different model providers you want to use. Each provider object requires:
@@ -416,6 +473,8 @@ Transformers allow you to modify the request and response payloads to ensure com
416
473
  - `vertex-gemini`: Handles the Gemini API using Vertex authentication.
417
474
  - `chutes-glm` Unofficial support for GLM 4.5 model via Chutes [chutes-glm-transformer.js](https://gist.github.com/vitobotta/2be3f33722e05e8d4f9d2b0138b8c863).
418
475
  - `qwen-cli` (experimental): Unofficial support for qwen3-coder-plus model via Qwen CLI [qwen-cli.js](https://gist.github.com/musistudio/f5a67841ced39912fd99e42200d5ca8b).
476
+ - `openai-codex`: Authenticates with OpenAI Codex API using OAuth (ChatGPT Plus/Pro). Handles token management and refresh. Use with `openai-responses` transformer. See [OpenAI Codex Authentication](#8-openai-codex-authentication-chatgpt-pluspro).
477
+ - `openai-responses`: Converts between Anthropic Messages format and OpenAI Responses API format. Required when using the Codex API or any OpenAI Responses API endpoint.
419
478
  - `rovo-cli` (experimental): Unofficial support for gpt-5 via Atlassian Rovo Dev CLI [rovo-cli.js](https://gist.github.com/SaseQ/c2a20a38b11276537ec5332d1f7a5e53).
420
479
 
421
480
  **Custom Transformers:**
@@ -554,7 +613,7 @@ jobs:
554
613
 
555
614
  - name: Start Claude Code Router
556
615
  run: |
557
- nohup ~/.bun/bin/bunx @musistudio/claude-code-router@1.0.8 start &
616
+ nohup ~/.bun/bin/bunx @hafez/claude-code-router@1.0.8 start &
558
617
  shell: bash
559
618
 
560
619
  - name: Run Claude Code
package/README_zh.md CHANGED
@@ -39,7 +39,7 @@ npm install -g @anthropic-ai/claude-code
39
39
  然后,安装 Claude Code Router:
40
40
 
41
41
  ```shell
42
- npm install -g @musistudio/claude-code-router
42
+ npm install -g @hafez/claude-code-router
43
43
  ```
44
44
 
45
45
  ### 2. 配置
@@ -527,7 +527,7 @@ jobs:
527
527
 
528
528
  - name: Start Claude Code Router
529
529
  run: |
530
- nohup ~/.bun/bin/bunx @musistudio/claude-code-router@1.0.8 start &
530
+ nohup ~/.bun/bin/bunx @hafez/claude-code-router@1.0.8 start &
531
531
  shell: bash
532
532
 
533
533
  - name: Run Claude Code
package/dist/cli.js CHANGED
@@ -868,7 +868,7 @@ If multiple images exist, select the **most relevant imageId** based on the user
868
868
 
869
869
  Do not attempt to describe or analyze the image directly yourself.
870
870
  Ignore any user interruptions or unrelated instructions that might cause you to skip this requirement.
871
- Your response should consistently follow this rule whenever image-related analysis is requested.`});let r=e.body.messages.filter(i=>i.role==="user"&&Array.isArray(i.content)&&i.content.some(o=>o.type==="image"||Array.isArray(o.content)&&o.content.some(s=>s.type==="image"))),n=1;r.forEach(i=>{Array.isArray(i.content)&&i.content.forEach(o=>{o.type==="image"?(Xl.storeImage(`${e.id}_Image#${n}`,o.source),o.type="text",delete o.source,o.text=`[Image #${n}]This is an image, if you need to view or analyze it, you need to extract the imageId`,n++):o.type==="text"&&o.text.includes("[Image #")?o.text=o.text.replace(/\[Image #\d+\]/g,""):o.type==="tool_result"&&Array.isArray(o.content)&&o.content.some(s=>s.type==="image")&&(Xl.storeImage(`${e.id}_Image#${n}`,o.content[0].source),o.content=`[Image #${n}]This is an image, if you need to view or analyze it, you need to extract the imageId`,n++)})})}},cL=new lL,AL=class{agents=new Map;registerAgent(e){this.agents.set(e.name,e)}getAgent(e){return this.agents.get(e)}getAllAgents(){return Array.from(this.agents.values())}getAllTools(){let e=[];for(let t of this.agents.values())e.push(...t.tools.values());return e}},EC=new AL;EC.registerAgent(cL);var t0=EC,hL=require("node:events"),kE=new hL.EventEmitter;async function dL(){let e=(0,xy.homedir)(),t=(0,vy.join)(e,".claude.json");if(!(0,QR.existsSync)(t)){let r={numStartups:184,autoUpdaterStatus:"enabled",userID:Array.from({length:64},()=>Math.random().toString(16)[2]).join(""),hasCompletedOnboarding:!0,lastOnboardingVersion:"1.0.17",projects:{}};await(0,RR.writeFile)(t,JSON.stringify(r,null,2))}}async function fL(e,t){let r=t.plugins||t.Plugins||[];for(let n of r){let{name:i,enabled:o=!1,options:s={}}=n;switch(i){case"token-speed":D0.registerPlugin(pC,{enabled:o,outputHandlers:[{type:"temp-file",enabled:!0}],...s});break;default:console.warn(`Unknown plugin: ${i}`);break}}await D0.enablePlugins(e)}async function mC(e={}){await dL(),await td();let t=await Fy(),r=t.Providers||t.providers||[],n=r&&r.length>0,i=t.HOST||"127.0.0.1";n?(i=t.HOST,t.APIKEY||(i="127.0.0.1")):(i="0.0.0.0",console.log("\u2139\uFE0F No providers configured. Listening on 0.0.0.0 without authentication."));let o=t.PORT||3456,s=process.env.SERVICE_PORT?parseInt(process.env.SERVICE_PORT):o,a=p=>(p>9?"":"0")+p,u=(p,A)=>{let f;p?typeof p=="number"?f=new Date(p):f=p:f=new Date;let d=f.getFullYear()+""+a(f.getMonth()+1),g=a(f.getDate()),E=a(f.getHours()),D=a(f.getMinutes());return`./logs/ccr-${d}${g}${E}${D}${a(f.getSeconds())}${A?`_${A}`:""}.log`},c;e.logger!==void 0?c=e.logger:t.LOG!==!1?(t.LOG===void 0&&(t.LOG=!0),c={level:t.LOG_LEVEL||"debug",stream:iL(u,{path:Kh.HOME_DIR,maxFiles:3,interval:"1d",compress:!1,maxSize:"50M"})}):c=!1;let l=await(0,Kh.listPresets)(),h=await G6({jsonPath:Kh.CONFIG_FILE,initialConfig:{providers:t.Providers||t.providers,HOST:i,PORT:s,LOG_FILE:(0,vy.join)((0,xy.homedir)(),".claude-code-router","claude-code-router.log")},logger:c});return await Promise.allSettled(l.map(async p=>await h.registerNamespace(`/preset/${p.name}`,p.config))),await fL(h,t),h.addHook("preHandler",async(p,A)=>new Promise((f,d)=>{let g=E=>{E?d(E):f()};V6(t)(p,A,g).catch(d)})),h.addHook("preHandler",async(p,A)=>{let f=new URL(`http://127.0.0.1${p.url}`);p.pathname=f.pathname,p.pathname.endsWith("/v1/messages")&&p.pathname!=="/v1/messages"&&(p.preset=p.pathname.replace("/v1/messages","").replace("/",""))}),h.addHook("preHandler",async(p,A)=>{if(p.pathname.endsWith("/v1/messages")){let f=[];for(let d of t0.getAllAgents())d.shouldHandle(p,t)&&(f.push(d.name),d.reqHandler(p,t),d.tools.size&&(p.body?.tools?.length||(p.body.tools=[]),p.body.tools.unshift(...Array.from(d.tools.values()).map(g=>({name:g.name,description:g.description,input_schema:g.input_schema})))));f.length&&(p.agents=f)}}),h.addHook("onError",async(p,A,f)=>{kE.emit("onError",p,A,f)}),h.addHook("onSend",(p,A,f,d)=>{if(p.sessionId&&p.pathname.endsWith("/v1/messages")){if(f instanceof ReadableStream){if(p.agents){let D=new AbortController,m=f.pipeThrough(new TE),y,B=-1,I="",C="",b="",w=[],v=[];return d(null,oL(m,async(x,F)=>{try{if(x.event==="content_block_start"&&x?.data?.content_block?.name){let _=p.agents.find(R=>t0.getAgent(R)?.tools.get(x.data.content_block.name));if(_){y=t0.getAgent(_),B=x.data.index,I=x.data.content_block.name,b=x.data.content_block.id;return}}if(B>-1&&x.data.index===B&&x.data?.delta?.type==="input_json_delta"){C+=x.data?.delta?.partial_json;return}if(B>-1&&x.data.index===B&&x.data.type==="content_block_stop"){try{let _=aL.default.parse(C);v.push({type:"tool_use",id:b,name:I,input:_});let R=await y?.tools.get(I)?.handler(_,{req:p,config:t});w.push({tool_use_id:b,type:"tool_result",content:R}),y=void 0,B=-1,I="",C="",b=""}catch(_){console.log(_)}return}if(x.event==="message_delta"&&w.length){p.body.messages.push({role:"assistant",content:v}),p.body.messages.push({role:"user",content:w});let _=await fetch(`http://127.0.0.1:${t.PORT||3456}/v1/messages`,{method:"POST",headers:{"x-api-key":t.APIKEY,"content-type":"application/json"},body:JSON.stringify(p.body)});if(!_.ok)return;let R=_.body.pipeThrough(new TE).getReader();for(;;)try{let{value:S,done:Q}=await R.read();if(Q)break;let k=S;if(["message_start","message_stop"].includes(k.event))continue;if(!F.desiredSize)break;F.enqueue(k)}catch(S){if(S.name==="AbortError"||S.code==="ERR_STREAM_PREMATURE_CLOSE"){D.abort();break}throw S}return}return x}catch(_){if(console.error("Unexpected error in stream processing:",_),_.code==="ERR_STREAM_PREMATURE_CLOSE"){D.abort();return}throw _}}).pipeThrough(new sL))}let[g,E]=f.tee();return(async D=>{let m=D.getReader();try{for(;;){let{done:y,value:B}=await m.read();if(y)break;let I=new TextDecoder().decode(B);if(!I.startsWith("event: message_delta"))continue;let C=I.slice(27);try{let b=JSON.parse(C);y0.put(p.sessionId,b.usage)}catch{}}}catch(y){y.name==="AbortError"||y.code==="ERR_STREAM_PREMATURE_CLOSE"?console.error("Background read stream closed prematurely"):console.error("Error in background stream reading:",y)}finally{m.releaseLock()}})(E),d(null,g)}if(y0.put(p.sessionId,f.usage),typeof f=="object")return f.error?d(f.error,null):d(f,null)}if(typeof f=="object"&&f.error)return d(f.error,null);d(null,f)}),h.addHook("onSend",async(p,A,f)=>(kE.emit("onSend",p,A,f),f)),process.on("uncaughtException",p=>{h.app.log.error("Uncaught exception:",p)}),process.on("unhandledRejection",(p,A)=>{h.app.log.error("Unhandled rejection at:",A,"reason:",p)}),h}async function pL(){let e=await mC();e.app.post("/api/restart",async()=>(setTimeout(async()=>{process.exit(0)},100),{success:!0,message:"Service restart initiated"})),await e.start()}require.main===md&&pL().catch(e=>{console.error("Failed to start server:",e),process.exit(1)});});async function wC(e){try{let{stdout:t}=await BC("npm view @musistudio/claude-code-router version"),r=t.trim();return{hasUpdate:gL(r,e)>0,latestVersion:r,changelog:""}}catch(t){return console.error("Error checking for updates:",t),{hasUpdate:!1,latestVersion:e,changelog:""}}}async function IC(){try{let{stdout:e,stderr:t}=await BC("npm update -g @musistudio/claude-code-router");return t&&console.error("Update stderr:",t),console.log("Update stdout:",e),{success:!0,message:"Update completed successfully. Please restart the application to apply changes."}}catch(e){return console.error("Error performing update:",e),{success:!1,message:`Failed to perform update: ${e instanceof Error?e.message:"Unknown error"}`}}}function gL(e,t){let r=e.split(".").map(Number),n=t.split(".").map(Number);for(let i=0;i<Math.max(r.length,n.length);i++){let o=i<r.length?r[i]:0,s=i<n.length?n[i]:0;if(o>s)return 1;if(o<s)return-1}return 0}var DC,CC,BC,bC=or(()=>{"use strict";DC=require("child_process"),CC=require("util"),BC=(0,CC.promisify)(DC.exec)});var zc,yd=or(()=>{zc="2.0.0"});var Cd=Ct(Dd=>{"use strict";Object.defineProperty(Dd,"__esModule",{value:!0});var xC=require("child_process"),mL=1024*1024,vC={exec(e,t){let r={maxBuffer:2*mL,windowsHide:!0};(0,xC.exec)(e,r,t)},spawn(e,t,r){return(0,xC.spawn)(e,t,r)},stripLine(e,t){let r=0;for(;t-- >0;){let n=e.indexOf(`
871
+ Your response should consistently follow this rule whenever image-related analysis is requested.`});let r=e.body.messages.filter(i=>i.role==="user"&&Array.isArray(i.content)&&i.content.some(o=>o.type==="image"||Array.isArray(o.content)&&o.content.some(s=>s.type==="image"))),n=1;r.forEach(i=>{Array.isArray(i.content)&&i.content.forEach(o=>{o.type==="image"?(Xl.storeImage(`${e.id}_Image#${n}`,o.source),o.type="text",delete o.source,o.text=`[Image #${n}]This is an image, if you need to view or analyze it, you need to extract the imageId`,n++):o.type==="text"&&o.text.includes("[Image #")?o.text=o.text.replace(/\[Image #\d+\]/g,""):o.type==="tool_result"&&Array.isArray(o.content)&&o.content.some(s=>s.type==="image")&&(Xl.storeImage(`${e.id}_Image#${n}`,o.content[0].source),o.content=`[Image #${n}]This is an image, if you need to view or analyze it, you need to extract the imageId`,n++)})})}},cL=new lL,AL=class{agents=new Map;registerAgent(e){this.agents.set(e.name,e)}getAgent(e){return this.agents.get(e)}getAllAgents(){return Array.from(this.agents.values())}getAllTools(){let e=[];for(let t of this.agents.values())e.push(...t.tools.values());return e}},EC=new AL;EC.registerAgent(cL);var t0=EC,hL=require("node:events"),kE=new hL.EventEmitter;async function dL(){let e=(0,xy.homedir)(),t=(0,vy.join)(e,".claude.json");if(!(0,QR.existsSync)(t)){let r={numStartups:184,autoUpdaterStatus:"enabled",userID:Array.from({length:64},()=>Math.random().toString(16)[2]).join(""),hasCompletedOnboarding:!0,lastOnboardingVersion:"1.0.17",projects:{}};await(0,RR.writeFile)(t,JSON.stringify(r,null,2))}}async function fL(e,t){let r=t.plugins||t.Plugins||[];for(let n of r){let{name:i,enabled:o=!1,options:s={}}=n;switch(i){case"token-speed":D0.registerPlugin(pC,{enabled:o,outputHandlers:[{type:"temp-file",enabled:!0}],...s});break;default:console.warn(`Unknown plugin: ${i}`);break}}await D0.enablePlugins(e)}async function mC(e={}){await dL(),await td();let t=await Fy(),r=t.Providers||t.providers||[],n=r&&r.length>0,i=t.HOST||"127.0.0.1";n?(i=t.HOST,t.APIKEY||(i="127.0.0.1")):(i="0.0.0.0",console.log("\u2139\uFE0F No providers configured. Listening on 0.0.0.0 without authentication."));let o=t.PORT||3456,s=process.env.SERVICE_PORT?parseInt(process.env.SERVICE_PORT):o,a=p=>(p>9?"":"0")+p,u=(p,A)=>{let f;p?typeof p=="number"?f=new Date(p):f=p:f=new Date;let d=f.getFullYear()+""+a(f.getMonth()+1),g=a(f.getDate()),E=a(f.getHours()),D=a(f.getMinutes());return`./logs/ccr-${d}${g}${E}${D}${a(f.getSeconds())}${A?`_${A}`:""}.log`},c;e.logger!==void 0?c=e.logger:t.LOG!==!1?(t.LOG===void 0&&(t.LOG=!0),c={level:t.LOG_LEVEL||"debug",stream:iL(u,{path:Kh.HOME_DIR,maxFiles:3,interval:"1d",compress:!1,maxSize:"50M"})}):c=!1;let l=await(0,Kh.listPresets)(),h=await G6({jsonPath:Kh.CONFIG_FILE,initialConfig:{providers:t.Providers||t.providers,HOST:i,PORT:s,LOG_FILE:(0,vy.join)((0,xy.homedir)(),".claude-code-router","claude-code-router.log")},logger:c});return await Promise.allSettled(l.map(async p=>await h.registerNamespace(`/preset/${p.name}`,p.config))),await fL(h,t),h.addHook("preHandler",async(p,A)=>new Promise((f,d)=>{let g=E=>{E?d(E):f()};V6(t)(p,A,g).catch(d)})),h.addHook("preHandler",async(p,A)=>{let f=new URL(`http://127.0.0.1${p.url}`);p.pathname=f.pathname,p.pathname.endsWith("/v1/messages")&&p.pathname!=="/v1/messages"&&(p.preset=p.pathname.replace("/v1/messages","").replace("/",""))}),h.addHook("preHandler",async(p,A)=>{if(p.pathname.endsWith("/v1/messages")){let f=[];for(let d of t0.getAllAgents())d.shouldHandle(p,t)&&(f.push(d.name),d.reqHandler(p,t),d.tools.size&&(p.body?.tools?.length||(p.body.tools=[]),p.body.tools.unshift(...Array.from(d.tools.values()).map(g=>({name:g.name,description:g.description,input_schema:g.input_schema})))));f.length&&(p.agents=f)}}),h.addHook("onError",async(p,A,f)=>{kE.emit("onError",p,A,f)}),h.addHook("onSend",(p,A,f,d)=>{if(p.sessionId&&p.pathname.endsWith("/v1/messages")){if(f instanceof ReadableStream){if(p.agents){let D=new AbortController,m=f.pipeThrough(new TE),y,B=-1,I="",C="",b="",w=[],v=[];return d(null,oL(m,async(x,F)=>{try{if(x.event==="content_block_start"&&x?.data?.content_block?.name){let _=p.agents.find(R=>t0.getAgent(R)?.tools.get(x.data.content_block.name));if(_){y=t0.getAgent(_),B=x.data.index,I=x.data.content_block.name,b=x.data.content_block.id;return}}if(B>-1&&x.data.index===B&&x.data?.delta?.type==="input_json_delta"){C+=x.data?.delta?.partial_json;return}if(B>-1&&x.data.index===B&&x.data.type==="content_block_stop"){try{let _=aL.default.parse(C);v.push({type:"tool_use",id:b,name:I,input:_});let R=await y?.tools.get(I)?.handler(_,{req:p,config:t});w.push({tool_use_id:b,type:"tool_result",content:R}),y=void 0,B=-1,I="",C="",b=""}catch(_){console.log(_)}return}if(x.event==="message_delta"&&w.length){p.body.messages.push({role:"assistant",content:v}),p.body.messages.push({role:"user",content:w});let _=await fetch(`http://127.0.0.1:${t.PORT||3456}/v1/messages`,{method:"POST",headers:{"x-api-key":t.APIKEY,"content-type":"application/json"},body:JSON.stringify(p.body)});if(!_.ok)return;let R=_.body.pipeThrough(new TE).getReader();for(;;)try{let{value:S,done:Q}=await R.read();if(Q)break;let k=S;if(["message_start","message_stop"].includes(k.event))continue;if(!F.desiredSize)break;F.enqueue(k)}catch(S){if(S.name==="AbortError"||S.code==="ERR_STREAM_PREMATURE_CLOSE"){D.abort();break}throw S}return}return x}catch(_){if(console.error("Unexpected error in stream processing:",_),_.code==="ERR_STREAM_PREMATURE_CLOSE"){D.abort();return}throw _}}).pipeThrough(new sL))}let[g,E]=f.tee();return(async D=>{let m=D.getReader();try{for(;;){let{done:y,value:B}=await m.read();if(y)break;let I=new TextDecoder().decode(B);if(!I.startsWith("event: message_delta"))continue;let C=I.slice(27);try{let b=JSON.parse(C);y0.put(p.sessionId,b.usage)}catch{}}}catch(y){y.name==="AbortError"||y.code==="ERR_STREAM_PREMATURE_CLOSE"?console.error("Background read stream closed prematurely"):console.error("Error in background stream reading:",y)}finally{m.releaseLock()}})(E),d(null,g)}if(y0.put(p.sessionId,f.usage),typeof f=="object")return f.error?d(f.error,null):d(f,null)}if(typeof f=="object"&&f.error)return d(f.error,null);d(null,f)}),h.addHook("onSend",async(p,A,f)=>(kE.emit("onSend",p,A,f),f)),process.on("uncaughtException",p=>{h.app.log.error("Uncaught exception:",p)}),process.on("unhandledRejection",(p,A)=>{h.app.log.error("Unhandled rejection at:",A,"reason:",p)}),h}async function pL(){let e=await mC();e.app.post("/api/restart",async()=>(setTimeout(async()=>{process.exit(0)},100),{success:!0,message:"Service restart initiated"})),await e.start()}require.main===md&&pL().catch(e=>{console.error("Failed to start server:",e),process.exit(1)});});async function wC(e){try{let{stdout:t}=await BC("npm view @hafez/claude-code-router version"),r=t.trim();return{hasUpdate:gL(r,e)>0,latestVersion:r,changelog:""}}catch(t){return console.error("Error checking for updates:",t),{hasUpdate:!1,latestVersion:e,changelog:""}}}async function IC(){try{let{stdout:e,stderr:t}=await BC("npm update -g @hafez/claude-code-router");return t&&console.error("Update stderr:",t),console.log("Update stdout:",e),{success:!0,message:"Update completed successfully. Please restart the application to apply changes."}}catch(e){return console.error("Error performing update:",e),{success:!1,message:`Failed to perform update: ${e instanceof Error?e.message:"Unknown error"}`}}}function gL(e,t){let r=e.split(".").map(Number),n=t.split(".").map(Number);for(let i=0;i<Math.max(r.length,n.length);i++){let o=i<r.length?r[i]:0,s=i<n.length?n[i]:0;if(o>s)return 1;if(o<s)return-1}return 0}var DC,CC,BC,bC=or(()=>{"use strict";DC=require("child_process"),CC=require("util"),BC=(0,CC.promisify)(DC.exec)});var zc,yd=or(()=>{zc="2.0.0"});var Cd=Ct(Dd=>{"use strict";Object.defineProperty(Dd,"__esModule",{value:!0});var xC=require("child_process"),mL=1024*1024,vC={exec(e,t){let r={maxBuffer:2*mL,windowsHide:!0};(0,xC.exec)(e,r,t)},spawn(e,t,r){return(0,xC.spawn)(e,t,r)},stripLine(e,t){let r=0;for(;t-- >0;){let n=e.indexOf(`
872
872
  `,r);n>=0&&(r=n+1)}return r>0?e.substring(r):e},split(e,t){let r=e.trim().split(/\s+/);return r.length>t&&(r[t-1]=r.slice(t-1).join(" ")),r},extractColumns(e,t,r){let n=e.split(/(\r\n|\n|\r)/),i=[];return r||(r=Math.max.apply(null,t)+1),n.forEach(o=>{let s=vC.split(o,r),a=[];t.forEach(u=>{a.push(s[u]||"")}),i.push(a)}),i},parseTable(e){let t=e.split(/(\r\n\r\n|\r\n\n|\n\r\n|\n\n)/).filter(r=>r&&r.trim().length>0).map(r=>r.split(/(\r\n|\n|\r)/).filter(n=>n.trim().length>0));return t.forEach(r=>{for(let n=0;r[n];){let i=r[n];i.startsWith(" ")?(r[n-1]+=i.trimLeft(),r.splice(n,1)):n+=1}}),t.map(r=>{let n={};return r.forEach(i=>{let o=i.indexOf(":"),s=i.slice(0,o).trim();n[s]=i.slice(o+1).trim()}),n})}};Dd.default=vC});var SC=Ct((FC,Wc)=>{(function(e,t){"use strict";typeof define=="function"&&define.amd?define(t):typeof Wc=="object"&&Wc.exports?Wc.exports=t():e.log=t()})(FC,function(){"use strict";var e=function(){},t="undefined",r=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"],i={},o=null;function s(f,d){var g=f[d];if(typeof g.bind=="function")return g.bind(f);try{return Function.prototype.bind.call(g,f)}catch{return function(){return Function.prototype.apply.apply(g,[f,arguments])}}}function a(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function u(f){return f==="debug"&&(f="log"),typeof console===t?!1:f==="trace"&&r?a:console[f]!==void 0?s(console,f):console.log!==void 0?s(console,"log"):e}function c(){for(var f=this.getLevel(),d=0;d<n.length;d++){var g=n[d];this[g]=d<f?e:this.methodFactory(g,f,this.name)}if(this.log=this.debug,typeof console===t&&f<this.levels.SILENT)return"No console available for logging"}function l(f){return function(){typeof console!==t&&(c.call(this),this[f].apply(this,arguments))}}function h(f,d,g){return u(f)||l.apply(this,arguments)}function p(f,d){var g=this,E,D,m,y="loglevel";typeof f=="string"?y+=":"+f:typeof f=="symbol"&&(y=void 0);function B(v){var x=(n[v]||"silent").toUpperCase();if(!(typeof window===t||!y)){try{window.localStorage[y]=x;return}catch{}try{window.document.cookie=encodeURIComponent(y)+"="+x+";"}catch{}}}function I(){var v;if(!(typeof window===t||!y)){try{v=window.localStorage[y]}catch{}if(typeof v===t)try{var x=window.document.cookie,F=encodeURIComponent(y),_=x.indexOf(F+"=");_!==-1&&(v=/^([^;]+)/.exec(x.slice(_+F.length+1))[1])}catch{}return g.levels[v]===void 0&&(v=void 0),v}}function C(){if(!(typeof window===t||!y)){try{window.localStorage.removeItem(y)}catch{}try{window.document.cookie=encodeURIComponent(y)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function b(v){var x=v;if(typeof x=="string"&&g.levels[x.toUpperCase()]!==void 0&&(x=g.levels[x.toUpperCase()]),typeof x=="number"&&x>=0&&x<=g.levels.SILENT)return x;throw new TypeError("log.setLevel() called with invalid level: "+v)}g.name=f,g.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},g.methodFactory=d||h,g.getLevel=function(){return m??D??E},g.setLevel=function(v,x){return m=b(v),x!==!1&&B(m),c.call(g)},g.setDefaultLevel=function(v){D=b(v),I()||g.setLevel(v,!1)},g.resetLevel=function(){m=null,C(),c.call(g)},g.enableAll=function(v){g.setLevel(g.levels.TRACE,v)},g.disableAll=function(v){g.setLevel(g.levels.SILENT,v)},g.rebuild=function(){if(o!==g&&(E=b(o.getLevel())),c.call(g),o===g)for(var v in i)i[v].rebuild()},E=b(o?o.getLevel():"WARN");var w=I();w!=null&&(m=b(w)),c.call(g)}o=new p,o.getLogger=function(d){if(typeof d!="symbol"&&typeof d!="string"||d==="")throw new TypeError("You must supply a name when creating a logger.");var g=i[d];return g||(g=i[d]=new p(d,o.methodFactory)),g};var A=typeof window!==t?window.log:void 0;return o.noConflict=function(){return typeof window!==t&&window.log===o&&(window.log=A),o},o.getLoggers=function(){return i},o.default=o,o})});var Bd=Ct(ju=>{"use strict";var yL=ju&&ju.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ju,"__esModule",{value:!0});var DL=yL(SC());ju.default=DL.default});var RC=Ct(_i=>{"use strict";var CL=_i&&_i.__createBinding||(Object.create?(function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}):(function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]})),BL=_i&&_i.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),_C=_i&&_i.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var n=[];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[n.length]=i);return n},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var n=e(t),i=0;i<n.length;i++)n[i]!=="default"&&CL(r,t,n[i]);return BL(r,t),r}})(),QC=_i&&_i.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_i,"__esModule",{value:!0});var wL=_C(require("os")),Zc=_C(require("fs")),Wn=QC(Cd()),IL=QC(Bd()),bL=e=>new Promise((t,r)=>{Zc.existsSync(e)?t():Zc.mkdir(e,n=>{n?r(n):t()})}),ya={darwin(e){return new Promise((t,r)=>{Wn.default.exec("netstat -anv -p TCP && netstat -anv -p UDP",function(n,i,o){if(n)r(n);else{let s=o.toString().trim();if(s){r(new Error(s));return}let a=Wn.default.stripLine(i.toString(),1),u=a.slice(0,a.indexOf(`
873
873
  `)),c=Wn.default.stripLine(a,1),l=u.indexOf("rxbytes")>=0?10:8,h=Wn.default.extractColumns(c,[0,3,l],10).filter(p=>!!String(p[0]).match(/^(udp|tcp)/)).find(p=>{let A=String(p[1]).match(/\.(\d+)$/);return!!(A&&A[1]===String(e))});h&&h[2].length?t(parseInt(h[2],10)):r(new Error(`pid of port (${e}) not found`))}})})},linux(e){return new Promise((t,r)=>{Wn.default.exec("netstat -tunlp",function(i,o,s){if(i)r(i);else{let a=s.toString().trim();a&&IL.default.warn(a);let u=Wn.default.stripLine(o.toString(),2),c=Wn.default.extractColumns(u,[3,6],7).find(l=>{let h=String(l[0]).match(/:(\d+)$/);return!!(h&&h[1]===String(e))});if(c&&c[1]){let l=c[1].split("/",1)[0];l.length?t(parseInt(l,10)):r(new Error(`pid of port (${e}) not found`))}else r(new Error(`pid of port (${e}) not found`))}})})},win32(e){return new Promise((t,r)=>{Wn.default.exec("netstat -ano",function(n,i,o){if(n)r(n);else{let s=o.toString().trim();if(s){r(new Error(s));return}let a=Wn.default.stripLine(i.toString(),4),u=Wn.default.extractColumns(a,[1,4],5).find(c=>{let l=String(c[0]).match(/:(\d+)$/);return!!(l&&l[1]===String(e))});u&&u[1].length&&parseInt(u[1],10)>0?t(parseInt(u[1],10)):r(new Error(`pid of port (${e}) not found`))}})})},android(e){return new Promise((t,r)=>{let n=wL.tmpdir()+"/.find-process",i=n+"/"+process.pid,o='netstat -tunp >> "'+i+'"';bL(n).then(()=>{Wn.default.exec(o,()=>{Zc.readFile(i,"utf8",(s,a)=>{if(Zc.unlink(i,()=>{}),s)r(s);else{a=Wn.default.stripLine(a,2);let u=Wn.default.extractColumns(a,[3,6],7).find(c=>{let l=String(c[0]).match(/:(\d+)$/);return!!(l&&l[1]===String(e))});if(u&&u[1]){let c=u[1].split("/",1)[0];c.length?t(parseInt(c,10)):r(new Error(`pid of port (${e}) not found`))}else r(new Error(`pid of port (${e}) not found`))}})})})})}};ya.freebsd=ya.darwin;ya.sunos=ya.darwin;function xL(e){let t=process.platform;return new Promise((r,n)=>{if(!(t in ya))return n(new Error(`platform ${t} is unsupported`));let i=ya[t];i(e).then(r,n)})}_i.default=xL});var kC=Ct(Qi=>{"use strict";var vL=Qi&&Qi.__createBinding||(Object.create?(function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}):(function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]})),FL=Qi&&Qi.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),SL=Qi&&Qi.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var n=[];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[n.length]=i);return n},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var n=e(t),i=0;i<n.length;i++)n[i]!=="default"&&vL(r,t,n[i]);return FL(r,t),r}})(),_L=Qi&&Qi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Qi,"__esModule",{value:!0});var Kc=SL(require("path")),Hs=_L(Cd());function wd(e,t){return t?e&&e.match?e.match(t)!==null:!1:!0}function NC(e){let t=e.split(Kc.sep),r=t[t.length-1];r&&(t[t.length-1]=r.split(" ")[0]);let n=[];for(let i of t){let o=i.indexOf(" -");if(o>=0){n.push(i.substring(0,o).trim());break}else if(i.endsWith(" ")){n.push(i.trim());break}n.push(i)}return n.join(Kc.sep)}function TC(e){if(process.platform==="darwin"){let t=e.indexOf(".app/");if(t>=0)return Kc.basename(e.substring(0,t))}return Kc.basename(e)}var Bo={darwin(e){return new Promise((t,r)=>{let n;"pid"in e&&e.pid!==void 0?n=`ps -p ${e.pid} -ww -o pid,ppid,uid,gid,args`:n="ps ax -ww -o pid,ppid,uid,gid,args",Hs.default.exec(n,function(i,o,s){if(i)"pid"in e&&e.pid!==void 0?t([]):r(i);else{let a=s.toString().trim();if(a){r(new Error(a));return}let u=Hs.default.stripLine(o.toString(),1),l=Hs.default.extractColumns(u,[0,1,2,3,4],5).filter(h=>h[0]&&e.pid!==void 0?h[0]===String(e.pid):h[4]&&e.name?wd(h[4],e.name):!!h[0]).map(h=>{let p=String(h[4]),A=NC(p);return{pid:parseInt(h[0],10),ppid:parseInt(h[1],10),uid:parseInt(h[2],10),gid:parseInt(h[3],10),name:TC(A),bin:A,cmd:h[4]}});e.config.strict&&e.name&&(l=l.filter(h=>h.name===e.name)),t(l)}})})},win32(e){return new Promise((t,r)=>{let n="[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; Get-CimInstance -className win32_process | select Name,ProcessId,ParentProcessId,CommandLine,ExecutablePath",i=[],o=Hs.default.spawn("powershell.exe",["/c",n],{detached:!1,windowsHide:!0});o.stdout.on("data",s=>{i.push(s.toString())}),o.on("error",s=>{r(new Error("Command '"+n+"' failed with reason: "+s.toString()))}),o.on("close",s=>{if(s!==0)return r(new Error("Command '"+n+"' terminated with code: "+s));let a=Hs.default.parseTable(i.join("")).filter(u=>{if(e.pid!==void 0)return u.ProcessId===String(e.pid);if(e.name){let c=u.Name||"";return e.config.strict?c===e.name||c.endsWith(".exe")&&c.slice(0,-4)===e.name:wd(u.CommandLine||c,e.name)}else return!0}).map(u=>({pid:parseInt(u.ProcessId,10),ppid:parseInt(u.ParentProcessId,10),bin:u.ExecutablePath,name:u.Name||"",cmd:u.CommandLine}));t(a)})})},android(e){return new Promise((t,r)=>{Hs.default.exec("ps",function(i,o,s){if(i)e.pid!==void 0?t([]):r(i);else{let a=s.toString().trim();if(a){r(new Error(a));return}let u=Hs.default.stripLine(o.toString(),1),l=Hs.default.extractColumns(u,[0,3],4).filter(h=>h[0]&&e.pid!==void 0?h[0]===String(e.pid):h[1]&&e.name?wd(h[1],e.name):!!h[0]).map(h=>{let p=String(h[1]),A=NC(p);return{pid:parseInt(h[0],10),ppid:0,name:TC(A),bin:A,cmd:h[1]}});e.config.strict&&e.name&&(l=l.filter(h=>h.name===e.name)),t(l)}})})}};Bo.linux=Bo.darwin;Bo.sunos=Bo.darwin;Bo.freebsd=Bo.darwin;function QL(e){let t=process.platform,r=Bo[t];return r?r(e):Promise.reject(new Error(`Platform "${t}" is not supported`))}Qi.default=QL});var LC=Ct(Gu=>{"use strict";var bd=Gu&&Gu.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Gu,"__esModule",{value:!0});var RL=bd(RC()),OC=bd(kC()),NL=bd(Bd()),Id={port(e,t){return(0,RL.default)(e).then(r=>Id.pid(r,t),()=>[])},pid(e,t){return(0,OC.default)({pid:e,config:t})},name(e,t){return(0,OC.default)({name:e,config:t,skipSelf:!0})}};function TL(e,t,r){let n=Object.assign({logLevel:"warn",strict:typeof r=="boolean"?r:!1},typeof r=="object"?r:{});return n.logLevel&&NL.default.setLevel(n.logLevel),new Promise((i,o)=>{if(!(e in Id))o(new Error(`do not support find by "${e}"`));else{let s=/^\d+$/.test(String(t));e==="pid"&&!s?o(new Error("pid must be a number")):e==="port"&&!s?o(new Error("port must be a number")):Id[e](t,n).then(i,o)}})}Gu.default=TL});var UC=Ct(PC=>{"use strict";Object.defineProperty(PC,"__esModule",{value:!0})});var MC=Ct(Ri=>{"use strict";var kL=Ri&&Ri.__createBinding||(Object.create?(function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}):(function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]})),OL=Ri&&Ri.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&kL(t,e,r)},LL=Ri&&Ri.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ri,"__esModule",{value:!0});Ri.default=void 0;var PL=LC();Object.defineProperty(Ri,"default",{enumerable:!0,get:function(){return LL(PL).default}});OL(UC(),Ri)});function HC(){let e=0;(0,vn.existsSync)(pn.REFERENCE_COUNT_FILE)&&(e=parseInt((0,vn.readFileSync)(pn.REFERENCE_COUNT_FILE,"utf-8"))||0),e++,(0,vn.writeFileSync)(pn.REFERENCE_COUNT_FILE,e.toString())}function xd(){let e=0;(0,vn.existsSync)(pn.REFERENCE_COUNT_FILE)&&(e=parseInt((0,vn.readFileSync)(pn.REFERENCE_COUNT_FILE,"utf-8"))||0),e=Math.max(0,e-1),(0,vn.writeFileSync)(pn.REFERENCE_COUNT_FILE,e.toString())}function jC(){return(0,vn.existsSync)(pn.REFERENCE_COUNT_FILE)&&parseInt((0,vn.readFileSync)(pn.REFERENCE_COUNT_FILE,"utf-8"))||0}function wo(){if(!(0,vn.existsSync)(pn.PID_FILE))return!1;let e;try{let t=(0,vn.readFileSync)(pn.PID_FILE,"utf-8");if(e=parseInt(t,10),isNaN(e))return fs(),!1}catch{return!1}try{if(process.platform==="win32"){let t=`tasklist /FI "PID eq ${e}"`;return(0,$C.execSync)(t,{stdio:"pipe"}).toString().includes(e.toString())?!0:(fs(),!1)}else return process.kill(e,0),!0}catch{return fs(),!1}}function fs(){if((0,vn.existsSync)(pn.PID_FILE))try{require("fs").unlinkSync(pn.PID_FILE)}catch{}}function GC(){if(!(0,vn.existsSync)(pn.PID_FILE))return null;try{let e=parseInt((0,vn.readFileSync)(pn.PID_FILE,"utf-8"));return isNaN(e)?null:e}catch{return null}}async function Xc(){let e=GC(),t=await wo(),n=(await Zn()).PORT||3456;return{running:t,pid:e,port:n,endpoint:`http://127.0.0.1:${n}`,pidFile:pn.PID_FILE,referenceCount:jC()}}async function VC(){if(jC()===0){let t=GC();if(t&&await wo())try{process.kill(t,"SIGTERM")}catch{}}}var vn,pn,UL,$C,Vu=or(()=>{"use strict";vn=require("fs"),pn=Mt(ti());js();UL=Mt(MC()),$C=require("child_process")});var XC={};kl(XC,{backupConfigFile:()=>ZC,getSettingsPath:()=>Qd,initConfig:()=>ML,initDir:()=>WC,readConfigFile:()=>Zn,restartService:()=>_d,run:()=>Sd,writeConfigFile:()=>KC});var Mn,qC,Gs,YC,JC,Qr,zC,Da,Fd,vd,qu,WC,Zn,ZC,KC,ML,Sd,_d,Qd,js=or(()=>{"use strict";Mn=Mt(require("node:fs/promises")),qC=Mt(Ml()),Gs=Mt(require("node:path")),YC=require("node:crypto"),JC=Mt(require("node:os")),Qr=Mt(ti()),zC=Mt(yC()),Da=require("fs");bC();yd();Fd=require("child_process");Vu();vd=e=>{if(typeof e=="string")return e.replace(/\$\{([^}]+)\}|\$([A-Z_][A-Z0-9_]*)/g,(t,r,n)=>{let i=r||n;return process.env[i]||t});if(Array.isArray(e))return e.map(vd);if(e!==null&&typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))t[r]=vd(n);return t}return e},qu=async e=>{try{await Mn.default.access(e)}catch{await Mn.default.mkdir(e,{recursive:!0})}},WC=async()=>{await qu(Qr.HOME_DIR),await qu(Qr.PLUGINS_DIR),await qu(Qr.PRESETS_DIR),await qu(Gs.default.join(Qr.HOME_DIR,"logs"))},Zn=async()=>{try{let e=await Mn.default.readFile(Qr.CONFIG_FILE,"utf-8");try{let t=qC.default.parse(e);return vd(t)}catch(t){console.error(`Failed to parse config file at ${Qr.CONFIG_FILE}`),console.error("Error details:",t.message),console.error("Please check your config file syntax."),process.exit(1)}}catch(e){if(e.code==="ENOENT")try{await WC();let t=await ZC();t&&console.log(`Backed up existing configuration file to ${t}`);let r={PORT:3456,Providers:[],Router:{}};return await KC(r),console.log("Created minimal default configuration file at ~/.claude-code-router/config.json"),console.log("Please edit this file with your actual configuration."),r}catch(t){console.error("Failed to create default configuration:",t.message),process.exit(1)}else console.error(`Failed to read config file at ${Qr.CONFIG_FILE}`),console.error("Error details:",e.message),process.exit(1)}},ZC=async()=>{try{if(await Mn.default.access(Qr.CONFIG_FILE).then(()=>!0).catch(()=>!1)){let e=new Date().toISOString().replace(/[:.]/g,"-"),t=`${Qr.CONFIG_FILE}.${e}.bak`;await Mn.default.copyFile(Qr.CONFIG_FILE,t);try{let r=Gs.default.dirname(Qr.CONFIG_FILE),n=Gs.default.basename(Qr.CONFIG_FILE),o=(await Mn.default.readdir(r)).filter(s=>s.startsWith(n)&&s.endsWith(".bak")).sort().reverse();if(o.length>3)for(let s=3;s<o.length;s++){let a=Gs.default.join(r,o[s]);await Mn.default.unlink(a)}}catch(r){console.warn("Failed to clean up old backups:",r)}return t}}catch(e){console.error("Failed to backup config file:",e)}return null},KC=async e=>{await qu(Qr.HOME_DIR);let t=`${JSON.stringify(e,null,2)}`;await Mn.default.writeFile(Qr.CONFIG_FILE,t)},ML=async()=>{let e=await Zn();return Object.assign(process.env,e),e},Sd=async(e=[])=>{if(wo()){console.log("claude-code-router server is running");return}let r=await(0,zC.getServer)(),n=r.app;(0,Da.writeFileSync)(Qr.PID_FILE,process.pid.toString()),n.post("/api/update/perform",async()=>await IC()),n.get("/api/update/check",async()=>await wC(zc)),n.post("/api/restart",async()=>(setTimeout(async()=>{(0,Fd.spawn)("ccr",["restart"],{detached:!0,stdio:"ignore"}).unref()},100),{success:!0,message:"Service restart initiated"})),await r.start()},_d=async()=>{try{let r=parseInt((0,Da.readFileSync)(Qr.PID_FILE,"utf-8"));if(process.kill(r),fs(),(0,Da.existsSync)(Qr.REFERENCE_COUNT_FILE))try{await Mn.default.unlink(Qr.REFERENCE_COUNT_FILE)}catch{}console.log("claude code router service has been stopped.")}catch{console.log("Service was not running or failed to stop."),fs()}console.log("Starting claude code router service...");let e=Gs.default.join(__dirname,"cli.js"),t=(0,Fd.spawn)("node",[e,"start"],{detached:!0,stdio:"ignore"});t.on("error",r=>{throw console.error("Failed to start service:",r),r}),t.unref(),console.log("\u2705 Service started successfully in the background.")},Qd=async e=>{let t=(0,YC.createHash)("sha256").update(e,"utf-8").digest("hex"),r=Gs.default.join(JC.default.tmpdir(),"claude-code-router"),n=`ccr-settings-${t}.json`,i=Gs.default.join(r,n);try{await Mn.default.access(r)}catch{await Mn.default.mkdir(r,{recursive:!0})}try{return await Mn.default.access(i),i}catch{return await Mn.default.writeFile(i,e,"utf-8"),i}}});var rB=Ct((E$,tB)=>{"use strict";tB.exports=function(t){return t.map(function(r){return r===""?"''":r&&typeof r=="object"?r.op.replace(/(.)/g,"\\$1"):/["\s\\]/.test(r)&&!/'/.test(r)?"'"+r.replace(/(['])/g,"\\$1")+"'":/["'\s]/.test(r)?'"'+r.replace(/(["\\$`!])/g,"\\$1")+'"':String(r).replace(/([A-Za-z]:)?([#!"$&'()*,:;<=>?@[\\\]^`{|}])/g,"$1\\$2")}).join(" ")}});var lB=Ct((m$,uB)=>{"use strict";var aB="(?:"+["\\|\\|","\\&\\&",";;","\\|\\&","\\<\\(","\\<\\<\\<",">>",">\\&","<\\&","[&;()|<>]"].join("|")+")",nB=new RegExp("^"+aB+"$"),iB="|&;()<> \\t",$L='"((\\\\"|[^"])*?)"',HL="'((\\\\'|[^'])*?)'",jL=/^#$/,sB="'",oB='"',Rd="$",Io="",GL=4294967296;for(Nd=0;Nd<4;Nd++)Io+=(GL*Math.random()).toString(16);var Nd,VL=new RegExp("^"+Io);function qL(e,t){for(var r=t.lastIndex,n=[],i;i=t.exec(e);)n.push(i),t.lastIndex===i.index&&(t.lastIndex+=1);return t.lastIndex=r,n}function YL(e,t,r){var n=typeof e=="function"?e(r):e[r];return typeof n>"u"&&r!=""?n="":typeof n>"u"&&(n="$"),typeof n=="object"?t+Io+JSON.stringify(n)+Io:t+n}function JL(e,t,r){r||(r={});var n=r.escape||"\\",i="(\\"+n+`['"`+iB+`]|[^\\s'"`+iB+"])+",o=new RegExp(["("+aB+")","("+i+"|"+$L+"|"+HL+")+"].join("|"),"g"),s=qL(e,o);if(s.length===0)return[];t||(t={});var a=!1;return s.map(function(u){var c=u[0];if(!c||a)return;if(nB.test(c))return{op:c};var l=!1,h=!1,p="",A=!1,f;function d(){f+=1;var D,m,y=c.charAt(f);if(y==="{"){if(f+=1,c.charAt(f)==="}")throw new Error("Bad substitution: "+c.slice(f-2,f+1));if(D=c.indexOf("}",f),D<0)throw new Error("Bad substitution: "+c.slice(f));m=c.slice(f,D),f=D}else if(/[*@#?$!_-]/.test(y))m=y,f+=1;else{var B=c.slice(f);D=B.match(/[^\w\d_]/),D?(m=B.slice(0,D.index),f+=D.index-1):(m=B,f=c.length)}return YL(t,"",m)}for(f=0;f<c.length;f++){var g=c.charAt(f);if(A=A||!l&&(g==="*"||g==="?"),h)p+=g,h=!1;else if(l)g===l?l=!1:l==sB?p+=g:g===n?(f+=1,g=c.charAt(f),g===oB||g===n||g===Rd?p+=g:p+=n+g):g===Rd?p+=d():p+=g;else if(g===oB||g===sB)l=g;else{if(nB.test(g))return{op:c};if(jL.test(g)){a=!0;var E={comment:e.slice(u.index+f+1)};return p.length?[p,E]:[E]}else g===n?h=!0:g===Rd?p+=d():p+=g}}return A?{op:"glob",pattern:p}:p}).reduce(function(u,c){return typeof c>"u"?u:u.concat(c)},[])}uB.exports=function(t,r,n){var i=JL(t,r,n);return typeof r!="function"?i:i.reduce(function(o,s){if(typeof s=="object")return o.concat(s);var a=s.split(RegExp("("+Io+".*?"+Io+")","g"));return a.length===1?o.concat(a[0]):o.concat(a.filter(Boolean).map(function(u){return VL.test(u)?JSON.parse(u.split(Io)[1]):u}))},[])}});var cB=Ct(Td=>{"use strict";Td.quote=rB();Td.parse=lB()});var Vs,Ca,hB,Ba,rA,Zr,dB=or(()=>{Vs=e=>e.name==="up"||e.name==="k"||e.ctrl&&e.name==="p",Ca=e=>e.name==="down"||e.name==="j"||e.ctrl&&e.name==="n",hB=e=>e.name==="space",Ba=e=>e.name==="backspace",rA=e=>"123456789".includes(e.name),Zr=e=>e.name==="enter"||e.name==="return"});var nA,iA,sA,oA,qs,aA=or(()=>{nA=class extends Error{name="AbortPromptError";message="Prompt was aborted";constructor(t){super(),this.cause=t?.cause}},iA=class extends Error{name="CancelPromptError";message="Prompt was canceled"},sA=class extends Error{name="ExitPromptError"},oA=class extends Error{name="HookError"},qs=class extends Error{name="ValidationError"}});function zL(e){return{rl:e,hooks:[],hooksCleanup:[],hooksEffect:[],index:0,handleChange(){}}}function pB(e,t){let r=zL(e);return fB.run(r,()=>{function n(i){r.handleChange=()=>{r.index=0,i()},r.handleChange()}return t(n)})}function bo(){let e=fB.getStore();if(!e)throw new oA("[Inquirer] Hook functions can only be called from within a prompt");return e}function kd(){return bo().rl}function Od(e){let t=(...r)=>{let n=bo(),i=!1,o=n.handleChange;n.handleChange=()=>{i=!0};let s=e(...r);return i&&o(),n.handleChange=o,s};return uA.AsyncResource.bind(t)}function wa(e){let t=bo(),{index:r}=t,n={get(){return t.hooks[r]},set(o){t.hooks[r]=o},initialized:r in t.hooks},i=e(n);return t.index++,i}function gB(){bo().handleChange()}var uA,fB,xo,vo=or(()=>{uA=require("node:async_hooks");aA();fB=new uA.AsyncLocalStorage;xo={queue(e){let t=bo(),{index:r}=t;t.hooksEffect.push(()=>{t.hooksCleanup[r]?.();let n=e(kd());if(n!=null&&typeof n!="function")throw new qs("useEffect return value must be a cleanup function or nothing.");t.hooksCleanup[r]=n})},run(){let e=bo();Od(()=>{e.hooksEffect.forEach(t=>{t()}),e.hooksEffect.length=0})()},clearAll(){let e=bo();e.hooksCleanup.forEach(t=>{t?.()}),e.hooksEffect.length=0,e.hooksCleanup.length=0}}});function Gt(e){return wa(t=>{let r=i=>{t.get()!==i&&(t.set(i),gB())};if(t.initialized)return[t.get(),r];let n=typeof e=="function"?e():e;return t.set(n),[n,r]})}var lA=or(()=>{vo()});function Ni(e,t){wa(r=>{let n=r.get();(!Array.isArray(n)||t.some((o,s)=>!Object.is(o,n[s])))&&xo.queue(e),r.set(t)})}var cA=or(()=>{vo()});var Ys=Ct((R$,EB)=>{var WL=require("node:tty"),ZL=WL?.WriteStream?.prototype?.hasColors?.()??!1,er=(e,t)=>{if(!ZL)return i=>i;let r=`\x1B[${e}m`,n=`\x1B[${t}m`;return i=>{let o=i+"",s=o.indexOf(n);if(s===-1)return r+o+n;let a=r,u=0,l=(t===22?n:"")+r;for(;s!==-1;)a+=o.slice(u,s)+l,u=s+n.length,s=o.indexOf(n,u);return a+=o.slice(u)+n,a}},Xt={};Xt.reset=er(0,0);Xt.bold=er(1,22);Xt.dim=er(2,22);Xt.italic=er(3,23);Xt.underline=er(4,24);Xt.overline=er(53,55);Xt.inverse=er(7,27);Xt.hidden=er(8,28);Xt.strikethrough=er(9,29);Xt.black=er(30,39);Xt.red=er(31,39);Xt.green=er(32,39);Xt.yellow=er(33,39);Xt.blue=er(34,39);Xt.magenta=er(35,39);Xt.cyan=er(36,39);Xt.white=er(37,39);Xt.gray=er(90,39);Xt.bgBlack=er(40,49);Xt.bgRed=er(41,49);Xt.bgGreen=er(42,49);Xt.bgYellow=er(43,49);Xt.bgBlue=er(44,49);Xt.bgMagenta=er(45,49);Xt.bgCyan=er(46,49);Xt.bgWhite=er(47,49);Xt.bgGray=er(100,49);Xt.redBright=er(91,39);Xt.greenBright=er(92,39);Xt.yellowBright=er(93,39);Xt.blueBright=er(94,39);Xt.magentaBright=er(95,39);Xt.cyanBright=er(96,39);Xt.whiteBright=er(97,39);Xt.bgRedBright=er(101,49);Xt.bgGreenBright=er(102,49);Xt.bgYellowBright=er(103,49);Xt.bgBlueBright=er(104,49);Xt.bgMagentaBright=er(105,49);Xt.bgCyanBright=er(106,49);Xt.bgWhiteBright=er(107,49);EB.exports=Xt});function KL(){return Ti.default.platform!=="win32"?Ti.default.env.TERM!=="linux":!!Ti.default.env.WT_SESSION||!!Ti.default.env.TERMINUS_SUBLIME||Ti.default.env.ConEmuTask==="{cmd::Cmder}"||Ti.default.env.TERM_PROGRAM==="Terminus-Sublime"||Ti.default.env.TERM_PROGRAM==="vscode"||Ti.default.env.TERM==="xterm-256color"||Ti.default.env.TERM==="alacritty"||Ti.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var Ti,mB,yB,XL,e8,t8,r8,n8,li,N$,Ia=or(()=>{Ti=Mt(require("node:process"),1);mB={circleQuestionMark:"(?)",questionMarkPrefix:"(?)",square:"\u2588",squareDarkShade:"\u2593",squareMediumShade:"\u2592",squareLightShade:"\u2591",squareTop:"\u2580",squareBottom:"\u2584",squareLeft:"\u258C",squareRight:"\u2590",squareCenter:"\u25A0",bullet:"\u25CF",dot:"\u2024",ellipsis:"\u2026",pointerSmall:"\u203A",triangleUp:"\u25B2",triangleUpSmall:"\u25B4",triangleDown:"\u25BC",triangleDownSmall:"\u25BE",triangleLeftSmall:"\u25C2",triangleRightSmall:"\u25B8",home:"\u2302",heart:"\u2665",musicNote:"\u266A",musicNoteBeamed:"\u266B",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",arrowLeftRight:"\u2194",arrowUpDown:"\u2195",almostEqual:"\u2248",notEqual:"\u2260",lessOrEqual:"\u2264",greaterOrEqual:"\u2265",identical:"\u2261",infinity:"\u221E",subscriptZero:"\u2080",subscriptOne:"\u2081",subscriptTwo:"\u2082",subscriptThree:"\u2083",subscriptFour:"\u2084",subscriptFive:"\u2085",subscriptSix:"\u2086",subscriptSeven:"\u2087",subscriptEight:"\u2088",subscriptNine:"\u2089",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneEighth:"\u215B",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E",line:"\u2500",lineBold:"\u2501",lineDouble:"\u2550",lineDashed0:"\u2504",lineDashed1:"\u2505",lineDashed2:"\u2508",lineDashed3:"\u2509",lineDashed4:"\u254C",lineDashed5:"\u254D",lineDashed6:"\u2574",lineDashed7:"\u2576",lineDashed8:"\u2578",lineDashed9:"\u257A",lineDashed10:"\u257C",lineDashed11:"\u257E",lineDashed12:"\u2212",lineDashed13:"\u2013",lineDashed14:"\u2010",lineDashed15:"\u2043",lineVertical:"\u2502",lineVerticalBold:"\u2503",lineVerticalDouble:"\u2551",lineVerticalDashed0:"\u2506",lineVerticalDashed1:"\u2507",lineVerticalDashed2:"\u250A",lineVerticalDashed3:"\u250B",lineVerticalDashed4:"\u254E",lineVerticalDashed5:"\u254F",lineVerticalDashed6:"\u2575",lineVerticalDashed7:"\u2577",lineVerticalDashed8:"\u2579",lineVerticalDashed9:"\u257B",lineVerticalDashed10:"\u257D",lineVerticalDashed11:"\u257F",lineDownLeft:"\u2510",lineDownLeftArc:"\u256E",lineDownBoldLeftBold:"\u2513",lineDownBoldLeft:"\u2512",lineDownLeftBold:"\u2511",lineDownDoubleLeftDouble:"\u2557",lineDownDoubleLeft:"\u2556",lineDownLeftDouble:"\u2555",lineDownRight:"\u250C",lineDownRightArc:"\u256D",lineDownBoldRightBold:"\u250F",lineDownBoldRight:"\u250E",lineDownRightBold:"\u250D",lineDownDoubleRightDouble:"\u2554",lineDownDoubleRight:"\u2553",lineDownRightDouble:"\u2552",lineUpLeft:"\u2518",lineUpLeftArc:"\u256F",lineUpBoldLeftBold:"\u251B",lineUpBoldLeft:"\u251A",lineUpLeftBold:"\u2519",lineUpDoubleLeftDouble:"\u255D",lineUpDoubleLeft:"\u255C",lineUpLeftDouble:"\u255B",lineUpRight:"\u2514",lineUpRightArc:"\u2570",lineUpBoldRightBold:"\u2517",lineUpBoldRight:"\u2516",lineUpRightBold:"\u2515",lineUpDoubleRightDouble:"\u255A",lineUpDoubleRight:"\u2559",lineUpRightDouble:"\u2558",lineUpDownLeft:"\u2524",lineUpBoldDownBoldLeftBold:"\u252B",lineUpBoldDownBoldLeft:"\u2528",lineUpDownLeftBold:"\u2525",lineUpBoldDownLeftBold:"\u2529",lineUpDownBoldLeftBold:"\u252A",lineUpDownBoldLeft:"\u2527",lineUpBoldDownLeft:"\u2526",lineUpDoubleDownDoubleLeftDouble:"\u2563",lineUpDoubleDownDoubleLeft:"\u2562",lineUpDownLeftDouble:"\u2561",lineUpDownRight:"\u251C",lineUpBoldDownBoldRightBold:"\u2523",lineUpBoldDownBoldRight:"\u2520",lineUpDownRightBold:"\u251D",lineUpBoldDownRightBold:"\u2521",lineUpDownBoldRightBold:"\u2522",lineUpDownBoldRight:"\u251F",lineUpBoldDownRight:"\u251E",lineUpDoubleDownDoubleRightDouble:"\u2560",lineUpDoubleDownDoubleRight:"\u255F",lineUpDownRightDouble:"\u255E",lineDownLeftRight:"\u252C",lineDownBoldLeftBoldRightBold:"\u2533",lineDownLeftBoldRightBold:"\u252F",lineDownBoldLeftRight:"\u2530",lineDownBoldLeftBoldRight:"\u2531",lineDownBoldLeftRightBold:"\u2532",lineDownLeftRightBold:"\u252E",lineDownLeftBoldRight:"\u252D",lineDownDoubleLeftDoubleRightDouble:"\u2566",lineDownDoubleLeftRight:"\u2565",lineDownLeftDoubleRightDouble:"\u2564",lineUpLeftRight:"\u2534",lineUpBoldLeftBoldRightBold:"\u253B",lineUpLeftBoldRightBold:"\u2537",lineUpBoldLeftRight:"\u2538",lineUpBoldLeftBoldRight:"\u2539",lineUpBoldLeftRightBold:"\u253A",lineUpLeftRightBold:"\u2536",lineUpLeftBoldRight:"\u2535",lineUpDoubleLeftDoubleRightDouble:"\u2569",lineUpDoubleLeftRight:"\u2568",lineUpLeftDoubleRightDouble:"\u2567",lineUpDownLeftRight:"\u253C",lineUpBoldDownBoldLeftBoldRightBold:"\u254B",lineUpDownBoldLeftBoldRightBold:"\u2548",lineUpBoldDownLeftBoldRightBold:"\u2547",lineUpBoldDownBoldLeftRightBold:"\u254A",lineUpBoldDownBoldLeftBoldRight:"\u2549",lineUpBoldDownLeftRight:"\u2540",lineUpDownBoldLeftRight:"\u2541",lineUpDownLeftBoldRight:"\u253D",lineUpDownLeftRightBold:"\u253E",lineUpBoldDownBoldLeftRight:"\u2542",lineUpDownLeftBoldRightBold:"\u253F",lineUpBoldDownLeftBoldRight:"\u2543",lineUpBoldDownLeftRightBold:"\u2544",lineUpDownBoldLeftBoldRight:"\u2545",lineUpDownBoldLeftRightBold:"\u2546",lineUpDoubleDownDoubleLeftDoubleRightDouble:"\u256C",lineUpDoubleDownDoubleLeftRight:"\u256B",lineUpDownLeftDoubleRightDouble:"\u256A",lineCross:"\u2573",lineBackslash:"\u2572",lineSlash:"\u2571"},yB={tick:"\u2714",info:"\u2139",warning:"\u26A0",cross:"\u2718",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",pointer:"\u276F",triangleUpOutline:"\u25B3",triangleLeft:"\u25C0",triangleRight:"\u25B6",lozenge:"\u25C6",lozengeOutline:"\u25C7",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",star:"\u2605",play:"\u25B6",nodejs:"\u2B22",oneSeventh:"\u2150",oneNinth:"\u2151",oneTenth:"\u2152"},XL={tick:"\u221A",info:"i",warning:"\u203C",cross:"\xD7",squareSmall:"\u25A1",squareSmallFilled:"\u25A0",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",pointer:">",triangleUpOutline:"\u2206",triangleLeft:"\u25C4",triangleRight:"\u25BA",lozenge:"\u2666",lozengeOutline:"\u25CA",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",star:"\u2736",play:"\u25BA",nodejs:"\u2666",oneSeventh:"1/7",oneNinth:"1/9",oneTenth:"1/10"},e8={...mB,...yB},t8={...mB,...XL},r8=KL(),n8=r8?e8:t8,li=n8,N$=Object.entries(yB)});var ci,DB,CB=or(()=>{ci=Mt(Ys(),1);Ia();DB={prefix:{idle:ci.default.blue("?"),done:ci.default.green(li.tick)},spinner:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"].map(e=>ci.default.yellow(e))},style:{answer:ci.default.cyan,message:ci.default.bold,error:e=>ci.default.red(`> ${e}`),defaultAnswer:e=>ci.default.dim(`(${e})`),help:ci.default.dim,highlight:ci.default.cyan,key:e=>ci.default.cyan(ci.default.bold(`<${e}>`))}}});function BB(e){if(typeof e!="object"||e===null)return!1;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function wB(...e){let t={};for(let r of e)for(let[n,i]of Object.entries(r)){let o=t[n];t[n]=BB(o)&&BB(i)?wB(o,i):i}return t}function Rr(...e){let t=[DB,...e.filter(r=>r!=null)];return wB(...t)}var Ld=or(()=>{CB()});function Vr({status:e="idle",theme:t}){let[r,n]=Gt(!1),[i,o]=Gt(0),{prefix:s,spinner:a}=Rr(t);return Ni(()=>{if(e==="loading"){let c,l=-1,h=setTimeout(Pd.AsyncResource.bind(()=>{n(!0),c=setInterval(Pd.AsyncResource.bind(()=>{l=l+1,o(l%a.frames.length)}),a.interval)}),300);return()=>{clearTimeout(h),clearInterval(c)}}else n(!1)},[e]),r?a.frames[i]:typeof s=="string"?s:s[e==="loading"?"idle":e]}var Pd,IB=or(()=>{Pd=require("node:async_hooks");lA();cA();Ld()});function Kn(e,t){return wa(r=>{let n=r.get();if(!n||n.dependencies.length!==t.length||n.dependencies.some((i,o)=>i!==t[o])){let i=e();return r.set({value:i,dependencies:t}),i}return n.value})}var bB=or(()=>{vo()});function Ai(e){return Gt({current:e})[0]}var AA=or(()=>{lA()});function qr(e){let t=Ai(e);t.current=e,Ni(r=>{let n=!1,i=Od((o,s)=>{n||t.current(s,r)});return r.input.on("keypress",i),()=>{n=!0,r.input.removeListener("keypress",i)}},[])}var xB=or(()=>{AA();cA();vo()});var FB=Ct((Z$,vB)=>{"use strict";vB.exports=s8;function i8(e){let t={defaultWidth:0,output:process.stdout,tty:require("tty")};return e?(Object.keys(t).forEach(function(r){e[r]||(e[r]=t[r])}),e):t}function s8(e){let t=i8(e);if(t.output.getWindowSize)return t.output.getWindowSize()[0]||t.defaultWidth;if(t.tty.getWindowSize)return t.tty.getWindowSize()[1]||t.defaultWidth;if(t.output.columns)return t.output.columns;if(process.env.CLI_WIDTH){let r=parseInt(process.env.CLI_WIDTH,10);if(!isNaN(r)&&r!==0)return r}return t.defaultWidth}});var _B=Ct((K$,SB)=>{"use strict";SB.exports=({onlyFirst:e=!1}={})=>{let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}});var hA=Ct((X$,QB)=>{"use strict";var o8=_B();QB.exports=e=>typeof e=="string"?e.replace(o8(),""):e});var NB=Ct((eH,Ud)=>{"use strict";var RB=e=>Number.isNaN(e)?!1:e>=4352&&(e<=4447||e===9001||e===9002||11904<=e&&e<=12871&&e!==12351||12880<=e&&e<=19903||19968<=e&&e<=42182||43360<=e&&e<=43388||44032<=e&&e<=55203||63744<=e&&e<=64255||65040<=e&&e<=65049||65072<=e&&e<=65131||65281<=e&&e<=65376||65504<=e&&e<=65510||110592<=e&&e<=110593||127488<=e&&e<=127569||131072<=e&&e<=262141);Ud.exports=RB;Ud.exports.default=RB});var kB=Ct((tH,TB)=>{"use strict";TB.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var LB=Ct((rH,Md)=>{"use strict";var a8=hA(),u8=NB(),l8=kB(),OB=e=>{if(typeof e!="string"||e.length===0||(e=a8(e),e.length===0))return 0;e=e.replace(l8()," ");let t=0;for(let r=0;r<e.length;r++){let n=e.codePointAt(r);n<=31||n>=127&&n<=159||n>=768&&n<=879||(n>65535&&r++,t+=u8(n)?2:1)}return t};Md.exports=OB;Md.exports.default=OB});var UB=Ct((nH,PB)=>{"use strict";PB.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var $d=Ct((iH,$B)=>{var Ju=UB(),MB={};for(let e of Object.keys(Ju))MB[Ju[e]]=e;var kt={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};$B.exports=kt;for(let e of Object.keys(kt)){if(!("channels"in kt[e]))throw new Error("missing channels property: "+e);if(!("labels"in kt[e]))throw new Error("missing channel labels property: "+e);if(kt[e].labels.length!==kt[e].channels)throw new Error("channel and label counts mismatch: "+e);let{channels:t,labels:r}=kt[e];delete kt[e].channels,delete kt[e].labels,Object.defineProperty(kt[e],"channels",{value:t}),Object.defineProperty(kt[e],"labels",{value:r})}kt.rgb.hsl=function(e){let t=e[0]/255,r=e[1]/255,n=e[2]/255,i=Math.min(t,r,n),o=Math.max(t,r,n),s=o-i,a,u;o===i?a=0:t===o?a=(r-n)/s:r===o?a=2+(n-t)/s:n===o&&(a=4+(t-r)/s),a=Math.min(a*60,360),a<0&&(a+=360);let c=(i+o)/2;return o===i?u=0:c<=.5?u=s/(o+i):u=s/(2-o-i),[a,u*100,c*100]};kt.rgb.hsv=function(e){let t,r,n,i,o,s=e[0]/255,a=e[1]/255,u=e[2]/255,c=Math.max(s,a,u),l=c-Math.min(s,a,u),h=function(p){return(c-p)/6/l+1/2};return l===0?(i=0,o=0):(o=l/c,t=h(s),r=h(a),n=h(u),s===c?i=n-r:a===c?i=1/3+t-n:u===c&&(i=2/3+r-t),i<0?i+=1:i>1&&(i-=1)),[i*360,o*100,c*100]};kt.rgb.hwb=function(e){let t=e[0],r=e[1],n=e[2],i=kt.rgb.hsl(e)[0],o=1/255*Math.min(t,Math.min(r,n));return n=1-1/255*Math.max(t,Math.max(r,n)),[i,o*100,n*100]};kt.rgb.cmyk=function(e){let t=e[0]/255,r=e[1]/255,n=e[2]/255,i=Math.min(1-t,1-r,1-n),o=(1-t-i)/(1-i)||0,s=(1-r-i)/(1-i)||0,a=(1-n-i)/(1-i)||0;return[o*100,s*100,a*100,i*100]};function c8(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}kt.rgb.keyword=function(e){let t=MB[e];if(t)return t;let r=1/0,n;for(let i of Object.keys(Ju)){let o=Ju[i],s=c8(e,o);s<r&&(r=s,n=i)}return n};kt.keyword.rgb=function(e){return Ju[e]};kt.rgb.xyz=function(e){let t=e[0]/255,r=e[1]/255,n=e[2]/255;t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,n=n>.04045?((n+.055)/1.055)**2.4:n/12.92;let i=t*.4124+r*.3576+n*.1805,o=t*.2126+r*.7152+n*.0722,s=t*.0193+r*.1192+n*.9505;return[i*100,o*100,s*100]};kt.rgb.lab=function(e){let t=kt.rgb.xyz(e),r=t[0],n=t[1],i=t[2];r/=95.047,n/=100,i/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,n=n>.008856?n**(1/3):7.787*n+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;let o=116*n-16,s=500*(r-n),a=200*(n-i);return[o,s,a]};kt.hsl.rgb=function(e){let t=e[0]/360,r=e[1]/100,n=e[2]/100,i,o,s;if(r===0)return s=n*255,[s,s,s];n<.5?i=n*(1+r):i=n+r-n*r;let a=2*n-i,u=[0,0,0];for(let c=0;c<3;c++)o=t+1/3*-(c-1),o<0&&o++,o>1&&o--,6*o<1?s=a+(i-a)*6*o:2*o<1?s=i:3*o<2?s=a+(i-a)*(2/3-o)*6:s=a,u[c]=s*255;return u};kt.hsl.hsv=function(e){let t=e[0],r=e[1]/100,n=e[2]/100,i=r,o=Math.max(n,.01);n*=2,r*=n<=1?n:2-n,i*=o<=1?o:2-o;let s=(n+r)/2,a=n===0?2*i/(o+i):2*r/(n+r);return[t,a*100,s*100]};kt.hsv.rgb=function(e){let t=e[0]/60,r=e[1]/100,n=e[2]/100,i=Math.floor(t)%6,o=t-Math.floor(t),s=255*n*(1-r),a=255*n*(1-r*o),u=255*n*(1-r*(1-o));switch(n*=255,i){case 0:return[n,u,s];case 1:return[a,n,s];case 2:return[s,n,u];case 3:return[s,a,n];case 4:return[u,s,n];case 5:return[n,s,a]}};kt.hsv.hsl=function(e){let t=e[0],r=e[1]/100,n=e[2]/100,i=Math.max(n,.01),o,s;s=(2-r)*n;let a=(2-r)*i;return o=r*i,o/=a<=1?a:2-a,o=o||0,s/=2,[t,o*100,s*100]};kt.hwb.rgb=function(e){let t=e[0]/360,r=e[1]/100,n=e[2]/100,i=r+n,o;i>1&&(r/=i,n/=i);let s=Math.floor(6*t),a=1-n;o=6*t-s,(s&1)!==0&&(o=1-o);let u=r+o*(a-r),c,l,h;switch(s){default:case 6:case 0:c=a,l=u,h=r;break;case 1:c=u,l=a,h=r;break;case 2:c=r,l=a,h=u;break;case 3:c=r,l=u,h=a;break;case 4:c=u,l=r,h=a;break;case 5:c=a,l=r,h=u;break}return[c*255,l*255,h*255]};kt.cmyk.rgb=function(e){let t=e[0]/100,r=e[1]/100,n=e[2]/100,i=e[3]/100,o=1-Math.min(1,t*(1-i)+i),s=1-Math.min(1,r*(1-i)+i),a=1-Math.min(1,n*(1-i)+i);return[o*255,s*255,a*255]};kt.xyz.rgb=function(e){let t=e[0]/100,r=e[1]/100,n=e[2]/100,i,o,s;return i=t*3.2406+r*-1.5372+n*-.4986,o=t*-.9689+r*1.8758+n*.0415,s=t*.0557+r*-.204+n*1.057,i=i>.0031308?1.055*i**(1/2.4)-.055:i*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,i=Math.min(Math.max(0,i),1),o=Math.min(Math.max(0,o),1),s=Math.min(Math.max(0,s),1),[i*255,o*255,s*255]};kt.xyz.lab=function(e){let t=e[0],r=e[1],n=e[2];t/=95.047,r/=100,n/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;let i=116*r-16,o=500*(t-r),s=200*(r-n);return[i,o,s]};kt.lab.xyz=function(e){let t=e[0],r=e[1],n=e[2],i,o,s;o=(t+16)/116,i=r/500+o,s=o-n/200;let a=o**3,u=i**3,c=s**3;return o=a>.008856?a:(o-16/116)/7.787,i=u>.008856?u:(i-16/116)/7.787,s=c>.008856?c:(s-16/116)/7.787,i*=95.047,o*=100,s*=108.883,[i,o,s]};kt.lab.lch=function(e){let t=e[0],r=e[1],n=e[2],i;i=Math.atan2(n,r)*360/2/Math.PI,i<0&&(i+=360);let s=Math.sqrt(r*r+n*n);return[t,s,i]};kt.lch.lab=function(e){let t=e[0],r=e[1],i=e[2]/360*2*Math.PI,o=r*Math.cos(i),s=r*Math.sin(i);return[t,o,s]};kt.rgb.ansi16=function(e,t=null){let[r,n,i]=e,o=t===null?kt.rgb.hsv(e)[2]:t;if(o=Math.round(o/50),o===0)return 30;let s=30+(Math.round(i/255)<<2|Math.round(n/255)<<1|Math.round(r/255));return o===2&&(s+=60),s};kt.hsv.ansi16=function(e){return kt.rgb.ansi16(kt.hsv.rgb(e),e[2])};kt.rgb.ansi256=function(e){let t=e[0],r=e[1],n=e[2];return t===r&&r===n?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5)};kt.ansi16.rgb=function(e){let t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];let r=(~~(e>50)+1)*.5,n=(t&1)*r*255,i=(t>>1&1)*r*255,o=(t>>2&1)*r*255;return[n,i,o]};kt.ansi256.rgb=function(e){if(e>=232){let o=(e-232)*10+8;return[o,o,o]}e-=16;let t,r=Math.floor(e/36)/5*255,n=Math.floor((t=e%36)/6)/5*255,i=t%6/5*255;return[r,n,i]};kt.rgb.hex=function(e){let r=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};kt.hex.rgb=function(e){let t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let r=t[0];t[0].length===3&&(r=r.split("").map(a=>a+a).join(""));let n=parseInt(r,16),i=n>>16&255,o=n>>8&255,s=n&255;return[i,o,s]};kt.rgb.hcg=function(e){let t=e[0]/255,r=e[1]/255,n=e[2]/255,i=Math.max(Math.max(t,r),n),o=Math.min(Math.min(t,r),n),s=i-o,a,u;return s<1?a=o/(1-s):a=0,s<=0?u=0:i===t?u=(r-n)/s%6:i===r?u=2+(n-t)/s:u=4+(t-r)/s,u/=6,u%=1,[u*360,s*100,a*100]};kt.hsl.hcg=function(e){let t=e[1]/100,r=e[2]/100,n=r<.5?2*t*r:2*t*(1-r),i=0;return n<1&&(i=(r-.5*n)/(1-n)),[e[0],n*100,i*100]};kt.hsv.hcg=function(e){let t=e[1]/100,r=e[2]/100,n=t*r,i=0;return n<1&&(i=(r-n)/(1-n)),[e[0],n*100,i*100]};kt.hcg.rgb=function(e){let t=e[0]/360,r=e[1]/100,n=e[2]/100;if(r===0)return[n*255,n*255,n*255];let i=[0,0,0],o=t%1*6,s=o%1,a=1-s,u=0;switch(Math.floor(o)){case 0:i[0]=1,i[1]=s,i[2]=0;break;case 1:i[0]=a,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=s;break;case 3:i[0]=0,i[1]=a,i[2]=1;break;case 4:i[0]=s,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=a}return u=(1-r)*n,[(r*i[0]+u)*255,(r*i[1]+u)*255,(r*i[2]+u)*255]};kt.hcg.hsv=function(e){let t=e[1]/100,r=e[2]/100,n=t+r*(1-t),i=0;return n>0&&(i=t/n),[e[0],i*100,n*100]};kt.hcg.hsl=function(e){let t=e[1]/100,n=e[2]/100*(1-t)+.5*t,i=0;return n>0&&n<.5?i=t/(2*n):n>=.5&&n<1&&(i=t/(2*(1-n))),[e[0],i*100,n*100]};kt.hcg.hwb=function(e){let t=e[1]/100,r=e[2]/100,n=t+r*(1-t);return[e[0],(n-t)*100,(1-n)*100]};kt.hwb.hcg=function(e){let t=e[1]/100,n=1-e[2]/100,i=n-t,o=0;return i<1&&(o=(n-i)/(1-i)),[e[0],i*100,o*100]};kt.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};kt.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};kt.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};kt.gray.hsl=function(e){return[0,0,e[0]]};kt.gray.hsv=kt.gray.hsl;kt.gray.hwb=function(e){return[0,100,e[0]]};kt.gray.cmyk=function(e){return[0,0,0,e[0]]};kt.gray.lab=function(e){return[e[0],0,0]};kt.gray.hex=function(e){let t=Math.round(e[0]/100*255)&255,n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(n.length)+n};kt.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}});var jB=Ct((sH,HB)=>{var dA=$d();function A8(){let e={},t=Object.keys(dA);for(let r=t.length,n=0;n<r;n++)e[t[n]]={distance:-1,parent:null};return e}function h8(e){let t=A8(),r=[e];for(t[e].distance=0;r.length;){let n=r.pop(),i=Object.keys(dA[n]);for(let o=i.length,s=0;s<o;s++){let a=i[s],u=t[a];u.distance===-1&&(u.distance=t[n].distance+1,u.parent=n,r.unshift(a))}}return t}function d8(e,t){return function(r){return t(e(r))}}function f8(e,t){let r=[t[e].parent,e],n=dA[t[e].parent][e],i=t[e].parent;for(;t[i].parent;)r.unshift(t[i].parent),n=d8(dA[t[i].parent][i],n),i=t[i].parent;return n.conversion=r,n}HB.exports=function(e){let t=h8(e),r={},n=Object.keys(t);for(let i=n.length,o=0;o<i;o++){let s=n[o];t[s].parent!==null&&(r[s]=f8(s,t))}return r}});var VB=Ct((oH,GB)=>{var Hd=$d(),p8=jB(),ba={},g8=Object.keys(Hd);function E8(e){let t=function(...r){let n=r[0];return n==null?n:(n.length>1&&(r=n),e(r))};return"conversion"in e&&(t.conversion=e.conversion),t}function m8(e){let t=function(...r){let n=r[0];if(n==null)return n;n.length>1&&(r=n);let i=e(r);if(typeof i=="object")for(let o=i.length,s=0;s<o;s++)i[s]=Math.round(i[s]);return i};return"conversion"in e&&(t.conversion=e.conversion),t}g8.forEach(e=>{ba[e]={},Object.defineProperty(ba[e],"channels",{value:Hd[e].channels}),Object.defineProperty(ba[e],"labels",{value:Hd[e].labels});let t=p8(e);Object.keys(t).forEach(n=>{let i=t[n];ba[e][n]=m8(i),ba[e][n].raw=E8(i)})});GB.exports=ba});var ZB=Ct((aH,WB)=>{"use strict";var qB=(e,t)=>(...r)=>`\x1B[${e(...r)+t}m`,YB=(e,t)=>(...r)=>{let n=e(...r);return`\x1B[${38+t};5;${n}m`},JB=(e,t)=>(...r)=>{let n=e(...r);return`\x1B[${38+t};2;${n[0]};${n[1]};${n[2]}m`},fA=e=>e,zB=(e,t,r)=>[e,t,r],xa=(e,t,r)=>{Object.defineProperty(e,t,{get:()=>{let n=r();return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0}),n},enumerable:!0,configurable:!0})},jd,va=(e,t,r,n)=>{jd===void 0&&(jd=VB());let i=n?10:0,o={};for(let[s,a]of Object.entries(jd)){let u=s==="ansi16"?"ansi":s;s===t?o[u]=e(r,i):typeof a=="object"&&(o[u]=e(a[t],i))}return o};function y8(){let e=new Map,t={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};t.color.gray=t.color.blackBright,t.bgColor.bgGray=t.bgColor.bgBlackBright,t.color.grey=t.color.blackBright,t.bgColor.bgGrey=t.bgColor.bgBlackBright;for(let[r,n]of Object.entries(t)){for(let[i,o]of Object.entries(n))t[i]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},n[i]=t[i],e.set(o[0],o[1]);Object.defineProperty(t,r,{value:n,enumerable:!1})}return Object.defineProperty(t,"codes",{value:e,enumerable:!1}),t.color.close="\x1B[39m",t.bgColor.close="\x1B[49m",xa(t.color,"ansi",()=>va(qB,"ansi16",fA,!1)),xa(t.color,"ansi256",()=>va(YB,"ansi256",fA,!1)),xa(t.color,"ansi16m",()=>va(JB,"rgb",zB,!1)),xa(t.bgColor,"ansi",()=>va(qB,"ansi16",fA,!0)),xa(t.bgColor,"ansi256",()=>va(YB,"ansi256",fA,!0)),xa(t.bgColor,"ansi16m",()=>va(JB,"rgb",zB,!0)),t}Object.defineProperty(WB,"exports",{enumerable:!0,get:y8})});var e1=Ct((uH,XB)=>{"use strict";var zu=LB(),D8=hA(),C8=ZB(),Vd=new Set(["\x1B","\x9B"]),B8=39,KB=e=>`${Vd.values().next().value}[${e}m`,w8=e=>e.split(" ").map(t=>zu(t)),Gd=(e,t,r)=>{let n=[...t],i=!1,o=zu(D8(e[e.length-1]));for(let[s,a]of n.entries()){let u=zu(a);if(o+u<=r?e[e.length-1]+=a:(e.push(a),o=0),Vd.has(a))i=!0;else if(i&&a==="m"){i=!1;continue}i||(o+=u,o===r&&s<n.length-1&&(e.push(""),o=0))}!o&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},I8=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!(zu(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},b8=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",i="",o,s=w8(e),a=[""];for(let[u,c]of e.split(" ").entries()){r.trim!==!1&&(a[a.length-1]=a[a.length-1].trimLeft());let l=zu(a[a.length-1]);if(u!==0&&(l>=t&&(r.wordWrap===!1||r.trim===!1)&&(a.push(""),l=0),(l>0||r.trim===!1)&&(a[a.length-1]+=" ",l++)),r.hard&&s[u]>t){let h=t-l,p=1+Math.floor((s[u]-h-1)/t);Math.floor((s[u]-1)/t)<p&&a.push(""),Gd(a,c,t);continue}if(l+s[u]>t&&l>0&&s[u]>0){if(r.wordWrap===!1&&l<t){Gd(a,c,t);continue}a.push("")}if(l+s[u]>t&&r.wordWrap===!1){Gd(a,c,t);continue}a[a.length-1]+=c}r.trim!==!1&&(a=a.map(I8)),n=a.join(`
874
874
  `);for(let[u,c]of[...n].entries()){if(i+=c,Vd.has(c)){let h=parseFloat(/\d[^m]*/.exec(n.slice(u,u+4)));o=h===B8?null:h}let l=C8.codes.get(Number(o));o&&l&&(n[u+1]===`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hafez/claude-code-router",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "Use Claude Code without an Anthropics account and route it to another LLM provider",
5
5
  "scripts": {
6
6
  "build": "pnpm build:shared && pnpm build:core && pnpm build:server && pnpm build:cli && pnpm build:ui",