tako-cli 0.1.40 → 0.1.43

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.
Files changed (3) hide show
  1. package/dist/index.js +44 -38
  2. package/install.ps1 +75 -81
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- var Zr=Object.create;var{defineProperty:S$,getPrototypeOf:zr,getOwnPropertyNames:Qr}=Object;var Sr=Object.prototype.hasOwnProperty;var O=(r,m,b)=>{b=r!=null?Zr(zr(r)):{};const h=m||!r||!r.__esModule?S$(b,"default",{value:r,enumerable:!0}):b;for(let v of Qr(r))if(!Sr.call(h,v))S$(h,v,{get:()=>r[v],enumerable:!0});return h};var Y$=(r,m)=>()=>(m||r((m={exports:{}}).exports,m),m.exports);var o$=Y$((i1,n$)=>{var e=`${"\x1B"}[`,c$={to(r,m){if(!m)return`${e}${r+1}G`;return`${e}${m+1};${r+1}H`},move(r,m){let b="";if(r<0)b+=`${e}${-r}D`;else if(r>0)b+=`${e}${r}C`;if(m<0)b+=`${e}${-m}A`;else if(m>0)b+=`${e}${m}B`;return b},up:(r=1)=>`${e}${r}A`,down:(r=1)=>`${e}${r}B`,forward:(r=1)=>`${e}${r}C`,backward:(r=1)=>`${e}${r}D`,nextLine:(r=1)=>`${e}E`.repeat(r),prevLine:(r=1)=>`${e}F`.repeat(r),left:`${e}G`,hide:`${e}?25l`,show:`${e}?25h`,save:`${"\x1B"}7`,restore:`${"\x1B"}8`},nr={up:(r=1)=>`${e}S`.repeat(r),down:(r=1)=>`${e}T`.repeat(r)},Er={screen:`${e}2J`,up:(r=1)=>`${e}1J`.repeat(r),down:(r=1)=>`${e}J`.repeat(r),line:`${e}2K`,lineEnd:`${e}K`,lineStart:`${e}1K`,lines(r){let m="";for(let b=0;b<r;b++)m+=this.line+(b<r-1?c$.up():"");if(r)m+=c$.left;return m}};n$.exports={cursor:c$,scroll:nr,erase:Er,beep:"\x07"}});var s$=Y$((M1,g$)=>{var _=process||{},E$=_.argv||[],I=_.env||{},Ur=!(!!I.NO_COLOR||E$.includes("--no-color"))&&(!!I.FORCE_COLOR||E$.includes("--color")||_.platform==="win32"||(_.stdout||{}).isTTY&&I.TERM!=="dumb"||!!I.CI),Tr=(r,m,b=r)=>(h)=>{let v=""+h,x=v.indexOf(m,r.length);return~x?r+Pr(v,m,b,x)+m:r+v+m},Pr=(r,m,b,h)=>{let v="",x=0;do v+=r.substring(x,h)+b,x=h+m.length,h=r.indexOf(m,x);while(~h);return v+r.substring(x)},U$=(r=Ur)=>{let m=r?Tr:()=>String;return{isColorSupported:r,reset:m("\x1B[0m","\x1B[0m"),bold:m("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:m("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:m("\x1B[3m","\x1B[23m"),underline:m("\x1B[4m","\x1B[24m"),inverse:m("\x1B[7m","\x1B[27m"),hidden:m("\x1B[8m","\x1B[28m"),strikethrough:m("\x1B[9m","\x1B[29m"),black:m("\x1B[30m","\x1B[39m"),red:m("\x1B[31m","\x1B[39m"),green:m("\x1B[32m","\x1B[39m"),yellow:m("\x1B[33m","\x1B[39m"),blue:m("\x1B[34m","\x1B[39m"),magenta:m("\x1B[35m","\x1B[39m"),cyan:m("\x1B[36m","\x1B[39m"),white:m("\x1B[37m","\x1B[39m"),gray:m("\x1B[90m","\x1B[39m"),bgBlack:m("\x1B[40m","\x1B[49m"),bgRed:m("\x1B[41m","\x1B[49m"),bgGreen:m("\x1B[42m","\x1B[49m"),bgYellow:m("\x1B[43m","\x1B[49m"),bgBlue:m("\x1B[44m","\x1B[49m"),bgMagenta:m("\x1B[45m","\x1B[49m"),bgCyan:m("\x1B[46m","\x1B[49m"),bgWhite:m("\x1B[47m","\x1B[49m"),blackBright:m("\x1B[90m","\x1B[39m"),redBright:m("\x1B[91m","\x1B[39m"),greenBright:m("\x1B[92m","\x1B[39m"),yellowBright:m("\x1B[93m","\x1B[39m"),blueBright:m("\x1B[94m","\x1B[39m"),magentaBright:m("\x1B[95m","\x1B[39m"),cyanBright:m("\x1B[96m","\x1B[39m"),whiteBright:m("\x1B[97m","\x1B[39m"),bgBlackBright:m("\x1B[100m","\x1B[49m"),bgRedBright:m("\x1B[101m","\x1B[49m"),bgGreenBright:m("\x1B[102m","\x1B[49m"),bgYellowBright:m("\x1B[103m","\x1B[49m"),bgBlueBright:m("\x1B[104m","\x1B[49m"),bgMagentaBright:m("\x1B[105m","\x1B[49m"),bgCyanBright:m("\x1B[106m","\x1B[49m"),bgWhiteBright:m("\x1B[107m","\x1B[49m")}};g$.exports=U$();g$.exports.createColors=U$});import{join as A} from"path";import{homedir as Yr} from"os";import{join as f} from"path";async function X$(){const r=await import("fs/promises");try{await r.mkdir(G,{recursive:!0}),await r.mkdir(m$,{recursive:!0})}catch{}}async function X(){await X$();try{const r=Bun.file(H$);if(await r.exists()){const m=await r.json();return{...J$,...m}}}catch{}return{...J$}}async function Jr(r){await X$(),await Bun.write(H$,JSON.stringify(r,null,2))}async function N(r){const b={...await X(),...r};return await Jr(b),b}async function V$(){return!!(await X()).apiKey}async function j$(){return(await X()).apiKey}async function L$(){return(await X()).apiId}var G=f(Yr(),".tako"),H$=f(G,"config.json"),m$=f(G,"tools"),Z=f(G,"cli"),H=f(G,"bun"),l=f(H,"bin",process.platform==="win32"?"bun.exe":"bun");var Q="https://claude-proxy.shiroha.tech",J$={apiKey:"",apiId:"",installedClients:{}};var b$=function(r,m){if(!r.startsWith(G))throw new Error(`\u5B89\u5168\u68C0\u67E5\u5931\u8D25: ${m} \u8DEF\u5F84 "${r}" \u4E0D\u5728 Tako \u76EE\u5F55\u4E0B`)};function n(r){const m=A(m$,r);return b$(m,"\u5BA2\u6237\u7AEF\u5B89\u88C5\u76EE\u5F55"),m}async function f$(r){const m=n(r.id),b=A(m,"node_modules",r.package,"package.json");try{const h=Bun.file(b);if(!await h.exists())return null;const x=(await h.json()).bin;if(!x)return null;let $=null;if(typeof x==="string")$=x;else if(typeof x==="object"&&x[r.command])$=x[r.command];if(!$)return null;const a=A(m,"node_modules",r.package,$);return b$(a,"\u5BA2\u6237\u7AEF\u5165\u53E3\u6587\u4EF6"),a}catch{return null}}function B$(r){const m=n(r.id),b=A(m,"node_modules",".bin",r.command);return b$(b,"\u5BA2\u6237\u7AEF\u53EF\u6267\u884C\u6587\u4EF6"),b}function R(r){h$.set(r.id,r)}function k$(){return Array.from(h$.values())}function v$(r){return h$.get(r)}var h$=new Map;var Hr={id:"claude-code",name:"Claude Code",package:"@anthropic-ai/claude-code",command:"claude",runtime:"bun",getEnvVars(r){return{ANTHROPIC_BASE_URL:`${Q}/api`,ANTHROPIC_AUTH_TOKEN:r}}};R(Hr);import{homedir as Xr} from"os";import{join as x$} from"path";async function Br(r){const m=await import("fs/promises");try{await m.mkdir(a$,{recursive:!0})}catch{}await Bun.write(Vr,Lr),await Bun.write(jr,fr)}var a$=x$(Xr(),".codex"),Vr=x$(a$,"config.toml"),jr=x$(a$,"auth.json"),Lr=`model_provider = "crs"
3
+ var Om=Object.create;var{getPrototypeOf:cm,defineProperty:T$,getOwnPropertyNames:Nm}=Object;var jm=Object.prototype.hasOwnProperty;var Y=(m,b,r)=>{r=m!=null?Om(cm(m)):{};let v=b||!m||!m.__esModule?T$(r,"default",{value:m,enumerable:!0}):r;for(let x of Nm(m))if(!jm.call(v,x))T$(v,x,{get:()=>m[x],enumerable:!0});return v};var f$=(m,b)=>()=>(b||m((b={exports:{}}).exports,b),b.exports);var a=import.meta.require;var S$=f$((sb,P$)=>{var g$={to(m,b){if(!b)return`\x1B[${m+1}G`;return`\x1B[${b+1};${m+1}H`},move(m,b){let r="";if(m<0)r+=`\x1B[${-m}D`;else if(m>0)r+=`\x1B[${m}C`;if(b<0)r+=`\x1B[${-b}A`;else if(b>0)r+=`\x1B[${b}B`;return r},up:(m=1)=>`\x1B[${m}A`,down:(m=1)=>`\x1B[${m}B`,forward:(m=1)=>`\x1B[${m}C`,backward:(m=1)=>`\x1B[${m}D`,nextLine:(m=1)=>"\x1B[E".repeat(m),prevLine:(m=1)=>"\x1B[F".repeat(m),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},im={up:(m=1)=>"\x1B[S".repeat(m),down:(m=1)=>"\x1B[T".repeat(m)},um={screen:"\x1B[2J",up:(m=1)=>"\x1B[1J".repeat(m),down:(m=1)=>"\x1B[J".repeat(m),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(m){let b="";for(let r=0;r<m;r++)b+=this.line+(r<m-1?g$.up():"");if(m)b+=g$.left;return b}};P$.exports={cursor:g$,scroll:im,erase:um,beep:"\x07"}});var W$=f$((Tb,q$)=>{var e=process||{},I$=e.argv||[],u=e.env||{},em=!(!!u.NO_COLOR||I$.includes("--no-color"))&&(!!u.FORCE_COLOR||I$.includes("--color")||e.platform==="win32"||(e.stdout||{}).isTTY&&u.TERM!=="dumb"||!!u.CI),tm=(m,b,r=m)=>(v)=>{let x=""+v,h=x.indexOf(b,m.length);return~h?m+nm(x,b,r,h)+b:m+x+b},nm=(m,b,r,v)=>{let x="",h=0;do x+=m.substring(h,v)+r,h=v+b.length,v=m.indexOf(b,h);while(~v);return x+m.substring(h)},_$=(m=em)=>{let b=m?tm:()=>String;return{isColorSupported:m,reset:b("\x1B[0m","\x1B[0m"),bold:b("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:b("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:b("\x1B[3m","\x1B[23m"),underline:b("\x1B[4m","\x1B[24m"),inverse:b("\x1B[7m","\x1B[27m"),hidden:b("\x1B[8m","\x1B[28m"),strikethrough:b("\x1B[9m","\x1B[29m"),black:b("\x1B[30m","\x1B[39m"),red:b("\x1B[31m","\x1B[39m"),green:b("\x1B[32m","\x1B[39m"),yellow:b("\x1B[33m","\x1B[39m"),blue:b("\x1B[34m","\x1B[39m"),magenta:b("\x1B[35m","\x1B[39m"),cyan:b("\x1B[36m","\x1B[39m"),white:b("\x1B[37m","\x1B[39m"),gray:b("\x1B[90m","\x1B[39m"),bgBlack:b("\x1B[40m","\x1B[49m"),bgRed:b("\x1B[41m","\x1B[49m"),bgGreen:b("\x1B[42m","\x1B[49m"),bgYellow:b("\x1B[43m","\x1B[49m"),bgBlue:b("\x1B[44m","\x1B[49m"),bgMagenta:b("\x1B[45m","\x1B[49m"),bgCyan:b("\x1B[46m","\x1B[49m"),bgWhite:b("\x1B[47m","\x1B[49m"),blackBright:b("\x1B[90m","\x1B[39m"),redBright:b("\x1B[91m","\x1B[39m"),greenBright:b("\x1B[92m","\x1B[39m"),yellowBright:b("\x1B[93m","\x1B[39m"),blueBright:b("\x1B[94m","\x1B[39m"),magentaBright:b("\x1B[95m","\x1B[39m"),cyanBright:b("\x1B[96m","\x1B[39m"),whiteBright:b("\x1B[97m","\x1B[39m"),bgBlackBright:b("\x1B[100m","\x1B[49m"),bgRedBright:b("\x1B[101m","\x1B[49m"),bgGreenBright:b("\x1B[102m","\x1B[49m"),bgYellowBright:b("\x1B[103m","\x1B[49m"),bgBlueBright:b("\x1B[104m","\x1B[49m"),bgMagentaBright:b("\x1B[105m","\x1B[49m"),bgCyanBright:b("\x1B[106m","\x1B[49m"),bgWhiteBright:b("\x1B[107m","\x1B[49m")}};q$.exports=_$();q$.exports.createColors=_$});import{join as o}from"path";import{homedir as Am}from"os";import{join as N}from"path";var B=N(Am(),".tako"),O$=N(B,"config.json"),b$=N(B,"tools"),L=N(B,"cli"),f=N(B,"bun"),H=N(f,"bin",process.platform==="win32"?"bun.exe":"bun");var E="https://claude-proxy.shiroha.tech",K$={apiKey:"",apiId:"",installedClients:{}};async function c$(){let m=await import("fs/promises");try{await m.mkdir(B,{recursive:!0}),await m.mkdir(b$,{recursive:!0})}catch{}}async function V(){await c$();try{let m=Bun.file(O$);if(await m.exists()){let b=await m.json();return{...K$,...b}}}catch{}return{...K$}}async function r$(m){await c$(),await Bun.write(O$,JSON.stringify(m,null,2))}async function C(m){let r={...await V(),...m};return await r$(r),r}async function N$(){return!!(await V()).apiKey}async function j$(){return(await V()).apiKey}async function A$(){return(await V()).apiId}function v$(m,b){if(!m.startsWith(B))throw Error(`\u5B89\u5168\u68C0\u67E5\u5931\u8D25: ${b} \u8DEF\u5F84 "${m}" \u4E0D\u5728 Tako \u76EE\u5F55\u4E0B`)}function l(m){let b=o(b$,m);return v$(b,"\u5BA2\u6237\u7AEF\u5B89\u88C5\u76EE\u5F55"),b}async function R$(m){let b=l(m.id),r=o(b,"node_modules",m.package,"package.json");try{let v=Bun.file(r);if(!await v.exists())return null;let h=(await v.json()).bin;if(!h)return null;let $=null;if(typeof h==="string")$=h;else if(typeof h==="object"&&h[m.command])$=h[m.command];if(!$)return null;let w=o(b,"node_modules",m.package,$);return v$(w,"\u5BA2\u6237\u7AEF\u5165\u53E3\u6587\u4EF6"),w}catch{return null}}function l$(m){let b=l(m.id),r=o(b,"node_modules",".bin",m.command);return v$(r,"\u5BA2\u6237\u7AEF\u53EF\u6267\u884C\u6587\u4EF6"),r}var x$=new Map;function i(m){x$.set(m.id,m)}function p$(){return Array.from(x$.values())}function h$(m){return x$.get(m)}var Rm={id:"claude-code",name:"Claude Code",package:"@anthropic-ai/claude-code",command:"claude",runtime:"bun",continueArg:"--continue",getEnvVars(m){return{ANTHROPIC_BASE_URL:`${E}/api`,ANTHROPIC_AUTH_TOKEN:m}}};i(Rm);import{homedir as lm}from"os";import{join as w$}from"path";var y$=w$(lm(),".codex"),pm=w$(y$,"config.toml"),Pm=w$(y$,"auth.json"),Im=`model_provider = "crs"
4
4
  model = "gpt-5-codex"
5
5
  model_reasoning_effort = "high"
6
6
  disable_response_storage = true
@@ -8,50 +8,56 @@ preferred_auth_method = "apikey"
8
8
 
9
9
  [model_providers.crs]
10
10
  name = "crs"
11
- base_url = "${Q}/openai"
11
+ base_url = "${E}/openai"
12
12
  wire_api = "responses"
13
13
  requires_openai_auth = true
14
14
  env_key = "CRS_OAI_KEY"
15
- `,fr=`{
15
+ `,_m=`{
16
16
  "OPENAI_API_KEY": null
17
17
  }
18
- `,kr={id:"codex",name:"Codex",package:"@openai/codex",command:"codex",runtime:"bun",getEnvVars(r){return{CRS_OAI_KEY:r}},setupConfigFiles:Br};R(kr);var p=O(o$(),1),u=O(s$(),1);import{stdin as C$,stdout as u$} from"process";import*as Y from"readline";import T$ from"readline";import{WriteStream as Kr} from"tty";var Or=function({onlyFirst:r=!1}={}){const m=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(m,r?void 0:"g")},F$=function(r){if(typeof r!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof r}\``);return r.replace(Nr,"")},D$=function(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r},E=function(r,m={}){if(typeof r!="string"||r.length===0||(m={ambiguousIsNarrow:!0,...m},r=F$(r),r.length===0))return 0;r=r.replace(_r()," ");const b=m.ambiguousIsNarrow?1:2;let h=0;for(let v of r){const x=v.codePointAt(0);if(x<=31||x>=127&&x<=159||x>=768&&x<=879)continue;switch(Rr.eastAsianWidth(v)){case"F":case"W":h+=2;break;case"A":h+=b;break;default:h+=1}}return h},Fr=function(){const r=new Map;for(let[m,b]of Object.entries(y)){for(let[h,v]of Object.entries(b))y[h]={open:`\x1B[${v[0]}m`,close:`\x1B[${v[1]}m`},b[h]=y[h],r.set(v[0],v[1]);Object.defineProperty(y,m,{value:b,enumerable:!1})}return Object.defineProperty(y,"codes",{value:r,enumerable:!1}),y.color.close="\x1B[39m",y.bgColor.close="\x1B[49m",y.color.ansi=P$(),y.color.ansi256=K$(),y.color.ansi16m=O$(),y.bgColor.ansi=P$(d$),y.bgColor.ansi256=K$(d$),y.bgColor.ansi16m=O$(d$),Object.defineProperties(y,{rgbToAnsi256:{value:(m,b,h)=>m===b&&b===h?m<8?16:m>248?231:Math.round((m-8)/247*24)+232:16+36*Math.round(m/255*5)+6*Math.round(b/255*5)+Math.round(h/255*5),enumerable:!1},hexToRgb:{value:(m)=>{const b=/[a-f\d]{6}|[a-f\d]{3}/i.exec(m.toString(16));if(!b)return[0,0,0];let[h]=b;h.length===3&&(h=[...h].map((x)=>x+x).join(""));const v=Number.parseInt(h,16);return[v>>16&255,v>>8&255,v&255]},enumerable:!1},hexToAnsi256:{value:(m)=>y.rgbToAnsi256(...y.hexToRgb(m)),enumerable:!1},ansi256ToAnsi:{value:(m)=>{if(m<8)return 30+m;if(m<16)return 90+(m-8);let b,h,v;if(m>=232)b=((m-232)*10+8)/255,h=b,v=b;else{m-=16;const a=m%36;b=Math.floor(m/36)/5,h=Math.floor(a/6)/5,v=a%6/5}const x=Math.max(b,h,v)*2;if(x===0)return 30;let $=30+(Math.round(v)<<2|Math.round(h)<<1|Math.round(b));return x===2&&($+=60),$},enumerable:!1},rgbToAnsi:{value:(m,b,h)=>y.ansi256ToAnsi(y.rgbToAnsi256(m,b,h)),enumerable:!1},hexToAnsi:{value:(m)=>y.ansi256ToAnsi(y.hexToAnsi256(m)),enumerable:!1}}),y},R$=function(r,m,b){return String(r).normalize().replace(/\r\n/g,`
18
+ `;async function Cm(m){let b=await import("fs/promises");try{await b.mkdir(y$,{recursive:!0})}catch{}await Bun.write(pm,Im),await Bun.write(Pm,_m)}var om={id:"codex",name:"Codex",package:"@openai/codex",command:"codex",runtime:"bun",continueArg:"--continue",getEnvVars(m){return{CRS_OAI_KEY:m}},setupConfigFiles:Cm};i(om);var J=Y(S$(),1),n=Y(W$(),1);import{stdin as $m,stdout as mm}from"process";import*as s from"readline";import C$ from"readline";import{WriteStream as Fm}from"tty";function Dm({onlyFirst:m=!1}={}){let b=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(b,m?void 0:"g")}var $1=Dm();function bm(m){if(typeof m!="string")throw TypeError(`Expected a \`string\`, got \`${typeof m}\``);return m.replace($1,"")}function rm(m){return m&&m.__esModule&&Object.prototype.hasOwnProperty.call(m,"default")?m.default:m}var vm={exports:{}};(function(m){var b={};m.exports=b,b.eastAsianWidth=function(v){var x=v.charCodeAt(0),h=v.length==2?v.charCodeAt(1):0,$=x;return 55296<=x&&x<=56319&&56320<=h&&h<=57343&&(x&=1023,h&=1023,$=x<<10|h,$+=65536),$==12288||65281<=$&&$<=65376||65504<=$&&$<=65510?"F":$==8361||65377<=$&&$<=65470||65474<=$&&$<=65479||65482<=$&&$<=65487||65490<=$&&$<=65495||65498<=$&&$<=65500||65512<=$&&$<=65518?"H":4352<=$&&$<=4447||4515<=$&&$<=4519||4602<=$&&$<=4607||9001<=$&&$<=9002||11904<=$&&$<=11929||11931<=$&&$<=12019||12032<=$&&$<=12245||12272<=$&&$<=12283||12289<=$&&$<=12350||12353<=$&&$<=12438||12441<=$&&$<=12543||12549<=$&&$<=12589||12593<=$&&$<=12686||12688<=$&&$<=12730||12736<=$&&$<=12771||12784<=$&&$<=12830||12832<=$&&$<=12871||12880<=$&&$<=13054||13056<=$&&$<=19903||19968<=$&&$<=42124||42128<=$&&$<=42182||43360<=$&&$<=43388||44032<=$&&$<=55203||55216<=$&&$<=55238||55243<=$&&$<=55291||63744<=$&&$<=64255||65040<=$&&$<=65049||65072<=$&&$<=65106||65108<=$&&$<=65126||65128<=$&&$<=65131||110592<=$&&$<=110593||127488<=$&&$<=127490||127504<=$&&$<=127546||127552<=$&&$<=127560||127568<=$&&$<=127569||131072<=$&&$<=194367||177984<=$&&$<=196605||196608<=$&&$<=262141?"W":32<=$&&$<=126||162<=$&&$<=163||165<=$&&$<=166||$==172||$==175||10214<=$&&$<=10221||10629<=$&&$<=10630?"Na":$==161||$==164||167<=$&&$<=168||$==170||173<=$&&$<=174||176<=$&&$<=180||182<=$&&$<=186||188<=$&&$<=191||$==198||$==208||215<=$&&$<=216||222<=$&&$<=225||$==230||232<=$&&$<=234||236<=$&&$<=237||$==240||242<=$&&$<=243||247<=$&&$<=250||$==252||$==254||$==257||$==273||$==275||$==283||294<=$&&$<=295||$==299||305<=$&&$<=307||$==312||319<=$&&$<=322||$==324||328<=$&&$<=331||$==333||338<=$&&$<=339||358<=$&&$<=359||$==363||$==462||$==464||$==466||$==468||$==470||$==472||$==474||$==476||$==593||$==609||$==708||$==711||713<=$&&$<=715||$==717||$==720||728<=$&&$<=731||$==733||$==735||768<=$&&$<=879||913<=$&&$<=929||931<=$&&$<=937||945<=$&&$<=961||963<=$&&$<=969||$==1025||1040<=$&&$<=1103||$==1105||$==8208||8211<=$&&$<=8214||8216<=$&&$<=8217||8220<=$&&$<=8221||8224<=$&&$<=8226||8228<=$&&$<=8231||$==8240||8242<=$&&$<=8243||$==8245||$==8251||$==8254||$==8308||$==8319||8321<=$&&$<=8324||$==8364||$==8451||$==8453||$==8457||$==8467||$==8470||8481<=$&&$<=8482||$==8486||$==8491||8531<=$&&$<=8532||8539<=$&&$<=8542||8544<=$&&$<=8555||8560<=$&&$<=8569||$==8585||8592<=$&&$<=8601||8632<=$&&$<=8633||$==8658||$==8660||$==8679||$==8704||8706<=$&&$<=8707||8711<=$&&$<=8712||$==8715||$==8719||$==8721||$==8725||$==8730||8733<=$&&$<=8736||$==8739||$==8741||8743<=$&&$<=8748||$==8750||8756<=$&&$<=8759||8764<=$&&$<=8765||$==8776||$==8780||$==8786||8800<=$&&$<=8801||8804<=$&&$<=8807||8810<=$&&$<=8811||8814<=$&&$<=8815||8834<=$&&$<=8835||8838<=$&&$<=8839||$==8853||$==8857||$==8869||$==8895||$==8978||9312<=$&&$<=9449||9451<=$&&$<=9547||9552<=$&&$<=9587||9600<=$&&$<=9615||9618<=$&&$<=9621||9632<=$&&$<=9633||9635<=$&&$<=9641||9650<=$&&$<=9651||9654<=$&&$<=9655||9660<=$&&$<=9661||9664<=$&&$<=9665||9670<=$&&$<=9672||$==9675||9678<=$&&$<=9681||9698<=$&&$<=9701||$==9711||9733<=$&&$<=9734||$==9737||9742<=$&&$<=9743||9748<=$&&$<=9749||$==9756||$==9758||$==9792||$==9794||9824<=$&&$<=9825||9827<=$&&$<=9829||9831<=$&&$<=9834||9836<=$&&$<=9837||$==9839||9886<=$&&$<=9887||9918<=$&&$<=9919||9924<=$&&$<=9933||9935<=$&&$<=9953||$==9955||9960<=$&&$<=9983||$==10045||$==10071||10102<=$&&$<=10111||11093<=$&&$<=11097||12872<=$&&$<=12879||57344<=$&&$<=63743||65024<=$&&$<=65039||$==65533||127232<=$&&$<=127242||127248<=$&&$<=127277||127280<=$&&$<=127337||127344<=$&&$<=127386||917760<=$&&$<=917999||983040<=$&&$<=1048573||1048576<=$&&$<=1114109?"A":"N"},b.characterLength=function(v){var x=this.eastAsianWidth(v);return x=="F"||x=="W"||x=="A"?2:1};function r(v){return v.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}b.length=function(v){for(var x=r(v),h=0,$=0;$<x.length;$++)h=h+this.characterLength(x[$]);return h},b.slice=function(v,x,h){textLen=b.length(v),x=x||0,h=h||1,x<0&&(x=textLen+x),h<0&&(h=textLen+h);for(var $="",w=0,S=r(v),g=0;g<S.length;g++){var W=S[g],q=b.length(W);if(w>=x-(q==2?1:0))if(w+q<=h)$+=W;else break;w+=q}return $}})(vm);var m1=vm.exports,b1=rm(m1),r1=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\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])|\uD83C[\uDF3E\uDF73\uDF7C\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\uDF7C\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\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\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\uDF7C\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\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\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\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\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-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*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\u26A7\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-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\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[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},v1=rm(r1);function p(m,b={}){if(typeof m!="string"||m.length===0||(b={ambiguousIsNarrow:!0,...b},m=bm(m),m.length===0))return 0;m=m.replace(v1()," ");let r=b.ambiguousIsNarrow?1:2,v=0;for(let x of m){let h=x.codePointAt(0);if(h<=31||h>=127&&h<=159||h>=768&&h<=879)continue;switch(b1.eastAsianWidth(x)){case"F":case"W":v+=2;break;case"A":v+=r;break;default:v+=1}}return v}var G$=10,o$=(m=0)=>(b)=>`\x1B[${b+m}m`,i$=(m=0)=>(b)=>`\x1B[${38+m};5;${b}m`,u$=(m=0)=>(b,r,v)=>`\x1B[${38+m};2;${b};${r};${v}m`,M={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],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],gray:[90,39],grey:[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],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(M.modifier);var x1=Object.keys(M.color),h1=Object.keys(M.bgColor);[...x1,...h1];function w1(){let m=new Map;for(let[b,r]of Object.entries(M)){for(let[v,x]of Object.entries(r))M[v]={open:`\x1B[${x[0]}m`,close:`\x1B[${x[1]}m`},r[v]=M[v],m.set(x[0],x[1]);Object.defineProperty(M,b,{value:r,enumerable:!1})}return Object.defineProperty(M,"codes",{value:m,enumerable:!1}),M.color.close="\x1B[39m",M.bgColor.close="\x1B[49m",M.color.ansi=o$(),M.color.ansi256=i$(),M.color.ansi16m=u$(),M.bgColor.ansi=o$(G$),M.bgColor.ansi256=i$(G$),M.bgColor.ansi16m=u$(G$),Object.defineProperties(M,{rgbToAnsi256:{value:(b,r,v)=>b===r&&r===v?b<8?16:b>248?231:Math.round((b-8)/247*24)+232:16+36*Math.round(b/255*5)+6*Math.round(r/255*5)+Math.round(v/255*5),enumerable:!1},hexToRgb:{value:(b)=>{let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(b.toString(16));if(!r)return[0,0,0];let[v]=r;v.length===3&&(v=[...v].map((h)=>h+h).join(""));let x=Number.parseInt(v,16);return[x>>16&255,x>>8&255,x&255]},enumerable:!1},hexToAnsi256:{value:(b)=>M.rgbToAnsi256(...M.hexToRgb(b)),enumerable:!1},ansi256ToAnsi:{value:(b)=>{if(b<8)return 30+b;if(b<16)return 90+(b-8);let r,v,x;if(b>=232)r=((b-232)*10+8)/255,v=r,x=r;else{b-=16;let w=b%36;r=Math.floor(b/36)/5,v=Math.floor(w/6)/5,x=w%6/5}let h=Math.max(r,v,x)*2;if(h===0)return 30;let $=30+(Math.round(x)<<2|Math.round(v)<<1|Math.round(r));return h===2&&($+=60),$},enumerable:!1},rgbToAnsi:{value:(b,r,v)=>M.ansi256ToAnsi(M.rgbToAnsi256(b,r,v)),enumerable:!1},hexToAnsi:{value:(b)=>M.ansi256ToAnsi(M.hexToAnsi256(b)),enumerable:!1}}),M}var y1=w1(),F=new Set(["\x1B","\x9B"]),g1=39,Z$="\x07",xm="[",S1="]",hm="m",z$=`${S1}8;;`,e$=(m)=>`${F.values().next().value}${xm}${m}${hm}`,t$=(m)=>`${F.values().next().value}${z$}${m}${Z$}`,q1=(m)=>m.split(" ").map((b)=>p(b)),M$=(m,b,r)=>{let v=[...b],x=!1,h=!1,$=p(bm(m[m.length-1]));for(let[w,S]of v.entries()){let g=p(S);if($+g<=r?m[m.length-1]+=S:(m.push(S),$=0),F.has(S)&&(x=!0,h=v.slice(w+1).join("").startsWith(z$)),x){h?S===Z$&&(x=!1,h=!1):S===hm&&(x=!1);continue}$+=g,$===r&&w<v.length-1&&(m.push(""),$=0)}!$&&m[m.length-1].length>0&&m.length>1&&(m[m.length-2]+=m.pop())},W1=(m)=>{let b=m.split(" "),r=b.length;for(;r>0&&!(p(b[r-1])>0);)r--;return r===b.length?m:b.slice(0,r).join(" ")+b.slice(r).join("")},G1=(m,b,r={})=>{if(r.trim!==!1&&m.trim()==="")return"";let v="",x,h,$=q1(m),w=[""];for(let[g,W]of m.split(" ").entries()){r.trim!==!1&&(w[w.length-1]=w[w.length-1].trimStart());let q=p(w[w.length-1]);if(g!==0&&(q>=b&&(r.wordWrap===!1||r.trim===!1)&&(w.push(""),q=0),(q>0||r.trim===!1)&&(w[w.length-1]+=" ",q++)),r.hard&&$[g]>b){let z=b-q,T=1+Math.floor(($[g]-z-1)/b);Math.floor(($[g]-1)/b)<T&&w.push(""),M$(w,W,b);continue}if(q+$[g]>b&&q>0&&$[g]>0){if(r.wordWrap===!1&&q<b){M$(w,W,b);continue}w.push("")}if(q+$[g]>b&&r.wordWrap===!1){M$(w,W,b);continue}w[w.length-1]+=W}r.trim!==!1&&(w=w.map((g)=>W1(g)));let S=[...w.join(`
19
+ `)];for(let[g,W]of S.entries()){if(v+=W,F.has(W)){let{groups:z}=new RegExp(`(?:\\${xm}(?<code>\\d+)m|\\${z$}(?<uri>.*)${Z$})`).exec(S.slice(g).join(""))||{groups:{}};if(z.code!==void 0){let T=Number.parseFloat(z.code);x=T===g1?void 0:T}else z.uri!==void 0&&(h=z.uri.length===0?void 0:z.uri)}let q=y1.codes.get(Number(x));S[g+1]===`
20
+ `?(h&&(v+=t$("")),x&&q&&(v+=e$(q))):W===`
21
+ `&&(x&&q&&(v+=e$(x)),h&&(v+=t$(h)))}return v};function n$(m,b,r){return String(m).normalize().replace(/\r\n/g,`
19
22
  `).split(`
20
- `).map((h)=>hm(h,m,b)).join(`
21
- `)},am=function(r,m){if(r===m)return;const b=r.split(`
22
- `),h=m.split(`
23
- `),v=[];for(let x=0;x<Math.max(b.length,h.length);x++)b[x]!==h[x]&&v.push(x);return v},U=function(r){return r===br},C=function(r,m){r.isTTY&&r.setRawMode(m)},vr=function({input:r=C$,output:m=u$,overwrite:b=!0,hideCursor:h=!0}={}){const v=Y.createInterface({input:r,output:m,prompt:"",tabSize:1});Y.emitKeypressEvents(r,v),r.isTTY&&r.setRawMode(!0);const x=($,{name:a})=>{if(String($)===""){h&&m.write(p.cursor.show),process.exit(0);return}if(!b)return;Y.moveCursor(m,a==="return"?0:-1,a==="return"?-1:0,()=>{Y.clearLine(m,1,()=>{r.once("keypress",x)})})};return h&&m.write(p.cursor.hide),r.once("keypress",x),()=>{r.off("keypress",x),h&&m.write(p.cursor.show),r.isTTY&&!ym&&r.setRawMode(!1),v.terminal=!1,v.close()}},Nr=Or(),$r={exports:{}};(function(r){var m={};r.exports=m,m.eastAsianWidth=function(h){var v=h.charCodeAt(0),x=h.length==2?h.charCodeAt(1):0,$=v;return 55296<=v&&v<=56319&&56320<=x&&x<=57343&&(v&=1023,x&=1023,$=v<<10|x,$+=65536),$==12288||65281<=$&&$<=65376||65504<=$&&$<=65510?"F":$==8361||65377<=$&&$<=65470||65474<=$&&$<=65479||65482<=$&&$<=65487||65490<=$&&$<=65495||65498<=$&&$<=65500||65512<=$&&$<=65518?"H":4352<=$&&$<=4447||4515<=$&&$<=4519||4602<=$&&$<=4607||9001<=$&&$<=9002||11904<=$&&$<=11929||11931<=$&&$<=12019||12032<=$&&$<=12245||12272<=$&&$<=12283||12289<=$&&$<=12350||12353<=$&&$<=12438||12441<=$&&$<=12543||12549<=$&&$<=12589||12593<=$&&$<=12686||12688<=$&&$<=12730||12736<=$&&$<=12771||12784<=$&&$<=12830||12832<=$&&$<=12871||12880<=$&&$<=13054||13056<=$&&$<=19903||19968<=$&&$<=42124||42128<=$&&$<=42182||43360<=$&&$<=43388||44032<=$&&$<=55203||55216<=$&&$<=55238||55243<=$&&$<=55291||63744<=$&&$<=64255||65040<=$&&$<=65049||65072<=$&&$<=65106||65108<=$&&$<=65126||65128<=$&&$<=65131||110592<=$&&$<=110593||127488<=$&&$<=127490||127504<=$&&$<=127546||127552<=$&&$<=127560||127568<=$&&$<=127569||131072<=$&&$<=194367||177984<=$&&$<=196605||196608<=$&&$<=262141?"W":32<=$&&$<=126||162<=$&&$<=163||165<=$&&$<=166||$==172||$==175||10214<=$&&$<=10221||10629<=$&&$<=10630?"Na":$==161||$==164||167<=$&&$<=168||$==170||173<=$&&$<=174||176<=$&&$<=180||182<=$&&$<=186||188<=$&&$<=191||$==198||$==208||215<=$&&$<=216||222<=$&&$<=225||$==230||232<=$&&$<=234||236<=$&&$<=237||$==240||242<=$&&$<=243||247<=$&&$<=250||$==252||$==254||$==257||$==273||$==275||$==283||294<=$&&$<=295||$==299||305<=$&&$<=307||$==312||319<=$&&$<=322||$==324||328<=$&&$<=331||$==333||338<=$&&$<=339||358<=$&&$<=359||$==363||$==462||$==464||$==466||$==468||$==470||$==472||$==474||$==476||$==593||$==609||$==708||$==711||713<=$&&$<=715||$==717||$==720||728<=$&&$<=731||$==733||$==735||768<=$&&$<=879||913<=$&&$<=929||931<=$&&$<=937||945<=$&&$<=961||963<=$&&$<=969||$==1025||1040<=$&&$<=1103||$==1105||$==8208||8211<=$&&$<=8214||8216<=$&&$<=8217||8220<=$&&$<=8221||8224<=$&&$<=8226||8228<=$&&$<=8231||$==8240||8242<=$&&$<=8243||$==8245||$==8251||$==8254||$==8308||$==8319||8321<=$&&$<=8324||$==8364||$==8451||$==8453||$==8457||$==8467||$==8470||8481<=$&&$<=8482||$==8486||$==8491||8531<=$&&$<=8532||8539<=$&&$<=8542||8544<=$&&$<=8555||8560<=$&&$<=8569||$==8585||8592<=$&&$<=8601||8632<=$&&$<=8633||$==8658||$==8660||$==8679||$==8704||8706<=$&&$<=8707||8711<=$&&$<=8712||$==8715||$==8719||$==8721||$==8725||$==8730||8733<=$&&$<=8736||$==8739||$==8741||8743<=$&&$<=8748||$==8750||8756<=$&&$<=8759||8764<=$&&$<=8765||$==8776||$==8780||$==8786||8800<=$&&$<=8801||8804<=$&&$<=8807||8810<=$&&$<=8811||8814<=$&&$<=8815||8834<=$&&$<=8835||8838<=$&&$<=8839||$==8853||$==8857||$==8869||$==8895||$==8978||9312<=$&&$<=9449||9451<=$&&$<=9547||9552<=$&&$<=9587||9600<=$&&$<=9615||9618<=$&&$<=9621||9632<=$&&$<=9633||9635<=$&&$<=9641||9650<=$&&$<=9651||9654<=$&&$<=9655||9660<=$&&$<=9661||9664<=$&&$<=9665||9670<=$&&$<=9672||$==9675||9678<=$&&$<=9681||9698<=$&&$<=9701||$==9711||9733<=$&&$<=9734||$==9737||9742<=$&&$<=9743||9748<=$&&$<=9749||$==9756||$==9758||$==9792||$==9794||9824<=$&&$<=9825||9827<=$&&$<=9829||9831<=$&&$<=9834||9836<=$&&$<=9837||$==9839||9886<=$&&$<=9887||9918<=$&&$<=9919||9924<=$&&$<=9933||9935<=$&&$<=9953||$==9955||9960<=$&&$<=9983||$==10045||$==10071||10102<=$&&$<=10111||11093<=$&&$<=11097||12872<=$&&$<=12879||57344<=$&&$<=63743||65024<=$&&$<=65039||$==65533||127232<=$&&$<=127242||127248<=$&&$<=127277||127280<=$&&$<=127337||127344<=$&&$<=127386||917760<=$&&$<=917999||983040<=$&&$<=1048573||1048576<=$&&$<=1114109?"A":"N"},m.characterLength=function(h){var v=this.eastAsianWidth(h);return v=="F"||v=="W"||v=="A"?2:1};function b(h){return h.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}m.length=function(h){for(var v=b(h),x=0,$=0;$<v.length;$++)x=x+this.characterLength(v[$]);return x},m.slice=function(h,v,x){textLen=m.length(h),v=v||0,x=x||1,v<0&&(v=textLen+v),x<0&&(x=textLen+x);for(var $="",a=0,s=b(h),o=0;o<s.length;o++){var w=s[o],g=m.length(w);if(a>=v-(g==2?1:0))if(a+g<=x)$+=w;else break;a+=g}return $}})($r);var Ar=$r.exports,Rr=D$(Ar),Ir=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\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])|\uD83C[\uDF3E\uDF73\uDF7C\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\uDF7C\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\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\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\uDF7C\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\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\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\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\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-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*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\u26A7\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-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\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[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},_r=D$(Ir),d$=10,P$=(r=0)=>(m)=>`\x1B[${m+r}m`,K$=(r=0)=>(m)=>`\x1B[${38+r};5;${m}m`,O$=(r=0)=>(m,b,h)=>`\x1B[${38+r};2;${m};${b};${h}m`,y={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],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],gray:[90,39],grey:[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],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(y.modifier);var Cr=Object.keys(y.color),ur=Object.keys(y.bgColor);[...Cr];var Dr=Fr(),F=new Set(["\x1B","\x9B"]),$m=39,y$="\x07",rr="[",rm="]",mr="m",e$=`${rm}8;;`,N$=(r)=>`${F.values().next().value}${rr}${r}${mr}`,A$=(r)=>`${F.values().next().value}${e$}${r}${y$}`,mm=(r)=>r.split(" ").map((m)=>E(m)),w$=(r,m,b)=>{const h=[...m];let v=!1,x=!1,$=E(F$(r[r.length-1]));for(let[a,s]of h.entries()){const o=E(s);if($+o<=b?r[r.length-1]+=s:(r.push(s),$=0),F.has(s)&&(v=!0,x=h.slice(a+1).join("").startsWith(e$)),v){x?s===y$&&(v=!1,x=!1):s===mr&&(v=!1);continue}$+=o,$===b&&a<h.length-1&&(r.push(""),$=0)}!$&&r[r.length-1].length>0&&r.length>1&&(r[r.length-2]+=r.pop())},bm=(r)=>{const m=r.split(" ");let b=m.length;for(;b>0&&!(E(m[b-1])>0);)b--;return b===m.length?r:m.slice(0,b).join(" ")+m.slice(b).join("")},hm=(r,m,b={})=>{if(b.trim!==!1&&r.trim()==="")return"";let h="",v,x;const $=mm(r);let a=[""];for(let[o,w]of r.split(" ").entries()){b.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let g=E(a[a.length-1]);if(o!==0&&(g>=m&&(b.wordWrap===!1||b.trim===!1)&&(a.push(""),g=0),(g>0||b.trim===!1)&&(a[a.length-1]+=" ",g++)),b.hard&&$[o]>m){const i=m-g,J=1+Math.floor(($[o]-i-1)/m);Math.floor(($[o]-1)/m)<J&&a.push(""),w$(a,w,m);continue}if(g+$[o]>m&&g>0&&$[o]>0){if(b.wordWrap===!1&&g<m){w$(a,w,m);continue}a.push("")}if(g+$[o]>m&&b.wordWrap===!1){w$(a,w,m);continue}a[a.length-1]+=w}b.trim!==!1&&(a=a.map((o)=>bm(o)));const s=[...a.join(`
24
- `)];for(let[o,w]of s.entries()){if(h+=w,F.has(w)){const{groups:i}=new RegExp(`(?:\\${rr}(?<code>\\d+)m|\\${e$}(?<uri>.*)${y$})`).exec(s.slice(o).join(""))||{groups:{}};if(i.code!==void 0){const J=Number.parseFloat(i.code);v=J===$m?void 0:J}else i.uri!==void 0&&(x=i.uri.length===0?void 0:i.uri)}const g=Dr.codes.get(Number(v));s[o+1]===`
25
- `?(x&&(h+=A$("")),v&&g&&(h+=N$(g))):w===`
26
- `&&(v&&g&&(h+=N$(v)),x&&(h+=A$(x)))}return h},vm=Object.defineProperty,xm=(r,m,b)=>(m in r)?vm(r,m,{enumerable:!0,configurable:!0,writable:!0,value:b}):r[m]=b,q=(r,m,b)=>(xm(r,typeof m!="symbol"?m+"":m,b),b),br=Symbol("clack:cancel"),I$=new Map([["k","up"],["j","down"],["h","left"],["l","right"]]),cm=new Set(["up","down","left","right","space","enter"]);class t${constructor({render:r,input:m=C$,output:b=u$,...h},v=!0){q(this,"input"),q(this,"output"),q(this,"rl"),q(this,"opts"),q(this,"_track",!1),q(this,"_render"),q(this,"_cursor",0),q(this,"state","initial"),q(this,"value"),q(this,"error",""),q(this,"subscribers",new Map),q(this,"_prevFrame",""),this.opts=h,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=r.bind(this),this._track=v,this.input=m,this.output=b}prompt(){const r=new Kr(0);return r._write=(m,b,h)=>{this._track&&(this.value=this.rl.line.replace(/\t/g,""),this._cursor=this.rl.cursor,this.emit("value",this.value)),h()},this.input.pipe(r),this.rl=T$.createInterface({input:this.input,output:r,tabSize:2,prompt:"",escapeCodeTimeout:50}),T$.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),C(this.input,!0),this.output.on("resize",this.render),this.render(),new Promise((m,b)=>{this.once("submit",()=>{this.output.write(p.cursor.show),this.output.off("resize",this.render),C(this.input,!1),m(this.value)}),this.once("cancel",()=>{this.output.write(p.cursor.show),this.output.off("resize",this.render),C(this.input,!1),m(br)})})}on(r,m){const b=this.subscribers.get(r)??[];b.push({cb:m}),this.subscribers.set(r,b)}once(r,m){const b=this.subscribers.get(r)??[];b.push({cb:m,once:!0}),this.subscribers.set(r,b)}emit(r,...m){const b=this.subscribers.get(r)??[],h=[];for(let v of b)v.cb(...m),v.once&&h.push(()=>b.splice(b.indexOf(v),1));for(let v of h)v()}unsubscribe(){this.subscribers.clear()}onKeypress(r,m){if(this.state==="error"&&(this.state="active"),m?.name&&!this._track&&I$.has(m.name)&&this.emit("cursor",I$.get(m.name)),m?.name&&cm.has(m.name)&&this.emit("cursor",m.name),r&&(r.toLowerCase()==="y"||r.toLowerCase()==="n")&&this.emit("confirm",r.toLowerCase()==="y"),r===" "&&this.opts.placeholder&&(this.value||(this.rl.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),r&&this.emit("key",r.toLowerCase()),m?.name==="return"){if(this.opts.validate){const b=this.opts.validate(this.value);b&&(this.error=b,this.state="error",this.rl.write(this.value))}this.state!=="error"&&(this.state="submit")}r===""&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
27
- `),C(this.input,!1),this.rl.close(),this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){const r=R$(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
28
- `).length-1;this.output.write(p.cursor.move(-999,r*-1))}render(){const r=R$(this._render(this)??"",process.stdout.columns,{hard:!0});if(r!==this._prevFrame){if(this.state==="initial")this.output.write(p.cursor.hide);else{const m=am(this._prevFrame,r);if(this.restoreCursor(),m&&m?.length===1){const b=m[0];this.output.write(p.cursor.move(0,b)),this.output.write(p.erase.lines(1));const h=r.split(`
29
- `);this.output.write(h[b]),this._prevFrame=r,this.output.write(p.cursor.move(0,h.length-b-1));return}else if(m&&m?.length>1){const b=m[0];this.output.write(p.cursor.move(0,b)),this.output.write(p.erase.down());const h=r.split(`
30
- `).slice(b);this.output.write(h.join(`
31
- `)),this._prevFrame=r;return}this.output.write(p.erase.down())}this.output.write(r),this.state==="initial"&&(this.state="active"),this._prevFrame=r}}}var om=Object.defineProperty,gm=(r,m,b)=>(m in r)?om(r,m,{enumerable:!0,configurable:!0,writable:!0,value:b}):r[m]=b,_$=(r,m,b)=>(gm(r,typeof m!="symbol"?m+"":m,b),b),hr=class extends t${constructor(r){super(r,!1),_$(this,"options"),_$(this,"cursor",0),this.options=r.options,this.cursor=this.options.findIndex(({value:m})=>m===r.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",(m)=>{switch(m){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}};var sm=Object.defineProperty,dm=(r,m,b)=>(m in r)?sm(r,m,{enumerable:!0,configurable:!0,writable:!0,value:b}):r[m]=b,wm=(r,m,b)=>(dm(r,typeof m!="symbol"?m+"":m,b),b);class i$ extends t${constructor(r){super(r),wm(this,"valueWithCursor",""),this.on("finalize",()=>{this.value||(this.value=r.defaultValue),this.valueWithCursor=this.value}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.value}${u.default.inverse(u.default.hidden("_"))}`;else{const m=this.value.slice(0,this.cursor),b=this.value.slice(this.cursor);this.valueWithCursor=`${m}${u.default.inverse(b[0])}${b.slice(1)}`}})}get cursor(){return this._cursor}}var ym=globalThis.process.platform.startsWith("win");var c=O(s$(),1),B=O(o$(),1);import W from"process";var em=function(){return W.platform!=="win32"?W.env.TERM!=="linux":Boolean(W.env.CI)||Boolean(W.env.WT_SESSION)||Boolean(W.env.TERMINUS_SUBLIME)||W.env.ConEmuTask==="{cmd::Cmder}"||W.env.TERM_PROGRAM==="Terminus-Sublime"||W.env.TERM_PROGRAM==="vscode"||W.env.TERM==="xterm-256color"||W.env.TERM==="alacritty"||W.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"};var M$=em(),t=(r,m)=>M$?r:m,tm=t("\u25C6","*"),xr=t("\u25A0","x"),ar=t("\u25B2","x"),p$=t("\u25C7","o"),X1=t("\u250C","T"),M=t("\u2502","|"),D=t("\u2514","\u2014"),im=t("\u25CF",">"),Mm=t("\u25CB"," "),V1=t("\u25FB","[\u2022]"),j1=t("\u25FC","[+]"),L1=t("\u25FB","[ ]"),f1=t("\u25AA","\u2022"),B1=t("\u2500","-"),k1=t("\u256E","+"),n1=t("\u251C","+"),E1=t("\u256F","+"),pm=t("\u25CF","\u2022"),lm=t("\u25C6","*"),qm=t("\u25B2","!"),Wm=t("\u25A0","x"),cr=(r)=>{switch(r){case"initial":case"active":return c.default.cyan(tm);case"cancel":return c.default.red(xr);case"error":return c.default.yellow(ar);case"submit":return c.default.green(p$)}},or=(r)=>new i$({validate:r.validate,placeholder:r.placeholder,defaultValue:r.defaultValue,initialValue:r.initialValue,render(){const m=`${c.default.gray(M)}
32
- ${cr(this.state)} ${r.message}
33
- `,b=r.placeholder?c.default.inverse(r.placeholder[0])+c.default.dim(r.placeholder.slice(1)):c.default.inverse(c.default.hidden("_")),h=this.value?this.valueWithCursor:b;switch(this.state){case"error":return`${m.trim()}
34
- ${c.default.yellow(M)} ${h}
35
- ${c.default.yellow(D)} ${c.default.yellow(this.error)}
36
- `;case"submit":return`${m}${c.default.gray(M)} ${c.default.dim(this.value||r.placeholder)}`;case"cancel":return`${m}${c.default.gray(M)} ${c.default.strikethrough(c.default.dim(this.value??""))}${this.value?.trim()?`
37
- `+c.default.gray(M):""}`;default:return`${m}${c.default.cyan(M)} ${h}
38
- ${c.default.cyan(D)}
39
- `}}}).prompt();var gr=(r)=>{const m=(h,v)=>{const x=h.label??String(h.value);return v==="active"?`${c.default.green(im)} ${x} ${h.hint?c.default.dim(`(${h.hint})`):""}`:v==="selected"?`${c.default.dim(x)}`:v==="cancelled"?`${c.default.strikethrough(c.default.dim(x))}`:`${c.default.dim(Mm)} ${c.default.dim(x)}`};let b=0;return new hr({options:r.options,initialValue:r.initialValue,render(){const h=`${c.default.gray(M)}
40
- ${cr(this.state)} ${r.message}
41
- `;switch(this.state){case"submit":return`${h}${c.default.gray(M)} ${m(this.options[this.cursor],"selected")}`;case"cancel":return`${h}${c.default.gray(M)} ${m(this.options[this.cursor],"cancelled")}
42
- ${c.default.gray(M)}`;default:{const v=r.maxItems===void 0?1/0:Math.max(r.maxItems,5);this.cursor>=b+v-3?b=Math.max(Math.min(this.cursor-v+3,this.options.length-v),0):this.cursor<b+2&&(b=Math.max(this.cursor-2,0));const x=v<this.options.length&&b>0,$=v<this.options.length&&b+v<this.options.length;return`${h}${c.default.cyan(M)} ${this.options.slice(b,b+v).map((a,s,o)=>s===0&&x?c.default.dim("..."):s===o.length-1&&$?c.default.dim("..."):m(a,s+b===this.cursor?"active":"inactive")).join(`
43
- ${c.default.cyan(M)} `)}
44
- ${c.default.cyan(D)}
45
- `}}}}).prompt()};var l$=(r="")=>{process.stdout.write(`${c.default.gray(M)}
46
- ${c.default.gray(D)} ${r}
23
+ `).map((v)=>G1(v,b,r)).join(`
24
+ `)}var M1=Object.defineProperty,Z1=(m,b,r)=>(b in m)?M1(m,b,{enumerable:!0,configurable:!0,writable:!0,value:r}):m[b]=r,X=(m,b,r)=>(Z1(m,typeof b!="symbol"?b+"":b,r),r);function z1(m,b){if(m===b)return;let r=m.split(`
25
+ `),v=b.split(`
26
+ `),x=[];for(let h=0;h<Math.max(r.length,v.length);h++)r[h]!==v[h]&&x.push(h);return x}var wm=Symbol("clack:cancel");function P(m){return m===wm}function t(m,b){m.isTTY&&m.setRawMode(b)}var F$=new Map([["k","up"],["j","down"],["h","left"],["l","right"]]),Q1=new Set(["up","down","left","right","space","enter"]);class Q${constructor({render:m,input:b=$m,output:r=mm,...v},x=!0){X(this,"input"),X(this,"output"),X(this,"rl"),X(this,"opts"),X(this,"_track",!1),X(this,"_render"),X(this,"_cursor",0),X(this,"state","initial"),X(this,"value"),X(this,"error",""),X(this,"subscribers",new Map),X(this,"_prevFrame",""),this.opts=v,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=m.bind(this),this._track=x,this.input=b,this.output=r}prompt(){let m=new Fm(0);return m._write=(b,r,v)=>{this._track&&(this.value=this.rl.line.replace(/\t/g,""),this._cursor=this.rl.cursor,this.emit("value",this.value)),v()},this.input.pipe(m),this.rl=C$.createInterface({input:this.input,output:m,tabSize:2,prompt:"",escapeCodeTimeout:50}),C$.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),t(this.input,!0),this.output.on("resize",this.render),this.render(),new Promise((b,r)=>{this.once("submit",()=>{this.output.write(J.cursor.show),this.output.off("resize",this.render),t(this.input,!1),b(this.value)}),this.once("cancel",()=>{this.output.write(J.cursor.show),this.output.off("resize",this.render),t(this.input,!1),b(wm)})})}on(m,b){let r=this.subscribers.get(m)??[];r.push({cb:b}),this.subscribers.set(m,r)}once(m,b){let r=this.subscribers.get(m)??[];r.push({cb:b,once:!0}),this.subscribers.set(m,r)}emit(m,...b){let r=this.subscribers.get(m)??[],v=[];for(let x of r)x.cb(...b),x.once&&v.push(()=>r.splice(r.indexOf(x),1));for(let x of v)x()}unsubscribe(){this.subscribers.clear()}onKeypress(m,b){if(this.state==="error"&&(this.state="active"),b?.name&&!this._track&&F$.has(b.name)&&this.emit("cursor",F$.get(b.name)),b?.name&&Q1.has(b.name)&&this.emit("cursor",b.name),m&&(m.toLowerCase()==="y"||m.toLowerCase()==="n")&&this.emit("confirm",m.toLowerCase()==="y"),m==="\t"&&this.opts.placeholder&&(this.value||(this.rl.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),m&&this.emit("key",m.toLowerCase()),b?.name==="return"){if(this.opts.validate){let r=this.opts.validate(this.value);r&&(this.error=r,this.state="error",this.rl.write(this.value))}this.state!=="error"&&(this.state="submit")}m==="\x03"&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
27
+ `),t(this.input,!1),this.rl.close(),this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let m=n$(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
28
+ `).length-1;this.output.write(J.cursor.move(-999,m*-1))}render(){let m=n$(this._render(this)??"",process.stdout.columns,{hard:!0});if(m!==this._prevFrame){if(this.state==="initial")this.output.write(J.cursor.hide);else{let b=z1(this._prevFrame,m);if(this.restoreCursor(),b&&b?.length===1){let r=b[0];this.output.write(J.cursor.move(0,r)),this.output.write(J.erase.lines(1));let v=m.split(`
29
+ `);this.output.write(v[r]),this._prevFrame=m,this.output.write(J.cursor.move(0,v.length-r-1));return}else if(b&&b?.length>1){let r=b[0];this.output.write(J.cursor.move(0,r)),this.output.write(J.erase.down());let v=m.split(`
30
+ `).slice(r);this.output.write(v.join(`
31
+ `)),this._prevFrame=m;return}this.output.write(J.erase.down())}this.output.write(m),this.state==="initial"&&(this.state="active"),this._prevFrame=m}}}var J1=Object.defineProperty,Y1=(m,b,r)=>(b in m)?J1(m,b,{enumerable:!0,configurable:!0,writable:!0,value:r}):m[b]=r,D$=(m,b,r)=>(Y1(m,typeof b!="symbol"?b+"":b,r),r),ym=class extends Q${constructor(m){super(m,!1),D$(this,"options"),D$(this,"cursor",0),this.options=m.options,this.cursor=this.options.findIndex(({value:b})=>b===m.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",(b)=>{switch(b){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}};var H1=Object.defineProperty,X1=(m,b,r)=>(b in m)?H1(m,b,{enumerable:!0,configurable:!0,writable:!0,value:r}):m[b]=r,V1=(m,b,r)=>(X1(m,typeof b!="symbol"?b+"":b,r),r);class J$ extends Q${constructor(m){super(m),V1(this,"valueWithCursor",""),this.on("finalize",()=>{this.value||(this.value=m.defaultValue),this.valueWithCursor=this.value}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.value}${n.default.inverse(n.default.hidden("_"))}`;else{let b=this.value.slice(0,this.cursor),r=this.value.slice(this.cursor);this.valueWithCursor=`${b}${n.default.inverse(r[0])}${r.slice(1)}`}})}get cursor(){return this._cursor}}var d1=globalThis.process.platform.startsWith("win");function gm({input:m=$m,output:b=mm,overwrite:r=!0,hideCursor:v=!0}={}){let x=s.createInterface({input:m,output:b,prompt:"",tabSize:1});s.emitKeypressEvents(m,x),m.isTTY&&m.setRawMode(!0);let h=($,{name:w})=>{if(String($)==="\x03"){v&&b.write(J.cursor.show),process.exit(0);return}if(!r)return;s.moveCursor(b,w==="return"?0:-1,w==="return"?-1:0,()=>{s.clearLine(b,1,()=>{m.once("keypress",h)})})};return v&&b.write(J.cursor.hide),m.once("keypress",h),()=>{m.off("keypress",h),v&&b.write(J.cursor.show),m.isTTY&&!d1&&m.setRawMode(!1),x.terminal=!1,x.close()}}var y=Y(W$(),1),j=Y(S$(),1);import d from"process";function a1(){return d.platform!=="win32"?d.env.TERM!=="linux":Boolean(d.env.CI)||Boolean(d.env.WT_SESSION)||Boolean(d.env.TERMINUS_SUBLIME)||d.env.ConEmuTask==="{cmd::Cmder}"||d.env.TERM_PROGRAM==="Terminus-Sublime"||d.env.TERM_PROGRAM==="vscode"||d.env.TERM==="xterm-256color"||d.env.TERM==="alacritty"||d.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var Y$=a1(),Z=(m,b)=>Y$?m:b,B1=Z("\u25C6","*"),Sm=Z("\u25A0","x"),qm=Z("\u25B2","x"),H$=Z("\u25C7","o"),_b=Z("\u250C","T"),Q=Z("\u2502","|"),D=Z("\u2514","\u2014"),L1=Z("\u25CF",">"),k1=Z("\u25CB"," "),Cb=Z("\u25FB","[\u2022]"),ob=Z("\u25FC","[+]"),ib=Z("\u25FB","[ ]"),ub=Z("\u25AA","\u2022"),eb=Z("\u2500","-"),tb=Z("\u256E","+"),nb=Z("\u251C","+"),Fb=Z("\u256F","+"),E1=Z("\u25CF","\u2022"),U1=Z("\u25C6","*"),s1=Z("\u25B2","!"),T1=Z("\u25A0","x"),Wm=(m)=>{switch(m){case"initial":case"active":return y.default.cyan(B1);case"cancel":return y.default.red(Sm);case"error":return y.default.yellow(qm);case"submit":return y.default.green(H$)}},Gm=(m)=>new J$({validate:m.validate,placeholder:m.placeholder,defaultValue:m.defaultValue,initialValue:m.initialValue,render(){let b=`${y.default.gray(Q)}
32
+ ${Wm(this.state)} ${m.message}
33
+ `,r=m.placeholder?y.default.inverse(m.placeholder[0])+y.default.dim(m.placeholder.slice(1)):y.default.inverse(y.default.hidden("_")),v=this.value?this.valueWithCursor:r;switch(this.state){case"error":return`${b.trim()}
34
+ ${y.default.yellow(Q)} ${v}
35
+ ${y.default.yellow(D)} ${y.default.yellow(this.error)}
36
+ `;case"submit":return`${b}${y.default.gray(Q)} ${y.default.dim(this.value||m.placeholder)}`;case"cancel":return`${b}${y.default.gray(Q)} ${y.default.strikethrough(y.default.dim(this.value??""))}${this.value?.trim()?`
37
+ `+y.default.gray(Q):""}`;default:return`${b}${y.default.cyan(Q)} ${v}
38
+ ${y.default.cyan(D)}
39
+ `}}}).prompt();var Mm=(m)=>{let b=(v,x)=>{let h=v.label??String(v.value);return x==="active"?`${y.default.green(L1)} ${h} ${v.hint?y.default.dim(`(${v.hint})`):""}`:x==="selected"?`${y.default.dim(h)}`:x==="cancelled"?`${y.default.strikethrough(y.default.dim(h))}`:`${y.default.dim(k1)} ${y.default.dim(h)}`},r=0;return new ym({options:m.options,initialValue:m.initialValue,render(){let v=`${y.default.gray(Q)}
40
+ ${Wm(this.state)} ${m.message}
41
+ `;switch(this.state){case"submit":return`${v}${y.default.gray(Q)} ${b(this.options[this.cursor],"selected")}`;case"cancel":return`${v}${y.default.gray(Q)} ${b(this.options[this.cursor],"cancelled")}
42
+ ${y.default.gray(Q)}`;default:{let x=m.maxItems===void 0?1/0:Math.max(m.maxItems,5);this.cursor>=r+x-3?r=Math.max(Math.min(this.cursor-x+3,this.options.length-x),0):this.cursor<r+2&&(r=Math.max(this.cursor-2,0));let h=x<this.options.length&&r>0,$=x<this.options.length&&r+x<this.options.length;return`${v}${y.default.cyan(Q)} ${this.options.slice(r,r+x).map((w,S,g)=>S===0&&h?y.default.dim("..."):S===g.length-1&&$?y.default.dim("..."):b(w,S+r===this.cursor?"active":"inactive")).join(`
43
+ ${y.default.cyan(Q)} `)}
44
+ ${y.default.cyan(D)}
45
+ `}}}}).prompt()};var X$=(m="")=>{process.stdout.write(`${y.default.gray(Q)}
46
+ ${y.default.gray(D)} ${m}
47
47
 
48
- `)},d={message:(r="",{symbol:m=c.default.gray(M)}={})=>{const b=[`${c.default.gray(M)}`];if(r){const[h,...v]=r.split(`
49
- `);b.push(`${m} ${h}`,...v.map((x)=>`${c.default.gray(M)} ${x}`))}process.stdout.write(`${b.join(`
48
+ `)},G={message:(m="",{symbol:b=y.default.gray(Q)}={})=>{let r=[`${y.default.gray(Q)}`];if(m){let[v,...x]=m.split(`
49
+ `);r.push(`${b} ${v}`,...x.map((h)=>`${y.default.gray(Q)} ${h}`))}process.stdout.write(`${r.join(`
50
50
  `)}
51
- `)},info:(r)=>{d.message(r,{symbol:c.default.blue(pm)})},success:(r)=>{d.message(r,{symbol:c.default.green(lm)})},step:(r)=>{d.message(r,{symbol:c.default.green(p$)})},warn:(r)=>{d.message(r,{symbol:c.default.yellow(qm)})},warning:(r)=>{d.warn(r)},error:(r)=>{d.message(r,{symbol:c.default.red(Wm)})}},S=()=>{const r=M$?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],m=M$?80:120;let b,h,v=!1,x="";const $=(w="")=>{v=!0,b=vr(),x=w.replace(/\.+$/,""),process.stdout.write(`${c.default.gray(M)}
52
- `);let g=0,i=0;h=setInterval(()=>{const J=c.default.magenta(r[g]),K=".".repeat(Math.floor(i)).slice(0,3);process.stdout.write(B.cursor.move(-999,0)),process.stdout.write(B.erase.down(1)),process.stdout.write(`${J} ${x}${K}`),g=g+1<r.length?g+1:0,i=i<r.length?i+0.125:0},m)},a=(w="",g=0)=>{x=w??x,v=!1,clearInterval(h);const i=g===0?c.default.green(p$):g===1?c.default.red(xr):c.default.red(ar);process.stdout.write(B.cursor.move(-999,0)),process.stdout.write(B.erase.down(1)),process.stdout.write(`${i} ${x}
53
- `),b()},s=(w="")=>{x=w??x},o=(w)=>{const g=w>1?"Something went wrong":"Canceled";v&&a(g,w)};return process.on("uncaughtExceptionMonitor",()=>o(2)),process.on("unhandledRejection",()=>o(2)),process.on("SIGINT",()=>o(1)),process.on("SIGTERM",()=>o(1)),process.on("exit",o),{start:$,stop:a,message:s}};function Zm(r){return r.startsWith("cr_")&&r.length>10}async function zm(r){try{const b=await(await fetch(`${Q}/apiStats/api/get-key-id`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:r})})).json();if(b.success&&b.data?.id)return{valid:!0,apiId:b.data.id};return{valid:!1,error:b.error||"Key \u9A8C\u8BC1\u5931\u8D25"}}catch(m){return{valid:!1,error:m instanceof Error?m.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}async function sr(r){if(!Zm(r))return{success:!1,error:"Key \u683C\u5F0F\u4E0D\u6B63\u786E\uFF0C\u5FC5\u987B\u4EE5 cr_ \u5F00\u5934"};const m=await zm(r);if(!m.valid)return{success:!1,error:m.error};return await N({apiKey:r,apiId:m.apiId}),{success:!0}}import{join as W$} from"path";async function T(){if($$)return $$;const r=[Qm,Sm,Ym];for(let m of r)try{const b=await Promise.race([m(),new Promise((h,v)=>setTimeout(()=>v(new Error("timeout")),3000))]);if(b)return $$=b,b}catch{}return $$="cn","cn"}async function Qm(){try{const r=await fetch("http://ip-api.com/json/?fields=countryCode",{signal:AbortSignal.timeout(2000)});if(!r.ok)return null;return(await r.json()).countryCode==="CN"?"cn":"global"}catch{return null}}async function Sm(){try{const r=await fetch("https://ipinfo.io/json",{signal:AbortSignal.timeout(2000)});if(!r.ok)return null;return(await r.json()).country==="CN"?"cn":"global"}catch{return null}}async function Ym(){try{const r=await fetch("https://api.ip.sb/geoip",{signal:AbortSignal.timeout(2000)});if(!r.ok)return null;return(await r.json()).country_code==="CN"?"cn":"global"}catch{return null}}async function Jm(){const r=await T();return q$[r]}async function V(){return(await Jm()).npm}async function dr(){if(await T()==="cn")return`curl -fsSL https://bun.sh/install | BUN_INSTALL_MIRROR="${q$.cn.bunMirror}" bash`;return"curl -fsSL https://bun.sh/install | bash"}async function wr(){const r=await T(),m=q$[r];if(r==="cn")d.info("\u68C0\u6D4B\u5230\u4E2D\u56FD\u5927\u9646\u7F51\u7EDC\uFF0C\u4F7F\u7528\u56FD\u5185\u955C\u50CF\u6E90"),d.message(` npm: ${m.npm}`);else d.info("\u4F7F\u7528\u56FD\u9645\u6E90")}var $$=null,q$={cn:{npm:"https://registry.npmmirror.com",bun:"https://bun.sh/install",bunMirror:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bun:"https://bun.sh/install",bunMirror:null}};var Hm=function(r){return r.startsWith(H)};async function er(){try{if(!await Bun.file(l).exists())return!1;const m=Bun.spawn([l,"--version"],{stdout:"pipe",stderr:"pipe"});return await m.exited,m.exitCode===0}catch{return!1}}async function Xm(){if(process.platform==="win32")return!0;try{const m=Bun.spawn(["which","unzip"],{stdout:"pipe",stderr:"pipe"});if(await m.exited,m.exitCode===0)return!0}catch{}d.warn("\u6B63\u5728\u5B89\u88C5\u7CFB\u7EDF\u4F9D\u8D56 (unzip)...");const r=["apt-get update -qq && apt-get install -y -qq unzip","yum install -y -q unzip","dnf install -y -q unzip","pacman -S --noconfirm unzip","apk add --quiet unzip"];for(let m of r)try{const b=Bun.spawn(["bash","-c",`sudo ${m} 2>/dev/null || ${m}`],{stdout:"pipe",stderr:"pipe"});if(await b.exited,b.exitCode===0)return!0}catch{}return!1}async function Vm(){const r=S();if(!await Xm())return d.error("\u8BF7\u5148\u624B\u52A8\u5B89\u88C5 unzip: apt install unzip / yum install unzip"),!1;await wr(),r.start("\u6B63\u5728\u5B89\u88C5 Tako \u4E13\u5C5E Bun \u8FD0\u884C\u65F6...");try{await(await import("fs/promises")).mkdir(H,{recursive:!0});let b;if(process.platform==="win32"){const v=await T()==="cn"?'$env:BUN_INSTALL_MIRROR="https://registry.npmmirror.com/-/binary/bun"; ':"",x=`\$env:BUN_INSTALL="${H}"; ${v}irm bun.sh/install.ps1 | iex`;b=await Bun.spawn(["powershell","-Command",x],{stdout:"inherit",stderr:"inherit"}).exited}else{const h=await dr(),v=`BUN_INSTALL="${H}" ${h}`;b=await Bun.spawn(["bash","-c",v],{stdout:"inherit",stderr:"inherit"}).exited}if(b!==0)return r.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1;return j=l,r.stop("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5B8C\u6210"),d.info(`\u5B89\u88C5\u4F4D\u7F6E: ${H}`),!0}catch(m){return r.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}}async function jm(){if(await er())return j=l,!0;return d.warn("\u672A\u68C0\u6D4B\u5230 Tako \u4E13\u5C5E Bun\uFF0C\u6B63\u5728\u81EA\u52A8\u5B89\u88C5..."),d.info("\uFF08\u4E0D\u4F1A\u5F71\u54CD\u60A8\u7CFB\u7EDF\u4E2D\u5DF2\u5B89\u88C5\u7684 Node.js \u6216 Bun\uFF09"),await Vm()}async function G$(){if(j){if(!Hm(j))j=l;return j}if(await er())return j=l,l;return l}async function tr(r){try{const m=await V(),b=await fetch(`${m}/${r}/latest`);if(!b.ok)return null;return(await b.json()).version}catch{return null}}async function Lm(r){return(await X()).installedClients[r.id]?.version||null}async function ir(r){const m=n(r.id),b=W$(m,"package.json");try{return await Bun.file(b).exists()}catch{return!1}}async function Mr(r){const m=await Lm(r);if(!m)return!0;const b=await tr(r.package);if(!b)return!1;return m!==b}async function yr(r,m=!1){const b=S(),h=n(r.id);try{if(!await jm())return{success:!1,error:"Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u624B\u52A8\u5220\u9664 ~/.tako/bun \u76EE\u5F55\u540E\u91CD\u8BD5"};const v=await ir(r),x=m||await Mr(r);if(v&&!x)return{success:!0};const $=v?"\u66F4\u65B0":"\u5B89\u88C5";b.start(`\u6B63\u5728${$} ${r.name}...`);const a=await import("fs/promises");await a.mkdir(h,{recursive:!0});const s=W$(h,"package.json");if(!await Bun.file(s).exists())await Bun.write(s,JSON.stringify({name:`tako-${r.id}`,private:!0,dependencies:{}},null,2));const w=await G$(),g=await V();if(v){const L=W$(h,"bun.lock");try{await a.unlink(L)}catch{}}const i=Bun.spawn([w,"add",`${r.package}@latest`],{cwd:h,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:g}});if(await i.exited!==0){const L=await new Response(i.stderr).text();return b.stop(`${$} ${r.name} \u5931\u8D25`),{success:!1,error:L}}const K=await tr(r.package);if(K){const L=await X();L.installedClients[r.id]={version:K,installedAt:(new Date()).toISOString()},await N(L)}return b.stop(`${r.name} ${$}\u5B8C\u6210`),{success:!0}}catch(v){return b.stop("\u64CD\u4F5C\u5931\u8D25"),{success:!1,error:v instanceof Error?v.message:"\u672A\u77E5\u9519\u8BEF"}}}async function pr(r){if(!await ir(r))return await yr(r);if(await Mr(r))return await yr(r,!0);return{success:!0}}var j=null;async function P(r){try{const m=await pr(r);if(!m.success)return m;const b=await j$();if(!b)return{success:!1,error:"\u672A\u914D\u7F6E API Key"};if(r.setupConfigFiles)await r.setupConfigFiles(b);let h=await f$(r);if(!h)h=B$(r);if(!await Bun.file(h).exists())return{success:!1,error:`\u627E\u4E0D\u5230\u53EF\u6267\u884C\u6587\u4EF6: ${h}`};const x=r.getEnvVars(b),$={...process.env,...x};d.info(`\u542F\u52A8 ${r.name}...`);let a;if(r.runtime==="native")a=[h];else a=[await G$(),h];return await Bun.spawn(a,{env:$,stdio:["inherit","inherit","inherit"],cwd:process.cwd()}).exited,{success:!0}}catch(m){return{success:!1,error:m instanceof Error?m.message:"\u542F\u52A8\u5931\u8D25"}}}async function Z$(){try{const r=await L$();if(!r)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};const b=await(await fetch(`${Q}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:r})})).json(),v=await(await fetch(`${Q}/apiStats/api/user-model-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:r,period:"daily"})})).json();if(!b.success)return{success:!1,error:b.error||b.message||"\u83B7\u53D6\u7EDF\u8BA1\u5931\u8D25"};const x=(v.data||[]).map(($)=>({model:$.model,requests:$.requests,cost:$.formatted?.total||"$0.00"}));return{success:!0,data:{totalRequests:b.data?.usage?.total?.requests||0,totalCost:b.data?.usage?.total?.formattedCost||"$0.00",todayCost:`\$${(b.data?.limits?.currentDailyCost||0).toFixed(2)}`,modelStats:x}}}catch(r){return{success:!1,error:r instanceof Error?r.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}function z$(r){return r.toLocaleString("en-US")}import{join as z} from"path";var fm=function(r,m){const b=r.split(".").map(Number),h=m.split(".").map(Number);for(let v=0;v<3;v++){const x=b[v]||0,$=h[v]||0;if(x>$)return 1;if(x<$)return-1}return 0};async function Bm(){try{const r=await V(),m=await fetch(`${r}/${Q$}/latest`,{signal:AbortSignal.timeout(5000)});if(!m.ok)return null;return(await m.json()).version||null}catch{return null}}async function km(){const r=await Bm();if(!r)return{hasUpdate:!1,currentVersion:k};return{hasUpdate:fm(r,k)>0,latestVersion:r,currentVersion:k}}async function lr(){const r=await import("fs/promises"),m=z(G,"bin"),b=z(m,"tako"),h=z(Z,"node_modules/tako-cli/dist/index.js");if(await r.mkdir(m,{recursive:!0}),process.platform==="win32"){const x=`@echo off\r\n"${l}" "${h}" %*\r\n`;await r.writeFile(z(m,"tako.cmd"),x)}else{const x=`#!/bin/bash\nexec "${l}" "${h}" "\$@"\n`;await r.writeFile(b,x,{mode:493})}}async function nm(r){const m=S();m.start(`\u6B63\u5728\u66F4\u65B0\u5230 v${r}...`);try{const b=await V(),h=await import("fs/promises");await h.mkdir(Z,{recursive:!0});const v=z(Z,"package.json");try{await h.access(v)}catch{await h.writeFile(v,JSON.stringify({name:"tako-local",private:!0},null,2))}const x=Bun.spawn([l,"update",Q$,"--latest"],{cwd:Z,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:b}});if(await x.exited,x.exitCode===0)return await lr(),m.stop(`\u66F4\u65B0\u6210\u529F\uFF01\u5DF2\u66F4\u65B0\u5230 v${r}`),!0;else{const $=await new Response(x.stderr).text();return m.stop(`\u66F4\u65B0\u5931\u8D25: ${$||"\u672A\u77E5\u9519\u8BEF"}`),!1}}catch(b){return m.stop(`\u66F4\u65B0\u5931\u8D25: ${b instanceof Error?b.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function Em(){const r=await import("fs/promises"),m=z(Z,"bun.lock");try{await r.unlink(m)}catch{}}async function Um(){const r=await import("fs/promises");try{const m=await V();await r.mkdir(Z,{recursive:!0});const b=z(Z,"package.json");try{await r.access(b)}catch{await r.writeFile(b,JSON.stringify({name:"tako-local",private:!0},null,2))}await Em();const h=Bun.spawn([l,"add",`${Q$}@latest`],{cwd:Z,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:m}});return await h.exited,h.exitCode===0}catch{return!1}}async function Tm(){const r=await import("fs/promises"),m=z(G,"bin"),b=z(m,"tako"),h=z(Z,"node_modules/tako-cli/dist/index.js");try{const v=await r.readFile(b,"utf-8");if(v.includes("bun run tako-cli")||v.includes("run tako-cli")){d.info("\u68C0\u6D4B\u5230\u65E7\u7248\u5B89\u88C5\u65B9\u5F0F\uFF0C\u6B63\u5728\u8FC1\u79FB...");let x=!1;try{await r.access(h),x=!0}catch{x=!1}if(!x){const $=S();if($.start("\u6B63\u5728\u5B89\u88C5\u5230\u672C\u5730\u76EE\u5F55..."),!await Um())return $.stop("\u672C\u5730\u5B89\u88C5\u5931\u8D25\uFF0C\u8DF3\u8FC7\u8FC1\u79FB"),!1;$.stop("\u672C\u5730\u5B89\u88C5\u5B8C\u6210")}return await lr(),!0}}catch{}return!1}async function r$(){try{if(await Tm())d.info("\u68C0\u6D4B\u5230\u65E7\u7248\u5B89\u88C5\uFF0C\u5DF2\u5B8C\u6210\u8FC1\u79FB\uFF0C\u8BF7\u91CD\u65B0\u542F\u52A8 Tako CLI"),process.exit(0);const m=await km();if(m.hasUpdate&&m.latestVersion){if(d.warn(`\u53D1\u73B0\u65B0\u7248\u672C v${m.latestVersion}\uFF08\u5F53\u524D v${k}\uFF09`),await nm(m.latestVersion))d.info("\u8BF7\u91CD\u65B0\u542F\u52A8 Tako CLI \u4EE5\u4F7F\u7528\u65B0\u7248\u672C"),process.exit(0)}}catch{}}var Q$="tako-cli",k="0.1.40";var Pm=function(){console.log(),console.log(` \uD83D\uDC19 Tako CLI v${k}`),console.log(" \x1B[90m\u6B22\u8FCE\u4F7F\u7528\uFF01\x1B[0m"),console.log()};async function qr(r=!1){if(!r)d.warn("\u672A\u68C0\u6D4B\u5230 API Key"),console.log();const m=await or({message:r?"\u8BF7\u8F93\u5165\u65B0\u7684 API Key (cr_xxx):":"\u8BF7\u8F93\u5165\u4F60\u7684 API Key (cr_xxx):",placeholder:"cr_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",validate(v){if(!v)return"\u8BF7\u8F93\u5165 API Key";if(!v.startsWith("cr_"))return"Key \u5FC5\u987B\u4EE5 cr_ \u5F00\u5934";if(v.length<10)return"Key \u683C\u5F0F\u4E0D\u6B63\u786E"}});if(U(m))return!1;const b=S();b.start("\u9A8C\u8BC1 Key \u4E2D...");const h=await sr(m);if(h.success)return b.stop("Key \u9A8C\u8BC1\u6210\u529F\uFF01\u5DF2\u4FDD\u5B58\u5230\u914D\u7F6E\u6587\u4EF6"),!0;else return b.stop(`\u9A8C\u8BC1\u5931\u8D25: ${h.error}`),!1}var Km=function(r,m){const b=[];if(b.push(""),b.push(" \uD83D\uDCCA \u7528\u91CF\u7EDF\u8BA1"),b.push(""),b.push(` \u603B\u8C03\u7528\u6B21\u6570: ${z$(r.totalRequests)} \u6B21`),b.push(` \u603B\u6D88\u8D39: ${r.totalCost}`),b.push(` \u4ECA\u65E5\u6D88\u8D39: ${r.todayCost}`),r.modelStats.length>0)b.push(""),b.push(" \u6A21\u578B\u4F7F\u7528\u5206\u5E03 (\u4ECA\u65E5):"),r.modelStats.forEach((h,v)=>{const x=v===r.modelStats.length-1?"\u2514\u2500":"\u251C\u2500",$=h.model.length>25?h.model.slice(0,22)+"...":h.model;b.push(` ${x} ${$.padEnd(25)} ${z$(h.requests).padStart(6)} \u6B21 ${h.cost.padStart(8)}`)});return b.push(""),b.push(` \x1B[90m${m}s \u540E\u5237\u65B0 | \u6309\u4EFB\u610F\u952E\u8FD4\u56DE\x1B[0m`),b.join("\n")};async function Om(){const m=S();m.start("\u83B7\u53D6\u7528\u91CF\u7EDF\u8BA1...");let b=await Z$();if(!b.success){m.stop(`\u83B7\u53D6\u5931\u8D25: ${b.error}`);return}m.stop("");let h=10,v="";const x=()=>{if(v){const a=v.split("\n").length;process.stdout.write(`\x1B[${a}A\x1B[0J`)}v=Km(b.data,h),console.log(v)};x();const $=process.stdin.isRaw;if(process.stdin.isTTY)process.stdin.setRawMode(!0);return process.stdin.resume(),new Promise((a)=>{let s=!0;const o=()=>{if(!s)return;s=!1,g(),a()},w=setInterval(async()=>{if(!s)return;if(h--,h<=0){h=10;const i=await Z$();if(i.success)b=i}x()},1000),g=()=>{if(clearInterval(w),process.stdin.removeListener("data",o),process.stdin.isTTY)process.stdin.setRawMode($??!1);process.stdin.pause()};process.stdin.on("data",o)})}async function Nm(){const m=[...k$().map((h)=>({value:{type:"launch",client:h},label:`\u542F\u52A8 ${h.name}`,hint:h.package})),{value:{type:"stats"},label:"\u67E5\u770B\u7528\u91CF\u7EDF\u8BA1"},{value:{type:"config"},label:"\u914D\u7F6E API Key"},{value:{type:"exit"},label:"\u9000\u51FA"}],b=await gr({message:"\u8BF7\u9009\u62E9\u64CD\u4F5C:",options:m});if(U(b))return null;return b}async function Am(r){switch(r.type){case"launch":const m=await P(r.client);if(!m.success)d.error(m.error||"\u542F\u52A8\u5931\u8D25");return!0;case"stats":return await Om(),!0;case"config":return await qr(!0),!0;case"exit":return!1}}async function Wr(){if(Pm(),!await V$()){if(!await qr()){l$("\u518D\u89C1\uFF01");return}}while(!0){const m=await Nm();if(m===null)break;if(!await Am(m))break}l$("\u518D\u89C1\uFF01")}var Rm=function(){console.log(`
54
- Tako CLI v${Gr}
51
+ `)},info:(m)=>{G.message(m,{symbol:y.default.blue(E1)})},success:(m)=>{G.message(m,{symbol:y.default.green(U1)})},step:(m)=>{G.message(m,{symbol:y.default.green(H$)})},warn:(m)=>{G.message(m,{symbol:y.default.yellow(s1)})},warning:(m)=>{G.warn(m)},error:(m)=>{G.message(m,{symbol:y.default.red(T1)})}},U=()=>{let m=Y$?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],b=Y$?80:120,r,v,x=!1,h="",$=(W="")=>{x=!0,r=gm(),h=W.replace(/\.+$/,""),process.stdout.write(`${y.default.gray(Q)}
52
+ `);let q=0,z=0;v=setInterval(()=>{let T=y.default.magenta(m[q]),_=".".repeat(Math.floor(z)).slice(0,3);process.stdout.write(j.cursor.move(-999,0)),process.stdout.write(j.erase.down(1)),process.stdout.write(`${T} ${h}${_}`),q=q+1<m.length?q+1:0,z=z<m.length?z+0.125:0},b)},w=(W="",q=0)=>{h=W??h,x=!1,clearInterval(v);let z=q===0?y.default.green(H$):q===1?y.default.red(Sm):y.default.red(qm);process.stdout.write(j.cursor.move(-999,0)),process.stdout.write(j.erase.down(1)),process.stdout.write(`${z} ${h}
53
+ `),r()},S=(W="")=>{h=W??h},g=(W)=>{let q=W>1?"Something went wrong":"Canceled";x&&w(q,W)};return process.on("uncaughtExceptionMonitor",()=>g(2)),process.on("unhandledRejection",()=>g(2)),process.on("SIGINT",()=>g(1)),process.on("SIGTERM",()=>g(1)),process.on("exit",g),{start:$,stop:w,message:S}};function K1(m){return m.startsWith("cr_")&&m.length>10}async function O1(m){try{let r=await(await fetch(`${E}/apiStats/api/get-key-id`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:m})})).json();if(r.success&&r.data?.id)return{valid:!0,apiId:r.data.id};return{valid:!1,error:r.error||"Key \u9A8C\u8BC1\u5931\u8D25"}}catch(b){return{valid:!1,error:b instanceof Error?b.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}async function Zm(m){if(!K1(m))return{success:!1,error:"Key \u683C\u5F0F\u4E0D\u6B63\u786E\uFF0C\u5FC5\u987B\u4EE5 cr_ \u5F00\u5934"};let b=await O1(m);if(!b.valid)return{success:!1,error:b.error};return await C({apiKey:m,apiId:b.apiId}),{success:!0}}import{join as d$}from"path";var $$=null,V$={cn:{npm:"https://registry.npmmirror.com",bun:"https://bun.sh/install",bunMirror:"https://registry.npmmirror.com/-/binary/bun"},global:{npm:"https://registry.npmjs.org",bun:"https://bun.sh/install",bunMirror:null}};async function I(){if($$)return $$;let m=[c1,N1,j1];for(let b of m)try{let r=await Promise.race([b(),new Promise((v,x)=>setTimeout(()=>x(Error("timeout")),3000))]);if(r)return $$=r,r}catch{}return $$="cn","cn"}async function c1(){try{let m=await fetch("http://ip-api.com/json/?fields=countryCode",{signal:AbortSignal.timeout(2000)});if(!m.ok)return null;return(await m.json()).countryCode==="CN"?"cn":"global"}catch{return null}}async function N1(){try{let m=await fetch("https://ipinfo.io/json",{signal:AbortSignal.timeout(2000)});if(!m.ok)return null;return(await m.json()).country==="CN"?"cn":"global"}catch{return null}}async function j1(){try{let m=await fetch("https://api.ip.sb/geoip",{signal:AbortSignal.timeout(2000)});if(!m.ok)return null;return(await m.json()).country_code==="CN"?"cn":"global"}catch{return null}}async function A1(){let m=await I();return V$[m]}async function K(){return(await A1()).npm}async function zm(){if(await I()==="cn")return`curl -fsSL https://bun.sh/install | BUN_INSTALL_MIRROR="${V$.cn.bunMirror}" bash`;return"curl -fsSL https://bun.sh/install | bash"}async function Qm(){let m=await I(),b=V$[m];if(m==="cn")G.info("\u68C0\u6D4B\u5230\u4E2D\u56FD\u5927\u9646\u7F51\u7EDC\uFF0C\u4F7F\u7528\u56FD\u5185\u955C\u50CF\u6E90"),G.message(` npm: ${b.npm}`);else G.info("\u4F7F\u7528\u56FD\u9645\u6E90")}var O=null;function R1(m){return m.startsWith(f)}async function Ym(){try{if(!await Bun.file(H).exists())return!1;let b=Bun.spawn([H,"--version"],{stdout:"pipe",stderr:"pipe"});return await b.exited,b.exitCode===0}catch{return!1}}async function l1(){if(process.platform==="win32")return!0;try{let b=Bun.spawn(["which","unzip"],{stdout:"pipe",stderr:"pipe"});if(await b.exited,b.exitCode===0)return!0}catch{}G.warn("\u6B63\u5728\u5B89\u88C5\u7CFB\u7EDF\u4F9D\u8D56 (unzip)...");let m=["apt-get update -qq && apt-get install -y -qq unzip","yum install -y -q unzip","dnf install -y -q unzip","pacman -S --noconfirm unzip","apk add --quiet unzip"];for(let b of m)try{let r=Bun.spawn(["bash","-c",`sudo ${b} 2>/dev/null || ${b}`],{stdout:"pipe",stderr:"pipe"});if(await r.exited,r.exitCode===0)return!0}catch{}return!1}async function p1(){let m=U();if(!await l1())return G.error("\u8BF7\u5148\u624B\u52A8\u5B89\u88C5 unzip: apt install unzip / yum install unzip"),!1;await Qm(),m.start("\u6B63\u5728\u5B89\u88C5 Tako \u4E13\u5C5E Bun \u8FD0\u884C\u65F6...");try{await(await import("fs/promises")).mkdir(f,{recursive:!0});let r;if(process.platform==="win32"){let x=await I()==="cn"?'$env:BUN_INSTALL_MIRROR="https://registry.npmmirror.com/-/binary/bun"; ':"",h=`$env:BUN_INSTALL="${f}"; ${x}irm bun.sh/install.ps1 | iex`;r=await Bun.spawn(["powershell","-Command",h],{stdout:"inherit",stderr:"inherit"}).exited}else{let v=await zm(),x=`BUN_INSTALL="${f}" ${v}`;r=await Bun.spawn(["bash","-c",x],{stdout:"inherit",stderr:"inherit"}).exited}if(r!==0)return m.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1;return O=H,m.stop("Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5B8C\u6210"),G.info(`\u5B89\u88C5\u4F4D\u7F6E: ${f}`),!0}catch(b){return m.stop("Bun \u5B89\u88C5\u5931\u8D25"),!1}}async function P1(){if(await Ym())return O=H,!0;return G.warn("\u672A\u68C0\u6D4B\u5230 Tako \u4E13\u5C5E Bun\uFF0C\u6B63\u5728\u81EA\u52A8\u5B89\u88C5..."),G.info("\uFF08\u4E0D\u4F1A\u5F71\u54CD\u60A8\u7CFB\u7EDF\u4E2D\u5DF2\u5B89\u88C5\u7684 Node.js \u6216 Bun\uFF09"),await p1()}async function a$(){if(O){if(!R1(O))O=H;return O}if(await Ym())return O=H,H;return H}async function Hm(m){try{let b=await K(),r=await fetch(`${b}/${m}/latest`);if(!r.ok)return null;return(await r.json()).version}catch{return null}}async function I1(m){return(await V()).installedClients[m.id]?.version||null}async function Xm(m){let b=l(m.id),r=d$(b,"package.json");try{return await Bun.file(r).exists()}catch{return!1}}async function Vm(m){let b=await I1(m);if(!b)return!0;let r=await Hm(m.package);if(!r)return!1;return b!==r}async function Jm(m,b=!1){let r=U(),v=l(m.id);try{if(!await P1())return{success:!1,error:"Tako \u4E13\u5C5E Bun \u5B89\u88C5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u624B\u52A8\u5220\u9664 ~/.tako/bun \u76EE\u5F55\u540E\u91CD\u8BD5"};let x=await Xm(m),h=b||await Vm(m);if(x&&!h)return{success:!0};let $=x?"\u66F4\u65B0":"\u5B89\u88C5";r.start(`\u6B63\u5728${$} ${m.name}...`);let w=await import("fs/promises");await w.mkdir(v,{recursive:!0});let S=d$(v,"package.json");if(!await Bun.file(S).exists())await Bun.write(S,JSON.stringify({name:`tako-${m.id}`,private:!0,dependencies:{}},null,2));let W=await a$(),q=await K();if(x){let c=d$(v,"bun.lock");try{await w.unlink(c)}catch{}}let z=Bun.spawn([W,"add",`${m.package}@latest`],{cwd:v,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:q}});if(await z.exited!==0){let c=await new Response(z.stderr).text();return r.stop(`${$} ${m.name} \u5931\u8D25`),{success:!1,error:c}}let _=await Hm(m.package);if(_){let c=await V();c.installedClients[m.id]={version:_,installedAt:new Date().toISOString()},await C(c)}return r.stop(`${m.name} ${$}\u5B8C\u6210`),{success:!0}}catch(x){return r.stop("\u64CD\u4F5C\u5931\u8D25"),{success:!1,error:x instanceof Error?x.message:"\u672A\u77E5\u9519\u8BEF"}}}async function dm(m){if(!await Xm(m))return await Jm(m);if(await Vm(m))return await Jm(m,!0);return{success:!0}}import{homedir as _1}from"os";var C1=50,B$=3,am=604800000;function Bm(m,b=Date.now()){let r=b-new Date(m.lastLaunchedAt).getTime(),v=Math.pow(0.5,r/am),x=Math.log10(m.launchCount+1);return v*0.6+x*0.4}async function L$(m){try{return(await(await import("fs/promises")).stat(m)).isDirectory()}catch{return!1}}async function Lm(m,b){let r=await V(),v=r.recentProjects||[],x=new Date().toISOString(),h=v.findIndex((S)=>S.path===m);if(h>=0){let S=v[h],g=S.clientUsage||{},W=g[b]||{count:0,lastAt:x};v[h]={...S,launchCount:S.launchCount+1,lastLaunchedAt:x,lastClientId:b,clientUsage:{...g,[b]:{count:W.count+1,lastAt:x}}}}else v.push({path:m,launchCount:1,lastLaunchedAt:x,lastClientId:b,clientUsage:{[b]:{count:1,lastAt:x}}});let $=Date.now(),w=v.map((S)=>({...S,score:Bm(S,$)})).sort((S,g)=>g.score-S.score).slice(0,C1).map(({score:S,...g})=>g);r.recentProjects=w,await r$(r)}function o1(m,b,r=Date.now()){let v=m.clientUsage?.[b];if(v){let x=r-new Date(v.lastAt).getTime(),h=Math.pow(0.5,x/am),$=Math.log10(v.count+1);return h*0.6+$*0.4}else if(m.lastClientId===b)return Bm(m,r);return 0}async function km(m,b=B$,r=!0){let x=(await V()).recentProjects||[],h=process.cwd(),$=x.filter((W)=>{if(r&&W.path===h)return!1;return W.clientUsage?.[m]||W.lastClientId===m}),w=Date.now(),S=$.map((W)=>({...W,score:o1(W,m,w)})).sort((W,q)=>q.score-W.score),g=[];for(let{score:W,...q}of S){if(g.length>=b)break;if(await L$(q.path))g.push(q)}return g}async function Em(){let b=(await V()).recentProjects||[],r=process.cwd();return b.find((x)=>x.path===r)?.lastClientId||null}function Um(m,b=25){let r=_1(),v=m.startsWith(r)?"~"+m.slice(r.length):m;if(v.length>b){let h=v.split("/").pop()||"";if(h.length>b-4)v="..."+h.slice(-b+3);else v=`.../${h}`}return v}function sm(m){let b=Date.now(),r=new Date(m).getTime(),v=b-r,x=Math.floor(v/60000),h=Math.floor(v/3600000),$=Math.floor(v/86400000);if(x<1)return"\u521A\u521A";if(x<60)return`${x}\u5206\u949F\u524D`;if(h<24)return`${h}\u5C0F\u65F6\u524D`;if($===1)return"\u6628\u5929";if($<7)return`${$}\u5929\u524D`;if($<30)return`${Math.floor($/7)}\u5468\u524D`;return`${Math.floor($/30)}\u6708\u524D`}async function A(m,b){try{let r=b?.projectPath||process.cwd();if(b?.projectPath){if(!await L$(b.projectPath))return{success:!1,error:`\u76EE\u5F55\u4E0D\u5B58\u5728: ${b.projectPath}`}}let v=await dm(m);if(!v.success)return v;let x=await j$();if(!x)return{success:!1,error:"\u672A\u914D\u7F6E API Key"};if(m.setupConfigFiles)await m.setupConfigFiles(x);let h=await R$(m);if(!h)h=l$(m);if(!await Bun.file(h).exists())return{success:!1,error:`\u627E\u4E0D\u5230\u53EF\u6267\u884C\u6587\u4EF6: ${h}`};await Lm(r,m.id);let w=m.getEnvVars(x),S={...process.env,...w};G.info(`\u542F\u52A8 ${m.name}...`);let g;if(m.runtime==="native")g=[h];else g=[await a$(),h];if(b?.args&&b.args.length>0)g=[...g,...b.args];return await Bun.spawn(g,{env:S,stdio:["inherit","inherit","inherit"],cwd:r}).exited,{success:!0}}catch(r){return{success:!1,error:r instanceof Error?r.message:"\u542F\u52A8\u5931\u8D25"}}}async function k$(){try{let m=await A$();if(!m)return{success:!1,error:"\u672A\u627E\u5230 API ID\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E Key"};let r=await(await fetch(`${E}/apiStats/api/user-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:m})})).json(),x=await(await fetch(`${E}/apiStats/api/user-model-stats`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiId:m,period:"daily"})})).json();if(!r.success)return{success:!1,error:r.error||r.message||"\u83B7\u53D6\u7EDF\u8BA1\u5931\u8D25"};let h=(x.data||[]).map(($)=>({model:$.model,requests:$.requests,cost:$.formatted?.total||"$0.00"}));return{success:!0,data:{totalRequests:r.data?.usage?.total?.requests||0,totalCost:r.data?.usage?.total?.formattedCost||"$0.00",todayCost:`$${(r.data?.limits?.currentDailyCost||0).toFixed(2)}`,modelStats:h}}}catch(m){return{success:!1,error:m instanceof Error?m.message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25"}}}function E$(m){return m.toLocaleString("en-US")}import{join as k}from"path";var U$="tako-cli",R="0.1.43";function i1(m,b){let r=m.split(".").map(Number),v=b.split(".").map(Number);for(let x=0;x<3;x++){let h=r[x]||0,$=v[x]||0;if(h>$)return 1;if(h<$)return-1}return 0}async function u1(){try{let m=await K(),b=await fetch(`${m}/${U$}/latest`,{signal:AbortSignal.timeout(5000)});if(!b.ok)return null;return(await b.json()).version||null}catch{return null}}async function e1(){let m=await u1();if(!m)return{hasUpdate:!1,currentVersion:R};return{hasUpdate:i1(m,R)>0,latestVersion:m,currentVersion:R}}async function Tm(){let m=await import("fs/promises"),b=k(B,"bin"),r=k(b,"tako"),v=k(L,"node_modules/tako-cli/dist/index.js");if(await m.mkdir(b,{recursive:!0}),process.platform==="win32"){let h=`@echo off\r
54
+ "${H}" "${v}" %*\r
55
+ `;await m.writeFile(k(b,"tako.cmd"),h)}else{let h=`#!/bin/bash
56
+ exec "${H}" "${v}" "$@"
57
+ `;await m.writeFile(r,h,{mode:493})}}async function t1(m){let b=U();b.start(`\u6B63\u5728\u66F4\u65B0\u5230 v${m}...`);try{let r=await K(),v=await import("fs/promises");await v.mkdir(L,{recursive:!0});let x=k(L,"package.json");try{await v.access(x)}catch{await v.writeFile(x,JSON.stringify({name:"tako-local",private:!0},null,2))}let h=Bun.spawn([H,"update",U$,"--latest"],{cwd:L,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:r}});if(await h.exited,h.exitCode===0)return await Tm(),b.stop(`\u66F4\u65B0\u6210\u529F\uFF01\u5DF2\u66F4\u65B0\u5230 v${m}`),!0;else{let $=await new Response(h.stderr).text();return b.stop(`\u66F4\u65B0\u5931\u8D25: ${$||"\u672A\u77E5\u9519\u8BEF"}`),!1}}catch(r){return b.stop(`\u66F4\u65B0\u5931\u8D25: ${r instanceof Error?r.message:"\u672A\u77E5\u9519\u8BEF"}`),!1}}async function n1(){let m=await import("fs/promises"),b=k(L,"bun.lock");try{await m.unlink(b)}catch{}}async function F1(){let m=await import("fs/promises");try{let b=await K();await m.mkdir(L,{recursive:!0});let r=k(L,"package.json");try{await m.access(r)}catch{await m.writeFile(r,JSON.stringify({name:"tako-local",private:!0},null,2))}await n1();let v=Bun.spawn([H,"add",`${U$}@latest`],{cwd:L,stdout:"pipe",stderr:"pipe",env:{...process.env,BUN_CONFIG_REGISTRY:b}});return await v.exited,v.exitCode===0}catch{return!1}}async function D1(){let m=await import("fs/promises"),b=k(B,"bin"),r=k(b,"tako"),v=k(L,"node_modules/tako-cli/dist/index.js");try{let x=await m.readFile(r,"utf-8");if(x.includes("bun run tako-cli")||x.includes("run tako-cli")){G.info("\u68C0\u6D4B\u5230\u65E7\u7248\u5B89\u88C5\u65B9\u5F0F\uFF0C\u6B63\u5728\u8FC1\u79FB...");let h=!1;try{await m.access(v),h=!0}catch{h=!1}if(!h){let $=U();if($.start("\u6B63\u5728\u5B89\u88C5\u5230\u672C\u5730\u76EE\u5F55..."),!await F1())return $.stop("\u672C\u5730\u5B89\u88C5\u5931\u8D25\uFF0C\u8DF3\u8FC7\u8FC1\u79FB"),!1;$.stop("\u672C\u5730\u5B89\u88C5\u5B8C\u6210")}return await Tm(),!0}}catch{}return!1}async function m$(){try{if(await D1())G.info("\u68C0\u6D4B\u5230\u65E7\u7248\u5B89\u88C5\uFF0C\u5DF2\u5B8C\u6210\u8FC1\u79FB\uFF0C\u8BF7\u91CD\u65B0\u542F\u52A8 Tako CLI"),process.exit(0);let b=await e1();if(b.hasUpdate&&b.latestVersion){if(G.warn(`\u53D1\u73B0\u65B0\u7248\u672C v${b.latestVersion}\uFF08\u5F53\u524D v${R}\uFF09`),await t1(b.latestVersion))G.info("\u8BF7\u91CD\u65B0\u542F\u52A8 Tako CLI \u4EE5\u4F7F\u7528\u65B0\u7248\u672C"),process.exit(0)}}catch{}}function $b(){console.log(),console.log(` \uD83D\uDC19 Tako CLI v${R}`),console.log(" \x1B[90m\u6B22\u8FCE\u4F7F\u7528\uFF01\x1B[0m"),console.log()}async function fm(m=!1){if(!m)G.warn("\u672A\u68C0\u6D4B\u5230 API Key"),console.log();let b=await Gm({message:m?"\u8BF7\u8F93\u5165\u65B0\u7684 API Key (cr_xxx):":"\u8BF7\u8F93\u5165\u4F60\u7684 API Key (cr_xxx):",placeholder:"cr_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",validate(x){if(!x)return"\u8BF7\u8F93\u5165 API Key";if(!x.startsWith("cr_"))return"Key \u5FC5\u987B\u4EE5 cr_ \u5F00\u5934";if(x.length<10)return"Key \u683C\u5F0F\u4E0D\u6B63\u786E"}});if(P(b))return!1;let r=U();r.start("\u9A8C\u8BC1 Key \u4E2D...");let v=await Zm(b);if(v.success)return r.stop("Key \u9A8C\u8BC1\u6210\u529F\uFF01\u5DF2\u4FDD\u5B58\u5230\u914D\u7F6E\u6587\u4EF6"),!0;else return r.stop(`\u9A8C\u8BC1\u5931\u8D25: ${v.error}`),!1}function mb(m,b){let r=[];if(r.push(""),r.push(" \uD83D\uDCCA \u7528\u91CF\u7EDF\u8BA1"),r.push(""),r.push(` \u603B\u8C03\u7528\u6B21\u6570: ${E$(m.totalRequests)} \u6B21`),r.push(` \u603B\u6D88\u8D39: ${m.totalCost}`),r.push(` \u4ECA\u65E5\u6D88\u8D39: ${m.todayCost}`),m.modelStats.length>0)r.push(""),r.push(" \u6A21\u578B\u4F7F\u7528\u5206\u5E03 (\u4ECA\u65E5):"),m.modelStats.forEach((v,x)=>{let h=x===m.modelStats.length-1?"\u2514\u2500":"\u251C\u2500",$=v.model.length>25?v.model.slice(0,22)+"...":v.model;r.push(` ${h} ${$.padEnd(25)} ${E$(v.requests).padStart(6)} \u6B21 ${v.cost.padStart(8)}`)});return r.push(""),r.push(` \x1B[90m${b}s \u540E\u5237\u65B0 | \u6309\u4EFB\u610F\u952E\u8FD4\u56DE\x1B[0m`),r.join(`
58
+ `)}async function bb(){let b=U();b.start("\u83B7\u53D6\u7528\u91CF\u7EDF\u8BA1...");let r=await k$();if(!r.success){b.stop(`\u83B7\u53D6\u5931\u8D25: ${r.error}`);return}b.stop("");let v=10,x="",h=()=>{if(x){let w=x.split(`
59
+ `).length;process.stdout.write(`\x1B[${w}A\x1B[0J`)}x=mb(r.data,v),console.log(x)};h();let $=process.stdin.isRaw;if(process.stdin.isTTY)process.stdin.setRawMode(!0);return process.stdin.resume(),new Promise((w)=>{let S=!0,g=()=>{if(!S)return;S=!1,q(),w()},W=setInterval(async()=>{if(!S)return;if(v--,v<=0){v=10;let z=await k$();if(z.success)r=z}h()},1000),q=()=>{if(clearInterval(W),process.stdin.removeListener("data",g),process.stdin.isTTY)process.stdin.setRawMode($??!1);process.stdin.pause()};process.stdin.on("data",g)})}async function rb(){let m=p$(),b=await Em(),r=[...m].sort((x,h)=>{if(x.id===b)return-1;if(h.id===b)return 1;return 0}),v=[];for(let x of r){v.push({value:{type:"launch",client:x},label:`\u542F\u52A8 ${x.name}`,hint:x.package});let h=await km(x.id,B$);for(let $ of h)v.push({value:{type:"launch-in-project",client:x,projectPath:$.path},label:` \u2514\u2500 ${Um($.path)}`,hint:sm($.lastLaunchedAt)})}return v.push({value:{type:"stats"},label:"\u67E5\u770B\u7528\u91CF\u7EDF\u8BA1"},{value:{type:"config"},label:"\u914D\u7F6E API Key"},{value:{type:"exit"},label:"\u9000\u51FA"}),v}async function vb(){let m=await rb(),b=await Mm({message:"\u8BF7\u9009\u62E9\u64CD\u4F5C:",options:m});if(P(b))return null;return b}async function xb(m){switch(m.type){case"launch":{let b=await A(m.client);if(!b.success)G.error(b.error||"\u542F\u52A8\u5931\u8D25");return!0}case"launch-in-project":{let b=m.client.continueArg?[m.client.continueArg]:[],r=await A(m.client,{projectPath:m.projectPath,args:b});if(!r.success)G.error(r.error||"\u542F\u52A8\u5931\u8D25");return!0}case"stats":return await bb(),!0;case"config":return await fm(!0),!0;case"exit":return!1}}async function Km(){if($b(),!await N$()){if(!await fm()){X$("\u518D\u89C1\uFF01");return}}while(!0){let b=await vb();if(b===null)break;if(!await xb(b))break}X$("\u518D\u89C1\uFF01")}var s$="0.1.43";function hb(){console.log(`
60
+ Tako CLI v${s$}
55
61
 
56
62
  \u7528\u6CD5: tako [\u9009\u9879] [\u547D\u4EE4]
57
63
 
@@ -67,4 +73,4 @@ Tako CLI v${Gr}
67
73
  tako \u4EA4\u4E92\u5F0F\u9009\u62E9\u5DE5\u5177
68
74
  tako --claude \u76F4\u63A5\u542F\u52A8 Claude Code
69
75
  tako --codex \u76F4\u63A5\u542F\u52A8 Codex
70
- `)};async function Im(){const r=process.argv.slice(2);if(r.includes("-v")||r.includes("--version")){console.log(`Tako CLI v${Gr}`);return}if(r.includes("-h")||r.includes("--help")){Rm();return}if(r.includes("--claude")){const m=v$("claude-code");if(!m)console.error("Claude Code \u5BA2\u6237\u7AEF\u672A\u627E\u5230"),process.exit(1);await r$();const b=await P(m);if(!b.success)console.error(b.error),process.exit(1);return}if(r.includes("--codex")){const m=v$("codex");if(!m)console.error("Codex \u5BA2\u6237\u7AEF\u672A\u627E\u5230"),process.exit(1);await r$();const b=await P(m);if(!b.success)console.error(b.error),process.exit(1);return}await r$(),await Wr()}var Gr="0.1.40";Im().catch((r)=>{console.error("Tako CLI \u53D1\u751F\u9519\u8BEF:",r),process.exit(1)});
76
+ `)}async function wb(){let m=process.argv.slice(2);if(m.includes("-v")||m.includes("--version")){console.log(`Tako CLI v${s$}`);return}if(m.includes("-h")||m.includes("--help")){hb();return}let b=s$==="dev";if(m.includes("--claude")){let r=h$("claude-code");if(!r)console.error("Claude Code \u5BA2\u6237\u7AEF\u672A\u627E\u5230"),process.exit(1);if(!b)await m$();let v=await A(r);if(!v.success)console.error(v.error),process.exit(1);return}if(m.includes("--codex")){let r=h$("codex");if(!r)console.error("Codex \u5BA2\u6237\u7AEF\u672A\u627E\u5230"),process.exit(1);if(!b)await m$();let v=await A(r);if(!v.success)console.error(v.error),process.exit(1);return}if(!b)await m$();await Km()}wb().catch((m)=>{console.error("Tako CLI \u53D1\u751F\u9519\u8BEF:",m),process.exit(1)});
package/install.ps1 CHANGED
@@ -1,23 +1,23 @@
1
- # Tako CLI Windows 安装脚本
2
- # 用法: irm https://cdn.jsdelivr.net/npm/tako-cli/install.ps1 | iex
3
- # 或者: powershell -c "irm https://cdn.jsdelivr.net/npm/tako-cli/install.ps1 | iex"
1
+ # Tako CLI Windows Install Script
2
+ # Usage: irm https://cdn.jsdelivr.net/npm/tako-cli/install.ps1 | iex
3
+ # Or: powershell -c "irm https://cdn.jsdelivr.net/npm/tako-cli/install.ps1 | iex"
4
4
 
5
5
  $ErrorActionPreference = "Stop"
6
6
 
7
- # 配置
7
+ # Config
8
8
  $TAKO_DIR = "$env:USERPROFILE\.tako"
9
9
  $TAKO_BUN_DIR = "$TAKO_DIR\bun"
10
10
  $TAKO_CLI_DIR = "$TAKO_DIR\cli"
11
11
  $TAKO_BIN_DIR = "$TAKO_DIR\bin"
12
12
 
13
- # 颜色输出
13
+ # Output helpers
14
14
  function Write-Info { Write-Host "[INFO] $args" -ForegroundColor Green }
15
15
  function Write-Warn { Write-Host "[WARN] $args" -ForegroundColor Yellow }
16
16
  function Write-Err { Write-Host "[ERROR] $args" -ForegroundColor Red; exit 1 }
17
17
 
18
- # 检测网络环境
18
+ # Detect network region
19
19
  function Detect-Region {
20
- Write-Info "检测网络环境..."
20
+ Write-Info "Detecting network region..."
21
21
 
22
22
  $region = "global"
23
23
 
@@ -36,33 +36,33 @@ function Detect-Region {
36
36
  }
37
37
 
38
38
  if ($region -eq "cn") {
39
- Write-Info "检测到中国大陆网络,使用国内镜像"
39
+ Write-Info "Detected China network, using mirror"
40
40
  } else {
41
- Write-Info "使用国际源"
41
+ Write-Info "Using global registry"
42
42
  }
43
43
 
44
44
  return $region
45
45
  }
46
46
 
47
- # 安装 Tako 专属 Bun
47
+ # Install Tako dedicated Bun
48
48
  function Install-Bun {
49
49
  param([string]$Region)
50
50
 
51
51
  $bunExe = "$TAKO_BUN_DIR\bin\bun.exe"
52
52
 
53
53
  if (Test-Path $bunExe) {
54
- Write-Info "Tako 专属 Bun 已安装: $TAKO_BUN_DIR"
54
+ Write-Info "Tako Bun already installed: $TAKO_BUN_DIR"
55
55
  return
56
56
  }
57
57
 
58
- Write-Info "安装 Tako 专属 Bun 运行时..."
59
- Write-Info "(不会影响您系统中已安装的 Node.js Bun"
58
+ Write-Info "Installing Tako dedicated Bun runtime..."
59
+ Write-Info "(This won't affect your system Node.js or Bun)"
60
60
 
61
- # 创建目录
61
+ # Create directories
62
62
  New-Item -ItemType Directory -Force -Path $TAKO_BUN_DIR | Out-Null
63
63
  New-Item -ItemType Directory -Force -Path "$TAKO_BUN_DIR\bin" | Out-Null
64
64
 
65
- # 中国用户直接从镜像下载,不依赖官方脚本
65
+ # China users download directly from mirror
66
66
  if ($Region -eq "cn") {
67
67
  Install-Bun-Direct -Mirror "https://registry.npmmirror.com/-/binary/bun"
68
68
  } else {
@@ -70,86 +70,85 @@ function Install-Bun {
70
70
  }
71
71
 
72
72
  if (-not (Test-Path $bunExe)) {
73
- Write-Err "Bun 安装失败,请检查网络连接"
73
+ Write-Err "Bun installation failed, please check network connection"
74
74
  }
75
75
 
76
- Write-Info "Tako 专属 Bun 安装完成: $TAKO_BUN_DIR"
76
+ Write-Info "Tako Bun installed: $TAKO_BUN_DIR"
77
77
  }
78
78
 
79
- # 直接下载 Bun(不依赖官方脚本)
79
+ # Direct download Bun (without official script)
80
80
  function Install-Bun-Direct {
81
81
  param([string]$Mirror)
82
82
 
83
83
  $bunExe = "$TAKO_BUN_DIR\bin\bun.exe"
84
84
  $zipFile = "$TAKO_BUN_DIR\bun.zip"
85
85
 
86
- # 检测架构
86
+ # Detect architecture
87
87
  $arch = if ([Environment]::Is64BitOperatingSystem) { "x64" } else { "x64" }
88
88
  $zipName = "bun-windows-$arch.zip"
89
89
 
90
- # 构建下载 URL
90
+ # Build download URL
91
91
  if ($Mirror -like "*npmmirror*") {
92
- # npmmirror 格式: https://registry.npmmirror.com/-/binary/bun/bun-v1.1.38/bun-windows-x64.zip
93
- # 先获取最新版本
94
- Write-Info "获取 Bun 最新版本..."
92
+ # npmmirror format: https://registry.npmmirror.com/-/binary/bun/bun-v1.1.38/bun-windows-x64.zip
93
+ Write-Info "Fetching latest Bun version..."
95
94
  try {
96
95
  $versions = Invoke-RestMethod -Uri "https://registry.npmmirror.com/-/binary/bun/" -TimeoutSec 10
97
- # 解析版本列表,找最新的 bun-v* 版本
96
+ # Parse version list, find latest bun-v* version
98
97
  $latestVersion = ($versions | Select-String -Pattern 'bun-v[\d.]+' -AllMatches).Matches.Value |
99
98
  Sort-Object { [version]($_ -replace 'bun-v', '') } -Descending |
100
99
  Select-Object -First 1
101
100
  if (-not $latestVersion) {
102
- $latestVersion = "bun-v1.1.38" # 回退版本
101
+ $latestVersion = "bun-v1.1.38" # Fallback version
103
102
  }
104
- Write-Info "最新版本: $latestVersion"
103
+ Write-Info "Latest version: $latestVersion"
105
104
  $downloadUrl = "$Mirror/$latestVersion/$zipName"
106
105
  } catch {
107
- Write-Warn "获取版本失败,使用默认版本"
106
+ Write-Warn "Failed to fetch version, using default"
108
107
  $downloadUrl = "$Mirror/bun-v1.1.38/$zipName"
109
108
  }
110
109
  } else {
111
- # GitHub 格式
110
+ # GitHub format
112
111
  $downloadUrl = "$Mirror/$zipName"
113
112
  }
114
113
 
115
- Write-Info "下载 Bun: $downloadUrl"
114
+ Write-Info "Downloading Bun: $downloadUrl"
116
115
 
117
- # 下载
116
+ # Download
118
117
  try {
119
118
  Invoke-WebRequest -Uri $downloadUrl -OutFile $zipFile -UseBasicParsing -TimeoutSec 120
120
119
  } catch {
121
- Write-Err "下载 Bun 失败: $_"
120
+ Write-Err "Failed to download Bun: $_"
122
121
  }
123
122
 
124
- # 解压
125
- Write-Info "解压 Bun..."
123
+ # Extract
124
+ Write-Info "Extracting Bun..."
126
125
  try {
127
126
  Expand-Archive -Path $zipFile -DestinationPath $TAKO_BUN_DIR -Force
128
127
 
129
- # Bun zip 内有一层目录,需要移动文件
128
+ # Bun zip has a nested directory, need to move files
130
129
  $extractedDir = Get-ChildItem -Path $TAKO_BUN_DIR -Directory | Where-Object { $_.Name -like "bun-*" } | Select-Object -First 1
131
130
  if ($extractedDir) {
132
- # 移动 bun.exe bin 目录
131
+ # Move bun.exe to bin directory
133
132
  $bunExeInZip = Join-Path $extractedDir.FullName "bun.exe"
134
133
  if (Test-Path $bunExeInZip) {
135
134
  Move-Item -Path $bunExeInZip -Destination $bunExe -Force
136
135
  }
137
- # 清理解压的目录
136
+ # Clean up extracted directory
138
137
  Remove-Item -Path $extractedDir.FullName -Recurse -Force -ErrorAction SilentlyContinue
139
138
  }
140
139
  } catch {
141
- Write-Err "解压 Bun 失败: $_"
140
+ Write-Err "Failed to extract Bun: $_"
142
141
  } finally {
143
- # 清理 zip 文件
142
+ # Clean up zip file
144
143
  Remove-Item -Path $zipFile -Force -ErrorAction SilentlyContinue
145
144
  }
146
145
  }
147
146
 
148
- # 安装 Tako CLI
147
+ # Install Tako CLI
149
148
  function Install-Tako {
150
149
  param([string]$Region)
151
150
 
152
- Write-Info "安装 Tako CLI..."
151
+ Write-Info "Installing Tako CLI..."
153
152
 
154
153
  $bun = "$TAKO_BUN_DIR\bin\bun.exe"
155
154
  $registry = "https://registry.npmjs.org"
@@ -158,108 +157,103 @@ function Install-Tako {
158
157
  $registry = "https://registry.npmmirror.com"
159
158
  }
160
159
 
161
- # 创建本地安装目录
160
+ # Create local install directory
162
161
  New-Item -ItemType Directory -Force -Path $TAKO_CLI_DIR | Out-Null
163
162
 
164
- # 切换到安装目录
163
+ # Switch to install directory
165
164
  Push-Location $TAKO_CLI_DIR
166
165
 
167
166
  try {
168
- # 初始化 package.json
167
+ # Initialize package.json
169
168
  if (-not (Test-Path "package.json")) {
170
169
  '{"name":"tako-local","private":true}' | Out-File -FilePath "package.json" -Encoding UTF8
171
170
  }
172
171
 
173
- # 禁用 Bun 颜色输出,避免 ANSI 代码污染
172
+ # Disable Bun color output to avoid ANSI code pollution
174
173
  $env:NO_COLOR = "1"
175
174
 
176
- # 安装 tako-cli
177
- # 临时允许 stderr 输出(bun 会输出 "Saved lockfile" 到 stderr)
175
+ # Install tako-cli
178
176
  $prevErrorAction = $ErrorActionPreference
179
177
  $ErrorActionPreference = "Continue"
180
178
  & $bun add tako-cli --registry $registry 2>&1 | ForEach-Object { Write-Host $_ }
181
179
  $ErrorActionPreference = $prevErrorAction
182
180
 
183
181
  if ($LASTEXITCODE -ne 0) {
184
- Write-Err "Tako CLI 安装失败"
182
+ Write-Err "Tako CLI installation failed"
185
183
  }
186
184
  } finally {
187
185
  Pop-Location
188
- # 清理环境变量
189
186
  Remove-Item Env:NO_COLOR -ErrorAction SilentlyContinue
190
187
  }
191
188
 
192
189
  $takoEntry = "$TAKO_CLI_DIR\node_modules\tako-cli\dist\index.js"
193
190
  if (-not (Test-Path $takoEntry)) {
194
- Write-Err "Tako CLI 安装异常: $takoEntry 不存在"
191
+ Write-Err "Tako CLI installation error: $takoEntry not found"
195
192
  }
196
193
 
197
- Write-Info "Tako CLI 安装完成: $TAKO_CLI_DIR"
194
+ Write-Info "Tako CLI installed: $TAKO_CLI_DIR"
198
195
 
199
196
  return $takoEntry
200
197
  }
201
198
 
202
- # 创建命令
199
+ # Create command
203
200
  function Create-Command {
204
201
  param([string]$TakoEntry)
205
202
 
206
- Write-Info "配置 tako 命令..."
203
+ Write-Info "Setting up tako command..."
207
204
 
208
205
  $bun = "$TAKO_BUN_DIR\bin\bun.exe"
209
206
 
210
- # 创建 bin 目录
207
+ # Create bin directory
211
208
  New-Item -ItemType Directory -Force -Path $TAKO_BIN_DIR | Out-Null
212
209
 
213
- # 创建 tako.cmd 批处理文件
214
- # 使用 ASCII 编码避免乱码问题
210
+ # Create tako.cmd batch file
215
211
  $cmdContent = @"
216
212
  @echo off
217
213
  "$bun" "$TakoEntry" %*
218
214
  exit /b %ERRORLEVEL%
219
215
  "@
220
216
 
221
- # 使用 ASCII 字节数组直接写入,避免编码问题
222
217
  $bytes = [System.Text.Encoding]::ASCII.GetBytes($cmdContent)
223
218
  [System.IO.File]::WriteAllBytes("$TAKO_BIN_DIR\tako.cmd", $bytes)
224
219
 
225
- # 创建 tako.ps1 PowerShell 脚本(可选)
220
+ # Create tako.ps1 PowerShell script (optional)
226
221
  $ps1Content = @"
227
222
  & "$bun" "$TakoEntry" @args
228
223
  exit `$LASTEXITCODE
229
224
  "@
230
- # PowerShell 脚本使用 UTF8 编码
231
225
  $ps1Bytes = [System.Text.Encoding]::UTF8.GetBytes($ps1Content)
232
226
  [System.IO.File]::WriteAllBytes("$TAKO_BIN_DIR\tako.ps1", $ps1Bytes)
233
227
 
234
- Write-Info "tako 命令已创建:"
228
+ Write-Info "tako command created:"
235
229
  Write-Info " - $TAKO_BIN_DIR\tako.cmd"
236
230
  Write-Info " - $TAKO_BIN_DIR\tako.ps1"
237
231
  }
238
232
 
239
- # 配置 PATH 环境变量
233
+ # Setup PATH environment variable
240
234
  function Setup-Path {
241
- Write-Info "配置 PATH 环境变量..."
235
+ Write-Info "Configuring PATH..."
242
236
 
243
- # 获取当前用户 PATH
237
+ # Get current user PATH
244
238
  $userPath = [Environment]::GetEnvironmentVariable("Path", "User")
245
239
 
246
- # 检查是否已包含 Tako bin 目录
240
+ # Check if Tako bin directory is already in PATH
247
241
  if ($userPath -notlike "*$TAKO_BIN_DIR*") {
248
- # 添加到用户 PATH
242
+ # Add to user PATH
249
243
  $newPath = "$TAKO_BIN_DIR;$userPath"
250
244
  [Environment]::SetEnvironmentVariable("Path", $newPath, "User")
251
- Write-Info "已将 $TAKO_BIN_DIR 添加到用户 PATH"
245
+ Write-Info "Added $TAKO_BIN_DIR to user PATH"
252
246
 
253
- # 同时更新当前会话的 PATH
247
+ # Also update current session PATH
254
248
  $env:Path = "$TAKO_BIN_DIR;$env:Path"
255
249
  } else {
256
- Write-Info "PATH 已包含 Tako bin 目录"
250
+ Write-Info "PATH already contains Tako bin directory"
257
251
  }
258
252
  }
259
253
 
260
- # 验证安装
254
+ # Verify installation
261
255
  function Verify-Installation {
262
- # 刷新当前会话的环境变量
256
+ # Refresh current session environment
263
257
  $env:Path = "$TAKO_BIN_DIR;$env:Path"
264
258
 
265
259
  $takoCmd = "$TAKO_BIN_DIR\tako.cmd"
@@ -267,39 +261,39 @@ function Verify-Installation {
267
261
 
268
262
  if (Test-Path $takoCmd) {
269
263
  Write-Host ""
270
- Write-Host " 安装成功!" -ForegroundColor Green
264
+ Write-Host " [OK] Installation successful!" -ForegroundColor Green
271
265
  Write-Host ""
272
- Write-Host " 运行 'tako' 开始使用" -ForegroundColor Cyan
266
+ Write-Host " Run 'tako' to get started" -ForegroundColor Cyan
273
267
  Write-Host ""
274
268
 
275
- # 测试 tako 命令是否可用
269
+ # Test if tako command is available
276
270
  try {
277
271
  $testResult = & $takoCmd --version 2>&1
278
272
  if ($LASTEXITCODE -eq 0 -or $testResult) {
279
- Write-Host " tako 命令已可用" -ForegroundColor Green
273
+ Write-Host " [OK] tako command is ready" -ForegroundColor Green
280
274
  }
281
275
  } catch {
282
- Write-Host " 注意: 如果 'tako' 命令无法识别,请尝试:" -ForegroundColor Yellow
276
+ Write-Host " Note: If 'tako' command is not recognized, try:" -ForegroundColor Yellow
283
277
  Write-Host ""
284
- Write-Host " 1. 重新打开终端窗口 (推荐)" -ForegroundColor Cyan
278
+ Write-Host " 1. Reopen your terminal (recommended)" -ForegroundColor Cyan
285
279
  Write-Host ""
286
- Write-Host " 2. 或在当前终端运行:" -ForegroundColor Cyan
280
+ Write-Host " 2. Or run in current terminal:" -ForegroundColor Cyan
287
281
  Write-Host " `$env:Path = `"$TAKO_BIN_DIR;`$env:Path`"" -ForegroundColor Gray
288
282
  Write-Host ""
289
- Write-Host " 3. 或直接使用完整路径:" -ForegroundColor Cyan
283
+ Write-Host " 3. Or use full path:" -ForegroundColor Cyan
290
284
  Write-Host " $takoCmd" -ForegroundColor Gray
291
285
  }
292
286
  Write-Host ""
293
287
  } else {
294
- Write-Err "安装验证失败: tako.cmd 文件不存在"
288
+ Write-Err "Installation verification failed: tako.cmd not found"
295
289
  }
296
290
  }
297
291
 
298
- # 主流程
292
+ # Main
299
293
  function Main {
300
294
  Write-Host ""
301
295
  Write-Host " +====================================+" -ForegroundColor Cyan
302
- Write-Host " | Tako CLI 安装程序 |" -ForegroundColor Cyan
296
+ Write-Host " | Tako CLI Installer |" -ForegroundColor Cyan
303
297
  Write-Host " +====================================+" -ForegroundColor Cyan
304
298
  Write-Host ""
305
299
 
@@ -313,5 +307,5 @@ function Main {
313
307
  Write-Host ""
314
308
  }
315
309
 
316
- # 执行
310
+ # Run
317
311
  Main
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tako-cli",
3
- "version": "0.1.40",
3
+ "version": "0.1.43",
4
4
  "description": "Tako CLI - AI coding tools launcher",
5
5
  "type": "module",
6
6
  "bin": {