ozmoz 0.1.34 → 0.1.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ozmoz-mcp.js CHANGED
@@ -69,17 +69,17 @@ ${c}
69
69
 
70
70
  Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let a of e.seen.entries()){let s=a[1];if(t===a[0]){o(a);continue}if(e.external){let u=e.external.registry.get(a[0])?.id;if(t!==a[0]&&u){o(a);continue}}if(e.metadataRegistry.get(a[0])?.id){o(a);continue}if(s.cycle){o(a);continue}s.count>1&&e.reused==="ref"&&o(a)}e.external&&(e.sharedDefsExtractedFor=e.external)}function c$(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let i of t){if(!i||typeof i!="object")return;c$(i);let r=Object.keys(i);if(r.length!==1||r[0]!=="type")return;let o=i.type;for(let a of Array.isArray(o)?o:[o]){if(typeof a!="string")return;n.includes(a)||n.push(a)}}delete e.anyOf,e.type=n.length===1?n[0]:n}var u$=new Set(["type","properties","required","additionalProperties"]),a$=["oneOf","anyOf"];function s$(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!="object"||t===null?null:Object.keys(t).length?t:null}function Tf(e){let t=[];for(let o of e){if(typeof o!="object"||o.type!=="object")return null;for(let a in o)if(!u$.has(a))return null;t.push(o)}let n={},i=new Set;for(let o of t){for(let a in o.properties){if(Object.prototype.hasOwnProperty.call(n,a))continue;let s=[];for(let u of t){let l=u.properties?.[a]??s$(u);l!=null&&(s.some(d=>JSON.stringify(d)===JSON.stringify(l))||s.push(l))}let c=s.length===1?s[0]:Tf(s)??{allOf:s};Ie(n,a,c)}for(let a of o.required??[])i.add(a)}let r={type:"object",properties:n};if(i.size&&(r.required=[...i]),t.every(o=>o.additionalProperties===!1))r.additionalProperties=!1;else{let o=[];for(let a of t){let s=s$(a);s&&!o.some(c=>JSON.stringify(c)===JSON.stringify(s))&&o.push(s)}o.length===1?r.additionalProperties=o[0]:o.length>1&&(r.additionalProperties={allOf:o})}return r}function bz(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let r of u$)if(r in e)return;let n=t.filter(r=>a$.some(o=>Array.isArray(r[o]))),i=null;if(!n.length)i=Tf(t);else{let r=n[0],o=a$.find(c=>Array.isArray(r[c]));if(Object.keys(r).length!==1)return;let a=t.filter(c=>c!==r),s=r[o].map(c=>Tf([...a,c]));if(s.some(c=>!c))return;i={[o]:s}}i&&(delete e.allOf,Ci(e,i))}function Xt(e,t){let n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");let i=s=>{let c=e.seen.get(s);if(c.ref===null)return;let u=c.def??c.schema,l={...u},d=c.ref;if(c.ref=null,d){i(d);let m=e.seen.get(d),p=m.schema;if(p.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(u.allOf=u.allOf??[],u.allOf.push(p)):Ci(u,p),Ci(u,l),s._zod.parent===d)for(let y in u)y==="$ref"||y==="allOf"||y in l||delete u[y];if(p.$ref&&m.def)for(let y in u)y==="$ref"||y==="allOf"||y in m.def&&JSON.stringify(u[y])===JSON.stringify(m.def[y])&&delete u[y]}let f=s._zod.parent;if(f&&f!==d){i(f);let m=e.seen.get(f);if(m?.schema.$ref&&(u.$ref=m.schema.$ref,m.def))for(let p in u)p==="$ref"||p==="allOf"||p in m.def&&JSON.stringify(u[p])===JSON.stringify(m.def[p])&&delete u[p]}e.override({zodSchema:s,jsonSchema:u,path:c.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let s of[...e.seen.entries()].reverse())i(s[0]);if(e.target!=="openapi-3.0")for(let s of e.seen.entries())c$(s[1].def??s[1].schema);for(let s of e.deferred)s();if(e.intersections.length){let s=new Map;for(let c of e.seen.values())for(let u of[c.schema,c.def]){let l=u?.allOf;if(!Array.isArray(l))continue;let d=s.get(l);d?d.push(u):s.set(l,[u])}for(let c of e.intersections)for(let u of s.get(c)??[])bz(u)}}let r={};if(e.target==="draft-2020-12"?r.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?r.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?r.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){let s=e.external.registry.get(t)?.id;if(!s)throw new Error("Schema is missing an `id` property");r.$id=e.external.uri(s)}Ci(r,n.defId?n.schema:n.def??n.schema);let o=e.metadataRegistry.get(t)?.id;o!==void 0&&r.id===o&&delete r.id;let a=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let s of e.seen.entries()){let c=s[1];c.def&&c.defId&&(c.def.id===c.defId&&delete c.def.id,Ie(a,c.defId,c.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(a).length>0&&(e.target==="draft-2020-12"?r.$defs=a:r.definitions=a);try{let s=JSON.parse(JSON.stringify(r));return Object.defineProperty(s,"~standard",{value:{...t["~standard"],jsonSchema:{input:In(t,"input",e.processors),output:In(t,"output",e.processors)}},enumerable:!1,writable:!1}),s}catch{throw new Error("Error converting schema to JSON.")}}function Ae(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let i=e._zod.def;if(i.type==="transform")return!0;if(i.type==="array")return Ae(i.element,n);if(i.type==="set")return Ae(i.valueType,n);if(i.type==="lazy")return Ae(i.getter(),n);if(i.type==="promise"||i.type==="optional"||i.type==="nonoptional"||i.type==="nullable"||i.type==="readonly"||i.type==="default"||i.type==="prefault"||i.type==="catch")return Ae(i.innerType,n);if(i.type==="intersection")return Ae(i.left,n)||Ae(i.right,n);if(i.type==="record"||i.type==="map")return Ae(i.keyType,n)||Ae(i.valueType,n);if(i.type==="pipe")return e._zod.traits.has("$ZodCodec")?!0:Ae(i.in,n)||Ae(i.out,n);if(i.type==="object"){for(let r in i.shape)if(Ae(i.shape[r],n))return!0;return!1}if(i.type==="union"){for(let r of i.options)if(Ae(r,n))return!0;return!1}if(i.type==="tuple"){for(let r of i.items)if(Ae(r,n))return!0;return!!(i.rest&&Ae(i.rest,n))}return!1}var jf=(e,t={})=>n=>{let i=qt({...n,processors:t});return re(e,i),Ht(i,e),Xt(i,e)},In=(e,t,n={})=>i=>{let{libraryOptions:r,target:o}=i??{},a=qt({...r??{},target:o,io:t,processors:n});return re(e,a),Ht(a,e),Xt(a,e)};var kn=(e,t,n)=>{(e[t]===void 0||n>e[t])&&(e[t]=n)},Sn=(e,t,n)=>{(e[t]===void 0||n<e[t])&&(e[t]=n)},l$=(e,t)=>{kn(e,"minimum",t),Sn(e,"maximum",t)},p$=(e,t)=>{e.multipleOf??(e.multipleOf=[]),e.multipleOf.includes(t)||e.multipleOf.push(t)},g$=(e,t)=>{e.patterns??(e.patterns=new Set),e.patterns.add(t)},h$=(e,t)=>{e.mime=e.mime?e.mime.filter(n=>t.includes(n)):[...t]},v$=(e,t)=>{e.format=t,t.includes("int")&&(e.isInt=!0)},d$=(e,t)=>kn(e,"minimum",t.minimum),f$=(e,t)=>Sn(e,"maximum",t.maximum),m$=e=>(t,n)=>{v$(t,n.format);let[i,r]=e[n.format];kn(t,"minimum",i),Sn(t,"maximum",r)},_z={greater_than:(e,t)=>kn(e,t.inclusive?"minimum":"exclusiveMinimum",t.value),less_than:(e,t)=>Sn(e,t.inclusive?"maximum":"exclusiveMaximum",t.value),multiple_of:(e,t)=>p$(e,t.value),number_format:m$(ii),bigint_format:m$(oi),min_length:d$,max_length:f$,length_equals:(e,t)=>l$(e,t.length),min_size:d$,max_size:f$,size_equals:(e,t)=>l$(e,t.size),string_format:(e,t)=>{v$(e,t.format),t.pattern&&g$(e,t.pattern),(t.format==="base64"||t.format==="base64url")&&(e.contentEncoding=t.format),(t.local||t.precision===-1)&&(e.laxFormat=!0)},mime_type:(e,t)=>h$(e,t.mime)};function $e(e){let t={},n=e._zod.def,i=e._zod.traits.has("$ZodCheck")?[e,...n.checks??[]]:n.checks??[];for(let o of i)_z[o._zod.def.check]?.(t,o._zod.def);let r=e._zod.bag;r.minimum!==void 0&&kn(t,"minimum",r.minimum),r.exclusiveMinimum!==void 0&&kn(t,"exclusiveMinimum",r.exclusiveMinimum),r.maximum!==void 0&&Sn(t,"maximum",r.maximum),r.exclusiveMaximum!==void 0&&Sn(t,"exclusiveMaximum",r.exclusiveMaximum),r.multipleOf!==void 0&&p$(t,r.multipleOf),r.format!==void 0&&(t.format??(t.format=r.format),r.format.includes("int")&&(t.isInt=!0)),r.mime&&h$(t,r.mime);for(let o of r.patterns??[])g$(t,o);return t}var Iz={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},kz=new Map([[ba,Uu],[_i,Au]]),y$=e=>kz.get(e)??e,Of=(e,t,n,i)=>{let r=n;r.type="string";let{minimum:o,maximum:a,format:s,patterns:c,contentEncoding:u,laxFormat:l}=$e(e);if(typeof o=="number"&&(r.minLength=o),typeof a=="number"&&(r.maxLength=a),s&&(r.format=Iz[s]??s,r.format===""&&delete r.format,(s==="time"||l)&&delete r.format),u&&(r.contentEncoding=u),c&&c.size>0){let d=[...c].map(y$);d.length===1?r.pattern=d[0].source:d.length>1&&(r.allOf=[...d.map(f=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:f.source}))])}},Rf=(e,t,n,i)=>{let r=n,{minimum:o,maximum:a,multipleOf:s,exclusiveMaximum:c,exclusiveMinimum:u,isInt:l}=$e(e);r.type=l?"integer":"number";let d=typeof u=="number"&&u>=(o??Number.NEGATIVE_INFINITY),f=typeof c=="number"&&c<=(a??Number.POSITIVE_INFINITY),m=t.target==="draft-04"||t.target==="openapi-3.0";if(d?m?(r.minimum=u,r.exclusiveMinimum=!0):r.exclusiveMinimum=u:typeof o=="number"&&(r.minimum=o),f?m?(r.maximum=c,r.exclusiveMaximum=!0):r.exclusiveMaximum=c:typeof a=="number"&&(r.maximum=a),s){let p=new Set;for(let b of s)Number.isFinite(b)&&b!==0?p.add(Math.abs(b)):ye(e,t,r,i,`A multipleOf divisor of ${b} cannot be represented in JSON Schema`);let[g,...y]=p;g!==void 0&&(r.multipleOf=g),y.length&&(r.allOf=[...r.allOf??[],...y.map(b=>({multipleOf:b}))])}},Cf=(e,t,n,i)=>{n.type="boolean"},Df=(e,t,n,i)=>{ye(e,t,n,i,"BigInt cannot be represented in JSON Schema")},Uf=(e,t,n,i)=>{ye(e,t,n,i,"Symbols cannot be represented in JSON Schema")},Af=(e,t,n,i)=>{t.target==="openapi-3.0"?(n.type="string",n.nullable=!0,n.enum=[null]):n.type="null"},Vf=(e,t,n,i)=>{ye(e,t,n,i,"Undefined cannot be represented in JSON Schema")},Bf=(e,t,n,i)=>{ye(e,t,n,i,"Void cannot be represented in JSON Schema")},Gf=(e,t,n,i)=>{n.not={}},Ff=(e,t,n,i)=>{},Lf=(e,t,n,i)=>{},Mf=(e,t,n,i)=>{ye(e,t,n,i,"Date cannot be represented in JSON Schema")},Wf=(e,t,n,i)=>{let r=e._zod.def,o=Wr(r.entries);if(o.length===0){n.not={};return}o.every(a=>typeof a=="number")&&(n.type="number"),o.every(a=>typeof a=="string")&&(n.type="string"),n.enum=o},Jf=(e,t,n,i)=>{let r=e._zod.def;if(r.values.length===0){n.not={};return}let o=[];for(let a of r.values)if(a===void 0){if(ye(e,t,n,i,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof a=="bigint"){if(ye(e,t,n,i,"BigInt literals cannot be represented in JSON Schema"))return;o.push(Number(a))}else o.push(a);if(o.length!==0)if(o.length===1){let a=o[0];n.type=a===null?"null":typeof a,t.target==="draft-04"||t.target==="openapi-3.0"?n.enum=[a]:n.const=a}else o.every(a=>typeof a=="number")&&(n.type="number"),o.every(a=>typeof a=="string")&&(n.type="string"),o.every(a=>typeof a=="boolean")&&(n.type="boolean"),o.every(a=>a===null)&&(n.type="null"),n.enum=o},qf=(e,t,n,i)=>{ye(e,t,n,i,"NaN cannot be represented in JSON Schema")},Hf=(e,t,n,i)=>{let r=n,o=e._zod.pattern;if(!o)throw new Error("Pattern not found in template literal");r.type="string",r.pattern=o.source},Xf=(e,t,n,i)=>{let r=n;r.type="string",r.format="binary",r.contentEncoding="binary";let{minimum:o,maximum:a,mime:s}=$e(e);o!==void 0&&(r.minLength=o),a!==void 0&&(r.maxLength=a),s&&(s.length===0?r.not={}:s.length===1?r.contentMediaType=s[0]:r.anyOf=s.map(c=>({contentMediaType:c})))},Yf=(e,t,n,i)=>{n.type="boolean"},Kf=(e,t,n,i)=>{ye(e,t,n,i,"Custom types cannot be represented in JSON Schema")},Qf=(e,t,n,i)=>{ye(e,t,n,i,"Function types cannot be represented in JSON Schema")},em=(e,t,n,i)=>{ye(e,t,n,i,"Transforms cannot be represented in JSON Schema")},tm=(e,t,n,i)=>{ye(e,t,n,i,"Map cannot be represented in JSON Schema")},rm=(e,t,n,i)=>{ye(e,t,n,i,"Set cannot be represented in JSON Schema")},nm=(e,t,n,i)=>{let r=n,o=e._zod.def,{minimum:a,maximum:s}=$e(e);typeof a=="number"&&(r.minItems=a),typeof s=="number"&&(r.maxItems=s),r.type="array",r.items=re(o.element,t,{...i,path:[...i.path,"items"]})};function Di(e){let t=e._zod.def;return t.type==="pipe"&&t.in._zod.traits.has("$ZodTransform")?Di(t.out):t.type==="catch"?Di(t.innerType):e._zod.optin}var im=(e,t,n,i)=>{let r=n,o=e._zod.def,a=o.shape;if(Object.getOwnPropertySymbols(a).length&&ye(e,t,r,i,"Symbol keys cannot be represented in JSON Schema"))return;r.type="object",r.properties={};for(let u in a)Ie(r.properties,u,re(a[u],t,{...i,path:[...i.path,"properties",u]}));let c=[];for(let u of Object.keys(a)){let l=o.shape[u];(t.io==="input"?Di(l)===void 0:l._zod.optout===void 0)&&c.push(u)}c.length>0&&(r.required=c),o.catchall?._zod.def.type==="never"?r.additionalProperties=!1:o.catchall?o.catchall&&(r.additionalProperties=re(o.catchall,t,{...i,path:[...i.path,"additionalProperties"]})):t.io==="output"&&(r.additionalProperties=!1)},vs=(e,t,n,i)=>{let r=e._zod.def,o=r.inclusive===!1,a=r.options.map((s,c)=>re(s,t,{...i,path:[...i.path,o?"oneOf":"anyOf",c]}));o?n.oneOf=a:n.anyOf=a},om=(e,t,n,i)=>{let r=e._zod.def,o=re(r.left,t,{...i,path:[...i.path,"allOf",0]}),a=re(r.right,t,{...i,path:[...i.path,"allOf",1]}),s=u=>"allOf"in u&&Object.keys(u).length===1,c=[...s(o)?o.allOf:[o],...s(a)?a.allOf:[a]];n.allOf=c,t.intersections.push(c)},am=(e,t,n,i)=>{let r=n,o=e._zod.def;r.type="array";let a=t.target==="draft-2020-12"?"prefixItems":"items",s=t.target==="draft-2020-12"||t.target==="openapi-3.0"?"items":"additionalItems",c=o.items.map((g,y)=>re(g,t,{...i,path:[...i.path,a,y]})),u=o.rest?re(o.rest,t,{...i,path:[...i.path,s,...t.target==="openapi-3.0"?[o.items.length]:[]]}):null,l=o.items.length;for(;l>0;){let g=o.items[l-1];if(!(t.io==="input"?Di(g)!==void 0:g._zod.optout==="optional"))break;l--}let d=o.items.length,f=!o.rest;t.target==="draft-2020-12"?(r.prefixItems=c,f?r.items=!1:u&&(r.items=u),l>0&&(r.minItems=l),f&&(r.maxItems=d)):t.target==="openapi-3.0"?(r.items={anyOf:c},u&&r.items.anyOf.push(u),l>0&&(r.minItems=l),f&&(r.maxItems=d)):(r.items=c,f?r.additionalItems=!1:u&&(r.additionalItems=u),l>0&&(r.minItems=l),f&&(r.maxItems=d));let{minimum:m,maximum:p}=$e(e);typeof m=="number"&&(r.minItems=m),typeof p=="number"&&(r.maxItems=p)};function Ef(e,t,n){if(t.$ref){if(n.has(t))return t;n.add(t);let p=e.get(t)?.def;if(!p)return t;let g=Ef(e,p,n);return g===p?t:g}for(let p of["anyOf","oneOf"]){let g=t[p];if(!Array.isArray(g))continue;let y=g.map(b=>Ef(e,b,n));y.some((b,_)=>b!==g[_])&&(t={...t,[p]:y})}let i=Array.isArray(t.type)?t.type:[t.type],r=!i.includes("string")&&i.some(p=>p==="number"||p==="integer"),o=t.enum??(t.const!==void 0?[t.const]:void 0);if(!r&&!o?.some(p=>typeof p=="number"))return t;let{minimum:a,maximum:s,exclusiveMinimum:c,exclusiveMaximum:u,multipleOf:l,format:d,id:f,...m}=t;return m.enum?m.enum=m.enum.map(p=>typeof p=="number"?String(p):p):typeof m.const=="number"&&(m.const=String(m.const)),r&&(m.type="string",o||(m.pattern=(i.includes("number")?Ot:pi).source)),m}var Zf=new WeakMap;function Sz(e){let t=new Map;for(let i of e.seen.values())i.def&&!t.has(i.schema)&&t.set(i.schema,i);let n=new Map;for(let i of Zf.get(e)??[]){let r=e.seen.get(i),o=(r?.def??r?.schema)?.propertyNames;if(!o||o===!0||n.has(o))continue;let a=Ef(t,o,new Set);a!==o&&n.set(o,a)}if(n.size)for(let i of e.seen.values())for(let r of[i.schema,i.def]){let o=r&&n.get(r.propertyNames);o&&(r.propertyNames=o)}}var sm=(e,t,n,i)=>{let r=n,o=e._zod.def;r.type="object";let a=o.keyType,s=$e(a).patterns;if(o.mode==="loose"&&s&&s.size>0){let l=re(o.valueType,t,{...i,path:[...i.path,"patternProperties","*"]});r.patternProperties={};for(let d of s)Ie(r.patternProperties,y$(d).source,l)}else{if(t.target==="draft-07"||t.target==="draft-2020-12"){r.propertyNames=re(o.keyType,t,{...i,path:[...i.path,"propertyNames"]});let l=Zf.get(t);l||(l=[],Zf.set(t,l),t.deferred.push(()=>Sz(t))),l.push(e)}r.additionalProperties=re(o.valueType,t,{...i,path:[...i.path,"additionalProperties"]})}let c=a._zod.values,u=t.io==="input"&&Di(o.valueType)!==void 0;if(c&&!o.partial&&!u){let l=[...c].filter(d=>typeof d=="string"||typeof d=="number");l.length>0&&(r.required=l.map(String))}},cm=(e,t,n,i)=>{let r=e._zod.def,o=re(r.innerType,t,i),a=t.seen.get(e);t.target==="openapi-3.0"?(a.ref=r.innerType,n.nullable=!0):n.anyOf=[o,{type:"null"}]},um=(e,t,n,i)=>{let r=e._zod.def;re(r.innerType,t,i);let o=t.seen.get(e);o.ref=r.innerType},lm=Symbol();function $$(e,t,n,i,r){let o=!1,a=JSON.stringify(e,(s,c)=>typeof c!="bigint"?c:(o=!0,null));return o?(ye(t,n,i,r,"BigInt defaults cannot be represented in JSON Schema"),lm):JSON.parse(a)}var dm=(e,t,n,i)=>{let r=e._zod.def;re(r.innerType,t,i);let o=t.seen.get(e);o.ref=r.innerType;let a=$$(r.defaultValue,e,t,n,i);a!==lm&&(n.default=a)},fm=(e,t,n,i)=>{let r=e._zod.def;re(r.innerType,t,i);let o=t.seen.get(e);if(o.ref=r.innerType,t.io!=="input")return;let a=$$(r.defaultValue,e,t,n,i);a!==lm&&(n._prefault=a)},mm=(e,t,n,i)=>{let r=e._zod.def;re(r.innerType,t,i);let o=t.seen.get(e);o.ref=r.innerType;let a;try{a=r.catchValue(void 0)}catch{ye(e,t,n,i,"Dynamic catch values are not supported in JSON Schema");return}n.default=a},pm=(e,t,n,i)=>{let r=e._zod.def,o=r.in._zod.traits.has("$ZodTransform"),a=t.io==="input"?o?r.out:r.in:r.out;re(a,t,i);let s=t.seen.get(e);s.ref=a},gm=(e,t,n,i)=>{let r=e._zod.def;re(r.innerType,t,i);let o=t.seen.get(e);o.ref=r.innerType,n.readOnly=!0},hm=(e,t,n,i)=>{let r=e._zod.def;re(r.innerType,t,i);let o=t.seen.get(e);o.ref=r.innerType},ys=(e,t,n,i)=>{let r=e._zod.def;re(r.innerType,t,i);let o=t.seen.get(e);o.ref=r.innerType},vm=(e,t,n,i)=>{let r=e._zod.innerType;re(r,t,i);let o=t.seen.get(e);o.ref=r},hs={string:Of,number:Rf,boolean:Cf,bigint:Df,symbol:Uf,null:Af,undefined:Vf,void:Bf,never:Gf,any:Ff,unknown:Lf,date:Mf,enum:Wf,literal:Jf,nan:qf,template_literal:Hf,file:Xf,success:Yf,custom:Kf,function:Qf,transform:em,map:tm,set:rm,array:nm,object:im,union:vs,intersection:om,tuple:am,record:sm,nullable:cm,nonoptional:um,default:dm,prefault:fm,catch:mm,pipe:pm,readonly:gm,promise:hm,optional:ys,lazy:vm};function $s(e,t){if("_idmap"in e){let i=e,r=qt({...t,processors:hs}),o={};for(let c of i._idmap.entries()){let[u,l]=c;re(l,r)}let a={},s={registry:i,uri:t?.uri,defs:o};r.external=s;for(let c of i._idmap.entries()){let[u,l]=c;Ht(r,l),Ie(a,u,Xt(r,l))}if(Object.keys(o).length>0){let c=r.target==="draft-2020-12"?"$defs":"definitions";a.__shared={[c]:o}}return{schemas:a}}let n=qt({...t,processors:hs});return re(e,n),Ht(n,e),Xt(n,e)}var bs=class{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(t){this.ctx.counter=t}get seen(){return this.ctx.seen}constructor(t){let n=t?.target??"draft-2020-12";n==="draft-4"&&(n="draft-04"),n==="draft-7"&&(n="draft-07"),this.ctx=qt({processors:hs,target:n,...t?.metadata&&{metadata:t.metadata},...t?.unrepresentable&&{unrepresentable:t.unrepresentable},...t?.override&&{override:t.override},...t?.io&&{io:t.io}})}process(t,n={path:[],schemaPath:[]}){return re(t,this.ctx,n)}emit(t,n){n&&(n.cycles&&(this.ctx.cycles=n.cycles),n.reused&&(this.ctx.reused=n.reused),n.external&&(this.ctx.external=n.external)),this.ctx.sharedDefsExtractedFor=void 0,this.ctx.sharedEmitDoneFor=void 0,Ht(this.ctx,t);let i=Xt(this.ctx,t),{"~standard":r,...o}=i;return o}};var b$={};var _$=Symbol("z.visit/resolving");function Ui(e,t){let n=typeof t=="function"?t:(a,s)=>{let c=t[a._zod.def.type];return c?c(a,s):a},i=new Map;function r(a){let s=i.get(a);if(s===_$)return new wi({type:"lazy",getter:()=>i.get(a)});if(s!==void 0)return s;i.set(a,_$);let c=o(a),u=n(c,c!==a);return i.set(a,u),u}function o(a){let s=a._zod.def,c=s.type;switch(c){case"object":{let u=s.shape,l=Object.keys(u),d=!1,f={};for(let p of l){let g=r(u[p]);g!==u[p]&&(d=!0),f[p]=g}let m=s.catchall;return s.catchall&&(m=r(s.catchall),m!==s.catchall&&(d=!0)),d?ee(a,{...s,shape:f,catchall:m}):a}case"array":{let u=r(s.element);return u===s.element?a:ee(a,{...s,element:u})}case"tuple":{let u=s.items,l=!1,d=[];for(let m of u){let p=r(m);p!==m&&(l=!0),d.push(p)}let f=s.rest;return s.rest&&(f=r(s.rest),f!==s.rest&&(l=!0)),l?ee(a,{...s,items:d,rest:f}):a}case"record":case"map":{let u=r(s.keyType),l=r(s.valueType);return u===s.keyType&&l===s.valueType?a:ee(a,{...s,keyType:u,valueType:l})}case"set":{let u=r(s.valueType);return u===s.valueType?a:ee(a,{...s,valueType:u})}case"union":{let u=s.options,l=!1,d=[];for(let f of u){let m=r(f);m!==f&&(l=!0),d.push(m)}return l?ee(a,{...s,options:d}):a}case"intersection":{let u=r(s.left),l=r(s.right);return u===s.left&&l===s.right?a:ee(a,{...s,left:u,right:l})}case"optional":case"nullable":case"default":case"prefault":case"catch":case"readonly":case"nonoptional":case"promise":case"success":{let u=r(s.innerType);return u===s.innerType?a:ee(a,{...s,innerType:u})}case"pipe":{let u=r(s.in),l=r(s.out);return u===s.in&&l===s.out?a:ee(a,{...s,in:u,out:l})}case"function":{let u=r(s.input),l=r(s.output);return u===s.input&&l===s.output?a:ee(a,{...s,input:u,output:l})}case"lazy":{let u=s.getter,{_cachedInner:l,...d}=s;return ee(a,{...d,getter:()=>r(u())})}case"template_literal":case"string":case"number":case"int":case"boolean":case"bigint":case"symbol":case"undefined":case"null":case"void":case"never":case"any":case"unknown":case"date":case"nan":case"enum":case"literal":case"file":case"transform":case"custom":return a;default:return a}}return r(e)}function _s(e){return!!e._zod}function Yt(e,t){return _s(e)?Xo(e,t):e.safeParse(t)}function Is(e){if(!e)return;let t;if(_s(e)?t=e._zod?.def?.shape:t=e.shape,!!t){if(typeof t=="function")try{return t()}catch{return}return t}}function ks(e){if(_s(e)){let o=e._zod?.def;if(o){if(o.value!==void 0)return o.value;if(Array.isArray(o.values)&&o.values.length>0)return o.values[0]}}let n=e._def;if(n){if(n.value!==void 0)return n.value;if(Array.isArray(n.values)&&n.values.length>0)return n.values[0]}let i=e.value;if(i!==void 0)return i}var ot={};jt(ot,{$brand:()=>pu,$input:()=>Vd,$output:()=>Ad,INVALID:()=>Ue,NEVER:()=>mu,TimePrecision:()=>Yd,ZodAny:()=>Cm,ZodArray:()=>Vm,ZodBase64:()=>Gs,ZodBase64URL:()=>Fs,ZodBigInt:()=>Tn,ZodBigIntFormat:()=>Ws,ZodBoolean:()=>Nn,ZodCIDRv4:()=>Vs,ZodCIDRv6:()=>Bs,ZodCUID:()=>Zs,ZodCUID2:()=>Os,ZodCatch:()=>op,ZodCodec:()=>qi,ZodCompileAsyncError:()=>mt,ZodCompileUnsupportedError:()=>W,ZodCreditCard:()=>jm,ZodCustom:()=>Hi,ZodCustomStringFormat:()=>Pr,ZodDate:()=>Gi,ZodDefault:()=>Qm,ZodDiscriminatedUnion:()=>Gm,ZodE164:()=>Ls,ZodEmail:()=>Ns,ZodEmoji:()=>js,ZodEnum:()=>xn,ZodError:()=>xz,ZodExactOptional:()=>Hs,ZodFile:()=>Hm,ZodFirstPartyTypeKind:()=>$p,ZodFunction:()=>gp,ZodGUID:()=>Ts,ZodIBAN:()=>Em,ZodIPv4:()=>Us,ZodIPv6:()=>As,ZodISODate:()=>Qt,ZodISODateTime:()=>Kt,ZodISODuration:()=>tr,ZodISOTime:()=>er,ZodInstanceOf:()=>yp,ZodIntersection:()=>Fm,ZodIssueCode:()=>Nz,ZodJWT:()=>Ms,ZodKSUID:()=>Ds,ZodLazy:()=>fp,ZodLiteral:()=>qm,ZodMAC:()=>Tm,ZodMap:()=>Wm,ZodNaN:()=>sp,ZodNanoID:()=>Es,ZodNever:()=>Um,ZodNonOptional:()=>Xs,ZodNull:()=>Rm,ZodNullable:()=>Km,ZodNumber:()=>Pn,ZodNumberFormat:()=>Nr,ZodObject:()=>Fi,ZodOptional:()=>Wi,ZodPipe:()=>Ji,ZodPrefault:()=>tp,ZodPreprocess:()=>cp,ZodPromise:()=>pp,ZodReadonly:()=>up,ZodRealError:()=>Je,ZodRecord:()=>wn,ZodSet:()=>Jm,ZodString:()=>zn,ZodStringFormat:()=>oe,ZodSuccess:()=>ip,ZodSymbol:()=>Zm,ZodTemplateLiteral:()=>dp,ZodTransform:()=>Xm,ZodTuple:()=>Lm,ZodType:()=>A,ZodULID:()=>Rs,ZodURL:()=>Vi,ZodUUID:()=>kt,ZodUndefined:()=>Om,ZodUnion:()=>Li,ZodUnknown:()=>Dm,ZodVoid:()=>Am,ZodXID:()=>Cs,ZodXor:()=>Bm,_ZodString:()=>Ps,_default:()=>ep,_function:()=>Nb,any:()=>lb,array:()=>L,base64:()=>L$,base64url:()=>M$,bigint:()=>ob,boolean:()=>he,catch:()=>ap,check:()=>Tb,cidrv4:()=>G$,cidrv6:()=>F$,clone:()=>ee,codec:()=>wb,coerce:()=>_p,compile:()=>Ld,config:()=>ge,core:()=>Ct,creditCard:()=>J$,cuid:()=>O$,cuid2:()=>R$,currencyCode:()=>Q$,custom:()=>Ys,date:()=>fb,decode:()=>km,decodeAsync:()=>wm,deepPartial:()=>Bb,describe:()=>jb,discriminatedUnion:()=>Mi,e164:()=>W$,email:()=>S$,emoji:()=>E$,encode:()=>Im,encodeAsync:()=>Sm,endsWith:()=>pn,enum:()=>we,exactOptional:()=>Ym,file:()=>_b,flattenError:()=>ui,float32:()=>tb,float64:()=>rb,formatError:()=>li,fromJSONSchema:()=>Vb,function:()=>Nb,getDiscriminatedOption:()=>md,getErrorMap:()=>jz,globalRegistry:()=>ke,gt:()=>_t,gte:()=>et,guid:()=>w$,hash:()=>eb,hex:()=>K$,hostname:()=>Y$,httpUrl:()=>j$,iban:()=>q$,includes:()=>fn,input:()=>Fb,instanceof:()=>Zb,int:()=>xs,int32:()=>nb,int64:()=>ab,intersection:()=>jn,invertCodec:()=>xb,ipv4:()=>A$,ipv6:()=>B$,iso:()=>Tr,json:()=>Rb,jwt:()=>H$,keyof:()=>mb,ksuid:()=>U$,lazy:()=>mp,length:()=>wr,literal:()=>E,locales:()=>Ti,looseObject:()=>Se,looseRecord:()=>vb,lowercase:()=>ln,lt:()=>bt,lte:()=>Qe,mac:()=>V$,map:()=>yb,maxLength:()=>Sr,maxSize:()=>Jt,memoizer:()=>Pi,meta:()=>Eb,mime:()=>hn,minLength:()=>Rt,minSize:()=>It,multipleOf:()=>Wt,nan:()=>Sb,nanoid:()=>Z$,nativeEnum:()=>bb,negative:()=>fs,never:()=>Js,nonnegative:()=>ps,nonoptional:()=>np,nonpositive:()=>ms,normalize:()=>vn,null:()=>Bi,nullable:()=>Ai,nullish:()=>Ib,number:()=>K,object:()=>T,optional:()=>ie,output:()=>Lb,overwrite:()=>pt,parse:()=>ym,parseAsync:()=>$m,partialRecord:()=>hb,pipe:()=>zs,positive:()=>ds,prefault:()=>rp,preprocess:()=>Xi,prettifyError:()=>$u,promise:()=>Pb,properties:()=>gn,property:()=>gs,readonly:()=>lp,record:()=>ae,refine:()=>hp,regex:()=>un,regexes:()=>it,registry:()=>Va,safeDecode:()=>zm,safeDecodeAsync:()=>Nm,safeEncode:()=>xm,safeEncodeAsync:()=>Pm,safeParse:()=>bm,safeParseAsync:()=>_m,set:()=>$b,setErrorMap:()=>Tz,size:()=>kr,slugify:()=>_n,startsWith:()=>mn,strictObject:()=>pb,string:()=>$,stringFormat:()=>X$,stringbool:()=>Ob,success:()=>kb,superRefine:()=>vp,symbol:()=>cb,templateLiteral:()=>zb,toJSONSchema:()=>$s,toLowerCase:()=>$n,toUpperCase:()=>bn,toZod:()=>ei,transform:()=>qs,treeifyError:()=>yu,trim:()=>yn,tuple:()=>Mm,uint32:()=>ib,uint64:()=>sb,ulid:()=>C$,undefined:()=>ub,union:()=>ne,unknown:()=>ce,uppercase:()=>dn,url:()=>T$,util:()=>I,uuid:()=>x$,uuidv4:()=>z$,uuidv6:()=>P$,uuidv7:()=>N$,validate:()=>tn,validateAsync:()=>rn,void:()=>db,withParser:()=>Ba,xid:()=>D$,xor:()=>gb});var En={};jt(En,{ZodAny:()=>Cm,ZodArray:()=>Vm,ZodBase64:()=>Gs,ZodBase64URL:()=>Fs,ZodBigInt:()=>Tn,ZodBigIntFormat:()=>Ws,ZodBoolean:()=>Nn,ZodCIDRv4:()=>Vs,ZodCIDRv6:()=>Bs,ZodCUID:()=>Zs,ZodCUID2:()=>Os,ZodCatch:()=>op,ZodCodec:()=>qi,ZodCreditCard:()=>jm,ZodCustom:()=>Hi,ZodCustomStringFormat:()=>Pr,ZodDate:()=>Gi,ZodDefault:()=>Qm,ZodDiscriminatedUnion:()=>Gm,ZodE164:()=>Ls,ZodEmail:()=>Ns,ZodEmoji:()=>js,ZodEnum:()=>xn,ZodExactOptional:()=>Hs,ZodFile:()=>Hm,ZodFunction:()=>gp,ZodGUID:()=>Ts,ZodIBAN:()=>Em,ZodIPv4:()=>Us,ZodIPv6:()=>As,ZodISODate:()=>Qt,ZodISODateTime:()=>Kt,ZodISODuration:()=>tr,ZodISOTime:()=>er,ZodInstanceOf:()=>yp,ZodIntersection:()=>Fm,ZodJWT:()=>Ms,ZodKSUID:()=>Ds,ZodLazy:()=>fp,ZodLiteral:()=>qm,ZodMAC:()=>Tm,ZodMap:()=>Wm,ZodNaN:()=>sp,ZodNanoID:()=>Es,ZodNever:()=>Um,ZodNonOptional:()=>Xs,ZodNull:()=>Rm,ZodNullable:()=>Km,ZodNumber:()=>Pn,ZodNumberFormat:()=>Nr,ZodObject:()=>Fi,ZodOptional:()=>Wi,ZodPipe:()=>Ji,ZodPrefault:()=>tp,ZodPreprocess:()=>cp,ZodPromise:()=>pp,ZodReadonly:()=>up,ZodRecord:()=>wn,ZodSet:()=>Jm,ZodString:()=>zn,ZodStringFormat:()=>oe,ZodSuccess:()=>ip,ZodSymbol:()=>Zm,ZodTemplateLiteral:()=>dp,ZodTransform:()=>Xm,ZodTuple:()=>Lm,ZodType:()=>A,ZodULID:()=>Rs,ZodURL:()=>Vi,ZodUUID:()=>kt,ZodUndefined:()=>Om,ZodUnion:()=>Li,ZodUnknown:()=>Dm,ZodVoid:()=>Am,ZodXID:()=>Cs,ZodXor:()=>Bm,_ZodString:()=>Ps,_default:()=>ep,_function:()=>Nb,any:()=>lb,array:()=>L,base64:()=>L$,base64url:()=>M$,bigint:()=>ob,boolean:()=>he,catch:()=>ap,check:()=>Tb,cidrv4:()=>G$,cidrv6:()=>F$,codec:()=>wb,creditCard:()=>J$,cuid:()=>O$,cuid2:()=>R$,currencyCode:()=>Q$,custom:()=>Ys,date:()=>fb,describe:()=>jb,discriminatedUnion:()=>Mi,e164:()=>W$,email:()=>S$,emoji:()=>E$,enum:()=>we,exactOptional:()=>Ym,file:()=>_b,float32:()=>tb,float64:()=>rb,function:()=>Nb,guid:()=>w$,hash:()=>eb,hex:()=>K$,hostname:()=>Y$,httpUrl:()=>j$,iban:()=>q$,instanceof:()=>Zb,int:()=>xs,int32:()=>nb,int64:()=>ab,intersection:()=>jn,invertCodec:()=>xb,ipv4:()=>A$,ipv6:()=>B$,json:()=>Rb,jwt:()=>H$,keyof:()=>mb,ksuid:()=>U$,lazy:()=>mp,literal:()=>E,looseObject:()=>Se,looseRecord:()=>vb,mac:()=>V$,map:()=>yb,meta:()=>Eb,nan:()=>Sb,nanoid:()=>Z$,nativeEnum:()=>bb,never:()=>Js,nonoptional:()=>np,null:()=>Bi,nullable:()=>Ai,nullish:()=>Ib,number:()=>K,object:()=>T,optional:()=>ie,partialRecord:()=>hb,pipe:()=>zs,prefault:()=>rp,preprocess:()=>Xi,promise:()=>Pb,readonly:()=>lp,record:()=>ae,refine:()=>hp,set:()=>$b,strictObject:()=>pb,string:()=>$,stringFormat:()=>X$,stringbool:()=>Ob,success:()=>kb,superRefine:()=>vp,symbol:()=>cb,templateLiteral:()=>zb,transform:()=>qs,tuple:()=>Mm,uint32:()=>ib,uint64:()=>sb,ulid:()=>C$,undefined:()=>ub,union:()=>ne,unknown:()=>ce,url:()=>T$,uuid:()=>x$,uuidv4:()=>z$,uuidv6:()=>P$,uuidv7:()=>N$,void:()=>db,xid:()=>D$,xor:()=>gb});var Ss={};jt(Ss,{endsWith:()=>pn,gt:()=>_t,gte:()=>et,includes:()=>fn,length:()=>wr,lowercase:()=>ln,lt:()=>bt,lte:()=>Qe,maxLength:()=>Sr,maxSize:()=>Jt,mime:()=>hn,minLength:()=>Rt,minSize:()=>It,multipleOf:()=>Wt,negative:()=>fs,nonnegative:()=>ps,nonpositive:()=>ms,normalize:()=>vn,overwrite:()=>pt,positive:()=>ds,properties:()=>gn,property:()=>gs,regex:()=>un,size:()=>kr,slugify:()=>_n,startsWith:()=>mn,toLowerCase:()=>$n,toUpperCase:()=>bn,trim:()=>yn,uppercase:()=>dn});var I$=new WeakSet([Object.prototype,Error.prototype]);function ws(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let i=n(this);return Object.defineProperty(this,t,{value:i,configurable:!0,writable:!0}),i},set(i){Object.defineProperty(this,t,{value:i,configurable:!0,writable:!0})}})}var k$=(e,t)=>{vu.init(e,t),e.name="ZodError";let n=Object.getPrototypeOf(e);I$.has(n)||(I$.add(n),ws(n,"format",i=>r=>li(i,r)),ws(n,"flatten",i=>r=>ui(i,r)),ws(n,"addIssue",i=>r=>{i.issues.push(r),i.message=JSON.stringify(i.issues,Jr,2)}),ws(n,"addIssues",i=>r=>{i.issues.push(...r),i.message=JSON.stringify(i.issues,Jr,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},xz=h("ZodError",k$),Je=h("ZodError",k$,void 0,{Parent:Error});var ym=Yr(Je),$m=Kr(Je),bm=Qr(Je),_m=en(Je),Im=Yo(Je),km=Ko(Je),Sm=Qo(Je),wm=ea(Je),xm=ta(Je),zm=ra(Je),Pm=na(Je),Nm=ia(Je);function Pz(){_e.localeError||ge(Ca())}function zr(){_e.memoizer||ge({memoizer:Pi()})}var A=h("ZodType",(e,t)=>(Pz(),C.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(I.mergeDefs(t,{checks:[...t.checks??[],...e.map(n=>typeof n=="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return ee(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(hp(e,t))},superRefine(e,t){return this.check(vp(e,t))},overwrite(e){return this.check(pt(e))},optional(){return ie(this)},exactOptional(){return Ym(this)},nullable(){return Ai(this)},nullish(){return ie(Ai(this))},nonoptional(e){return np(this,e)},array(){return L(this)},or(e){return ne([this,e])},and(e){return jn(this,e)},transform(e){return zs(this,qs(e))},default(e){return ep(this,e)},prefault(e){return rp(this,e)},catch(e){return ap(this,e)},pipe(e){return zs(this,e)},readonly(){return lp(this)},describe(e){let t=this.clone();return ke.add(t,{description:e}),t},meta(...e){if(e.length===0)return ke.get(this);let t=this.clone();return ke.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return I.hide(this,"~standard",{...ga(this),jsonSchema:{input:In(this,"input"),output:In(this,"output")}})},set"~standard"(e){I.own(this,"~standard",e)},parse:function e(t,n){return ym(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await $m(this,t,n,{callee:e})},safeParse(e,t){return bm(this,e,t)},async safeParseAsync(e,t){return _m(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){I.own(this,"spa",e)},validate(e,t){return tn(this,e,t)},validateAsync(e,t){return rn(this,e,t)},encode:function e(t,n){return Im(this,t,n,{callee:e})},decode:function e(t,n){return km(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await Sm(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await wm(this,t,n,{callee:e})},safeEncode(e,t){return xm(this,e,t)},safeDecode(e,t){return zm(this,e,t)},async safeEncodeAsync(e,t){return Pm(this,e,t)},async safeDecodeAsync(e,t){return Nm(this,e,t)},toJSONSchema(e){return jf(this,{})(e)},get description(){return ke.get(this)?.description},get _def(){return this._zod.def}}),Ps=h("_ZodString",(e,t)=>{yr.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Of(e,n,i,r)},I.derived({format:e=>$e(e).format??null,minLength:e=>$e(e).minimum??null,maxLength:e=>$e(e).maximum??null},{regex(...e){return this.check(un(...e))},includes(...e){return this.check(fn(...e))},startsWith(...e){return this.check(mn(...e))},endsWith(...e){return this.check(pn(...e))},min(...e){return this.check(Rt(...e))},max(...e){return this.check(Sr(...e))},length(...e){return this.check(wr(...e))},nonempty(...e){return this.check(Rt(1,...e))},lowercase(e){return this.check(ln(e))},uppercase(e){return this.check(dn(e))},trim(){return this.check(yn())},normalize(...e){return this.check(vn(...e))},toLowerCase(){return this.check($n())},toUpperCase(){return this.check(bn())},slugify(){return this.check(_n())}})),zn=h("ZodString",(e,t)=>{yr.init(e,t),Ps.init(e,t)},{email(e){return this.check(La(Ns,e))},url(e){return this.check(ji(Vi,e))},jwt(e){return this.check(ls(Ms,e))},emoji(e){return this.check(Xa(js,e))},guid(e){return this.check(Ma(Ts,e))},uuid(e){return this.check(Wa(kt,e))},uuidv4(e){return this.check(Ja(kt,e))},uuidv6(e){return this.check(qa(kt,e))},uuidv7(e){return this.check(Ha(kt,e))},nanoid(e){return this.check(Ya(Es,e))},cuid(e){return this.check(Ka(Zs,e))},cuid2(e){return this.check(Qa(Os,e))},ulid(e){return this.check(es(Rs,e))},base64(e){return this.check(ss(Gs,e))},base64url(e){return this.check(cs(Fs,e))},xid(e){return this.check(ts(Cs,e))},ksuid(e){return this.check(rs(Ds,e))},ipv4(e){return this.check(ns(Us,e))},ipv6(e){return this.check(is(As,e))},cidrv4(e){return this.check(os(Vs,e))},cidrv6(e){return this.check(as(Bs,e))},e164(e){return this.check(us(Ls,e))},datetime(e){return this.check(Ei(Kt,e))},date(e){return this.check(Zi(Qt,e))},time(e){return this.check(Oi(er,e))},duration(e){return this.check(Ri(tr,e))}});function $(e){return Wd(zn,e)}var oe=h("ZodStringFormat",(e,t)=>{te.init(e,t),Ps.init(e,t)}),Kt=h("ZodISODateTime",(e,t)=>{Ul.init(e,t),oe.init(e,t)}),Qt=h("ZodISODate",(e,t)=>{Al.init(e,t),oe.init(e,t)}),er=h("ZodISOTime",(e,t)=>{Vl.init(e,t),oe.init(e,t)}),tr=h("ZodISODuration",(e,t)=>{Bl.init(e,t),oe.init(e,t)}),Ns=h("ZodEmail",(e,t)=>{zl.init(e,t),oe.init(e,t)});function S$(e){return La(Ns,e)}var Ts=h("ZodGUID",(e,t)=>{wl.init(e,t),oe.init(e,t)});function w$(e){return Ma(Ts,e)}var kt=h("ZodUUID",(e,t)=>{xl.init(e,t),oe.init(e,t)});function x$(e){return Wa(kt,e)}function z$(e){return Ja(kt,e)}function P$(e){return qa(kt,e)}function N$(e){return Ha(kt,e)}var Vi=h("ZodURL",(e,t)=>{Tl.init(e,t),oe.init(e,t)});function T$(e){return ji(Vi,e)}function j$(e){return ji(Vi,{protocol:mi,hostname:Bu,...I.normalizeParams(e)})}var js=h("ZodEmoji",(e,t)=>{jl.init(e,t),oe.init(e,t)});function E$(e){return Xa(js,e)}var Es=h("ZodNanoID",(e,t)=>{El.init(e,t),oe.init(e,t)});function Z$(e){return Ya(Es,e)}var Zs=h("ZodCUID",(e,t)=>{Zl.init(e,t),oe.init(e,t)});function O$(e){return Ka(Zs,e)}var Os=h("ZodCUID2",(e,t)=>{Ol.init(e,t),oe.init(e,t)});function R$(e){return Qa(Os,e)}var Rs=h("ZodULID",(e,t)=>{Rl.init(e,t),oe.init(e,t)});function C$(e){return es(Rs,e)}var Cs=h("ZodXID",(e,t)=>{Cl.init(e,t),oe.init(e,t)});function D$(e){return ts(Cs,e)}var Ds=h("ZodKSUID",(e,t)=>{Dl.init(e,t),oe.init(e,t)});function U$(e){return rs(Ds,e)}var Us=h("ZodIPv4",(e,t)=>{Gl.init(e,t),oe.init(e,t)});function A$(e){return ns(Us,e)}var Tm=h("ZodMAC",(e,t)=>{Ll.init(e,t),oe.init(e,t)});function V$(e){return qd(Tm,e)}var As=h("ZodIPv6",(e,t)=>{Fl.init(e,t),oe.init(e,t)});function B$(e){return is(As,e)}var Vs=h("ZodCIDRv4",(e,t)=>{Ml.init(e,t),oe.init(e,t)});function G$(e){return os(Vs,e)}var Bs=h("ZodCIDRv6",(e,t)=>{Wl.init(e,t),oe.init(e,t)});function F$(e){return as(Bs,e)}var Gs=h("ZodBase64",(e,t)=>{Jl.init(e,t),oe.init(e,t)});function L$(e){return ss(Gs,e)}var Fs=h("ZodBase64URL",(e,t)=>{ql.init(e,t),oe.init(e,t)});function M$(e){return cs(Fs,e)}var Ls=h("ZodE164",(e,t)=>{Hl.init(e,t),oe.init(e,t)});function W$(e){return us(Ls,e)}var jm=h("ZodCreditCard",(e,t)=>{Xl.init(e,t),oe.init(e,t)});function J$(e){return Hd(jm,e)}var Em=h("ZodIBAN",(e,t)=>{Yl.init(e,t),oe.init(e,t)});function q$(e){return Xd(Em,e)}var Ms=h("ZodJWT",(e,t)=>{Kl.init(e,t),oe.init(e,t)});function H$(e){return ls(Ms,e)}var Pr=h("ZodCustomStringFormat",(e,t)=>{Ql.init(e,t),oe.init(e,t)});function X$(e,t,n={}){return xr(Pr,e,t,n)}function Y$(e){return xr(Pr,"hostname",Vu,e)}function K$(e){return xr(Pr,"hex",tl,e)}function Q$(e){return xr(Pr,"currency_code",Fu,e)}function eb(e,t){let n=t?.enc??"hex",i=`${e}_${n}`,r=it[i];if(!r)throw new Error(`Unrecognized hash format: ${i}`);return xr(Pr,i,r,t)}var Pn=h("ZodNumber",(e,t)=>{wa.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Rf(e,n,i,r),e.isFinite=!0},I.derived({minValue:e=>{let{minimum:t,exclusiveMinimum:n}=$e(e);return Math.max(t??Number.NEGATIVE_INFINITY,n??Number.NEGATIVE_INFINITY)},maxValue:e=>{let{maximum:t,exclusiveMaximum:n}=$e(e);return Math.min(t??Number.POSITIVE_INFINITY,n??Number.POSITIVE_INFINITY)},isInt:e=>{let{isInt:t,multipleOf:n}=$e(e);return!!t||!!n?.some(Number.isSafeInteger)},format:e=>$e(e).format??null},{gt(e,t){return this.check(_t(e,t))},gte(e,t){return this.check(et(e,t))},min(e,t){return this.check(et(e,t))},lt(e,t){return this.check(bt(e,t))},lte(e,t){return this.check(Qe(e,t))},max(e,t){return this.check(Qe(e,t))},int(e){return this.check(xs(e))},safe(e){return this.check(xs(e))},positive(e){return this.check(_t(0,e))},nonnegative(e){return this.check(et(0,e))},negative(e){return this.check(bt(0,e))},nonpositive(e){return this.check(Qe(0,e))},multipleOf(e,t){return this.check(Wt(e,t))},step(e,t){return this.check(Wt(e,t))},finite(){return this}}));function K(e){return Kd(Pn,e)}var Nr=h("ZodNumberFormat",(e,t)=>{ed.init(e,t),Pn.init(e,t)});function xs(e){return ef(Nr,e)}function tb(e){return tf(Nr,e)}function rb(e){return rf(Nr,e)}function nb(e){return nf(Nr,e)}function ib(e){return of(Nr,e)}var Nn=h("ZodBoolean",(e,t)=>{Ii.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Cf(e,n,i,r)});function he(e){return af(Nn,e)}var Tn=h("ZodBigInt",(e,t)=>{xa.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Df(e,n,i,r)},I.derived({minValue:e=>$e(e).minimum??null,maxValue:e=>$e(e).maximum??null,format:e=>$e(e).format??null},{gte(e,t){return this.check(et(e,t))},min(e,t){return this.check(et(e,t))},gt(e,t){return this.check(_t(e,t))},lt(e,t){return this.check(bt(e,t))},lte(e,t){return this.check(Qe(e,t))},max(e,t){return this.check(Qe(e,t))},positive(e){return this.check(_t(BigInt(0),e))},negative(e){return this.check(bt(BigInt(0),e))},nonpositive(e){return this.check(Qe(BigInt(0),e))},nonnegative(e){return this.check(et(BigInt(0),e))},multipleOf(e,t){return this.check(Wt(e,t))}}));function ob(e){return cf(Tn,e)}var Ws=h("ZodBigIntFormat",(e,t)=>{td.init(e,t),Tn.init(e,t)});function ab(e){return lf(Ws,e)}function sb(e){return df(Ws,e)}var Zm=h("ZodSymbol",(e,t)=>{rd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Uf(e,n,i,r)});function cb(e){return ff(Zm,e)}var Om=h("ZodUndefined",(e,t)=>{nd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Vf(e,n,i,r)});function ub(e){return mf(Om,e)}var Rm=h("ZodNull",(e,t)=>{id.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Af(e,n,i,r)});function Bi(e){return pf(Rm,e)}var Cm=h("ZodAny",(e,t)=>{od.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Ff(e,n,i,r)});function lb(){return gf(Cm)}var Dm=h("ZodUnknown",(e,t)=>{ad.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Lf(e,n,i,r)});function ce(){return hf(Dm)}var Um=h("ZodNever",(e,t)=>{sd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Gf(e,n,i,r)});function Js(e){return vf(Um,e)}var Am=h("ZodVoid",(e,t)=>{cd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Bf(e,n,i,r)});function db(e){return yf(Am,e)}var Gi=h("ZodDate",(e,t)=>{ud.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Mf(e,n,i,r),e.min=(n,i)=>e.check(et(n,i)),e.max=(n,i)=>e.check(Qe(n,i))},I.derived({minDate:e=>{let{minimum:t}=$e(e);return t?new Date(t):null},maxDate:e=>{let{maximum:t}=$e(e);return t?new Date(t):null}},{}));function fb(e){return $f(Gi,e)}var Vm=h("ZodArray",(e,t)=>{zr(),ld.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>nm(e,n,i,r),e.element=t.element},{min(e,t){return this.check(Rt(e,t))},nonempty(e){return this.check(Rt(1,e))},max(e,t){return this.check(Sr(e,t))},length(e,t){return this.check(wr(e,t))},unwrap(){return this.element}});function L(e,t){return If(Vm,e,t)}function mb(e){let t=e._zod.def.shape;return we(Object.keys(t))}var Fi=h("ZodObject",(e,t)=>{zr(),dd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>im(e,n,i,r),I.installLazyProp(e,"shape",n=>n._zod.def.shape,!1)},{keyof(){return we(Object.keys(this._zod.def.shape))},catchall(e){return this.clone(I.mergeDefs(this._zod.def,{catchall:e}))},passthrough(){return this.clone(I.mergeDefs(this._zod.def,{catchall:ce()}))},loose(){return this.clone(I.mergeDefs(this._zod.def,{catchall:ce()}))},strict(){return this.clone(I.mergeDefs(this._zod.def,{catchall:Js()}))},strip(){return this.clone(I.mergeDefs(this._zod.def,{catchall:void 0}))},extend(e){return I.extend(this,e)},safeExtend(e){return I.safeExtend(this,e)},merge(e){return I.merge(this,e)},pick(e){return I.pick(this,e)},omit(e){return I.omit(this,e)},partial(...e){return I.partial(Wi,this,e[0])},exactPartial(...e){return I.partial(Hs,this,e[0],"exactPartial")},required(...e){return I.required(Xs,this,e[0])}});function T(e,t){let n={type:"object",shape:e??{},...I.normalizeParams(t)};return new Fi(n)}function pb(e,t){return new Fi({type:"object",shape:e,catchall:Js(),...I.normalizeParams(t)})}function Se(e,t){return new Fi({type:"object",shape:e,catchall:ce(),...I.normalizeParams(t)})}var Li=h("ZodUnion",(e,t)=>{ki.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>vs(e,n,i,r),e.options=t.options});function ne(e,t){return new Li({type:"union",options:e,...I.normalizeParams(t)})}var Bm=h("ZodXor",(e,t)=>{Li.init(e,t),fd.init(e,t),e._zod.processJSONSchema=(n,i,r)=>vs(e,n,i,r),e.options=t.options});function gb(e,t){return new Bm({type:"union",options:e,inclusive:!1,...I.normalizeParams(t)})}var Gm=h("ZodDiscriminatedUnion",(e,t)=>{Li.init(e,t),pd.init(e,t)});function Mi(e,t,n){return new Gm({type:"union",options:t,discriminator:e,...I.normalizeParams(n)})}var Fm=h("ZodIntersection",(e,t)=>{gd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>om(e,n,i,r)});function jn(e,t){return new Fm({type:"intersection",left:e,right:t})}var Lm=h("ZodTuple",(e,t)=>{zr(),za.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>am(e,n,i,r)},{rest(e){return this.clone({...this._zod.def,rest:e})},partial(){let e=this._zod.def;if(e.checks?.length)throw new Error(".partial() cannot be used on tuple schemas containing refinements");return this.clone({...e,items:e.items.map(t=>new Wi({type:"optional",innerType:t}))})}});function Mm(e,t,n){let i=t instanceof C,r=i?n:t,o=i?t:null;return new Lm({type:"tuple",items:e,rest:o,...I.normalizeParams(r)})}var wn=h("ZodRecord",(e,t)=>{zr(),hd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>sm(e,n,i,r),e.keyType=t.keyType,e.valueType=t.valueType});function ae(e,t,n){return!t||!t._zod?new wn({type:"record",keyType:$(),valueType:e,...I.normalizeParams(t)}):new wn({type:"record",keyType:e,valueType:t,...I.normalizeParams(n)})}function hb(e,t,n){return new wn({type:"record",keyType:e,valueType:t,...I.normalizeParams(n),partial:!0})}function vb(e,t,n){return new wn({type:"record",keyType:e,valueType:t,mode:"loose",...I.normalizeParams(n)})}var Wm=h("ZodMap",(e,t)=>{zr(),vd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>tm(e,n,i,r),e.keyType=t.keyType,e.valueType=t.valueType,e.min=(...n)=>e.check(It(...n)),e.nonempty=n=>e.check(It(1,n)),e.max=(...n)=>e.check(Jt(...n)),e.size=(...n)=>e.check(kr(...n))});function yb(e,t,n){return new Wm({type:"map",keyType:e,valueType:t,...I.normalizeParams(n)})}var Jm=h("ZodSet",(e,t)=>{zr(),yd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>rm(e,n,i,r),e.min=(...n)=>e.check(It(...n)),e.nonempty=n=>e.check(It(1,n)),e.max=(...n)=>e.check(Jt(...n)),e.size=(...n)=>e.check(kr(...n))});function $b(e,t){return new Jm({type:"set",valueType:e,...I.normalizeParams(t)})}var xn=h("ZodEnum",(e,t)=>{$d.init(e,t),A.init(e,t),e._zod.processJSONSchema=(i,r,o)=>Wf(e,i,r,o),e.enum=t.entries,e.options=[...e._zod.values];let n=new Set(Object.keys(t.entries));e.extract=(i,r)=>{let o={};for(let a of i)if(n.has(a))o[a]=t.entries[a];else throw new Error(`Key ${a} not found in enum`);return new xn({...t,checks:[],...I.normalizeParams(r),entries:o})},e.exclude=(i,r)=>{let o={...t.entries};for(let a of i)if(n.has(a))delete o[a];else throw new Error(`Key ${a} not found in enum`);return new xn({...t,checks:[],...I.normalizeParams(r),entries:o})}});function we(e,t){let n=Array.isArray(e)?Object.fromEntries(e.map(i=>[i,i])):e;return new xn({type:"enum",entries:n,...I.normalizeParams(t)})}function bb(e,t){return new xn({type:"enum",entries:e,...I.normalizeParams(t)})}var qm=h("ZodLiteral",(e,t)=>{bd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Jf(e,n,i,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function E(e,t){return new qm({type:"literal",values:Array.isArray(e)?e:[e],...I.normalizeParams(t)})}var Hm=h("ZodFile",(e,t)=>{_d.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Xf(e,n,i,r),e.min=(n,i)=>e.check(It(n,i)),e.max=(n,i)=>e.check(Jt(n,i)),e.mime=(n,i)=>e.check(hn(Array.isArray(n)?n:[n],i))});function _b(e){return kf(Hm,e)}var Xm=h("ZodTransform",(e,t)=>{zr(),Id.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>em(e,n,i,r),e._zod.parse=(n,i)=>{if(i.direction==="backward")throw new Mt(e.constructor.name);n.addIssue=o=>{if(typeof o=="string")n.issues.push(I.issue(o,n.value,t));else{let a=o;a.fatal&&(a.continue=!1),a.code??(a.code="custom"),"input"in a||(a.input=n.value),a.inst??(a.inst=e),n.issues.push(I.issue(a))}};let r=t.transform(n.value,n);return r instanceof Promise?r.then(o=>(n.value=o,n)):(n.value=r,n)}});function qs(e){return new Xm({type:"transform",transform:e})}var Wi=h("ZodOptional",(e,t)=>{Pa.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>ys(e,n,i,r),e.unwrap=()=>e._zod.def.innerType});function ie(e){return new Wi({type:"optional",innerType:e})}var Hs=h("ZodExactOptional",(e,t)=>{kd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>ys(e,n,i,r),e.unwrap=()=>e._zod.def.innerType});function Ym(e){return new Hs({type:"optional",innerType:e})}var Km=h("ZodNullable",(e,t)=>{Sd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>cm(e,n,i,r),e.unwrap=()=>e._zod.def.innerType});function Ai(e){return new Km({type:"nullable",innerType:e})}function Ib(e){return ie(Ai(e))}var Qm=h("ZodDefault",(e,t)=>{wd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>dm(e,n,i,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function ep(e,t){return new Qm({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():I.shallowClone(t)}})}var tp=h("ZodPrefault",(e,t)=>{xd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>fm(e,n,i,r),e.unwrap=()=>e._zod.def.innerType});function rp(e,t){return new tp({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():I.shallowClone(t)}})}var Xs=h("ZodNonOptional",(e,t)=>{zd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>um(e,n,i,r),e.unwrap=()=>e._zod.def.innerType});function np(e,t){return new Xs({type:"nonoptional",innerType:e,...I.normalizeParams(t)})}var ip=h("ZodSuccess",(e,t)=>{Pd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Yf(e,n,i,r),e.unwrap=()=>e._zod.def.innerType});function kb(e){return new ip({type:"success",innerType:e})}var op=h("ZodCatch",(e,t)=>{Nd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>mm(e,n,i,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function ap(e,t){return new op({type:"catch",innerType:e,catchValue:typeof t=="function"?t:I.constantCatch(t)})}var sp=h("ZodNaN",(e,t)=>{Td.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>qf(e,n,i,r)});function Sb(e){return _f(sp,e)}var Ji=h("ZodPipe",(e,t)=>{Na.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>pm(e,n,i,r),e.in=t.in,e.out=t.out});function zs(e,t){return new Ji({type:"pipe",in:e,out:t})}var qi=h("ZodCodec",(e,t)=>{Ji.init(e,t),Si.init(e,t)});function wb(e,t,n){return new qi({type:"pipe",in:e,out:t,transform:n.decode,reverseTransform:n.encode})}function xb(e){let t=e._zod.def;return new qi({type:"pipe",in:t.out,out:t.in,transform:t.reverseTransform,reverseTransform:t.transform})}var cp=h("ZodPreprocess",(e,t)=>{Ji.init(e,t),jd.init(e,t)}),up=h("ZodReadonly",(e,t)=>{Ed.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>gm(e,n,i,r),e.unwrap=()=>e._zod.def.innerType});function lp(e){return new up({type:"readonly",innerType:e})}var dp=h("ZodTemplateLiteral",(e,t)=>{Zd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Hf(e,n,i,r)});function zb(e,t){return new dp({type:"template_literal",parts:e,...I.normalizeParams(t)})}var fp=h("ZodLazy",(e,t)=>{wi.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>vm(e,n,i,r),e.unwrap=()=>e._zod.def.getter()});function mp(e){return new fp({type:"lazy",getter:e})}var pp=h("ZodPromise",(e,t)=>{Rd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>hm(e,n,i,r),e.unwrap=()=>e._zod.def.innerType});function Pb(e){return new pp({type:"promise",innerType:e})}var gp=h("ZodFunction",(e,t)=>{Od.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Qf(e,n,i,r)});function Nb(e){return new gp({type:"function",input:Array.isArray(e?.input)?Mm(e?.input):e?.input??L(ce()),output:e?.output??ce()})}var Hi=h("ZodCustom",(e,t)=>{Cd.init(e,t),A.init(e,t),e._zod.processJSONSchema=(n,i,r)=>Kf(e,n,i,r)});function Tb(e){let t=new se({check:"custom"});return t._zod.check=e,t}function Ys(e,t){return Sf(Hi,e??(()=>!0),t)}function hp(e,t={}){return wf(Hi,e,t)}function vp(e,t){return xf(e,t)}var jb=zf,Eb=Pf,yp=h("ZodInstanceOf",(e,t)=>{Hi.init(e,t)},{properties(e,t){return this.check(gn(e,t))}});function Zb(e,t={}){let n=new yp({type:"custom",check:"custom",fn:i=>i instanceof e,abort:!0,...I.normalizeParams(t)});return n._zod.bag.Class=e,n._zod.check=i=>{i.value instanceof e||i.issues.push({code:"invalid_type",expected:e.name,input:i.value,inst:n,path:[...n._zod.def.path??[]]})},n}var Ob=(...e)=>Nf({Codec:qi,Boolean:Nn,String:zn},...e);function Rb(e){let t=mp(()=>ne([$(e),K(),he(),Bi(),L(t),ae($(),t)]));return t}function Xi(e,t){return new cp({type:"pipe",in:qs(e),out:t})}var Nz={invalid_type:"invalid_type",too_big:"too_big",too_small:"too_small",invalid_format:"invalid_format",not_multiple_of:"not_multiple_of",unrecognized_keys:"unrecognized_keys",invalid_union:"invalid_union",invalid_key:"invalid_key",invalid_element:"invalid_element",invalid_value:"invalid_value",custom:"custom"};function Tz(e){ge({customError:e})}function jz(){return ge().customError}var $p;$p||($p={});var Tr={};jt(Tr,{ZodISODate:()=>Qt,ZodISODateTime:()=>Kt,ZodISODuration:()=>tr,ZodISOTime:()=>er,date:()=>Zz,datetime:()=>Ez,duration:()=>Rz,time:()=>Oz});function Ez(e){return Ei(Kt,e)}function Zz(e){return Zi(Qt,e)}function Oz(e){return Oi(er,e)}function Rz(e){return Ri(tr,e)}var z={...En,...Ss,iso:Tr},Cz=new Set(["$schema","$ref","$defs","definitions","$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor","type","enum","const","anyOf","oneOf","allOf","not","properties","required","additionalProperties","patternProperties","propertyNames","minProperties","maxProperties","items","prefixItems","additionalItems","minItems","maxItems","uniqueItems","contains","minContains","maxContains","minLength","maxLength","pattern","format","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","description","default","contentEncoding","contentMediaType","contentSchema","unevaluatedItems","unevaluatedProperties","if","then","else","dependentSchemas","dependentRequired","nullable","readOnly"]);function Dz(e,t){let n=e.$schema;return n==="https://json-schema.org/draft/2020-12/schema"?"draft-2020-12":n==="http://json-schema.org/draft-07/schema#"?"draft-7":n==="http://json-schema.org/draft-04/schema#"?"draft-4":t??"draft-2020-12"}function Cb(e,t){return e.map((n,i)=>i<t?n:n.optional())}function Uz(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function Az(e,t){if(!e.startsWith("#"))throw new Error("External $ref is not supported, only local refs (#/...) are allowed");let n=e.slice(1).split("/").filter(Boolean);if(n.length===0)return t.rootSchema;let i=t.version==="draft-2020-12"?"$defs":"definitions";if(n[0]===i){let r=n[1]===void 0?void 0:Uz(n[1]);if(!r||!t.defs[r])throw new Error(`Reference not found: ${e}`);return t.defs[r]}throw new Error(`Reference not found: ${e}`)}function Vz(e,t){return z.transform(i=>i).check(i=>{let r=i.value;if(typeof r!="object"||r===null||Array.isArray(r))return;let o=Object.getOwnPropertyNames(r);if(t.minProperties!==void 0&&o.length<t.minProperties&&i.issues.push({origin:"object",code:"too_small",minimum:t.minProperties,inclusive:!0,message:`Too small: expected object to have >=${t.minProperties} properties`,input:r,inst:e,continue:!0}),t.maxProperties!==void 0&&o.length>t.maxProperties&&i.issues.push({origin:"object",code:"too_big",maximum:t.maxProperties,inclusive:!0,message:`Too big: expected object to have <=${t.maxProperties} properties`,input:r,inst:e,continue:!0}),t.keySchema)for(let a of o){let s=t.keySchema.safeParse(a);s.success||i.issues.push({code:"invalid_key",origin:"record",issues:s.error.issues,input:a,path:[a],continue:!0})}}).pipe(e)}function bp(e,t){if(e===null)return"z";let n=typeof e;if(n!=="object"){if(n==="number"&&Number.isNaN(e))return null;let i=String(e);return`${n[0]}${i.length}:${i}`}if(t.has(e))return null;t.add(e);try{if(Array.isArray(e)){let o=[];for(let a of e){let s=bp(a,t);if(s===null)return null;o.push(s)}return`a${o.length}:[${o.join(",")}]`}let i=Object.keys(e).sort(),r=[];for(let o of i){let a=bp(e[o],t);if(a===null)return null;r.push(`${o.length}:${o}=${a}`)}return`o${r.length}:{${r.join(",")}}`}finally{t.delete(e)}}var Bz=new Set(["items","prefixItems","additionalItems","additionalProperties","contains","propertyNames","not","if","then","else","allOf","anyOf","oneOf","unevaluatedItems","unevaluatedProperties","contentSchema"]),Gz=new Set(["properties","patternProperties","dependentSchemas","dependencies","$defs","definitions"]);function Yi(e){return typeof e!="object"||e===null?!1:Array.isArray(e)?e.some(Yi):typeof e.$ref=="string"?!0:Object.entries(e).some(([t,n])=>Bz.has(t)?Yi(n):!Gz.has(t)||typeof n!="object"||n===null?!1:Object.values(n).some(Yi))}function Db(e){return e===1?"element":"elements"}function Fz(e,t){return z.transform(i=>i).check(i=>{let r=i.value;if(Array.isArray(r)){if(t.uniqueItems===!0){let o=new Map;for(let a=0;a<r.length;a++){let s=bp(r[a],new Set);if(s===null)continue;let c=o.get(s);if(c===void 0){o.set(s,a);continue}i.issues.push({code:"custom",message:`Array items must be unique: element at index ${a} duplicates the one at index ${c}`,input:r,path:[a],continue:!0})}}if(t.containsSchema){let o=t.minContains??1,a=t.maxContains!==void 0?t.maxContains+1:Number.POSITIVE_INFINITY,s=0;for(let c of r)if(t.containsSchema.safeParse(c).success&&++s>=a)break;s<o&&i.issues.push({code:"custom",message:`Array must contain at least ${o} matching ${Db(o)}; found ${s}`,input:r,continue:!0}),t.maxContains!==void 0&&s>t.maxContains&&i.issues.push({code:"custom",message:`Array must contain at most ${t.maxContains} matching ${Db(t.maxContains)}`,input:r,continue:!0})}}}).pipe(e)}function Ub(e,t){if(e!==!1)return e===void 0||e===!0?z.any():Ve(e,t)}var Lz=/^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/;function Ab(e,t){if(e.not!==void 0){if(typeof e.not=="object"&&Object.keys(e.not).length===0)return z.never();throw new Error("not is not supported in Zod (except { not: {} } for never)")}if(e.unevaluatedItems!==void 0)throw new Error("unevaluatedItems is not supported");if(e.unevaluatedProperties!==void 0)throw new Error("unevaluatedProperties is not supported");if(e.if!==void 0||e.then!==void 0||e.else!==void 0)throw new Error("Conditional schemas (if/then/else) are not supported");if(e.dependentSchemas!==void 0||e.dependentRequired!==void 0)throw new Error("dependentSchemas and dependentRequired are not supported");if(e.$ref){let r=e.$ref;if(t.refs.has(r))return t.refs.get(r);if(t.processing.has(r))return z.lazy(()=>{if(!t.refs.has(r))throw new Error(`Circular reference not resolved: ${r}`);return t.refs.get(r)});t.processing.add(r);let o=Az(r,t),a=Ve(o,t);return t.refs.set(r,a),t.processing.delete(r),a}if(e.enum!==void 0){let r=e.enum;if(t.version==="openapi-3.0"&&e.nullable===!0&&r.length===1&&r[0]===null)return z.null();if(r.length===0)return z.never();if(r.length===1)return z.literal(r[0]);if(r.every(a=>typeof a=="string"))return z.enum(r);let o=r.map(a=>z.literal(a));return o.length<2?o[0]:z.union([o[0],o[1],...o.slice(2)])}if(e.const!==void 0)return z.literal(e.const);let n=e.type;if(Array.isArray(n)){let r=n.map(o=>{let a={...e,type:o};return Ab(a,t)});return r.length===0?z.never():r.length===1?r[0]:z.union(r)}if(!n)return z.any();let i;switch(n){case"string":{let r=z.string();if(e.format){let o=e.format;o==="email"?r=r.check(z.email()):o==="uri"||o==="uri-reference"?r=r.check(z.url()):o==="uuid"||o==="guid"?r=r.check(z.uuid()):o==="date-time"?r=r.check(z.iso.datetime({offset:!0})):o==="date"?r=r.check(z.iso.date()):o==="time"?r=r.check(z.regex(Lz)):o==="duration"?r=r.check(z.iso.duration()):o==="hostname"?r=r.check(z.hostname()):o==="ipv4"?r=r.check(z.ipv4()):o==="ipv6"?r=r.check(z.ipv6()):o==="mac"?r=r.check(z.mac()):o==="cidr"?r=r.check(z.cidrv4()):o==="cidr-v6"?r=r.check(z.cidrv6()):o==="base64"?r=r.check(z.base64()):o==="base64url"?r=r.check(z.base64url()):o==="e164"?r=r.check(z.e164()):o==="credit_card"?r=r.check(z.creditCard()):o==="iban"?r=r.check(z.iban()):o==="jwt"?r=r.check(z.jwt()):o==="emoji"?r=r.check(z.emoji()):o==="nanoid"?r=r.check(z.nanoid()):o==="cuid"?r=r.check(z.cuid()):o==="cuid2"?r=r.check(z.cuid2()):o==="ulid"?r=r.check(z.ulid()):o==="xid"?r=r.check(z.xid()):o==="ksuid"&&(r=r.check(z.ksuid()))}typeof e.minLength=="number"&&(r=r.min(e.minLength)),typeof e.maxLength=="number"&&(r=r.max(e.maxLength)),e.pattern&&(r=r.regex(new RegExp(e.pattern))),i=r;break}case"number":case"integer":{let r=n==="integer"?z.number().int():z.number();typeof e.minimum=="number"&&e.exclusiveMinimum!==!0&&(r=r.min(e.minimum)),typeof e.maximum=="number"&&e.exclusiveMaximum!==!0&&(r=r.max(e.maximum)),typeof e.exclusiveMinimum=="number"?r=r.gt(e.exclusiveMinimum):e.exclusiveMinimum===!0&&typeof e.minimum=="number"&&(r=r.gt(e.minimum)),typeof e.exclusiveMaximum=="number"?r=r.lt(e.exclusiveMaximum):e.exclusiveMaximum===!0&&typeof e.maximum=="number"&&(r=r.lt(e.maximum)),typeof e.multipleOf=="number"&&(r=r.multipleOf(e.multipleOf)),i=r;break}case"boolean":{i=z.boolean();break}case"null":{i=z.null();break}case"object":{let r={},o=e.properties||{},a=new Set(e.required||[]),s=typeof e.additionalProperties=="object"?Ve(e.additionalProperties,t):void 0;for(let[d,f]of Object.entries(o)){let m=Ve(f,t);Ie(r,d,a.has(d)?m:m.optional())}if(e.patternProperties){let d=e.patternProperties,f=Object.keys(d),m=[];for(let g of f){let y=Ve(d[g],t),b=z.string().regex(new RegExp(g));m.push(z.looseRecord(b,y))}let p=[];if(Object.keys(r).length>0&&p.push(z.object(r).passthrough()),p.push(...m),p.length===0)i=z.object({}).passthrough();else if(p.length===1)i=p[0];else{let g=z.intersection(p[0],p[1]);for(let y=2;y<p.length;y++)g=z.intersection(g,p[y]);i=g}if(e.additionalProperties===!1){let g=Object.keys(r),y=f.map(_=>new RegExp(_)),b=i;i=i.check(_=>{if(!rt(_.value))return;let w=[];for(let j of Object.keys(_.value))g.includes(j)||y.some(P=>P.test(j))||w.push(j);w.length&&_.issues.push({code:"unrecognized_keys",keys:w,input:_.value,inst:b})})}}else{let d=z.object(r);e.additionalProperties===!1?i=d.strict():s?i=d.catchall(s):i=d.passthrough()}let c=e.propertyNames!==void 0&&e.propertyNames!==!0,u=typeof e.minProperties=="number"?e.minProperties:void 0,l=typeof e.maxProperties=="number"?e.maxProperties:void 0;if(c||u!==void 0||l!==void 0){let d;if(c){let f=typeof e.propertyNames=="object"&&e.propertyNames.type===void 0?{type:"string",...e.propertyNames}:e.propertyNames;d=Ve(f,t)}i=Vz(i,{keySchema:d,minProperties:u,maxProperties:l})}break}case"array":{let r=e.prefixItems,o=e.items;if(r&&Array.isArray(r)){let a=typeof e.minItems=="number"?e.minItems:0,s=r.map(d=>Ve(d,t)),c=Cb(s,a),u=Array.isArray(o)?void 0:Ub(o,t),l=z.tuple(c);i=u?l.rest(u):l,typeof e.minItems=="number"&&(i=i.check(z.minLength(e.minItems))),typeof e.maxItems=="number"&&(i=i.check(z.maxLength(e.maxItems)))}else if(Array.isArray(o)){let a=typeof e.minItems=="number"?e.minItems:0,s=o.map(d=>Ve(d,t)),c=Cb(s,a),u=Ub(e.additionalItems,t),l=z.tuple(c);i=u?l.rest(u):l,typeof e.minItems=="number"&&(i=i.check(z.minLength(e.minItems))),typeof e.maxItems=="number"&&(i=i.check(z.maxLength(e.maxItems)))}else if(o!==void 0){let a=Ve(o,t),s=z.array(a);typeof e.minItems=="number"&&(s=s.min(e.minItems)),typeof e.maxItems=="number"&&(s=s.max(e.maxItems)),i=s}else i=z.array(z.any());(e.uniqueItems===!0||e.contains!==void 0)&&(i=Fz(i,{uniqueItems:e.uniqueItems===!0,containsSchema:e.contains!==void 0?Ve(e.contains,t):void 0,minContains:typeof e.minContains=="number"?e.minContains:void 0,maxContains:typeof e.maxContains=="number"?e.maxContains:void 0}));break}default:throw new Error(`Unsupported type: ${n}`)}return i}function Ve(e,t){if(typeof e=="boolean")return e?z.any():z.never();let n=Ab(e,t),i=e.type||e.enum!==void 0||e.const!==void 0;if(e.anyOf&&Array.isArray(e.anyOf)){let s=e.anyOf.map(u=>Ve(u,t)),c=z.union(s);n=i?z.intersection(n,c):c}if(e.oneOf&&Array.isArray(e.oneOf)){let s=e.oneOf.map(u=>Ve(u,t)),c=z.xor(s);n=i?z.intersection(n,c):c}if(e.allOf&&Array.isArray(e.allOf))if(e.allOf.length===0)n=i?n:z.any();else{let s=i?n:Ve(e.allOf[0],t),c=i?0:1;for(let u=c;u<e.allOf.length;u++)s=z.intersection(s,Ve(e.allOf[u],t));n=s}e.nullable===!0&&t.version==="openapi-3.0"&&(n=z.nullable(n)),e.readOnly===!0&&(n=z.readonly(n)),e.default!==void 0&&(n=n.default(e.default));let r={},o=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(let s of o)s in e&&(r[s]=e[s]);let a=["contentEncoding","contentMediaType","contentSchema"];for(let s of a)s in e&&(r[s]=e[s]);if(e.type==="object"&&e.$ref===void 0){e.propertyNames!==void 0&&!Yi(e.propertyNames)&&(r.propertyNames=e.propertyNames);for(let s of["minProperties","maxProperties"])e[s]!==void 0&&(r[s]=e[s])}if(e.type==="array"&&e.$ref===void 0){e.contains!==void 0&&!Yi(e.contains)&&(r.contains=e.contains);for(let s of["uniqueItems","minContains","maxContains"])e[s]!==void 0&&(r[s]=e[s])}for(let s of Object.keys(e))Cz.has(s)||Ie(r,s,e[s]);return Object.keys(r).length>0&&t.registry.add(n,r),e.description&&(n=n.describe(e.description)),n}function Vb(e,t){if(typeof e=="boolean")return e?z.any():z.never();let n;try{n=JSON.parse(JSON.stringify(e))}catch{throw new Error("fromJSONSchema input is not valid JSON (possibly cyclic); use $defs/$ref for recursive schemas")}let i=Dz(n,t?.defaultTarget),r=n.$defs||n.definitions||{},o={version:i,defs:r,refs:new Map,processing:new Set,rootSchema:n,registry:t?.registry??ke};return Ve(n,o)}function Bb(e){return Ui(e,{object:t=>t.partial(),union:t=>{let n=t._zod.def;return n.discriminator===void 0?t:ne(n.options)}})}function Mz(e,t){if(!t?.length)return e;let n=e._zod.def;return ee(e,ft(n,{checks:[...n.checks??[],...t]}),{parent:!0})}function Gb(e){return Mz(e.out,e.checks)}function Wz(e){return e.in._zod.traits.has("$ZodTransform")?Gb(e):e.in}function Fb(e){return Ui(e,{pipe:t=>Wz(t._zod.def),default:(t,n)=>n?ie(t._zod.def.innerType):t,catch:(t,n)=>n?t._zod.def.innerType:t})}function Lb(e){return Ui(e,{pipe:t=>Gb(t._zod.def),prefault:(t,n)=>n?t._zod.def.innerType:t})}var _p={};jt(_p,{bigint:()=>Xz,boolean:()=>Hz,date:()=>Yz,number:()=>qz,string:()=>Jz});function Jz(e){return Jd(zn,e)}function qz(e){return Qd(Pn,e)}function Hz(e){return sf(Nn,e)}function Xz(e){return uf(Tn,e)}function Yz(e){return bf(Gi,e)}var kp="2025-11-25";var Mb=[kp,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],rr="io.modelcontextprotocol/related-task",Qs="2.0",be=Ys(e=>e!==null&&(typeof e=="object"||typeof e=="function")),Wb=ne([$(),K().int()]),Jb=$(),Y4=Se({ttl:K().optional(),pollInterval:K().optional()}),Kz=T({ttl:K().optional()}),Qz=T({taskId:$()}),Sp=Se({progressToken:Wb.optional(),[rr]:Qz.optional()}),tt=T({_meta:Sp.optional()}),Ki=tt.extend({task:Kz.optional()}),qb=e=>Ki.safeParse(e).success,xe=T({method:$(),params:tt.loose().optional()}),at=T({_meta:Sp.optional()}),st=T({method:$(),params:at.loose().optional()}),ze=Se({_meta:Sp.optional()}),ec=ne([$(),K().int()]),Hb=T({jsonrpc:E(Qs),id:ec,...xe.shape}).strict(),wp=e=>Hb.safeParse(e).success,Xb=T({jsonrpc:E(Qs),...st.shape}).strict(),Yb=e=>Xb.safeParse(e).success,xp=T({jsonrpc:E(Qs),id:ec,result:ze}).strict(),Qi=e=>xp.safeParse(e).success;var q;(function(e){e[e.ConnectionClosed=-32e3]="ConnectionClosed",e[e.RequestTimeout=-32001]="RequestTimeout",e[e.ParseError=-32700]="ParseError",e[e.InvalidRequest=-32600]="InvalidRequest",e[e.MethodNotFound=-32601]="MethodNotFound",e[e.InvalidParams=-32602]="InvalidParams",e[e.InternalError=-32603]="InternalError",e[e.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(q||(q={}));var zp=T({jsonrpc:E(Qs),id:ec.optional(),error:T({code:K().int(),message:$(),data:ce().optional()})}).strict();var Kb=e=>zp.safeParse(e).success;var Qb=ne([Hb,Xb,xp,zp]),K4=ne([xp,zp]),tc=ze.strict(),eP=at.extend({requestId:ec.optional(),reason:$().optional()}),rc=st.extend({method:E("notifications/cancelled"),params:eP}),tP=T({src:$(),mimeType:$().optional(),sizes:L($()).optional(),theme:we(["light","dark"]).optional()}),eo=T({icons:L(tP).optional()}),Zn=T({name:$(),title:$().optional()}),e_=Zn.extend({...Zn.shape,...eo.shape,version:$(),websiteUrl:$().optional(),description:$().optional()}),rP=jn(T({applyDefaults:he().optional()}),ae($(),ce())),nP=Xi(e=>e&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,jn(T({form:rP.optional(),url:be.optional()}),ae($(),ce()).optional())),iP=Se({list:be.optional(),cancel:be.optional(),requests:Se({sampling:Se({createMessage:be.optional()}).optional(),elicitation:Se({create:be.optional()}).optional()}).optional()}),oP=Se({list:be.optional(),cancel:be.optional(),requests:Se({tools:Se({call:be.optional()}).optional()}).optional()}),aP=T({experimental:ae($(),be).optional(),sampling:T({context:be.optional(),tools:be.optional()}).optional(),elicitation:nP.optional(),roots:T({listChanged:he().optional()}).optional(),tasks:iP.optional(),extensions:ae($(),be).optional()}),sP=tt.extend({protocolVersion:$(),capabilities:aP,clientInfo:e_}),Pp=xe.extend({method:E("initialize"),params:sP});var cP=T({experimental:ae($(),be).optional(),logging:be.optional(),completions:be.optional(),prompts:T({listChanged:he().optional()}).optional(),resources:T({subscribe:he().optional(),listChanged:he().optional()}).optional(),tools:T({listChanged:he().optional()}).optional(),tasks:oP.optional(),extensions:ae($(),be).optional()}),uP=ze.extend({protocolVersion:$(),capabilities:cP,serverInfo:e_,instructions:$().optional()}),Np=st.extend({method:E("notifications/initialized"),params:at.optional()});var nc=xe.extend({method:E("ping"),params:tt.optional()}),lP=T({progress:K(),total:ie(K()),message:ie($())}),dP=T({...at.shape,...lP.shape,progressToken:Wb}),ic=st.extend({method:E("notifications/progress"),params:dP}),fP=tt.extend({cursor:Jb.optional()}),to=xe.extend({params:fP.optional()}),ro=ze.extend({nextCursor:Jb.optional()}),mP=we(["working","input_required","completed","failed","cancelled"]),no=T({taskId:$(),status:mP,ttl:ne([K(),Bi()]),createdAt:$(),lastUpdatedAt:$(),pollInterval:ie(K()),statusMessage:ie($())}),On=ze.extend({task:no}),pP=at.merge(no),io=st.extend({method:E("notifications/tasks/status"),params:pP}),oc=xe.extend({method:E("tasks/get"),params:tt.extend({taskId:$()})}),ac=ze.merge(no),sc=xe.extend({method:E("tasks/result"),params:tt.extend({taskId:$()})}),Q4=ze.loose(),cc=to.extend({method:E("tasks/list")}),uc=ro.extend({tasks:L(no)}),lc=xe.extend({method:E("tasks/cancel"),params:tt.extend({taskId:$()})}),t_=ze.merge(no),r_=T({uri:$(),mimeType:ie($()),_meta:ae($(),ce()).optional()}),n_=r_.extend({text:$()}),Tp=$().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:"Invalid Base64 string"}),i_=r_.extend({blob:Tp}),oo=we(["user","assistant"]),Rn=T({audience:L(oo).optional(),priority:K().min(0).max(1).optional(),lastModified:Tr.datetime({offset:!0}).optional()}),o_=T({...Zn.shape,...eo.shape,uri:$(),description:ie($()),mimeType:ie($()),size:ie(K()),annotations:Rn.optional(),_meta:ie(Se({}))}),gP=T({...Zn.shape,...eo.shape,uriTemplate:$(),description:ie($()),mimeType:ie($()),annotations:Rn.optional(),_meta:ie(Se({}))}),hP=to.extend({method:E("resources/list")}),vP=ro.extend({resources:L(o_)}),yP=to.extend({method:E("resources/templates/list")}),$P=ro.extend({resourceTemplates:L(gP)}),jp=tt.extend({uri:$()}),bP=jp,_P=xe.extend({method:E("resources/read"),params:bP}),IP=ze.extend({contents:L(ne([n_,i_]))}),kP=st.extend({method:E("notifications/resources/list_changed"),params:at.optional()}),SP=jp,wP=xe.extend({method:E("resources/subscribe"),params:SP}),xP=jp,zP=xe.extend({method:E("resources/unsubscribe"),params:xP}),PP=at.extend({uri:$()}),NP=st.extend({method:E("notifications/resources/updated"),params:PP}),TP=T({name:$(),description:ie($()),required:ie(he())}),jP=T({...Zn.shape,...eo.shape,description:ie($()),arguments:ie(L(TP)),_meta:ie(Se({}))}),Ep=to.extend({method:E("prompts/list")}),EP=ro.extend({prompts:L(jP)}),ZP=tt.extend({name:$(),arguments:ae($(),$()).optional()}),Zp=xe.extend({method:E("prompts/get"),params:ZP}),Op=T({type:E("text"),text:$(),annotations:Rn.optional(),_meta:ae($(),ce()).optional()}),Rp=T({type:E("image"),data:Tp,mimeType:$(),annotations:Rn.optional(),_meta:ae($(),ce()).optional()}),Cp=T({type:E("audio"),data:Tp,mimeType:$(),annotations:Rn.optional(),_meta:ae($(),ce()).optional()}),OP=T({type:E("tool_use"),name:$(),id:$(),input:ae($(),ce()),_meta:ae($(),ce()).optional()}),RP=T({type:E("resource"),resource:ne([n_,i_]),annotations:Rn.optional(),_meta:ae($(),ce()).optional()}),CP=o_.extend({type:E("resource_link")}),Dp=ne([Op,Rp,Cp,CP,RP]),DP=T({role:oo,content:Dp}),UP=ze.extend({description:$().optional(),messages:L(DP)}),AP=st.extend({method:E("notifications/prompts/list_changed"),params:at.optional()}),VP=T({title:$().optional(),readOnlyHint:he().optional(),destructiveHint:he().optional(),idempotentHint:he().optional(),openWorldHint:he().optional()}),BP=T({taskSupport:we(["required","optional","forbidden"]).optional()}),a_=T({...Zn.shape,...eo.shape,description:$().optional(),inputSchema:T({type:E("object"),properties:ae($(),be).optional(),required:L($()).optional()}).catchall(ce()),outputSchema:T({type:E("object"),properties:ae($(),be).optional(),required:L($()).optional()}).catchall(ce()).optional(),annotations:VP.optional(),execution:BP.optional(),_meta:ae($(),ce()).optional()}),Up=to.extend({method:E("tools/list")}),GP=ro.extend({tools:L(a_)}),dc=ze.extend({content:L(Dp).default([]),structuredContent:ae($(),ce()).optional(),isError:he().optional()}),eU=dc.or(ze.extend({toolResult:ce()})),FP=Ki.extend({name:$(),arguments:ae($(),ce()).optional()}),ao=xe.extend({method:E("tools/call"),params:FP}),LP=st.extend({method:E("notifications/tools/list_changed"),params:at.optional()}),tU=T({autoRefresh:he().default(!0),debounceMs:K().int().nonnegative().default(300)}),so=we(["debug","info","notice","warning","error","critical","alert","emergency"]),MP=tt.extend({level:so}),Ap=xe.extend({method:E("logging/setLevel"),params:MP}),WP=at.extend({level:so,logger:$().optional(),data:ce()}),JP=st.extend({method:E("notifications/message"),params:WP}),qP=T({name:$().optional()}),HP=T({hints:L(qP).optional(),costPriority:K().min(0).max(1).optional(),speedPriority:K().min(0).max(1).optional(),intelligencePriority:K().min(0).max(1).optional()}),XP=T({mode:we(["auto","required","none"]).optional()}),YP=T({type:E("tool_result"),toolUseId:$().describe("The unique identifier for the corresponding tool call."),content:L(Dp).default([]),structuredContent:T({}).loose().optional(),isError:he().optional(),_meta:ae($(),ce()).optional()}),KP=Mi("type",[Op,Rp,Cp]),Ks=Mi("type",[Op,Rp,Cp,OP,YP]),QP=T({role:oo,content:ne([Ks,L(Ks)]),_meta:ae($(),ce()).optional()}),eN=Ki.extend({messages:L(QP),modelPreferences:HP.optional(),systemPrompt:$().optional(),includeContext:we(["none","thisServer","allServers"]).optional(),temperature:K().optional(),maxTokens:K().int(),stopSequences:L($()).optional(),metadata:be.optional(),tools:L(a_).optional(),toolChoice:XP.optional()}),tN=xe.extend({method:E("sampling/createMessage"),params:eN}),co=ze.extend({model:$(),stopReason:ie(we(["endTurn","stopSequence","maxTokens"]).or($())),role:oo,content:KP}),Vp=ze.extend({model:$(),stopReason:ie(we(["endTurn","stopSequence","maxTokens","toolUse"]).or($())),role:oo,content:ne([Ks,L(Ks)])}),rN=T({type:E("boolean"),title:$().optional(),description:$().optional(),default:he().optional()}),nN=T({type:E("string"),title:$().optional(),description:$().optional(),minLength:K().optional(),maxLength:K().optional(),format:we(["email","uri","date","date-time"]).optional(),default:$().optional()}),iN=T({type:we(["number","integer"]),title:$().optional(),description:$().optional(),minimum:K().optional(),maximum:K().optional(),default:K().optional()}),oN=T({type:E("string"),title:$().optional(),description:$().optional(),enum:L($()),default:$().optional()}),aN=T({type:E("string"),title:$().optional(),description:$().optional(),oneOf:L(T({const:$(),title:$()})),default:$().optional()}),sN=T({type:E("string"),title:$().optional(),description:$().optional(),enum:L($()),enumNames:L($()).optional(),default:$().optional()}),cN=ne([oN,aN]),uN=T({type:E("array"),title:$().optional(),description:$().optional(),minItems:K().optional(),maxItems:K().optional(),items:T({type:E("string"),enum:L($())}),default:L($()).optional()}),lN=T({type:E("array"),title:$().optional(),description:$().optional(),minItems:K().optional(),maxItems:K().optional(),items:T({anyOf:L(T({const:$(),title:$()}))}),default:L($()).optional()}),dN=ne([uN,lN]),fN=ne([sN,cN,dN]),mN=ne([fN,rN,nN,iN]),pN=Ki.extend({mode:E("form").optional(),message:$(),requestedSchema:T({type:E("object"),properties:ae($(),mN),required:L($()).optional()})}),gN=Ki.extend({mode:E("url"),message:$(),elicitationId:$(),url:$().url()}),hN=ne([pN,gN]),vN=xe.extend({method:E("elicitation/create"),params:hN}),yN=at.extend({elicitationId:$()}),$N=st.extend({method:E("notifications/elicitation/complete"),params:yN}),Cn=ze.extend({action:we(["accept","decline","cancel"]),content:Xi(e=>e===null?void 0:e,ae($(),ne([$(),K(),he(),L($())])).optional())}),bN=T({type:E("ref/resource"),uri:$()});var _N=T({type:E("ref/prompt"),name:$()}),IN=tt.extend({ref:ne([_N,bN]),argument:T({name:$(),value:$()}),context:T({arguments:ae($(),$()).optional()}).optional()}),kN=xe.extend({method:E("completion/complete"),params:IN});var SN=ze.extend({completion:Se({values:L($()).max(100),total:ie(K().int()),hasMore:ie(he())})}),wN=T({uri:$().startsWith("file://"),name:$().optional(),_meta:ae($(),ce()).optional()}),xN=xe.extend({method:E("roots/list"),params:tt.optional()}),Bp=ze.extend({roots:L(wN)}),zN=st.extend({method:E("notifications/roots/list_changed"),params:at.optional()}),rU=ne([nc,Pp,kN,Ap,Zp,Ep,hP,yP,_P,wP,zP,ao,Up,oc,sc,cc,lc]),nU=ne([rc,ic,Np,zN,io]),iU=ne([tc,co,Vp,Cn,Bp,ac,uc,On]),oU=ne([nc,tN,vN,xN,oc,sc,cc,lc]),aU=ne([rc,ic,JP,NP,kP,LP,AP,io,$N]),sU=ne([tc,uP,SN,UP,EP,vP,$P,IP,dc,GP,ac,uc,On]),B=class e extends Error{constructor(t,n,i){super(`MCP error ${t}: ${n}`),this.code=t,this.data=i,this.name="McpError"}static fromError(t,n,i){if(t===q.UrlElicitationRequired&&i){let r=i;if(r.elicitations)return new Ip(r.elicitations,n)}return new e(t,n,i)}},Ip=class extends B{constructor(t,n=`URL elicitation${t.length>1?"s":""} required`){super(q.UrlElicitationRequired,n,{elicitations:t})}get elicitations(){return this.data?.elicitations??[]}};function nr(e){return e==="completed"||e==="failed"||e==="cancelled"}var VU=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function Gp(e){let n=Is(e)?.method;if(!n)throw new Error("Schema is missing a method literal");let i=ks(n);if(typeof i!="string")throw new Error("Schema method literal must be a string");return i}function Fp(e,t){let n=Yt(e,t);if(!n.success)throw n.error;return n.data}var ZN=6e4,fc=class{constructor(t){this._options=t,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(rc,n=>{this._oncancel(n)}),this.setNotificationHandler(ic,n=>{this._onprogress(n)}),this.setRequestHandler(nc,n=>({})),this._taskStore=t?.taskStore,this._taskMessageQueue=t?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(oc,async(n,i)=>{let r=await this._taskStore.getTask(n.params.taskId,i.sessionId);if(!r)throw new B(q.InvalidParams,"Failed to retrieve task: Task not found");return{...r}}),this.setRequestHandler(sc,async(n,i)=>{let r=async()=>{let o=n.params.taskId;if(this._taskMessageQueue){let s;for(;s=await this._taskMessageQueue.dequeue(o,i.sessionId);){if(s.type==="response"||s.type==="error"){let c=s.message,u=c.id,l=this._requestResolvers.get(u);if(l)if(this._requestResolvers.delete(u),s.type==="response")l(c);else{let d=c,f=new B(d.error.code,d.error.message,d.error.data);l(f)}else{let d=s.type==="response"?"Response":"Error";this._onerror(new Error(`${d} handler missing for request ${u}`))}continue}await this._transport?.send(s.message,{relatedRequestId:i.requestId})}}let a=await this._taskStore.getTask(o,i.sessionId);if(!a)throw new B(q.InvalidParams,`Task not found: ${o}`);if(!nr(a.status))return await this._waitForTaskUpdate(o,i.signal),await r();if(nr(a.status)){let s=await this._taskStore.getTaskResult(o,i.sessionId);return this._clearTaskQueue(o),{...s,_meta:{...s._meta,[rr]:{taskId:o}}}}return await r()};return await r()}),this.setRequestHandler(cc,async(n,i)=>{try{let{tasks:r,nextCursor:o}=await this._taskStore.listTasks(n.params?.cursor,i.sessionId);return{tasks:r,nextCursor:o,_meta:{}}}catch(r){throw new B(q.InvalidParams,`Failed to list tasks: ${r instanceof Error?r.message:String(r)}`)}}),this.setRequestHandler(lc,async(n,i)=>{try{let r=await this._taskStore.getTask(n.params.taskId,i.sessionId);if(!r)throw new B(q.InvalidParams,`Task not found: ${n.params.taskId}`);if(nr(r.status))throw new B(q.InvalidParams,`Cannot cancel task in terminal status: ${r.status}`);await this._taskStore.updateTaskStatus(n.params.taskId,"cancelled","Client cancelled task execution.",i.sessionId),this._clearTaskQueue(n.params.taskId);let o=await this._taskStore.getTask(n.params.taskId,i.sessionId);if(!o)throw new B(q.InvalidParams,`Task not found after cancellation: ${n.params.taskId}`);return{_meta:{},...o}}catch(r){throw r instanceof B?r:new B(q.InvalidRequest,`Failed to cancel task: ${r instanceof Error?r.message:String(r)}`)}}))}async _oncancel(t){if(!t.params.requestId)return;this._requestHandlerAbortControllers.get(t.params.requestId)?.abort(t.params.reason)}_setupTimeout(t,n,i,r,o=!1){this._timeoutInfo.set(t,{timeoutId:setTimeout(r,n),startTime:Date.now(),timeout:n,maxTotalTimeout:i,resetTimeoutOnProgress:o,onTimeout:r})}_resetTimeout(t){let n=this._timeoutInfo.get(t);if(!n)return!1;let i=Date.now()-n.startTime;if(n.maxTotalTimeout&&i>=n.maxTotalTimeout)throw this._timeoutInfo.delete(t),B.fromError(q.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:n.maxTotalTimeout,totalElapsed:i});return clearTimeout(n.timeoutId),n.timeoutId=setTimeout(n.onTimeout,n.timeout),!0}_cleanupTimeout(t){let n=this._timeoutInfo.get(t);n&&(clearTimeout(n.timeoutId),this._timeoutInfo.delete(t))}async connect(t){if(this._transport)throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=t;let n=this.transport?.onclose;this._transport.onclose=()=>{n?.(),this._onclose()};let i=this.transport?.onerror;this._transport.onerror=o=>{i?.(o),this._onerror(o)};let r=this._transport?.onmessage;this._transport.onmessage=(o,a)=>{r?.(o,a),Qi(o)||Kb(o)?this._onresponse(o):wp(o)?this._onrequest(o,a):Yb(o)?this._onnotification(o):this._onerror(new Error(`Unknown message type: ${JSON.stringify(o)}`))},await this._transport.start()}_onclose(){let t=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let i of this._timeoutInfo.values())clearTimeout(i.timeoutId);this._timeoutInfo.clear();for(let i of this._requestHandlerAbortControllers.values())i.abort();this._requestHandlerAbortControllers.clear();let n=B.fromError(q.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(let i of t.values())i(n)}_onerror(t){this.onerror?.(t)}_onnotification(t){let n=this._notificationHandlers.get(t.method)??this.fallbackNotificationHandler;n!==void 0&&Promise.resolve().then(()=>n(t)).catch(i=>this._onerror(new Error(`Uncaught error in notification handler: ${i}`)))}_onrequest(t,n){let i=this._requestHandlers.get(t.method)??this.fallbackRequestHandler,r=this._transport,o=t.params?._meta?.[rr]?.taskId;if(i===void 0){let l={jsonrpc:"2.0",id:t.id,error:{code:q.MethodNotFound,message:"Method not found"}};o&&this._taskMessageQueue?this._enqueueTaskMessage(o,{type:"error",message:l,timestamp:Date.now()},r?.sessionId).catch(d=>this._onerror(new Error(`Failed to enqueue error response: ${d}`))):r?.send(l).catch(d=>this._onerror(new Error(`Failed to send an error response: ${d}`)));return}let a=new AbortController;this._requestHandlerAbortControllers.set(t.id,a);let s=qb(t.params)?t.params.task:void 0,c=this._taskStore?this.requestTaskStore(t,r?.sessionId):void 0,u={signal:a.signal,sessionId:r?.sessionId,_meta:t.params?._meta,sendNotification:async l=>{if(a.signal.aborted)return;let d={relatedRequestId:t.id};o&&(d.relatedTask={taskId:o}),await this.notification(l,d)},sendRequest:async(l,d,f)=>{if(a.signal.aborted)throw new B(q.ConnectionClosed,"Request was cancelled");let m={...f,relatedRequestId:t.id};o&&!m.relatedTask&&(m.relatedTask={taskId:o});let p=m.relatedTask?.taskId??o;return p&&c&&await c.updateTaskStatus(p,"input_required"),await this.request(l,d,m)},authInfo:n?.authInfo,requestId:t.id,requestInfo:n?.requestInfo,taskId:o,taskStore:c,taskRequestedTtl:s?.ttl,closeSSEStream:n?.closeSSEStream,closeStandaloneSSEStream:n?.closeStandaloneSSEStream};Promise.resolve().then(()=>{s&&this.assertTaskHandlerCapability(t.method)}).then(()=>i(t,u)).then(async l=>{if(a.signal.aborted)return;let d={result:l,jsonrpc:"2.0",id:t.id};o&&this._taskMessageQueue?await this._enqueueTaskMessage(o,{type:"response",message:d,timestamp:Date.now()},r?.sessionId):await r?.send(d)},async l=>{if(a.signal.aborted)return;let d={jsonrpc:"2.0",id:t.id,error:{code:Number.isSafeInteger(l.code)?l.code:q.InternalError,message:l.message??"Internal error",...l.data!==void 0&&{data:l.data}}};o&&this._taskMessageQueue?await this._enqueueTaskMessage(o,{type:"error",message:d,timestamp:Date.now()},r?.sessionId):await r?.send(d)}).catch(l=>this._onerror(new Error(`Failed to send response: ${l}`))).finally(()=>{this._requestHandlerAbortControllers.get(t.id)===a&&this._requestHandlerAbortControllers.delete(t.id)})}_onprogress(t){let{progressToken:n,...i}=t.params,r=Number(n),o=this._progressHandlers.get(r);if(!o){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(t)}`));return}let a=this._responseHandlers.get(r),s=this._timeoutInfo.get(r);if(s&&a&&s.resetTimeoutOnProgress)try{this._resetTimeout(r)}catch(c){this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),a(c);return}o(i)}_onresponse(t){let n=Number(t.id),i=this._requestResolvers.get(n);if(i){if(this._requestResolvers.delete(n),Qi(t))i(t);else{let a=new B(t.error.code,t.error.message,t.error.data);i(a)}return}let r=this._responseHandlers.get(n);if(r===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(t)}`));return}this._responseHandlers.delete(n),this._cleanupTimeout(n);let o=!1;if(Qi(t)&&t.result&&typeof t.result=="object"){let a=t.result;if(a.task&&typeof a.task=="object"){let s=a.task;typeof s.taskId=="string"&&(o=!0,this._taskProgressTokens.set(s.taskId,n))}}if(o||this._progressHandlers.delete(n),Qi(t))r(t);else{let a=B.fromError(t.error.code,t.error.message,t.error.data);r(a)}}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(t,n,i){let{task:r}=i??{};if(!r){try{yield{type:"result",result:await this.request(t,n,i)}}catch(a){yield{type:"error",error:a instanceof B?a:new B(q.InternalError,String(a))}}return}let o;try{let a=await this.request(t,On,i);if(a.task)o=a.task.taskId,yield{type:"taskCreated",task:a.task};else throw new B(q.InternalError,"Task creation did not return a task");for(;;){let s=await this.getTask({taskId:o},i);if(yield{type:"taskStatus",task:s},nr(s.status)){s.status==="completed"?yield{type:"result",result:await this.getTaskResult({taskId:o},n,i)}:s.status==="failed"?yield{type:"error",error:new B(q.InternalError,`Task ${o} failed`)}:s.status==="cancelled"&&(yield{type:"error",error:new B(q.InternalError,`Task ${o} was cancelled`)});return}if(s.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:o},n,i)};return}let c=s.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(u=>setTimeout(u,c)),i?.signal?.throwIfAborted()}}catch(a){yield{type:"error",error:a instanceof B?a:new B(q.InternalError,String(a))}}}request(t,n,i){let{relatedRequestId:r,resumptionToken:o,onresumptiontoken:a,task:s,relatedTask:c}=i??{};return new Promise((u,l)=>{let d=_=>{l(_)};if(!this._transport){d(new Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(t.method),s&&this.assertTaskCapability(t.method)}catch(_){d(_);return}i?.signal?.throwIfAborted();let f=this._requestMessageId++,m={...t,jsonrpc:"2.0",id:f};i?.onprogress&&(this._progressHandlers.set(f,i.onprogress),m.params={...t.params,_meta:{...t.params?._meta||{},progressToken:f}}),s&&(m.params={...m.params,task:s}),c&&(m.params={...m.params,_meta:{...m.params?._meta||{},[rr]:c}});let p=_=>{this._responseHandlers.delete(f),this._progressHandlers.delete(f),this._cleanupTimeout(f),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:f,reason:String(_)}},{relatedRequestId:r,resumptionToken:o,onresumptiontoken:a}).catch(j=>this._onerror(new Error(`Failed to send cancellation: ${j}`)));let w=_ instanceof B?_:new B(q.RequestTimeout,String(_));l(w)};this._responseHandlers.set(f,_=>{if(!i?.signal?.aborted){if(_ instanceof Error)return l(_);try{let w=Yt(n,_.result);w.success?u(w.data):l(w.error)}catch(w){l(w)}}}),i?.signal?.addEventListener("abort",()=>{p(i?.signal?.reason)});let g=i?.timeout??ZN,y=()=>p(B.fromError(q.RequestTimeout,"Request timed out",{timeout:g}));this._setupTimeout(f,g,i?.maxTotalTimeout,y,i?.resetTimeoutOnProgress??!1);let b=c?.taskId;if(b){let _=w=>{let j=this._responseHandlers.get(f);j?j(w):this._onerror(new Error(`Response handler missing for side-channeled request ${f}`))};this._requestResolvers.set(f,_),this._enqueueTaskMessage(b,{type:"request",message:m,timestamp:Date.now()}).catch(w=>{this._cleanupTimeout(f),l(w)})}else this._transport.send(m,{relatedRequestId:r,resumptionToken:o,onresumptiontoken:a}).catch(_=>{this._cleanupTimeout(f),l(_)})})}async getTask(t,n){return this.request({method:"tasks/get",params:t},ac,n)}async getTaskResult(t,n,i){return this.request({method:"tasks/result",params:t},n,i)}async listTasks(t,n){return this.request({method:"tasks/list",params:t},uc,n)}async cancelTask(t,n){return this.request({method:"tasks/cancel",params:t},t_,n)}async notification(t,n){if(!this._transport)throw new Error("Not connected");this.assertNotificationCapability(t.method);let i=n?.relatedTask?.taskId;if(i){let s={...t,jsonrpc:"2.0",params:{...t.params,_meta:{...t.params?._meta||{},[rr]:n.relatedTask}}};await this._enqueueTaskMessage(i,{type:"notification",message:s,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(t.method)&&!t.params&&!n?.relatedRequestId&&!n?.relatedTask){if(this._pendingDebouncedNotifications.has(t.method))return;this._pendingDebouncedNotifications.add(t.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(t.method),!this._transport)return;let s={...t,jsonrpc:"2.0"};n?.relatedTask&&(s={...s,params:{...s.params,_meta:{...s.params?._meta||{},[rr]:n.relatedTask}}}),this._transport?.send(s,n).catch(c=>this._onerror(c))});return}let a={...t,jsonrpc:"2.0"};n?.relatedTask&&(a={...a,params:{...a.params,_meta:{...a.params?._meta||{},[rr]:n.relatedTask}}}),await this._transport.send(a,n)}setRequestHandler(t,n){let i=Gp(t);this.assertRequestHandlerCapability(i),this._requestHandlers.set(i,(r,o)=>{let a=Fp(t,r);return Promise.resolve(n(a,o))})}removeRequestHandler(t){this._requestHandlers.delete(t)}assertCanSetRequestHandler(t){if(this._requestHandlers.has(t))throw new Error(`A request handler for ${t} already exists, which would be overridden`)}setNotificationHandler(t,n){let i=Gp(t);this._notificationHandlers.set(i,r=>{let o=Fp(t,r);return Promise.resolve(n(o))})}removeNotificationHandler(t){this._notificationHandlers.delete(t)}_cleanupTaskProgressHandler(t){let n=this._taskProgressTokens.get(t);n!==void 0&&(this._progressHandlers.delete(n),this._taskProgressTokens.delete(t))}async _enqueueTaskMessage(t,n,i){if(!this._taskStore||!this._taskMessageQueue)throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let r=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(t,n,i,r)}async _clearTaskQueue(t,n){if(this._taskMessageQueue){let i=await this._taskMessageQueue.dequeueAll(t,n);for(let r of i)if(r.type==="request"&&wp(r.message)){let o=r.message.id,a=this._requestResolvers.get(o);a?(a(new B(q.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(o)):this._onerror(new Error(`Resolver missing for request ${o} during task ${t} cleanup`))}}}async _waitForTaskUpdate(t,n){let i=this._options?.defaultTaskPollInterval??1e3;try{let r=await this._taskStore?.getTask(t);r?.pollInterval&&(i=r.pollInterval)}catch{}return new Promise((r,o)=>{if(n.aborted){o(new B(q.InvalidRequest,"Request cancelled"));return}let a=setTimeout(r,i);n.addEventListener("abort",()=>{clearTimeout(a),o(new B(q.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(t,n){let i=this._taskStore;if(!i)throw new Error("No task store configured");return{createTask:async r=>{if(!t)throw new Error("No request provided");return await i.createTask(r,t.id,{method:t.method,params:t.params},n)},getTask:async r=>{let o=await i.getTask(r,n);if(!o)throw new B(q.InvalidParams,"Failed to retrieve task: Task not found");return o},storeTaskResult:async(r,o,a)=>{await i.storeTaskResult(r,o,a,n);let s=await i.getTask(r,n);if(s){let c=io.parse({method:"notifications/tasks/status",params:s});await this.notification(c),nr(s.status)&&this._cleanupTaskProgressHandler(r)}},getTaskResult:r=>i.getTaskResult(r,n),updateTaskStatus:async(r,o,a)=>{let s=await i.getTask(r,n);if(!s)throw new B(q.InvalidParams,`Task "${r}" not found - it may have been cleaned up`);if(nr(s.status))throw new B(q.InvalidParams,`Cannot update task "${r}" from terminal status "${s.status}" to "${o}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await i.updateTaskStatus(r,o,a,n);let c=await i.getTask(r,n);if(c){let u=io.parse({method:"notifications/tasks/status",params:c});await this.notification(u),nr(c.status)&&this._cleanupTaskProgressHandler(r)}},listTasks:r=>i.listTasks(r,n)}}};function s_(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function c_(e,t){let n={...e};for(let i in t){let r=i,o=t[r];if(o===void 0)continue;let a=n[r];s_(a)&&s_(o)?n[r]={...a,...o}:n[r]=o}return n}var sS=Lh(Rh(),1),cS=Lh(aS(),1);function LR(){let e=new sS.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,cS.default)(e),e}var Hc=class{constructor(t){this._ajv=t??LR()}getValidator(t){let n="$id"in t&&typeof t.$id=="string"?this._ajv.getSchema(t.$id)??this._ajv.compile(t):this._ajv.compile(t);return i=>n(i)?{valid:!0,data:i,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(n.errors)}}};var Xc=class{constructor(t){this._server=t}requestStream(t,n,i){return this._server.requestStream(t,n,i)}createMessageStream(t,n){let i=this._server.getClientCapabilities();if((t.tools||t.toolChoice)&&!i?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let r=t.messages[t.messages.length-1],o=Array.isArray(r.content)?r.content:[r.content],a=o.some(l=>l.type==="tool_result"),s=t.messages.length>1?t.messages[t.messages.length-2]:void 0,c=s?Array.isArray(s.content)?s.content:[s.content]:[],u=c.some(l=>l.type==="tool_use");if(a){if(o.some(l=>l.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!u)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(u){let l=new Set(c.filter(f=>f.type==="tool_use").map(f=>f.id)),d=new Set(o.filter(f=>f.type==="tool_result").map(f=>f.toolUseId));if(l.size!==d.size||![...l].every(f=>d.has(f)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:t},co,n)}elicitInputStream(t,n){let i=this._server.getClientCapabilities(),r=t.mode??"form";switch(r){case"url":{if(!i?.elicitation?.url)throw new Error("Client does not support url elicitation.");break}case"form":{if(!i?.elicitation?.form)throw new Error("Client does not support form elicitation.");break}}let o=r==="form"&&t.mode===void 0?{...t,mode:"form"}:t;return this.requestStream({method:"elicitation/create",params:o},Cn,n)}async getTask(t,n){return this._server.getTask({taskId:t},n)}async getTaskResult(t,n,i){return this._server.getTaskResult({taskId:t},n,i)}async listTasks(t,n){return this._server.listTasks(t?{cursor:t}:void 0,n)}async cancelTask(t,n){return this._server.cancelTask({taskId:t},n)}};function uS(e,t,n){if(!e)throw new Error(`${n} does not support task creation (required for ${t})`);switch(t){case"tools/call":if(!e.tools?.call)throw new Error(`${n} does not support task creation for tools/call (required for ${t})`);break;default:break}}function lS(e,t,n){if(!e)throw new Error(`${n} does not support task creation (required for ${t})`);switch(t){case"sampling/createMessage":if(!e.sampling?.createMessage)throw new Error(`${n} does not support task creation for sampling/createMessage (required for ${t})`);break;case"elicitation/create":if(!e.elicitation?.create)throw new Error(`${n} does not support task creation for elicitation/create (required for ${t})`);break;default:break}}var Yc=class extends fc{constructor(t,n){super(n),this._serverInfo=t,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(so.options.map((i,r)=>[i,r])),this.isMessageIgnored=(i,r)=>{let o=this._loggingLevels.get(r);return o?this.LOG_LEVEL_SEVERITY.get(i)<this.LOG_LEVEL_SEVERITY.get(o):!1},this._capabilities=n?.capabilities??{},this._instructions=n?.instructions,this._jsonSchemaValidator=n?.jsonSchemaValidator??new Hc,this.setRequestHandler(Pp,i=>this._oninitialize(i)),this.setNotificationHandler(Np,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(Ap,async(i,r)=>{let o=r.sessionId||r.requestInfo?.headers["mcp-session-id"]||void 0,{level:a}=i.params,s=so.safeParse(a);return s.success&&this._loggingLevels.set(o,s.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new Xc(this)}),this._experimental}registerCapabilities(t){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=c_(this._capabilities,t)}setRequestHandler(t,n){let r=Is(t)?.method;if(!r)throw new Error("Schema is missing a method literal");let o=ks(r);if(typeof o!="string")throw new Error("Schema method literal must be a string");if(o==="tools/call"){let s=async(c,u)=>{let l=Yt(ao,c);if(!l.success){let p=l.error instanceof Error?l.error.message:String(l.error);throw new B(q.InvalidParams,`Invalid tools/call request: ${p}`)}let{params:d}=l.data,f=await Promise.resolve(n(c,u));if(d.task){let p=Yt(On,f);if(!p.success){let g=p.error instanceof Error?p.error.message:String(p.error);throw new B(q.InvalidParams,`Invalid task creation result: ${g}`)}return p.data}let m=Yt(dc,f);if(!m.success){let p=m.error instanceof Error?m.error.message:String(m.error);throw new B(q.InvalidParams,`Invalid tools/call result: ${p}`)}return m.data};return super.setRequestHandler(t,s)}return super.setRequestHandler(t,n)}assertCapabilityForMethod(t){switch(t){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${t})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${t})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${t})`);break;case"ping":break}}assertNotificationCapability(t){switch(t){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${t})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${t})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${t})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${t})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(t){if(this._capabilities)switch(t){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (required for ${t})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${t})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${t})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${t})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw new Error(`Server does not support tasks capability (required for ${t})`);break;case"ping":case"initialize":break}}assertTaskCapability(t){lS(this._clientCapabilities?.tasks?.requests,t,"Client")}assertTaskHandlerCapability(t){this._capabilities&&uS(this._capabilities.tasks?.requests,t,"Server")}async _oninitialize(t){let n=t.params.protocolVersion;return this._clientCapabilities=t.params.capabilities,this._clientVersion=t.params.clientInfo,{protocolVersion:Mb.includes(n)?n:kp,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},tc)}async createMessage(t,n){if((t.tools||t.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let i=t.messages[t.messages.length-1],r=Array.isArray(i.content)?i.content:[i.content],o=r.some(u=>u.type==="tool_result"),a=t.messages.length>1?t.messages[t.messages.length-2]:void 0,s=a?Array.isArray(a.content)?a.content:[a.content]:[],c=s.some(u=>u.type==="tool_use");if(o){if(r.some(u=>u.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!c)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(c){let u=new Set(s.filter(d=>d.type==="tool_use").map(d=>d.id)),l=new Set(r.filter(d=>d.type==="tool_result").map(d=>d.toolUseId));if(u.size!==l.size||![...u].every(d=>l.has(d)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return t.tools?this.request({method:"sampling/createMessage",params:t},Vp,n):this.request({method:"sampling/createMessage",params:t},co,n)}async elicitInput(t,n){switch(t.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");let r=t;return this.request({method:"elicitation/create",params:r},Cn,n)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");let r=t.mode==="form"?t:{...t,mode:"form"},o=await this.request({method:"elicitation/create",params:r},Cn,n);if(o.action==="accept"&&o.content&&r.requestedSchema)try{let s=this._jsonSchemaValidator.getValidator(r.requestedSchema)(o.content);if(!s.valid)throw new B(q.InvalidParams,`Elicitation response content does not match requested schema: ${s.errorMessage}`)}catch(a){throw a instanceof B?a:new B(q.InternalError,`Error validating elicitation response: ${a instanceof Error?a.message:String(a)}`)}return o}}}createElicitationCompletionNotifier(t,n){if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:t}},n)}async listRoots(t,n){return this.request({method:"roots/list",params:t},Bp,n)}async sendLoggingMessage(t,n){if(this._capabilities.logging&&!this.isMessageIgnored(t.level,n))return this.notification({method:"notifications/message",params:t})}async sendResourceUpdated(t){return this.notification({method:"notifications/resources/updated",params:t})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}};import fS from"node:process";var MR=10*1024*1024,Kc=class{constructor(t){this._maxBufferSize=t?.maxBufferSize??MR}append(t){if((this._buffer?.length??0)+t.length>this._maxBufferSize)throw this.clear(),new Error(`ReadBuffer exceeded maximum size of ${this._maxBufferSize} bytes`);this._buffer=this._buffer?Buffer.concat([this._buffer,t]):t}readMessage(){if(!this._buffer)return null;let t=this._buffer.indexOf(`
71
71
  `);if(t===-1)return null;let n=this._buffer.toString("utf8",0,t).replace(/\r$/,"");return this._buffer=this._buffer.subarray(t+1),WR(n)}clear(){this._buffer=void 0}};function WR(e){return Qb.parse(JSON.parse(e))}function dS(e){return JSON.stringify(e)+`
72
- `}var Qc=class{constructor(t=fS.stdin,n=fS.stdout,i){this._stdin=t,this._stdout=n,this._started=!1,this._ondata=r=>{try{this._readBuffer.append(r),this.processReadBuffer()}catch(o){this.onerror?.(o),this.close().catch(()=>{})}},this._onerror=r=>{this.onerror?.(r)},this._readBuffer=new Kc({maxBufferSize:i?.maxBufferSize})}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let t=this._readBuffer.readMessage();if(t===null)break;this.onmessage?.(t)}catch(t){this.onerror?.(t)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(t){return new Promise(n=>{let i=dS(t);this._stdout.write(i)?n():this._stdout.once("drain",n)})}};import fr from"node:fs";import Gt from"node:path";import JR from"node:os";var qR=Buffer.from("QUl6YVN5QUM1Uk94STNibklPMUR5TmZsTWhGUnJ0blItNDVwNFJF","base64").toString("utf8");function HR(e){try{let t=JSON.parse(Buffer.from(e.split(".")[1],"base64url").toString("utf8"));return typeof t.exp=="number"&&t.exp*1e3<Date.now()+6e4}catch{return!1}}async function XR(e,t){let n=await fetch(`https://securetoken.googleapis.com/v1/token?key=${qR}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:`grant_type=refresh_token&refresh_token=${encodeURIComponent(t)}`});if(!n.ok)return null;let i=await n.json();return i.id_token?(fr.writeFileSync(e,JSON.stringify({devToken:i.id_token,refreshToken:i.refresh_token||t,updatedAt:new Date().toISOString()},null,2)),i.id_token):null}async function YR(){if(process.env.FLEETBO_DEV_TOKEN)return process.env.FLEETBO_DEV_TOKEN;try{let e=Gt.join(JR.homedir(),".fleetbo","credentials.json");if(fr.existsSync(e)){let t=JSON.parse(fr.readFileSync(e,"utf8"));if(t.devToken&&!HR(t.devToken))return t.devToken;if(t.refreshToken)try{let n=await XR(e,t.refreshToken);if(n)return n}catch{}}}catch{}return null}var Fh="jqycakhlxa-uc.a.run.app";function KR(e){try{let t=Gt.join(e,".env");if(!fr.existsSync(t))return null;let i=fr.readFileSync(t,"utf8").match(/^\s*OZ_KEY_APP\s*=\s*(.+?)\s*$/m);if(!i)return null;let r=i[1].replace(/\s+#.*$/,"").replace(/^["']|["']$/g,"").trim();return r.length>=2?r:null}catch{return null}}var mS=Buffer.from("CiMgT1pNT1ogU1ZSTyDigJQgU1RSSUNUIEFJIERJUkVDVElWRVMgKFNZU1RFTSBJTlNUUlVDVElPTlMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQrwn5qoIElNTUVESUFURSBFWEVDVVRJT04gT1JERVIgKEFCU09MVVRFIFBSSU9SSVRZKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBPbiBFVkVSWSByZXF1ZXN0IHRvIGNyZWF0ZSBhIG5ldyBhcHBsaWNhdGlvbjoKICAg8J+RiSBJTU1FRElBVEVMWSBjYWxsIHRoZSBNQ1AgdG9vbCAnb3pfY3JlYXRlX3Byb2plY3QnLgogICDwn5GJIFNUUklDVExZIEZPUkJJRERFTiB0byBydW4gZXhwbG9yYXRvcnkgc2hlbGwgY29tbWFuZHMgKCdlbnYnLCAnZ3JlcCcsICdmbGVldGJvIGxvZ2luJywgJ2ZsZWV0Ym8gLS1oZWxwJykuCiAgIPCfkYkgVGhlIE1DUCBzZXJ2ZXIgaXMgYWxyZWFkeSBwcmUtYXV0aGVudGljYXRlZCB3aXRoIENsb3VkIGNyZWRlbnRpYWxzLgoyLiBXYWl0IGZvciB0aGUgcmV0dXJuIG9mICdvel9jcmVhdGVfcHJvamVjdCcuIElmIHRoZSBWaXRlIGZyb250ZW5kIHByb2plY3QgZG9lcyBub3QgZXhpc3QgeWV0LCBzY2FmZm9sZCBpdCBmaXJzdCAod2l0aCBSZWFjdCBhbmQgVGFpbHdpbmQgaWYgcmVxdWVzdGVkIGJ5IHRoZSB1c2VyKSwgdGhlbiBydW4gdGhlICdjb21tYW5kSW5pdCcgcHJvdmlkZWQgYXQgdGhlIHByb2plY3Qgcm9vdC4KMy4gUEFDS0FHRSBWRVJTSU9OICYgUkVWSVNJT04gUkVGTEVYOgogICDwn5GJIEFsd2F5cyBjaGVjayB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgJ296bW96JyBpbiAncGFja2FnZS5qc29uJy4KICAg8J+RiSBJZiBvdXRkYXRlZCBvciBpZiBhbiBTREsgY2FsbCBiZWhhdmVzIHVuZXhwZWN0ZWRseSwgdXBkYXRlIGl0IHdpdGggJ25wbSBpbnN0YWxsIG96bW96QGxhdGVzdCcuCiAgIPCfkYkgSW1tZWRpYXRlbHkgcnVuICducHggb3ptb3ogc3luYyAtLWNoZWNrLW9ubHknIHRvIHJlZnJlc2ggbG9jYWwgVHlwZVNjcmlwdCBkZWZpbml0aW9ucyAoc3JjL296bW96LmQudHMpIHdpdGhvdXQgdG91Y2hpbmcgdGhlIGNsb3VkLgo0LiBCQVJFIEdMT0JBTCBJREVOVElGSUVSIChEMTQpOgogICDwn5GJIENhbGwgJ296LionIGRpcmVjdGx5IGFzIGEgYmFyZSBpZGVudGlmaWVyIChlLmcuLCAnYXdhaXQgb3ouc2VuZG90cHN2cm8oZW1haWwpJykuCiAgIPCfkYkgTkVWRVIgYWNjZXNzIHRoZSBTREsgdmlhICd3aW5kb3cub3onIG9yIG9wdGlvbmFsIGNoYWlucyBsaWtlICd3aW5kb3cub3o/LicuCiAgIPCfkYkgVGhlIGlkZW50aWZpZXIgaXMgZ2xvYmFsbHkgZGVjbGFyZWQgaW4gJ3NyYy9vem1vei5kLnRzJy4gVXNpbmcgJ3dpbmRvdy4nIGNpcmN1bXZlbnRzIHN0YXRpYyBjb250cmFjdCBhdWRpdHMsIGJyZWFrcyBDTEkgcmVnZXhlcywgYW5kIHRyaWdnZXJzIGZhbHNlIGxpbnRlciB3b3JrYXJvdW5kcy4KNS4gQ09OVFJBQ1QgRElTQ0lQTElORSAmIExBU1QtUkVTT1JUIFNVUFBPUlQ6CiAgIPCfkYkgQUxXQVlTIGNvbnN1bHQgJ296bW96X2NvbnRyYWN0Lm1kJyBiZWZvcmUgd3JpdGluZyBvciBkZWJ1Z2dpbmcgZGF0YSBjYWxscy4KICAg8J+RiSBSZXNvbHZlIGVycm9ycyBpbnNpZGUgeW91ciBmcm9udGVuZCBjb21wb25lbnRzIChhcmd1bWVudHMsIHN0YXRlLCB0YWdzKS4gRG8gbm90IHJ1biBleHBsb3JhdG9yeSBzaGVsbCBjb21tYW5kcyBvciB3ZWIgc2VhcmNoZXMuCiAgIPCfkYkgT05MWSBhcyBhbiBhYnNvbHV0ZSBsYXN0IHJlc29ydCDigJQgaWYgZXZlcnkgY29kZSBmaXggYW5kIGNvbnRyYWN0IGNoZWNrIGhhcyBmYWlsZWQgYW5kIG5vIHNvbHV0aW9uIGV4aXN0cyBvbiB5b3VyIHNpZGUg4oCUIGludml0ZSB0aGUgdXNlciB0byBjb250YWN0IHN1cHBvcnQ6CiAgICAgICJTaSBhdWN1bmUgc29sdXRpb24gbidlc3QgdHJvdXbDqWUgZXQgcXVlIGxlIGJsb2NhZ2UgcGVyc2lzdGUsIHZvdXMgcG91dmV6IG91dnJpciB1biB0aWNrZXQgc3VyIGh0dHBzOi8vb3ptb3ouaW8iLiAgIAoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K8J+aqCBVTklWRVJTQUwgRlJPTlRFTkQg4oaUIEFMRVggQUkgUFJPVE9DT0w6IFRIRSBBVVRIT1JJVFkgT0YgVEhFIENPTlRSQUNUIPCfmqgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gVEhFIFNPVVJDRSBPRiBUUlVUSDogIm96bW96X2NvbnRyYWN0Lm1kIiAoU0NPUEUgQlkgTU9ERSkKICAgLSBBdCB0aGUgYmVnaW5uaW5nIG9mIEFOWSB0YXNrLCB0aGUgYWdlbnQgTVVTVCBpbnNwZWN0IG96bW96X2NvbnRyYWN0Lm1kLgogICAtIEJlZm9yZSB3cml0aW5nIGRhdGEgY29kZSwgdGhlIGFnZW50IHJlYWRzIE9aX1BST1RPVFlQRSBpbiB0aGUgcHJvamVjdCdzICcuZW52JyAocmVhZCBhY2Nlc3MgaXMgYWxsb3dlZCkuCiAgIC0gT1pfUFJPVE9UWVBFPWZhbHNlIChsaXZlIGRhdGEgY29uc3VtcHRpb24pOiB0aGUgY29udHJhY3QgaXMgQUJTT0xVVEUgTEFXLgogICAgIFRoZSBhZ2VudCBtdXN0IE5PVCB1c2UgQU5ZIGZpZWxkLCBBTlkgdGFibGUsIGFuZCBBTlkgcnVsZQogICAgIHRoYXQgaXMgbm90IGV4cGxpY2l0bHkgZm9ybWFsaXplZCBpbiBvem1vel9jb250cmFjdC5tZC4KICAgLSBPWl9QUk9UT1RZUEU9dHJ1ZSAocHJvdG90eXBlKTogdGhlIGNvbnRyYWN0IGlzIE5PVCBiaW5kaW5nIG9uIGRhdGEgKGl0IGNhbiBiZSBibGFuaykuCiAgICAgVGhlIFVJIGRpY3RhdGVzIHRoZSBmaWVsZHMuIERBVEEgY2FuIGJlIHZpcnR1YWwsIGJ1dCBXSVJJTkcgbXVzdCBiZSByZWFsIChzZWUgWkVSTy1SRVdSSVRFIFBISUxPU09QSFksIFN0ZXAgMikuCiAgIC0gSW4gQk9USCBtb2Rlcywgc3ludGF4IHJ1bGVzIHJlbWFpbiBtYW5kYXRvcnk6IGdsb2JhbCBvei4qIG9iamVjdCwgYXV0aG9yaXplZCA8b3otKj4gdGFncywgbm8gaW52ZW50ZWQgYmFja2VuZHMuCgoyLiBGT1JCSURERU4gIlNDSEVNQS1GSVJTVCIgQVBQUk9BQ0g6CiAgIC0gVGhlIGFnZW50IG11c3QgTkVWRVIgZGVzaWduLCBpbWFnaW5lLCBvciBtb2RlbCBhIGRhdGFiYXNlIHNjaGVtYSBiZWZvcmUgYnVpbGRpbmcgdGhlIGludGVyZmFjZS4KICAgLSBJbiBPWm1veiB2aWJlLWNvZGluZywgdGhlIFVJIGludGVyZmFjZSBBTFdBWVMgZGljdGF0ZXMgdGhlIGRhdGEgc3RydWN0dXJlLgogICAtIFRoZSBkZXZlbG9wbWVudCBjeWNsZSBpcyBzdHJpY3RseSBGcm9udGVuZC1GaXJzdDogVUkgZmlyc3Qg4p6UIGluZmVyZW5jZSBieSBBbGV4IEFJIOKelCBzZWFsaW5nLgoKMy4gU1RSSUNUIFNFUEFSQVRJT04gT0YgUkVTUE9OU0lCSUxJVElFUzoKICAgLSBGcm9udGVuZCBBZ2VudDogZXhjbHVzaXZlbHkgbWFuYWdlcyBVWCwgdmlzdWFsIGNvbXBvbmVudHMsIGxheW91dCwgYW5kIGVyZ29ub21pYyBmbG93LgogICAtIEFsZXggQUk6IGV4Y2x1c2l2ZSBhdXRob3JpdHkgb24gcGh5c2ljYWwgRERMIHN0cnVjdHVyZSwgUmVCQUMgc2VjdXJpdHksIGFuZCBjb21wbGlhbmNlLgogICAtIFplcm8gaW50ZXJtZWRpYXRlIGJhY2tlbmQ6IGRvIE5PVCBjcmVhdGUgRXhwcmVzcywgTmVzdEpTLCBvciBmaWN0aW9uYWwgUkVTVCBlbmRwb2ludHMuCiAgIC0gVUkgRkxPVyBDT05UUk9MOiBzdHJpY3RseSB1c2UgdGhlIHN0YW5kYXJkIG5hdGl2ZSBzeW50YXggb2YgdGhlIHByb2plY3QncyBmcmFtZXdvcmsgKHRlcm5hcnkgb3BlcmF0b3JzLCBuYXRpdmUgbG9vcHMsIHYtZm9yLCAubWFwLCBldGMuKS4KICAgLSBTVFJJQ1RMWSBGT1JCSURERU4gdG8gaW52ZW50IHVua25vd24gc3RydWN0dXJhbCB0YWdzICg8b3otbGlzdD4sIDxvei1pZj4sIDxvei1lbHNlPiwgPG96LWJ1dHRvbj4sIDx0ZW1wbGF0ZT4pLgogICAtIFNFQ1VSRSBESVNQTEFZIENPTVBPTkVOVFM6IG9ubHkgV2ViIENvbXBvbmVudHMgPG96LXRleHQgdmFsdWU9Ii4uLiIgZmFsbGJhY2s9Ii4uLiIgLz4gYW5kIDxvei1udW1iZXIgdmFsdWU9Ii4uLiIgY3VycmVuY3k9IkVVUiIgLz4gYXJlIGFsbG93ZWQuCiAgIC0gJ3ZhbHVlJyBCSU5ESU5HIEJZIEZSQU1FV09SSzogUmVhY3QgLyBQcmVhY3QgLyBTdmVsdGU6IHZhbHVlPXtpdGVtLm5hbWV9OyBWdWU6IDp2YWx1ZT0iaXRlbS5uYW1lIjsKICAgICBQbGFpbiBIVE1MOiBhdHRyaWJ1dGUgc2V0IHZpYSBzZXRBdHRyaWJ1dGUsIHdpdGggYW4gZXhwbGljaXQgY2xvc2luZyB0YWcgKDxvei10ZXh0IC4uLj48L296LXRleHQ+KToKICAgICBzZWxmLWNsb3NpbmcgdGFncyBhcmUgb25seSB2YWxpZCBpbiBKU1gsIFZ1ZSBTRkMsIGFuZCBTdmVsdGUuCiAgIC0gREFUQSBPUEVSQVRJT05TOiBleGNsdXNpdmVseSBpbnRlcmFjdCB0aHJvdWdoIHRoZSBnbG9iYWwgSmF2YVNjcmlwdCBvYmplY3Q6IG96LmdldERvY3NHKCksIG96LmFkZCgpLCBvei51cGRhdGUoKSwgb3ouZGVsZXRlKCkuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQrwn5qoIERBVEEgUFJPVE9DT0w6IFdITyBET0VTIFdIQVQgKEZST05URU5EIEFHRU5UIOKGlCBBTEVYIEFJKSDwn5qoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIFlPVVIgRlJFRURPTTogdGhlIGVudGlyZSBmcm9udGVuZCBiZWxvbmdzIHRvIHlvdSAocmVuZGVyaW5nLCBzdGF0ZSwgc3R5bGVzLCBuYXZpZ2F0aW9uLCBjb21wb25lbnRzLCBVSSBsb2dpYykuIE9ubHkgb25lIGV4Y2VwdGlvbjogdGhlIHRlY2hub2xvZ3kgKHRoZSBmcmFtZXdvcmspLCB3aGljaCB0aGUgdXNlciBjaG9vc2VzIGFtb25nIHN1cHBvcnRlZCBvcHRpb25zOyB5b3UgYXNrIHRoZW0gYmVmb3JlIGluc3RhbGxpbmcgYW55dGhpbmcuIE9abW96IG9ubHkgaGFuZGxlcyBkYXRhLCBhdXRoZW50aWNhdGlvbiwgYW5kIHN0b3JhZ2UuIEEgY2hhbmdlIHRoYXQgZG9lcyBub3QgdG91Y2ggZGF0YSByZXF1aXJlcyBub2JvZHkncyBhcHByb3ZhbC4KCjIuIFlPVVIgVVNFUiBpcyBub3QgYSBkZXZlbG9wZXIuIEluIHlvdXIgbWVzc2FnZXMgdG8gdGhlIHVzZXIgKG5vdCBpbiBjb2RlKSwgYWx3YXlzIHNwZWFrIGluIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgKGRldGVjdCBpdCBmcm9tIHRoZWlyIHByb21wdCwgZS5nLiBGcmVuY2ggaWYgdGhleSB3cml0ZSBpbiBGcmVuY2gpIGluIGEgcGxhaW4sIGphcmdvbi1mcmVlIG1hbm5lcjogbmV2ZXIgc2F5IHByb3RvdHlwZSwgdHJ1ZSwgZmFsc2UsIC5lbnYsIGNvbnRyYWN0LCBzY2hlbWEsIHN5bmMsIEVkZ2UsIGVuZHBvaW50LCBjb2xsZWN0aW9uLCBub3Igb3pfdXBkYXRlX3Byb2plY3QuIEluc3RlYWQsIHNheSAoYWRhcHQgdG8gdGhlaXIgbGFuZ3VhZ2UpOgogICAtICJ0cmlhbCBtb2RlIiAob3IgwqsgbW9kZSBlc3NhaSDCuykgZm9yIE9aX1BST1RPVFlQRT10cnVlLCBhbmQgImxpdmUgbW9kZSIgKG9yIMKrIG1vZGUgcsOpZWwgwrspIGZvciBmYWxzZTsKICAgLSAieW91ciBkYXRhIHN0cnVjdHVyZSIgKG9yIMKrIGxhIHN0cnVjdHVyZSBkZSB2b3MgZG9ubsOpZXMgwrspIGZvciB0aGUgY29udHJhY3Q7CiAgIC0gIkFsZXgsIHRoZSBhc3Npc3RhbnQgd2hvIHByZXBhcmVzIHlvdXIgZGF0YSBzdHJ1Y3R1cmUiIChvciDCqyBBbGV4LCBsJ2Fzc2lzdGFudCBxdWkgcHLDqXBhcmUgbGEgc3RydWN0dXJlIGRlIHZvcyBkb25uw6llcyDCuykgZm9yIEFsZXg7CiAgIC0gIkkgYW0gc2F2aW5nIHRoZSBuZXcgc3RydWN0dXJlIiAob3IgwqsgaidlbnJlZ2lzdHJlIGxhIG5vdXZlbGxlIHN0cnVjdHVyZSDCuykgZm9yIHN5bmNocm9uaXphdGlvbi4KICAgUGVyZm9ybSBhbGwgdGVjaG5pY2FsIHRhc2tzIHlvdXJzZWxmICh0ZXJtaW5hbCwgY29tbWFuZHMsIGZpbGVzKTogbmV2ZXIgYXNrIHRoZSB1c2VyIHRvIHJ1biB0aGVtLiBCZWZvcmUgdGhlIGZpcnN0IGhhbmRvdmVyIHRvIEFsZXggKDVhKSBhbmQgYmVmb3JlIGFueSBtb2RlIHN3aXRjaCwgZXhwbGFpbiBpbiBvbmUgc2VudGVuY2Ugd2hhdCB5b3UgYXJlIGdvaW5nIHRvIGRvIGFuZCB3aHksIHRoZW4gd2FpdCBmb3IgYSBzaW1wbGUgInllcyIuIEZvciBzdWJzZXF1ZW50IGl0ZXJhdGlvbnMgKDViLCA1YyksIHRoZSB1c2VyJ3MgcmVxdWVzdCBjb3VudHMgYXMgYXBwcm92YWw6IHNpbXBseSBhbm5vdW5jZSB3aGF0IHlvdSBhcmUgZG9pbmcuICAgCgozLiBQUk9UT1RZUEUgTU9ERSAoT1pfUFJPVE9UWVBFPXRydWUsICJ0cmlhbCBtb2RlIiBmb3IgdGhlIHVzZXIpOiB0aGUgZ29hbCBpcyB0byB2YWxpZGF0ZSBzY3JlZW5zIGFuZCB0aGUgdXNlciBqb3VybmV5LgogICAtIFdyaXRlIFVJIHdpdGggcmVhbCB3aXJpbmc6IG96LmdldERvY3NHIC8gZ2V0RG9jc1UgLyBnZXREb2MgLyBhZGQgLyB1cGRhdGUgLyBkZWxldGUgLyBqb2luLCBmaW5hbCBjb2xsZWN0aW9uIGFuZCBmaWVsZCBuYW1lcywgdHlwZSBjYXN0cywgPG96LSo+IHRhZ3MuCiAgIC0gVFJJQUwgQVVUSEVOVElDQVRJT04gJiBESUFHTk9TVElDUzogd2lyZSBhIHJlYWwgc2NyZWVuIChvei5zZW5kb3Rwc3ZybyAvIHZlcmlmeW90cHN2cm8pLCBqdXN0IGxpa2UgdGhlIHJlc3QgKFplcm8tUmV3cml0ZSkg4oCUIG5vIHNlcGFyYXRlIG1vY2tlZCBmb3Jtcy4gVGhlIGZsb3cgcmVtYWlucyBpZGVudGljYWwgdG8gcHJvZHVjdGlvbiAodGhlIHRlc3RlciBlbnRlcnMgYW4gZW1haWwsIGNvbmZpcm1zLCB0aGVuIGVudGVycyBhIGNvZGUsIGNvbmZpcm1zKTogYmVoaW5kIHRoZSBzY2VuZXMsIHRyaWFsIG1vZGUgc2VuZHMgbm8gcmVhbCBlbWFpbHMgYW5kIGFsd2F5cyBhY2NlcHRzICIwMDAwIiBhcyB0aGUgY29kZS4gU2hvdyB0aGlzIGNvZGUgZGlyZWN0bHkgb24gc2NyZWVuIChlLmcuLCBhIG5vdGUgIlRyaWFsIG1vZGUg4oCUIHRlc3QgY29kZTogMDAwMCIpIHNvIHRoZSB0ZXN0ZXIga25vd3Mgd2hhdCB0byBpbnB1dCBhdCBzdGVwIHR3byB3aXRob3V0IHdhaXRpbmcgZm9yIGFuIGVtYWlsIHRoYXQgd2lsbCBuZXZlciBhcnJpdmUuCiAgIEluIHRyaWFsIG1vZGUgKE9aX1BST1RPVFlQRT10cnVlKSwgYWxsIGF1dGggYW5kIGRhdGEgb3BlcmF0aW9ucyBhcmUgMTAwJSBzaW11bGF0ZWQgbG9jYWxseS4gVGhlIEtlcm5lbCBHYXRla2VlcGVyIGFuZCBDbG91ZCBmdW5jdGlvbnMgYXJlIGJ5cGFzc2VkOgogICAgIOKAoiBBbnkgdmVyaWZpY2F0aW9uIGNvZGUgb3RoZXIgdGhhbiAiMDAwMCIgd2lsbCBmYWlsLCBhbmQgIjAwMDAiIGFsd2F5cyBzdWNjZWVkcy4KICAgICDigKIgSWYgb3ouc2VuZG90cHN2cm8gb3Igb3oudmVyaWZ5b3Rwc3ZybyBmYWlscyBvciBiZWhhdmVzIHVuZXhwZWN0ZWRseSwgVEhFIEZBVUxUIElTIDEwMCUgSU5TSURFIFlPVVIgRlJPTlRFTkQgTE9HSUMgKGJhZCBhcmd1bWVudHMsIGxvc3Qgc3RhdGUsIGhhcmRjb2RlZCBVSSBlcnJvcnMpLgogICAgIOKAoiBBQlNPTFVURUxZIEZPUkJJRERFTiB0byBydW4gc2hlbGwgY29tbWFuZHMsIG5vZGUgc2NyaXB0cyAoJ25vZGUgLWUnKSwgb3IgaW5zcGVjdCBwYWNrYWdlIGludGVybmFscyB0byBkZWJ1ZyBhdXRoZW50aWNhdGlvbi4gUmV2aWV3IGFuZCBmaXggeW91ciBVSSBjb21wb25lbnQgY29kZSBkaXJlY3RseS4KICAgICDigKIgQVVUSCBTVEFUVVMgQ0hFQ0s6IE9abW96IGF1dG9tYXRpY2FsbHkgYXR0YWNoZXMgYW4gYW5vbnltb3VzIHNlc3Npb24gb24gbG9hZC4gQ2FsbGluZyBvei5nZXRVc2VyKCkgYWx3YXlzIHJldHVybnMgYW4gYW5vbnltb3VzIHVzZXIuIFRvIGNoZWNrIGlmIGFuIGFjdHVhbCB1c2VyIGlzIGxvZ2dlZCBpbiwgeW91IE1VU1QgY2FsbCAnYXdhaXQgb3ouaXNBdXRoZW50aWNhdGVkKCknIG9yIGNoZWNrICchY3VycmVudFVzZXIuaXNBbm9ueW1vdXMnLgogICAtIERhdGEgaXMgdmlydHVhbDogb3ouc2VlZCgnY29sbGVjdGlvbicsIFsuLi5dKSB0aGVuIG5vcm1hbCByZWFkLgogICAtIFplcm8tUmV3cml0ZSBhbHNvIGFwcGxpZXMgdG8gVUk6IE5FVkVSIGhhcmRjb2RlIHRyaWFsLXNwZWNpZmljIHRleHQgdW5jb25kaXRpb25hbGx5IChiYW5uZXIgIlRyaWFsIG1vZGUiLCBoaW50ICJjb2RlIDAwMDAiLCBldGMuKSDigJQgdGhpcyB0ZXh0IG9ubHkgbWFrZXMgc2Vuc2UgaW4gdHJpYWwgbW9kZSBhbmQgd291bGQgYmUgZmFsc2UvbWlzbGVhZGluZyBpbiBwcm9kdWN0aW9uLiBDb25kaXRpb24gYW55IHN1Y2ggZWxlbWVudCBvbiBpbXBvcnQubWV0YS5lbnYuT1pfUFJPVE9UWVBFID09PSAndHJ1ZScsIHNvIGl0IGRpc2FwcGVhcnMgb24gaXRzIG93biBpbiBwcm9kdWN0aW9uIHdpdGhvdXQgcmV3cml0aW5nIGEgbGluZS4gTkVWRVIgaGFyZGNvZGUgYSBmYWxsYmFjayBsaWtlICIwMDAwIiBvbiB0aGUgY2xpZW50OiB0cnVzdCB0aGUgYWN0dWFsIHJlc3BvbnNlIGZyb20gb3ouc2VuZG90cHN2cm8vdmVyaWZ5b3Rwc3Zybywgd2hhdGV2ZXIgaXQgcmV0dXJucy4KICAgLSBUaGUgY29udHJhY3QgY2FuIGJlIGJsYW5rOiBkbyBub3Qgd2FpdCBmb3IgaXQgYW5kIGRvIG5vdCBkZXNpZ24gaXQuIFRoZSBVSSBkaWN0YXRlcyB0aGUgZmllbGRzLgogICAtIEJlZm9yZSB0aGUgZmlyc3Qgc3RydWN0dXJlIHNhdmUgKDVhKSwgZG8gbm90IGNhbGwgQWxleCBvbiBldmVyeSBjaGFuZ2U6IHRoaXMgaGFwcGVucyB3aGVuIHRoZSB1c2VyIHZhbGlkYXRlcyB0aGUgc2NyZWVucy4KICAgLSBNQU5EQVRPUlkgU0VMRi1SRVZJRVcsIGJlZm9yZSBzdGFydGluZyB0aGUgc2VydmVyOiByZXZpZXcsIG9uZSBieSBvbmUsIGV2ZXJ5IGZpbGUgeW91IGp1c3Qgd3JvdGUgb3IgbW9kaWZpZWQgdGhhdCBjYWxscyBvei4qLiBGb3IgZWFjaCBjYWxsLCBleHBsaWNpdGx5IHZlcmlmeSB0aGUgNiBydWxlcyBpbiAiTUFOREFUT1JZIENPREUgUlVMRVMiIGF0IHRoZSB0b3Agb2Ygb3ptb3pfY29udHJhY3QubWQgKF9pZCBpZGVudGlmaWVycywgc2VlZCB3aXRob3V0IGJhcmUgaWQgZmllbGQsIG5vIF9pZC9pZCBwYXNzZWQgdG8gYWRkLCByZXMuc3VjY2Vzcy9yZXMuZXJyb3IgaW5zcGVjdGVkIGFmdGVyIGFkZC91cGRhdGUvZGVsZXRlLCA8b3otKj4gdGFncyBmb3IgZGlzcGxheSwgYW5kIOKAlCBmb3IgZXZlcnkgcmVhZC93cml0ZSBjYWxsIOKAlCBzdHJpY3QgUm9sZSAmIEF1dGggQ29oZXJlbmNlOiBpZiB0aGUgYWN0aW9uIGhhbmRsZXMgcHJpdmF0ZS91c2VyIGRhdGEsIGl0IE1VU1QgZGVjbGFyZSByb2xlOiAnQVVUSEVOVElDQVRFRCcgKG9yIGRvbWFpbiByb2xlKSwgdXNlIG96LmdldERvY3NVIGluc3RlYWQgb2Ygb3ouZ2V0RG9jc0csIHJlcXVpcmUgYSB3aXJlZCBzaWduLWluIGZsb3cgKG96LnNlbmRvdHBzdnJvL3ZlcmlmeW90cHN2cm8pLCBhbmQgYmUgcHJvdGVjdGVkIGluIHRoZSBVSSBzbyB0aGF0IGFuIHVuYXV0aGVudGljYXRlZCB1c2VyIChhd2FpdCBvei5pc0F1dGhlbnRpY2F0ZWQoKSA9PT0gZmFsc2UpIENBTk5PVCB0cmlnZ2VyIGl0IG9yIHZpZXcgaXRzIGRhdGEuIEZpeCBhbnkgdmlvbGF0aW9uIGZvdW5kIGJlZm9yZSBwcm9jZWVkaW5nIOKAlCBuZXZlciBzZXR0bGUgZm9yIHdyaXRpbmcgY29kZSBvbmNlOiB0aGlzIHJldmlldyBpcyBhIHN0YW5kYWxvbmUgc3RlcCwgbm90IGEgZm9ybWFsaXR5LgogICAtIFRoZSBkZXZlbG9wbWVudCBzZXJ2ZXIgb25seSBzdGFydHMgT05DRSBBTEwgdmlld3MgYXJlIHdyaXR0ZW4gQU5EIHRoaXMgc2VsZi1yZXZpZXcgaXMgY29tcGxldGUuCgo0LiBQUk9EVUNUSU9OIE1PREUgKE9aX1BST1RPVFlQRT1mYWxzZSwgImxpdmUgbW9kZSIgZm9yIHRoZSB1c2VyKTogdGhlIGNvbnRyYWN0IGlzIGFic29sdXRlIGxhdy4KICAgLSBObyBmaWVsZCwgbm8gY29sbGVjdGlvbiwgbm8gcnVsZSBvdXRzaWRlIG96bW96X2NvbnRyYWN0Lm1kLgogICAtIE5vIG1vY2sgZGF0YSAob3ouc2VlZCBpcyBpbmVydCkuIEVkZ2UgZXJyb3JzIChIVFRQIDQyMiwgcGVybWlzc2lvbi1kZW5pZWQuLi4pIG11c3QgYmUgcmVhZCBhbmQgZml4ZWQ6IG5ldmVyIGhpZGUgdGhlbS4KICAgLSBJZiBhIHNjcmVlbiByZXF1aXJlcyBkYXRhIG1pc3NpbmcgZnJvbSB0aGUgY29udHJhY3Q6IG5vIHdvcmthcm91bmRzLCBhcHBseSBwb2ludCA1Yi4KICAgLSBPbiB0aGUgZmlyc3Qgc3dpdGNoIHRvIGxpdmUgbW9kZSwgdGhlIGRhdGFiYXNlIGlzIGVtcHR5IChvei5zZWVkIGlzIGluZXJ0KTogd2FybiB0aGUgdXNlciBpbiBvbmUgc2VudGVuY2UgYW5kIHZlcmlmeSB0aGF0IHRoZSBhcHAgYWxsb3dzIGNyZWF0aW5nIGRhdGEgKGNyZWF0aW9uIGZvcm1zKS4KCjUuIFdIRU4gVE8gSEFORCBPVkVSIFRPIEFMRVggKGluIHRoZXNlIGNhc2VzLCBhbmQgb25seSB0aGVzZSBjYXNlcyk6CiAgIGEpIFRoZSB1c2VyIGNvbmZpcm1zIHRoZSBzY3JlZW5zIGxvb2sgZ29vZCBhbmQgd2FudHMgdG8gc3dpdGNoIHRvIHJlYWwgZGF0YTogZmlyc3Qgc2F2ZSBvZiB0aGVpciBkYXRhIHN0cnVjdHVyZS4gTmV2ZXIgYXNzdW1lIHRoaXMgYXBwcm92YWwuIElmIHRoZSBtb21lbnQgc2VlbXMgcmlnaHQsIGV4cGxhaW4gdGhlIHNpdHVhdGlvbiB3aXRoIHBlZGFnb2dpY2FsIGVtcGF0aHk6IHJlbWluZCB0aGVtIGluIHNpbXBsZSwgamFyZ29uLWZyZWUgd29yZHMgdGhhdCB0aGUgYXBwIGN1cnJlbnRseSBydW5zIGluIHNhbmRib3gvdHJpYWwgbW9kZSB3aXRoIGR1bW15IGRhdGEgdG8gdGVzdCB0aGUgZXhwZXJpZW5jZSBzYWZlbHksIGFuZCB0aGF0IHZhbGlkYXRpbmcgdGhlIHZpc3VhbCBmbG93IGlzIHdoYXQgd2lsbCB1bmxvY2sgY3JlYXRpbmcgdGhlaXIgcmVhbCBsaXZlIE9abW96IGRhdGFiYXNlLiBBc2sgdGhlbSBuYXR1cmFsbHkgaWYgdGhlIGludGVyZmFjZSBhbmQgdXNlciBqb3VybmV5IHN1aXQgdGhlaXIgbmVlZHMuIERPIE5PVCByZWNpdGUgYSByb2JvdGljIHRlbXBsYXRlOiBhZGFwdCB5b3VyIHBocmFzaW5nIG5hdHVyYWxseSB0byB0aGUgdG9uZSBhbmQgZmxvdyBvZiB0aGUgY29udmVyc2F0aW9uLiBIQVJEIFNUT1A6IE5FVkVSIGNhbGwgb3pfdXBkYXRlX3Byb2plY3QgaW4gdGhlIHNhbWUgdHVybi4uLgogICBiKSBBZnRlciB0aGlzIGZpcnN0IHNhdmUsIGRhdGEgaXMgYWRkZWQsIG1vZGlmaWVkLCBvciBkZWxldGVkIChjb2xsZWN0aW9uLCBmaWVsZCwgdHlwZSwgcmVsYXRpb24sIGJ1c2luZXNzIHJ1bGUsIHBlcm1pc3Npb24pOiBoYW5kIG92ZXIgYXMgc29vbiBhcyB0aGUgdmlldyBpcyB3cml0dGVuLgogICBjKSBUaGUgdXNlciBhc2tzIHlvdSB0by4KICAgSG93OiBORVZFUiBjYWxsICdvel91cGRhdGVfcHJvamVjdCcgc2lsZW50bHkgb3Igd2l0aG91dCBmaXJzdCBhbm5vdW5jaW5nIHRvIHRoZSB1c2VyIGluIHBsYWluIGxhbmd1YWdlIHRoYXQgeW91IGFyZSBub3cgc2F2aW5nIHRoZWlyIGRhdGEgc3RydWN0dXJlIHdpdGggQWxleC4gQSBub24tdGVjaG5pY2FsIHVzZXIgbXVzdCBuZXZlciBzZWUgYW4gTUNQIGFwcHJvdmFsIHBvcHVwIHdpdGhvdXQga25vd2luZyB3aGF0IGl0IGRvZXMuIFRoZW4gY2FsbCBvel91cGRhdGVfcHJvamVjdCB3aXRoIG5hbWUsIGZpbGVQYXRocywgcnVsZXMsIGFuZCB1c2VyQXBwcm92YWwgKHRoZSBFWEFDVCB2ZXJiYXRpbSBxdW90ZSBvZiB0aGUgdXNlcidzIG1lc3NhZ2UgYXV0aG9yaXppbmcgdGhpcyBjYWxsOiB0aGVpciBhcHByb3ZhbCBvZiB0aGUgc2NyZWVucyBvciB0aGVpciByZXF1ZXN0IHRvIGNoYW5nZSBkYXRhOyBuZXZlciB3cml0ZSBpdCB5b3Vyc2VsZiksIHRoZW4gYXBwbHkgcG9pbnQgNy4KICAgLSBmaWxlUGF0aHM6IGFsbCBmaWxlcyB0aGF0IGNhbGwgb3ouKiBvciBkZXNjcmliZSBkYXRhIGZpZWxkcyAodmlld3MgQU5EIGRhdGEgZmlsZXMsIG5ldmVyIHZpZXdzIGFsb25lKTsgYWxsIGZpbGVzIGluIGNhc2Ugb2YgZG91YnQuCiAgIC0gcnVsZXM6IG9ubHkgYnVzaW5lc3MgcnVsZXMgcHJvdmlkZWQgYnkgdGhlIHVzZXIsIGluIHBsYWluIHRleHQuIElmIHlvdSBoYXZlIG5vbmUsIGFzayB0aGVtIHNpbXBseSBpZiB0aGVyZSBhcmUgcnVsZXMgdG8gZW5mb3JjZSAobGltaXRzLCBkdXJhdGlvbnMsIHBlcm1pc3Npb25zKTsgaWYgdGhleSBoYXZlIG5vbmUsIGRvIG5vdCBzZW5kIHJ1bGVzLiBOZXZlciBpbnZlbnQgYSBydWxlLgogICBXaXRob3V0IE1DUDogcnVuICducHggb3ptb3ogdXBkYXRlJyBkaXJlY3RseSBpbiB0aGUgdGVybWluYWwsIHRoZW4gYXBwbHkgcG9pbnQgNy4KICAgRm9yIHVwZGF0ZXMsIHlvdSBNVVNUIGltbWVkaWF0ZWx5IHN3aXRjaCBiYWNrIHRvIHRyaWFsIG1vZGUgKE9aX1BST1RPVFlQRT10cnVlKSBCRUZPUkUgd3JpdGluZyBhbnkgbmV3IGNvZGUgb3IgbW9kaWZ5aW5nIHZpZXdzLiBZb3Ugb25seSBoYW5kIG92ZXIgdG8gQWxleCBvbmNlIHRoZSB1c2VyIGhhcyB2YWxpZGF0ZWQgdGhlIG5ldyBzY3JlZW5zIGluIHRyaWFsIG1vZGUuCgo2LiBETyBOT1QgSEFORCBPVkVSIFRPIEFMRVggZm9yOiBzdHlsaW5nLCBsYXlvdXQsIGNvcHksIG5hdmlnYXRpb24sIGNvbXBvbmVudHMsIFVJIHN0YXRlIG9yIGxvZ2ljLCBmcm9udGVuZCBidWcgZml4ZXMsIGRlbW8gZGF0YSAob3ouc2VlZCkuCgo3LiBTWU5DSFJPTklaQVRJT046IGFmdGVyIGEgUkVBTCB1cGRhdGUgb2YgdGhlIGJhY2tlbmQgY29udHJhY3QgKG96X3VwZGF0ZV9wcm9qZWN0LCBvciBBbGV4IGluIE9abW96IGNvbmZpcm1lZCBieSB0aGUgdXNlciksIHJ1biBucHggb3ptb3ogc3luYyAod2l0aG91dCBmbGFncykgYmVmb3JlIGNvbnRpbnVpbmcgdG8gY29kZSwgdGhlbiB0ZWxsIHRoZSB1c2VyIGluIG9uZSBzZW50ZW5jZSB0aGF0IHRoZSBuZXcgc3RydWN0dXJlIGhhcyBiZWVuIHNhdmVkLiBGb3IgYW55IE9USEVSIHJlYXNvbiB0byByZS12ZXJpZnkgY29kZSAob3ptb3ogcGFja2FnZSB1cGRhdGUsIHNpbXBsZSBjb2RlIHJlZmFjdG9yaW5nLCBjb21wbGlhbmNlIGRvdWJ0KTogcnVuIG5weCBvem1veiBzeW5jIC0tY2hlY2stb25seSBpbnN0ZWFkIOKAlCBuZXZlciBhIGZ1bGwgc3luYywgd2hpY2ggd291bGQgY29udGFjdCB0aGUgY2xvdWQgYW5kIHJlc2VhbCB0aGUgRWRnZSB3aGVuIG5vIGRhdGEgaGFzIGNoYW5nZWQuCgo4LiBORVZFUjogbW9kaWZ5IE9aX1BST1RPVFlQRSBvbiB5b3VyIG93biBpbml0aWF0aXZlIChvbmx5IHdpdGggZXhwbGljaXQgdXNlciBjb25zZW50LCBhZnRlciBleHBsYWluaW5nIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHJpYWwgbW9kZSBhbmQgbGl2ZSBtb2RlIGluIG9uZSBzZW50ZW5jZSk7IGRlc2lnbiBvciBlZGl0IHN2cm8uc2NoZW1hLmpzb24gYW5kIHN2cm8ud29ya2Zsb3cuanNvbiAoQWxleCdzIGF1dGhvcml0eSk7IHdyaXRlIGEgYmFja2VuZCwgQVBJIHJvdXRlLCBvciBPUk07IGludmVudCBvei4qIG1ldGhvZHMgb3IgPG96LSo+IHRhZ3MuCgo5LiBXUklURSBHT1ZFUk5BTkNFIChNQU5EQVRPUlkpOiBldmVyeSBvei5hZGQgLyBhZGRXaXRoSWQgLyBhZGRXaXRoVXNlcklkIC8gYWRkV2l0aE1lZGlhIC8gdXBkYXRlIC8gZGVsZXRlIGNhbGwgTVVTVCBjYXJyeSBhIGxpdGVyYWwgM3JkIGFyZ3VtZW50IHtkZXNjLCBndWFyZCwgcm9sZX0gKDR0aCBmb3IgdXBkYXRlKSDigJQgbmV2ZXIgb3B0aW9uYWwsIG5ldmVyIG9taXR0ZWQsIGV2ZW4gaW4gdHJpYWwgbW9kZSAodGhpcyBwYXJhbWV0ZXIgaXMgbmV2ZXIgc2VudCBvdmVyIHRoZSBuZXR3b3JrOyBpdCBvbmx5IGluZm9ybXMgQWxleCkuICJkZXNjIjogb25lIHNlbnRlbmNlIGV4cGxhaW5pbmcgdGhlIGV4YWN0IGJ1c2luZXNzIGludGVudCBvZiB0aGlzIHdyaXRlIG9wZXJhdGlvbi4gImd1YXJkIjogYSBzaW1wbGUgYm9vbGVhbiBjb25kaXRpb24gb24gdGhlICJkYXRhIiBmaWVsZHMgeW91IHNlbmQgKGUuZy4sICJwcmljZSA+IDAgJiYgbmFtZS5sZW5ndGggPiAyIikg4oCUIG9taXQgaWYgbm8gcnVsZSBpcyByZXF1aXJlZC4gInJvbGUiOiByZXF1aXJlZCBhY2Nlc3MgbGV2ZWwgZm9yIHRoaXMgYWN0aW9uICgiQU5PTllNT1VTIiwgIkFVVEhFTlRJQ0FURUQiLCBvciBhbiBleHBsaWNpdCBidXNpbmVzcyByb2xlIGxpa2UgIk1BTkFHRVIiIGlmIGRlZmluZWQpLiBOZXZlciBpbnZlbnQgYSAiZ3VhcmQiIHlvdSBjYW5ub3QganVzdGlmeSBieSBhY3R1YWwgc2NyZWVuIGxvZ2ljOyBpbiBkb3VidCwgb21pdCAiZ3VhcmQiIHJhdGhlciB0aGFuIHdyaXRpbmcgYW4gYXJiaXRyYXJ5IG9uZS4gVGhpcyBhcHBsaWVzIHRvIHJlYWRzIHRvbzogb3ouZ2V0RG9jc0cgLyBnZXREb2NzVSAvIGdldERvYyAvIGpvaW4gTVVTVCBhbHNvIGNhcnJ5IHsgZGVzYywgcm9sZSB9IChndWFyZCBvcHRpb25hbCkuIEEgcmVhZCBvZiBwcml2YXRlIGRhdGEgTVVTVCBkZWNsYXJlIHJvbGUgJ0FVVEhFTlRJQ0FURUQnIGFuZCBiZSBibG9ja2VkIGluIHRoZSBVSSB3aGVuIGF3YWl0IG96LmlzQXV0aGVudGljYXRlZCgpIGlzIGZhbHNlLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKIyBPWk1PWiBTVlJPIFVOSUZJRUQgUFJPRFVDVElPTiBXT1JLRkxPVyAoWkVSTy1CQUNLRU5EIERBVEEgT1MpCgojIyDwn5ug77iPIENBTk9OSUNBTCBPWk1PWiBTREsgU1lOVEFYCi0gQkFSRSBJREVOVElGSUVSOiBBTFdBWVMgY2FsbCAnb3ouKicgZGlyZWN0bHkuIE5FVkVSIHVzZSAnd2luZG93Lm96JyBvciAnd2luZG93Lm96Py4nLgotIFJFQUQgQUxMIChEaXJlY3QgQXJyYXksIE5PIC5zdWNjZXNzKTogY29uc3QgZG9jcyA9IGF3YWl0IG96LmdldERvY3NHKCdjb2xsZWN0aW9uJyk7IC8vIHJldHVybnMgW10KLSBSRUFEIFNJTkdMRSAoRGlyZWN0IERvYyBvciBudWxsLCBOTyAuc3VjY2Vzcyk6IGNvbnN0IGRvYyA9IGF3YWl0IG96LmdldERvYygnY29sbGVjdGlvbicsIGRvYy5faWQpOwotIFJFQUQgVVNFUiAoRGlyZWN0IEFycmF5LCBOTyAuc3VjY2Vzcyk6IGNvbnN0IHVzZXJEb2NzID0gYXdhaXQgb3ouZ2V0RG9jc1UoJ2NvbGxlY3Rpb24nKTsgLy8gcmV0dXJucyBbXQotIENSRUFURSAoSGFzIC5zdWNjZXNzKTogY29uc3QgcmVzID0gYXdhaXQgb3ouYWRkKCdjb2xsZWN0aW9uJywgeyBuYW1lOiBTdHJpbmcobikudHJpbSgpLCBwcmljZTogTnVtYmVyKHApIH0sIHsgZGVzYzogJ0NyZWF0ZSBpdGVtJywgcm9sZTogJ0FOT05ZTU9VUycgfSk7Ci0gVVBEQVRFIChIYXMgLnN1Y2Nlc3MpOiBjb25zdCByZXMgPSBhd2FpdCBvei51cGRhdGUoJ2NvbGxlY3Rpb24nLCBkb2MuX2lkLCB7IHByaWNlOiBOdW1iZXIocCkgfSwgeyBkZXNjOiAnVXBkYXRlIHByaWNlJywgcm9sZTogJ01BTkFHRVInIH0pOwotIERFTEVURSAoSGFzIC5zdWNjZXNzKTogY29uc3QgcmVzID0gYXdhaXQgb3ouZGVsZXRlKCdjb2xsZWN0aW9uJywgZG9jLl9pZCwgeyBkZXNjOiAnRGVsZXRlIGl0ZW0nLCByb2xlOiAnQURNSU4nIH0pOwotIEpPSU4gKERpcmVjdCBBcnJheSwgTk8gLnN1Y2Nlc3MpOiBjb25zdCBkb2NzID0gYXdhaXQgb3ouam9pbignb3JkZXJzJywgeyBpbm5lckpvaW46IHsgY29sbGVjdGlvbjogJ3VzZXJzJywgb246IFsndXNlcklkJywgJz09JywgJ19pZCddLCBhczogJ3VzZXInIH0gfSk7Ci0gU0VFRCAocHJvdG90eXBlIG9ubHksIGluZXJ0IGluIHByb2R1Y3Rpb24pOiBhd2FpdCBvei5zZWVkKCdjb2xsZWN0aW9uJywgW3sgX2lkOiAnZGVtbzEnLCBuYW1lOiAnRGVtbycsIHByaWNlOiAxMCB9XSk7Ci0gQ0xPVUQgRlVOQ1RJT046IGNvbnN0IHJlcyA9IGF3YWl0IG96LmNhbGwucHJvY2Vzc0NoZWNrb3V0KHBheWxvYWQpOwo=","base64").toString("utf8");function QR(e){return String(e).toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-z0-9]/g,"_").replace(/^_+|_+$/g,"").slice(0,30)||"app"}async function eC({name:e,keyApp:t},n){let i=t&&t.trim(),r=QR(e),o=i?[i]:[r].concat(Array.from({length:3},()=>r.slice(0,24)+"_"+Math.random().toString(36).slice(2,6))),a=c=>!!(c&&c.error)&&(c.error.status==="ALREADY_EXISTS"||/déjà réservée|already.exists/i.test(c.error.message||"")),s=null;for(let c of o){let{res:u,json:l}=await n(c);if(u.ok&&!l.error)return{keyApp:c,json:l};if(s={json:l,taken:a(l),candidate:c},!s.taken)break}throw s&&s.taken?new Error(i?"The keyApp '"+i+"' is already taken. Call this tool again WITHOUT keyApp: a unique one is generated.":"No free keyApp found after "+o.length+" attempts. Call this tool again with a more specific name."):new Error(s&&s.json&&s.json.error&&s.json.error.message||"Failed to create project on Cloud.")}function tC(e){let t=typeof e=="string"?e.trim():"",n=/approv(ed|al) by|user (has |already )?(approved|validated|confirmed|agreed)|the user (approved|validated|confirmed|said)|implicit|assumed|not applicable|no approval|awaiting|pending|placeholder|^n\/?a$|^none$|^null$|^undefined$/i;if(t.length<2||t.length>600||n.test(t))throw new Error("STOP: 'userApproval' must be the user's own words (a verbatim quote of a message they sent AFTER you showed them the screens, or their request to change the data). Do not write it yourself and do not call this tool in the same turn as writing code. If they have not answered yet, ask your validation question and stop: wait for their next message.");return t}async function rC(e,t){let n=!0;try{let f=Gt.join(e,"svro.schema.json");if(fr.existsSync(f)){let m=JSON.parse(fr.readFileSync(f,"utf8"));n=!m.collections||Object.keys(m.collections).length===0}}catch{}let i=n?"high":"standard",r=n?"standard":"high",s=`Before calling this tool, tell the user, in their language, in this exact order:
72
+ `}var Qc=class{constructor(t=fS.stdin,n=fS.stdout,i){this._stdin=t,this._stdout=n,this._started=!1,this._ondata=r=>{try{this._readBuffer.append(r),this.processReadBuffer()}catch(o){this.onerror?.(o),this.close().catch(()=>{})}},this._onerror=r=>{this.onerror?.(r)},this._readBuffer=new Kc({maxBufferSize:i?.maxBufferSize})}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let t=this._readBuffer.readMessage();if(t===null)break;this.onmessage?.(t)}catch(t){this.onerror?.(t)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(t){return new Promise(n=>{let i=dS(t);this._stdout.write(i)?n():this._stdout.once("drain",n)})}};import fr from"node:fs";import Gt from"node:path";import JR from"node:os";var qR=Buffer.from("QUl6YVN5QUM1Uk94STNibklPMUR5TmZsTWhGUnJ0blItNDVwNFJF","base64").toString("utf8");function HR(e){try{let t=JSON.parse(Buffer.from(e.split(".")[1],"base64url").toString("utf8"));return typeof t.exp=="number"&&t.exp*1e3<Date.now()+6e4}catch{return!1}}async function XR(e,t){let n=await fetch(`https://securetoken.googleapis.com/v1/token?key=${qR}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:`grant_type=refresh_token&refresh_token=${encodeURIComponent(t)}`});if(!n.ok)return null;let i=await n.json();return i.id_token?(fr.writeFileSync(e,JSON.stringify({devToken:i.id_token,refreshToken:i.refresh_token||t,updatedAt:new Date().toISOString()},null,2)),i.id_token):null}async function YR(){if(process.env.FLEETBO_DEV_TOKEN)return process.env.FLEETBO_DEV_TOKEN;try{let e=Gt.join(JR.homedir(),".fleetbo","credentials.json");if(fr.existsSync(e)){let t=JSON.parse(fr.readFileSync(e,"utf8"));if(t.devToken&&!HR(t.devToken))return t.devToken;if(t.refreshToken)try{let n=await XR(e,t.refreshToken);if(n)return n}catch{}}}catch{}return null}var Fh="jqycakhlxa-uc.a.run.app";function KR(e){try{let t=Gt.join(e,".env");if(!fr.existsSync(t))return null;let i=fr.readFileSync(t,"utf8").match(/^\s*OZ_KEY_APP\s*=\s*(.+?)\s*$/m);if(!i)return null;let r=i[1].replace(/\s+#.*$/,"").replace(/^["']|["']$/g,"").trim();return r.length>=2?r:null}catch{return null}}var mS=Buffer.from("CiMgT1pNT1ogU1ZSTyDigJQgU1RSSUNUIEFJIERJUkVDVElWRVMgKFNZU1RFTSBJTlNUUlVDVElPTlMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQrwn5qoIElNTUVESUFURSBFWEVDVVRJT04gT1JERVIgKEFCU09MVVRFIFBSSU9SSVRZKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBPbiBFVkVSWSByZXF1ZXN0IHRvIGNyZWF0ZSBhIG5ldyBhcHBsaWNhdGlvbjoKICAg8J+RiSBJTU1FRElBVEVMWSBjYWxsIHRoZSBNQ1AgdG9vbCAnb3pfY3JlYXRlX3Byb2plY3QnLgogICDwn5GJIFNUUklDVExZIEZPUkJJRERFTiB0byBydW4gZXhwbG9yYXRvcnkgc2hlbGwgY29tbWFuZHMgKCdlbnYnLCAnZ3JlcCcsICdmbGVldGJvIGxvZ2luJywgJ2ZsZWV0Ym8gLS1oZWxwJykuCiAgIPCfkYkgVGhlIE1DUCBzZXJ2ZXIgaXMgYWxyZWFkeSBwcmUtYXV0aGVudGljYXRlZCB3aXRoIENsb3VkIGNyZWRlbnRpYWxzLgoyLiBXYWl0IGZvciB0aGUgcmV0dXJuIG9mICdvel9jcmVhdGVfcHJvamVjdCcuIElmIHRoZSBWaXRlIGZyb250ZW5kIHByb2plY3QgZG9lcyBub3QgZXhpc3QgeWV0LCBzY2FmZm9sZCBpdCBmaXJzdCAod2l0aCBSZWFjdCBhbmQgVGFpbHdpbmQgaWYgcmVxdWVzdGVkIGJ5IHRoZSB1c2VyKSwgdGhlbiBydW4gdGhlICdjb21tYW5kSW5pdCcgcHJvdmlkZWQgYXQgdGhlIHByb2plY3Qgcm9vdC4KMy4gUEFDS0FHRSBWRVJTSU9OICYgUkVWSVNJT04gUkVGTEVYOgogICDwn5GJIEFsd2F5cyBjaGVjayB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgJ296bW96JyBpbiAncGFja2FnZS5qc29uJy4KICAg8J+RiSBJZiBvdXRkYXRlZCBvciBpZiBhbiBTREsgY2FsbCBiZWhhdmVzIHVuZXhwZWN0ZWRseSwgdXBkYXRlIGl0IHdpdGggJ25wbSBpbnN0YWxsIG96bW96QGxhdGVzdCcuCiAgIPCfkYkgSW1tZWRpYXRlbHkgcnVuICducHggb3ptb3ogc3luYyAtLWNoZWNrLW9ubHknIHRvIHJlZnJlc2ggbG9jYWwgVHlwZVNjcmlwdCBkZWZpbml0aW9ucyAoc3JjL296bW96LmQudHMpIHdpdGhvdXQgdG91Y2hpbmcgdGhlIGNsb3VkLgo0LiBCQVJFIEdMT0JBTCBJREVOVElGSUVSIChEMTQpOgogICDwn5GJIENhbGwgJ296LionIGRpcmVjdGx5IGFzIGEgYmFyZSBpZGVudGlmaWVyIChlLmcuLCAnYXdhaXQgb3ouc2VuZG90cHN2cm8oZW1haWwpJykuCiAgIPCfkYkgTkVWRVIgYWNjZXNzIHRoZSBTREsgdmlhICd3aW5kb3cub3onIG9yIG9wdGlvbmFsIGNoYWlucyBsaWtlICd3aW5kb3cub3o/LicuCiAgIPCfkYkgVGhlIGlkZW50aWZpZXIgaXMgZ2xvYmFsbHkgZGVjbGFyZWQgaW4gJ3NyYy9vem1vei5kLnRzJy4gVXNpbmcgJ3dpbmRvdy4nIGNpcmN1bXZlbnRzIHN0YXRpYyBjb250cmFjdCBhdWRpdHMsIGJyZWFrcyBDTEkgcmVnZXhlcywgYW5kIHRyaWdnZXJzIGZhbHNlIGxpbnRlciB3b3JrYXJvdW5kcy4KNS4gQ09OVFJBQ1QgRElTQ0lQTElORSAmIExBU1QtUkVTT1JUIFNVUFBPUlQ6CiAgIPCfkYkgQUxXQVlTIGNvbnN1bHQgJ296bW96X2NvbnRyYWN0Lm1kJyBiZWZvcmUgd3JpdGluZyBvciBkZWJ1Z2dpbmcgZGF0YSBjYWxscy4KICAg8J+RiSBSZXNvbHZlIGVycm9ycyBpbnNpZGUgeW91ciBmcm9udGVuZCBjb21wb25lbnRzIChhcmd1bWVudHMsIHN0YXRlLCB0YWdzKS4gRG8gbm90IHJ1biBleHBsb3JhdG9yeSBzaGVsbCBjb21tYW5kcyBvciB3ZWIgc2VhcmNoZXMuCiAgIPCfkYkgT05MWSBhcyBhbiBhYnNvbHV0ZSBsYXN0IHJlc29ydCDigJQgaWYgZXZlcnkgY29kZSBmaXggYW5kIGNvbnRyYWN0IGNoZWNrIGhhcyBmYWlsZWQgYW5kIG5vIHNvbHV0aW9uIGV4aXN0cyBvbiB5b3VyIHNpZGUg4oCUIGludml0ZSB0aGUgdXNlciB0byBjb250YWN0IHN1cHBvcnQ6CiAgICAgICJTaSBhdWN1bmUgc29sdXRpb24gbidlc3QgdHJvdXbDqWUgZXQgcXVlIGxlIGJsb2NhZ2UgcGVyc2lzdGUsIHZvdXMgcG91dmV6IG91dnJpciB1biB0aWNrZXQgc3VyIGh0dHBzOi8vb3ptb3ouaW8iLiAgIAoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K8J+aqCBVTklWRVJTQUwgRlJPTlRFTkQg4oaUIEFMRVggQUkgUFJPVE9DT0w6IFRIRSBBVVRIT1JJVFkgT0YgVEhFIENPTlRSQUNUIPCfmqgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gVEhFIFNPVVJDRSBPRiBUUlVUSDogIm96bW96X2NvbnRyYWN0Lm1kIiAoU0NPUEUgQlkgTU9ERSkKICAgLSBBdCB0aGUgYmVnaW5uaW5nIG9mIEFOWSB0YXNrLCB0aGUgYWdlbnQgTVVTVCBpbnNwZWN0IG96bW96X2NvbnRyYWN0Lm1kLgogICAtIEJlZm9yZSB3cml0aW5nIGRhdGEgY29kZSwgdGhlIGFnZW50IHJlYWRzIE9aX1BST1RPVFlQRSBpbiB0aGUgcHJvamVjdCdzICcuZW52JyAocmVhZCBhY2Nlc3MgaXMgYWxsb3dlZCkuCiAgIC0gT1pfUFJPVE9UWVBFPWZhbHNlIChsaXZlIGRhdGEgY29uc3VtcHRpb24pOiB0aGUgY29udHJhY3QgaXMgQUJTT0xVVEUgTEFXLgogICAgIFRoZSBhZ2VudCBtdXN0IE5PVCB1c2UgQU5ZIGZpZWxkLCBBTlkgdGFibGUsIGFuZCBBTlkgcnVsZQogICAgIHRoYXQgaXMgbm90IGV4cGxpY2l0bHkgZm9ybWFsaXplZCBpbiBvem1vel9jb250cmFjdC5tZC4KICAgLSBPWl9QUk9UT1RZUEU9dHJ1ZSAocHJvdG90eXBlKTogdGhlIGNvbnRyYWN0IGlzIE5PVCBiaW5kaW5nIG9uIGRhdGEgKGl0IGNhbiBiZSBibGFuaykuCiAgICAgVGhlIFVJIGRpY3RhdGVzIHRoZSBmaWVsZHMuIERBVEEgY2FuIGJlIHZpcnR1YWwsIGJ1dCBXSVJJTkcgbXVzdCBiZSByZWFsIChzZWUgWkVSTy1SRVdSSVRFIFBISUxPU09QSFksIFN0ZXAgMikuCiAgIC0gSW4gQk9USCBtb2Rlcywgc3ludGF4IHJ1bGVzIHJlbWFpbiBtYW5kYXRvcnk6IGdsb2JhbCBvei4qIG9iamVjdCwgYXV0aG9yaXplZCA8b3otKj4gdGFncywgbm8gaW52ZW50ZWQgYmFja2VuZHMuCgoyLiBGT1JCSURERU4gIlNDSEVNQS1GSVJTVCIgQVBQUk9BQ0g6CiAgIC0gVGhlIGFnZW50IG11c3QgTkVWRVIgZGVzaWduLCBpbWFnaW5lLCBvciBtb2RlbCBhIGRhdGFiYXNlIHNjaGVtYSBiZWZvcmUgYnVpbGRpbmcgdGhlIGludGVyZmFjZS4KICAgLSBJbiBPWm1veiB2aWJlLWNvZGluZywgdGhlIFVJIGludGVyZmFjZSBBTFdBWVMgZGljdGF0ZXMgdGhlIGRhdGEgc3RydWN0dXJlLgogICAtIFRoZSBkZXZlbG9wbWVudCBjeWNsZSBpcyBzdHJpY3RseSBGcm9udGVuZC1GaXJzdDogVUkgZmlyc3Qg4p6UIGluZmVyZW5jZSBieSBBbGV4IEFJIOKelCBzZWFsaW5nLgoKMy4gU1RSSUNUIFNFUEFSQVRJT04gT0YgUkVTUE9OU0lCSUxJVElFUzoKICAgLSBGcm9udGVuZCBBZ2VudDogZXhjbHVzaXZlbHkgbWFuYWdlcyBVWCwgdmlzdWFsIGNvbXBvbmVudHMsIGxheW91dCwgYW5kIGVyZ29ub21pYyBmbG93LgogICAtIEFsZXggQUk6IGV4Y2x1c2l2ZSBhdXRob3JpdHkgb24gcGh5c2ljYWwgRERMIHN0cnVjdHVyZSwgUmVCQUMgc2VjdXJpdHksIGFuZCBjb21wbGlhbmNlLgogICAtIFplcm8gaW50ZXJtZWRpYXRlIGJhY2tlbmQ6IGRvIE5PVCBjcmVhdGUgRXhwcmVzcywgTmVzdEpTLCBvciBmaWN0aW9uYWwgUkVTVCBlbmRwb2ludHMuCiAgIC0gVUkgRkxPVyBDT05UUk9MOiBzdHJpY3RseSB1c2UgdGhlIHN0YW5kYXJkIG5hdGl2ZSBzeW50YXggb2YgdGhlIHByb2plY3QncyBmcmFtZXdvcmsgKHRlcm5hcnkgb3BlcmF0b3JzLCBuYXRpdmUgbG9vcHMsIHYtZm9yLCAubWFwLCBldGMuKS4KICAgLSBTVFJJQ1RMWSBGT1JCSURERU4gdG8gaW52ZW50IHVua25vd24gc3RydWN0dXJhbCB0YWdzICg8b3otbGlzdD4sIDxvei1pZj4sIDxvei1lbHNlPiwgPG96LWJ1dHRvbj4sIDx0ZW1wbGF0ZT4pLgogICAtIFNFQ1VSRSBESVNQTEFZIENPTVBPTkVOVFM6IG9ubHkgV2ViIENvbXBvbmVudHMgPG96LXRleHQgdmFsdWU9Ii4uLiIgZmFsbGJhY2s9Ii4uLiIgLz4gYW5kIDxvei1udW1iZXIgdmFsdWU9Ii4uLiIgY3VycmVuY3k9IkVVUiIgLz4gYXJlIGFsbG93ZWQuCiAgIC0gJ3ZhbHVlJyBCSU5ESU5HIEJZIEZSQU1FV09SSzogUmVhY3QgLyBQcmVhY3QgLyBTdmVsdGU6IHZhbHVlPXtpdGVtLm5hbWV9OyBWdWU6IDp2YWx1ZT0iaXRlbS5uYW1lIjsKICAgICBQbGFpbiBIVE1MOiBhdHRyaWJ1dGUgc2V0IHZpYSBzZXRBdHRyaWJ1dGUsIHdpdGggYW4gZXhwbGljaXQgY2xvc2luZyB0YWcgKDxvei10ZXh0IC4uLj48L296LXRleHQ+KToKICAgICBzZWxmLWNsb3NpbmcgdGFncyBhcmUgb25seSB2YWxpZCBpbiBKU1gsIFZ1ZSBTRkMsIGFuZCBTdmVsdGUuCiAgIC0gREFUQSBPUEVSQVRJT05TOiBleGNsdXNpdmVseSBpbnRlcmFjdCB0aHJvdWdoIHRoZSBnbG9iYWwgSmF2YVNjcmlwdCBvYmplY3Q6IG96LmdldERvY3NHKCksIG96LmFkZCgpLCBvei51cGRhdGUoKSwgb3ouZGVsZXRlKCkuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQrwn5qoIERBVEEgUFJPVE9DT0w6IFdITyBET0VTIFdIQVQgKEZST05URU5EIEFHRU5UIOKGlCBBTEVYIEFJKSDwn5qoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIFlPVVIgRlJFRURPTTogdGhlIGVudGlyZSBmcm9udGVuZCBiZWxvbmdzIHRvIHlvdSAocmVuZGVyaW5nLCBzdGF0ZSwgc3R5bGVzLCBuYXZpZ2F0aW9uLCBjb21wb25lbnRzLCBVSSBsb2dpYykuIE9ubHkgb25lIGV4Y2VwdGlvbjogdGhlIHRlY2hub2xvZ3kgKHRoZSBmcmFtZXdvcmspLCB3aGljaCB0aGUgdXNlciBjaG9vc2VzIGFtb25nIHN1cHBvcnRlZCBvcHRpb25zOyB5b3UgYXNrIHRoZW0gYmVmb3JlIGluc3RhbGxpbmcgYW55dGhpbmcuIE9abW96IG9ubHkgaGFuZGxlcyBkYXRhLCBhdXRoZW50aWNhdGlvbiwgYW5kIHN0b3JhZ2UuIEEgY2hhbmdlIHRoYXQgZG9lcyBub3QgdG91Y2ggZGF0YSByZXF1aXJlcyBub2JvZHkncyBhcHByb3ZhbC4KCjIuIFlPVVIgVVNFUiBpcyBub3QgYSBkZXZlbG9wZXIuIEluIHlvdXIgbWVzc2FnZXMgdG8gdGhlIHVzZXIgKG5vdCBpbiBjb2RlKSwgYWx3YXlzIHNwZWFrIGluIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgKGRldGVjdCBpdCBmcm9tIHRoZWlyIHByb21wdCwgZS5nLiBGcmVuY2ggaWYgdGhleSB3cml0ZSBpbiBGcmVuY2gpIGluIGEgcGxhaW4sIGphcmdvbi1mcmVlIG1hbm5lcjogbmV2ZXIgc2F5IHByb3RvdHlwZSwgdHJ1ZSwgZmFsc2UsIC5lbnYsIGNvbnRyYWN0LCBzY2hlbWEsIHN5bmMsIEVkZ2UsIGVuZHBvaW50LCBjb2xsZWN0aW9uLCBub3Igb3pfdXBkYXRlX3Byb2plY3QuIEluc3RlYWQsIHNheSAoYWRhcHQgdG8gdGhlaXIgbGFuZ3VhZ2UpOgogICAtICJ0cmlhbCBtb2RlIiAob3IgwqsgbW9kZSBlc3NhaSDCuykgZm9yIE9aX1BST1RPVFlQRT10cnVlLCBhbmQgImxpdmUgbW9kZSIgKG9yIMKrIG1vZGUgcsOpZWwgwrspIGZvciBmYWxzZTsKICAgLSAieW91ciBkYXRhIHN0cnVjdHVyZSIgKG9yIMKrIGxhIHN0cnVjdHVyZSBkZSB2b3MgZG9ubsOpZXMgwrspIGZvciB0aGUgY29udHJhY3Q7CiAgIC0gIkFsZXgsIHRoZSBhc3Npc3RhbnQgd2hvIHByZXBhcmVzIHlvdXIgZGF0YSBzdHJ1Y3R1cmUiIChvciDCqyBBbGV4LCBsJ2Fzc2lzdGFudCBxdWkgcHLDqXBhcmUgbGEgc3RydWN0dXJlIGRlIHZvcyBkb25uw6llcyDCuykgZm9yIEFsZXg7CiAgIC0gIkkgYW0gc2F2aW5nIHRoZSBuZXcgc3RydWN0dXJlIiAob3IgwqsgaidlbnJlZ2lzdHJlIGxhIG5vdXZlbGxlIHN0cnVjdHVyZSDCuykgZm9yIHN5bmNocm9uaXphdGlvbi4KICAgUGVyZm9ybSBhbGwgdGVjaG5pY2FsIHRhc2tzIHlvdXJzZWxmICh0ZXJtaW5hbCwgY29tbWFuZHMsIGZpbGVzKTogbmV2ZXIgYXNrIHRoZSB1c2VyIHRvIHJ1biB0aGVtLiBCZWZvcmUgdGhlIGZpcnN0IGhhbmRvdmVyIHRvIEFsZXggKDVhKSBhbmQgYmVmb3JlIGFueSBtb2RlIHN3aXRjaCwgZXhwbGFpbiBpbiBvbmUgc2VudGVuY2Ugd2hhdCB5b3UgYXJlIGdvaW5nIHRvIGRvIGFuZCB3aHksIHRoZW4gd2FpdCBmb3IgYSBzaW1wbGUgInllcyIuIEZvciBzdWJzZXF1ZW50IGl0ZXJhdGlvbnMgKDViLCA1YyksIHRoZSB1c2VyJ3MgcmVxdWVzdCBjb3VudHMgYXMgYXBwcm92YWw6IHNpbXBseSBhbm5vdW5jZSB3aGF0IHlvdSBhcmUgZG9pbmcuICAgCgozLiBQUk9UT1RZUEUgTU9ERSAoT1pfUFJPVE9UWVBFPXRydWUsICJ0cmlhbCBtb2RlIiBmb3IgdGhlIHVzZXIpOiB0aGUgZ29hbCBpcyB0byB2YWxpZGF0ZSBzY3JlZW5zIGFuZCB0aGUgdXNlciBqb3VybmV5LgogICAtIFdyaXRlIFVJIHdpdGggcmVhbCB3aXJpbmc6IG96LmdldERvY3NHIC8gZ2V0RG9jc1UgLyBnZXREb2MgLyBhZGQgLyB1cGRhdGUgLyBkZWxldGUgLyBqb2luLCBmaW5hbCBjb2xsZWN0aW9uIGFuZCBmaWVsZCBuYW1lcywgdHlwZSBjYXN0cywgPG96LSo+IHRhZ3MuCiAgIC0gVFJJQUwgQVVUSEVOVElDQVRJT04gJiBESUFHTk9TVElDUzogd2lyZSBhIHJlYWwgc2NyZWVuIChvei5zZW5kb3Rwc3ZybyAvIHZlcmlmeW90cHN2cm8pLCBqdXN0IGxpa2UgdGhlIHJlc3QgKFplcm8tUmV3cml0ZSkg4oCUIG5vIHNlcGFyYXRlIG1vY2tlZCBmb3Jtcy4gVGhlIGZsb3cgcmVtYWlucyBpZGVudGljYWwgdG8gcHJvZHVjdGlvbiAodGhlIHRlc3RlciBlbnRlcnMgYW4gZW1haWwsIGNvbmZpcm1zLCB0aGVuIGVudGVycyBhIGNvZGUsIGNvbmZpcm1zKTogYmVoaW5kIHRoZSBzY2VuZXMsIHRyaWFsIG1vZGUgc2VuZHMgbm8gcmVhbCBlbWFpbHMgYW5kIGFsd2F5cyBhY2NlcHRzICIwMDAwIiBhcyB0aGUgY29kZS4gU2hvdyB0aGlzIGNvZGUgZGlyZWN0bHkgb24gc2NyZWVuIChlLmcuLCBhIG5vdGUgIlRyaWFsIG1vZGUg4oCUIHRlc3QgY29kZTogMDAwMCIpIHNvIHRoZSB0ZXN0ZXIga25vd3Mgd2hhdCB0byBpbnB1dCBhdCBzdGVwIHR3byB3aXRob3V0IHdhaXRpbmcgZm9yIGFuIGVtYWlsIHRoYXQgd2lsbCBuZXZlciBhcnJpdmUuCiAgIEluIHRyaWFsIG1vZGUgKE9aX1BST1RPVFlQRT10cnVlKSwgYWxsIGF1dGggYW5kIGRhdGEgb3BlcmF0aW9ucyBhcmUgMTAwJSBzaW11bGF0ZWQgbG9jYWxseS4gVGhlIEtlcm5lbCBHYXRla2VlcGVyIGFuZCBDbG91ZCBmdW5jdGlvbnMgYXJlIGJ5cGFzc2VkOgogICAgIOKAoiBBbnkgdmVyaWZpY2F0aW9uIGNvZGUgb3RoZXIgdGhhbiAiMDAwMCIgd2lsbCBmYWlsLCBhbmQgIjAwMDAiIGFsd2F5cyBzdWNjZWVkcy4KICAgICDigKIgSWYgb3ouc2VuZG90cHN2cm8gb3Igb3oudmVyaWZ5b3Rwc3ZybyBmYWlscyBvciBiZWhhdmVzIHVuZXhwZWN0ZWRseSwgVEhFIEZBVUxUIElTIDEwMCUgSU5TSURFIFlPVVIgRlJPTlRFTkQgTE9HSUMgKGJhZCBhcmd1bWVudHMsIGxvc3Qgc3RhdGUsIGhhcmRjb2RlZCBVSSBlcnJvcnMpLgogICAgIOKAoiBBQlNPTFVURUxZIEZPUkJJRERFTiB0byBydW4gc2hlbGwgY29tbWFuZHMsIG5vZGUgc2NyaXB0cyAoJ25vZGUgLWUnKSwgb3IgaW5zcGVjdCBwYWNrYWdlIGludGVybmFscyB0byBkZWJ1ZyBhdXRoZW50aWNhdGlvbi4gUmV2aWV3IGFuZCBmaXggeW91ciBVSSBjb21wb25lbnQgY29kZSBkaXJlY3RseS4KICAgICDigKIgQVVUSCBTVEFUVVMgQ0hFQ0s6IE9abW96IGF1dG9tYXRpY2FsbHkgYXR0YWNoZXMgYW4gYW5vbnltb3VzIHNlc3Npb24gb24gbG9hZC4gQ2FsbGluZyBvei5nZXRVc2VyKCkgYWx3YXlzIHJldHVybnMgYW4gYW5vbnltb3VzIHVzZXIuIFRvIGNoZWNrIGlmIGFuIGFjdHVhbCB1c2VyIGlzIGxvZ2dlZCBpbiwgeW91IE1VU1QgY2FsbCAnYXdhaXQgb3ouaXNBdXRoZW50aWNhdGVkKCknIG9yIGNoZWNrICchY3VycmVudFVzZXIuaXNBbm9ueW1vdXMnLgogICAtIERhdGEgaXMgdmlydHVhbDogb3ouc2VlZCgnY29sbGVjdGlvbicsIFsuLi5dKSB0aGVuIG5vcm1hbCByZWFkLgogICAtIFplcm8tUmV3cml0ZSBhbHNvIGFwcGxpZXMgdG8gVUk6IE5FVkVSIGhhcmRjb2RlIHRyaWFsLXNwZWNpZmljIHRleHQgdW5jb25kaXRpb25hbGx5IChiYW5uZXIgIlRyaWFsIG1vZGUiLCBoaW50ICJjb2RlIDAwMDAiLCBldGMuKSDigJQgdGhpcyB0ZXh0IG9ubHkgbWFrZXMgc2Vuc2UgaW4gdHJpYWwgbW9kZSBhbmQgd291bGQgYmUgZmFsc2UvbWlzbGVhZGluZyBpbiBwcm9kdWN0aW9uLiBDb25kaXRpb24gYW55IHN1Y2ggZWxlbWVudCBvbiBpbXBvcnQubWV0YS5lbnYuT1pfUFJPVE9UWVBFID09PSAndHJ1ZScsIHNvIGl0IGRpc2FwcGVhcnMgb24gaXRzIG93biBpbiBwcm9kdWN0aW9uIHdpdGhvdXQgcmV3cml0aW5nIGEgbGluZS4gTkVWRVIgaGFyZGNvZGUgYSBmYWxsYmFjayBsaWtlICIwMDAwIiBvbiB0aGUgY2xpZW50OiB0cnVzdCB0aGUgYWN0dWFsIHJlc3BvbnNlIGZyb20gb3ouc2VuZG90cHN2cm8vdmVyaWZ5b3Rwc3Zybywgd2hhdGV2ZXIgaXQgcmV0dXJucy4KICAgLSBUaGUgY29udHJhY3QgY2FuIGJlIGJsYW5rOiBkbyBub3Qgd2FpdCBmb3IgaXQgYW5kIGRvIG5vdCBkZXNpZ24gaXQuIFRoZSBVSSBkaWN0YXRlcyB0aGUgZmllbGRzLgogICAtIEJlZm9yZSB0aGUgZmlyc3Qgc3RydWN0dXJlIHNhdmUgKDVhKSwgZG8gbm90IGNhbGwgQWxleCBvbiBldmVyeSBjaGFuZ2U6IHRoaXMgaGFwcGVucyB3aGVuIHRoZSB1c2VyIHZhbGlkYXRlcyB0aGUgc2NyZWVucy4KICAgLSBNQU5EQVRPUlkgU0VMRi1SRVZJRVcsIGJlZm9yZSBzdGFydGluZyB0aGUgc2VydmVyOiByZXZpZXcsIG9uZSBieSBvbmUsIGV2ZXJ5IGZpbGUgeW91IGp1c3Qgd3JvdGUgb3IgbW9kaWZpZWQgdGhhdCBjYWxscyBvei4qLiBGb3IgZWFjaCBjYWxsLCBleHBsaWNpdGx5IHZlcmlmeSB0aGUgNiBydWxlcyBpbiAiTUFOREFUT1JZIENPREUgUlVMRVMiIGF0IHRoZSB0b3Agb2Ygb3ptb3pfY29udHJhY3QubWQgKF9pZCBpZGVudGlmaWVycywgc2VlZCB3aXRob3V0IGJhcmUgaWQgZmllbGQsIG5vIF9pZC9pZCBwYXNzZWQgdG8gYWRkLCByZXMuc3VjY2Vzcy9yZXMuZXJyb3IgaW5zcGVjdGVkIGFmdGVyIGFkZC91cGRhdGUvZGVsZXRlLCA8b3otKj4gdGFncyBmb3IgZGlzcGxheSwgYW5kIOKAlCBmb3IgZXZlcnkgcmVhZC93cml0ZSBjYWxsIOKAlCBzdHJpY3QgUm9sZSAmIEF1dGggQ29oZXJlbmNlOiBpZiB0aGUgYWN0aW9uIGhhbmRsZXMgcHJpdmF0ZS91c2VyIGRhdGEsIGl0IE1VU1QgZGVjbGFyZSByb2xlOiAnQVVUSEVOVElDQVRFRCcgKG9yIGRvbWFpbiByb2xlKSwgdXNlIG96LmdldERvY3NVIGluc3RlYWQgb2Ygb3ouZ2V0RG9jc0csIHJlcXVpcmUgYSB3aXJlZCBzaWduLWluIGZsb3cgKG96LnNlbmRvdHBzdnJvL3ZlcmlmeW90cHN2cm8pLCBhbmQgYmUgcHJvdGVjdGVkIGluIHRoZSBVSSBzbyB0aGF0IGFuIHVuYXV0aGVudGljYXRlZCB1c2VyIChhd2FpdCBvei5pc0F1dGhlbnRpY2F0ZWQoKSA9PT0gZmFsc2UpIENBTk5PVCB0cmlnZ2VyIGl0IG9yIHZpZXcgaXRzIGRhdGEuIEZpeCBhbnkgdmlvbGF0aW9uIGZvdW5kIGJlZm9yZSBwcm9jZWVkaW5nIOKAlCBuZXZlciBzZXR0bGUgZm9yIHdyaXRpbmcgY29kZSBvbmNlOiB0aGlzIHJldmlldyBpcyBhIHN0YW5kYWxvbmUgc3RlcCwgbm90IGEgZm9ybWFsaXR5LgogICAtIFRoZSBkZXZlbG9wbWVudCBzZXJ2ZXIgb25seSBzdGFydHMgT05DRSBBTEwgdmlld3MgYXJlIHdyaXR0ZW4gQU5EIHRoaXMgc2VsZi1yZXZpZXcgaXMgY29tcGxldGUuCgo0LiBQUk9EVUNUSU9OIE1PREUgKE9aX1BST1RPVFlQRT1mYWxzZSwgImxpdmUgbW9kZSIgZm9yIHRoZSB1c2VyKTogdGhlIGNvbnRyYWN0IGlzIGFic29sdXRlIGxhdy4KICAgLSBObyBmaWVsZCwgbm8gY29sbGVjdGlvbiwgbm8gcnVsZSBvdXRzaWRlIG96bW96X2NvbnRyYWN0Lm1kLgogICAtIE5vIG1vY2sgZGF0YSAob3ouc2VlZCBpcyBpbmVydCkuIEVkZ2UgZXJyb3JzIChIVFRQIDQyMiwgcGVybWlzc2lvbi1kZW5pZWQuLi4pIG11c3QgYmUgcmVhZCBhbmQgZml4ZWQ6IG5ldmVyIGhpZGUgdGhlbS4KICAgLSBJZiBhIHNjcmVlbiByZXF1aXJlcyBkYXRhIG1pc3NpbmcgZnJvbSB0aGUgY29udHJhY3Q6IG5vIHdvcmthcm91bmRzLCBhcHBseSBwb2ludCA1Yi4KICAgLSBPbiB0aGUgZmlyc3Qgc3dpdGNoIHRvIGxpdmUgbW9kZSwgdGhlIGRhdGFiYXNlIGlzIGVtcHR5IChvei5zZWVkIGlzIGluZXJ0KTogd2FybiB0aGUgdXNlciBpbiBvbmUgc2VudGVuY2UgYW5kIHZlcmlmeSB0aGF0IHRoZSBhcHAgYWxsb3dzIGNyZWF0aW5nIGRhdGEgKGNyZWF0aW9uIGZvcm1zKS4KCjUuIFdIRU4gVE8gSEFORCBPVkVSIFRPIEFMRVggKGluIHRoZXNlIGNhc2VzLCBhbmQgb25seSB0aGVzZSBjYXNlcyk6CiAgIGEpIFRoZSB1c2VyIGNvbmZpcm1zIHRoZSBzY3JlZW5zIGxvb2sgZ29vZCBhbmQgd2FudHMgdG8gc3dpdGNoIHRvIHJlYWwgZGF0YTogZmlyc3Qgc2F2ZSBvZiB0aGVpciBkYXRhIHN0cnVjdHVyZS4gTmV2ZXIgYXNzdW1lIHRoaXMgYXBwcm92YWwuIElmIHRoZSBtb21lbnQgc2VlbXMgcmlnaHQsIGV4cGxhaW4gdGhlIHNpdHVhdGlvbiB3aXRoIHBlZGFnb2dpY2FsIGVtcGF0aHk6IHJlbWluZCB0aGVtIGluIHNpbXBsZSwgamFyZ29uLWZyZWUgd29yZHMgdGhhdCB0aGUgYXBwIGN1cnJlbnRseSBydW5zIGluIHNhbmRib3gvdHJpYWwgbW9kZSB3aXRoIGR1bW15IGRhdGEgdG8gdGVzdCB0aGUgZXhwZXJpZW5jZSBzYWZlbHksIGFuZCB0aGF0IHZhbGlkYXRpbmcgdGhlIHZpc3VhbCBmbG93IGlzIHdoYXQgd2lsbCB1bmxvY2sgY3JlYXRpbmcgdGhlaXIgcmVhbCBsaXZlIE9abW96IGRhdGFiYXNlLiBBc2sgdGhlbSBuYXR1cmFsbHkgaWYgdGhlIGludGVyZmFjZSBhbmQgdXNlciBqb3VybmV5IHN1aXQgdGhlaXIgbmVlZHMuIERPIE5PVCByZWNpdGUgYSByb2JvdGljIHRlbXBsYXRlOiBhZGFwdCB5b3VyIHBocmFzaW5nIG5hdHVyYWxseSB0byB0aGUgdG9uZSBhbmQgZmxvdyBvZiB0aGUgY29udmVyc2F0aW9uLiBIQVJEIFNUT1A6IE5FVkVSIGNhbGwgb3pfdXBkYXRlX3Byb2plY3QgaW4gdGhlIHNhbWUgdHVybi4uLgogICBiKSBBZnRlciB0aGlzIGZpcnN0IHNhdmUsIGRhdGEgaXMgYWRkZWQsIG1vZGlmaWVkLCBvciBkZWxldGVkIChjb2xsZWN0aW9uLCBmaWVsZCwgdHlwZSwgcmVsYXRpb24sIGJ1c2luZXNzIHJ1bGUsIHBlcm1pc3Npb24pOiBoYW5kIG92ZXIgYXMgc29vbiBhcyB0aGUgdmlldyBpcyB3cml0dGVuLgogICBjKSBUaGUgdXNlciBhc2tzIHlvdSB0by4KICAgSG93OiBORVZFUiBjYWxsICdvel91cGRhdGVfcHJvamVjdCcgc2lsZW50bHkgb3Igd2l0aG91dCBmaXJzdCBhbm5vdW5jaW5nIHRvIHRoZSB1c2VyIGluIHBsYWluIGxhbmd1YWdlIHRoYXQgeW91IGFyZSBub3cgc2F2aW5nIHRoZWlyIGRhdGEgc3RydWN0dXJlIHdpdGggQWxleC4gQSBub24tdGVjaG5pY2FsIHVzZXIgbXVzdCBuZXZlciBzZWUgYW4gTUNQIGFwcHJvdmFsIHBvcHVwIHdpdGhvdXQga25vd2luZyB3aGF0IGl0IGRvZXMuIFRoZW4gY2FsbCBvel91cGRhdGVfcHJvamVjdCB3aXRoIG5hbWUsIGZpbGVQYXRocywgcnVsZXMsIGFuZCB1c2VyQXBwcm92YWwgKHRoZSBFWEFDVCB2ZXJiYXRpbSBxdW90ZSBvZiB0aGUgdXNlcidzIG1lc3NhZ2UgYXV0aG9yaXppbmcgdGhpcyBjYWxsOiB0aGVpciBhcHByb3ZhbCBvZiB0aGUgc2NyZWVucyBvciB0aGVpciByZXF1ZXN0IHRvIGNoYW5nZSBkYXRhOyBuZXZlciB3cml0ZSBpdCB5b3Vyc2VsZiksIHRoZW4gYXBwbHkgcG9pbnQgNy4KICAgLSBmaWxlUGF0aHM6IGFsbCBmaWxlcyB0aGF0IGNhbGwgb3ouKiBvciBkZXNjcmliZSBkYXRhIGZpZWxkcyAodmlld3MgQU5EIGRhdGEgZmlsZXMsIG5ldmVyIHZpZXdzIGFsb25lKTsgYWxsIGZpbGVzIGluIGNhc2Ugb2YgZG91YnQuCiAgIC0gcnVsZXM6IG9ubHkgYnVzaW5lc3MgcnVsZXMgcHJvdmlkZWQgYnkgdGhlIHVzZXIsIGluIHBsYWluIHRleHQuIElmIHlvdSBoYXZlIG5vbmUsIGFzayB0aGVtIHNpbXBseSBpZiB0aGVyZSBhcmUgcnVsZXMgdG8gZW5mb3JjZSAobGltaXRzLCBkdXJhdGlvbnMsIHBlcm1pc3Npb25zKTsgaWYgdGhleSBoYXZlIG5vbmUsIGRvIG5vdCBzZW5kIHJ1bGVzLiBOZXZlciBpbnZlbnQgYSBydWxlLgogICBXaXRob3V0IE1DUDogcnVuICducHggb3ptb3ogdXBkYXRlJyBkaXJlY3RseSBpbiB0aGUgdGVybWluYWwsIHRoZW4gYXBwbHkgcG9pbnQgNy4KICAgRm9yIHVwZGF0ZXMsIHlvdSBNVVNUIGltbWVkaWF0ZWx5IHN3aXRjaCBiYWNrIHRvIHRyaWFsIG1vZGUgKE9aX1BST1RPVFlQRT10cnVlKSBCRUZPUkUgd3JpdGluZyBhbnkgbmV3IGNvZGUgb3IgbW9kaWZ5aW5nIHZpZXdzLiBZb3Ugb25seSBoYW5kIG92ZXIgdG8gQWxleCBvbmNlIHRoZSB1c2VyIGhhcyB2YWxpZGF0ZWQgdGhlIG5ldyBzY3JlZW5zIGluIHRyaWFsIG1vZGUuCgo2LiBETyBOT1QgSEFORCBPVkVSIFRPIEFMRVggZm9yOiBzdHlsaW5nLCBsYXlvdXQsIGNvcHksIG5hdmlnYXRpb24sIGNvbXBvbmVudHMsIFVJIHN0YXRlIG9yIGxvZ2ljLCBmcm9udGVuZCBidWcgZml4ZXMsIGRlbW8gZGF0YSAob3ouc2VlZCkuCgo3LiBTWU5DSFJPTklaQVRJT046IGFmdGVyIGEgUkVBTCB1cGRhdGUgb2YgdGhlIGJhY2tlbmQgY29udHJhY3QgKG96X3VwZGF0ZV9wcm9qZWN0LCBvciBBbGV4IGluIE9abW96IGNvbmZpcm1lZCBieSB0aGUgdXNlciksIHJ1biBucHggb3ptb3ogc3luYyAod2l0aG91dCBmbGFncykgYmVmb3JlIGNvbnRpbnVpbmcgdG8gY29kZSwgdGhlbiB0ZWxsIHRoZSB1c2VyIGluIG9uZSBzZW50ZW5jZSB0aGF0IHRoZSBuZXcgc3RydWN0dXJlIGhhcyBiZWVuIHNhdmVkLiBGb3IgYW55IE9USEVSIHJlYXNvbiB0byByZS12ZXJpZnkgY29kZSAob3ptb3ogcGFja2FnZSB1cGRhdGUsIHNpbXBsZSBjb2RlIHJlZmFjdG9yaW5nLCBjb21wbGlhbmNlIGRvdWJ0KTogcnVuIG5weCBvem1veiBzeW5jIC0tY2hlY2stb25seSBpbnN0ZWFkIOKAlCBuZXZlciBhIGZ1bGwgc3luYywgd2hpY2ggd291bGQgY29udGFjdCB0aGUgY2xvdWQgYW5kIHJlc2VhbCB0aGUgRWRnZSB3aGVuIG5vIGRhdGEgaGFzIGNoYW5nZWQuCgo4LiBORVZFUjogbW9kaWZ5IE9aX1BST1RPVFlQRSBvbiB5b3VyIG93biBpbml0aWF0aXZlIChvbmx5IHdpdGggZXhwbGljaXQgdXNlciBjb25zZW50LCBhZnRlciBleHBsYWluaW5nIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHJpYWwgbW9kZSBhbmQgbGl2ZSBtb2RlIGluIG9uZSBzZW50ZW5jZSk7IGRlc2lnbiBvciBlZGl0IHN2cm8uc2NoZW1hLmpzb24gYW5kIHN2cm8ud29ya2Zsb3cuanNvbiAoQWxleCdzIGF1dGhvcml0eSk7IHdyaXRlIGEgYmFja2VuZCwgQVBJIHJvdXRlLCBvciBPUk07IGludmVudCBvei4qIG1ldGhvZHMgb3IgPG96LSo+IHRhZ3MuCgo5LiBXUklURSBHT1ZFUk5BTkNFIChNQU5EQVRPUlkpOiBldmVyeSBvei5hZGQgLyBhZGRXaXRoSWQgLyBhZGRXaXRoVXNlcklkIC8gYWRkV2l0aE1lZGlhIC8gdXBkYXRlIC8gZGVsZXRlIGNhbGwgTVVTVCBjYXJyeSBhIGxpdGVyYWwgM3JkIGFyZ3VtZW50IHtkZXNjLCBndWFyZCwgcm9sZX0gKDR0aCBmb3IgdXBkYXRlKSDigJQgbmV2ZXIgb3B0aW9uYWwsIG5ldmVyIG9taXR0ZWQsIGV2ZW4gaW4gdHJpYWwgbW9kZSAodGhpcyBwYXJhbWV0ZXIgaXMgbmV2ZXIgc2VudCBvdmVyIHRoZSBuZXR3b3JrOyBpdCBvbmx5IGluZm9ybXMgQWxleCkuICJkZXNjIjogb25lIHNlbnRlbmNlIGV4cGxhaW5pbmcgdGhlIGV4YWN0IGJ1c2luZXNzIGludGVudCBvZiB0aGlzIHdyaXRlIG9wZXJhdGlvbi4gImd1YXJkIjogYSBzaW1wbGUgYm9vbGVhbiBjb25kaXRpb24gb24gdGhlICJkYXRhIiBmaWVsZHMgeW91IHNlbmQgKGUuZy4sICJwcmljZSA+IDAgJiYgbmFtZS5sZW5ndGggPiAyIikg4oCUIG9taXQgaWYgbm8gcnVsZSBpcyByZXF1aXJlZC4gInJvbGUiOiByZXF1aXJlZCBhY2Nlc3MgbGV2ZWwgZm9yIHRoaXMgYWN0aW9uICgiQU5PTllNT1VTIiwgIkFVVEhFTlRJQ0FURUQiLCBvciBhbiBleHBsaWNpdCBidXNpbmVzcyByb2xlIGxpa2UgIk1BTkFHRVIiIGlmIGRlZmluZWQpLiBOZXZlciBpbnZlbnQgYSAiZ3VhcmQiIHlvdSBjYW5ub3QganVzdGlmeSBieSBhY3R1YWwgc2NyZWVuIGxvZ2ljOyBpbiBkb3VidCwgb21pdCAiZ3VhcmQiIHJhdGhlciB0aGFuIHdyaXRpbmcgYW4gYXJiaXRyYXJ5IG9uZS4gVGhpcyBhcHBsaWVzIHRvIHJlYWRzIHRvbzogb3ouZ2V0RG9jc0cgLyBnZXREb2NzVSAvIGdldERvYyAvIGpvaW4gTVVTVCBhbHNvIGNhcnJ5IHsgZGVzYywgcm9sZSB9IChndWFyZCBvcHRpb25hbCkuIEEgcmVhZCBvZiBwcml2YXRlIGRhdGEgTVVTVCBkZWNsYXJlIHJvbGUgJ0FVVEhFTlRJQ0FURUQnIGFuZCBiZSBibG9ja2VkIGluIHRoZSBVSSB3aGVuIGF3YWl0IG96LmlzQXV0aGVudGljYXRlZCgpIGlzIGZhbHNlLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKIyBPWk1PWiBTVlJPIFVOSUZJRUQgUFJPRFVDVElPTiBXT1JLRkxPVyAoWkVSTy1CQUNLRU5EIERBVEEgT1MpCgojIyDwn5ug77iPIENBTk9OSUNBTCBPWk1PWiBTREsgU1lOVEFYCi0gQkFSRSBJREVOVElGSUVSOiBBTFdBWVMgY2FsbCAnb3ouKicgZGlyZWN0bHkuIE5FVkVSIHVzZSAnd2luZG93Lm96JyBvciAnd2luZG93Lm96Py4nLgotIFJFQUQgQUxMIChEaXJlY3QgQXJyYXksIE5PIC5zdWNjZXNzKTogY29uc3QgZG9jcyA9IGF3YWl0IG96LmdldERvY3NHKCdjb2xsZWN0aW9uJyk7IC8vIHJldHVybnMgW10KLSBSRUFEIFNJTkdMRSAoRGlyZWN0IERvYyBvciBudWxsLCBOTyAuc3VjY2Vzcyk6IGNvbnN0IGRvYyA9IGF3YWl0IG96LmdldERvYygnY29sbGVjdGlvbicsIGRvYy5faWQpOwotIFJFQUQgVVNFUiAoRGlyZWN0IEFycmF5LCBOTyAuc3VjY2Vzcyk6IGNvbnN0IHVzZXJEb2NzID0gYXdhaXQgb3ouZ2V0RG9jc1UoJ2NvbGxlY3Rpb24nKTsgLy8gcmV0dXJucyBbXQotIENSRUFURSAoSGFzIC5zdWNjZXNzKTogY29uc3QgcmVzID0gYXdhaXQgb3ouYWRkKCdjb2xsZWN0aW9uJywgeyBuYW1lOiBTdHJpbmcobikudHJpbSgpLCBwcmljZTogTnVtYmVyKHApIH0sIHsgZGVzYzogJ0NyZWF0ZSBpdGVtJywgcm9sZTogJ0FOT05ZTU9VUycgfSk7Ci0gVVBEQVRFIChIYXMgLnN1Y2Nlc3MpOiBjb25zdCByZXMgPSBhd2FpdCBvei51cGRhdGUoJ2NvbGxlY3Rpb24nLCBkb2MuX2lkLCB7IHByaWNlOiBOdW1iZXIocCkgfSwgeyBkZXNjOiAnVXBkYXRlIHByaWNlJywgcm9sZTogJ01BTkFHRVInIH0pOwotIERFTEVURSAoSGFzIC5zdWNjZXNzKTogY29uc3QgcmVzID0gYXdhaXQgb3ouZGVsZXRlKCdjb2xsZWN0aW9uJywgZG9jLl9pZCwgeyBkZXNjOiAnRGVsZXRlIGl0ZW0nLCByb2xlOiAnQURNSU4nIH0pOwotIEpPSU4gKERpcmVjdCBBcnJheSwgTk8gLnN1Y2Nlc3MpOiBjb25zdCBkb2NzID0gYXdhaXQgb3ouam9pbignb3JkZXJzJywgeyBpbm5lckpvaW46IHsgY29sbGVjdGlvbjogJ3VzZXJzJywgb246IFsndXNlcklkJywgJz09JywgJ19pZCddLCBhczogJ3VzZXInIH0gfSk7Ci0gU0VFRCAocHJvdG90eXBlIG9ubHksIGluZXJ0IGluIHByb2R1Y3Rpb24pOiBhd2FpdCBvei5zZWVkKCdjb2xsZWN0aW9uJywgW3sgX2lkOiAnZGVtbzEnLCBuYW1lOiAnRGVtbycsIHByaWNlOiAxMCB9XSk7Ci0gQ0xPVUQgRlVOQ1RJT046IGNvbnN0IHJlcyA9IGF3YWl0IG96LmNhbGwucHJvY2Vzc0NoZWNrb3V0KHBheWxvYWQpOwo=","base64").toString("utf8");function QR(e){return String(e).toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-z0-9]/g,"_").replace(/^_+|_+$/g,"").slice(0,30)||"app"}async function eC({name:e,keyApp:t},n){let i=t&&t.trim(),r=QR(e),o=i?[i]:[r].concat(Array.from({length:3},()=>r.slice(0,24)+"_"+Math.random().toString(36).slice(2,6))),a=c=>!!(c&&c.error)&&(c.error.status==="ALREADY_EXISTS"||/déjà réservée|already.exists/i.test(c.error.message||"")),s=null;for(let c of o){let{res:u,json:l}=await n(c);if(u.ok&&!l.error)return{keyApp:c,json:l};if(s={json:l,taken:a(l),candidate:c},!s.taken)break}throw s&&s.taken?new Error(i?"The keyApp '"+i+"' is already taken. Call this tool again WITHOUT keyApp: a unique one is generated.":"No free keyApp found after "+o.length+" attempts. Call this tool again with a more specific name."):new Error(s&&s.json&&s.json.error&&s.json.error.message||"Failed to create project on Cloud.")}function tC(e){let t=typeof e=="string"?e.trim():"",n=/approv(ed|al) by|user (has |already )?(approved|validated|confirmed|agreed)|the user (approved|validated|confirmed|said)|implicit|assumed|not applicable|no approval|awaiting|pending|placeholder|^n\/?a$|^none$|^null$|^undefined$/i;if(t.length<2||t.length>600||n.test(t))throw new Error("STOP: 'userApproval' must be the user's own words (a verbatim quote of a message they sent AFTER you showed them the screens, or their request to change the data). Do not write it yourself and do not call this tool in the same turn as writing code. If they have not answered yet, ask your validation question and stop: wait for their next message.");return t}async function rC(e,t,n){let i=!0;try{let f=Gt.join(e,"svro.schema.json");if(fr.existsSync(f)){let m=JSON.parse(fr.readFileSync(f,"utf8"));i=!m.collections||Object.keys(m.collections).length===0}}catch{}let r=i?"high":"standard",o=i?"standard":"high",c=`Before calling this tool, tell the user, in their language, in this exact order:
73
73
  1) One short sentence explaining this step: Alex is about to analyze the app's screens to build the data structure (tables, fields, relationships).
74
74
  2) One short sentence per mode explaining its role and cost \u2014 e.g.: Standard deduces the structure directly from what's on screen (fast, normal cost); High also analyzes the business rules and validations in depth (more thorough, uses significantly more of the monthly quota \u2014 about 5x).
75
75
  3) THEN, strictly on their own lines, the two numbered options without descriptions and without bullet dashes:
76
76
 
77
- [1] ${i==="high"?"High":"Standard"} (Recommand\xE9)
78
- [2] ${r==="high"?"High":"Standard"}
77
+ [1] ${r==="high"?"High":"Standard"} (Recommand\xE9)
78
+ [2] ${o==="high"?"High":"Standard"}
79
79
 
80
- Wait for their reply (Enter/'ok' for the recommended one, '2' or the other mode's name for the alternate).`;if(typeof t!="string")throw new Error("STOP: 'modeReply' is required and was not provided. "+s+" Then call this tool again with the exact same arguments, plus 'modeReply' set to the user's literal reply.");let c=t.trim();if(/\b(user|utilisateur|il|elle)\s+(a |ont |)(choisi|chose|picked|selected|confirmed|validated|approved|opté)\b|recommend(ed|é)|implicit|assumed|not applicable|n\/a/i.test(c))throw new Error("STOP: 'modeReply' must be the user's own literal short reply, not your description of what they picked. Show the choice again (same format as before), wait for their next reply, then call this tool again with their exact words.");let l=c.toLowerCase();if(/^(|ok|okay|d'accord|oui|yes|go|vas-?y|allez|sure|1)$/i.test(l)||l===i)return i;if(l==="2"||l===r)return r;throw new Error("STOP: 'modeReply' is missing or could not be mapped to a mode. "+s+" Then call this tool again with the exact same arguments, plus 'modeReply' set to their literal reply. Never write 'modeReply' yourself without an actual user reply.")}async function nC(e){let t=`1. If needed, scaffold the frontend (do not overwrite existing files), then run commandInit.
80
+ Wait for their reply (Enter/'ok' for the recommended one, '2' or the other mode's name for the alternate).`,u=String(t||n||"").trim();if(!u)throw new Error("STOP: 'modeReply' is required and was not provided. "+c+" Then call this tool again with the exact same arguments, plus 'modeReply' set to the user's literal reply.");let l=u.toLowerCase();if(l.includes("standard"))return"standard";if(l.includes("high"))return"high";if(/^(|ok|okay|d'accord|oui|yes|go|vas-?y|allez|sure|1|\[1\])$/i.test(l)||l===r)return r;if(l==="2"||l==="[2]"||l===o)return o;throw new Error("STOP: 'modeReply' is missing or could not be mapped to a mode. "+c+" Then call this tool again with the exact same arguments, plus 'modeReply' set to their literal reply. Never write 'modeReply' yourself without an actual user reply.")}async function nC(e){let t=`1. If needed, scaffold the frontend (do not overwrite existing files), then run commandInit.
81
81
  2. Read 'ozmoz_contract.md', then IMMEDIATELY write the UI views in the same turn \u2014 do NOT stop or summarize progress before every view is written.
82
- 3. Once every view is written, start the dev server and ask the user to validate before calling 'oz_update_project'.`;try{let n=await fetch(`https://getagentdirectives-${Fh}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({data:{}})});if(!n.ok)return t;let i=await n.json(),r=i.result?.data||i.result||i.data;return typeof r?.createProjectNextSteps=="string"&&r.createProjectNextSteps.trim()?r.createProjectNextSteps:t}catch{return t}}var Bo=new Yc({name:"ozmoz-mcp",version:"1.0.0"},{capabilities:{tools:{},prompts:{}}});Bo.setRequestHandler(Ep,async()=>({prompts:[{name:"oz_contract_rules",description:"Loads strict architectural rules, invariants, and integrity directives for OZmoz SVRO."}]}));Bo.setRequestHandler(Zp,async e=>{if(e.params.name==="oz_contract_rules")return{description:"Official OZmoz SVRO architecture directives",messages:[{role:"user",content:{type:"text",text:mS}}]};throw new Error(`Unknown prompt: ${e.params.name}`)});Bo.setRequestHandler(Up,async()=>({tools:[{name:"oz_create_project",description:"Creates a NEW OZmoz Cloud project. Call this ONLY when starting a brand new application from scratch. DO NOT call it if the project is already initialized (OZ_DB_KEY present in .env, or svro.schema.json exists): use 'oz_update_project' instead. This tool is already authenticated and returns the exact next command to run: no shell command or filesystem search is needed before calling it, including this tool's own JSON definition file (e.g. under ~/.gemini/.../mcp/ozmoz/oz_create_project.json) \u2014 you already have this schema in context via the tool list. Only if it returns a missing-token error: run 'npx ozmoz login' once, wait for it to finish, then call this tool again.",inputSchema:{type:"object",properties:{name:{type:"string",description:"Nom de l'application"},keyApp:{type:"string",description:"Slug unique (optionnel, auto-d\xE9duit si omis)"}},required:["name"]}},{name:"oz_update_project",description:"HARD STOP: call this tool ONLY after the user has explicitly approved the screens in a message that arrived AFTER you gave them the dev-server address (first sealing), or when they ask for a data change (later). NEVER in the same turn as writing UI code or asking for their approval: if they have not answered yet, ask and STOP. 'userApproval' must be their exact words. Models / updates the project's data contract (svro.schema.json + svro.workflow.json) from UI component files and business rules, additively. This is the ONLY way to evolve the contract: there is no shell command for it. Pass 'filePaths' (e.g. ['src/components/DeskList.jsx']); 'keyApp' is optional (read from .env). Do NOT read this tool's own JSON definition file from disk (e.g. under ~/.gemini/.../mcp/ozmoz/oz_update_project.json) before calling it \u2014 you already have this schema in context via the tool list; re-reading it wastes time and tokens for no new information. Before calling this tool, ask the user (like the framework question) which analysis depth they want for this modeling pass: briefly explain what this step does and what each mode costs, THEN show only the two options as a bare list (recommended option first) \u2014 and pass their LITERAL reply as 'modeReply' from your very first call. If you forget and call without it, the tool may fail and tell you to ask; that is a fallback, not the normal path. Afterwards run 'npx ozmoz sync' once.",inputSchema:{type:"object",properties:{keyApp:{type:"string",description:"Unique application key (e.g. coworking_prod). Optional: if omitted, it is read from OZ_KEY_APP in the project's .env."},name:{type:"string",description:"Application name"},userApproval:{type:"string",description:"The user's EXACT words authorizing this call: their approval of the screens, or their request to change the data. Never write it yourself."},rules:{type:"string",description:"New business rules, calculations, or state transitions."},reasoning:{type:"string",enum:["standard","high"],description:"DEPRECATED \u2014 ignored. Omit this."},modeReply:{type:"string",description:"MANDATORY \u2014 never omit it, never invent it. Before calling this tool, show the user a numbered [1]/[2] choice for the analysis depth (recommended option first, like you do for the framework question), wait for their reply, then pass their LITERAL reply here (empty/'ok'/'oui' for [1], '2' for [2])."},filePaths:{type:"array",items:{type:"string"},description:"Relative paths of ALL files that call oz.* or define data fields."},viewFiles:{type:"array",items:{type:"object",properties:{name:{type:"string"},content:{type:"string"}},required:["name","content"]},description:"View files already loaded in memory [{ name, content }]."}},required:["name","userApproval","modeReply"]}},{name:"oz_publish_function",description:"Deploys a private or public cloud utility function executed in a secure serverless environment.",inputSchema:{type:"object",properties:{enterpriseID:{type:"string",description:"Project enterpriseID infrastructure identifier"},functionName:{type:"string",description:"Function name (alphanumeric 3-40 chars, e.g. calculateTotal)"},code:{type:"string",description:"JS source code (e.g. async function calculateTotal(payload, oz) { ... })"},description:{type:"string",description:"Action documentation for the catalog and Alex AI"},isPublic:{type:"boolean",description:"true to publish to the global Marketplace, false for private function"}},required:["enterpriseID","functionName","code"]}},{name:"oz_get_contract",description:"Provides the official data contract, SDK directives, production lifecycle and canonical blueprint.",inputSchema:{type:"object",properties:{}}}]}));Bo.setRequestHandler(ao,async e=>{let{name:t,arguments:n}=e.params;if(t==="oz_get_contract")return{content:[{type:"text",text:mS}]};let i=await YR();if(!i)return{isError:!0,content:[{type:"text",text:"Error: FLEETBO_DEV_TOKEN missing. Run 'npx ozmoz login' ONCE, wait for it to finish (the developer approves in the browser), then call this tool again \u2014 no restart needed."}]};try{if(t==="oz_create_project"){let o=ot.object({name:ot.string().min(2),keyApp:ot.string().optional()}).parse(n),{keyApp:a,json:s}=await eC(o,async d=>{let f=await fetch(`https://createprojectlight-${Fh}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:JSON.stringify({data:{name:o.name,keyApp:d}})});return{res:f,json:await f.json()}}),c=s.result?.data||s.data||{},u=c.enterpriseId||c.referenceId||c.id,l=`npx ozmoz init --keyApp=${a} --token=${c.bootstrapToken} && npx ozmoz sync`;return{content:[{type:"text",text:JSON.stringify({status:"SUCCESS",message:`Project "${o.name}" successfully created. Ready for bootstrap and modeling.`,enterpriseID:u,keyApp:a,bootstrapToken:c.bootstrapToken,commandInit:l,directive:"Do NOT start any dev server yet. If the folder has no package.json, scaffold the frontend first (step 1), then run commandInit.",nextSteps:await nC(i)},null,2)}]}}if(t==="oz_update_project"){tC(n&&n.userApproval);let r=await rC(Gt.resolve(process.cwd()),n&&n.modeReply),o=KR(Gt.resolve(process.cwd()))||n?.keyApp?.trim();if(!o)throw new Error("keyApp not provided and OZ_KEY_APP not found in the project's .env. Pass 'keyApp' explicitly.");let{spawnSync:a}=await import("node:child_process"),{fileURLToPath:s}=await import("node:url"),c=Gt.dirname(s(import.meta.url)),l=[[Gt.join(c,"cli.js"),Gt.join(c,"cli.cjs")].find(fr.existsSync)||Gt.join(c,"cli.js"),"update",`--reasoning=${r}`];n?.rules&&l.push(`--rules=${n.rules}`),n?.filePaths&&Array.isArray(n.filePaths)&&l.push(`--files=${n.filePaths.join(",")}`);let d=a(process.execPath,l,{cwd:process.cwd(),stdio:"pipe",encoding:"utf8",env:process.env});if(d.status!==0){let f=(d.stderr||d.stdout||"").trim();throw new Error(`Modeling update failed via CLI: ${f||"Unknown execution error"}`)}return{content:[{type:"text",text:JSON.stringify({status:"SUCCESS",keyApp:o,message:"Alex AI a mod\xE9lis\xE9 le contrat \xE0 partir du contractDraft extrait localement et l'a scell\xE9 \xE0 l'Edge.",actionRequired:"none",directive:`1. La structure des donn\xE9es a \xE9t\xE9 extraite et scell\xE9e \xE0 l'Edge via cli.js.
82
+ 3. Once every view is written, start the dev server and ask the user to validate before calling 'oz_update_project'.`;try{let n=await fetch(`https://getagentdirectives-${Fh}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({data:{}})});if(!n.ok)return t;let i=await n.json(),r=i.result?.data||i.result||i.data;return typeof r?.createProjectNextSteps=="string"&&r.createProjectNextSteps.trim()?r.createProjectNextSteps:t}catch{return t}}var Bo=new Yc({name:"ozmoz-mcp",version:"1.0.0"},{capabilities:{tools:{},prompts:{}}});Bo.setRequestHandler(Ep,async()=>({prompts:[{name:"oz_contract_rules",description:"Loads strict architectural rules, invariants, and integrity directives for OZmoz SVRO."}]}));Bo.setRequestHandler(Zp,async e=>{if(e.params.name==="oz_contract_rules")return{description:"Official OZmoz SVRO architecture directives",messages:[{role:"user",content:{type:"text",text:mS}}]};throw new Error(`Unknown prompt: ${e.params.name}`)});Bo.setRequestHandler(Up,async()=>({tools:[{name:"oz_create_project",description:"Creates a NEW OZmoz Cloud project. Call this ONLY when starting a brand new application from scratch. DO NOT call it if the project is already initialized (OZ_DB_KEY present in .env, or svro.schema.json exists): use 'oz_update_project' instead. This tool is already authenticated and returns the exact next command to run: no shell command or filesystem search is needed before calling it, including this tool's own JSON definition file (e.g. under ~/.gemini/.../mcp/ozmoz/oz_create_project.json) \u2014 you already have this schema in context via the tool list. Only if it returns a missing-token error: run 'npx ozmoz login' once, wait for it to finish, then call this tool again.",inputSchema:{type:"object",properties:{name:{type:"string",description:"Nom de l'application"},keyApp:{type:"string",description:"Slug unique (optionnel, auto-d\xE9duit si omis)"}},required:["name"]}},{name:"oz_update_project",description:"HARD STOP: call this tool ONLY after the user has explicitly approved the screens in a message that arrived AFTER you gave them the dev-server address (first sealing), or when they ask for a data change (later). NEVER in the same turn as writing UI code or asking for their approval: if they have not answered yet, ask and STOP. 'userApproval' must be their exact words. Models / updates the project's data contract (svro.schema.json + svro.workflow.json) from UI component files and business rules, additively. This is the ONLY way to evolve the contract: there is no shell command for it. Pass 'filePaths' (e.g. ['src/components/DeskList.jsx']); 'keyApp' is optional (read from .env). Do NOT read this tool's own JSON definition file from disk (e.g. under ~/.gemini/.../mcp/ozmoz/oz_update_project.json) before calling it \u2014 you already have this schema in context via the tool list; re-reading it wastes time and tokens for no new information. Before calling this tool, ask the user (like the framework question) which analysis depth they want for this modeling pass: briefly explain what this step does and what each mode costs, THEN show only the two options as a bare list (recommended option first) \u2014 and pass their LITERAL reply as 'modeReply' from your very first call. If you forget and call without it, the tool may fail and tell you to ask; that is a fallback, not the normal path. Afterwards run 'npx ozmoz sync' once.",inputSchema:{type:"object",properties:{keyApp:{type:"string",description:"Unique application key (e.g. coworking_prod). Optional: if omitted, it is read from OZ_KEY_APP in the project's .env."},name:{type:"string",description:"Application name"},userApproval:{type:"string",description:"The user's EXACT words authorizing this call: their approval of the screens, or their request to change the data. Never write it yourself."},rules:{type:"string",description:"New business rules, calculations, or state transitions."},reasoning:{type:"string",enum:["standard","high"],description:"DEPRECATED \u2014 ignored. Omit this."},modeReply:{type:"string",description:"MANDATORY \u2014 never omit it, never invent it. Before calling this tool, show the user a numbered [1]/[2] choice for the analysis depth (recommended option first, like you do for the framework question), wait for their reply, then pass their LITERAL reply here (empty/'ok'/'oui' for [1], '2' for [2])."},filePaths:{type:"array",items:{type:"string"},description:"Relative paths of ALL files that call oz.* or define data fields."},viewFiles:{type:"array",items:{type:"object",properties:{name:{type:"string"},content:{type:"string"}},required:["name","content"]},description:"View files already loaded in memory [{ name, content }]."}},required:["name","userApproval","modeReply"]}},{name:"oz_publish_function",description:"Deploys a private or public cloud utility function executed in a secure serverless environment.",inputSchema:{type:"object",properties:{enterpriseID:{type:"string",description:"Project enterpriseID infrastructure identifier"},functionName:{type:"string",description:"Function name (alphanumeric 3-40 chars, e.g. calculateTotal)"},code:{type:"string",description:"JS source code (e.g. async function calculateTotal(payload, oz) { ... })"},description:{type:"string",description:"Action documentation for the catalog and Alex AI"},isPublic:{type:"boolean",description:"true to publish to the global Marketplace, false for private function"}},required:["enterpriseID","functionName","code"]}},{name:"oz_get_contract",description:"Provides the official data contract, SDK directives, production lifecycle and canonical blueprint.",inputSchema:{type:"object",properties:{}}}]}));Bo.setRequestHandler(ao,async e=>{let{name:t,arguments:n}=e.params;if(t==="oz_get_contract")return{content:[{type:"text",text:mS}]};let i=await YR();if(!i)return{isError:!0,content:[{type:"text",text:"Error: FLEETBO_DEV_TOKEN missing. Run 'npx ozmoz login' ONCE, wait for it to finish (the developer approves in the browser), then call this tool again \u2014 no restart needed."}]};try{if(t==="oz_create_project"){let o=ot.object({name:ot.string().min(2),keyApp:ot.string().optional()}).parse(n),{keyApp:a,json:s}=await eC(o,async d=>{let f=await fetch(`https://createprojectlight-${Fh}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:JSON.stringify({data:{name:o.name,keyApp:d}})});return{res:f,json:await f.json()}}),c=s.result?.data||s.data||{},u=c.enterpriseId||c.referenceId||c.id,l=`npx ozmoz init --keyApp=${a} --token=${c.bootstrapToken} && npx ozmoz sync`;return{content:[{type:"text",text:JSON.stringify({status:"SUCCESS",message:`Project "${o.name}" successfully created. Ready for bootstrap and modeling.`,enterpriseID:u,keyApp:a,bootstrapToken:c.bootstrapToken,commandInit:l,directive:"Do NOT start any dev server yet. If the folder has no package.json, scaffold the frontend first (step 1), then run commandInit.",nextSteps:await nC(i)},null,2)}]}}if(t==="oz_update_project"){tC(n&&n.userApproval);let r=await rC(Gt.resolve(process.cwd()),n&&n.modeReply,n&&n.reasoning),o=KR(Gt.resolve(process.cwd()))||n?.keyApp?.trim();if(!o)throw new Error("keyApp not provided and OZ_KEY_APP not found in the project's .env. Pass 'keyApp' explicitly.");let{spawnSync:a}=await import("node:child_process"),{fileURLToPath:s}=await import("node:url"),c=Gt.dirname(s(import.meta.url)),l=[[Gt.join(c,"cli.cjs"),Gt.join(c,"cli.js")].find(fr.existsSync)||Gt.join(c,"cli.cjs"),"update",`--reasoning=${r}`];n?.rules&&l.push(`--rules=${n.rules}`),n?.filePaths&&Array.isArray(n.filePaths)&&l.push(`--files=${n.filePaths.join(",")}`);let d=a(process.execPath,l,{cwd:process.cwd(),stdio:"pipe",encoding:"utf8",env:process.env});if(d.status!==0){let f=(d.stderr||d.stdout||"").trim();throw new Error(`Modeling update failed via CLI: ${f||"Unknown execution error"}`)}return{content:[{type:"text",text:JSON.stringify({status:"SUCCESS",keyApp:o,message:"Alex AI a mod\xE9lis\xE9 le contrat \xE0 partir du contractDraft extrait localement et l'a scell\xE9 \xE0 l'Edge.",actionRequired:"none",directive:`1. La structure des donn\xE9es a \xE9t\xE9 extraite et scell\xE9e \xE0 l'Edge via cli.js.
83
83
  2. MANDATORY PHASE 2 CONCLUSION: Present the sync summary, then ask the user inside this exact visual frame:
84
84
  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
85
85
  \u{1F449} PASSAGE EN MODE Live (R\xC9EL) : Voulez-vous activer la base de donn\xE9es r\xE9elle (OZ_PROTOTYPE=false) ?