anyray-connect 0.11.394 → 0.11.395

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 (2) hide show
  1. package/dist/index.js +2 -2
  2. package/package.json +11 -11
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  var Hee=Object.defineProperty;var $=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(r){throw n=[r],r}};var Ud=(e,t)=>{for(var n in t)Hee(e,n,{get:t[n],enumerable:!0})};var Gee,Jc,FM,Wee,Vee,pt,ro,Qt,T_,jee,iw,No,xt,ot=$(()=>{"use strict";Gee="http://localhost:8787",Jc="anyray-placeholder",FM=/^ark_[A-Za-z0-9_-]{20,512}$/,Wee="ark_svc_",Vee=/^ark_svc_[A-Za-z0-9_-]{20,512}$/,pt=e=>{let t=e?.trim();return!!(t&&FM.test(t))},ro=e=>{let t=e?.trim();if(t){if(Vee.test(t))return"service";if(!t.startsWith(Wee))return FM.test(t)?"personal":void 0}},Qt=e=>{let t=e.trim().replace(/\/+$/,"");return t=t.replace(/\/v1$/,""),t},T_=(e,t)=>e?.trim()||process.env[t]?.trim()||void 0,jee=new Set(["localhost","127.0.0.1","[::1]","::1","0.0.0.0"]),iw=e=>{try{let{protocol:t,hostname:n}=new URL(e);return t==="http:"&&!jee.has(n)}catch{return!1}},No=e=>{let t=Qt(e||process.env.ANYRAY_GATEWAY_URL||Gee),n;try{n=new URL(t)}catch{throw new Error(`invalid gateway URL: "${t}" (expected e.g. http://localhost:8787)`)}if(n.protocol!=="http:"&&n.protocol!=="https:")throw new Error(`invalid gateway URL: "${t}" \u2014 must start with http:// or https://`);return t},xt=(e={})=>{let t=No(e.origin),n=e.placeholderKey?.trim()||Jc,r=e.clientKey?.trim()||process.env.ANYRAY_CLIENT_KEY?.trim()||void 0,o={user:e.user?.trim()||void 0,team:e.team?.trim()||void 0,intent:T_(e.intent,"ANYRAY_METADATA_INTENT"),intentLabel:T_(e.intentLabel,"ANYRAY_METADATA_INTENT_LABEL"),session:T_(e.session,"ANYRAY_METADATA_SESSION")},a=e.subscription?"subscription":e.placeholder?"placeholder":e.seat?"auto":"placeholder";return{origin:t,anthropicBaseUrl:t,openaiBaseUrl:`${t}/v1`,placeholderKey:n,clientKey:r,keyKind:ro(r),authMode:a,byoUpstream:e.byoUpstream,seat:a==="auto"?e.seat:void 0,metadata:o}}});var UM,HM,cw,lw=$(()=>{"use strict";UM="/connect/optimize-output",HM=e=>({matcher:"*",hooks:[{type:"http",url:`${e}${UM}`,timeout:2,headers:{"x-anyray-api-key":"$ANYRAY_CLIENT_KEY",Authorization:"Bearer $ANTHROPIC_AUTH_TOKEN"},allowedEnvVars:["ANYRAY_CLIENT_KEY","ANTHROPIC_AUTH_TOKEN"]}]}),cw=e=>{if(!e||typeof e!="object")return!1;let t=e;if(t.type!=="http"||typeof t.url!="string")return!1;try{let n=new URL(t.url);return["http:","https:"].includes(n.protocol)&&n.pathname===UM&&!n.search&&!n.hash}catch{return!1}}});var P_,dw,uw=$(()=>{"use strict";P_=(e,t)=>{let n="",r="",o=t;for(;o<e.length&&e[o]!==" ";){let a=e[o];if(a==='"'){for(o+=1;;){if(o>=e.length)return;let s=o===t+1&&e[o+1]==="\\";if(e[o]==="\\"&&!s&&(e[o+1]==='"'||e[o+1]==="\\"))n+=e[o+1],o+=2;else{if(e[o]==='"')break;n+=e[o],o+=1}}o+=1}else{if(/\s/.test(a))return;n+=a,r+=a,o+=1}}return o===t?void 0:{value:n,end:o,unquoted:r}},dw=e=>{if(e==="")return[];let t=[],n=0;for(;;){let r=P_(e,n);if(!r)return;if(t.push(r.value),r.end===e.length)return t;n=r.end+1}}});import{randomUUID as Kee}from"node:crypto";import{lstat as L_,open as Zee,readFile as N_,rename as fw,rm as Yee,writeFile as Xee}from"node:fs/promises";import{platform as GM}from"node:os";var WM,Jee,xi,zc,zee,He,bn=$(()=>{"use strict";WM=e=>e?.code==="ENOENT",Jee=new Set(["EBUSY","EXDEV","ETXTBSY"]),xi=async(e,t=GM())=>{try{await e.sync()}catch(n){if(t!=="win32")throw n}},zc=class extends Error{recoveryCopy;code="ANYRAY_PUBLISH_CONFLICT";constructor(t){super("destination changed before publication"),this.recoveryCopy=t,this.name="PublishConflictError"}},zee=async(e,t,n={})=>{let r=await N_(e),o;try{o=await N_(t)}catch(s){if(!WM(s))throw s;await Xee(t,r);return}let a=async s=>{let i=await Zee(t,"r+");try{await i.write(s,0,s.length,0),await i.truncate(s.length),await xi(i)}finally{await i.close()}};try{if(await a(r),await n.corruptAfterWrite?.(t),!(await N_(t)).equals(r))throw Object.assign(new Error("in-place publication did not persist"),{code:"EIO"})}catch(s){throw await a(o).catch(()=>{}),s}},He=async(e,t,n=GM(),r={})=>{let o=r.rename??fw;if(n!=="win32"){try{await o(e,t)}catch(i){if(!Jee.has(i?.code??""))throw i;await zee(e,t,r)}return}let a=`${t}.anyray-old-${process.pid}-${Kee()}`,s=!1;try{let i=await L_(t);if(!i.isFile()&&!i.isSymbolicLink())throw new Error("refusing to replace a non-file destination");await fw(t,a),s=!0}catch(i){if(!WM(i))throw i}if(s&&r.verifyDisplaced){let i=!1;try{i=await r.verifyDisplaced(a)}catch{i=!1}if(!i){let c=!1;try{await L_(t),c=!0}catch{c=!1}if(c)throw new zc(a);try{await o(a,t)}catch(l){let d=l?.code==="EEXIST";if(!d)try{await L_(t),d=!0}catch{d=!1}throw d?new zc(a):new Error(`destination changed before publication and could not be restored; recovery copy remains at ${a}`,{cause:l})}throw new zc}}try{await fw(e,t)}catch(i){if(s)try{await fw(a,t)}catch{throw new Error(`failed to publish file and restore the previous destination; recovery copy remains at ${a}`)}throw i}s&&await Yee(a,{force:!0})}});var oo,qc=$(()=>{"use strict";oo=e=>{try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}});var qee,Jp,D_=$(()=>{"use strict";qee=new Set(["EPERM","EACCES"]),Jp=(e,t=process.platform)=>t==="win32"&&e!==void 0&&qee.has(e)});import{writeFile as mw,readFile as qp,chmod as KM,stat as F_,mkdir as ZM,rename as YM,rm as Qc,unlink as M_}from"node:fs/promises";import{AsyncLocalStorage as Qee}from"node:async_hooks";import{randomUUID as XM}from"node:crypto";import{homedir as hw}from"node:os";import{join as ya}from"node:path";var ne,yw,U_,zp,ete,JM,zM,VM,tte,nte,_e,gw,xn,Qp,rte,H_,q,Do,$n,kn,ote,ate,qM,ste,ite,pw,QM,cte,lte,ao,at,G_,dn,dte,B_,ute,kt,mt,ww,$_,jM,em,bw,kw,eB,tm,ga,Aw,de=$(()=>{"use strict";bn();qc();D_();ne=()=>ya(hw(),".anyray"),yw=async()=>{let e=ne();try{if((await F_(e)).isDirectory())return ya(e,"connect.json")}catch{}return e},U_=()=>ya(ne(),"dev-key.pem"),zp=()=>ya(hw(),".anyray-connect-profile.migrating"),ete=()=>ya(hw(),".anyray-connect-layout.lock"),JM=async e=>{let t=await at(ete(),{busyMessage:"the Anyray state directory is busy; retry the command"});try{return await e()}finally{await t()}},zM=e=>F_(e).then(t=>t.isDirectory(),()=>!1),VM=async(e,t)=>{if(t.code==="ENOENT")return!0;if(await zM(e))return!1;throw t},tte=async(e,t)=>{let n;try{n=await qp(e)}catch(o){return VM(e,o)}let r=`${zp()}.${process.pid}.${XM()}.tmp`;try{await(t.writeFile??mw)(r,n,{mode:384}),await YM(r,zp())}catch(o){throw await M_(r).catch(()=>{}),o}await t.beforeUnlink?.();try{await M_(e)}catch(o){return VM(e,o)}return!0},nte=async e=>{let t=ne();if(await e.afterInspect?.(),!!await tte(t,e)){await ZM(t,{recursive:!0,mode:448});try{await YM(zp(),ya(t,"connect.json"))}catch(n){if(n.code==="ENOENT")return;throw n}}},_e=async(e={})=>{await zM(ne())||await JM(()=>nte(e))},gw=async e=>{await _e();let t=U_();await mw(t,e,{mode:384}),await KM(t,384)},xn=async()=>{try{let e=await qp(U_(),"utf-8");return e.trim()?e:void 0}catch{return}},Qp=async()=>{await Qc(U_(),{force:!0}).catch(()=>{})},rte=(e,t,n)=>e==="ENOENT"||e==="EISDIR"||n&&Jp(e,t),H_=async(e={})=>{let t=e.readFile??(r=>qp(r,"utf-8")),n=e.platform??process.platform;for(let r=0;;r++){let o=await yw();await e.afterResolve?.();try{return await t(o)}catch(a){let s=a.code;if(!rte(s,n,o===ne()))throw a;let i=await t(zp()).catch(c=>{if(c.code!=="ENOENT")throw c});if(i!==void 0)return i;if(r>0)throw a}}},q=async()=>{try{let e=await H_(),t=JSON.parse(e);return t===null||typeof t!="object"||Array.isArray(t)?{}:t}catch{return{}}},Do=class extends Error{reason;constructor(t){super(`the connect profile could not be ${t==="read"?"read":"parsed"}`),this.reason=t,this.name="ProfileUnreadableError"}},$n=async(e={})=>{let t;try{t=await H_(e)}catch(r){return r?.code==="ENOENT"?{state:"absent"}:{state:"unreadable",reason:"read"}}let n;try{n=JSON.parse(t)}catch{return{state:"unreadable",reason:"parse"}}return n===null||typeof n!="object"||Array.isArray(n)?{state:"unreadable",reason:"parse"}:{state:"present",profile:n}},kn=async()=>{let e=await $n();if(e.state==="absent")return{};if(e.state==="unreadable")throw new Do(e.reason);return e.profile},ote=0,ate=3e4,qM=5e3,ste=25,ite=()=>ya(hw(),".anyray-connect-profile.lock"),pw=new Qee,QM=async e=>{let t=await qp(ya(e,"owner.json"),"utf-8").catch(()=>{}),n=await F_(e,{bigint:!0});return{dev:n.dev,ino:n.ino,mtimeNs:n.mtimeNs,owner:t}},cte=(e,t)=>e.dev===t.dev&&e.ino===t.ino&&e.mtimeNs===t.mtimeNs&&e.owner===t.owner,lte=async(e,t)=>{let n=await QM(e);if(n.owner!==void 0)try{let o=JSON.parse(n.owner);if(typeof o.pid=="number"&&Number.isSafeInteger(o.pid)&&o.pid>0)return oo(o.pid)?void 0:n}catch{}let r=Number(n.mtimeNs/1000000n);return Date.now()-r>t?n:void 0},ao=class extends Error{constructor(t){super(t),this.name="LockBusyError"}},at=async(e,t={},n={})=>{let r=t.waitMs??qM,o=t.staleMs??ate,a=ya(e,"owner.json"),s=Date.now()+r,i=n.mkdir??ZM,c=n.platform??process.platform,l;for(;;){let d=XM();try{await i(e,{mode:448});let f=`${a}.anyray-tmp-${process.pid}-${d}`;try{await mw(f,`${JSON.stringify({pid:process.pid,nonce:d})}
3
3
  `,{flag:"wx",mode:384}),await He(f,a)}catch(p){throw await Qc(f,{force:!0}).catch(()=>{}),await Qc(e,{recursive:!0,force:!0}).catch(()=>{}),p}return async()=>{try{JSON.parse(await qp(a,"utf-8")).nonce===d&&await Qc(e,{recursive:!0,force:!0})}catch{}}}catch(f){let p=f.code;if(Jp(p,c))l=f;else{if(p!=="EEXIST")throw f;l=void 0}}let u=await lte(e,o).catch(()=>{});if(u){await n.beforeReclaim?.();let f=await QM(e).catch(()=>{});if(f&&cte(u,f)&&await Qc(e,{recursive:!0,force:!0}).then(()=>!0).catch(()=>!1))continue}if(Date.now()>=s)throw l||new ao(t.busyMessage??`${e} is busy; retry the command`);await new Promise(f=>setTimeout(f,ste))}},G_=(e=qM)=>at(ite(),{waitMs:e,busyMessage:"connect profile is busy; retry the command"}),dn=async(e,t={})=>{if(pw.getStore()===!0)return e();let n=await G_(t.waitMs);try{return await pw.run(!0,e)}finally{await n()}},dte=(e,t)=>{if(e===void 0)return t;if(t===void 0)return e;let n=Date.parse(e),r=Date.parse(t);return Number.isFinite(r)?Number.isFinite(n)?r>n?t:e:t:e},B_=async(e,t={})=>{let n=Object.fromEntries(Object.entries(e).filter(([,r])=>r!==void 0));await JM(async()=>{await ute(n,t),await Qc(zp(),{force:!0}).catch(()=>{})})},ute=async(e,t)=>{let n=await yw(),r=await H_().then(s=>JSON.parse(s).retrievalTransportSwitchAt).catch(()=>{}),o=dte(typeof r=="string"?r:void 0,e.retrievalTransportSwitchAt);o!==void 0&&(e.retrievalTransportSwitchAt=o);let a=`${n}.${process.pid}.${ote++}.tmp`;try{await(t.writeFile??mw)(a,`${JSON.stringify(e,null,2)}
4
4
  `,{mode:384}),await KM(a,384),await He(a,n)}catch(s){throw await M_(a).catch(()=>{}),s}},kt=async(e,t={})=>{if(pw.getStore()===!0){await B_(e,t);return}let n=await G_();try{await B_(e,t)}finally{await n()}},mt=async e=>{let t=async()=>{let r=await kn(),{next:o,result:a}=e(r);return o&&await B_(o),a};if(pw.getStore()===!0)return t();let n=await G_();try{return await t()}finally{await n()}},ww=e=>mt(t=>({next:{...t,...e},result:void 0})),$_=["clientKey","clientKeyExpiresAt","enrolledCert","enrolledCertExpiry","enrolledCertLifetimeMs","enrolledTokenHash"],jM="ssoLink",em=async()=>{let e=await q();return $_.some(t=>e[t]!==void 0)?!0:await xn()!==void 0},bw=async()=>{await Qc(ya(ne(),"device-token.json"),{force:!0}).catch(()=>{})},kw=async()=>{let e=await kn(),t=$_.some(a=>e[a]!==void 0),n=e[jM]!==void 0,r=e.byoUpstream!==void 0,o=await xn()!==void 0;if(t||n||r||e.managedEnrollmentDisabled!==!0){let a={...e};for(let s of $_)delete a[s];delete a[jM],delete a.byoUpstream,a.managedEnrollmentDisabled=!0,await kt(a)}if(await Qp(),await xn())throw new Error(`could not remove the dev key from ${ne()}`);return t||n||r||o},eB=()=>mt(e=>e.managedEnrollmentDisabled===!0?{next:{...e,managedEnrollmentDisabled:void 0},result:void 0}:{result:void 0}),tm=(e,t)=>e==="reverted"||e==="queued"||t&&(e==="manual"||e==="not-found"),ga=async(e,t,n=!1,r)=>{await mt(o=>{let a=new Set(o.managedTools??[]),s=new Set(a),i=new Set(o.revertedTools??[]),c=new Set(o.blockedTools??[]),l=Array.isArray(o.selectedTools)?o.selectedTools:void 0,d=o.toolSelection,u=n?void 0:r?.personChooses===!0&&!t?!0:o.toolOptIn,f=o.offboardedAt;for(let x of e){let _=x.status==="configured"||x.status==="queued"||x.status==="manual"&&x.landed===!0;!t&&_&&(a.add(x.id),i.delete(x.id),c.delete(x.id),f=void 0),!t&&x.refused===!0&&c.add(x.id),t&&tm(x.status,s.has(x.id))&&(a.delete(x.id),i.add(x.id),c.delete(x.id))}if(n&&(a.clear(),c.clear()),r&&!t){let x=new Set(r.knownToolIds);for(let _ of r.declinedToolIds??[])x.has(_)&&!a.has(_)&&i.add(_)}if(r){let x=r.namedToolIds??[];if(n)l=[];else if(t&&l){let _=new Set(l);for(let A of x)_.delete(A);l=[..._].sort()}else if(!t&&x.length>0){let _=new Set(r.knownToolIds),A=new Set((l??[]).filter(S=>_.has(S)));for(let S of x)_.has(S)&&A.add(S);l=[...A].sort()}t||(d=x.length>0?"explicit":"all")}let p=[...a].sort(),m=[...o.managedTools??[]].sort(),h=[...i].sort(),w=[...o.revertedTools??[]].sort(),g=[...c].sort(),y=[...o.blockedTools??[]].sort(),b=(x,_)=>x.length===_.length&&x.every((A,S)=>A===_[S]),k=l===void 0?o.selectedTools===void 0:o.selectedTools!==void 0&&b(l,o.selectedTools);if(b(p,m)&&o.revertedTools!=null&&b(h,w)&&b(g,y)&&k&&d===o.toolSelection&&u===o.toolOptIn&&f===o.offboardedAt)return{result:void 0};let{offboardedAt:R,toolOptIn:I,...v}=o;return{next:{...v,...f!==void 0?{offboardedAt:f}:{},...u?{toolOptIn:u}:{},managedTools:p,revertedTools:h,blockedTools:g,selectedTools:l,toolSelection:d},result:void 0}})},Aw=async(e=new Date().toISOString())=>{await ww({offboardedAt:e})}});import{execFile as fte}from"node:child_process";import{readFile as pte,readdir as mte}from"node:fs/promises";import{platform as Cw}from"node:os";import{promisify as hte}from"node:util";import{posix as V_,win32 as j_}from"node:path";var tB,Wt,nB,yte,gte,rB,wte,Hd,oB,bte,aB,gs,nm,kte,rm,Ate,Z_,K_,sB,iB,vte,Cte,Ste,_te,W_,Ete,vw,wa,ba=$(()=>{"use strict";tB=hte(fte),Wt=(e=Cw())=>{switch(e){case"darwin":return"/Library/Application Support/ClaudeCode/managed-settings.json";case"win32":return"C:\\Program Files\\ClaudeCode\\managed-settings.json";default:return"/etc/claude-code/managed-settings.json"}},nB=(e,t)=>{let n=Wt(t);return t==="win32"?j_.join(j_.dirname(n),e):V_.join(V_.dirname(n),e)},yte=(e=Cw())=>nB("managed-settings.d",e),gte=(e=Cw())=>nB("managed-mcp.json",e),rB=["wslInheritsWindowsSettings","managedSourcesBehavior"],wte=["disableAllHooks","allowManagedHooksOnly","allowManagedMcpServersOnly"],Hd="allowedMcpServers",oB=["apiKeyHelper","awsAuthRefresh","awsCredentialExport","gcpAuthRefresh","otelHeadersHelper","proxyAuthHelper","forceLoginOrgUUID","forceLoginMethod","forceLoginGatewayUrl","gatewayInternalNetworks","parentSettingsBehavior","modelPicker","policyHelper","permissions.defaultMode"],bte="/Library/Managed Preferences/com.anthropic.claudecode.plist",aB="SOFTWARE\\Policies\\ClaudeCode",gs=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),nm=e=>{if(!(e===void 0||!e.trim()))try{let t=JSON.parse(e);return gs(t)?t:void 0}catch{return}},kte=e=>Object.entries(e).some(([t,n])=>!rB.includes(t)&&n!==null),rm=e=>{let[t,n]=e.split(".");return t==="env"&&n?`env.${n}`:t},Ate=(e,t)=>JSON.stringify(e)===JSON.stringify(t),Z_=(e,t)=>{for(let n of t)e.some(r=>Ate(r,n))||e.push(n)},K_=(e,t,n,r,o)=>{for(let[a,s]of Object.entries(t)){if(s===null)continue;let i=n?`${n}.${a}`:a,c=e[a];Array.isArray(c)&&Array.isArray(s)?(Z_(c,s),r[rm(i)]=o):gs(c)&&gs(s)?(K_(c,s,i,r,o),n||(r[a]=o)):(e[a]=structuredClone(s),r[rm(i)]=o,gs(s)&&K_(e[a],s,i,r,o))}},sB=(e,t,n)=>{let r=structuredClone(e);if(n||!gs(r))return r;for(let o of Object.keys(r)){let a=`${t}.${o}`;oB.includes(a)?delete r[o]:r[o]=sB(r[o],a,n)}return r},iB=(e,t,n,r,o,a)=>{for(let[s,i]of Object.entries(n)){if(!r&&rB.includes(s)||i===null)continue;let c=r?`${r}.${s}`:s;if(!a&&oB.includes(c))continue;let l=t.origin[rm(c)]??t.origin[rm(s)]??t.info.label;if(!(s in e)){e[s]=sB(i,c,a),o[rm(c)]=l;continue}let d=e[s];!r&&wte.includes(s)?i===!0&&d!==!0&&(e[s]=!0,o[s]=l):Array.isArray(d)&&Array.isArray(i)&&!(!r&&s===Hd)?Z_(d,i):gs(d)&&gs(i)&&iB(d,t,i,c,o,a)}},vte=async e=>pte(e,"utf8").catch(()=>{}),Cte=async e=>mte(e).catch(()=>{}),Ste=async()=>{try{let{stdout:e}=await tB("plutil",["-convert","json","-o","-","--",bte],{timeout:3e3});return nm(e)}catch{return}},_te=async e=>{try{let{stdout:t}=await tB("reg",["query",`${e}\\${aB}`,"/v","Settings"],{timeout:3e3,windowsHide:!0});for(let n of t.split(`
5
- `)){let r=n.trim();if(r.startsWith("Settings"))for(let o of["REG_EXPAND_SZ","REG_SZ"]){let a=r.indexOf(`${o} `);if(a>0)return r.slice(a+o.length).trim()}}return}catch{return}},W_=(e,t,n)=>({info:{kind:e,label:t,policy:kte(n)},doc:n,origin:{}}),Ete=async(e={})=>{let t=e.platform??Cw(),n=e.readText??vte,r=e.listDir??Cte,o=Wt(t),a=yte(t),s=v=>t==="win32"?j_.join(a,v):V_.join(a,v),i=[];if(t==="darwin"){let v=await(e.readPlist??Ste)().catch(()=>{});v&&i.push(W_("plist","macOS managed preferences (com.anthropic.claudecode)",v))}let c=async v=>{if(t!=="win32")return;let x=nm(await(e.readRegistry??_te)(v).catch(()=>{}));return x?W_(v==="HKLM"?"hklm":"hkcu",`Windows registry (${v}\\${aB})`,x):void 0},l=await c("HKLM");l&&i.push(l);let d=[],u=nm(await n(o).catch(()=>{}));u&&d.push({label:`managed settings (${o})`,doc:u});let f=(await r(a).catch(()=>{})??[]).filter(v=>v.endsWith(".json")&&!v.startsWith(".")).sort();for(let v of f){let x=nm(await n(s(v)).catch(()=>{}));x&&d.push({label:`managed settings (${s(v)})`,doc:x})}let p=[];if(d.length){let v={},x={};for(let{label:_,doc:A}of d)K_(v,A,"",x,_);p.push({...W_("file",d[0]?.label??o,v),origin:x})}let m=await c("HKCU"),h=[...i,...p],g=h.find(v=>v.info.policy||"managedSourcesBehavior"in v.doc)?.doc.managedSourcesBehavior==="merge",y=h.find(v=>v.info.policy)??(m?.info.policy?m:void 0),b={},k={},C=(v,x)=>v.origin[x]??v.info.label;if(g){let v=h.filter(x=>x.info.policy);for(let[x,_]of v.entries())iB(b,_,_.doc,"",k,x===0)}else if(y){for(let[v,x]of Object.entries(y.doc))x!==null&&(b[v]=structuredClone(x),k[v]=C(y,v));if(h.includes(y)){let v={};for(let A of h)if(gs(A.doc.env))for(let[S,O]of Object.entries(A.doc.env))S in v||O===null||(v[S]=O,k[`env.${S}`]=C(A,`env.${S}`));Object.keys(v).length&&(b.env=v);let x=h.find(A=>A.doc.allowManagedMcpServersOnly===!0);if(x){b.allowManagedMcpServersOnly=!0,k.allowManagedMcpServersOnly=C(x,"allowManagedMcpServersOnly");let A=h.find(S=>Array.isArray(S.doc[Hd]));A&&(b[Hd]=structuredClone(A.doc[Hd]),k[Hd]=C(A,Hd))}let _=[];for(let A of h)Array.isArray(A.doc.deniedMcpServers)&&Z_(_,A.doc.deniedMcpServers);_.length&&(b.deniedMcpServers=_,k.deniedMcpServers??=C(h[0],"deniedMcpServers"))}}let R=await n(gte(t)).catch(()=>{}),I=nm(R);return{settings:b,originOf:v=>k[v]??(v.startsWith("env.")?k.env:void 0),sources:[...h,...m?[m]:[]].map(v=>v.info),mcpFile:R===void 0?{present:!1}:{present:!0,...I&&gs(I.mcpServers)?{servers:Object.keys(I.mcpServers)}:I?{servers:[]}:{}}}},vw=(e,t=`managed settings (${Wt()})`)=>({settings:e,originOf:()=>t,sources:[],mcpFile:{present:!1}}),wa=async e=>{try{return e.managedView?await e.managedView():e.readManaged?vw(await e.readManaged()):await Ete()}catch{return vw({})}}});import{readFileSync as Ite}from"node:fs";import{isAbsolute as xte,win32 as Rte}from"node:path";var om,Ote,Tte,_w,Sw,Pte,Lte,Nte,Dte,Mte,cB,am=$(()=>{"use strict";uw();ba();om="__anyray-sso-gate",Ote="__anyray-hook",Tte="--managed-source",_w=e=>typeof e=="string"&&e.length>0&&e.length<=512&&[...e].every(t=>{let n=t.charCodeAt(0);return n>=32&&n!==127})&&(xte(e)||Rte.isAbsolute(e))&&!/ark_[A-Za-z0-9_-]{20,}|-----BEGIN/.test(e),Sw=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Pte=/^(?:[A-Za-z]:\/|\/\/[^/])/,Lte=/^[A-Za-z0-9_./:=-]*$/,Nte=e=>{let t=P_(e,0);if(!t||!Lte.test(t.unquoted))return;let n=e.slice(t.end);if(!(n!==""&&!n.startsWith(" ")))return{binary:t.value,args:n.split(" ").filter(r=>r!=="")}},Dte=e=>{let t=Nte(e);if(!t||!_w(t.binary))return;let[n,r]=t.args;if(n===om||n===Ote&&r===Tte)return Pte.test(t.binary)?t.binary.replace(/\//g,"\\"):t.binary},Mte=e=>{if(!Sw(e)||!Sw(e.hooks))return;let t=new Set;for(let n of Object.values(e.hooks))if(Array.isArray(n)){for(let r of n)if(!(!Sw(r)||!Array.isArray(r.hooks)))for(let o of r.hooks){if(!Sw(o)||typeof o.command!="string")continue;let a=Dte(o.command);a!==void 0&&t.add(a)}}return t.size===1?[...t][0]:void 0},cB=(e=Wt())=>{try{let t=Ite(e,"utf8");return t.length>1024*1024?void 0:Mte(JSON.parse(t))}catch{return}}});var kr,An,so,Gd,io=$(()=>{"use strict";kr=(e=process.env)=>e.CODESPACES==="true"||e.CODESPACE_NAME?"codespaces":e.REMOTE_CONTAINERS==="true"||e.REMOTE_CONTAINERS_IPC||e.DEVCONTAINER?"devcontainer":e.SSH_CONNECTION||e.SSH_TTY?"ssh":null,An=(e=process.env)=>kr(e)!==null,so=e=>e==="codespaces"||e==="devcontainer",Gd=e=>{switch(e){case"codespaces":return"a GitHub Codespace";case"devcontainer":return"a dev container";case"ssh":return"an SSH session"}}});var Me,nr=$(()=>{"use strict";Me="0.11.394"});import{access as Bte,chmod as $te,mkdir as Y_,open as q_,readFile as yB,rm as Mo,stat as lB,utimes as Fte}from"node:fs/promises";import{createHash as Q_,randomUUID as gB}from"node:crypto";import{readFileSync as wB,statSync as dB}from"node:fs";import{dirname as eE,join as Ute}from"node:path";import{isDeepStrictEqual as Wd}from"node:util";var Ri,bB,uB,Hte,U,ae,co,fB,kB,lo,im,pe,AB,pB,Gte,Wte,vB,Vte,sm,X_,J_,mB,jte,z_,Vd,CB,SB,_B,Ew,hB,Iw,uo,Ne,Ue=$(()=>{"use strict";qc();bn();Ri=e=>`${e}.anyray-bak`,bB=async e=>{let t;try{t=await q_(eE(e),"r"),await t.sync()}catch(n){if(process.platform!=="win32")throw n}finally{await t?.close().catch(()=>{})}},uB=async(e,t)=>{let n,r;try{n=await q_(e,"wx",384),await n.writeFile(t,"utf-8"),await xi(n)}catch(o){r=o}finally{await n?.close().catch(()=>{})}if(r)throw n&&await Mo(e,{force:!0}).catch(()=>{}),r;await bB(e)},Hte=async e=>{let t;try{t=await q_(e,"r"),await xi(t)}finally{await t?.close().catch(()=>{})}await bB(e)},U=async e=>{try{return await Bte(e),!0}catch{return!1}},ae=async e=>{if(!await U(e))return{};let t=await yB(e,"utf-8");if(!t.trim())return{};let n=JSON.parse(t);if(n===null||typeof n!="object"||Array.isArray(n))throw new Error(`${e} is not a JSON object`);return n},co=class extends Error{constructor(){super("repair deferred: configuration changed before publication")}},fB=e=>`${e.dev}:${e.ino}:${e.size}:${e.mtimeNs}:${e.ctimeNs}`,kB=e=>{try{let t=fB(dB(e,{bigint:!0})),n=wB(e),r=fB(dB(e,{bigint:!0}));if(t!==r)throw new co;return{raw:n.toString("utf8"),fingerprint:`${r}:${Q_("sha256").update(n).digest("hex")}`}}catch(t){if(t.code==="ENOENT")return{raw:"",fingerprint:"missing"};throw t}},lo=e=>{let{raw:t,fingerprint:n}=kB(e),r=t.trim()?JSON.parse(t):{};if(r===null||typeof r!="object"||Array.isArray(r))throw new Error("configuration is not a JSON object");return{value:r,fingerprint:n}},im=async(e,t,n={})=>{for(let r=0;r<3;r++)try{let o=lo(e);if(n.requireExisting&&o.fingerprint==="missing")return"unchanged";let a=JSON.stringify(o.value);return t(o.value),JSON.stringify(o.value)===a?"unchanged":(await pe(e,o.value,{backup:n.backup,expectedFingerprint:o.fingerprint}),"written")}catch(o){if(!(o instanceof co))throw o}return"repair deferred"},pe=async(e,t,n={})=>{await Y_(eE(e),{recursive:!0,mode:448});let r=Ri(e);if(n.backup!==!1&&!await U(r)){let a=await U(e),s=a?await yB(e,"utf-8"):`{}
5
+ `)){let r=n.trim();if(r.startsWith("Settings"))for(let o of["REG_EXPAND_SZ","REG_SZ"]){let a=r.indexOf(`${o} `);if(a>0)return r.slice(a+o.length).trim()}}return}catch{return}},W_=(e,t,n)=>({info:{kind:e,label:t,policy:kte(n)},doc:n,origin:{}}),Ete=async(e={})=>{let t=e.platform??Cw(),n=e.readText??vte,r=e.listDir??Cte,o=Wt(t),a=yte(t),s=v=>t==="win32"?j_.join(a,v):V_.join(a,v),i=[];if(t==="darwin"){let v=await(e.readPlist??Ste)().catch(()=>{});v&&i.push(W_("plist","macOS managed preferences (com.anthropic.claudecode)",v))}let c=async v=>{if(t!=="win32")return;let x=nm(await(e.readRegistry??_te)(v).catch(()=>{}));return x?W_(v==="HKLM"?"hklm":"hkcu",`Windows registry (${v}\\${aB})`,x):void 0},l=await c("HKLM");l&&i.push(l);let d=[],u=nm(await n(o).catch(()=>{}));u&&d.push({label:`managed settings (${o})`,doc:u});let f=(await r(a).catch(()=>{})??[]).filter(v=>v.endsWith(".json")&&!v.startsWith(".")).sort();for(let v of f){let x=nm(await n(s(v)).catch(()=>{}));x&&d.push({label:`managed settings (${s(v)})`,doc:x})}let p=[];if(d.length){let v={},x={};for(let{label:_,doc:A}of d)K_(v,A,"",x,_);p.push({...W_("file",d[0]?.label??o,v),origin:x})}let m=await c("HKCU"),h=[...i,...p],g=h.find(v=>v.info.policy||"managedSourcesBehavior"in v.doc)?.doc.managedSourcesBehavior==="merge",y=h.find(v=>v.info.policy)??(m?.info.policy?m:void 0),b={},k={},C=(v,x)=>v.origin[x]??v.info.label;if(g){let v=h.filter(x=>x.info.policy);for(let[x,_]of v.entries())iB(b,_,_.doc,"",k,x===0)}else if(y){for(let[v,x]of Object.entries(y.doc))x!==null&&(b[v]=structuredClone(x),k[v]=C(y,v));if(h.includes(y)){let v={};for(let A of h)if(gs(A.doc.env))for(let[S,O]of Object.entries(A.doc.env))S in v||O===null||(v[S]=O,k[`env.${S}`]=C(A,`env.${S}`));Object.keys(v).length&&(b.env=v);let x=h.find(A=>A.doc.allowManagedMcpServersOnly===!0);if(x){b.allowManagedMcpServersOnly=!0,k.allowManagedMcpServersOnly=C(x,"allowManagedMcpServersOnly");let A=h.find(S=>Array.isArray(S.doc[Hd]));A&&(b[Hd]=structuredClone(A.doc[Hd]),k[Hd]=C(A,Hd))}let _=[];for(let A of h)Array.isArray(A.doc.deniedMcpServers)&&Z_(_,A.doc.deniedMcpServers);_.length&&(b.deniedMcpServers=_,k.deniedMcpServers??=C(h[0],"deniedMcpServers"))}}let R=await n(gte(t)).catch(()=>{}),I=nm(R);return{settings:b,originOf:v=>k[v]??(v.startsWith("env.")?k.env:void 0),sources:[...h,...m?[m]:[]].map(v=>v.info),mcpFile:R===void 0?{present:!1}:{present:!0,...I&&gs(I.mcpServers)?{servers:Object.keys(I.mcpServers)}:I?{servers:[]}:{}}}},vw=(e,t=`managed settings (${Wt()})`)=>({settings:e,originOf:()=>t,sources:[],mcpFile:{present:!1}}),wa=async e=>{try{return e.managedView?await e.managedView():e.readManaged?vw(await e.readManaged()):await Ete()}catch{return vw({})}}});import{readFileSync as Ite}from"node:fs";import{isAbsolute as xte,win32 as Rte}from"node:path";var om,Ote,Tte,_w,Sw,Pte,Lte,Nte,Dte,Mte,cB,am=$(()=>{"use strict";uw();ba();om="__anyray-sso-gate",Ote="__anyray-hook",Tte="--managed-source",_w=e=>typeof e=="string"&&e.length>0&&e.length<=512&&[...e].every(t=>{let n=t.charCodeAt(0);return n>=32&&n!==127})&&(xte(e)||Rte.isAbsolute(e))&&!/ark_[A-Za-z0-9_-]{20,}|-----BEGIN/.test(e),Sw=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Pte=/^(?:[A-Za-z]:\/|\/\/[^/])/,Lte=/^[A-Za-z0-9_./:=-]*$/,Nte=e=>{let t=P_(e,0);if(!t||!Lte.test(t.unquoted))return;let n=e.slice(t.end);if(!(n!==""&&!n.startsWith(" ")))return{binary:t.value,args:n.split(" ").filter(r=>r!=="")}},Dte=e=>{let t=Nte(e);if(!t||!_w(t.binary))return;let[n,r]=t.args;if(n===om||n===Ote&&r===Tte)return Pte.test(t.binary)?t.binary.replace(/\//g,"\\"):t.binary},Mte=e=>{if(!Sw(e)||!Sw(e.hooks))return;let t=new Set;for(let n of Object.values(e.hooks))if(Array.isArray(n)){for(let r of n)if(!(!Sw(r)||!Array.isArray(r.hooks)))for(let o of r.hooks){if(!Sw(o)||typeof o.command!="string")continue;let a=Dte(o.command);a!==void 0&&t.add(a)}}return t.size===1?[...t][0]:void 0},cB=(e=Wt())=>{try{let t=Ite(e,"utf8");return t.length>1024*1024?void 0:Mte(JSON.parse(t))}catch{return}}});var kr,An,so,Gd,io=$(()=>{"use strict";kr=(e=process.env)=>e.CODESPACES==="true"||e.CODESPACE_NAME?"codespaces":e.REMOTE_CONTAINERS==="true"||e.REMOTE_CONTAINERS_IPC||e.DEVCONTAINER?"devcontainer":e.SSH_CONNECTION||e.SSH_TTY?"ssh":null,An=(e=process.env)=>kr(e)!==null,so=e=>e==="codespaces"||e==="devcontainer",Gd=e=>{switch(e){case"codespaces":return"a GitHub Codespace";case"devcontainer":return"a dev container";case"ssh":return"an SSH session"}}});var Me,nr=$(()=>{"use strict";Me="0.11.395"});import{access as Bte,chmod as $te,mkdir as Y_,open as q_,readFile as yB,rm as Mo,stat as lB,utimes as Fte}from"node:fs/promises";import{createHash as Q_,randomUUID as gB}from"node:crypto";import{readFileSync as wB,statSync as dB}from"node:fs";import{dirname as eE,join as Ute}from"node:path";import{isDeepStrictEqual as Wd}from"node:util";var Ri,bB,uB,Hte,U,ae,co,fB,kB,lo,im,pe,AB,pB,Gte,Wte,vB,Vte,sm,X_,J_,mB,jte,z_,Vd,CB,SB,_B,Ew,hB,Iw,uo,Ne,Ue=$(()=>{"use strict";qc();bn();Ri=e=>`${e}.anyray-bak`,bB=async e=>{let t;try{t=await q_(eE(e),"r"),await t.sync()}catch(n){if(process.platform!=="win32")throw n}finally{await t?.close().catch(()=>{})}},uB=async(e,t)=>{let n,r;try{n=await q_(e,"wx",384),await n.writeFile(t,"utf-8"),await xi(n)}catch(o){r=o}finally{await n?.close().catch(()=>{})}if(r)throw n&&await Mo(e,{force:!0}).catch(()=>{}),r;await bB(e)},Hte=async e=>{let t;try{t=await q_(e,"r"),await xi(t)}finally{await t?.close().catch(()=>{})}await bB(e)},U=async e=>{try{return await Bte(e),!0}catch{return!1}},ae=async e=>{if(!await U(e))return{};let t=await yB(e,"utf-8");if(!t.trim())return{};let n=JSON.parse(t);if(n===null||typeof n!="object"||Array.isArray(n))throw new Error(`${e} is not a JSON object`);return n},co=class extends Error{constructor(){super("repair deferred: configuration changed before publication")}},fB=e=>`${e.dev}:${e.ino}:${e.size}:${e.mtimeNs}:${e.ctimeNs}`,kB=e=>{try{let t=fB(dB(e,{bigint:!0})),n=wB(e),r=fB(dB(e,{bigint:!0}));if(t!==r)throw new co;return{raw:n.toString("utf8"),fingerprint:`${r}:${Q_("sha256").update(n).digest("hex")}`}}catch(t){if(t.code==="ENOENT")return{raw:"",fingerprint:"missing"};throw t}},lo=e=>{let{raw:t,fingerprint:n}=kB(e),r=t.trim()?JSON.parse(t):{};if(r===null||typeof r!="object"||Array.isArray(r))throw new Error("configuration is not a JSON object");return{value:r,fingerprint:n}},im=async(e,t,n={})=>{for(let r=0;r<3;r++)try{let o=lo(e);if(n.requireExisting&&o.fingerprint==="missing")return"unchanged";let a=JSON.stringify(o.value);return t(o.value),JSON.stringify(o.value)===a?"unchanged":(await pe(e,o.value,{backup:n.backup,expectedFingerprint:o.fingerprint}),"written")}catch(o){if(!(o instanceof co))throw o}return"repair deferred"},pe=async(e,t,n={})=>{await Y_(eE(e),{recursive:!0,mode:448});let r=Ri(e);if(n.backup!==!1&&!await U(r)){let a=await U(e),s=a?await yB(e,"utf-8"):`{}
6
6
  `;if(a||n.tombstoneAbsent!==!1)try{await uB(r,s)}catch(i){if(i.code!=="EEXIST")throw i}}let o=`${e}.anyray-tmp-${process.pid}-${gB()}`;try{if(await uB(o,`${JSON.stringify(t,null,2)}
7
7
  `),n.expectedFingerprint!==void 0){if(kB(e).fingerprint!==n.expectedFingerprint)throw new co;let a=n.expectedFingerprint.slice(n.expectedFingerprint.lastIndexOf(":")+1);try{await He(o,e,n.runtimePlatform,{verifyDisplaced:async s=>Q_("sha256").update(wB(s)).digest("hex")===a})}catch(s){throw s instanceof zc?new co:s}return}await He(o,e,n.runtimePlatform),await $te(e,384),await Hte(e)}finally{await Mo(o,{force:!0}).catch(()=>{})}},AB=1,pB=3e4,Gte=5e3,Wte=/^[a-f0-9]{64}$/,vB=e=>`${e}.pending`,Vte=e=>`${e}.lock`,sm=e=>{if(e===void 0)return"null";if(e===null||typeof e!="object")return JSON.stringify(e)??"null";if(Array.isArray(e))return`[${e.map(n=>sm(n)).join(",")}]`;let t=e;return`{${Object.keys(t).sort().filter(n=>t[n]!==void 0).map(n=>`${JSON.stringify(n)}:${sm(t[n])}`).join(",")}}`},X_=(e,t)=>({exists:e,sha256:Q_("sha256").update(sm(t)).digest("hex")}),J_=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),mB=e=>J_(e)&&typeof e.exists=="boolean"&&typeof e.sha256=="string"&&Wte.test(e.sha256),jte=e=>J_(e)&&e.transactionVersion===AB&&mB(e.before)&&mB(e.after)&&J_(e.journal),z_=(e,t)=>e.exists===t.exists&&e.sha256===t.sha256,Vd=async(e,t)=>{try{return await ae(e)}catch{throw new Error(`${t} is malformed; no configuration was changed`)}},CB=async e=>{let t=Vte(e),n=Ute(t,"owner.json");await Y_(eE(t),{recursive:!0,mode:448});for(let r=0;r<2;r++){let o=gB();try{await Y_(t,{mode:448})}catch(s){if(s.code!=="EEXIST")throw s;let i=!1;try{let c=await Vd(n,"ownership journal");if(typeof c.pid!="number"||!Number.isSafeInteger(c.pid)||c.pid<=0)throw new Error("lock owner is missing or invalid");let l=Date.now()-(await lB(n)).mtimeMs;i=!oo(c.pid)||l>pB}catch{try{i=Date.now()-(await lB(t)).mtimeMs>pB}catch{i=!1}}if(!i||r>0)throw new Error("ownership transaction already in progress");await Mo(t,{recursive:!0,force:!0});continue}try{await pe(n,{pid:process.pid,nonce:o,createdAt:Date.now()},{backup:!1})}catch(s){throw await Mo(t,{recursive:!0,force:!0}).catch(()=>{}),s}let a=setInterval(()=>{(async()=>{try{if((await Vd(n,"ownership journal")).nonce!==o)return;let i=new Date;await Fte(n,i,i)}catch{}})()},Gte);return a.unref(),async()=>{clearInterval(a);try{(await Vd(n,"ownership journal")).nonce===o&&await Mo(t,{recursive:!0,force:!0})}catch{}}}throw new Error("ownership transaction already in progress")},SB=async e=>{let t=await U(e),n={};if(t)try{n=await ae(e)}catch{throw new Error("configuration is malformed during ownership recovery; it was left unchanged")}return{exists:t,value:n,fingerprint:X_(t,n)}},_B=async(e,t)=>{let n=vB(t);if(!await U(n))return;let r=await Vd(n,"prepared ownership transaction");if(!jte(r))throw new Error("prepared ownership transaction is invalid; no recovery write was attempted");let o=await SB(e),a=await U(t),s=await U(Ri(e)),i=z_(o.fingerprint,r.before),c=z_(o.fingerprint,r.after),l=r.journal.fileExisted;if(c&&(a||l===!1||s)&&(!i||a||s)){await pe(t,r.journal,{backup:!1}),await Mo(n,{force:!0});return}if(i){await Mo(n,{force:!0}),a||await Ne(e);return}throw new Error("configuration changed during an interrupted ownership transaction; recovery files were preserved")},Ew=async(e,t,n)=>{let r=await CB(t);try{return await _B(e,t),await n()}finally{await r()}},hB=async(e,t,n,r)=>{if(!await U(e)){if(n)throw new Error("journaled JSON rollback found a missing prior file");return}let a=await Vd(e,"ownership journal");if(!(n&&Wd(a,t))){if(!Wd(a,r))throw new Error("journaled JSON rollback found a concurrent file edit");n?await pe(e,t,{backup:!1}):await Mo(e,{force:!0})}},Iw=async(e,t={})=>{let{configPath:n,current:r,next:o,journalPath:a,journal:s,fileExisted:i}=e,c=await CB(a);try{await _B(n,a);let l=await SB(n),d=X_(i,r),u=await U(a),f=u?await Vd(a,"ownership journal"):void 0,p=f&&typeof f.fileExisted=="boolean"?{...s,fileExisted:f.fileExisted}:s;if(!z_(l.fingerprint,d)){if(Wd(l.value,o)&&f&&Wd(f,p))return;throw new Error("configuration changed before the ownership transaction acquired its lock; retry")}if(l.exists&&Wd(l.value,o)&&f&&Wd(f,p))return;let m=await U(Ri(n));if(f?.fileExisted===!0&&!m)throw new Error("ownership backup is missing; configuration was left unchanged");if(m&&!f)throw new Error("an unjournaled ownership backup already exists; configuration was left unchanged");let h=vB(a),w={transactionVersion:AB,before:l.fingerprint,after:X_(!0,o),journal:p};await pe(h,w,{backup:!1});try{await pe(n,o,f?{backup:!1}:{tombstoneAbsent:!1}),await(t.writeJournal??pe)(a,p,{backup:!1}),await Mo(h,{force:!0})}catch(g){try{await hB(n,l.value,l.exists,o)}catch(y){throw new AggregateError([g,y],"ownership journal publication failed and config rollback was incomplete")}try{await hB(a,f??{},u,p),await Mo(h,{force:!0}),!m&&!f&&await Ne(n)}catch(y){throw new AggregateError([g,y],"ownership journal publication failed after config rollback")}throw g}}finally{await c()}},uo=async e=>{try{return await ae(Ri(e))}catch{return{}}},Ne=async e=>{await Mo(Ri(e),{force:!0}).catch(()=>{})}});var Je,jd=$(()=>{"use strict";Je=(e,t,n=0)=>{let r=e.indexOf(t,n);for(;r>=0;){let o=e.lastIndexOf(`
8
8
  `,r-1)+1,a=e.indexOf(`
@@ -79,7 +79,7 @@ PRAGMA wal_checkpoint(TRUNCATE);
79
79
  `;)t+=1;continue}if(n==="/"&&e[t+1]==="*"){let r=e.indexOf("*/",t+2);if(r===-1)return-1;t=r+2;continue}return n==="{"?t:-1}return-1},Eae=(e,t)=>{let n=/\n([ \t]+)"/.exec(e.slice(t));return n?n[1]:" "},Iae=(e,t)=>{let n=e.slice(t+1),r=n.indexOf("}");return r===-1?!1:n.slice(0,r).trim()===""},oI=(e,t,n)=>{let r;try{r=Ur(e)}catch{return{ok:!1,reason:"unsupported"}}if(!DF(r))return{ok:!1,reason:"unsupported"};if(t in r)return{ok:!1,reason:"key-present"};let o=_ae(e);if(o===-1)return{ok:!1,reason:"unsupported"};let a=Eae(e,o),s=`${JSON.stringify(t)}: ${JSON.stringify(n)}`,i=e.slice(0,o+1),c=e.slice(o+1),l=Iae(e,o)?`
80
80
  ${a}${s}
81
81
  `:`
82
- ${a}${s},`,d=`${i}${l}${c}`;try{let u=Ur(d);if(!DF(u))return{ok:!1,reason:"unsupported"};for(let[f,p]of Object.entries(r))if(JSON.stringify(u[f])!==JSON.stringify(p))return{ok:!1,reason:"unsupported"};if(JSON.stringify(u[t])!==JSON.stringify(n))return{ok:!1,reason:"unsupported"}}catch{return{ok:!1,reason:"unsupported"}}return{ok:!0,text:d}}});var uu,BF,hl,$F,FF=$(()=>{"use strict";uu="0.1.32",BF="91c569720a0cdd5d6b016c4504faae01a7876e059ea21835482478dcbea4750b",hl="55798c2fea15149413bada49722697241dad15dec4586745dce7955745ec4523",$F="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"});import{readFile as GF}from"node:fs/promises";import{homedir as yl,platform as fu}from"node:os";import{join as Is,posix as xae,win32 as Rae}from"node:path";var gl,aI,UF,Oae,WF,HF,Tae,Pae,vb,sI,VF,Lae,Cb,iI,wl,jF,KF,ZF,pu,Nm,YF,cI,XF,mu=$(()=>{"use strict";Ue();gl=["Code","Code - Insiders","VSCodium"],aI="1.121.0",UF=1,Oae=121,WF="1.102.0",HF=1,Tae=102,Pae={Code:"Visual Studio Code","Code - Insiders":"Visual Studio Code - Insiders",VSCodium:"VSCodium"},vb=e=>{let t=/^(\d+)\.(\d+)/.exec(e.trim());if(t)return{major:Number(t[1]),minor:Number(t[2])}},sI=e=>{let t=vb(e);return t?t.major!==UF?t.major>UF:t.minor>=Oae:!1},VF=e=>{let t=vb(e);return t?t.major!==HF?t.major>HF:t.minor>=Tae:!1},Lae=async e=>{if(fu()!=="darwin")return;let t=Is("/Applications",`${Pae[e]}.app`,"Contents","Resources","app","package.json");if(await U(t))try{let n=JSON.parse(await GF(t,"utf8"));return typeof n.version=="string"?n.version:void 0}catch{return}},Cb=(e,t=fu(),n=yl(),r=process.env)=>{switch(t){case"darwin":return Is(n,"Library","Application Support",e);case"win32":return Is(r.APPDATA??Is(n,"AppData","Roaming"),e);default:return Is(n,".config",e)}},iI=(e,t)=>e?t==="win32"?Rae.join:xae.join:Is,wl=(e,t=!1,n=fu(),r=yl(),o=process.env)=>t?iI(t,n)(r,Nm[e],"data","User"):Is(Cb(e,n,r,o),"User"),jF=async(e,t=!1,n=fu(),r=yl(),o=process.env)=>{try{let a=iI(t,n)(wl(e,t,n,r,o),"globalStorage","storage.json"),i=JSON.parse(await GF(a,"utf8"))?.userDataProfiles;if(!Array.isArray(i))return[];let c=i.map(l=>l).filter(l=>typeof l.name=="string"&&l.name.trim().length>0&&l.name.length<=128&&!/[\u0000-\u001f\u007f]/.test(l.name)&&typeof l.location=="string"&&/^[A-Za-z0-9._-]{1,128}$/.test(l.location)&&l.location!=="."&&l.location!=="..").map(({name:l,location:d})=>({name:l,location:d}));return c.filter((l,d)=>c.findIndex(u=>u.location===l.location)===d)}catch{return[]}},KF=async(e,t=fu(),n=yl(),r=process.env)=>{let a=(await jF(e,!1,t,n,r)).map(({name:s})=>s);return a.filter((s,i)=>a.indexOf(s)===i)},ZF=async(e,t=!1,n=fu(),r=yl(),o=process.env)=>{let a=iI(t,n),s=wl(e,t,n,r,o),i=await jF(e,t,n,r,o);return[a(s,"mcp.json"),...i.map(({location:c})=>a(s,"profiles",c,"mcp.json"))]},pu=async()=>{for(let e of gl)if(await U(Cb(e)))return e},Nm={Code:".vscode-server","Code - Insiders":".vscode-server-insiders",VSCodium:".vscodium-server"},YF=(e,t=yl())=>Is(t,Nm[e],"extensions"),cI=async(e=yl())=>{for(let t of gl)if(await U(Is(e,Nm[t])))return t},XF=async e=>{let t=e??await pu();if(!t)return{status:"unknown"};let n=await Lae(t);return n?{variant:t,version:n,status:sI(n)?"available":"needs-update"}:{variant:t,status:"unknown"}}});import{spawnSync as Nae}from"node:child_process";import{platform as Dae}from"node:os";var JF,Mae,zF,Bae,$ae,qF,Fae,Uae,Hae,Dm,QF,Sb,Mm=$(()=>{"use strict";Es();JF={encoding:"utf-8",windowsHide:!0,timeout:2e3,maxBuffer:64*1024},Mae=(e,t,n)=>Nae(e,t,n),zF=Mae,$ae={Code:{bundle:"Visual Studio Code",linuxBinary:"code",win32Image:"Code.exe"},"Code - Insiders":{bundle:"Visual Studio Code - Insiders",linuxBinary:"code-insiders",win32Image:"Code - Insiders.exe"},VSCodium:{bundle:"VSCodium",linuxBinary:"codium",win32Image:"VSCodium.exe"}},qF=e=>{let t=Bae??Dae(),n=$ae[e];if(t==="win32"){let o=zF(Ho("tasklist.exe"),["/FI",`IMAGENAME eq ${n.win32Image}`,"/FO","CSV","/NH"],JF);if(o.error||o.signal||o.status!==0)return!0;let a=`"${n.win32Image}",`.toLowerCase();return(o.stdout??"").split(/\r?\n/).some(s=>s.toLowerCase().startsWith(a))}let r=t==="linux"?[["-f",n.bundle],["-x",n.linuxBinary]]:[["-f",n.bundle]];for(let[o,a]of r){let s=zF("pgrep",[o,a],JF);if(s.error||s.signal||s.status===null||s.status===0)return!0}return!1},Fae=()=>qF("Code"),Uae=Fae,Hae=qF,Dm=()=>Uae(),QF=e=>Hae(e),Sb={darwinAppName:"Visual Studio Code",darwinBundleId:"com.microsoft.VSCode",win32Image:"Code.exe",linuxProcess:"code",win32Install:[{root:"localAppData",path:"Programs\\Microsoft VS Code\\Code.exe"},{root:"programFiles",path:"Microsoft VS Code\\Code.exe"},{root:"programFilesX86",path:"Microsoft VS Code\\Code.exe"}]}});import{createPublicKey as Gae,verify as Wae}from"node:crypto";var Vae,jae,Kae,lI,Zae,Yae,eU,tU=$(()=>{"use strict";Vae="anyray-client-asset-manifest/v1",jae=[`-----BEGIN PUBLIC KEY-----
82
+ ${a}${s},`,d=`${i}${l}${c}`;try{let u=Ur(d);if(!DF(u))return{ok:!1,reason:"unsupported"};for(let[f,p]of Object.entries(r))if(JSON.stringify(u[f])!==JSON.stringify(p))return{ok:!1,reason:"unsupported"};if(JSON.stringify(u[t])!==JSON.stringify(n))return{ok:!1,reason:"unsupported"}}catch{return{ok:!1,reason:"unsupported"}}return{ok:!0,text:d}}});var uu,BF,hl,$F,FF=$(()=>{"use strict";uu="0.1.32",BF="91c569720a0cdd5d6b016c4504faae01a7876e059ea21835482478dcbea4750b",hl="6ddcb889ed7cf64ece846609c7184670c61a9187505ee3c575049c4dceef35bd",$F="UEsDBBQAAAgIAO8sU10ZI9l+NAMAAK4KAAAWAAAAZXh0ZW5zaW9uLnZzaXhtYW5pZmVzdL1WTW8bNxA927+CYIGeItJyL4W72kCQ7USoFKiQ62OBETlaseaSBIcrS/n1xe7qy4qTVHKQ2y5n5j3OBx+ZvV+Vli0xkvGux7viijN0ymvjih6v0rzzO3+fX15kE1BPUOAYnJkjJfa4DbkWV3XQqrSOenyRUriRktQCSyBRGhU9+XkSypdS4xKtDxjlklad1kdeX3W7m/AbfQZARyOZwrU4+eXFRTbGBBoS1D8X2VCjSyat2QhcUUGBPY6u8/eUs6HucXDrCOvOkpTXyPdZXYmu+O2as0k1s4YWGLeunMkW99ZQsLD+BCXm/cbE5j6yxykbeI2ZPLS3AUgqmpCMd3W6NxRAYY+HiIRxiTzva81wFaxRJrENZAEJn2HNSq/REvNxY+g8RwgBNRv4YKxPjKrZHn7jnRbRV8Viu6dfIXj6g5ifz40yYJndVKTT+LMQ/dJojKw/GYpMHuy3TeABCspfxlAmm9XGPoCEhY8GKe8P341BLYxDNkKIzrgikwf2xv8DWItxfW9rhKbQKpMvFmu3xnUS666nbehuYd00cbwbkkdDFdhpqrTxos5Z3LnCuLqzYCvs8X+6onvdTLk8GWmV0NXTcYsBnUanDNIO+C2A9dn6IUB/Gqd3QM8+PjUz9q4yZ4COvAJrPqPenpu35epgZlH3g6lDPIF9Be7ktFFVCWnQHt0WLMUKzwCcYlwahSRGxj2RmPoqqj1oLUp0I2Vh0qKaNVLUqsHHv2TpnY8YvChMOq0wR5wfMFGCmFD/ZF6TPlazn8s5rULwMZ1EKg1RVU/hG3gbMTqJ9ZeIoMujkTqDv63yvYWlj6jHEJ+0f3avj+1pyAPvErokJtEo44od5H1E5DK/fLntTB5paTYyCh1hjlsVkaPh4O7T9E6kVcrk1txepsq7A0ejvBOh1vbGUF++8vD2zYaOElgL+0vkcOUBYoHpe+ecyxb4GCs71OHWp0+EaZNW880e1gG/rSLbFw1nE0iLHt9nF9onj/iXvOOsr3VEolrGXrbr/zB90axbTGBqDTwmbcdNlPprjGfRbZr4Jd1Bq38IYT0HJG5xDpV9paTbgfl6OTO5a2Imjx6d+X9QSwMEFAAACAgA7yxTXVr3VFTSAAAAzgEAABMAAABbQ29udGVudF9UeXBlc10ueG1sfdHBbsMgDAbge58CcW/IepimKUkP295gL2ARJ6XFBoGbsrefWG9V2dX251+Wh2MhrzZM2QUe9UvXa4Vsw+x4HfVVlv2bPk674fsnYlaFPOdRn0TiuzHZnpAgdyEiF/JLSASSu5BWE8FeYEVz6PtXYwMLsuyl7tDT8IkLXL2oryLI99zunLX6uM/VqFFDjN5ZEBfYnGGDbJOLok2LB/5vQW03KM0PULCIIUiXOdyaKvL6wBzVg2u9QaTIs6TowTVjtuwKAbsF81NcyFdq/t4z7X4BUEsDBBQACAgIALksU10AAAAAAAAAAAAAAAAVAAAAZXh0ZW5zaW9uL0xJQ0VOU0UudHh0XVFBbtswELzzFYOcUkBIixx66I2RaIuoTBoUHddHWqIjFjJpiHQD/76g7CRNTwR3d2Z2Zldco3Gd9dESUobTZXIvQ8J99wWP3x6/g/rLZC6ErO10dDG64OEiBjvZ/QUvk/HJ9gUOk7UIB3SDmV5sgRRg/AUnO8XgEfbJOO/8Cwy6cLqQcEAaXEQMh/RqJgvje5gYQ+dMsj360J2P1ieTst7BjTbiPg0Wd+0NcfdlFumtGYnzyL23Fl5dGsI5YbIxTa7LHAWc78Zzn3d4a4/u6G4KGT77jiQFnKMt5j0LHEPvDvm1s63TeT+6OBToXaben5MtEHNxDrDIPr6GCdGOI+nCydmI2evHdvNMXv2UA023iGKuvA7h+NmJi+RwnryLg50xfUAMs+Jv26VcyeOHMI7hNVvrgu9ddhR/EKIHC7MPf+zs5XpWH5LrrnHPBzh9XPXWioMZR+ztLTDbw3mYf+xMWT4m45MzI05hmvX+t/lAiK4ZWrnQW6oYeIu1ks+8YhXuaAve3hXYcl3LjcaWKkWF3kEuQMUOP7moCrBfa8XaFlIRvlo3nFUFuCibTcXFEk8bDSE1Gr7imlXQElnwRsVZm8lWTJU1FZo+8YbrXUEWXIvMuZAKFGuqNC83DVVYb9RatgxUVBBScLFQXCzZign9AC4gJNgzExptTZsmSxG60bVUeT+Ucr1TfFlr1LKpmGrxxNBw+tSwq5TYoWwoXxWo6Iou2YySumaK5LHrdtjWLJeyHhWgpeZSZBulFFrRUhfQUul36Ja3rABVvM2BLJRcFSTHKRd5hIuME+zKkqPGp4tINf83LXsnRMVow8WyzeBs8W34gfwFUEsHCLKGeo15AgAAJwQAAFBLAwQUAAAICADvLFNdC7fjr0sCAAB9BAAAEwAAAGV4dGVuc2lvbi9yZWFkbWUubWSVU81u00AQvu9TjNQDbUgclSOcol6oRCVEUAFVSJnsTuxRnF13ZpzUPfEQPCFPgtaO+xOJA+ed+eb72zNYxE6wg00SuF3CVQrk3CIEPT7MlGRPAXYpUK1gaZwCX6GBVZLasgKrCNJmw56xhhpj2WJJs37JNZL2HEhg8fkazsf1y+Ly3eXbiwJuBmRsGkIBjj1WD96vQ8N+SwJtzBBWkZtMBmqTCYzQ74Eempo9G5RodMDuSHgKSaBLrQA9sBrHEq5Sw3Uyp+1avXBjnOIo7yCZRoB117M4ejNCagLak3QgdN+SGrCCCfothalDM+F1axSmgDFAaox3/DiA9QySlBj5EfPBN6O/EKipU7ejaIVzZ2fwMR0gyyBTqEjIua8VAT0YRc1MWSEmA45qWNcUYCNp17O9QdmSNTV6KuDaQCtuFNZtDHmMo3Igd7fCIVefYiRvq5/nlVmj7+fzkLwWw2uBPOdoVErPVufH6YspHCr21XheXT58u7z+3msOVPOeRHs6o2s+xQ2X7YAEoZUcwgmLnH7drYqsVeioscqDlp4AKDtZYQyDUd/6US8UKBpjrZCPO/cje92QzFoleWKxpS7DqiXpzXiq8ZK8kC0tCZYEf379hphDziMIG67JZdas2wJyECchvur2ljo9bguhz7+CFXboK470IZvSOTXsIMWXDg1yvtB9y0K5COrcDF79k9ziGo3EzWART3v5XKHps1kB9oynPq/6U58IJVc+l2sGd2MRk28zRi/tX624yAtXx9BeNATKlgP9X5fcX1BLAwQUAAgICAC5LFNdAAAAAAAAAAAAAAAAEgAAAGV4dGVuc2lvbi9pY29uLnBuZ91Y+VfSC7D/fuF7VUpzIbeyQFQstdyyxUqwUHFvcbtaQmouqVGZVpqAmQluaYuhadjikpbYLTMzAxXLe90r9xLTayouSGaSIrzTe+ed9x+8d877nDNnPjOfmXNm5sdhHvJwUlmzYQ0AACrORMIRAACB36akAADAsXNlob+jmCNOB4DKDr0pAAAIJ/2cQ93dARMAAJQAMDUCgID/atoA/Aa8CATg/5kBAaAI9t8qCBTB/4f/RphwgzMAaNxwJth7XQRnC1srjJw2va8TpbgpODisP7YbnWVo/S00NEjLfrQ3GqueOfBLO9wrY+D1WWSDogycO04I1bqGZqz9I8zmekYoVnX9KEYNOmz1byxlwHvCq9B26fzSrFPsEqfcTjH0NYXr0VMqXJklefv2bV1jp0YHIDQAKuEB2P93+gFTlMaeeWxut/z3i3MOp5fV+qdjLN5jHUcatGmBBcuTnsKZhjz+Occ4Ww0eYHvFZdYidq6xM221Piz9rzden2tomkji06t146UzcTpOxQQeg0YROTV3d5sEJPQk4h9vbJZ9RY7PDlGKb/l+/+ABwMMnbn4e3iQe0guC5RJ8XPMBXc0aW9rXlEbuwsqlvm766XV6c6TDij8QkvAjgcYwYu35+jc2w7/qg9tMcnhnMc5ydyj7vLjSqu9P6fK8uyH+PVkhNlkJLT4wZ0Rl/5FD9zQYiFVGDzx4avtz8eHbkp20O5eDYce3OCQqu9PL0jl7xA+bOebuMUW6ZzAJDEBjKxG3saSG+zmhY//E0oV1f5IcYH0VZ2F3dI0toKLPMRZA7UnrLSe/dZB8ki9/is/uLKr4VOAlJOc0HLAJeTB8FSQcvzzEZLtJf0ZagK6YPKNEgLm+OHIh9e3CyuUf1b7JKZVWfi2KSJGtOv7NyYkjc3zK+591+5FP58+TMVULJC04i32pi1Kwb4bisg3bRcCWz+rgvZqrC/ub+ZSbSQg/je7tlnRi+umz4oDTLLqR+rgGnFHVz2cI/mqCzJiTufv+YDxp4TNJC8F8ckh1+M1jGLrKWnEkpll09HkOT7Gn7QDF6nn2dUehrQK6OiSr2PWNJDreEnTFpBkpqNlbOhhQWzWQVYZ8c0vgq8P6Qsk2z0iY245TTMaxIACTfvJ2WXgzJe/7HN1IP44JKm3Ln2ym1AbBcq+2GCmgq/xuqHNPpiP8NEZzM+BqPoZ/M0kLNpQt+Vvf54V7+SUawNS80M5pgglXw5GPas+yQMaWa4vQvaNt/xoY0rbrsugH9U+kYOn0I0RZh8i6ZM/IR7/LhUrkr5gWF6ldJAZkvwuaJgDp9zmN1JWAxKMeY9VkmT83HomYD7j6tKjkizNksU3wruLuXjkLNRv+5lzIXh3LV+FJ6qAZHSVO6Lp0uz/ZUm6izmtrU6fBz2xEzJuchRdF7ESCbk3VP8sZXK3WUw8zobkh7oOOzQURe24cBxFqIHR1IG4rX+D4fsjJcKSBRdWEs+6JJaSpQv3MB28b8wGOhmegmQ6Pz6hdUIUyEMpQn2iHchGKE+hkIAt8Faf6DorLg4avgJDCKfNUyTZmjqsb2ZD38+OlNV0dYV2BfJxSwKrzzymevqeiEMwccoEssgQdAwyaojNLpYI4Ev+MdrH2TfutsRNFPrifesIDx8JWXcybEkor1rDwZ17uAGH64x0opZChkz7tSU5pTYmhWqfGPgWj1PGqfu6pGBnWChldsylZeeNmFR24DrOLgUvNu+x4bg3VdgEB2bsgyZAjHwcb7j+a50k2s4+xU+fhMxg09Kuu0oFvQNM1xRwjmA69vfpXTMHfYQDH2VP8HqE3r3WC1EsA9jP3iKfT3jutAzFJ9ieTwB88x34BvFcjNQhW/zgY2JSjL8sqyrVTRk56w3TwiscYXLihcyoZVuia7MFDHtKXIQHnz/VTOiH8EcR4MvgCsFr4ad1SmpI9crwXYgVXVWeHw3aMfO0QANiX7S/38Kq+Dt5oAk5VoWUbtlhSGqENrqrw3dcUxCj4jX/YLHy0cxCwWYsvaiCeva3NiHPRhPsZ2Ev3xhq0q7B4PrVBgOY6Ptfb+IMcjjxzsmA1GM8XCQ/Ymd71ZT5HGWfHQnTJQvflaA8m9L1w/XpxnwuGm5l3F5/rDvDZ7I6NMQWXYtB1WGCUcuvA8F6rTOgvK4DPrnnn2ZZ4DZvtjuQxSPJwxY8XC8uSo1Tn78Lz3MxzU0BWzbKk+V5U7BfTsUHon+9HFscMfL0UsNlvwCdNsok13+ani5OfqAbWuxQ0m6sZfVEcaaTy2dX3FMPskrUZN2wAPu7VYMwDT/RZJPEDoMYlJf+JckefQBI7ADX5pLDjD6GSH5I4o824YQXwSb4xA1oZ+CvY7AwQLSP3FKytVie2QTcuKrfEyF5uaH1bBM1ENTEzkIxhoK2Q+3lsD63Lv6PZH2G4wwMtxAInaJE2Jyc+QRrh6wgbQbTsceSuPlwOHtaetEUFELP9bPaQt8Nydik+iIQ9oVWm75Qf0ywQTTmSe/ReBc6gArdTBNSKIedWlOZt8Mle6cXiC7/iD64RKhF2s/E7FOiS6VN6Q3x1Rhv0YBJ+JpqKXVDzFTh3WcLu/oIq31mw6RIlHpN04eV8Et4MwlwibBkElFaCH88+ep6Lh7DoXkCNFn07KDgKunqXToTjpc96zn0YcsFXIRjWAF/gf7tf1xS8j0ULt/Lis1U7fwU//fdRXR4dFyWZacj7Bp/4YoCFjXTgKA0L0WvVq3J4iqmetyjbcUGHroJoWYqJAalOGbTHVr0C0bKTQrTgtQWoj60q+62Z6pO4ZmAkbK3Hjtes3/L0ZsH2q7xG0TqzIIBBIo4b6FopmYXDnuMUCFIrod5jNQJP7j2ah1Lv2ACiqfa3sx61GFThDS0CILpkvGfXEcMMutxE7JbDM1MHRrV9uolZUTBrR9hNJ4BBijtuEAtDtPUbW0RAdMkfPttvrFdN0sUk/Y0BDGT1+wNnmKWvc45EQFLiCDlfm4G1BIypJeIbPsVEzyhImtWAcEP/XqH/lM6Upid5wUTsrSmZwnfZAXzztyY5PBai/4Ii7K2LXhugRmuzSX/hdBBdhYAsAT7KfVH//lY1pXDYQxVAXHroYcvB85AP1mK5RslJFxi9XjmYPXJLqZ9I5l+GJf+u8LrZ4voCcsznoeF4abePtsY9TJI6titBDxj1fKaQU1qGyNAx7jKF4aWHfZEabNskMAcfBsdLH/dt/n4HSrqH7XqMoEtulm0IwSjC9t+FGzsCDFyq/8HNNw26LDXCbQAD2Q3f+JsVeiFbVGGbviHDo2Bo2T6hUq0bixdql2Ra/tV71B9uwf3QGrIZ0af8V65KUs9l2PX1qSvV2KqPUFE7270H/XCPevgkst8KaJQVnIIutWfhMxE68ENsuXBqdGyJ6n9rXHXNx9Mt69z7le9EkrxNZmJj6vO//mlZfDqLA/ZCXuLZ7x3tfT6JACphKUbzi8hL/o5mP+fbRb/+SbS2OHD7D1v2WeiF5Pay7/11tMPHJ8M/N++uqxqDvMSvSk6cCr+01ItLW/1+rlh+oXwL4HIQoXNhf/zj3d77jpctcb29P+PIsIMnfCbyXpcNb1+XTsm9EPjrRPXXlZ6dbmToSJPXJjvScP2vjYm6F9JN5HELnSkm7EZI4UP1qHz+h/X40wBR7gWRjLPb2+64A5zFU3vkI0VpeuZyBK9LzA+nPOFWCo2xFldLwTLKnFPnHc7b71fq+R2zgfsvTokfeHFN/xl93rOpbfP7vzLpSHl92D+7hiUcWtlyY7Gn5lKFQCthvM9dMi4Kqb+Hz5Sswntq0wVPhRPmFctTp8kyam+kkk7J0Gif0yxgJhqWrM3Bq/BK3D2kPYVylmRx6ziOIi29eJ1YhBB0/ETyKSwNxAw58ktR3ubZNBL7eTAQb4At2npeEsWUD/YWCnAbkfMRL54EiO/creJOhefD3UOyomtGuXWIlVWDuHxA5rHIa+Z4a4kx7SD7n/gvTNquGc6ewagHe7oIJYNz6XJRxU5aa/dp7XYwNejCOCSeRp4yABKKv1eXB8+XSRQ2Jee2xE/xSaifqL2Dq1MY8N663djQZgb3Yp0/rXxGn5q4PYeu/2qFpCjeSK0Lmzt9P7greJQvWO0QFUb79BSXB8+vlgdXPQo+EzvB4ZPKjVfSBBMuhiPdk1uoiY6RENncmc3LJwDiadPbu8qz7FcZFktE3vAvpzSBRXHwGW9nlY/lTZz77Vzb8AVaJIr3rarHvzcHjxavuLmzeVNuBuDRwxX2dq+bOGH9Iut9b+/FGnaNdVBqF62AxCO5m5KRDIEW/rdnCizbzxbwAHFkYGE+oPUkMD+rocBR2Va8ND2/kFf9tC6r4Zijsr9YdXI+cmxS1FoZfKZIYvN8WKHI0yoRtmffpn4N2kIMtT2k7T2Lt6qrrPW9WS58ys06EfehdoDFUxJHXqu/C9hJHq1AoRpyrc5bqSoBYsXTCytSYe/NOaTOVmp75CGIbG+8cp4MiiNLKvdkD35MSuFTWCXL59F0iQpqVdDveSSHjpTPT0gfXhKehYmMvsO6r4wuteo/JvIsnqKGRBO1rctlWLr8D2cWHRAHlDjv26SGob7fkVIKT5qT5jpbwLu0MwYhiCnQ8viEJTdzElaM5+afv3lt1lObLPQeXd1NMlp3caLmieMi2J/eX5xge4iw83k2/vc8nuiXTld9pK+bPLMlKh/31owVeIXAxBs3L3O7UEjEjPfNtPXqbiYYLyk1j6CJ8BOvrVtY2bcY75UIy39MZXPH5ofHLkWv7A1H8uQPtuTD1RkCq8xG6IkkjPopTHfxeKX7iG/PXt2bU0WU/Lgs9iHpct2VnaCUn04jTPJx7Uo4tgMjVtye1MLntIbs95scEGYS8pCZHmbUJjRhPKruWguRx6TVOiVGtw3+zPNlFu/HZByS2gXntCfp8jm6bRrLDKskRjPF9GnEOuKl9K40eVN5jTwzInVpUOr5bP1JmDWTFFPwBDGifYP1jY6k6Z3gdnaRdrWDiAWEn3h6J40/2hfV/GYvmc+h7nNIZZNSZ5bN1OmrfzkYgMYySSO1VSQ51/2NrsmdH5aNtXksJ3QTye/2csctXCEyN+oZEW0vjiwJDb1vNIx5MaotKRD0Vt9vbcaATefznRKjzUJtgMLsAXceEzdXxX2sFrYLJEnBsO8R/wg0hsJ2gQkTS9RnYZWXOweheWsb1xgeE1dYJQib5HR+0GvBSwPcJnR2RjXjGtAonLn79HMnYKf+TSeYLpNkXbhPo8VNem3qU9M1bS1ux1iQAhnwXLQO8ZBGXFvNP/7lPYu3Hncw975km+DvfDiMz1l4VQZOQtB16CUf92VHoO2sBu40n1zm7GClxd0mGMGiCVJbWvpGusdVyyS1GOXQ7dT2I7QrmUi81LQoP6IsLwViCj5p3jkImj60VSiUfBTNT/t7PaQmKYn7gjbbeOBZklgF7YQ1h1xrBne3QGo0ZEdQV8BVBjendNiyBYLSSBMOBCTemE+NX0KgqemVcRH58ESFtfoy/yzZu+F28P5o3yWNMMD2cOHva3GGqe1lnaULBgf4At3IMKSaGbXwz7PuABfyvwsPGO3k1AgmPsXWx1Zla8qdetL3cwSvexfza1F9g3oWbk1tw3s1w7oViqyPR8I8pOcli091qhNhPtKctn8/7uo8iiJFwtQZpBh1CmCbE4Ataih/eCdNNba/s5C0MLUyYAUWl3+sIE2Ndwi0x3rFHdCx5/4/C2mmYkvpfdptv0KuRLTmR6vQ9Xoi5toOV4+HO8HYuUaUaYmozJx00e2cf7Dz3fj5xqVPv1yXPv1KZV83aj9cfLQwQXJisesgO8uk+wqyYvPFH9ZCaQq8wTlje4RmJ4dwJ1xD+f/+k/G/QpN+KElR05H+D02/unJ+f6mcHTwIlQfIV/4DUEsHCDBWrcBOEQAAKBMAAFBLAwQUAAgICAC5LFNdAAAAAAAAAAAAAAAAFgAAAGV4dGVuc2lvbi9wYWNrYWdlLmpzb251VNuO0zAQfe9XjPKCBMRpy1V9YrWAWMEiELcHLpJrzybDprZlT7qt0P478qVJQPDkds6ZmTO3/FoAVEbusNpAJc3Ry2O9D8pqrO5HSFNwvTy+LYyzxIAr6+HzBzifaBiUJ8dkTaJpDXhwPSliKD6tZLyRR9hZjX0A6wtQ33jpHGo4t456yxCG7RjsxObO26HtTknvBLBXV6RI9tBL0w6yxTpRwXm7J40ezt5diCxujz4UYUuxEg/W2ew87SXHstgPmE3DtqfQoZ+6kbk9KTQhteDy4mO2kcox4yucabPVo7OB2PpjtYFfCwCAio8uubbEiQRQDb4vlnsdswubpmmJu2ErlN01OfWr983OGhsjipmrJo+qJKjyrGo8MJpU5ALgNglB05LBMKkoY91A9WMlVuuVWE5kJRlb6ynxv2b+2cUp46VUHRmENyi9IdNGv+/Jbycp9UA0mgI3owzxM+R2jJbXZPQU+8b66+CkwrEfNAVV0skt9cQ0lz8Y9kNg1F9OvhMIUIXBOesZdZlnst+OBUrFcdpkzYs9Gp6Vac0Hlp4H95JMnL0+SbLmk5+rsoY9bQeeizot32XcvfNO8ruyflMCGDWmVTTa/r1dBfvnqVUFv03v97GefCEzJduB+lh7ZaxGwJD+i12ZQ9xtqa5li5t9oEPZHIRihLo2ttbo0Gg0ijBAXduB4Y8vgkiuJdyNZNX9Kx/UdcbuT8uvOlTXkcxBpVwvdtM+MwYeA9U17eIcgcMB6jpi8K0KXjXxZ3NXxEdw+Fad3LO2jfNYrvc/opy3elD8x41o3D+fFT1181lUHRpTDmb9WDwWj04ZCzjdUzynpViOeEYiIcEPxQwsovLHaP1UrMc2hEMmrx+I1aN59/KsI/hELMU6yV/cLn4DUEsHCBQTu0ihAgAAuwUAAFBLAwQUAAgICADvLFNdAAAAAAAAAAAAAAAAGwAAAGV4dGVuc2lvbi9kaXN0L2V4dGVuc2lvbi5qc+V923bbOLLo+3wFxeOlTUxg2k7SmR6qYR3HSXfSnVvHTt8UjU2TkIWYAtQk5EtL/JZ5O/u/9pecVbgRpCQnPbPXPg9n9eqYAou4FICqQt0QLioaVLJkmQwH12kZPJXk7cUnmsk4K2kqqSr8wZbldMI4fVeKOS3lnXr3q/vgksq3N9y+fEarrGRzKUpdxRawN+mMVgriFx/iXSmkkHdz+naCf3Yv5rY0nqaVV4n6/jdJIoolIofLiSgjKOIB44FEP0QUc7y8pDKRIz7GlC9mtEwvCpr09mtU4zdUfYo5FvA5m0Sy34d2xCSQhIRCNR+uVl7ZZMEzyQQPEbRWUBmUgZgEP8hIItT7WcZZWhQRxSXq98seIbzfh36Uuh8RIodyVLb7Egnyq4wkLhFarUTcvKrRoKRyUfKA1mqsL22HETmMOKE9whdFMXwqo19kRBFKljCoSK5WPQr/x2dntHot8kVBhz9EHIc5naSLQoZ4eZ0WC5rQLlISjilC+EdJKDl8Q6MfomWNw6Ya9yUAY4pUtwpBlvXgNxkVAi/TTLLrVFI11krgnLZKUlGjwUzVFdPbuShlRX6EL3VVr8lLGpX09wUraRReV5nIaYgQ/lYSV8pFTpOsvJtLESL8ovtmUu3NSzFjFa1CXeknEqb8rkzv4stU0pv07ljwCbuMrw9C/Ev33Q/0Tm8JygmnN8EJldEoXFS0DHEoaToLcci4pFy6h1fpBS1CHFa0qmBpjBGWHBBICSFhIbK0mIoKFpIqGCXJwThcrfb+cfDwb9Ew+Rh/zJcH+FGNlo/qnb1Y0gpmE/8MVahVqZcf7ZEQ9iy/DJFeF2E4kOXdElahVJ398P5VRGNZslmE3OIxGygTRY+QcCrlPAn7/fXSKoGl7oqJB9yTPJIxDIKnM4oADDACP9QnaVXdiDLXz3IK5VDrnqqwommZTeFpmlbTYRgmMhYlu2S8zlKZTZd2MHWNf4Mxw+L1xuy24VEJ88Qq9TeiaLisE0MiJqWYPeeyZLSKTBE1PymKJ6yQtIyikcR8jMgh5dCVSCK33TlxuO33eVxQfimnh/vN8zfk4VdP+v3e3ujjYn9/f38X/hxM4N+/TcZm0jhC8SydNw3pvwjvUBiXHZPf1t4/0vLqbHS0+1u6+8f+7t/PdsfLh/v4q4OH3lIY0uRasDzYx6+2VkS9TtOm0/v7n+u0X/1Pdsn1urg2K240HujVNhpjtz8GlhQKIIU0rgqW0WgfP3mMkKpMuPkU2+dTIJQJLhlfUNVGSQRm5BWNypjlCFf6Ua2/QY+tVr1qtdLzyNBqFfE4zfOIISzj+aKaRkuWJwwDeFLVCNV2M9T4WUP2cUlGME9qCzHyM2y7iuzQSKIBdNw0I2AxZ2LOCiF3K5rKsN9XZYZm7KZzFiI5LcVNADh5XpaijELGr9OC5YGBCjJFdhZlqhmIGmVOfopK1ZggnQr7/dzMIyFk//PVz0ROi7VGzLi/P3n7JtaLhU3uouU1LYFWJQfYfP6hLBKGGyKYVHhGZZqnMk1+izjCUH0iLMRraKxKcuCjH9SiNGRoWTualBLV6jwtKxrR4TAM0SB1Wy5tOGy/31lvKer309j0kRBy0O9HkqTIEIwaaufk50jGTe8RFmrmPEKOcEl+i2RsB4IwIzKGgXRxDdTJlrcmeqjL7QapCBsO2xAYptC1qvFi0b70kMt95IoGuaXGbNXFLGbVsZlLmic+TYKlp/vT7zPvOarWur9a5e5DVGsp4keSFWlVLTPBK1kuMinKSKKlnLIqLmmaE1nDn8Gc8pzxy8EllZHaxwrClCK7n7wyQxpcRRGK1XxFnBwu9fL1wQkhEubVL9JDQZg3sk/rvcSyNus+lTQyvW5/bYb54T65AP9BuwLFlBX52bwUGa0A4GXnPfC1EOEJteKmWit5Wt4wHg7DvVfsokzLu72j+bxgmdp9wcliDhLO3pGSMPYuhJCVLNN5/KkSPExUDTeMP3oYDl/G6iH+JBiw2neluCzT2bNUpsNheJx8/OiVhDjUNYY47NSJkmgfv1S1oCjcozILsRFwNgBjzv8cO/nq4GG/P4rjmI5jek3Lu0iajc+JjLNpWh6LnB7JaN9NHz8kjx72+7xHyMHDv9Wo349UF1l1dFGJYiEpikCisAhoyoHrYMHJ3j8Mexw3aAi+ZQWtouBjdPv1k48IDT9+3GN47iZHeqgV3DK6pLePLylJqzueaRZAPsSVTKUV/5uvzPru7TtqJkh6kzIZ8Ii6wYl4wXKgzv1+JBSh6B98jaCgJdr0Duoaz7yGyQe1QWAQ0LRtgpsmZERxuJCTr0PFGayM0sh/wPnM/Dze//sT09nlvKQV5TLpHdQD3WWPAHPHZeDQ8GUcGc4j1zBzDXhcVWJNEF1ruSQivmB80H29jy8YTziPSjQsE7tffVz5VdU1vnNTqpbdcETHyWiM4zj2p3g0TkZmme9mgnMYzXiMS+5/fEfVDyWhcXIYLSesoAnHaXlZvSvphN1CzZLNqFjI11Uy4TVCm1rSH4Z8fhu2Pg53d+9o5Tac7cn/LlJYf6Ff9++0Ho9xxZvzHDD2d5o+RYIcLqN9/AcckWimVomCW5oKEo5n6e3TxWRCy+TJ478e7D98jG8Yz8VN9YLl6nSGoxIzK9pUpDTzPtxPzEyWcaYYXsgXswtahkNdMBweJAA4ENGS3jJ5rJlTJXNomA1jKU7U3EcIOHqN4D+cck8EsCeQuJoXTEbnfzlH8VzM9QeDZrF7i1PLW7y7OHmzOM1KM+uaq227qNSSBkmMCzG3UhnlpSgKmtvfF4XIrmjeqqIkzOGGj9jYcRvdcNXQwmFl16ldzbrpROBFWSRlFC7KIkQYkAe/9JEVz2hVpZeqxDyGqL3S6xrn3AncdLVyNPerg4eW/hwofFlaao94aO2UViXhOskptpJ3R1P3d/++O14+xgdP/KNnxskT+hgvODnY/ys8TXTB75QcfE0f4zknD+ljfMnJwUP1/jvYpmRZI28RzItUTkQ5Gw4NV3UlmBMaU37dvKH8GgtCHVUcDhsKiUtC1XRDIfzFDCAXfDisOK4IjbmQbHI3HEaawCJy2DtAOCc0FnPKn99KOKoW/vslrFn15c1w+CyV6gkX0FBB6Xw4jKbtLXlGDisqT/X+i87wFCGEM/JG7Z34zfPvjk5f/vT87OWbb1++eXn6K57hm+0vJ6R3gK81OwimRnMFaDuDA1TJoymWCClEnhqWwKIzOMZSDJTsLG7IDmhnDL3R6pJdkCPDMT6LHbmxcpgZuTranK5Wp7Hd4D04YLROXyck5dFprLe9+uLE0vpMzGYpz5MzfE3LnGUyOQFKvfDGY/s8bfo8bfV5d1cKUQCtNOJqiA31HOPfaae/NZ57dUPnJ2g5IR5vPiNphB5ccnUSHaQR+uZsgNgk0v0oojlHOPpsp+Yl43L3it6FY3zwFX3U6QYaOnypA5kZ5SKaWnmgrieMp0VxB70D9mUphu79BKRJpLg99C1Cu9k3GbdUKYMxKNxPyYRGwBXwmZn9GY2mWOiJO4sNh/TJ2Sk5A37rHQbmNFJFGLQcupZLqAX0jPjE1HsdnQ4VlCFxuoUTr2Y32y/cbN/W5ATgbg0NJj7JbbDywmHFg/XJ8WrVy3l0Gy/KAq1WvQKeYQFbXYPqiynrETKDcURo9+abBUfLuVf/jGggfAMoxPAK615U0bmWlJOgYpdaLywCykHf2RzLp6nUh+cq+Lh4uH/wOLgTizKAKgNWBTtLXX19jsO3c8pVVbuMhw6xuRmFPZ7W5gjyfecMIeBg8WrzweL5vceVn9aOK0b/qdr5dttb/O7eWl90v1MdnGnd5dDIByR8/ubt8zenIf7UFp2jffyiofIoQkaKhlVopWi9GqJ9/C4uqdLdKBnMzpxm5uc7S1nHhoiJIt/dWTqOwfJ6dweEoW9pXKY8F7MPH14+QxGqz3FJDHvU2pumqULJ9E6JE7MK+EiE+n314+RudiEKlr1i/CpC64qVkk4WFeOXsFZKOi/SjAZpwAXfBcIR5LSSjFv9yvoAJRageOiZM0DEtBJsxiNmG2M1dHszblpflWgzoHCAy273zycpK2gOnZ8vLgpWTQPV7ZTnQUkrKUoayCkN5iW9ZmJR+eMZBCXNBBzsgkzM74KSzlLGqyCVwc5S1Oeotv0vzdrXvZpBj4CLZca2opc/JUaFvzuFqZtMqhDfcVdY0oyyuaxC/JSSh3jKycHjx/t/fbL/1wP6CN9w8jX+lRJfVAHt6METfPDw63pnD1/7GnoldmH1Z5fxiuW0BPaimmKLGSjlf1CV7e/+3Rwnm8f4we54uY+fgP4d/6LA0t3J/u7fx8snj6HsyJ0krLD2JQrq7Tq7lpYuMNgxKkFOqBKGrf6rR8hTCic+LngGlFA28nF8nZYs5dI/GvautVrUvfwX+sEmUcTBQEMzSXOQoDh05SfXI80voFdrQM9YJU+m6cOvnjg4OPW7Lm+v1RvDD9So1LeCIw8L9/bBq/WX7bU2X6B/DV88TpVlECgmMGh3ZAnsiePniLf0lYzwzUpHQOsmLeWQd5SRPzU1WsWj1xOttTYqRBh+uVqBSputa5orT9Ps4TUrGOXyB3rXwuIX2Cy8T/8FbBqpKY5j7qunjaaUdTSlVV3jaYs1YQHM6ft4KmY0Z2XDmnq/UnvG+dJeqU2nZ9hblNduDXprKveW0NbaqV1wwcWCFXnAcsolk3dm85fQ81dGgSdwGFvl3fcUn+8saa1Ud+cIM8f5Csf5nlvOpy0KxRqvAzHLccPVqogr9gc9PHjy6OvH6z1e8Cqd0HtJBCDZEwAaxg9avkIrxJ48gvJmVVnWfkmlUp41JvV+vwB9Wo+QNky0aUd+rnfkiEeegqFBkVO8RaVVsoEl27DdAhmG2nyw4AXjV4DU9nkAF7XWH2yZsTveSAfP49mVWokVXpY0W5QVuwZWqVf048df19Yc5FVWwYwzS8XdzKfmMFSYs3YGAlRex0pM+qkrJsVyNj8f+FLE8/imZJJqHGTQxjbj0FOK1fJPKNYUJSkw7ZDhxG2G5lVDSxN/V4AurSAtotTvM49s+uW+6YR5ZNPQALW26hrVfznHS1X06OvHtZX7P9EowzlyxzFv9mcwZk9U6Rw17ZEt2NYv9nmu2O9H90I5jK1WG+Ba7LNFVIbmCJuCiFqINN810nseIrxelESbxzA0SubYFUUtBLOGduPfIuZbzxTW8U8NvOE6KLF1Ks4X2XlIXRdMyf0bygHX+Oe1s4ZPzrEgVmmjafsa6eQt0mnJJSNtOqBqK1FbLac39WjszNopaGWMFJ/GlOfVz0xOo9BYUdqKk4KkzgC++5XmG5brFB3YzO9xiVOEZ46q36xT9UzVdrOJqt84qt60MCM38Qx0QK8rM0D7Ck7kYnd2OOVouT4tWVdd5D6rjGldE4UCm9qTWY3qKq5EKaMoxQUih4VteTe1T5bAvU7lNJ4xHlmZA99w1OCa7A/Sb/JB+uAB6jC4YEqjapSOtRyMteJc8bmeErk6y9/UaDqb1aDVNTOTPjhAaH3grck431lmluR2EWJIROHO++q4c7nZd0m9+0P5U2l9IMwUZ8q+1e/Tw/2hwkgpFjwHG9U+pnSThdateGP05OKGyIF6rGRaSpofGdur2hU1FzcD92Ig5pLN2B/0ZK3kmeD0SA6g47SSJ5TLIzmYsLKS79ISnovUPc5T8NfaH5RUe27tt+u19ti1xvx+2ZfPeb4V3ielLQjdWa86cOxwHY+cFdsbi9/23OukGssDcuBbrRWUxqmHAdLtjf9OIqzKGiwp+zngp+mOwtYDcgAMiVVTMLfrk95S9SJpOoQNcOJ/iTOx4PI4LYoq+SPSPoYVsqXZlL5g0r4xvxCWQqbFa1XshrbbXi6obhnZ75uGDbPgTxJ3715X5I9Nc7a7uQlk0Neasm67Hr7bjboXTase7O56zba5zTV2JrLdViVLms6ahhq43W6VCBwYavwbJeHtbls5rzzd8GveUmvEZ3sJaDasYuNHZ/Q0y2R0rmaT7CxpbOa1Pm9sVl5HXxtjN2h9uSbX50q3SUDJdo4w9ZHmfWiB3VvVmAerP7ZY2PClfqU+s1D6m2ZpbPjKvlTfNZDwpQXRVAfeqyf/lSVE8NI8+6+bfaMgmp9rQLBnfBizjTSccsoIcYhqTKVn6By5KdgySPmZQc6qe2ZEfnZGzOcb5kTeMyfqK7kdt/J+3EofbWt43duAQ0WUcu/T9cWs+nQOmvgkUAjdWUqD9iBE9bnmsFKScO/6YM8dNKo9va32LE5DfMw1DNS1l4nZvKAgUlYhLmVnV7mpUIfHoTUpuyk1lIMojZsv3ivNSgqOPjQPa3zKycFX+/v4gpPH9Ak+4+Rr+gQ/51qN6PSWWKsSbznZ4o+Jj5T3a486Hzl6j48cCLV6MTY+wL6/nRNTjiKJhtIasTsW6B2FE3BuRX/GEUj2+71b51eDTxo7dtQ7Uv48NIbaev75frWCd7H9jUAfH/V2IgoOnquVerIvY+tobLrUvEjLy8WMclm1dFJMRptgkDUmgTsotIOhwqTpE7ZPyVL5inZ6gF1Nyabqwe551Yxdj7zn3MXTqmKVTJWrONg7w3HMeFYsclpFxomCxqUoqOvmwBrPoXRgXZKaepqVAac3cD7vtebKFVo/it4Xfw5TZhy37TpXM2InAjqiBmHK4fkMJJEzNXuqJfO+/dLTFq91x4NsyJePC2MF3AjX76/5KXtgeg26n3YZP/zqCXgLk9Y7cAk64c5R/KkQBU05kH79VY+QDXWhZnXBdCUSG6QmDr3KfciiHDDpby274uBPDZC83182rSS8bn3u47RVjf8iacPBAn37b27O7pb0SnIT7dPWfqzv2Racv+AcxDwt0xmVtPSnt9UjD6TB+5/czT46N3WuhVavPNkMruZnWx/7/WXzK9kIA4Zi/L5tWrITpIQ2MPboJ5iezlI3bkV6odsfLT3+WvHhAX3c2l3EA4FNcLW+CbRFwdsHnTo7jln0JnidznFpTXOY+aqUBahSZNN15/kyhxcLb48Nh6OxUrkIZcyaA4+wTYkYlExQhPU8z7dS7fkmqg2aJiPEpEWR7CyhKrBuskm0UKTXI3aLNqVTVlnVpc4L27lSBSJ0XroGS1otCpnsLNsA0LhRPFm85e4pXcMg/yzitB+JAA26xh1MY9WgcrWaDi2572BvtZr6TJZsQqEdbKUGq2rE6ZfiVPduTtooUIReY3YOXLRyj7l5so3mutGmRYfUucNjsYYwUBQNlcFDPes+OaalLCM5Laik2yZWW0uMt29hedXAV6p1B2q+bIp93teaNLOZVM3WqL3osqg5OdT7ANVafbjfHmWql8Ug+4a5+tgoG/cIWQxQBsoONokyQgjrbN5MKSf8uirULHTgBbl59Lf7DKrTDMfj3pvihzSMY8kePXq0WkUzYothlG83MOJZlxE3PNjrz8KhLpIaSm0GVeuUHE47rAzhuQthYpNoFldiRqNo6ZjIFPwZews18qllf3P/57C3n0RztR5NCe4dOPZUa0Wusk8UiaHk1jO0Sjiwj5lh4KBFVfzJHNQ8NrjUJYl9Vdd4Qii+JqPlFb1LQklnc1qmEpT7eMZ4sg/uwcnDGpv3Yn42998c2Dez9PZMiisKxyPvQ/p3DJGNl7RUnsQNbHOe+uLPtLNaRs/mlKeFvNNf7D5sd3Gizlo8u9sC5uifAl+ol3P1buraPAMV77V1m5yMFmN8QuRoMYbJPSXN+jQiwEnj+9zvRzejxZictLezATztOcDVqtfV4p6i1er0m/lqdXo4Xa3O+v0G4qXumQKJFrD/PYSvVq5kHa2ew8SJ3/rp4Ylb8arHpzaw7abGlToORsvQCJ+7UEOY6JOqDknZUyYLnC7kVJTm4JucP6VpScsADuRNjBK4uzntlbUBhUnXVghe+c5EhGElJ86nU7uGy8aS45+9pzQFHx3FoVyP9aY2DhXmFAPeyh/zB861APX7GsMRR4cSeebagMYXIr8bxlnKM1pEXfuSZz7WboHOB1AjkeZBygOhrHN/0FwFzYHP1FzwyvoA6Casa0fXwgxiOr2VEH2r5SENDoN8r8YbISMandJb+YyC8qLEjIAzRwihZMajTZHxATJhdLpqYYKqoBtpnAtO0bJ6QMo4V9VE4PHc2x9clDS9gtXLHpA0VtHa8cWdpK+0sYU5lP272PDbNg1hS6qUE9g6jqrGJJuvVnZYW2YLxlvQtKKvRHYVobrGv3fc2d3uXdtx2rRCjG0FrE0UP6R/R9Z15l3L8f6LfLnaB3TMSRsCsiRkTCml0ND7YVlZCZqd0h2Oyns0O2UTl1zGV4y3TnvPjdZFv0HIj7ZVjK4EEgDvEg0CTOX3qIzBy2+WSpqfKhJzkl7THPlcZhNAsvXLukYOm8Lzw7NqMRxWV2w+V085q8DjFh6NT3qIQwpLLxz73j42z0JLL/cy3xa4cObpzI3Wu/MlHMLaJUkXxD9jS+fR3DSojx/2DVLcWIV/2KJaI1jGEObDs7vXVQurrjRpw7gDv1sp5rwPYP/qXG35Eo6ZuWwZ1CdUZlMIgPaDhJZG45nI2tA6PwbV0rxyGN+kJY9Cq3QNzEwnjoBwIZ1njvJOqIzxF9bJ0YUo5bHgUrmMlzglsOPzOL1QNrOBGOpHmg9dYQKFef78GtItsEpSTssoVC9DnOKlsvEC0TE2eC9Wo1U5PuXImdgzF9F37rG+D2VR7yylrMGxhMqpyJPw3duT0xAbjpXAUtV6zziOWb+/HP1Gxwmrawy0fo1DNkhFGFzH0yLJY/2AS3BooJlMzHbQwRnlMGZ8Ihq7QQAdCFSvgt3DYGeZ2cV3jnAvi8WVnRyN6JkZWSqjDF/oM3zvKJqhNtgNec+jmdVzN37Zwc3Q9foG+/sleQcf+CWoTox7QZShZWeJNAMw1QXaOTmBIQSMw1Eog52n+NAwUyK0w8U5wpXjF1lB09LOKQR7D+OSzsQ13bImgF9ISp48xoVSb+Mbqv5cqz/0EX7DyQF9grkkD+kT/F0TiQdcgWrRo8mzsTENhxeytc5Uz7+IqYLAFOwseX3uJXvBmWx3R9pmrukubU7hphSC1837N3y3OaVrjv/l3L7TK9dMiAZeow+IxN02HhDbgxov1s0s+gQLgp6J82s8Y9UBUr9XvohE0i/vsBQimKX8TvdX1RJawQsU/mGoE0CEoacRCsO6MfGYlqFn4LUvavzSj2QEq4LePH9CaLKenmtIbFJQvOLt+bWWg+6pOZsKltEKtXVsrjyeMJ4Dwz9SMgNkyuA5vR0O91UMsu45VC5U5ZEADYdMkXe6MEVWX93mfK1X/T6PjL4VRNwQ60RAHaga4V5nGBbCU80jo9nrvnC76d9eBBvqnojyeQrypeF5Gu/lBt/Se3Zua3KhXrPgKuKQzzxiUW0+OloxFTQi1Tf7q1X15xb+po4EqnmXVmQBS7oCb9GjqGzU+sPmGbJFFeQ7lV8FFxKHqpaXz/RBp1BTlMcshzwkyopT/IkOKvZfsEzqOBrbR1U7VEcKo8L6Lkq1zvaG4hAedPOZXQo3dDdXAFbh868dXlQXTPW6vgckw5mMcgw9cNsUX1McepsW4myAlYguVevkvhlhMRYTkxpBe8JBnq8Rg/Qy5S4zmXB2IqG1rzpEQ/34N6fdTphOgKNqxKodreP6lys3yJJu0wtR7KoVj+Hfl3kCbWkCqxvDjM8XMnnJI+FpihX6dv5fETyjbGuTPFO4meh1Xm4lex24jYTPwmwgfeuv/juJ34bat5E/hSiPQvw3kUNFfxgaVLDZNxEZXGmD6Hde411KABu0wi2Iz+7UiWyHguBSH3Zc7FbrUGNNbZ/P5tTBwtG7lypoFCJEu8edgReQGJQbThfHfPvpQp8sNp0kpDs/iC0Hhx6Do8DnJVFfFg8iCDIwxwl0budvaWzQxp7XlveS/do0t1GLp/SOaNg4O6its0dBUt/VGqIQoeUOj9wxheEzjnAFQc9CRpUWzMC/t4kh7jGtevvi9cmFU1cF8KXjjWxdKZeuKeUKUMhlEKk/IzeG7E/IjUlqsfexHH7ke85ScU0Or7VjpXEOV7mdQpMQTr9VipqvkMqOYfxlkXZyghQZgNCJIg4TlSXw2ds3z8chWmag1DNYeNWKaZlohNV1ozLsZUZpaNzHg9xTGt5oJV2/f7OmFjzk/6pWUE9noObWSA6gdzR6wZuuXvBGKS4heMaSu/+ultX86AQAE6KnR8+RSqISFchg5poUTmc20fxDd9uVm9IHk9H+2EodeBZdI5whp13VAzG/exnELumsJ/3+LCo6oSdBvk3JmXeUnK3Fr73eBLU5KpMQP+NkBNGxj+gjfEAf40f08RjPjeKf5cn5zlLQGggOWF81d7b7/+Pt078pJb9yODnHk3TGijtwTVAP2Ib9UBfRM0tvXwJP18qkhMbtAnj/diEbgAM4WAMvkGyehL9CFP2xtgWY7HQ3TE4D0x1fixDinMqUFUn4HZMvFhfus2px4dwt9ACsSiEPBA9UEqpAO9Vm6Ty9YAWTjFaJsqmBSyLjlxBnxWbpJVVdV4mFEP7AOwKdpzLyQtRhnlqqBwhO4Rsd9I23d07nFZE1/Bloz0cw36cSrHSS7A/0QnhPsynNrgY6lEvvUXPoNKE0tq64YBWoxVw2z8bDY6g9kStoZAHBHzoUqjDe47p1XMnUZneNjEe0jtHxgMDNBAzM8t4qDmpUZ4uy1K72vuu4hqtNzUvjZg45f3QrbvhgZL6knmv8eldG4zpn1VxUtF1Trf8sDayHxWHcVOEV23xwDX5cFrsWXFu1/4yP/C6PB+vRCObVA3KwqdWomTqzpsrh8ANHes9v7ab1g1dlEaohBUxtl4cpvH+FeIoinaCkszosF2nPyJZl0NQu+NF1ygrQ4Ec2h+Bsaz7ePzj5ij7Cl76fdLSPZzaz9Iu0mqIorFRIG6SgI0ILZkpm1jmtYlb9xOgNpARdyngxV7n+VPIjxuXXVri+ULBYKDb2djKpqDQ/jOLLFx7Wco02FYejsIk/UtmcBYIEZbiBwHAQcr/GoV+zcMYa0dh0/OqXLrQXEpp2c6ZWkJSkREyd3irklYtJYFLZXtG7ChQVG4HgzMnMmRMh1+x6WGeF6gTc2aNyVI390Q1ao6ub0fmV2THWyVrFAhJ7LbjOEp6D3tZp2CBZHpZxzi7BPBNOQUFR4zt3mD43nOrjvvJtV3zI/DA8SP3yEnDbrFzn1c7yEhSK9XlyPnPPkBZkc/jUH9xsiFl6S2Q9S28HJkWwdVobTCG7z4IDlZ6xqrLPWnFp0xxCFeZDX6Xp+xeoVmwF4HVj8OlTTNuWIyK2TuOEZLegLdY6SvBJrUFWrxwBXk6ZDReydWJonJpC15G6tnUYX9A1dRTEs/Nv9pGKnfsznRq0S0GRa1FtpC7RRpxa0SjmylY+0LpAJ04NNjUttCQJOdSAHVs+YKFMYX0Ju4L9QTv8ye+aIWG/a0WvVdRR+XIG4aWppL5b7NB/AeF5LTFhH9WYfV4YGFhkHE/TslJEVj8Oh08eg8Tk02ki3eNw+DvXgoTNcBqGA/tS+QrYilzpQHnEST3FDQ1nFRxtIEe97tekADCfypuQNemTNj+56gPSwMJp7u3ErQYDYQV60hptu8EWC3IjWa3aggz4MbSR4vFOf/zYrxuyPJvHbrZanyu2mH0rfW0rl2wYbkCOK5ilV9Ri1Kyns20sUado6rguONs/NV4ueOqI4rcqJ7cyShNCHg4bD3B66znsD3sHSUTjgnH6FLbNUzoRJXzRUwFATdiGDbv5SxOCo+tCuLePEtfSwZDGsHp7KuGye364UU/HirykHEEnmp8mKSwnh1MZQeoxlPQOkt4BPqLO3+Jbrfn7FkILvGxfgUo62Y2rmkoDhiGGxUQEhUhlqKzxjSThaMFLynN9h0FgNBDjEF9L360aGlWrokGr56cOuGhYC1r+e0j1NlCD2n4/0gglKpuqe36I+v2tyG28fLnOrO7eXGv0urxzpgc3EtX4SH4W1zdyDdPXHqZxg2m9tr/j5CH+lpMD/IKTR/hUzSZVsqIkh9K6t77gQx0J8S3XJ0+pFXo2LEI6ZWkiEX6u+mnVLs+5UrtEKKbqCZJcem5Ln1qpLIeaGbTjlLRW2vFh/Fq2P7Hvm2+ad+3QDHz82U87cza0I0P4p05PZ2xGT1W0RSuFDiyVj3t7zMRQOTA0hLWdbJCGaayyMAw7iqoIWWWLAVCbA3+/pRttnMEHPeNl12s64Wnu9kKEb2UrXHXcPPb+107/H2dN+qyPe18EtrOHnzoPrI3hbvao4/bopv7fynXsnQfwrIILbWF9noShWefnO8u1ayTCFJ7CxLZdq1BZJ62ZHtT4mWb0OoVPXmll1bLGv/J2TGh70yLvCg++tnDhoKC2LjfyTcsB1cI391S471t4EuSINjV4aZ5bxNW0JLw2vNduvM3ex6etfdDZJcNW/BJYEy8o2fuvf/6fj3vDtEzmCeRXS3cnkLKt/q9//ufeJf6BKwD1NvJfo//6539Go4/Vx5PxX4dI1aGAPh7oD3/h7ePk2f/fx8lW9f4hUaAvOAiW9iAoRuWfPAiaqMW1AyDyj3z2ciGzeLHdh4lHhrDSj9OhokDWoOgobb12aHQq24MnqMYn8vPEbSNxGKVSptkULBlBi0SMzxMQJSqdsZ/mniTx2rt1yey2X/wk8FyHTqvDkMAU4fOPi4d/e/5ELWBIm6h+/g0imk02yeiCYthfGm6vA3he46pJZD+kna8Sin9uhYxtZYrO2QtYg54KfVilXbJCN5MVDmSFWrJih2sE1iHklMcSJa8hr/qRdIBgiDOw6tWJMmiBZJIquWGN/p6P1FSk8yilyAu2H58nG3nD8Hy5s/RXPbWr3kok62teIlBcpDSiIzlG9bnfTn2ebF7XECJy1TX8ewReGAKvtTujMcS6xXEsrDAwhvtCrIXo2KQjlU22PZAjqyayha27ODyLwhm7Nf4LuzrOKbABJEFaUmV7hKy0Ry93TXkA4QSpZBcF9UhFqoN6dEIdpSpEkKrI9FQhLiOHP/MoA7Hd8YABLSpqvCV/5ZH7ANlIIsVlWh3Wh2CwhGqzsO51pXX/kEUVRB+7v9wYZJnyqkhlqrtdkKwuTbohJVLqiCrcinVNDblwAmZR68iovEF7Sg57xzJKkeqxdxuK8a33pjMDFOkIv9cyyrxUSmwSfeJQsjQhZxWNMrelPH6qnS9/4iZX08zsFf+7WfsLWBLf67rVpFjI15DC7AS60Yb3UX3uE6xm9jVigSiBbfcpVA6GXRMYR9JmcpXixQjv33Fk5jm3uHsNJ4zWJHgR7Q7n4AV7KiOh3GEzb2n7scyZWmEzY6Wa2Yn7TPzurBvO2dmgs1i5nAyHKnUbHMVRDQs2aPdah+Ovd7hW0YlSR7q5bXiA1E1lJ2DnfW22Gthg3U5ISUqjcrQ/RrggKuUZJNVVysAUDYphYeWspHkJzCHFIzFGtck7Esdx6Qglr/GZIo5Xili+9bXnJkeQi6zVNbrf3a6CmQZzcmXMWNY/SeByrFzczfeodDF4cJi1/bTaNueW70WrQVLdLC0TCVHLjix2EKCubRnG1ZRNwLDzbp18YgHKlZLsY6Y8v5eCiA6Pw8IliFkCtUgExIMQcN1s6ceBa8hselQU0Q9wXBYPiL1+rMSVMe7ikpjHB1Vj0TWuANIwb+h7NToYayrhKXPFA1KNHo69DRu51DFLyJp8TdUtWGYi/R4grGBr/Ea2zsvR58LWZROt7oebd2LS5VooutTb4SSb0lnqhwt4gegtmBo2Db6QfzLvyLETT9Z4eScoBvRY6kY8fcfmsRIZYBeghCa9C6n1ExdSQX7ZZX76gj2Ohbpgj2OV3dDDRNgSoLtnfbgJ1DvCwM/kmEI+7REfI7ir76Vsp3q2N98BfseDxvnvdTqP9OAEORyJjg8TDLEx2U6KVL7WkEZY4GrFGSc9C1gORxBbILyQlPLP5SnYDK4Wh9i2OLxihQofDpcbcxvUNdzCAzcz/MbvTUGz7U7VtVUlnW5K2qx6W1PoNh4AXRfrGr9qbzXtPG+jr6u7StLZBt+un04CuNYhKFJ+uQAmaq4DyIWSTQyTDfT3Tv5y+bpd+NCaQ+HQlYETumggNx6lpTtKD1r9brhuK9+Iz40VlVQBxXr1bIwtd04RQAY6seUqbMycw0rn2Nl1zdMenr/xjR55SgPf6boJ+FeCbzusfm0SOtNqhF1WBWDBAjdiJivj6Zw3SaJbwqFGAvx4r1MC2BG12zaAdV23KtFigofJutbK+x1JmntKnjt3nF3jn5SE+MfmRObd13MGe8AEx2irG/eDXp65JW/jfTQ/CeA+1V3Az+JyCqEy3PpzqnRkSpWjkVfXmApoGaYceRfJKNWTtMohOoxHfOy5pYuNwZMmoFm4rSgghkaQ0agdYt76NcYjG2Du/32nXvjx5Ws/tM+Qg9sQW35f+bEr9upZDza/r+idKYEvNwSg31/mPh5jLtr3X1qRSy8iJXUJe0ikQs8WCFgtvxLgS6V/TelTe0upgjZXa5BNOZLUPRh25pnWOFlCM4xHbNwKdKdQwNUFFWhQrlYRHYnR/nhMwLMp32jMhAS8yl9NedMa1zVtjbukUjvTWiun4B944wtLuC4txCURA5OIEi5rImXtPh20vxkU4nKgoQbZNOWX9PmMSUl13PRlrAK+TNEA8iXnxwrqlSHeKifx8TSVLznkJVf+ZdrQ16otVo6DA0i4r7MYq+o5jZbgTqOv6lYf6Y2vYSD1cOMO4wG1atYX/dRoAEFwNH8jjv06YLZKmha6n+B34xwQ1AI/1on1oKyk1vJ7uij5C+1rq402k5JWU9spd3mnV6k1iWszpldz+0Uz/o4z1qYRdf2ymm/dm01fu5fGn6mDUp9kmpuK4mIWV7SgmYSJNIDLa8pzUSY7srZUVbbN/IW4tJGHOav0TSaJbS4ohLhazD23Z6kNP8Nh+Nw4UZ8jPBrXNVTRmTU75o1Tag3YW+bbGLP1mo4u4bYzFbwo6Rto3vpnVpSCL3nQcYE0sgjTYwx2lt0K6kDf/Re7TwBpQbng5isIvwRg7/IBuMvb3nakWFJRKEDTlQZQ+BVgeOZQc9C+4zAAmV33T/flP6pA0nIGTrDxeRJ+yQjj4Bi83AIJne9AqAGxynaV5tjc4pRjdbEN+MWr0Ls4VCmBzUZo3HbAg8k6Gknf0Ug6R6NzLMimfQSCurk80zFGQ3fNooNl9d5rMwYsRYwcRmy12lSlOWVzhBlcA9K6HXc7aOdO3A4g7F0Ol3uVZpet98vd1Mpy31ddULCtQ5k6twoXagWHxRyUFuTLtiVmecKtW7HsuhU3mG7uTzVdnZfimuX3UnDtuFR4F7G2+Y92I+qJjSHrGzjTBvpnXVPxaKw1Y5vuYHFLoJ0CX8nQVeOE/RycsCvPCVtHu1jkwBuHGFt/2PW3Pnj4NX30GSfrjqu82kqNN/XRu5dwoR1oVycTlmkP6lIspHKm949SF3eB7yYOUvCu4IW+Hu1e5+qDNedqE4/GqmPl51qoCXyvo046k+Kh33kWq3vnjBdyaXyPWe3PeotpqfAGe2uDddFVnEAL1R4n4MIxA0NVr1kFivIg0gSOrFPX4TDkgtOwRjioaHkNJ5GdpdWe1YGX3bZiBeXSbPmNPKTZnduW/HsTsRKZ4CXMkMnOcM+qr9qrXlOTy7hVuWJx8RvxDshypTJOuECLtRimOHi/TuPTy1QRWKM6qzbuDxNJQynoRruSh/FcxBmeaTESarrbDndF0tikTDfxSHfg5Fg9uIu1i+NuVOiCwhQg7FKgG9hdDVFrVWhncVAZXaG2G5snaWkt3480usIZQoNtUEaP+vUAbYMw2tAa35B8qAX4xJtOn1+p+cz7/d7N/dMov1UXBoSnUxooJSisy018VU9uUAh+ScsgtbKrnccJyUH/2+YIz9sc4XnDEXTnlZIU0q9OVKK+NiU0WdRYntxB/rQ7Qshk0w0+L406ZxMFCzSX0VfsNXOW04vFZWTyRLu05kBl1S8CJFddDON0NAROz2armti2a7xQ/Udm9f3IQSlp2tD4/3yQmVMQ8f+QwR1tdESKFgaibCxdW+xhMAHX5K52ZoU78lYJGtfkziXIxAtyFxu9e62zJoomsx2e2txy+XCS3ABPcer6azg3zrvWmCp5I6O5ST4jDIsr3iotYYW0mhDgXuud3Vl7QJ9Ozdv4vblpw9l5VIhuErobOCAhmU0Gpa2FrpcO95vywVwRFgu+kXUoN9A7m8wFDdg2HtPvOyicxq0rIpq7kIIJRJdO8QXcWBvruyEUtL68AZf28cK68ekQ4KE+h7ZQAw5ZkJU9ujBW8GQTkGGbBtDYwC60ZHCh9a4I/ONNepgmiuzKO2DNIqsmUCvizIS73uErpAbSHi2AXBjecRNXlOcGSfABiJ9v1SQwGi21k3ByTA6PfTXVlpFi7QWswK2jh/GKhbL7cHSMzDUXALjchPFjMOXZsEZzFxeM5Bi0GxcmDyJyk/ZWU+rjBmFvnYvzTKUOO1X85iw6VaK0vkp3MVyz85lDXsMgQk1rNirmYIenUsxY5oyvUwamsLvQXoB0GrXuOj3ZuOBffGbBn3zRgndQuCsA6SGA1Kdll2snu5huRxUKzKjUYc8SOSsdloZy3g7S9g0eZn29p+QznE9N5a2NSdXbTqegOrGpkGyv8XvqRU/Greti8AtPl2B9vNdG6rod2NxaBO7w3ZTs3wl3Acs3ALVThQ2H4a7KSrR1Frybi0sZ3cIt4cuNC+F9J3vcrd21TWpkZzbx3imO11gN3Jtkit9R8lJG7zVzwB6TMFb+P03Vfd7xjrbiyjYO6ZMkr6ADbgB4QcmdsaItrNB/pxbMFXkH9Gfh5PYrLTVckMNQb7WQ8eACDa/UuQqKFeWFws9QX+WCnQBNhWpQsqkGDZWEIfJ8HX+S5JP2g7GkVJPOxfC9P6zR1RgvfDnoopu3Pjil0ehijEb76hh5t8mMo+p+S0YGQnValR2TBbUFA7MAjr0pP+73DbG7n8Ci5K1zMwCyaLTDin7exc4O1CSL/l6SY82B3MIzvz3HK1MCBqp7euFzuWPL5Y41l/teIqfk3rAODR2OjyyqorduGQ7fgg3tTptM6xZmTapuPTBt+rEo1uh0xS0X/ft68KGiZTTaMjxdlxpgq3LPqwUcM71521iTna63aJy8ReMvQYzqVrNEHDoQfkOU7bgl0YFjTD14Gr3B7XL8PvZsOG2DDsKb4cG20zHxbAFtDD3Dof61ZsPZag36czafLR3o2ny+yAq0pa41I9AX2oWsBHAW/SSxkb3fUWzJcNJQZJC6fW/GN8iX2v3uJG/AwamlPzh1p2atMLB2pnuUBeX/rLJAOVdt1KSZy/2sa7u3W3jX0euMRuCf4Tbuc8gBWPtpVjYfpNn/zCG6IncmOjNfV2Yo1yLtV7TGKvKBn+GX6ZuT9OJWLjNOUbpN4jDKppbyBNqDyyRTE5lW0E5k2qTam5dixirwYcDP1gLXIMrozNzBa+LXhOj4cUX7+JmMq3l6w9W99XgJOkdQhUG6hUrmTCQhu+SiBNXZgMeCRyZXDXb5mGMI3pqAYuSDy9pDljVqeZRQd8XwcGgvBrYlGNILUn7dvKH8GkPGKHvN73BYND9wCd5ZMpWqFB4wgxIYxXAoBK7IhNqJ1HMyo1EFqQFTkscXzL/mZE4jVYThrjWjIAdgCUr4gtzRKB0qAJsmV1qRoFc4QTEq8Cg8OzObR3Vk1xj3wjFqXzB5S4k6jsQXd+LqgwRtrNa5PKOTdFHIEJ8434RtMPEs5eklpOL9Q3vKrN0xHs5Sxo8uIalKk8kbf9dA27LViuoE5hYc/9rO9N0ctJV14rVuGVyx7bDw751kTe3PpP8Zb1/T2juo18yGqpnvCnGRFnDK67VvuzJAv+pUj6CoxletW2Yb/35wkqvgXl6drhu2sO0G2Gu+k1GJhqUnBPq2fObdF2mb5Njse8w8SBFfqs7+pJ3viVP1/iG9+IIK3kCc5e+axleYOUmhqc1eDuy31TtASasN7yomEd+I8qqapxm959W3oshp2QbwuqL6aZur8Vu6KdW7bKNPAPo4GnIPfYI0rdMG952uO/ObvwubSW1GPbh3ZVi4DV/ud5eY3nil7+DxusFOw1rNBeQRcp1387f0BpHIoT8m3J4CeNsuwZsmogXmldc1ZqI9AXqIn+mxCe2BLfA6br08TcEgFmu8oRpnlCzN+JTrQymiW4qwQ22iRRPqWmYAAJer1ybRjXUaCyoRUbT8YDUIkiybRaLqpgZRJxKuvQUeeqKbskCmQtdW+wMbr0TxBNQ/ik1Ym3Y8T7Or9JIqGcMY4TznKO+Kqq1q4MY+buoKpqmSEEx1TRpaa+TjuLnJO4n28bdbIthsz+31xC+kd2M9jdPq6KISxULSd6lKM8Yq2dyHGH+qQoRQN9+G9pz5MdJrA5HDD811BRXNSmqklE8IIeOUXaoCSPzrZ2CqbKCz/cpzv4lgKqIJyLCEkE+rlX38BfX7kKhRafthaOAnaMSm7yjcJg1uEXo+owm+RuTQrVvt11BNxY1nCjZnIQ1LyDUWc8rh/vSSuzU48VY/2PN8kOh1/KFkNokaxMCDthHnxDWoZ0ZbXWF0nBZ26kO8LMSlzjW+ETk5MjId4DynEdPiTmV9aHCOoXOtwf2clpzxSzcwOM8VZOlE7AY5eIHneIq8VW+nQvngR5/wM+rBWSrXgBl/gl9A2erPiQG8otEcZ1SFayl/oMQtmrUWTVWf/nQjb2mkm6hxRpr6tTlKg/xMowKL7sXbOjVec5X9aqUKVEfVnSm5UQSaWwiCNKgkUItgZzmpg2nKczGZgE8LXBZ+rrX9LU8qYyKyArk5Ml23j0xuMrEdiVWEXdHoWh12NA6V8rlL+mbG48kf7ut7PSuMTAdytB3gfHFRsGqqR9boc9XZB7S5wnfGObfuUhO0zI1/lKkgWfeKmmzwiqrrjWs9VdfPrper4ZT0ErKyl2u6jHf66ArJ2s2WStF9FXlExkMOrIn16UMmsX3vYPPudNvO9u5DyV6kPC9oGS2n6uFDyTwiAvkY43mqIoPCvWbp+Q6Y12qvf3j/6oSmZTZ9B47yVTSJf1/Q8g7p3JjqGvoQMiWF7gKCRXOx/TUurFWCbLrNfnmzWkU34Ep2H+FwR3TrJhWkwLxo6TGsiwUr4MiuWgis57sUgTa0W6cwsANkvjAAR+C0AF50ZzYVDipYZrS0SVCnOtlzUNLdcqFcsey+WJsovGjvZMiaiPDnKH7no6Edr7HGeiqJ0HnGtAehfB/hvT1NtJpUC76LzEwsilypPK5pySZ3CjWC0124y8QhsN2MoTT3akZ08E0WodqRhlREaFmDP/BMQI6bmN7qO5iXaSbZdSopzql9rNHgL/8XUEsHCJ7DdL/nOAAAyacAAFBLAQI/AxQAAAgIAO8sU10ZI9l+NAMAAK4KAAAWAAAAAAAAAAAAAAC0gQAAAABleHRlbnNpb24udnNpeG1hbmlmZXN0UEsBAj8DFAAACAgA7yxTXVr3VFTSAAAAzgEAABMAAAAAAAAAAAAAALSBaAMAAFtDb250ZW50X1R5cGVzXS54bWxQSwECPwMUAAgICAC5LFNdsoZ6jXkCAAAnBAAAFQAAAAAAAAAAAAAApIFrBAAAZXh0ZW5zaW9uL0xJQ0VOU0UudHh0UEsBAj8DFAAACAgA7yxTXQu3469LAgAAfQQAABMAAAAAAAAAAAAAALSBJwcAAGV4dGVuc2lvbi9yZWFkbWUubWRQSwECPwMUAAgICAC5LFNdMFatwE4RAAAoEwAAEgAAAAAAAAAAAAAApIGjCQAAZXh0ZW5zaW9uL2ljb24ucG5nUEsBAj8DFAAICAgAuSxTXRQTu0ihAgAAuwUAABYAAAAAAAAAAAAAAKSBMRsAAGV4dGVuc2lvbi9wYWNrYWdlLmpzb25QSwECPwMUAAgICADvLFNdnsN0v+c4AADJpwAAGwAAAAAAAAAAAAAApIEWHgAAZXh0ZW5zaW9uL2Rpc3QvZXh0ZW5zaW9uLmpzUEsFBgAAAAAHAAcA1gEAAEZXAAAAAA=="});import{readFile as GF}from"node:fs/promises";import{homedir as yl,platform as fu}from"node:os";import{join as Is,posix as xae,win32 as Rae}from"node:path";var gl,aI,UF,Oae,WF,HF,Tae,Pae,vb,sI,VF,Lae,Cb,iI,wl,jF,KF,ZF,pu,Nm,YF,cI,XF,mu=$(()=>{"use strict";Ue();gl=["Code","Code - Insiders","VSCodium"],aI="1.121.0",UF=1,Oae=121,WF="1.102.0",HF=1,Tae=102,Pae={Code:"Visual Studio Code","Code - Insiders":"Visual Studio Code - Insiders",VSCodium:"VSCodium"},vb=e=>{let t=/^(\d+)\.(\d+)/.exec(e.trim());if(t)return{major:Number(t[1]),minor:Number(t[2])}},sI=e=>{let t=vb(e);return t?t.major!==UF?t.major>UF:t.minor>=Oae:!1},VF=e=>{let t=vb(e);return t?t.major!==HF?t.major>HF:t.minor>=Tae:!1},Lae=async e=>{if(fu()!=="darwin")return;let t=Is("/Applications",`${Pae[e]}.app`,"Contents","Resources","app","package.json");if(await U(t))try{let n=JSON.parse(await GF(t,"utf8"));return typeof n.version=="string"?n.version:void 0}catch{return}},Cb=(e,t=fu(),n=yl(),r=process.env)=>{switch(t){case"darwin":return Is(n,"Library","Application Support",e);case"win32":return Is(r.APPDATA??Is(n,"AppData","Roaming"),e);default:return Is(n,".config",e)}},iI=(e,t)=>e?t==="win32"?Rae.join:xae.join:Is,wl=(e,t=!1,n=fu(),r=yl(),o=process.env)=>t?iI(t,n)(r,Nm[e],"data","User"):Is(Cb(e,n,r,o),"User"),jF=async(e,t=!1,n=fu(),r=yl(),o=process.env)=>{try{let a=iI(t,n)(wl(e,t,n,r,o),"globalStorage","storage.json"),i=JSON.parse(await GF(a,"utf8"))?.userDataProfiles;if(!Array.isArray(i))return[];let c=i.map(l=>l).filter(l=>typeof l.name=="string"&&l.name.trim().length>0&&l.name.length<=128&&!/[\u0000-\u001f\u007f]/.test(l.name)&&typeof l.location=="string"&&/^[A-Za-z0-9._-]{1,128}$/.test(l.location)&&l.location!=="."&&l.location!=="..").map(({name:l,location:d})=>({name:l,location:d}));return c.filter((l,d)=>c.findIndex(u=>u.location===l.location)===d)}catch{return[]}},KF=async(e,t=fu(),n=yl(),r=process.env)=>{let a=(await jF(e,!1,t,n,r)).map(({name:s})=>s);return a.filter((s,i)=>a.indexOf(s)===i)},ZF=async(e,t=!1,n=fu(),r=yl(),o=process.env)=>{let a=iI(t,n),s=wl(e,t,n,r,o),i=await jF(e,t,n,r,o);return[a(s,"mcp.json"),...i.map(({location:c})=>a(s,"profiles",c,"mcp.json"))]},pu=async()=>{for(let e of gl)if(await U(Cb(e)))return e},Nm={Code:".vscode-server","Code - Insiders":".vscode-server-insiders",VSCodium:".vscodium-server"},YF=(e,t=yl())=>Is(t,Nm[e],"extensions"),cI=async(e=yl())=>{for(let t of gl)if(await U(Is(e,Nm[t])))return t},XF=async e=>{let t=e??await pu();if(!t)return{status:"unknown"};let n=await Lae(t);return n?{variant:t,version:n,status:sI(n)?"available":"needs-update"}:{variant:t,status:"unknown"}}});import{spawnSync as Nae}from"node:child_process";import{platform as Dae}from"node:os";var JF,Mae,zF,Bae,$ae,qF,Fae,Uae,Hae,Dm,QF,Sb,Mm=$(()=>{"use strict";Es();JF={encoding:"utf-8",windowsHide:!0,timeout:2e3,maxBuffer:64*1024},Mae=(e,t,n)=>Nae(e,t,n),zF=Mae,$ae={Code:{bundle:"Visual Studio Code",linuxBinary:"code",win32Image:"Code.exe"},"Code - Insiders":{bundle:"Visual Studio Code - Insiders",linuxBinary:"code-insiders",win32Image:"Code - Insiders.exe"},VSCodium:{bundle:"VSCodium",linuxBinary:"codium",win32Image:"VSCodium.exe"}},qF=e=>{let t=Bae??Dae(),n=$ae[e];if(t==="win32"){let o=zF(Ho("tasklist.exe"),["/FI",`IMAGENAME eq ${n.win32Image}`,"/FO","CSV","/NH"],JF);if(o.error||o.signal||o.status!==0)return!0;let a=`"${n.win32Image}",`.toLowerCase();return(o.stdout??"").split(/\r?\n/).some(s=>s.toLowerCase().startsWith(a))}let r=t==="linux"?[["-f",n.bundle],["-x",n.linuxBinary]]:[["-f",n.bundle]];for(let[o,a]of r){let s=zF("pgrep",[o,a],JF);if(s.error||s.signal||s.status===null||s.status===0)return!0}return!1},Fae=()=>qF("Code"),Uae=Fae,Hae=qF,Dm=()=>Uae(),QF=e=>Hae(e),Sb={darwinAppName:"Visual Studio Code",darwinBundleId:"com.microsoft.VSCode",win32Image:"Code.exe",linuxProcess:"code",win32Install:[{root:"localAppData",path:"Programs\\Microsoft VS Code\\Code.exe"},{root:"programFiles",path:"Microsoft VS Code\\Code.exe"},{root:"programFilesX86",path:"Microsoft VS Code\\Code.exe"}]}});import{createPublicKey as Gae,verify as Wae}from"node:crypto";var Vae,jae,Kae,lI,Zae,Yae,eU,tU=$(()=>{"use strict";Vae="anyray-client-asset-manifest/v1",jae=[`-----BEGIN PUBLIC KEY-----
83
83
  MCowBQYDK2VwAyEA4y50BfLxOKxMenEsbIQAE9FlNFmdooMXCmSiW8oz5zY=
84
84
  -----END PUBLIC KEY-----
85
85
  `],Kae=e=>{let t=[Vae,`kind=${e.kind}`,`version=${e.version}`,`sha256=${e.sha256}`,`size=${e.bytes}`];return e.distSha256!==void 0&&t.push(`dist_sha256=${e.distSha256}`),e.sourceSha256!==void 0&&t.push(`source_sha256=${e.sourceSha256}`),Buffer.from(`${t.join(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anyray-connect",
3
- "version": "0.11.394",
3
+ "version": "0.11.395",
4
4
  "description": "Anyray connect \u2014 points local coding tools (Claude Code, Cursor, Windsurf, SDKs) at the Anyray gateway through supported configuration and enrolled personal authentication.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -35,19 +35,19 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "jsonc-parser": "3.3.1",
38
- "koffi": "3.3.2",
39
- "smol-toml": "1.9.0",
38
+ "koffi": "3.3.3",
39
+ "smol-toml": "1.9.1",
40
40
  "typescript": "5.9.3",
41
41
  "yaml": "2.9.1",
42
- "zod": "4.6.5"
42
+ "zod": "4.6.6"
43
43
  },
44
44
  "optionalDependencies": {
45
- "@koromix/koffi-darwin-arm64": "3.3.2",
46
- "@koromix/koffi-darwin-x64": "3.3.2",
47
- "@koromix/koffi-linux-arm64": "3.3.2",
48
- "@koromix/koffi-linux-x64": "3.3.2",
49
- "@koromix/koffi-win32-arm64": "3.3.2",
50
- "@koromix/koffi-win32-x64": "3.3.2"
45
+ "@koromix/koffi-darwin-arm64": "3.3.3",
46
+ "@koromix/koffi-darwin-x64": "3.3.3",
47
+ "@koromix/koffi-linux-arm64": "3.3.3",
48
+ "@koromix/koffi-linux-x64": "3.3.3",
49
+ "@koromix/koffi-win32-arm64": "3.3.3",
50
+ "@koromix/koffi-win32-x64": "3.3.3"
51
51
  },
52
52
  "files": [
53
53
  "dist/",
@@ -66,7 +66,7 @@
66
66
  "prepublishOnly": "npm test"
67
67
  },
68
68
  "devDependencies": {
69
- "@types/node": "26.6.4",
69
+ "@types/node": "26.6.5",
70
70
  "esbuild": "0.28.2",
71
71
  "tsx": "4.23.15"
72
72
  }