nexsys4 1.0.7 → 1.0.8
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/nexSys4.nxs +1 -1
- package/dist/nexsys4.min.js +1 -1
- package/package.json +1 -1
package/dist/nexsys4.min.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
!function(e,t){var n=Object.create,a=Object.defineProperty,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,s=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,__commonJSMin=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),__copyProps=(e,t,n,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(var c,u=i(t),d=0,p=u.length;d<p;d++)c=u[d],l.call(e,c)||c===n||a(e,c,{get:(e=>t[e]).bind(null,c),enumerable:!(s=o(t,c))||s.enumerable});return e},__toESM=(e,t,o)=>(o=null!=e?n(s(e)):{},__copyProps(!t&&e&&e.__esModule?o:a(o,"default",{value:e,enumerable:!0}),e));let c=__toESM(e,1);e=__toESM(e);let u=__toESM(t,1);t=__toESM(t);var d,p=Symbol.for("nexsys4.nexusClientOverrides.installed"),m=Symbol.for("nexsys4.nexusClientOverrides.originals"),g=200,resolveOverrideTargets=e=>({buffer:"function"==typeof e?.buffer?e.buffer():null,platform:"function"==typeof e?.platform?e.platform():null,datahandler:"function"==typeof e?.datahandler?e.datahandler():null}),getActiveNexSys=()=>globalThis.nexSys&&"object"==typeof globalThis.nexSys?globalThis.nexSys:null,getSystemSettings=(e=getActiveNexSys())=>e?.state?.system?.settings||e?.sys?.settings||{},isOverrideTabEnabled=(e=getActiveNexSys())=>Boolean(getSystemSettings(e).overrideTab),normalizeTargetQuery=e=>{const t=String(e??"").trim();return t?`${t.charAt(0).toUpperCase()}${t.slice(1).toLowerCase()}`:""},getInputArea=()=>globalThis.document?.getElementsByTagName?.("textarea")?.[0]??null,createTabCompletion=()=>({txt:null,qry:null,vals:null,index:0,reset(){this.txt=null,this.qry=null,this.vals=null,this.index=0},tc(){const e=getInputArea();if(!e)return;if(this.txt??=String(e.value??"").split(" "),this.qry??=normalizeTargetQuery(this.txt.at(-1)),!this.qry)return;const t=Array.isArray(globalThis.nexGui?.colors?.enemies)?globalThis.nexGui.colors.enemies:[],n=Array.isArray(globalThis.GMCP?.WhoList)?globalThis.GMCP.WhoList:[];this.vals??=[...new Set([...t.map(e=>String(e)),...n.map(e=>String(e?.name??"")).filter(e=>e.startsWith(this.qry))])],this.vals.length&&(this.index>this.vals.length-1?(this.txt[this.txt.length-1]=this.qry,this.index=0):(this.txt[this.txt.length-1]=this.vals[this.index],this.index+=1),e.value=this.txt.join(" "))}}),ensureTabCompletion=(e=getActiveNexSys())=>{if(e?.tabCompletion?.tc&&e?.tabCompletion?.reset)return e.tabCompletion;const t=createTabCompletion();return e&&"object"==typeof e&&(e.tabCompletion=t),t},renderCustomPrompt=(e,t={})=>{const n=e?.api?.prompt,a=t?.line;try{const e="function"==typeof n?.getCustomPrompt?n.getCustomPrompt():"function"==typeof n?.render?n.render(t):null;return"string"!=typeof e?null:(a?.parsed_line&&"object"==typeof a.parsed_line&&(a.parsed_line.formatted=()=>e),e)}catch(o){return console.error("nexSys4 custom prompt render failed",o),null}},createAddBlockOverride=()=>function add_block(e=[]){const t=getActiveNexSys();t?.prepend_line&&(e.unshift(t.prepend_line),t.prepend_line=!1);const n=Boolean(getSystemSettings(t).customPrompt);let a=0;for(let i=0;i<e.length;i+=1){const o=e[i];if(!o||o.gag)continue;if(!o.parsed_line&&!o.html_line)continue;const s=Boolean(o.is_prompt&&n&&o.parsed_line)?renderCustomPrompt(t,{line:o,source:"nexus-client-override"}):null;o.is_prompt&&0===a&&null===s?o.gag=!0:(!o.parsed_line||"function"!=typeof o.parsed_line.text||o.parsed_line.text()||0!==a&&i!==e.length-1||null!==s)&&("function"==typeof this._fill_tab_completion&&this._fill_tab_completion(o),a+=1,this.lineid+=1,o.id=this.lineid,this.lines.push(o),this.unread=!0)}const o=this.prune_lines?.()??!1;(a||o)&&this.on_lines_changed?.()},createProcessLinesOverride=()=>function process_lines(e=[]){if(this.gagged)return;if(!e.length)return;this.current_block=e;const t=this.reflexes?.();for(let n=0;n<e.length&&!(n>=1e3);n+=1)if(this.current_line=e[n],this.current_line.index=n,e[n]?.line&&String(e[n].line).indexOf(String.fromCharCode(7))>=0&&this.platform?.()?.beep?.(),!this.fullstop&&"function"==typeof t?.handle_triggers){const a=t.handle_triggers(e,n);Array.isArray(a)&&(e=a)}t?.run_function?.("onBlock",e,"ALL"),this.buffer?.()?.add_block?.(e),this.current_line=void 0,this.current_block=void 0},createOnKeyUpOverride=()=>function on_key_up(e){if(!this._nexus?.datahandler?.()?.is_connected?.())return!0;if(this.dialog_has_focus?.())return!0;const t=getActiveNexSys(),n=isOverrideTabEnabled(t),a=n?ensureTabCompletion(t):null;return this.tab_pressed?9!==e||(this.tab_pressed=!1,n?(a?.tc?.(),!1):(this.player_targetted||this._nexus?.datahandler?.()?.tab_target?.(!1),this.player_targetted=!1,!1)):(a?.reset?.(),!0)},createSendCommandOverride=e=>function send_command(t){const n=getActiveNexSys(),a=Date.now();if(n&&"object"==typeof n&&(n.sentCommands=[...(Array.isArray(n.sentCommands)?n.sentCommands:[]).slice(0,g-1),{cmd:t,time:a}]),"function"==typeof e)return e.call(this,t);this._socket&&(this._socket.send(`${t}\r\n`),this.last_send=a)},installNexusClientOverrides=({nexusclient:e=globalThis.nexusclient}={})=>{if(!e||e[p])return Boolean(e);const{buffer:t,platform:n,datahandler:a}=resolveOverrideTargets(e);return!!(t&&n&&a)&&(e[m]={buffer:t,platform:n,datahandler:a,process_lines:e.process_lines,add_block:t.add_block,on_key_up:n.on_key_up,send_command:a.send_command},e.process_lines=createProcessLinesOverride(),t.add_block=createAddBlockOverride(),n.on_key_up=createOnKeyUpOverride(),a.send_command=createSendCommandOverride(a.send_command),e[p]=!0,!0)},uninstallNexusClientOverrides=({nexusclient:e=globalThis.nexusclient}={})=>{if(!e?.[p])return!1;const t=e[m];if(!t)return delete e[p],!1;const n=t.buffer||resolveOverrideTargets(e).buffer,a=t.platform||resolveOverrideTargets(e).platform,o=t.datahandler||resolveOverrideTargets(e).datahandler;return e.process_lines=t.process_lines,n&&(n.add_block=t.add_block),a&&(a.on_key_up=t.on_key_up),o&&(o.send_command=t.send_command),delete e[m],delete e[p],!0},h=["send","sendGmcp","on","off","notice","getCommandSeparator","now","setTimeout","clearTimeout","getVariable","setVariable","emitLocal","raiseToEventStream"],b=Object.freeze({promptRender:["renderPrompt"],gmcpSnapshot:["getGMCP"],debugToggle:["setDebugEnabled","isDebugEnabled"],destroy:["destroy"]}),resolveAdapterCapabilities=e=>{const t=e?.capabilities&&"object"==typeof e.capabilities?e.capabilities:{},n={};return Object.entries(b).forEach(([a,o])=>{const i=Object.prototype.hasOwnProperty.call(t,a)?Boolean(t[a]):o.every(t=>"function"==typeof e?.[t]);if(i){const t=o.filter(t=>"function"!=typeof e?.[t]);if(t.length)throw new Error(`nexSys4 adapter capability "${a}" requires methods: ${t.join(", ")}`)}n[a]=i}),Object.freeze(n)},assertAdapterContract=e=>{const t=h.filter(t=>"function"!=typeof e?.[t]);if(t.length)throw new Error(`nexSys4 adapter missing required methods: ${t.join(", ")}`);return resolveAdapterCapabilities(e),e},y=["Char.Vitals","Char.Status","Char.Afflictions.List","Char.Afflictions.Add","Char.Afflictions.Remove","Char.Defences.List","Char.Defences.Add","Char.Defences.Remove","Char.Items.Add","Char.Items.Remove","Char.Items.Update","Char.Items.List","IRE.Rift.List","IRE.Rift.Change","Room.Info","IRE.Target.Info"],registerEventStreamBindings=({eventBus:e,emit:t,pushTrace:n,eventRegistrations:a})=>{if(!e?.registerEvent)return;const registerBinding=(t,o)=>{const i=`nexsys4-${t.replace(/\W+/g,"-")}`,callback=e=>o(e);e.registerEvent(t,callback,{id:i,tags:["nexsys4"]}),a.push({eventName:t,id:i}),n("register:eventStream",{eventName:t,id:i})};y.forEach(e=>{registerBinding(e,n=>{t("GmcpEvent",{tag:e,payload:n??null,rawTag:e})})}),registerBinding("PromptEvent",e=>{t("PromptEvent",{source:"eventstream-prompt",payload:e??null})})},registerStartupGag=({onLocalEvent:e,client:t,notice:n,isDebugEnabled:a})=>{if("function"!=typeof e)return;const gagBlock=()=>{a()||t?.current_block?.forEach(e=>e.gag=!0)};let o=null,i=null,s=null;i=e("CuringStartupBeginEvent",()=>{i?.(),i=null,o||(o=e("PromptEvent",gagBlock))}),s=e("CuringStartupCompleteEvent",()=>{s?.(),s=null,gagBlock(),o?.(),o=null,n("loaded using startup spam gag.")})},escapeRegExp$2=e=>String(e||"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),createTriggerRegex=e=>e.regex instanceof RegExp?e.regex:new RegExp(`^${escapeRegExp$2(e.text)}$`,"i"),resolveTriggerReason=(e,t={})=>"function"==typeof e.resolveReason?e.resolveReason(t):e.reason,resolveTriggerPayload=(e,t,n={})=>{const a={id:e,source:"text"},o=resolveTriggerReason(t,n);return void 0!==t.have&&(a.have=t.have),void 0!==o&&(a.reason=o),"function"==typeof t.resolvePayload&&Object.assign(a,t.resolvePayload(n,a)||{}),a},createBalanceTextTrigger=(e,t)=>({name:`${e}-${t.name}`,regex:createTriggerRegex(t),action:({args:n,emit:a})=>{a("BalanceStateTextEvent",resolveTriggerPayload(e,t,n.groups))}}),createBalanceTextTriggersFromFamilies=(e=[])=>e.flatMap(({id:e,entries:t=[]})=>t.map(t=>createBalanceTextTrigger(e,t))),v=["a dolomite grain","a calcite mote","a bisemutum chip","an azurite mote","a magnesium chip","an aurum flake","a plumbum flake","a stannum flake","an arsenic pellet","a ferrum flake","an antimony flake","a cuprum flake","an argentum flake","a calamine crystal","a pinch of ground cinnabar","a pinch of realgar crystals","a quartz grain","a pinch of ground malachite","a quicksilver droplet","a potash crystal","a gypsum crystal"],S=["dolomite grains","calcite motes","bisemutum chips","azurite motes","magnesium chips","aurum flakes","plumbum flakes","stannum flakes","arsenic pellets","ferrum flakes","antimony flakes","cuprum flakes","argentum flakes","calamine crystals","pinches of ground cinnabar","pinches of ground realgar","quartz grains","pinches of ground malachite","quicksilver droplets","potash crystals","gypsum crystals"],x=["a bloodroot leaf","a piece of kelp","a goldenseal root","some prickly ash bark","some bayberry bark","a ginseng root","a ginger root","a bellwort flower","a lobelia seed","a hawthorn berry","a valerian leaf","a skullcap flower","slippery elm","a kola nut","sileris berry","some irid moss","a black cohosh root","a prickly pear","some myrrh gum","an echinacea root"],C=["bloodroot leaves","pieces of kelp","goldenseal roots","pieces of prickly ash bark","pieces of bayberry bark","ginseng roots","ginger roots","bellwort flowers","lobelia seeds","hawthorn berries","valerian leaves","skullcap flowers","slippery elms","kola nuts","sileris berries","pieces of irid moss","cohosh roots","prickly pears","myrrh gums","echinacea roots"],w={"a dolomite grain":"dolomite","a calcite mote":"calcite","a bisemutum chip":"bisemutum","an azurite mote":"azurite","a magnesium chip":"magnesium","an aurum flake":"aurum","a plumbum flake":"plumbum","a stannum flake":"stannum","an arsenic pellet":"arsenic","a ferrum flake":"ferrum","an antimony flake":"antimony","a cuprum flake":"cuprum","an argentum flake":"argentum","a calamine crystal":"calamine","a pinch of ground cinnabar":"cinnabar","a pinch of realgar crystals":"realgar","a quartz grain":"quartz","a pinch of ground malachite":"malachite","a quicksilver droplet":"quicksilver","a potash crystal":"potash","a gypsum crystal":"gypsum","a bloodroot leaf":"bloodroot","a piece of kelp":"kelp","a goldenseal root":"goldenseal","some prickly ash bark":"ash","some bayberry bark":"bayberry","a ginseng root":"ginseng","a ginger root":"ginger","a bellwort flower":"bellwort","a lobelia seed":"lobelia","a hawthorn berry":"hawthorn","a valerian leaf":"valerian","a skullcap flower":"skullcap","slippery elm":"elm","a kola nut":"kola","sileris berry":"sileris","some irid moss":"moss","a black cohosh root":"cohosh","a prickly pear":"pear","some myrrh gum":"myrrh","an echinacea root":"echinacea","dolomite grains":"dolomite","calcite motes":"calcite","bisemutum chips":"bisemutum","azurite motes":"azurite","magnesium chips":"magnesium","aurum flakes":"aurum","plumbum flakes":"plumbum","stannum flakes":"stannum","arsenic pellets":"arsenic","ferrum flakes":"ferrum","antimony flakes":"antimony","cuprum flakes":"cuprum","argentum flakes":"argentum","calamine crystals":"calamine","pinches of ground cinnabar":"cinnabar","pinches of ground realgar":"realgar","quartz grains":"quartz","pinches of ground malachite":"malachite","quicksilver droplets":"quicksilver","potash crystals":"potash","gypsum crystals":"gypsum","bloodroot leaves":"bloodroot","pieces of kelp":"kelp","goldenseal roots":"goldenseal","pieces of prickly ash bark":"ash","pieces of bayberry bark":"bayberry","ginseng roots":"ginseng","ginger roots":"ginger","bellwort flowers":"bellwort","lobelia seeds":"lobelia","hawthorn berries":"hawthorn","valerian leaves":"valerian","skullcap flowers":"skullcap","slippery elms":"elm","kola nuts":"kola","sileris berries":"sileris","pieces of irid moss":"moss","cohosh roots":"cohosh","prickly pears":"pear","myrrh gums":"myrrh","echinacea roots":"echinacea"},k={antimony:"ginger",argentum:"lobelia",arsenic:"bayberry",aurum:"kelp",bisemutum:"myrrh",calamine:"hawthorn",calcite:"pear",cinnabar:"elm",cuprum:"bellwort",dolomite:"echinacea",ferrum:"ginseng",gypsum:"cohosh",magnesium:"bloodroot",malachite:"skullcap",plumbum:"goldenseal",potash:"moss",quartz:"kola",quicksilver:"sileris",realgar:"valerian",stannum:"ash"},E={ash:"stannum",bayberry:"arsenic",bellwort:"cuprum",bloodroot:"magnesium",cohosh:"gypsum",echinacea:"dolomite",elm:"cinnabar",ginseng:"ferrum",ginger:"antimony",goldenseal:"plumbum",hawthorn:"calamine",kelp:"aurum",kola:"quartz",lobelia:"argentum",moss:"potash",myrrh:"bisemutum",pear:"calcite",sileris:"quicksilver",skullcap:"malachite",valerian:"realgar"},P={azurite:0,bisemutum:0,magnesium:0,plumbum:0,arsenic:0,potash:0,stannum:0,malachite:0,realgar:0,cinnabar:0,antimony:0,ferrum:0,quartz:0,quicksilver:0,aurum:0,calamine:0,cuprum:0,argentum:0,gypsum:0,calcite:0,dolomite:0,ginseng:0,bloodroot:0,kelp:0,hawthorn:0,lobelia:0,bellwort:0,ginger:0,bayberry:0,ash:0,goldenseal:0,moss:0,valerian:0,elm:0,skullcap:0,sileris:0,kola:0,cohosh:0,pear:0,myrrh:0,echinacea:0},escapeRegExp$1=e=>String(e||"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),buildAlternation=(e=[])=>e.map(e=>String(e||"").trim().toLowerCase()).filter(Boolean).map(escapeRegExp$1).join("|"),exactEntry=(e,t,n,a)=>({name:e,text:t,have:n,reason:a}),regexEntry=(e,t,n,a)=>({name:e,regex:t,have:n,reason:a}),dynamicReasonEntry=(e,t,n,a)=>({name:e,regex:t,have:n,resolveReason:a}),dynamicPayloadEntry=(e,t,n)=>({name:e,regex:t,resolvePayload:n}),T=[...x,...v].filter(e=>"some irid moss"!==e&&"a potash crystal"!==e),R=new RegExp(`^You eat (?<item>${buildAlternation(T)})\\.$`,"i"),M=/^Balance used: (?<duration>\d+\.\d{1,2})s\.$/i,D=/^Equilibrium used: (?<duration>\d+\.\d{1,2})s\.$/i,normalizeConsumedHerb=e=>{const t=String(e||"").trim().toLowerCase();return w[t]||t},parseObservedDurationSeconds=(e={})=>Number.parseFloat(String(e.duration||"")),O=[{id:"balance",entries:[exactEntry("ready","You have recovered balance on all limbs.",!0,"ready"),dynamicPayloadEntry("used",M,e=>({have:!1,reason:"used",durationSeconds:parseObservedDurationSeconds(e)}))]},{id:"equilibrium",entries:[exactEntry("ready","You have recovered equilibrium.",!0,"ready"),dynamicPayloadEntry("used",D,e=>({have:!1,reason:"used",durationSeconds:parseObservedDurationSeconds(e)}))]},{id:"herb",entries:[exactEntry("ready","You may eat another plant or mineral.",!0,"ready"),dynamicReasonEntry("use",R,!1,e=>normalizeConsumedHerb(e?.item))]},{id:"focus",entries:[exactEntry("ready","Your mind is able to focus once again.",!0,"ready"),exactEntry("use","You focus your mind intently on curing your mental maladies.",!1,"focus"),regexEntry("shriek",/^A diminutive homunculus resembling \w+ turns its head towards you, its jaws opening wider than what seems possible\. The homunculus stares intently at you and lets out an ear-piercing shriek that disrupts your thoughts\.$/i,!1,"shriek"),regexEntry("concussion",/^(?:The blow sets your head to spinning - you cannot concentrate on anything\.|\w+ swings (?:his|her) shield around, smashing your temple with a backhanded blow\.)$/i,!1,"concussion"),exactEntry("failed","You concentrate, but your mind is too tired to focus.",!1,"failed")]},{id:"sip",entries:[exactEntry("ready","You may drink another health or mana elixir.",!0,"ready"),exactEntry("health","The elixir heals and soothes you.",!1,"health"),exactEntry("mana","Your mind feels stronger and more alert.",!1,"mana"),regexEntry("apply",/^You take some elixir from .+ and rub it into your .+\.$/i,!1,"apply"),regexEntry("failed",/^(?:The elixir flows down your throat without effect\.|The health elixir fizzles away without any discernable effect\.)$/i,!1,"failed")]},{id:"moss",entries:[exactEntry("ready","You may eat another bit of irid moss or potash.",!0,"ready"),exactEntry("use","You feel your health and mana replenished.",!1,"consume"),exactEntry("failed","The potash slides down without effect.",!1,"failed")]},{id:"tree",entries:[exactEntry("ready","You may utilise the tree tattoo again.",!0,"ready"),exactEntry("use","You touch the tree of life tattoo.",!1,"touch"),exactEntry("failed","Your tree of life tattoo glows faintly for a moment then fades, leaving you unchanged.",!1,"failed")]},{id:"salve",entries:[exactEntry("ready","You may apply another salve to yourself.",!0,"ready"),exactEntry("failed","The salve dissolves and quickly disappears after you apply it.",!1,"failed"),regexEntry("restoration",/^\[Curing\]: APPLY RESTORATION TO \w+$/i,!1,"restoration"),regexEntry("apply",/^(?:\[Curing\]: APPLY (?:MENDING|EPIDERMAL|CALORIC).*$|You take out some salve and quickly rub it on your(?:\s\w+)+\.)$/i,!1,"apply")]},{id:"immunity",entries:[exactEntry("ready","Your system is able to absorb antidotes once again.",!0,"ready"),exactEntry("failed","The liquid reacts with the substance still present in your system, cancelling itself out.",!1,"failed"),exactEntry("use","[Curing]: SIP IMMUNITY",!1,"immunity")]},{id:"rebounding",entries:[exactEntry("aura","You feel an aura of rebounding surround you.",!0,"aura"),exactEntry("discharged","Your aura of weapons rebounding disappears.",!0,"discharged"),exactEntry("already-on","You puff on the pipe, but your existing aura of weapons rebounding negates any effect.",!0,"already-on"),regexEntry("malachite",/^You take a long drag of malachite off your pipe\.?$/i,!1,"malachite"),regexEntry("skullcap",/^You take a long drag of skullcap off your pipe\.$/i,!1,"skullcap")]},{id:"smoke",entries:[exactEntry("ready","Your lungs have recovered enough to smoke another mineral or plant.",!0,"ready"),exactEntry("failed","Your lungs have not yet recovered enough to allow you to smoke.",!1,"failed"),regexEntry("use",/^You take a long drag of/i,!1,"smoke")]},{id:"dragonbreath",entries:[regexEntry("ready",/^Your \w+ summoning is complete\.$/i,!0,"ready"),exactEntry("failed","You already have your breath summoned, Wyrm.",!1,"failed"),exactEntry("lightning","You feel your eyes begin to blaze as you summon lightning to your belly.",!1,"lightning"),exactEntry("fire","With an almost inaudible growl, you begin summoning a fiery inferno into your belly.",!1,"fire"),exactEntry("acid","With a great effort, you begin to summon caustic hell to your innards.",!1,"acid"),exactEntry("cold","Flaring your wings and head back, you begin summoning forth the icy cold of the pure, endless void into your belly.",!1,"cold"),exactEntry("venom","With a great shudder, you begin to summon forth the defiling, deadly wyrmvenom of legend.",!1,"venom"),exactEntry("psi","Calling upon the vast well of mental power at your disposal, you begin to summon a mind-rending blast of psi energy.",!1,"psi")]},{id:"deafness",entries:[exactEntry("ready","The aural world fades to silence.",!0,"ready"),exactEntry("calamine","You eat a calamine crystal.",!1,"calamine"),exactEntry("hawthorn","You eat a hawthorn berry.",!1,"hawthorn")]},{id:"deaf",entries:[exactEntry("already-on","You are already deaf.",!0,"already-on"),exactEntry("trance","The world about you falls silent as the deafness trance sinks upon you.",!0,"trance"),exactEntry("use","You stare straight ahead and concentrate on a distant focal point.",!1,"deaf")]},{id:"blind",entries:[exactEntry("already-on","You are already blind.",!0,"already-on"),exactEntry("ready","You open your eyes once more, and the world about you is darkness.",!0,"ready"),exactEntry("use","You close your eyes for a moment.",!1,"blind")]},{id:"speed",entries:[exactEntry("ready","Tiny tremours spread through your body as the world seems to slow down.",!0,"ready"),exactEntry("use","[Curing]: SIP SPEED",!1,"speed")]},{id:"sileris",entries:[exactEntry("quicksilver-ready","The quicksilver hardens into a supple metallic shell.",!0,"quicksilver"),exactEntry("berry-ready","The sileris berry juice hardens into a supple purple shell.",!0,"sileris"),exactEntry("quicksilver-use","You apply a quicksilver droplet to yourself.",!1,"quicksilver"),exactEntry("berry-use","You apply a sileris berry to yourself.",!1,"sileris")]},{id:"voice",entries:[exactEntry("ready","You have recovered voice balance.",!0,"ready")]},{id:"tremolo",entries:[exactEntry("ready","You may mangle a limb with the vibrato or tremolo once again.",!0,"ready"),regexEntry("arm-use",/^With a trilling vibrato you attack \w+'s broken (?:left|right) arm\. (?:He|She) screams in pain\.$/i,!1,"arm"),regexEntry("leg-use",/^Using a heavy tremolo you brutally punish \w+'s already shattered (?:left|right) leg\.$/i,!1,"leg")]},{id:"homunculus",entries:[exactEntry("ready","You may order your homunculus once more.",!0,"ready"),exactEntry("failed","You are unable to order your homunculus again so soon.",!1,"failed"),regexEntry("use",/^Focusing your mind on a diminutive homunculus resembling (?:\w+), you command it to disrupt (?:\w+)'s focus\. The homunculus turns towards (?:him|her) before letting out an ear-piercing shriek\.$/i,!1,"shriek")]},{id:"fitness",entries:[exactEntry("ready","You may purge your lungs once again.",!0,"ready"),exactEntry("use","You inhale deeply, purging yourself of your asthmatic condition.",!1,"fitness"),exactEntry("failed","You may not purge your lungs again as of this time.",!1,"failed")]},{id:"bloodboil",entries:[exactEntry("ready","You may boil your blood once again.",!0,"ready"),exactEntry("use","You summon spirits of fire to burn off that which afflicts you.",!1,"bloodboil"),exactEntry("failed","You have not recovered enough to boil your blood again as of yet.",!1,"failed")]},{id:"dragonheal",entries:[exactEntry("ready","You may purge your great form of afflictions once again.",!0,"ready"),exactEntry("use","You let out a great keening, and cast the impurities from your form.",!1,"dragonheal"),exactEntry("failed-recovery","You have not yet recovered enough to purge your great form of afflictions.",!1,"failed"),exactEntry("failed-disjointed","Your mind and body are too disjointed to invoke your healing powers, wyrm.",!1,"failed")]},{id:"rage",entries:[exactEntry("ready","You may channel your rage to cure your afflictions once again.",!0,"ready"),exactEntry("use","You allow your pent-up rage to vent and your eyes flash dangerously.",!1,"rage")]},{id:"salt",entries:[exactEntry("use","Directing the energy of salt, you surround yourself with a primal aura, purging yourself of ailments.",!1,"salt"),exactEntry("ready","You may channel alchemical energy to heal yourself once again.",!0,"ready"),exactEntry("failed","You have not recovered enough to heal yourself with alchemical energy once again.",!1,"failed")]},{id:"shrugging",entries:[exactEntry("ready","Your body has recovered enough to shrug afflictions once again.",!0,"ready"),exactEntry("use","Focusing inward, you purge your body of afflictions.",!1,"shrugging"),exactEntry("failed","You may not shrug again so soon.",!1,"failed")]},{id:"fool",entries:[exactEntry("ready","You may heal another affliction.",!0,"ready"),exactEntry("use","You press the Fool tarot to your forehead.",!1,"fool"),exactEntry("failed","The Fool has no effect on you.",!1,"failed")]},{id:"writhe",entries:[regexEntry("free",/^You have writhed free\b/i,!0,"ready"),exactEntry("no-affliction","You begin to writhe helplessly, throwing your body off balance.",!0,"no-affliction"),exactEntry("entangled","You begin to struggle free of your entanglement.",!1,"entangled"),exactEntry("transfixation","You begin trying to wrest your mind free of that which has transfixed it.",!1,"transfixation"),exactEntry("failed-entangled","You twist and turn as you attempt to escape from your entanglement.",!1,"failed"),exactEntry("failed-transfixation","You continue trying to wrest your mind free.",!1,"failed")]},{id:"impalewrithe",entries:[exactEntry("free-direct","With an heroic effort you manage to writhe yourself free from the weapon that impaled you.",!0,"impale"),exactEntry("use","You begin to writhe furiously to escape the blade that has impaled you.",!1,"impale"),regexEntry("free-swathe",/^With a vicious snarl \w+ carves a merciless swathe through your steaming guts\. You gurgle and choke as s?he withdraws (?:his|her) dripping blade, glistening with gore\.$/i,!0,"impale"),regexEntry("free-wrench",/^Searing pain tears through your midsection as you wrench away from [A-Z][a-z]+, (?:his|her) weapon ripping unceremoniously through your innards\.$/i,!0,"impale"),regexEntry("free-slide",/^With a snarl of contempt, \w+ allows you to slide free of (?:her|his) weapon\.$/i,!0,"impale")]},{id:"alleviate",entries:[exactEntry("ready","You may purge your body of afflictions once again.",!0,"ready"),exactEntry("use","Applying your knowledge of anatomy, you massage pressure points with your fingers, and a flood of relief courses through your body.",!1,"alleviate"),exactEntry("no-afflictions","There are no pesky afflictions keeping you from your destiny, Warrior.",!1,"no-afflictions"),exactEntry("failed","You are too exhausted to purge your body of afflictions.",!1,"failed")]},{id:"slough",entries:[exactEntry("use","You allow your outer layers to slough away, their fires extinguished along with the impurities contaminating them.",!1,"slough"),exactEntry("ready","You may slough off the impurities that plague you once again.",!0,"ready"),exactEntry("failed","You may not slough off the impurities again quite yet.",!1,"failed")]}],createBalanceTextTriggers=()=>({group:"balance/text",triggers:createBalanceTextTriggersFromFamilies(O)}),parsePositiveInteger=(e,t=1)=>{const n=Number.parseInt(String(e??""),10);return Number.isFinite(n)&&n>0?n:t},cleanItemText=e=>String(e||"").trim(),emitInventoryDelta=({emit:e,item:t,delta:n,source:a="text-trigger"})=>{e("CacheInventoryDeltaTextEvent",{item:cleanItemText(t),delta:n,source:a})},createCacheTextTriggers=()=>({group:"cache/text",triggers:[{name:"rift-out",regex:/^You remove (?<amount>\d+) (?<item>.+?), bringing the total in the rift to (?<riftAmount>\d+)\.$/i,action:({args:e,emit:t})=>{const n=e?.groups||{};t("CacheRiftOutTextEvent",{item:cleanItemText(n.item),amount:parsePositiveInteger(n.amount),riftAmount:parsePositiveInteger(n.riftAmount,0),source:"text-trigger"})}},{name:"curative-consume",regex:/^You eat (?<item>.+?)\.$/i,action:({args:e,emit:t})=>{t("CacheCurativeConsumedTextEvent",{item:cleanItemText((e?.groups||{}).item),amount:1,source:"text-trigger"})}},{name:"rift-in",regex:/^You store (?<amount>\d+) (?<item>.+?), bringing the total in the rift to (?<riftAmount>\d+)(?<capacityMarker>, which is the maximum for that type of object)?\.$/i,action:({args:e,emit:t})=>{const n=e?.groups||{};t("CacheRiftInTextEvent",{item:cleanItemText(n.item),amount:parsePositiveInteger(n.amount),riftAmount:parsePositiveInteger(n.riftAmount,0),atCapacity:Boolean(n.capacityMarker),source:"text-trigger"})}},{name:"rift-full",regex:/^You may not store any more of that type of thing\.$/i,action:({emit:e})=>{e("CacheRiftFullTextEvent",{source:"text-trigger"})}},{name:"inventory-empty",regex:/^You have no (?<item>.+?) in your inventory\.$/i,action:({args:e,emit:t})=>{t("CacheInventoryEmptyTextEvent",{item:cleanItemText((e?.groups||{}).item),source:"text-trigger"})}},{name:"give-away",regex:/^You give (?<item>.+?) to .+\.$/i,action:({args:e,emit:t})=>{emitInventoryDelta({emit:t,item:e?.groups?.item,delta:-1})}},{name:"receive",regex:/^.+ gives (?<item>.+?) to you\.$/i,action:({args:e,emit:t})=>{emitInventoryDelta({emit:t,item:e?.groups?.item,delta:1})}},{name:"drop",regex:/^You drop (?<item>.+?)\.$/i,action:({args:e,emit:t})=>{emitInventoryDelta({emit:t,item:e?.groups?.item,delta:-1})}}]}),normalizeTextValue=e=>String(e||"").trim(),parseDelimitedEntries=e=>String(e||"").split(/[|,]/).map(e=>e.trim().toLowerCase().replace(/^,+|,+$/g,"")).filter(Boolean),parseSpaceDelimitedEntries=e=>String(e||"").replace(/\s+\((\d+)\)/g,"($1)").trim().split(/\s+/).map(e=>e.trim().toLowerCase().replace(/^,+|,+$/g,"")).filter(Boolean),buildLimbPayload=({args:e,client:t,source:n="text-trigger"})=>({limb:normalizeTextValue(e.groups?.limb),raw:normalizeTextValue(t?.current_line?.line),source:n}),createLimbTextTriggers=()=>({group:"limb/selfDamage",triggers:[{name:"carve-hit",regex:/^As .+? carves into you, you perceive that \w+ has dealt (?<amount>[\d.]+)% damage to your (?<limb>.+)\.$/,action:({args:e,client:t,emit:n})=>{n("LimbDamageTextEvent",{...buildLimbPayload({args:e,client:t}),amount:Number(e.groups?.amount)})}},{name:"crunch-hit",regex:/^As .+?'s? blow crunches into you, you perceive that \w+ has dealt (?<amount>[\d.]+)% damage to your (?<limb>.+)\.$/,action:({args:e,client:t,emit:n})=>{n("LimbDamageTextEvent",{...buildLimbPayload({args:e,client:t}),amount:Number(e.groups?.amount)})}},{name:"pain-subsides",regex:/^The pain plaguing your (?<limb>.+) subsides\.$/,action:({args:e,client:t,emit:n})=>{n("LimbResetTextEvent",buildLimbPayload({args:e,client:t}))}}]}),normalizeTag=e=>String(e||"").trim().toLowerCase(),normalizeCommandSeparator=e=>String(e??"").trim(),toNumber=(e,t=0)=>{const n=Number(e);return Number.isFinite(n)?n:t},toOptionalBooleanFromYesNo=e=>{if(null==e||""===e)return;if("boolean"==typeof e)return e;if("number"==typeof e)return 0!==e;const t=String(e).trim().toLowerCase();return!!["yes","1","true","on"].includes(t)||!["no","0","false","off"].includes(t)&&void 0},boolWord=e=>e?"on":"off",nowMs=()=>Date.now(),$={classQueue:{name:"class",type:"c!p!t!w",pre:["touch soul","stand"],post:[],exclusions:["fullQueue"]},freeQueue:{name:"free",type:"free",pre:["touch soul","stand"],post:[],exclusions:["fullQueue","shieldQueue"]},fullQueue:{name:"full",type:"ebc!w!p!t",pre:["touch soul","stand"],post:[],exclusions:["freeQueue","shieldQueue","classQueue"]},shieldQueue:{name:"shield",type:"eb!w!t",pre:["touch soul","stand"],post:[],exclusions:["freeQueue","fullQueue"]},shipQueue:{name:"ship",type:"s!w!t",pre:["touch soul","stand"],post:[],exclusions:[]},bloodcloakQueue:{name:"bloodcloak",type:"!teb",pre:["touch soul"],post:[],exclusions:["fullQueue","freeQueue"]},battlerageQueue:{name:"battlerage",type:"!p!t!wu",pre:["touch soul"],post:[],exclusions:[]},stunQueue:{name:"stun",type:"!t",pre:["touch soul"],post:[],exclusions:[]}},escapeRegExp=e=>String(e).replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),normalizeTriggerName=e=>String(e||"").replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,""),resolveSeparator=e=>normalizeCommandSeparator(e?.settings?.command_separator??e?.settings?.commandSeparator)||"|",splitCommands=(e,t)=>String(e||"").split(String(t||"|")||"|").map(e=>e.trim()).filter(Boolean),createQueueSentTrigger=([e,t])=>({name:`sent-${normalizeTriggerName(e)}`,regex:new RegExp(`^\\[System\\]: Added (?<commands>.+) to your ${escapeRegExp(t.type)} queue\\.$`,"i"),action:({args:n,client:a,emit:o})=>{const i=resolveSeparator(a),s=normalizeTextValue(n.groups?.commands);o("QueueSentTextEvent",{raw:normalizeTextValue(a?.current_line?.line),queueId:e,queueName:t.name,queueType:t.type,rawCommands:s,commands:splitCommands(s,i),separator:i,source:"text-trigger"})}}),createQueueTextTriggers=()=>({group:"queue/text",triggers:Object.entries($).map(createQueueSentTrigger)}),createAffPrioritySnapshotTriggers=()=>({group:"serverside/affPrioritySnapshot",session:{name:"affPriorities",completionEvent:"ServersideAffPrioSnapshotCompleteTextEvent",fallbackCloseEvents:[{event:"PromptEvent",reason:"prompt"},{event:"CuringStartupCompleteEvent",reason:"startup-complete"}],resetEvents:[{event:"CuringStartupBeginEvent",reason:"startup-begin"}]},triggers:[{name:"open",opener:!0,openReason:"aff-priority-header",regex:/^Your affliction curing priorities(?::| for the priority set (?<set>\S+):)$/,action:({args:e,emit:t})=>{t("ServersideAffPrioSnapshotOpenTextEvent",{topic:"affPriorities",reason:"aff-priority-header",set:e.groups?.set||""})}},{name:"line",regex:/^(?<prio>\d+):\s*(?<entries>.*)$/,action:({args:e,emit:t})=>{const n=parseSpaceDelimitedEntries(e.groups.entries);return!!n.length&&(n.forEach(n=>{t("ServersideAffPrioTextEvent",{aff:n,prio:Number(e.groups.prio)})}),!0)}},{name:"close",closer:!0,closeReason:"aff-priority-terminal-line",regex:/^Affs with priority 26 are ignored\.$/i}]}),createCuringSetSnapshotTriggers=()=>{let e=[],t="";const reset=()=>{e=[],t=""};return{group:"serverside/curingSetSnapshot",session:{name:"curingSets",completionEvent:"ServersideCuringSetSnapshotCompleteTextEvent",fallbackCloseEvents:[{event:"PromptEvent",reason:"prompt"},{event:"CuringStartupCompleteEvent",reason:"startup-complete"}],resetEvents:[{event:"CuringStartupBeginEvent",reason:"startup-begin"}]},triggers:[{name:"open",opener:!0,openReason:"curingset-list-header",regex:/^Your current curing sets$/,action:()=>{reset()}},{name:"set-line",regex:/^(?!-+$)(?<name>\S+)(?<current> \(current\))?$/,action:({args:n})=>{const a=String(n.groups?.name||"").trim();return!!a&&(e.push(a),n.groups?.current&&(t=a),!0)}},{name:"close",closer:!0,closeReason:"curingset-total-line",regex:/^You are using a total of (?<used>\d+) of your allowed (?<limit>\d+) curing sets\.$/,action:({args:n,emit:a})=>{a("ServersideCuringSetsTextEvent",{sets:[...e],activeSet:t,used:Number(n.groups.used),limit:Number(n.groups.limit)})}},{name:"empty",opener:!0,closer:!0,openReason:"curingset-empty-header",closeReason:"curingset-empty-line",regex:/^You have no sets defined/,action:({emit:e})=>{reset(),e("ServersideCuringSetsTextEvent",{sets:[],activeSet:"",used:0})}}]}},createCuringSetSwitchTriggers=()=>({group:"serverside/curingSetSwitch",triggers:[{name:"switched",regex:/^You will now cure using the (?<set>\S+) set\.$/,action:({args:e,emit:t})=>{t("ServersideCuringSetSwitchedTextEvent",{set:e.groups?.set||""})}}]}),createDefPrioritySnapshotTriggers=()=>({group:"serverside/defPrioritySnapshot",session:{name:"defPriorities",completionEvent:"ServersideDefPrioSnapshotCompleteTextEvent",fallbackCloseEvents:[{event:"PromptEvent",reason:"prompt"},{event:"CuringStartupCompleteEvent",reason:"startup-complete"}],resetEvents:[{event:"CuringStartupBeginEvent",reason:"startup-begin"}]},triggers:[{name:"open",opener:!0,openReason:"def-priority-header",regex:/^Your defence priorities(?::| for curing set (?<set>\S+):)$/,action:({args:e,emit:t})=>{t("ServersideDefPrioSnapshotOpenTextEvent",{topic:"defPriorities",reason:"def-priority-header",set:e.groups?.set||""})}},{name:"line",regex:/^(?<def>\w+)\s*: (?<prio>\d+)$/,action:({args:e,emit:t})=>{t("ServersideDefPrioTextEvent",{def:String(e.groups.def||"").toLowerCase(),prio:Number(e.groups.prio)})}}]}),createLivePriorityConfirmationTriggers=()=>({group:"serverside/livePriorityConfirmations",triggers:[{name:"aff-set",regex:/^You have set the '(?<aff>[^']+)' affliction to the (?<prio>\d+) priority\.$/,action:({args:e,emit:t})=>{t("ServersideAffPrioTextEvent",{aff:String(e.groups.aff||"").toLowerCase(),prio:Number(e.groups.prio),source:"live-confirmation"})}},{name:"def-set",regex:/^You have set the '(?<def>\w+)' defence to the (?<prio>\d+) priority\.$/,action:({args:e,emit:t})=>{t("ServersideDefPrioTextEvent",{def:String(e.groups.def||"").toLowerCase(),prio:Number(e.groups.prio),source:"live-confirmation"})}}]}),emitStatus$1=(e,t,n)=>{e("ServersideStatusTextEvent",{key:t,value:n})},createLiveStatusConfirmationTriggers=()=>({group:"serverside/liveStatusConfirmations",triggers:[{name:"enabled",regex:/^Curing (?<value>activated|disabled)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"enabled",/^activated$/.test(e.groups.value))}},{name:"transmutation-on",regex:/^You will now use transmutation cures\.$/,action:({emit:e})=>{emitStatus$1(e,"transmutation",!0)}},{name:"transmutation-off",regex:/^You will now use concoction-based cures\.$/,action:({emit:e})=>{emitStatus$1(e,"transmutation",!1)}},{name:"sip-priority",regex:/^Curing will now prioritise (?<value>mana|health) over (?<other>mana|health)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"sipPriority",String(e.groups.value||"").toLowerCase())}},{name:"sip-threshold",regex:/^(?<kind>Health|Mana) curing threshold set to (?<value>\d+)%\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"health"===String(e.groups.kind||"").toLowerCase()?"sipHealthAt":"sipManaAt",Number(e.groups.value))}},{name:"moss-threshold",regex:/^Moss (?<kind>health|mana) curing threshold set to (?<value>\d+)%\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"health"===String(e.groups.kind||"").toLowerCase()?"mossHealthAt":"mossManaAt",Number(e.groups.value))}},{name:"focus",regex:/^Automatic usage of focusing (?<value>activated|disabled)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"focus",/^activated$/.test(e.groups.value))}},{name:"focus-over-herbs",regex:/^You will now prioritise (?<value>focus|herbs) over (?<other>focus|herbs)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"focusOverHerbs",/^focus$/.test(e.groups.value))}},{name:"tree",regex:/^Automatic usage of the tree tattoo (?<value>activated|disabled)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"tree",/^activated$/.test(e.groups.value)?"on":"off")}},{name:"clot-on",regex:/^You will now attempt to clot your wounds\.$/,action:({emit:e})=>{emitStatus$1(e,"clot",!0)}},{name:"clot-off",regex:/^You will no longer attempt to clot your wounds\.$/,action:({emit:e})=>{emitStatus$1(e,"clot",!1)}},{name:"clot-at",regex:/^Will clot above (?<value>\d+) bleeding\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"clotAt",Number(e.groups.value))}},{name:"insomnia-on",regex:/^You will now use the insomnia ability\.$/,action:({emit:e})=>{emitStatus$1(e,"insomnia",!0)}},{name:"insomnia-off",regex:/^You will now not use the insomnia ability\.$/,action:({emit:e})=>{emitStatus$1(e,"insomnia",!1)}},{name:"fractures-above",regex:/^Will cure health based afflictions above (?<value>\d+)%\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"fracturesAbove",Number(e.groups.value))}},{name:"mana-threshold",regex:/^You will now use mana if above (?<value>\d+)% of your maximum mana reserves\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"manaThreshold",Number(e.groups.value))}},{name:"batch-on",regex:/^You will now attempt to cure multiple things at once\.$/,action:({emit:e})=>{emitStatus$1(e,"batch",!0)}},{name:"batch-off",regex:/^You will now cure one thing at a time\.$/,action:({emit:e})=>{emitStatus$1(e,"batch",!1)}},{name:"clot-above",regex:/^You will now use corrupted clotting if above (?<value>\d+)% of your maximum health reserves\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"clotAbove",Number(e.groups.value))}}]}),emitStatus=(e,t,n)=>{e("ServersideStatusTextEvent",{key:t,value:n})},I=[()=>({group:"system/systemEvent",triggers:[{name:"line",regex:/^SystemEvent (?<eventName>.+)$/,action:({args:e,client:t,emit:n})=>{const a=normalizeTextValue(e.groups?.eventName);if(!a)return;const o=normalizeTextValue(t?.current_line?.line);n(a,{raw:o});const i=a.match(/^(?<queueName>[A-Za-z]+)QueueFired$/);i?.groups?.queueName&&n("QueueFiredTextEvent",{raw:o,queueName:i.groups.queueName})}},{name:"all-queues-cleared",regex:/^\[System\]: All queued commands cleared\.$/,action:({client:e,emit:t})=>{t("AllQueuesClearedTextEvent",{raw:normalizeTextValue(e?.current_line?.line)})}}]}),()=>({group:"system/separatorChanged",triggers:[{name:"separator-changed",regex:/^Your command separator is now:\s*(?<sep>\S+)\s*$/,action:({args:e,emit:t})=>{const n=String(e.groups?.sep||"").trim();n&&t("CommandSeparatorChangedTextEvent",{separator:n})}}]}),createBalanceTextTriggers,createCacheTextTriggers,createLimbTextTriggers,createQueueTextTriggers,()=>({group:"serverside/statusSnapshot",session:{name:"status",completionEvent:"ServersideStatusSnapshotCompleteTextEvent",fallbackCloseEvents:[{event:"PromptEvent",reason:"prompt"},{event:"CuringStartupCompleteEvent",reason:"startup-complete"}],resetEvents:[{event:"CuringStartupBeginEvent",reason:"startup-begin"}]},triggers:[{name:"open",opener:!0,openReason:"status-header",regex:/^Curing Status:$/},{name:"enabled",regex:/^Enabled:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"enabled",/^yes$/i.test(e.groups.value))}},{name:"reporting",regex:/^Reporting commands:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"reporting",/^yes$/i.test(e.groups.value))}},{name:"sipping",regex:/^Sipping:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"sipping",/^yes$/i.test(e.groups.value))}},{name:"afflictions",regex:/^Affliction Curing:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"afflictions",/^yes$/i.test(e.groups.value))}},{name:"defences",regex:/^Defence Upkeep:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"defences",/^yes$/i.test(e.groups.value))}},{name:"transmutation",regex:/^Curing Method:\s+(?<value>\w+)$/,action:({args:e,emit:t})=>{emitStatus(t,"transmutation","transmutation"===String(e.groups.value||"").toLowerCase())}},{name:"fallback",regex:/^Fallback Curing:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"fallback",/^yes$/i.test(e.groups.value))}},{name:"custom-aff-priority",regex:/^Custom Curing Priority:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"customAffPriority",/^yes$/i.test(e.groups.value))}},{name:"custom-def-priority",regex:/^Custom Defence Priority:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"customDefPriority",/^yes$/i.test(e.groups.value))}},{name:"sip-priority",regex:/^Health\/Mana Priority:\s+(?<value>Health|Mana)$/,action:({args:e,emit:t})=>{emitStatus(t,"sipPriority",String(e.groups.value||"").toLowerCase())}},{name:"sip-health-at",regex:/^Sip health at:\s+(?<value>\d+)%$/,action:({args:e,emit:t})=>{emitStatus(t,"sipHealthAt",Number(e.groups.value))}},{name:"sip-mana-at",regex:/^Sip mana at:\s+(?<value>\d+)%$/,action:({args:e,emit:t})=>{emitStatus(t,"sipManaAt",Number(e.groups.value))}},{name:"moss-health-at",regex:/^Eat moss below health:\s+(?<value>\d+)%$/,action:({args:e,emit:t})=>{emitStatus(t,"mossHealthAt",Number(e.groups.value))}},{name:"moss-mana-at",regex:/^Eat moss below mana:\s+(?<value>\d+)%$/,action:({args:e,emit:t})=>{emitStatus(t,"mossManaAt",Number(e.groups.value))}},{name:"focus",regex:/^Use focus:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"focus",/^yes$/i.test(e.groups.value))}},{name:"focus-over-herbs",regex:/^Focus over herbs:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"focusOverHerbs",/^yes$/i.test(e.groups.value))}},{name:"clot",regex:/^Use clot:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"clot",/^yes$/i.test(e.groups.value))}},{name:"tree",regex:/^Use tree:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"tree",/^yes$/i.test(e.groups.value)?"on":"off")}},{name:"clot-at",regex:/^Clot at:\s+(?<value>\d+) bleeding$/,action:({args:e,emit:t})=>{emitStatus(t,"clotAt",Number(e.groups.value))}},{name:"insomnia",regex:/^Use insomnia:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"insomnia",/^yes$/i.test(e.groups.value))}},{name:"fractures-above",regex:/^Will cure fractures above:\s+(?<value>\d+)% health$/,action:({args:e,emit:t})=>{emitStatus(t,"fracturesAbove",Number(e.groups.value))}},{name:"mana-threshold",regex:/^Will use mana above:\s+(?<value>\d+)% mana$/,action:({args:e,emit:t})=>{emitStatus(t,"manaThreshold",Number(e.groups.value))}},{name:"clot-health",regex:/^Will clot health until:\s+(?<value>\d+)% health$/,action:({args:e,emit:t})=>{emitStatus(t,"clotAbove",Number(e.groups.value))}},{name:"batch",regex:/^Batch actions:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"batch",/^yes$/i.test(e.groups.value))}},{name:"kaido-transmute",closer:!0,closeReason:"status-terminal-line",regex:/^Use Kaido Transmute:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"kaidoTransmute",/^yes$/i.test(e.groups.value))}}]}),createAffPrioritySnapshotTriggers,createDefPrioritySnapshotTriggers,createCuringSetSnapshotTriggers,createCuringSetSwitchTriggers,createLiveStatusConfirmationTriggers,createLivePriorityConfirmationTriggers,()=>({group:"serverside/queuePrediction",triggers:[{name:"queue-line",regex:/^CURING QUEUE(?:\s+LIST)?\s*:\s*(?<entries>.*)$/,action:({args:e,emit:t})=>{t("ServersideQueueListTextEvent",{queue:parseDelimitedEntries(e.groups.entries)})}},{name:"predictions-line",regex:/^CURING PREDICTIONS?\s*:\s*(?<entries>.*)$/,action:({args:e,emit:t})=>{t("ServersidePredictionsTextEvent",{predictions:parseDelimitedEntries(e.groups.entries).reduce((e,t)=>(e[t]=!0,e),{})})}}]})],createTriggerCatalog=()=>I.map(e=>e()),registerTextTriggers=({triggerApi:e,client:t,emit:n,onLocalEvent:a,pushTrace:o,triggerIds:i,registerCleanup:s,registerTriggerGroupActivity:l,triggerSessions:c})=>{if(!e?.triggers?.add)return void o("register:nexAction:skipped",{reason:"trigger-api-unavailable"});const u="function"==typeof e.triggers.enable&&"function"==typeof e.triggers.disable,sessionToggleTag=e=>`session:${e}`,setSessionTriggers=(t,n)=>{if(!u)return;const a=sessionToggleTag(t);n?e.triggers.enable([a]):e.triggers.disable([a]),o(n?"session:enable":"session:disable",{session:t,tag:a})},resetSession=(e,t={})=>{const n=c[e];return!!n&&(n.active=!1,n.hasLines=!1,n.lastReason=String(t.reason||"reset"),n.lastClosedAt=Date.now(),setSessionTriggers(e,!1),o("session:reset",{session:e,...t}),!0)},beginSession=(e,t={})=>{const n=c[e];return!!n&&(setSessionTriggers(e,!0),n.active?(o("session:reopen",{session:e,...t}),!1):(n.active=!0,n.hasLines=!1,n.lastReason=String(t.reason||t.source||"begin"),n.lastOpenedAt=Date.now(),o("session:begin",{session:e,...t}),!0))},markSessionHasData=e=>{const t=c[e];t?.active&&!t.hasLines&&(t.hasLines=!0)},completeSession=(e,t={})=>{const a=c[e];if(!a?.active)return!1;const i=a.hasLines;return a.active=!1,a.hasLines=!1,a.lastReason=String(t.reason||"complete"),a.lastClosedAt=Date.now(),setSessionTriggers(e,!1),o("session:complete",{session:e,reason:a.lastReason,hadLines:i,completionEvent:t.completionEvent||""}),t.completionEvent&&n(t.completionEvent,{topic:e,reason:a.lastReason}),!0},registerTextTrigger=({id:a,group:s,regex:c,action:u,enabled:d=!0,tags:p=[],once:m,duration:g,fg:h,bg:b,lines:y,prompt:v,finalAction:S,onRemove:x,onDisable:C,onEnable:w})=>{e.triggers.add({id:a,regex:c,enabled:d,tags:p,once:m,duration:g,fg:h,bg:b,lines:y,prompt:v,finalAction:S,onRemove:x,onDisable:C,onEnable:w,action:e=>u({args:e,client:t,emit:n,pushTrace:o})}),i.push(a),l(s,"triggerCount"),o("register:nexAction",{id:a,group:s,enabled:d,regex:c instanceof RegExp?c.source:String(c)})};createTriggerCatalog().forEach(e=>{const t=e.session;t&&"function"==typeof a&&((t.resetEvents||[]).forEach(({event:n,reason:o})=>{s(a(n,()=>resetSession(t.name,{reason:o,event:n}))),l(e.group,"hookCount")}),(t.fallbackCloseEvents||[]).forEach(({event:n,reason:o})=>{s(a(n,()=>completeSession(t.name,{reason:o,completionEvent:t.completionEvent}))),l(e.group,"hookCount")})),e.triggers.forEach(n=>{const a=t?.name,o=Boolean(a&&!0===n.opener),i=Boolean(a&&!0===n.closer),s=["nexsys4","adapter","text",`group:${e.group}`],l=Boolean(a)&&!o,d=l?[sessionToggleTag(a)]:[],p=(!l||!u)&&(n.enabled??!0);registerTextTrigger({id:`nexsys4-${e.group.replace(/[\\/]+/g,"-")}-${n.name}`,group:e.group,regex:n.regex,enabled:p,tags:[...s,...d,...n.tags||[]],once:n.once,duration:n.duration,fg:n.fg,bg:n.bg,lines:n.lines,prompt:n.prompt,finalAction:n.finalAction,onRemove:n.onRemove,onDisable:n.onDisable,onEnable:n.onEnable,action:s=>{if(o)beginSession(a,{group:e.group,trigger:n.name,reason:n.openReason||"open"});else if(a&&!c[a]?.active)return;const l="function"==typeof n.action?n.action(s):void 0;return!a||o||i||!1===l||markSessionHasData(a),i&&completeSession(a,{reason:n.closeReason||"close",completionEvent:t.completionEvent}),l}})})})},N="",L="#c1bfff",j="#FFF2D7",B=`<span style="color:${L}">[-</span><span style="color:${"#cf6dfc"}">nexSys</span><span style="color:${L}">-] </span>`,F=Object.freeze({fg:j,bg:N}),q=Object.freeze({default:Object.freeze({default:Object.freeze({message:F})}),affGot:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" +aff ",fg:"orange",bg:N}),message:Object.freeze({fg:"green",bg:N})})}),affLost:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" -aff ",fg:"orange",bg:N}),message:Object.freeze({fg:"red",bg:N})})}),defGot:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" +def ",fg:"purple",bg:N}),message:Object.freeze({fg:"green",bg:N})})}),defLost:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" -def ",fg:"purple",bg:N}),message:Object.freeze({fg:"red",bg:N})})}),balanceRecovered:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" onBal ",fg:"brown",bg:N}),message:Object.freeze({fg:"green",bg:N})})}),balanceLost:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" offBal ",fg:"brown",bg:N}),message:Object.freeze({fg:"red",bg:N})})}),trackableGot:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" + ",fg:"white",bg:N}),message:Object.freeze({fg:"green",bg:N})})}),trackableLost:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" - ",fg:"white",bg:N}),message:Object.freeze({fg:"red",bg:N})})}),priority:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:"priority change: ",fg:"yellow",bg:N}),message:Object.freeze({fg:"red",bg:N})})}),output:Object.freeze({default:Object.freeze({message:Object.freeze({fg:"red",bg:N})})})}),escapeHtml$1=e=>String(e||"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),normalizeNoticeToken=(e,t="")=>String(e||t).trim().toLowerCase(),resolveNoticeStyle=(e={})=>{const t=String(e.category||"default").trim(),n=normalizeNoticeToken(e.action,"default"),a=q[t]||q.default;return a[n]||a.default||q.default.default},normalizeNoticePart=(e,t=F)=>"string"==typeof e?{text:e,fg:t.fg,bg:t.bg}:{text:String(e?.text||""),fg:String(e?.fg??t.fg??F.fg),bg:String(e?.bg??t.bg??F.bg)},buildNoticeParts=(e,t={})=>{const n=resolveNoticeStyle(t),a=n.message||F;if(Array.isArray(t.parts)&&t.parts.length)return t.parts.map(e=>normalizeNoticePart(e,a)).filter(e=>e.text);if(t.title)return[normalizeNoticePart({text:String(t.title),fg:t.titleFg??a.fg,bg:t.titleBg??a.bg},a),normalizeNoticePart({text:String(e),fg:t.fg??a.fg,bg:t.bg??a.bg},a)].filter(e=>e.text);const o=[];return n.prefix?.text&&o.push(normalizeNoticePart(n.prefix,a)),o.push(normalizeNoticePart({text:String(e),fg:t.fg??a.fg,bg:t.bg??a.bg},a)),o.filter(e=>e.text)},renderSpanStyle=e=>["white-space:pre-wrap",e.fg?`color:${escapeHtml$1(e.fg)}`:"",e.bg?`background-color:${escapeHtml$1(e.bg)}`:""].filter(Boolean).join(";"),renderNoticeHtml=(e,t={},n=[])=>`<span class="nexsys4-notice" style="white-space:pre-wrap;">${B}${t.html?String(t.html):(n.length?n:buildNoticeParts(e,t)).map(e=>`<span style="${renderSpanStyle(e)}">${escapeHtml$1(e.text)}</span>`).join("")}</span>`,createNoticeTransport=({client:e,emit:t,pushTrace:n})=>({notice(a,o={}){const i=String(a),s=buildNoticeParts(i,o);e.add_html_line(renderNoticeHtml(i,o,s)),n("notice",{message:i,context:o,parts:s}),t("NoticeEvent",{message:i,context:o,parts:s})}}),createTriggerSessionState=()=>({active:!1,hasLines:!1,lastReason:"idle",lastOpenedAt:0,lastClosedAt:0}),createAdapterDebugState=({debug:e=!1,traceLimit:t=200,now:n=()=>Date.now(),logLabel:a="nexSys4.adapter"}={})=>{let o=Boolean(e);const i=Math.max(1,Number(t||200)),s=[],l=new Map,c={status:createTriggerSessionState(),affPriorities:createTriggerSessionState(),defPriorities:createTriggerSessionState(),curingSets:createTriggerSessionState()},pushTrace=(e,t={})=>{if(!o)return null;const l={at:n(),type:e,detail:t};return s.push(l),s.length>i&&s.splice(0,s.length-i),console.log(`[${a}] ${e}`,t),l};return{pushTrace,triggerSessions:c,registerTriggerGroupActivity:(e,t="triggerCount")=>{const n=String(e||"").trim();if(!n)return null;const a=l.get(n)||{name:n,triggerCount:0,hookCount:0};return a[t]=Number(a[t]||0)+1,l.set(n,a),a},setDebugEnabled(e){o=Boolean(e),pushTrace("debug",{enabled:o})},isDebugEnabled:()=>o,snapshotTriggerGroups:()=>[...l.values()].map(e=>({...e})).sort((e,t)=>e.name.localeCompare(t.name)),snapshotTriggerSessions:()=>Object.entries(c).reduce((e,[t,n])=>(e[t]={...n},e),{}),snapshotRecentTrace:()=>[...s]}},createAdapterEventHub=({pushTrace:e=()=>{},errorLabel:t="nexSys4 adapter listener failed"}={})=>{const n=new Map,normalizeEventName=e=>String(e||"").trim(),emit=(a,o)=>{const i=normalizeEventName(a),s=n.get(i);if(!i||!s?.size)return i&&e("emit",{event:i,listenerCount:0,payload:o}),0;const l=[...s];return e("emit",{event:i,listenerCount:l.length,payload:o}),l.forEach(e=>{if(n.get(i)?.has(e))try{e(o)}catch(a){console.error(t,{event:i,error:a})}}),l.length},on=(t,a)=>{const o=normalizeEventName(t);if(!o||"function"!=typeof a)return()=>{};let i=n.get(o);return i||(i=new Set,n.set(o,i)),i.add(a),e("on",{event:o,listenerCount:i.size}),()=>off(o,a)},off=(t,a)=>{const o=normalizeEventName(t),i=n.get(o);if(!o||!i)return!1;const s=i.delete(a);return i.size||n.delete(o),e("off",{event:o,removed:s,listenerCount:i.size}),s};return{emit,on,off,clear(){n.clear()}}},createAdapterLifecycle=({eventBus:e,triggerApi:t,pushTrace:n=()=>{},clearListeners:a=()=>{}}={})=>{const o=[],i=[],s=[],destroy=()=>{const l=s.length,c=o.length,u=[...i];s.splice(0).forEach(e=>{try{e()}catch(t){console.error("nexSys4 adapter cleanup failed",{error:t})}}),e?.removeListener&&o.forEach(({eventName:t,id:n})=>{e.removeListener(t,n)}),t?.triggers?.remove&&i.forEach(e=>t.triggers.remove(e)),n("destroy",{eventRegistrations:c,triggerIds:u,internalCleanupCount:l}),a()};return{eventRegistrations:o,triggerIds:i,registerCleanup:e=>"function"==typeof e?(s.push(e),e):()=>{},destroy}},summarizePromptContext=(e={})=>({source:e.source||"",hasLine:Boolean(e.line)}),createAdapterPromptSink=({emit:e,pushTrace:t})=>{const renderPrompt=(n,a={})=>{const o=String(n??""),i=a?.line;return i?.parsed_line&&"object"==typeof i.parsed_line&&(i.parsed_line.formatted=()=>o),e("PromptRendered",{prompt:o,context:a}),t("renderPrompt",{promptLength:o.length,context:summarizePromptContext(a)}),o};return{renderPrompt}},normalizeOutboundCommands=e=>Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0):"string"==typeof e&&e?[e]:[],normalizeGmcpRequests=e=>Array.isArray(e)?e.filter(Boolean).map(e=>String(e)):null==e||""===e?[]:[String(e)],createAdapterTransport=({client:e,emit:t,pushTrace:n,resolveSeparator:a}={})=>({send(o=[],i={}){const s=normalizeOutboundCommands(o);if(!s.length)return[];const l=s.join(a()||"|");return e?.send_commands&&e.send_commands(l,!1),n("send",{commands:s,payload:l,context:i}),t("OutboundCommandsEvent",{commands:s,payload:l,context:i}),s},sendGmcp(a=[],o={}){const i="function"==typeof e?.datahandler?e.datahandler():null;if("function"!=typeof i?.send_GMCP)return[];const s=normalizeGmcpRequests(a);if(!s.length)return[];const l=[];return s.forEach(e=>{try{i.send_GMCP(e),l.push(e)}catch(t){console.error("nexSys4 GMCP request failed",{request:e,error:t})}}),l.length&&(n("sendGmcp",{requests:l,context:o}),t("AdapterGmcpRequest",{requests:l,context:o})),l},getVariable(t){if(!e?.variables)return;const n=e.variables();return"function"==typeof n?.get?n.get(t):n?.vars?.[t]},setVariable(t,n){if(!e?.variables)return n;const a=e.variables();return"function"==typeof a?.set?(a.set(t,n),n):a?.vars?(a.vars[t]=n,n):n}}),createNexusAdapter=(e={})=>{const t=e.nexusclient||globalThis.nexusclient,monotonicNowMs=()=>globalThis.performance?.now?globalThis.performance.now():Date.now();let n=null;const resolveSeparator=()=>n||normalizeCommandSeparator(e.separator??t?.settings?.command_separator??t?.settings?.commandSeparator),a=e.eventStream||globalThis.eventStream,o=e.nexAction||globalThis.nexAction,getGMCP=()=>e.GMCP||globalThis.GMCP,{pushTrace:i,triggerSessions:s,registerTriggerGroupActivity:l,setDebugEnabled:c,isDebugEnabled:u,snapshotTriggerGroups:d,snapshotTriggerSessions:p,snapshotRecentTrace:m}=createAdapterDebugState({debug:e.debug,traceLimit:e.traceLimit}),{emit:g,on:h,off:b,clear:y}=createAdapterEventHub({pushTrace:i}),{eventRegistrations:v,triggerIds:S,registerCleanup:x,destroy:C}=createAdapterLifecycle({eventBus:a,triggerApi:o,pushTrace:i,clearListeners:y}),{send:w,sendGmcp:k,getVariable:E,setVariable:P}=createAdapterTransport({client:t,emit:g,pushTrace:i,resolveSeparator}),normalizeEventName=e=>String(e||"").trim(),{notice:T}=createNoticeTransport({client:t,emit:g,pushTrace:i}),{renderPrompt:R}=createAdapterPromptSink({emit:g,pushTrace:i}),emitLocal=(e,t)=>{const n=normalizeEventName(e);return!!n&&(g(n,t),i("emit:local",{event:n,payload:t}),!0)},raiseToEventStream=(e,t)=>{const n=normalizeEventName(e);return!(!n||!a?.raiseEvent)&&(a.raiseEvent(n,t),i("emit:eventstream",{topic:n,payload:t}),!0)};o?.triggers?.remove&&o.triggers.remove(["nexsys4"]),a?.removeByTag&&a.removeByTag(["nexsys4"]),registerEventStreamBindings({eventBus:a,emit:g,pushTrace:i,eventRegistrations:v}),registerTextTriggers({triggerApi:o,client:t,emit:g,onLocalEvent:h,pushTrace:i,triggerIds:S,registerCleanup:x,registerTriggerGroupActivity:l,triggerSessions:s}),!1!==e.startupGag&®isterStartupGag({onLocalEvent:h,client:t,notice:T,isDebugEnabled:u});const addOnceTrigger=({id:e,regex:n,action:a})=>o?.triggers?.add?(o.triggers.add({id:e,regex:n,enabled:!0,once:!0,tags:["nexsys4","probe",`probe:${e}`],action:e=>a({args:e,client:t,emit:g,pushTrace:i})}),S.push(e),i("probe-trigger:add",{id:e,regex:n instanceof RegExp?n.source:String(n)}),()=>{o?.triggers?.remove&&o.triggers.remove(e),i("probe-trigger:remove",{id:e})}):()=>{};return{capabilities:Object.freeze({promptRender:!0,gmcpSnapshot:!0,debugToggle:!0,destroy:!0}),send:w,sendGmcp:k,on:h,off:b,notice:T,getCommandSeparator:()=>resolveSeparator(),setSeparator(e){n=normalizeCommandSeparator(e)||null},addOnceTrigger,now:monotonicNowMs,setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),renderPrompt:R,getVariable:E,setVariable:P,emitLocal,raiseToEventStream,destroy:C,getGMCP,setDebugEnabled:c,isDebugEnabled:u,debugInfo:()=>({debugEnabled:u(),separator:resolveSeparator(),eventRegistrations:v.map(e=>({...e})),triggerIds:[...S],triggerGroups:d(),triggerSessions:p(),hasEventStream:Boolean(a?.registerEvent),hasNexActionTriggers:Boolean(o?.triggers?.add),recentTrace:m()})}},createMockAdapter=(e={})=>{const t=new Map,n=new Map,a=new Map;let o=normalizeCommandSeparator(e.separator??"|");const i=[],s=[],l=[],c=[],u=[],d=[];let p=Boolean(e.debug);const m=Math.max(1,Number(e.traceLimit||200)),g=[],pushTrace=(e,t={})=>{const n={at:nowMs(),type:e,detail:t};g.push(n),g.length>m&&g.splice(0,g.length-m),p&&console.log(`[nexSys4.mockAdapter] ${e}`,t)},normalizeEventName=e=>String(e||"").trim(),emit=(e,n)=>{const a=normalizeEventName(e),o=t.get(a);if(!a||!o?.size)return a&&pushTrace("emit",{event:a,listenerCount:0,payload:n}),0;const i=[...o];return pushTrace("emit",{event:a,listenerCount:i.length,payload:n}),i.forEach(e=>{if(t.get(a)?.has(e))try{e(n)}catch(o){console.error("nexSys4 mock adapter listener failed",{event:a,error:o})}}),i.length},on=(e,n)=>{const a=normalizeEventName(e);if(!a||"function"!=typeof n)return()=>{};let o=t.get(a);return o||(o=new Set,t.set(a,o)),o.add(n),pushTrace("on",{event:a,listenerCount:o.size}),()=>off(a,n)},off=(e,n)=>{const a=normalizeEventName(e),o=t.get(a);if(!a||!o)return!1;const i=o.delete(n);return o.size||t.delete(a),pushTrace("off",{event:a,removed:i,listenerCount:o.size}),i},removeOnceTrigger=e=>{const t=String(e||"").trim();if(!t)return!1;const n=a.delete(t);return pushTrace("probe-trigger:remove",{id:t,removed:n}),n},addOnceTrigger=({id:e,regex:t,action:n}={})=>{const o=String(e||"").trim();return o&&t instanceof RegExp&&"function"==typeof n?(a.set(o,{regex:t,action:n}),pushTrace("probe-trigger:add",{id:o,regex:t.source}),()=>removeOnceTrigger(o)):()=>{}},fireText=(e,t={})=>{const n=String(e??"");pushTrace("fireText",{text:n,detail:t,triggerCount:a.size});const o=[];return[...a.entries()].forEach(([e,i])=>{i.regex.lastIndex=0;const s=i.regex.exec(n);s&&(a.delete(e),o.push(e),i.action({args:{raw:n,line:n,text:n,groups:s.groups||{},matches:[...s]},detail:t}))}),o};return{capabilities:Object.freeze({promptRender:!0,gmcpSnapshot:!0,debugToggle:!0,destroy:!0}),send(e=[],t={}){const n=Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0):"string"==typeof e&&e?[e]:[];return n.length?(i.push({commands:n,context:t}),pushTrace("send",{commands:n,context:t}),emit("OutboundCommandsEvent",{commands:n,context:t}),n):[]},sendGmcp(e=[],t={}){const n=Array.isArray(e)?e.filter(Boolean).map(e=>String(e)):null==e||""===e?[]:[String(e)];return n.length?(u.push(...n),pushTrace("sendGmcp",{requests:n,context:t}),emit("AdapterGmcpRequest",{requests:n,context:t}),n):[]},on,off,emit,notice(e,t={}){s.push({message:String(e),context:t}),pushTrace("notice",{message:String(e),context:t})},getCommandSeparator:()=>o,setSeparator:e=>(o=normalizeCommandSeparator(e),pushTrace("setSeparator",{separator:o}),o),addOnceTrigger,fireText,now:()=>"function"==typeof e.now?e.now():nowMs(),setTimeout:(e,t)=>setTimeout(e,t),clearTimeout(e){clearTimeout(e)},renderPrompt(e,t={}){const n=String(e??""),a={prompt:n,context:t};return d.push(a),pushTrace("renderPrompt",{promptLength:n.length,source:t.source||"",hasLine:Boolean(t.line)}),emit("PromptRendered",a),n},getVariable:e=>n.get(e),setVariable:(e,t)=>(n.set(e,t),t),emitLocal(e,t){const n=String(e||"").trim();if(!n)return!1;const a={event:n,payload:t};return l.push(a),pushTrace("emit:local",a),emit(n,t),!0},raiseToEventStream(e,t){const n=String(e||"").trim();if(!n)return!1;const a={topic:n,payload:t};return c.push(a),pushTrace("emit:eventstream",a),!0},destroy(){t.clear(),a.clear()},getSentBatches:()=>i,getNotices:()=>s,getLocalEvents:()=>l,getEventStreamEvents:()=>c,getGmcpRequests:()=>u,getRenderedPrompts:()=>d,getGMCP:()=>e.gmcp||{},setDebugEnabled(e){p=Boolean(e),pushTrace("debug",{enabled:p})},isDebugEnabled:()=>p,debugInfo:()=>({debugEnabled:p,separator:o,recentTrace:[...g],sentBatchCount:i.length,gmcpRequests:[...u],renderedPromptCount:d.length})}},defineStringPrototypeHelper=(e,t)=>"function"!=typeof String.prototype[e]&&(Object.defineProperty(String.prototype,e,{configurable:!0,writable:!0,value:t}),!0),installStringPrototypeHelpers=()=>({toProperCase:defineStringPrototypeHelper("toProperCase",function toProperCase(){return this.replace(/\w\S*/g,function formatWord(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})}),capitalize:defineStringPrototypeHelper("capitalize",function capitalize(){return this.charAt(0).toUpperCase()+this.slice(1)})}),U={list:["accentato","addiction","aeon","agoraphobia","airfisted","amnesia","anorexia","asphyxiating","asthma","betrayal","blackout","blindness","blistered","bloodfire","bound","breathless","brokenleftarm","brokenrightarm","brokenleftleg","brokenrightleg","bruisedribs","burning","cadmuscurse","calcifiedskull","calcifiedtorso","claustrophobia","clumsiness","coldfate","concussion","condemned","conflagration","confusion","constricted","convergence","corruption","crackedribs","cremated","crescendo","crushedthroat","daeggerimpale","damagedhead","damagedleftarm","damagedleftleg","damagedrightarm","damagedrightleg","darkshade","dazed","dazzled","deadening","deafness","death","deathsickness","deepsleep","degenerate","dehydrated","dementia","demonstain","depression","deteriorate","diminished","disloyalty","disrupted","dissonance","dizziness","earworm","empoweredmannaz","empoweredloshre","enlightenment","enmesh","ensorcelled","entangled","epilepsy","fear","flamefisted","flushings","fratricide","frostbite","frozen","fulminated","generosity","grievouswounds","guilt","hamstrung","haemophilia","hallucinations","hatred","healthleech","heartseed","hecatecurse","hellsight","hindered","homunculusmercury","horror","hypersomnia","hypochondria","hypothermia","icebound","icefisted","impaled","impatience","indifference","inquisition","insomnia","internalbleeding","isolation","itching","justice","kaisurge","kkractlebrand","laceratedthroat","lapsingconsciousness","latched","lethargy","lightbind","loneliness","lovers","lovestruck","lullaby","manaleech","masochism","mildtrauma","mangledleftarm","mangledleftleg","mangledrightarm","mangledrightleg","mangledhead","mindclamp","mindravaged","muddled","mycalium","nausea","numbedleftarm","numbedrightarm","pacified","palpatarfeed","paralysis","paranoia","parasite","peace","penitence","petrified","phlogisticated","pinshot","pressure","prone","pyramides","pyre","rebbies","recklessness","reeling","retribution","revealed","sandfever","scalded","scrambledbrains","scytherus","selarnia","sensitivity","serioustrauma","shadowmadness","shivering","shyness","silenced","silver","skullfractures","slashedthroat","sleeping","slickness","slimeobscure","snared","solarburn","speechless","spiritburn","stridulating","stun","stupidity","stuttering","succumbed","temperedcholeric","temperedmelancholic","temperedphlegmatic","temperedsanguine","tenderskin","tension","timeflux","timeloop","tonguetied","torntendons","transfixation","trueblind","unweavingbody","unweavingmind","unweavingspirit","vertigo","vinewreathed","vitiated","vitrified","voidfisted","voyria","waterbonds","weakenedmind","weariness","webbed","woeconstrained","whisperingmadness","wristfractures","unconsciousness","harmonic","bop","spiritwrack","bedevil","loki","moon","evileye","dragoncurse","swiftcurse"],prios:{aeon:4,concussion:4,crushedthroat:4,paralysis:4,peace:4,sleeping:5,grievouswounds:5,latched:5,dazzled:5,unweavingbody:5,unweavingmind:5,unweavingspirit:5,weariness:5,prone:5,timeloop:5,fulminated:5,spiritburn:6,heartseed:6,guilt:6,tenderskin:6,pyramides:6,parasite:6,hypochondria:6,pacified:6,depression:6,confusion:6,mindravaged:6,retribution:6,shadowmadness:6,whisperingmadness:6,hellsight:6,anorexia:7,scalded:7,mycalium:7,frostbite:7,flushings:7,rebbies:7,sandfever:7,asthma:7,healthleech:7,impatience:8,itching:8,fratricide:8,scytherus:8,clumsiness:8,kkractlebrand:8,damagedleftleg:8,darkshade:8,slickness:8,recklessness:8,dementia:8,icebound:8,bound:9,daeggerimpale:9,entangled:9,sensitivity:9,transfixation:9,webbed:9,tonguetied:9,haemophilia:9,lethargy:9,manaleech:9,dissonance:9,pyre:9,skullfractures:10,damagedrightleg:10,hypersomnia:10,earworm:10,crescendo:10,diminished:10,torntendons:11,brokenleftleg:11,brokenrightleg:11,hallucinations:11,calcifiedskull:12,calcifiedtorso:12,mangledleftleg:12,mangledrightleg:12,disrupted:12,mangledhead:12,voyria:12,crackedribs:12,hypothermia:13,impaled:13,brokenleftarm:13,brokenrightarm:13,indifference:13,addiction:13,nausea:13,deadening:13,frozen:13,shivering:13,mildtrauma:13,internalbleeding:13,stupidity:14,wristfractures:14,damagedleftarm:14,disloyalty:14,tension:15,damagedhead:15,dazed:15,burning:15,lovers:16,pressure:16,damagedrightarm:16,temperedcholeric:16,temperedmelancholic:16,temperedphlegmatic:16,temperedsanguine:16,mangledleftarm:17,mangledrightarm:17,agoraphobia:18,claustrophobia:18,generosity:18,justice:18,loneliness:18,vertigo:18,paranoia:19,serioustrauma:20,epilepsy:20,laceratedthroat:22,slashedthroat:22,stuttering:22,selarnia:23,fear:23,masochism:23,dizziness:25,shyness:25,stridulating:25,horror:26,bleeding:30,amnesia:30,blackout:30,insomnia:30,deafness:30,blindness:30,harmonic:100,bop:100,spiritwrack:100,bedevil:100,loki:100,moon:100,evileye:100,dragoncurse:100,swiftcurse:100},types:{countable:{pressure:{min:0,max:5},crescendo:{min:0,max:5},unweavingbody:{min:0,max:5},unweavingspirit:{min:0,max:5},unweavingmind:{min:0,max:5},burning:{min:0,max:5},horror:{min:0,max:5},pyre:{min:0,max:3},temperedcholeric:{min:0,max:8},temperedmelancholic:{min:0,max:8},temperedphlegmatic:{min:0,max:8},temperedsanguine:{min:0,max:8},torntendons:{min:0,max:6},crackedribs:{min:0,max:6},skullfractures:{min:0,max:6},wristfractures:{min:0,max:6}},nonServerside:{accentato:0,airfisted:0,asphyxiating:0,blistered:0,bloodfire:0,bruisedribs:0,cadmuscurse:0,coldfate:0,condemned:0,conflagration:0,constricted:0,convergence:0,corruption:0,cremated:0,death:0,deathsickness:0,deepsleep:0,degenerate:0,dehydrated:0,demonstain:0,deteriorate:0,empoweredloshre:0,empoweredmannaz:0,enlightenment:0,enmesh:0,ensorcelled:0,flamefisted:0,hamstrung:0,hatred:0,hecatecurse:0,hindered:0,homunculusmercury:0,icefisted:0,inquisition:0,isolation:0,kaisurge:0,lightbind:0,lullaby:0,mindclamp:0,muddled:0,numbedleftarm:0,numbedrightarm:0,palpatarfeed:0,petrified:0,phlogisticated:0,pinshot:0,revealed:0,scrambledbrains:0,silenced:0,silver:0,slimeobscure:0,solarburn:0,stun:0,timeflux:0,trueblind:0,vinewreathed:0,vitiated:0,vitrified:0,voidfisted:0,waterbonds:0,weakenedmind:0,unconsciousness:0},timed:{accentato:{length:20},aeon:{length:16},airfisted:{length:16},betrayal:{length:15},blackout:{length:20},blistered:{length:20},breathless:{length:3},bruisedribs:{length:30},cadmuscurse:{length:20},condemned:{length:20},constricted:{length:30},corruption:{length:45},dazzled:{length:60},dehydrated:{length:60},demonstain:{length:120},empoweredloshre:{length:12},empoweredmannaz:{length:20},enmesh:{length:5},ensorcelled:{length:20},flamefisted:{length:30},hamstrung:{length:9},heartseed:{length:11},hecatecurse:{length:16},icefisted:{length:30},inquisition:{length:30},lightbind:{length:22},lovestruck:{length:5},muddled:{length:12},numbedleftarm:{length:7.5},numbedrightarm:{length:7.5},palpatarfeed:{length:20},phlogisticated:{length:45},pinshot:{length:18},reeling:{length:20},revealed:{length:60},scalded:{length:20},scrambledbrains:{length:60},silver:{length:180},slimeobscure:{length:60},solarburn:{length:5},snared:{length:20},speechless:{length:300},stridulating:{length:15},stun:{length:3},succumbed:{length:30},timeflux:{length:60},trueblind:{length:6},unconsciousness:{length:10},vinewreathed:{length:30},vitrified:{length:45},voidfisted:{length:5},waterbonds:{length:30},weakenedmind:{length:60},woeconstrained:{length:30}},unknown:{moon:["stupidity","confusion","epilepsy","masochism","hypersomnia","hallucinations"],loki:["stupidity","clumsiness","recklessness","asthma","shyness","darkshade","paralysis","brokenleftarm","brokenrightarm","brokenleftleg","brokenrightleg","sensitivity","disloyalty","nausea","weariness","dizziness","anorexia","voyria","haemophilia","addiction","selarnia","slickness","scytherus"],evileye:["confusion","dizziness"],dragoncurse:["recklessness","clumsiness","epilepsy","dizziness","pacified","nausea","addiction","anorexia","generosity","disloyalty","sensitivity","vertigo","paranoia","stupidity","hypochondria","lethargy","shivering","frozen","impatience","paralysis","asthma","agoraphobia"],harmonic:["stupidity","recklessness"],bop:["stupidity","recklessness"],swiftcurse:["stupidity","clumsiness","recklessness","asthma","paralysis","deafness","sensitivity","nausea","weariness","dizziness","anorexia","voyria","haemophilia","addiction","impatience","claustrophobia","vertigo","agoraphobia","masochism","epilepsy","manaleech","pacified","dementia","healthleech"],bedevil:["stupidity","recklessness"]},uncurable:{bloodfire:!0,cadmuscurse:!0,conflagration:!0,death:!0,deathsickness:!0,deepsleep:!0,enlightenment:!0,isolation:!0,lullaby:!0,mindclamp:!0,palpatarfeed:!0,penitence:!0,scalded:!0,stun:!0,weakenedmind:!0}}},V=((e=>{const t=new Set(e.list),n={};for(const[a,o]of Object.entries(e.prios))n[o]||(n[o]=[]),n[o].push(a);Object.freeze({affSet:t,prioArrays:Object.freeze(n)})})(U),{herb:{length:1.6,aff_modifiers:{homunculusmercury:{multiplier:1,offset:.5}}},focus:{length:2.5,aff_modifiers:{weakenedmind:{multiplier:2,offset:.5},whisperingmadness:{multiplier:1.6,offset:0}}},sip:{length:4.5,aff_modifiers:{skullfractures:{multiplier:1,offset:1}}},moss:{length:6},tree:{length:15,aff_modifiers:{slimeobscure:{multiplier:1,offset:10}}},equilibrium:{length:20,aff_modifiers:{confusion:{multiplier:1.5,offset:0}}},balance:{length:20,aff_modifiers:{lethargy:{multiplier:1.25,offset:0}}},salve:{length:4,aff_modifiers:{timeflux:{multiplier:1.5,offset:0}}},immunity:{length:10},rebounding:{length:9},smoke:{length:1.5},dragonbreath:{length:1.5},deafness:{length:3},deaf:{length:6},blind:{length:6},speed:{length:6},wake:{length:20},sileris:{length:8},free:{length:0},voice:{length:2.5},tremolo:{length:6},homunculus:{length:12},fitness:{length:10},bloodboil:{length:10},dragonheal:{length:20},rage:{length:10},salt:{length:10},shrugging:{length:10},alleviate:{length:10},slough:{length:10},fool:{length:40},writhe:{length:6},impalewrithe:{length:4},entity:{length:4},word:{length:5},anathema:{length:5},systemOutput:{length:1}}),H=["itching","paralysis","fear","brokenrightarm","brokenleftarm","brokenrightleg","brokenleftleg","lapsingconsciousness","aeon","lovers","confusion","epilepsy","pacified","blackout","dazed","justice","slashedthroat","hellsight","peace","dazzled","shyness","dizziness","slickness","asthma","nausea","selarnia","weariness","scytherus","fratricide","haemophilia","clumsiness","hallucinations","healthleech","dementia","recklessness","anorexia","masochism","impatience","stupidity","generosity","addiction","deadening","manaleech","stuttering","paranoia","agoraphobia","loneliness","claustrophobia","vertigo","hypersomnia","shivering","frozen","burning","sensitivity","hypochondria","lethargy","disloyalty","darkshade","voyria","dissonance","phlogisticated","silver","spiritburn","tenderskin","guilt","skullfractures","wristfractures","crackedribs","torntendons","indifference","retribution","shadowmadness","parasite","depression","timeloop","crushedthroat","tension","unweavingspirit","grievouswounds","pyramides","flushings","rebbies","mycalium","sandfever","crescendo","fulminated","frostbite"],W={ferrum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat ferrum",order:["darkshade","haemophilia","lethargy","addiction","scytherus","nausea","flushings","unweavingbody"],prio:0},magnesium:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat magnesium",order:["paralysis","slickness","pyramides"],prio:0},aurum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat aurum",order:["clumsiness","healthleech","sensitivity","weariness","asthma","rebbies","parasite"],prio:0},calamine:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat calamine",order:["deafness"],delay:2.5,prio:0},argentum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat argentum",order:["fratricide","masochism","loneliness","vertigo","recklessness","agoraphobia","guilt","whisperingmadness","spiritburn","tenderskin","hypochondria"],prio:0},cuprum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat cuprum",order:["pacified","peace","lovers","justice","generosity","indifference","retribution","pyre","timeloop","stridulating","diminished"],prio:0},antimony:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat antimony",order:["temperedcholeric","temperedmelancholic","temperedphlegmatic","temperedsanguine"],prio:0},arsenic:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat arsenic",prio:0},stannum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat stannum",order:["claustrophobia","paranoia","confusion","hypersomnia","hallucinations","dementia","crescendo"],prio:0},plumbum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],order:["horror","stupidity","epilepsy","dizziness","shyness","impatience","dissonance","depression","sandfever","mycalium","shadowmadness","unweavingmind","fulminated"],command:"eat plumbum",prio:0},calcite:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],order:["pressure"],command:"eat calcite",prio:0},ginseng:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat ginseng",order:["darkshade","haemophilia","lethargy","addiction","scytherus","nausea","flushings","unweavingbody"],prio:0},bloodroot:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat bloodroot",order:["paralysis","slickness","pyramides"],prio:0},kelp:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat kelp",order:["clumsiness","healthleech","sensitivity","weariness","asthma","rebbies","parasite"],prio:0},hawthorn:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat hawthorn",order:["deafness"],delay:2.5,prio:0},lobelia:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat lobelia",order:["fratricide","masochism","loneliness","vertigo","recklessness","agoraphobia","guilt","whisperingmadness","spiritburn","tenderskin","hypochondria"],prio:0},bellwort:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat bellwort",order:["pacified","peace","lovers","justice","generosity","indifference","retribution","pyre","timeloop","stridulating","diminished"],prio:0},ginger:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat ginger",order:["temperedcholeric","temperedmelancholic","temperedphlegmatic","temperedsanguine"],prio:0},bayberry:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat bayberry",prio:0},ash:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat ash",order:["claustrophobia","paranoia","confusion","hypersomnia","hallucinations","dementia","crescendo"],prio:0},goldenseal:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat goldenseal",order:["horror","stupidity","epilepsy","dizziness","shyness","impatience","dissonance","depression","sandfever","mycalium","shadowmadness","unweavingmind","fulminated"],prio:0},pear:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],order:["pressure"],command:"eat pear",prio:0},smoke:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke cinnabar",order:["aeon","disloyalty","hellsight","manaleech","slickness","deadening","tension","unweavingspirit","earworm","dazed"],prio:0},cinnabar:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke cinnabar",order:["aeon","deadening","tension","unweavingspirit","earworm","dazed"],prio:0},malachite:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke malachite",prio:0},realgar:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke realgar",order:["disloyalty","hellsight","manaleech","slickness"],prio:0},elm:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke elm",order:["aeon","deadening","tension","unweavingspirit","earworm","dazed"],prio:0},skullcap:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke skullcap",prio:0},valerian:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke valerian",order:["disloyalty","hellsight","manaleech","slickness"],prio:0},caloric:{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply caloric",order:["frozen","shivering","frostbite"],prio:0},"epidermal to body":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply epidermal to body",order:["anorexia","itching"],prio:0},"epidermal to head":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply epidermal to head",order:["blindness","scalded","deafness","stuttering"],prio:0},"epidermal to ears":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply epidermal to ears",order:["deafness"],prio:0},"mending to head":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to head",order:["crushedthroat","dazzled"],prio:0},"mending to arms":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to arms",order:["brokenleftarm","brokenrightarm"],prio:0},"mending to legs":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to legs",order:["brokenleftleg","brokenrightleg"],prio:0},"mending to torso":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to torso",order:["burning"],prio:0},"mending to body":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to body",order:["selarnia"],prio:0},"restoration to head":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply restoration to head",order:["mangledhead","damagedhead","calcifiedskull","concussion","tonguetied","slashedthroat","laceratedthroat"],delay:4,prio:0},"restoration to torso":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply restoration to torso",order:["hypothermia","heartseed","serioustrauma","mildtrauma","calcifiedtorso","internalbleeding"],delay:4,prio:0},"restoration to arms":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply restoration to arms",order:["mangledleftarm","mangledrightarm","damagedleftarm","damagedrightarm"],delay:4,prio:0},"restoration to legs":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply restoration to legs",order:["mangledleftleg","mangledrightleg","damagedleftleg","damagedrightleg"],delay:4,prio:0},focus:{bals_req:["focus"],bals_used:["focus"],blocks:["death","impatience","sleeping"],command:"focus",order:["stupidity","epilepsy","dizziness","shyness","claustrophobia","paranoia","confusion","hallucinations","dementia","pacified","peace","lovers","generosity","masochism","loneliness","vertigo","recklessness","agoraphobia","anorexia","stuttering"],prio:0},"health to head":{bals_req:["sip"],bals_used:["sip"],command:"apply health to head",order:["skullfractures"],prio:0},"health to torso":{bals_req:["sip"],bals_used:["sip"],command:"apply health to torso",order:["crackedribs","grievouswounds"],prio:0},"health to arms":{bals_req:["sip"],bals_used:["sip"],command:"apply health to arms",order:["wristfractures"],prio:0},"health to legs":{bals_req:["sip"],bals_used:["sip"],command:"apply health to legs",order:["torntendons","latched","kkractlebrand"],prio:0},concentrate:{blocks:["death","sleeping","confusion"],command:"concentrate",order:["disrupted"],prio:0},immunity:{bals_req:["immunity"],bals_used:["immunity"],blocks:["death","sleeping","anorexia"],command:"sip immunity",order:["voyria"],prio:0},stand:{bals_req:["balance","equilibrium"],blocks:["death","sleeping","paralysis","brokenrightleg","brokenleftleg","damagedleftleg","damagedrightleg","mangledrightleg","mangledleftleg","entangled","transfixation","impaled","webbed","bound"],command:"stand",order:["prone"],prio:0},tree:{bals_used:["tree"],bals_req:["tree"],blocks:["death","sleeping","paralysis",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound"],command:"touch tree",order:H,prio:0},health:{bals_req:["sip"],bals_used:["sip"],blocks:["death","sleeping","anorexia"],command:"sip health",prio:0},mana:{bals_req:["sip"],bals_used:["sip"],blocks:["death","sleeping","anorexia"],command:"sip mana",prio:0},potash:{bals_req:["moss"],bals_used:["moss"],blocks:["death","sleeping","anorexia"],command:"eat potash",prio:0},moss:{bals_req:["moss"],bals_used:["moss"],blocks:["death","sleeping","anorexia"],command:"eat moss",prio:0},fitness:{bals_req:["equilibrium","balance","fitness"],bals_used:["balance","fitness"],blocks:["death","weariness","sleeping"],skills:["Monk","Shikudo","Runewarden"],command:"fitness",order:["asthma"],prio:0},bloodboil:{bals_req:["equilibrium","balance","bloodboil"],bals_used:["equilibrium","bloodboil"],blocks:["death","haemophilia","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound"],skills:["Magi"],command:"cast bloodboil",order:H,prio:0},restore:{bals_req:["balance","equilibrium"],bals_used:["equilibrium"],command:"restore",order:["brokenleftarm","brokenrightarm","brokenleftleg","brokenrightleg","skullfractures","torntendons","wristfractures","crackedribs"],prio:0},dragonflex:{bals_req:["balance"],bals_used:["balance"],command:"dragonflex",skills:["Dragon"],order:["webbed","entangled"],prio:0},dragonheal:{bals_req:["balance","equilibrium"],bals_used:["equilibrium"],command:"dragonheal",skills:["Dragon"],blocks:["death","sleeping",["recklessness","weariness"]],order:H,prio:0},dwinnu:{bals_req:["voice"],bals_used:["voice"],command:"chant dwinnu",skills:["Bard"],order:["webbed","entangled"],prio:0},rage:{bals_req:["rage"],bals_used:["rage"],command:"rage",skills:["Runewarden"],order:["pacified","peace","lovers","generosity"],prio:95},"touch soul":{command:"touch soul",blocks:["death"],order:["amnesia"],prio:101},salt:{bals_req:["equilibrium","salt"],bals_used:["salt","equilibrium"],blocks:["death","stupidity","sleeping"],skills:["Alchemist"],command:"educe salt",order:H,prio:0},siphon:{bals_req:["angel"],bals_used:["angel"],blocks:["death","sleeping"],skills:["Apostate","Priest"],command:"educe salt",order:H,prio:0},shrugging:{bals_req:["equilibrium","balance","shrugging"],bals_used:["shrugging"],blocks:["death","weariness","sleeping"],skills:["Serpent"],command:"shrugging",order:H,prio:0},slough:{bals_req:["equilibrium","balance","slough"],bals_used:["slough","balance"],blocks:["death","weariness","sleeping"],skills:["Fire Elemental Lord"],command:"slough impurities",order:H,prio:0},fool:{bals_req:["equilibrium","balance","fool"],bals_used:["fool","balance"],blocks:["death","prone","paralysis","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound"],skills:["Occultist"],command:"fling fool at me",order:H,prio:0},alleviate:{bals_req:["equilibrium","balance","alleviate"],bals_used:["alleviate","balance"],blocks:["death","paralysis","sleeping"],skills:["Blademaster"],command:"alleviate",order:H,prio:0}},normalizeCureCommand=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],G=Object.freeze(Object.fromEntries(Object.entries(W).map(([e,t])=>[e,Object.freeze({...t,command:Object.freeze(normalizeCureCommand(t.command))})]))),Y=Object.freeze(Object.entries(G).reduce((e,[t,n])=>((Array.isArray(n.order)?n.order:[]).forEach(n=>{e[n]||(e[n]=[]),e[n].push(t)}),e),{})),K={acrobatics:{command:"acrobatics on",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},airpocket:{command:["outr calcite","eat calcite"],bals_req:["free"],bals_used:["free"],blocks:["death","sleeping","anorexia"],serverside:!0,preempt:!0},alertness:{static:!0,command:"alertness on",bals_req:["equilibrium"],bals_used:["equilibrium"],serverside:!0},antiforce:{command:"intone gaiartha",bals_req:["balance","equilibrium"],bals_used:["word"],blocks:["death","sleeping","prone"],skills:["Depthswalker"],serverside:!0},aria:{command:"sing aria at me",bals_req:["voice"],bals_used:["voice"],blocks:["death","sleeping"],skills:["Bard"]},arctar:{command:"command orb",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],skills:["Occultist"],serverside:!1,preempt:!0},arrowcatching:{command:"arrowcatch on",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},astronomy:{static:!0,command:"astronomy empower me",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Alchemist"],serverside:!0},balancing:{command:"balancing on",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},belltattoo:{command:"touch bell",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["prone","death","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound","icefisted"],serverside:!0,preempt:!0},blindness:{command:["outr arsenic","eat arsenic"],bals_req:["herb"],bals_used:["herb"],blocks:["death","sleeping","anorexia"],serverside:!0},blocking:{command:"block d",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping","prone"],serverside:!1,preempt:!0},bloodshield:{command:"activate bloodshield",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],serverside:!0,preempt:!0},bodyaugment:{command:"intone mainaas",bals_req:["balance","equilibrium"],bals_used:["word"],blocks:["death","sleeping","prone"],skills:["Depthswalker"],bals_used:["word"],serverside:!0},bodyblock:{static:!0,command:"bdb",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Monk"],serverside:!0},boostedregeneration:{command:"boost regeneration",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo"],serverside:!0,preempt:!0},bulk:{command:"mutate bulk",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},cloak:{command:"touch cloak",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["prone","death","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound","icefisted"],serverside:!0},chargeshield:{static:!0,command:"cast chargeshield at me",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Magi"],serverside:!0},coldresist:{command:"activate cold resistance",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!0},compoundmask:{command:["wear mask","secure mask"],bals_req:["free"],bals_used:["free"],skills:["Alchemist"],serverside:!1},consciousness:{command:"consciousness on",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo","Blademaster"],serverside:!0,preempt:!0},constitution:{static:!0,command:"constitution",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Monk","Shikudo","Blademaster"],serverside:!0},curseward:{static:!0,command:"curseward",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],serverside:!0},deafness:{command:["outr calamine","eat calamine"],bals_req:["herb","deafness"],bals_used:["herb","deafness"],blocks:["death","sleeping","anorexia"],serverside:!0},deathsight:{static:!0,command:"deathsight",bals_req:["balance","equilibrium"],bals_used:["free"],serverside:!0,preempt:!0},deflect:{command:"deflect",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","prone","sleeping"],skills:["Runewarden","Paladin","Infernal","Unnamable"],serverside:!0,preempt:!0},density:{command:"wear shackle",bals_req:["salve"],bals_used:["salve"],blocks:["death","slickness","sleeping"],serverside:!0},devilmark:{static:!0,command:"devilmark",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping"],skills:["Occultist"],serverside:!0},diamondskin:{static:!0,command:"cast diamondskin",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Magi"],serverside:!0},distortedaura:{static:!0,command:"distortaura",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping"],skills:["Occultist"],serverside:!0},dragonarmour:{static:!0,command:"dragonarmour",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping"],skills:["Dragon"],serverside:!0},dragonbreath:{command:"summon ice",bals_req:["balance","equilibrium","dragonbreath"],bals_used:["free","dragonbreath"],blocks:["death","prone","sleeping"],skills:["Dragon"],preempt:!0,serverside:!0},drunkensailor:{command:"drunkensailor",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},durability:{command:"intone tsuura",bals_req:["balance","equilibrium"],skills:["Depthswalker"],blocks:["death","sleeping","prone"],bals_used:["word"],serverside:!0},electricresist:{command:"activate electric resistance",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!0},endure:{command:"endure",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],skills:["free"],serverside:!0,preempt:!0},enhancedform:{command:["amalgamate enhancement","imbibe enhancement"],bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],skills:["Alchemist"],serverside:!1,preempt:!0},evadeblock:{command:"evb",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Monk"],serverside:!0},eyes:{command:"mutate eyes",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},fireresist:{command:"activate fire resistance",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!0},fangbarrier:{command:"apply quicksilver",bals_req:["salve","sileris"],bals_used:["salve","sileris"],blocks:["death","slickness","paralysis","sleeping"],serverside:!0},fireshroud:{command:"ignite shroud",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","slickness","paralysis","sleeping"],serverside:!0,skills:["Fire Elemental Lord"]},fury:{command:"fury on",bals_req:["balance"],bals_used:["equilibrium"],skills:["Runewarden","Unnamable"],serverside:!0},flying:{command:"fly",bals_req:["balance, equilibrium"],bals_used:["balance"],blocks:["prone","death","sleeping","entangled","transfixation","impaled","webbed","bound"],serverside:!1,clientOnly:!0},ghost:{static:!0,command:"conjure ghost",bals_req:["equilibrium"],bals_used:["equilibrium"],skills:["Serpent"],serverside:!0},gripping:{command:"grip",bals_req:["balance","equilibrium"],bals_used:["free"],skills:["Runewarden","Paladin","Infernal","Unnamable","Shikudo","Bard","Blademaster","Jester","Shaman"],serverside:!0,preempt:!0},groundwatch:{command:"groundwatch on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},"guarding right leg":{command:"guard right leg",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding left leg":{command:"guard left leg",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding right leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding right arm":{command:"guard right arm",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right leg","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding left arm":{command:"guard left arm",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding right leg","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding head":{command:"guard head",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding right leg","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding torso":{command:"guard torso",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding right leg","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},heartsfury:{command:"heartsfury",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},heldbreath:{command:"hold breath",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","asthma","sleeping"],preempt:!0,serverside:!0},hiding:{command:"hide",bals_req:["equilibrium","balance"],bals_used:["balance"],skills:["Serpent"],serverside:!0},hypersight:{command:"hypersight on",bals_req:["balance"],bals_used:["equilibrium"],serverside:!0},immunity:{command:"immunity",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Monk","Shikudo","Blademaster"],serverside:!0},insomnia:{command:"insomnia",bals_req:["free"],bals_used:["free"],blocks:["death","hypersomnia","sleeping"],serverside:!0,preempt:!0},insulation:{command:"apply caloric",bals_req:["salve"],bals_used:["salve"],blocks:["death","sleeping","slickness","hypothermia"],serverside:!0},insufflate:{command:["get phial from pack","amalgamate insufflate potency 4 stability 1","imbibe insufflate"],bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Alchemist"],preempt:!0,serverside:!1},ironform:{static:!0,command:["get phial from pack","amalgamate petrifying potency 4 stability 1","imbibe petrifying"],bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Alchemist"],preempt:!0,serverside:!1},joints:{command:"mutate joints",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},kaiboost:{command:"kai boost",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo"],preempt:!0,serverside:!0},kaitrance:{command:"kai trance",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo"],serverside:!0,preempt:!0},kola:{command:["outr quartz","eat quartz"],bals_req:["free"],bals_used:["free"],blocks:["death","sleeping","anorexia"],serverside:!0,preempt:!0},lay:{command:"sing lay",bals_req:["voice"],bals_used:["voice"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},levitating:{command:"sip levitation",bals_req:["free"],bals_used:["free"],blocks:["death","anorexia","sleeping"],serverside:!0,preempt:!0},lifevision:{static:!0,command:"lifevision",bals_req:["equilibrium"],bals_used:["equilibrium"],serverside:!0},lipreading:{static:!0,command:"lipread",bals_req:["equilibrium"],bals_used:["equilibrium"],skills:["Serpent"],serverside:!0},locketdeath:{command:"solicit locket for immortality",bals_req:["free"],bals_used:["free"],serverside:!1},magicresist:{command:"activate magic resistance",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!0},blademastery:{command:"mastery on",bals_req:["balance","equilibrium"],bals_used:["free"],skills:["Runewarden","Unnamable"],preempt:!0,serverside:!0},meditate:{command:"meditate",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping","impatience"],preempt:!1,serverside:!1},mercury:{static:!0,command:"educe mercury",bals_req:["balance"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Alchemist"],serverside:!0},metabolise:{command:"metabolise paralysis",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],serverside:!1,preempt:!1},metawake:{command:"metawake on",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping","lullaby"],serverside:!0,preempt:!0},mindcloak:{command:"mind cloak on",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],preempt:!0,skills:["Monk","Shikudo"],serverside:!0},mindnet:{command:"mindnet on",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo","Blademaster"],serverside:!0,preempt:!0},mindseye:{static:!0,command:"touch mindseye",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound","icefisted"],serverside:!0},morimbuul:{command:"ldeck draw morimbuul",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],serverside:!1,preempt:!1},mounted:{command:"",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping","stunned","prone","paralysis","entangled","transfixation","impaled","webbed","bound"],preempt:!0,serverside:!1,clientOnly:!0},mouths:{command:"mutate mouths",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},nightsight:{command:"nightsight",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},numbness:{command:"numb",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Monk","Shikudo"]},"parrying right leg":{command:"parry right leg",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","guarding right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"parrying left leg":{command:"parry left leg",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","guarding right leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"parrying right arm":{command:"parry right arm",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","guarding right leg","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"parrying left arm":{command:"parry left arm",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","guarding right leg","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"parrying head":{command:"parry head",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","guarding right leg","parrying left","parrying right","parrying centre"]},"parrying torso":{command:"parry torso",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","guarding right leg","parrying head","parrying left","parrying right","parrying centre"]},"parrying left":{command:"trueparry left",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Bard"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","guarding right leg","parrying right","parrying centre"]},"parrying right":{command:"trueparry right",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Bard"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","guarding right leg","parrying centre"]},"parrying centre":{command:"trueparry centre",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Bard"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","guarding right leg"]},pinchblock:{command:"pnb",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Monk"],serverside:!0},projectiles:{command:"projectiles on",bals_req:["free"],bals_used:["free"],skills:["Monk","Shikudo","Blademaster"],blocks:["death","sleeping","mounted"],preempt:!0,serverside:!0},poisonresist:{command:"sip venom",bals_req:["free"],bals_used:["free"],blocks:["death","anorexia","sleeping"],serverside:!0,preempt:!0},precision:{command:"intone trusad",bals_req:["balance","equilibrium"],blocks:["death","sleeping","prone"],skills:["Depthswalker"],bals_used:["word"],serverside:!0},prismatic:{command:"strum lyre",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping"],serverside:!1},rebounding:{command:"smoke malachite",bals_req:["smoke","rebounding"],bals_used:["smoke","rebounding"],blocks:["death","asthma","sleeping"],serverside:!0},reflections:{command:"point wand235913 at me",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],preempt:!0,serverside:!1},regeneration:{command:"regeneration on",bals_req:["free"],bals_used:["free"],skills:["Monk","Shikudo"],blocks:["death","sleeping"],serverside:!0,preempt:!0},resistance:{command:"resistance",bals_req:["free"],bals_used:["free"],skills:["Runewarden","Paladin","Infernal","Monk","Shikudo","Unnamable"],blocks:["death","sleeping"],serverside:!0,preempt:!0},scales:{static:!0,command:"scales",bals_req:["balance","equilibrium"],bals_used:["balance"],skills:["Serpent"],serverside:!0},secondsight:{static:!0,command:"secondsight",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Serpent"],serverside:!0},selfishness:{command:"selfishness",bals_req:["balance","equilibrium"],bals_used:["balance"],serverside:!0},shield:{command:"touch shield",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound","icefisted"],serverside:!0},shintrance:{command:"shin trance",bals_req:["free"],bals_used:["free"],skills:["Blademaster"],blocks:["death","sleeping"],serverside:!0,preempt:!0},shinclarity:{static:!0,command:"clarity",bals_req:["balance"],bals_used:["equilibrium"],skills:["Blademaster"],blocks:["death","sleeping"],serverside:!0},shinbinding:{static:!0,command:"shinbinding on",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Blademaster"],blocks:["death","sleeping"],serverside:!0},shipwarning:{command:"shipwarning on",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],serverside:!0},shroud:{static:!0,command:"shroud",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Occultist","Serpent"],serverside:!0},softfocusing:{command:"softfocus on",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],serverside:!0,preempt:!0},songbird:{command:"whistle for songbird",bals_req:["equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Bard"]},speed:{command:"sip speed",bals_req:["speed"],bals_used:["speed"],blocks:["death","anorexia","sleeping"],serverside:!0},splitmind:{command:"split mind",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Monk","Shikudo"],serverside:!0},skysight:{command:"manifest skysight",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping","stunned","prone","paralysis","entangled","transfixation","impaled","webbed","bound"],skills:["Air Elemental Lord"],serverside:!0},skywatch:{command:"skywatch on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},stonefist:{static:!0,command:"cast stonefist",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Magi"],serverside:!0},stoneskin:{static:!0,command:"cast stoneskin",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Magi"],serverside:!0},sulphur:{static:!0,command:"educe sulphur",bals_req:["balance"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Alchemist"],serverside:!0},tekurastance:{command:"tekurastance",bals_req:["free"],bals_used:["balance"],skills:["Monk","Shikudo"]},telesense:{command:"telesense on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},temperance:{command:"sip frost",bals_req:["free"],bals_used:["free"],blocks:["death","anorexia","sleeping"],serverside:!0,preempt:!0},tempest:{command:"manifest tempest",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping","stunned","prone","paralysis","entangled","transfixation","impaled","webbed","bound"],skills:["Air Elemental Lord"],serverside:!0},mutatetentacles:{command:"mutate tentacles",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},thirdeye:{command:"thirdeye",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},tin:{static:!0,command:"educe tin",bals_req:["balance"],bals_used:["equilibrium"],blocks:["death","sleeping","prone"],skills:["Alchemist"],serverside:!0},tentacles:{command:"tentacles",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping","prone"],skills:["Occultist"],serverside:!0},toughness:{command:"toughness",bals_req:["free"],bals_used:["free"],skills:["Monk","Shikudo","Blademaster"],serverside:!0,preempt:!0},treewatch:{command:"treewatch on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},tune:{command:"sing tune",bals_req:["voice"],bals_used:["voice"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},twoartsstance:{command:"twoartsstance",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Blademaster"]},vigilance:{command:"vigilance on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},vitality:{command:"vitality on",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Monk","Shikudo"],serverside:!0},weathering:{command:"weathering on",bals_req:["free"],bals_used:["free"],skills:["Runewarden","Infernal","Paladin","Monk","Shikudo","Blademaster","Unnamable"],blocks:["death","sleeping"],serverside:!0,preempt:!0},weaving:{static:!0,command:"weaving on",bals_req:["balance","equilibrium"],bals_used:["balance"],skills:["Serpent"],serverside:!0}},normalizeDefCommand=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],normalizeDefList=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],normalizeDefPriority=(e,t)=>{const n=Number(e);return Number.isFinite(n)?n<0?0:n>26?26:n:0},Q=Object.freeze(Object.fromEntries(Object.entries(K).map(([e,t])=>{const n=!1!==t.serverside;return[e,Object.freeze({...t,command:Object.freeze(normalizeDefCommand(t.command)),bals_req:Object.freeze(normalizeDefList(t.bals_req)),bals_used:Object.freeze(normalizeDefList(t.bals_used)),skills:Object.freeze(normalizeDefList(t.skills)),opps:Object.freeze(normalizeDefList(t.opps)),blocks:Object.freeze(t.blocks?[...t.blocks]:[]),serverside:n,preempt:!0===t.preempt,static:!0===t.static,clientOnly:!0===t.clientOnly,defaultPriority:normalizeDefPriority(t.defaultPriority,n)})]}))),Z=Object.freeze(Object.keys(Q).reduce((e,t)=>(e[t]=Number(Q[t].defaultPriority),e),{})),buildDefBySkillIndex=()=>{const e=Object.entries(Q).reduce((e,[t,n])=>{const a=n.skills;return Array.isArray(a)&&a.forEach(n=>{e[n]||(e[n]=[]),e[n].push(t)}),e},{});return Object.freeze(Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Object.freeze([...t])])))},X=(buildDefBySkillIndex(),Object.freeze({CHAR_VITALS:"nexsys4.gmcp.char.vitals",CHAR_STATUS:"nexsys4.gmcp.char.status",CHAR_AFFLICTIONS_LIST:"nexsys4.gmcp.char.afflictions.list",CHAR_AFFLICTIONS_ADD:"nexsys4.gmcp.char.afflictions.add",CHAR_AFFLICTIONS_REMOVE:"nexsys4.gmcp.char.afflictions.remove",CHAR_DEFENCES_LIST:"nexsys4.gmcp.char.defences.list",CHAR_DEFENCES_ADD:"nexsys4.gmcp.char.defences.add",CHAR_DEFENCES_REMOVE:"nexsys4.gmcp.char.defences.remove",IRE_RIFT_LIST:"nexsys4.gmcp.ire.rift.list",IRE_RIFT_CHANGE:"nexsys4.gmcp.ire.rift.change",CHAR_ITEMS_LIST:"nexsys4.gmcp.char.items.list",CHAR_ITEMS_DELTA:"nexsys4.gmcp.char.items.delta",ROOM_INFO:"nexsys4.gmcp.room.info",TARGET_INFO:"nexsys4.gmcp.target.info"})),isRecord$3=e=>Boolean(e)&&"object"==typeof e&&!Array.isArray(e),normalizeLocation=e=>String(e??"inv").trim().toLowerCase()||"inv",mergeDefinedRecord=(...e)=>e.reduce((e,t)=>(Object.entries(isRecord$3(t)?t:{}).forEach(([t,n])=>{void 0!==n&&(e[t]=n)}),e),{}),mergeResourceStats=(e=[],t=[])=>{const n=new Map;return[...e,...t].forEach(e=>{const t=String(e?.key||"").trim().toLowerCase();t&&n.set(t,e)}),[...n.values()]},mergeBalancePatches=(e=[],t=[])=>[...Array.isArray(e)?e:[],...Array.isArray(t)?t:[]],mergeStatusPayload=(e={},t={})=>{const n=isRecord$3(e)?e:{},a=isRecord$3(t)?t:{};return{...n,...a,status:{...isRecord$3(n.status)?n.status:{},...isRecord$3(a.status)?a.status:{}}}},mergeVitalsPayload=(e={},t={})=>{const n=isRecord$3(e)?e:{},a=isRecord$3(t)?t:{},o=isRecord$3(n.vitals)?n.vitals:{},i=isRecord$3(a.vitals)?a.vitals:{};return{...n,...a,vitals:{...o,...i,kind:i.kind||o.kind,vitals:mergeDefinedRecord(o.vitals,i.vitals),balances:mergeDefinedRecord(o.balances,i.balances),balancePatches:mergeBalancePatches(o.balancePatches,i.balancePatches),resourceStats:mergeResourceStats(Array.isArray(o.resourceStats)?o.resourceStats:[],Array.isArray(i.resourceStats)?i.resourceStats:[])}}},mergeTargetPayload=(e={},t={})=>{const n=isRecord$3(e)?e:{},a=isRecord$3(t)?t:{};return{...n,...a,target:mergeDefinedRecord(n.target,a.target)}},J=new Map([[X.CHAR_STATUS,{keyFor:()=>X.CHAR_STATUS,merge:mergeStatusPayload}],[X.CHAR_VITALS,{keyFor:()=>X.CHAR_VITALS,merge:mergeVitalsPayload}],[X.CHAR_AFFLICTIONS_LIST,{keyFor:()=>X.CHAR_AFFLICTIONS_LIST,merge:(e,t)=>t}],[X.CHAR_DEFENCES_LIST,{keyFor:()=>X.CHAR_DEFENCES_LIST,merge:(e,t)=>t}],[X.CHAR_ITEMS_LIST,{keyFor:({payload:e}={})=>`${X.CHAR_ITEMS_LIST}:${normalizeLocation(e?.location)}`,merge:(e,t)=>t}],[X.IRE_RIFT_LIST,{keyFor:()=>X.IRE_RIFT_LIST,merge:(e,t)=>t}],[X.TARGET_INFO,{keyFor:()=>X.TARGET_INFO,merge:mergeTargetPayload}]]),ee=new Set([X.CHAR_AFFLICTIONS_ADD,X.CHAR_AFFLICTIONS_REMOVE,X.CHAR_DEFENCES_ADD,X.CHAR_DEFENCES_REMOVE,X.CHAR_ITEMS_DELTA,X.IRE_RIFT_CHANGE]),createGmcpBlockBuffer=({coalesce:e=!0}={})=>{const t=[],flush=()=>{if(!e){const e=[...t];return t.length=0,e}const n=new Map,a=[],o=[];return t.forEach(e=>{const t=J.get(e.topic);if(t){const a=t.keyFor(e),o=n.get(a);return void(o?n.set(a,{...o,payload:t.merge(o.payload,e.payload)}):n.set(a,e))}ee.has(e.topic)?o.push(e):a.push(e)}),t.length=0,[...n.values(),...a,...o]};return{enqueue:(e={})=>{const n=String(e.topic||"").trim();n&&t.push({topic:n,payload:Object.prototype.hasOwnProperty.call(e,"payload")?e.payload:null})},flush,size:()=>t.length}},createEventBus=({label:e="nexSys4.eventBus",debugEnabled:t=!1,traceLimit:n=200}={})=>{const a=new Map,o=new Set;let i=Boolean(t);const s=Math.max(1,Number(n||200)),l=[],pushTrace=(t,n={})=>{if(!i)return null;const a={at:Date.now(),type:t,detail:n};return l.push(a),l.length>s&&l.splice(0,l.length-s),console.log(`[${e}] ${t}`,n),a},on=(e,t)=>{const n=String(e||"").trim();if(!n||"function"!=typeof t)return()=>{};const o=a.get(n)||new Set;return o.add(t),a.set(n,o),pushTrace("on",{topic:n,listenerCount:o.size}),()=>off(n,t)},off=(e,t)=>{const n=String(e||"").trim(),o=a.get(n);if(!n||!o)return!1;const i=o.delete(t);return o.size||a.delete(n),pushTrace("off",{topic:n,removed:i,listenerCount:o.size}),i},onAny=e=>"function"!=typeof e?()=>{}:(o.add(e),pushTrace("onAny",{listenerCount:o.size}),()=>offAny(e)),offAny=e=>{const t=o.delete(e);return pushTrace("offAny",{removed:t,listenerCount:o.size}),t},emit=(e,t)=>{const n=String(e||"").trim();if(!n)return 0;const s=[...a.get(n)||[]],l=[...o];return i&&pushTrace("emit",{topic:n,listenerCount:s.length,anyListenerCount:l.length,payload:t}),s.forEach(e=>{try{e(t,n)}catch(a){console.error("nexSys4 event bus handler failed",{topic:n,error:a})}}),l.forEach(e=>{try{e(t,n)}catch(a){console.error("nexSys4 event bus global handler failed",{topic:n,error:a})}}),s.length+l.length};return{on,off,onAny,offAny,emit,clear:()=>{a.clear(),o.clear()},setDebugEnabled(e){i=Boolean(e)},debugInfo:()=>({label:e,debugEnabled:i,topics:[...a.keys()],anyListenerCount:o.size,recentTrace:[...l]})}},te=Object.freeze({RUNTIME_STARTED:"nexsys4.runtime.started",RUNTIME_STOPPED:"nexsys4.runtime.stopped",RAW_GMCP:"nexsys4.raw.gmcp",SYSTEM_VITALS_CHANGED:"nexsys4.system.vitals.changed",SYSTEM_HEALTH_CHANGED:"nexsys4.system.health.changed",SYSTEM_MANA_CHANGED:"nexsys4.system.mana.changed",SYSTEM_RAGE_CHANGED:"nexsys4.system.rage.changed",SYSTEM_BLEED_CHANGED:"nexsys4.system.bleed.changed",SYSTEM_STATUS_CHANGED:"nexsys4.system.status.changed",SYSTEM_CLASS_CHANGED:"nexsys4.system.class.changed",SYSTEM_TARGET_CHANGED:"nexsys4.system.target.changed",SYSTEM_ROOM_CHANGED:"nexsys4.system.room.changed",SYSTEM_ROOM_ITEMS_CHANGED:"nexsys4.system.room_items.changed",SYSTEM_RUNTIME_CHANGED:"nexsys4.system.runtime.changed",SYSTEM_PAUSE_CHANGED:"nexsys4.system.pause.changed",SYSTEM_PAUSED:"nexsys4.system.paused",SYSTEM_UNPAUSED:"nexsys4.system.unpaused",SYSTEM_LOADED:"nexsys4.system.loaded",SYSTEM_SETTINGS_CHANGED:"nexsys4.system.settings.changed",SYSTEM_BASELINE_CHANGED:"nexsys4.system.baseline.changed",SYSTEM_DEATH_DETECTED:"nexsys4.system.death.detected",SYSTEM_MOUNT_CHANGED:"nexsys4.system.mount.changed",SYSTEM_WIELDED_CHANGED:"nexsys4.system.wielded.changed",UI_CONFIG_CHANGED:"nexsys4.ui.config.changed",AFF_GOT:"nexsys4.aff.got",AFF_LOST:"nexsys4.aff.lost",AFF_STACK_CHANGED:"nexsys4.aff.stack.changed",AFF_PRIORITY_CHANGED:"nexsys4.aff.priority.changed",DEF_GOT:"nexsys4.def.got",DEF_LOST:"nexsys4.def.lost",DEF_PRIORITY_CHANGED:"nexsys4.def.priority.changed",BALANCE_GOT:"nexsys4.balance.got",BALANCE_LOST:"nexsys4.balance.lost",BALANCE_RESET:"nexsys4.balance.reset",BALANCE_DURATION_OBSERVED:"nexsys4.balance.duration.observed",BALANCE_TIMER_RESTARTED:"nexsys4.balance.timer.restarted",EQBAL_GOT:"nexsys4.eqbal.got",LIMB_HIT:"nexsys4.limb.hit",LIMB_RESET:"nexsys4.limb.reset",LIMB_STAGE_CHANGED:"nexsys4.limb.stage.changed",LIMB_DECAY:"nexsys4.limb.decay",CACHE_AMOUNT_CHANGED:"nexsys4.cache.amount.changed",CACHE_INVENTORY_LIST:"nexsys4.cache.inventory.list",CACHE_RIFT_LIST:"nexsys4.cache.rift.list",CACHE_PRECACHE_CHANGED:"nexsys4.cache.precache.changed",ITEM_ROOM_ADDED:"nexsys4.item.room.added",ITEM_ROOM_REMOVED:"nexsys4.item.room.removed",ITEM_ROOM_UPDATED:"nexsys4.item.room.updated",ITEM_ROOM_LIST:"nexsys4.item.room.list",ITEM_INV_ADDED:"nexsys4.item.inv.added",ITEM_INV_REMOVED:"nexsys4.item.inv.removed",ITEM_INV_UPDATED:"nexsys4.item.inv.updated",ITEM_INV_LIST:"nexsys4.item.inv.list",QUEUE_UPDATED:"nexsys4.queue.updated",QUEUE_FLUSHED:"nexsys4.queue.flushed",QUEUE_DEFERRED:"nexsys4.queue.deferred",QUEUE_CLEARED:"nexsys4.queue.cleared",QUEUE_SENT:"nexsys4.queue.sent",QUEUE_FIRED:"nexsys4.queue.fired",QUEUE_FIRED_ACK:"nexsys4.queue.fired.ack",SERVERSIDE_AFF_PRIORITY_SET:"nexsys4.serverside.aff.priority.set",SERVERSIDE_DEF_PRIORITY_SET:"nexsys4.serverside.def.priority.set",SERVERSIDE_DIRTY:"nexsys4.serverside.dirty",SERVERSIDE_EVALUATED:"nexsys4.serverside.evaluated",SERVERSIDE_RULE_CHANGED:"nexsys4.serverside.rule.changed",RULE_ADDED:"nexsys4.rule.added",RULE_REMOVED:"nexsys4.rule.removed",RULE_ENABLED:"nexsys4.rule.enabled",RULE_DISABLED:"nexsys4.rule.disabled",RULE_PACK_LOADED:"nexsys4.rule.pack.loaded",RULE_PACK_UNLOADED:"nexsys4.rule.pack.unloaded",RULE_ORDER_CHANGED:"nexsys4.rule.order.changed",RULE_ACTIVATED:"nexsys4.rule.activated",RULE_DEACTIVATED:"nexsys4.rule.deactivated"}),re=Object.freeze({IDLE:"IDLE",PROBING_SEPARATOR:"PROBING_SEPARATOR",BOOTING:"BOOTING",PROVISIONING_CURINGSET:"PROVISIONING_CURINGSET",AWAITING_SNAPSHOTS:"AWAITING_SNAPSHOTS",CAPTURING_SNAPSHOTS:"CAPTURING_SNAPSHOTS",RUNNING:"RUNNING",FAILED:"FAILED"}),isRuntimeReadyPhase=e=>e===re.RUNNING,ne=Object.freeze({OUTPUT_COMPLETE:"SystemOutputCompleteEvent",STARTUP_BEGIN:"CuringStartupBeginEvent",STARTUP_COMPLETE:"CuringStartupCompleteEvent",STARTUP_FINALIZED:"CuringStartupFinalizedEvent",CURINGSET_READY:"CuringSetReadyEvent"}),ae=Object.freeze(["IRE.Rift.Request","IRE.Time.Request","Char.Skills.Get","Char.Items.Inv"]),buildStartupSnapshotCommands=()=>[`echo SystemEvent ${ne.STARTUP_BEGIN}`,"curing on","curing status","curing priority list","curing queue list","curing predictions","curing priority defence list","def","score","date",`echo SystemEvent ${ne.STARTUP_COMPLETE}`],buildStartupSnapshotBurst=()=>({gmcpRequests:[...ae],commands:buildStartupSnapshotCommands()}),oe=Object.freeze(["status","affPriorities","defPriorities"]),normalizeTimeoutMs=(e,t=1e3)=>{const n=Number(e);return Number.isFinite(n)&&n>0?Math.floor(n):t},normalizeRetryCount=(e,t=0)=>{const n=Number(e);return Number.isFinite(n)&&n>=0?Math.floor(n):t},createStartupCoordinator=({adapter:e,systemModel:t,serverside:n,persistence:a,seedBaselineFromObservedStartup:o=()=>{},noticeCenter:i,buildPersistenceSnapshot:s,startupTimeoutMs:l=1e3,maxStartupRetries:c=0,publishStartupPhase:u=()=>{},publishLoaded:d=()=>{},releaseStartupPause:p=()=>!1,setRuntimePhase:m=(e,n={})=>{t.setRuntime({phase:e,...n})}})=>{let g=!1,h=0,b=null,y=null;const v=normalizeTimeoutMs(l),S=normalizeRetryCount(c),clearConvergenceTimer=()=>{b&&(e.clearTimeout(b),b=null)},getMissingRequiredTopics=()=>{if("function"==typeof n.getMissingStartupFlags)return n.getMissingStartupFlags(oe);const e=n.getStartupStatus();return oe.filter(t=>!e.flags?.[t])},formatMissingRequiredTopics=(e=[])=>e.length?` Missing required captures: ${e.join(", ")}.`:"",startConvergenceTimer=()=>{clearConvergenceTimer(),b=e.setTimeout(()=>{if(g)return;const e=getMissingRequiredTopics();retryOrFail(e.length?`Startup snapshots did not converge within ${v}ms.`:`Startup closing fence did not arrive within ${v}ms.`,{phase:"snapshot-timeout-retry",source:"startup-timeout",missingRequired:e})},v)},complete=(e="startup-check")=>{clearConvergenceTimer(),m(re.RUNNING,{startupFailureMessage:""}),o(),a.save(s()),u("startup-complete"),p({source:"startup-complete"}),d({source:"startup-complete",topic:te.SYSTEM_LOADED}),i.publish("output","startup complete",{source:e})},fail=(e,{source:t="startup-failed",missingRequired:n=[]}={})=>{clearConvergenceTimer(),g=!0;const a=`${e}${formatMissingRequiredTopics(n)}`;return m(re.FAILED,{paused:!0,startupFailureMessage:a}),u("startup-failed"),i.publish("output",a,{force:!0,source:t,title:"startup failed: ",fg:"#fee2e2",bg:"#450a0a",titleFg:"#ffffff",titleBg:"#7f1d1d"}),!1},retryOrFail=(e,{phase:t,source:n,missingRequired:a=[]}={})=>!g&&(h>=S?fail(`${e} Exhausted ${S} startup retr${1===S?"y":"ies"}.`,{source:n,missingRequired:a}):(h+=1,requestSnapshots(y,t||"snapshot-retry",{source:n,retry:h,missingRequired:a}),!1)),requestSnapshots=(t,n="snapshot-request",a={})=>{if(y="function"==typeof t?t:y,"function"!=typeof y)return[];const o={source:"startup-snapshots",phase:n,attempt:h+1,retryCount:h,...a},{gmcpRequests:i,commands:s}=buildStartupSnapshotBurst();m(re.AWAITING_SNAPSHOTS),u(n),e.sendGmcp(i,o);const l=y(s,o);return startConvergenceTimer(),l};return{reset:()=>{g=!1,h=0,clearConvergenceTimer(),n.resetStartupStatus?.(),m(re.IDLE,{startupFailureMessage:""})},fail,requestSnapshots,handleFenceBegin:()=>!g&&(m(re.CAPTURING_SNAPSHOTS),u("snapshot-begin"),!0),handleFenceComplete:(e="snapshot:complete:text")=>{if(g)return!1;u("snapshot-complete");const t=n.getStartupStatus();t.flags.queue||n.updateObservedQueue([]),t.flags.predictions||n.updateObservedPredictions({});const a=getMissingRequiredTopics();return a.length?retryOrFail("Startup closing fence arrived before required snapshots converged.",{phase:"snapshot-retry",source:e,missingRequired:a}):(g=!0,complete(e),!0)},dispose(){clearConvergenceTimer()},isResolved:()=>g}},ie="nexsys4-default",normalizeCommand=e=>String(e||"").trim().toLowerCase().replace(/\s+/g," "),isServersideCommand=e=>{const t=normalizeCommand(e);return t.startsWith("curing ")||t.startsWith("curingset ")},normalizeSetName=e=>String(e||"").trim().toLowerCase(),toNumberMaybe=e=>{if("number"==typeof e&&Number.isFinite(e))return e;const t=Number(e);return Number.isFinite(t)?t:e},normalizeBoolean=e=>{if("boolean"==typeof e)return e;const t=String(e||"").trim().toLowerCase();return!!["on","yes","true","activated","enabled"].includes(t)||!["off","no","false","disabled"].includes(t)&&Boolean(e)},normalizeStatusValue=(e,t)=>{switch(e){case"enabled":case"reporting":case"afflictions":case"defences":case"sipping":case"transmutation":case"focus":case"useVault":case"clot":case"fallback":case"kaidoTransmute":case"customAffPriority":case"customDefPriority":case"batch":case"insomnia":return normalizeBoolean(t);case"focusOverHerbs":{if("boolean"==typeof t)return t;const e=String(t||"").trim().toLowerCase();return!!["focus","first","yes","on","true"].includes(e)||!["herbs","second","no","off","false"].includes(e)&&Boolean(t)}case"tree":{if("custom"===t)return"custom";if("boolean"==typeof t)return t?"on":"off";const e=String(t||"").trim().toLowerCase();return["custom","on","off"].includes(e)?e:["yes","activated","enabled","true"].includes(e)?"on":["no","disabled","false"].includes(e)?"off":e||"off"}case"sipPriority":return"mana"===String(t||"").trim().toLowerCase()?"mana":"health";default:return toNumberMaybe(t)}},createServersideContext=({affModel:e,defModel:t,balanceModel:n,systemModel:a,trackables:o,now:i})=>{const s=a.getRoom().items||{};let l=null;const isTarget=e=>Array.isArray(e)?e.some(e=>isTarget(e)):"function"==typeof a.isTarget&&a.isTarget(e);return{haveAff:t=>e.haveAff(t),haveAffs:(t=[])=>e.haveAffs(t),haveAnAff:(t=[])=>e.haveAnAff(t),affCount:t=>Number(e.get?.(t)?.count||0),affElapsed:t=>e.elapsed(t),sortedActiveAffs:()=>(null===l&&(l="function"==typeof e.currentSorted?e.currentSorted():[]),l),haveDef:e=>t.haveDef(e),haveDefs:(e=[])=>e.every(e=>t.haveDef(e)),haveADef:(e=[])=>e.some(e=>t.haveDef(e)),haveBal:e=>n.have(e),haveBals:(e=[])=>e.every(e=>n.have(e)),haveABal:(e=[])=>e.some(e=>n.have(e)),balElapsed:e=>n.elapsed(e),suspendCuring:(e={})=>({...e&&"object"==typeof e?e:{},suspendCuring:!0}),trackableElapsed:e=>{const t=o[e];return t?.have?i()-t.since:Number.POSITIVE_INFINITY},roomHasItem:e=>Boolean(s[e]),isTarget,isClass:e=>a.isClass(e)}},buildCountablePriorityDefaults=e=>"function"!=typeof e.getCountablePriorityNames?{}:e.getCountablePriorityNames().reduce((e,t)=>(e[t]=0,e),{}),normalizeServersideAffPriority=e=>{const t=Number(e);return Number.isInteger(t)&&t>=1&&t<=26?t:0},isServersideAffPriorityNumber=e=>{const t=Number(e);return Number.isInteger(t)&&t>=1&&t<=26},canonicalAffPriority=e=>{const t=normalizeServersideAffPriority(e);return 26===t?0:t},buildBaselineAffPriorities=e=>({...e.list().reduce((t,n)=>(t[n]=normalizeServersideAffPriority(e.getPriority(n)),t),{}),...buildCountablePriorityDefaults(e)}),buildObservedAffPriorities=e=>({...e.list().reduce((e,t)=>(e[t]=0,e),{}),...buildCountablePriorityDefaults(e)}),buildBaselineDefPriorities=(e,t="")=>e.list().reduce((n,a)=>{const o=e.get(a);return!o?.serverside||o.static?n:e.isAvailableForClass(a,t)?(n[a]=e.getPriority(a),n):n},{}),buildObservedDefPriorities=(e,t="")=>e.list().reduce((n,a)=>e.get(a)?.serverside&&e.isAvailableForClass(a,t)?(n[a]=0,n):n,{}),buildBaselineCurePriorities=(e={})=>Object.entries(e).reduce((e,[t,n])=>(e[t]=Number(n.prio||0),e),{}),mergeWithResets=(e,t={})=>{const n={...e};return Object.entries(t).forEach(([t,a])=>{n[t]="RESET"!==a?a:e[t]}),n},createInitialServersideState=({baselineSettings:e,affModel:t,defModel:n,systemModel:a,cureTable:o})=>{const i=a?.getClass?.()||"",s=buildBaselineAffPriorities(t),l=buildBaselineDefPriorities(n,i),c=buildBaselineCurePriorities(o);return{baseline:{settings:{...e},affPriorities:s,defPriorities:l,curePriorities:c},sessionBaseline:{settings:{...e},affPriorities:{...s},defPriorities:{...l},curePriorities:{...c}},derived:{},desired:{},observed:{settings:{...e},affPriorities:buildObservedAffPriorities(t),defPriorities:buildObservedDefPriorities(n,i),curePriorities:buildBaselineCurePriorities(o),prioAff:null,manualQueue:[],predictions:{},prioritySet:""},pending:new Map,capture:{affPriorities:null,defPriorities:null,prioritySet:""},transient:{prioAff:null,manualQueue:[],predictions:{},staticDefRequests:{},fullPriorityReset:!1},diagnostics:{lastCommands:[],lastReasons:[],desyncCounter:0,recoveryCounter:0,commandRepeatCounter:0},curingsets:{sets:[],activeSet:"",priorSet:"",used:0,limit:0},startup:{flags:{status:!1,affPriorities:!1,defPriorities:!1,queue:!1,predictions:!1,curingsets:!1}},lastDiffCommands:[],rules:[],dirty:!0}},createCuringSetProvisioner=({adapter:e,serverside:t,dispatchCommands:n,setRuntimePhase:a=()=>{},publishStartupPhase:o=()=>{},options:i={}}={})=>{const s=`echo SystemEvent ${ne.CURINGSET_READY}`,l=Math.max(50,Number(i.curingSetProvisionTimeoutMs??i.startupTimeoutMs??1e3)),c=Math.max(1,Number(i.maxCuringSetProvisionAttempts??4));let u=!1,d=0,p=!1,m=null,g={onReady:()=>{},onAbort:()=>{}};const clearTimer=()=>{m&&(e?.clearTimeout?.(m),m=null)},settle=()=>{u=!1,clearTimer()},finishReady=()=>{const{onReady:e}=g;settle(),e({createdThisRun:p})},finishAbort=e=>{const{onAbort:t}=g;settle(),t(e)},sendProbe=(t,a)=>{clearTimer(),d+=1,n([...t,"curingset list",s],{source:"curingset-provision",reason:a,attempt:d}),m=e?.setTimeout?.(()=>{u&&finishAbort(`nexSys4 could not confirm its curing set within ${l}ms (no response from the game). Reload to retry.`)},l)},handleBarrier=()=>{if(!u)return;clearTimer();const e=t.getCuringSets?.()??{},n=(e.sets||[]).map(e=>normalizeSetName(e)),a=normalizeSetName(e.activeSet),o=Number(e.used||0),i=Number(e.limit||0),s=n.includes(ie);"nexsys4-default"!==a?d>=c?finishAbort(`nexSys4 could not secure its curing set after ${c} attempts. Reload to retry.`):s?sendProbe([`curingset switch ${ie}`],"switch"):i>0&&o>=i?finishAbort(`nexSys4 needs its own curing set but all ${i} slots are full. Delete a set or CURINGSET EXPAND (25cr), then reload.`):(p=!0,sendProbe([`curingset new ${ie}`,`curingset switch ${ie}`],"create")):finishReady()};return{start({onReady:e=()=>{},onAbort:t=()=>{}}={}){g={onReady:e,onAbort:t},u=!0,d=0,p=!1,a(re.PROVISIONING_CURINGSET),o("provision-curingset"),sendProbe([],"list")},handleBarrier,wasCreatedThisRun:()=>p,isActive:()=>u,dispose(){settle()}}},se=Object.freeze({STARTED:"nexSys.start(): startup initiated.",ALREADY_STARTED:"nexSys.start(): runtime is already started.",STARTUP_PENDING:"nexSys.start(): runtime is already started; startup is still in progress.",STARTUP_FAILED:"nexSys.start(): runtime startup failed. Check the console and in-game notices.",SEPARATOR_PROBE:"nexSys.start(): command separator unknown; sending config to auto-detect. Startup will resume on capture."}),le=Object.freeze(["config","more","more"]),createRuntimeStartupOrchestrator=({adapter:e,systemModel:t,persistenceApi:n,startup:a,curingSetProvisioner:o,noticeCenter:i,syncDebugMode:s,isStarted:l,markStarted:c,setRuntimePhase:u,publishStartupPhase:d,attachEventWiring:p,promptPresenter:m,publishRuntimeStarted:g,hydrateCacheFromAdapterGmcp:h,commandDispatcher:b})=>{let y=null;const continueStartup=()=>{c(),u(re.BOOTING,{startupFailureMessage:""}),d("init"),g(),p(),m.start(),h(),o.start({onReady:()=>{a.requestSnapshots(b.sendCommands)},onAbort:e=>{a.fail(e,{source:"curingset-provision"})}})};return{dispose(){y&&(y(),y=null),o?.dispose?.()},start(){if(l()){const e=t.getRuntime().phase;return e===re.FAILED?se.STARTUP_FAILED:e===re.RUNNING?se.ALREADY_STARTED:se.STARTUP_PENDING}if(y)return se.SEPARATOR_PROBE;t.setSettings({commandSeparator:void 0},{setBaseline:!0}),n.loadPersistence(),a.reset();const o=normalizeCommandSeparator(t.getSettings().commandSeparator),c=normalizeCommandSeparator(e.getCommandSeparator()),p=o||c;return s(),p?(t.getSettings().commandSeparator!==p&&t.setSettings({commandSeparator:p},{setBaseline:!0}),continueStartup(),se.STARTED):(u(re.PROBING_SEPARATOR),d("separator-probe"),i.publish("output","Command separator not configured. Sending config to auto-detect...",{source:"separator-probe"}),y=e.addOnceTrigger({id:"nexsys4-separator-probe",regex:/\bCommandSeparator\s+(?<sep>\S+)/,action:({args:n})=>{const a=normalizeCommandSeparator(String(n.groups?.sep||"").trim());a&&(y=null,e.setSeparator(a),t.setSettings({commandSeparator:a},{setBaseline:!0}),continueStartup())}}),le.forEach(t=>{e.send([t],{source:"separator-probe"})}),se.SEPARATOR_PROBE)}}},ce=["hp","maxhp","mp","maxmp","ep","maxep","wp","maxwp"],ue="nexsys4.parsed_gmcp_vitals",hasOwn$6=(e,t)=>Boolean(e)&&Object.prototype.hasOwnProperty.call(e,t),parseNumericVital=(e,t)=>{if(!hasOwn$6(e,t))return;const n=toNumber(e[t],NaN);return Number.isFinite(n)?n:void 0},parseResourceStat=e=>{const[t,n]=String(e).split(":");if(!t||void 0===n)return null;const a=t.trim().toLowerCase(),o=n.trim();if(!a)return null;const i=toNumber(o.endsWith("%")?o.slice(0,-1):o,NaN),s=toOptionalBooleanFromYesNo(o);return{key:a,value:Number.isFinite(i)?i:o,balanceState:Number.isFinite(i)?void 0:s}},toBalancePatches=(e={})=>Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>({id:e,have:t})),parseGmcpVitals=(e={})=>{const t=e&&"object"==typeof e&&!Array.isArray(e)?e:{},n=ce.reduce((e,n)=>({...e,[n]:parseNumericVital(t,n)}),{}),a={balance:toOptionalBooleanFromYesNo(t.bal),equilibrium:toOptionalBooleanFromYesNo(t.eq)};return{kind:ue,vitals:n,balances:a,balancePatches:toBalancePatches(a),resourceStats:(Array.isArray(t.charstats)?t.charstats:[]).map(parseResourceStat).filter(Boolean)}},toParsedGmcpVitals=(e={})=>"nexsys4.parsed_gmcp_vitals"!==e?.kind?parseGmcpVitals(e):{...e,balancePatches:Array.isArray(e.balancePatches)?e.balancePatches:toBalancePatches(e.balances||{})},hasOwn$5=(e,t)=>null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t),isRecord$2=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),readFirstDefined=(e,t=[])=>{for(const n of t)if(hasOwn$5(e,n)&&void 0!==e[n]&&null!==e[n])return e[n]},parseAffName=(e={})=>{if("string"==typeof e)return e.toLowerCase();if(Array.isArray(e)){const t=e[0];if("string"==typeof t)return t.toLowerCase();const n=t&&"object"==typeof t?t:{};return String(n.affliction||n.defence||n.name||n.aff||n.def||"").toLowerCase()}const t=e&&"object"==typeof e?e:{};return String(t.affliction||t.defence||t.name||t.aff||t.def||"").toLowerCase()},parseRoomItems=(e={})=>Array.isArray(e?.items)?e.items.reduce((e,t)=>{const n=String(t?.name||t?.item||"").trim();return n?(e[n]=(e[n]||0)+1,e):e},{}):e?.items&&"object"==typeof e.items?{...e.items}:{},normalizeItemLocation$2=(e={},t=e?.item||e)=>String(e?.location??t?.parentid??t?.location??"inv").toLowerCase(),normalizeInventoryDeltaName=e=>"string"==typeof e?e:e?.name||e?.item||"",createInventoryDelta=(e,t={})=>{const n=t?.item||t,a=normalizeItemLocation$2(t,n);return{location:a,inventoryDelta:{id:n?.id??t?.id,location:a,name:normalizeInventoryDeltaName(n),icon:n?.icon??null,attrib:n?.attrib??null,amount:n?.amount??n?.count??n?.qty??t?.amount??t?.count,delta:n?.delta??t?.delta,action:e.split(".").pop(),direction:e.endsWith("remove")?"remove":e.endsWith("add")?"add":void 0},dirtyReason:`gmcp:${e}`}},hasInventoryIdentity=(e={})=>void 0!==e.id&&null!==e.id&&""!==e.id||Boolean(String(e.name||"").trim()),normalizeTargetRecord=(e={})=>{if(!isRecord$2(e))return{};const t={},n=readFirstDefined(e,["id","ID"]),a=readFirstDefined(e,["Text","text","short_desc"]),o=readFirstDefined(e,["HP","hp","hpperc"]);return void 0!==n&&(t.id=n),void 0!==a&&(t.text=a),void 0!==o&&(t.hp=o),t},createGmcpApplier=({emit:e=()=>{}}={})=>{const translate=(e={})=>{const t=[],emitTranslated=(e,n)=>{t.push({topic:e,payload:n})},n=normalizeTag(e.tag||e.rawTag||e.gmcp_method),a=e.payload;switch(n){case"char.vitals":emitTranslated(X.CHAR_VITALS,{vitals:parseGmcpVitals(a||{})});break;case"char.status":emitTranslated(X.CHAR_STATUS,{status:a||{}});break;case"char.afflictions.list":emitTranslated(X.CHAR_AFFLICTIONS_LIST,{afflictions:Array.isArray(a)?a:[]});break;case"char.afflictions.add":{const e=parseAffName(a);e&&emitTranslated(X.CHAR_AFFLICTIONS_ADD,{name:e});break}case"char.afflictions.remove":{const e=parseAffName(a);e&&emitTranslated(X.CHAR_AFFLICTIONS_REMOVE,{name:e});break}case"char.defences.list":emitTranslated(X.CHAR_DEFENCES_LIST,{defences:Array.isArray(a)?a:[]});break;case"char.defences.add":{const e=parseAffName(a);e&&emitTranslated(X.CHAR_DEFENCES_ADD,{name:e});break}case"char.defences.remove":{const e=parseAffName(a);e&&emitTranslated(X.CHAR_DEFENCES_REMOVE,{name:e});break}case"ire.rift.list":emitTranslated(X.IRE_RIFT_LIST,{rift:a||{}});break;case"ire.rift.change":emitTranslated(X.IRE_RIFT_CHANGE,{change:a||{}});break;case"char.items.list":emitTranslated(X.CHAR_ITEMS_LIST,{location:normalizeItemLocation$2(a),items:Array.isArray(a?.items)?a.items:[]});break;case"char.items.add":case"char.items.remove":case"char.items.update":{const e=createInventoryDelta(n,a||{}),t=hasInventoryIdentity(e.inventoryDelta)?e.inventoryDelta:null;emitTranslated(X.CHAR_ITEMS_DELTA,{inventoryDelta:t,dirtyReason:e.dirtyReason});break}case"room.info":emitTranslated(X.ROOM_INFO,{room:a||{},roomItems:parseRoomItems(a||{})});break;case"ire.target.info":emitTranslated(X.TARGET_INFO,{target:normalizeTargetRecord(a||{})})}return t};return{translate,apply(t){translate(t).forEach(({topic:t,payload:n})=>{e(t,n)})}}},de=Object.freeze({inv:te.ITEM_INV_LIST,room:te.ITEM_ROOM_LIST}),pe=Object.freeze({inv:Object.freeze({add:te.ITEM_INV_ADDED,remove:te.ITEM_INV_REMOVED,update:te.ITEM_INV_UPDATED}),room:Object.freeze({add:te.ITEM_ROOM_ADDED,remove:te.ITEM_ROOM_REMOVED,update:te.ITEM_ROOM_UPDATED})}),normalizeItemLocation$1=e=>String(e||"").trim().toLowerCase()||"inv",createItemTopicNotifier=({publishPublic:e=()=>{}}={})=>{const notifyList=(t,n)=>{const a=de[normalizeItemLocation$1(t)];a&&e(a,{location:normalizeItemLocation$1(t),items:Array.isArray(n)?n:[]})},notifyDelta=t=>{const n=normalizeItemLocation$1(t.location),a=String(t.action||t.direction||"").trim().toLowerCase(),o=pe[n]?.[a];o&&e(o,t)};return{notify({topic:e,payload:t}={}){e!==X.CHAR_ITEMS_DELTA?e===X.CHAR_ITEMS_LIST&¬ifyList(t?.location,t?.items):t?.inventoryDelta&¬ifyDelta(t.inventoryDelta)}}},fallbackClone=(e,t=new WeakMap)=>{if(null==e)return e;if("object"!=typeof e)return e;if(t.has(e))return t.get(e);if(e instanceof Date)return new Date(e.getTime());if(Array.isArray(e)){const n=[];return t.set(e,n),e.forEach(e=>n.push(fallbackClone(e,t))),n}if(e instanceof Set){const n=new Set;return t.set(e,n),[...e].forEach(e=>n.add(fallbackClone(e,t))),n}if(e instanceof Map){const n=new Map;return t.set(e,n),[...e.entries()].forEach(([e,a])=>{n.set(fallbackClone(e,t),fallbackClone(a,t))}),n}const n={};return t.set(e,n),Object.entries(e).forEach(([e,a])=>{"function"!=typeof a&&(n[e]=fallbackClone(a,t))}),n},deepClone$1=e=>{if("function"==typeof structuredClone)try{return structuredClone(e)}catch{}try{return JSON.parse(JSON.stringify(e))}catch{return fallbackClone(e)}},deepMerge=(e,t)=>{const n=Array.isArray(e)?[...e]:{...e||{}};return Object.entries(t||{}).forEach(([e,t])=>{!t||"object"!=typeof t||Array.isArray(t)||!n[e]||"object"!=typeof n[e]||Array.isArray(n[e])?n[e]=t:n[e]=deepMerge(n[e],t)}),n},deepFreeze=e=>e&&"object"==typeof e?(Object.isFrozen(e)||(Object.freeze(e),Object.keys(e).forEach(t=>deepFreeze(e[t]))),e):e,createSnapshotCache=({getVersion:e=()=>0,buildSnapshot:t=()=>({})}={})=>{let n=NaN,a=null;return()=>{const o=e();return a&&n===o||(n=o,a=deepFreeze(t())),a}},me=Object.freeze(["head","torso","leftarm","rightarm","leftleg","rightleg"]),fe=Object.freeze({healthy:0,damaged:1,broken:2,mangled:3}),ge=new Set(Object.keys(fe)),he=Object.freeze({head:"head",torso:"torso",leftarm:"leftarm",rightarm:"rightarm",leftleg:"leftleg",rightleg:"rightleg"}),be={brokenleftarm:{limb:"leftarm",stage:"broken"},brokenrightarm:{limb:"rightarm",stage:"broken"},brokenleftleg:{limb:"leftleg",stage:"broken"},brokenrightleg:{limb:"rightleg",stage:"broken"},damagedhead:{limb:"head",stage:"damaged"},damagedleftarm:{limb:"leftarm",stage:"damaged"},damagedrightarm:{limb:"rightarm",stage:"damaged"},damagedleftleg:{limb:"leftleg",stage:"damaged"},damagedrightleg:{limb:"rightleg",stage:"damaged"},mangledhead:{limb:"head",stage:"mangled"},mangledleftarm:{limb:"leftarm",stage:"mangled"},mangledrightarm:{limb:"rightarm",stage:"mangled"},mangledleftleg:{limb:"leftleg",stage:"mangled"},mangledrightleg:{limb:"rightleg",stage:"mangled"},mildtrauma:{limb:"torso",stage:"damaged"},serioustrauma:{limb:"torso",stage:"mangled"}},normalizeLimbId=e=>{const t=String(e||"").trim().toLowerCase().replace(/\s+/g,"");return he[t]||t},buildAfflictionStageSnapshot=(e=[])=>{const t=me.reduce((e,t)=>(e[t]="healthy",e),{});return e.forEach(e=>{const n=be[String(e||"").trim().toLowerCase()];if(!n)return;const a=t[n.limb]||"healthy";(fe[n.stage]??0)>(fe[a]??0)&&(t[n.limb]=n.stage)}),t},createLimbModel=({now:e=Date.now,setTimeoutFn:t,clearTimeoutFn:n,damageResetMs:a=18e4}={})=>{const o=new Set;let i=0;const s=new Map,l=new Map,c=me.reduce((t,n)=>(t[n]={id:n,percent:0,hits:0,stage:"healthy",updatedAt:e()},t),{}),emit=(e,t)=>{i+=1,t?.limb&&s.set(t.limb,(s.get(t.limb)??0)+1),o.forEach(n=>n(e,t))},cancelResetTimer=e=>{const t=l.get(e);null!=t&&(n(t),l.delete(e))},scheduleResetTimer=n=>{cancelResetTimer(n);const o=t(()=>{l.delete(n);const t=c[n];!t||t.percent<=0||(t.percent=0,t.hits=0,t.updatedAt=e(),emit("LimbDecay",{limb:n,value:deepClone$1(t)}))},a);l.set(n,o)},buildEntrySnapshot=(e={})=>({id:e.id,percent:e.percent,hits:e.hits,stage:e.stage,updatedAt:e.updatedAt}),u=new Map,getEntrySnapshot=e=>c[e]?(u.has(e)||u.set(e,createSnapshotCache({getVersion:()=>s.get(e)??0,buildSnapshot:()=>buildEntrySnapshot(c[e])})),u.get(e)()):null,d=createSnapshotCache({getVersion:()=>i,buildSnapshot:()=>me.reduce((e,t)=>(e[t]=getEntrySnapshot(t),e),{})}),setStage=(t,n,a="manual")=>{const o=normalizeLimbId(t),i=String(n||"").trim().toLowerCase();if(!c[o]||!ge.has(i))return!1;if(c[o].stage===i)return!1;const s=c[o],l=s.stage;return s.stage=i,s.percent=0,s.hits=0,s.updatedAt=e(),cancelResetTimer(o),emit("LimbStageChanged",{limb:o,stage:i,previousStage:l,source:a,value:deepClone$1(s)}),!0},applyAfflictionTransition=(e,t)=>{const n=be[String(e||"").toLowerCase()];return!!n&&(t?(setStage(n.limb,n.stage,"affliction"),!0):"damaged"===n.stage?(setStage(n.limb,"healthy","affliction"),!0):"mangled"===n.stage?(setStage(n.limb,"damaged","affliction"),!0):"broken"===n.stage&&(setStage(n.limb,"healthy","affliction"),!0))},syncFromAfflictions=(e=[],t="affliction-list")=>{const n=buildAfflictionStageSnapshot(e);return me.reduce((e,a)=>n[a]===c[a].stage?e:setStage(a,n[a],t)||e,!1)};return{onChange:e=>(o.add(e),()=>o.delete(e)),list:()=>[...me],snapshot:()=>d(),hit:(t,n,a="manual")=>{const o=normalizeLimbId(t),i=Number(n);if(!c[o]||!Number.isFinite(i)||i<=0)return!1;const s=c[o],l=s.stage;s.percent=Math.max(0,s.percent+i),s.hits+=1,s.updatedAt=e();let u=null;return"healthy"===s.stage&&s.percent>=100?(s.stage="damaged",s.percent=0,s.hits=0,u="damaged",cancelResetTimer(o)):"damaged"===s.stage&&s.percent>=100?(s.stage="mangled",s.percent=0,s.hits=0,u="mangled",cancelResetTimer(o)):scheduleResetTimer(o),emit("LimbHit",{limb:o,amount:i,source:a,transition:u,previousStage:l,value:deepClone$1(s)}),u&&emit("LimbStageChanged",{limb:o,stage:s.stage,previousStage:l,source:a,value:deepClone$1(s)}),!0},reset:(t,n="manual")=>{const a=normalizeLimbId(t);if(!c[a])return!1;const o=c[a],i=o.stage;return(0!==o.percent||0!==o.hits||"healthy"!==i)&&(o.percent=0,o.hits=0,o.stage="healthy",o.updatedAt=e(),cancelResetTimer(a),emit("LimbReset",{limb:a,source:n,previousStage:i,value:deepClone$1(o)}),"healthy"!==i&&emit("LimbStageChanged",{limb:a,stage:"healthy",previousStage:i,source:n,value:deepClone$1(o)}),!0)},setStage,applyAfflictionTransition,syncFromAfflictions,dispose(){me.forEach(cancelResetTimer)},get:e=>getEntrySnapshot(normalizeLimbId(e))}},buildLimbSnapshot=(e,t)=>{const n=e?.get?.(t);return n?{id:n.id,percent:n.percent,hits:n.hits,stage:n.stage}:null},didLimbChange=(e,t)=>Boolean(e&&t)&&(e.percent!==t.percent||e.hits!==t.hits||e.stage!==t.stage),syncTorsoTrauma=({affModel:e,serverside:t,stage:n,source:a,at:o})=>{switch(n){case"damaged":return e?.lose?.("serioustrauma",{source:a,at:o}),e?.got?.("mildtrauma",{source:a,at:o}),t?.removePrediction?.("serioustrauma"),t?.addPrediction?.("mildtrauma"),!0;case"mangled":return e?.lose?.("mildtrauma",{source:a,at:o}),e?.got?.("serioustrauma",{source:a,at:o}),t?.removePrediction?.("mildtrauma"),t?.addPrediction?.("serioustrauma"),!0;case"healthy":return e?.lose?.("mildtrauma",{source:a,at:o}),e?.lose?.("serioustrauma",{source:a,at:o}),t?.removePrediction?.("mildtrauma"),t?.removePrediction?.("serioustrauma"),!0;default:return!1}},buildObserveResult=(e,t,n,a=!1)=>({changed:didLimbChange(t,n)||a,traumaSynced:a,stageChanged:t?.stage!==n?.stage,limb:e,before:t,after:n}),applyObservedLimbHit=({limbModel:e,affModel:t,serverside:n,limb:a,amount:o,source:i="manual",at:s})=>{const l=normalizeLimbId(a),c=buildLimbSnapshot(e,l);if(!c)return{changed:!1,traumaSynced:!1,stageChanged:!1,limb:l,before:null,after:null};e.hit(l,o,i);const u=buildLimbSnapshot(e,l),d=didLimbChange(c,u),p=c.stage!==u?.stage,m=!("torso"!==l||!p)&&syncTorsoTrauma({affModel:t,serverside:n,stage:u?.stage,source:i,at:s});return{changed:d||m,traumaSynced:m,stageChanged:p,limb:l,before:c,after:u}},applyObservedLimbReset=({limbModel:e,affModel:t,serverside:n,limb:a,source:o="manual",at:i})=>{const s=normalizeLimbId(a),l=buildLimbSnapshot(e,s);return l?(e.reset(s,o),buildObserveResult(s,l,buildLimbSnapshot(e,s),"torso"===s&&syncTorsoTrauma({affModel:t,serverside:n,stage:"healthy",source:o,at:i}))):{changed:!1,traumaSynced:!1,stageChanged:!1,limb:s,before:null,after:null}},applyObservedLimbStage=({limbModel:e,affModel:t,serverside:n,limb:a,stage:o,source:i="manual",at:s})=>{const l=normalizeLimbId(a),c=buildLimbSnapshot(e,l);if(!c)return{changed:!1,traumaSynced:!1,stageChanged:!1,limb:l,before:null,after:null};e.setStage(l,o,i);const u=buildLimbSnapshot(e,l),d=c.stage!==u?.stage,p=!("torso"!==l||!d)&&syncTorsoTrauma({affModel:t,serverside:n,stage:u?.stage,source:i,at:s});return{changed:didLimbChange(c,u)||p,traumaSynced:p,stageChanged:d,limb:l,before:c,after:u}},ye=new Set(["char.items.add","char.items.remove","char.items.update"]),registerAdapterEvents=({register:e,options:t,queueTranslatedGmcp:n,publishPublic:a,publishPublicScoped:o,markDirty:i,flushCycle:s,outputCycle:l,startup:c,curingSetProvisioner:u,curingSetGuard:d,curingMasterSwitch:p,queueController:m,serverside:g,balanceModel:h,adapter:b,systemModel:y,affModel:v,cacheModel:S,limbModel:x,savePersistence:C})=>{e("GmcpEvent",e=>{n(e);const o=normalizeTag(e?.tag||e?.rawTag||e?.gmcp_method);!0===t.publishRawGmcp&&a(te.RAW_GMCP,{source:"adapter-gmcp",tag:o,payload:e?.payload??e?.gmcp_args??null}),ye.has(o)||i("gmcp-buffered")}),e("PromptEvent",()=>s("prompt")),e("ForcePopulateEvent",()=>s("force")),e("SystemOutputCompleteEvent",()=>{l.markComplete()&&s("output-complete")}),e(ne.CURINGSET_READY,()=>{u?.handleBarrier()}),e(ne.STARTUP_BEGIN,()=>{c.handleFenceBegin()}),e(ne.STARTUP_COMPLETE,()=>{c.handleFenceComplete("snapshot:complete:text")}),e("QueueFiredTextEvent",e=>{e?.queueName&&m.acknowledgeFired(e.queueName)}),e("QueueSentTextEvent",e=>{const t=e?.queueId||e?.queueName||e?.queueType;t&&m.acknowledgeSent(t,e)}),e("AllQueuesClearedTextEvent",()=>{m.listQueues().forEach(e=>{m.clear(e)})}),e("CommandSeparatorChangedTextEvent",({separator:e}={})=>{const t=normalizeCommandSeparator(e);t&&(b?.setSeparator(t),y?.setSettings({commandSeparator:t},{setBaseline:!0}),C?.())}),e("BalanceStateTextEvent",e=>{const t=String(e?.id||"").trim().toLowerCase();if(!t)return;const n=String(e?.reason||e?.source||"text"),a=Number(e?.durationSeconds);if(!0!==e?.have){if(!1===e?.have){if(Number.isFinite(a)&&a>0)return void h.observeServerUse(t,a,{source:n});h.lose(t,n)}}else h.gain(t,n)}),e("CacheRiftOutTextEvent",(e={})=>{const t=S?.observeRiftOutText?.({item:e.item,amount:e.amount,riftAmount:e.riftAmount,atCapacity:e.atCapacity,source:e.source||"text-trigger"});t?.name&&i(`text:cache-rift-out:${t.name}`)}),e("CacheRiftInTextEvent",(e={})=>{const t=S?.observeRiftInText?.({item:e.item,amount:e.amount,riftAmount:e.riftAmount,atCapacity:e.atCapacity,source:e.source||"text-trigger"});t?.name&&i(`text:cache-rift-in:${t.name}`)}),e("CacheRiftFullTextEvent",(e={})=>{const t=S?.invalidateRiftSnapshot?.({source:e.source||"text-trigger"});b?.sendGmcp?.(["IRE.Rift.Request"],{source:"cache-rift-full-text"}),t&&i("text:cache-rift-resync")}),e("CacheInventoryEmptyTextEvent",(e={})=>{const t=S?.observeInventoryEmptyText?.({item:e.item,source:e.source||"text-trigger"});t?.name&&(i(`text:cache-empty:${t.name}`),b?.sendGmcp?.(["Char.Items.Inv"],{source:"cache-inventory-empty-text",item:e.item||"",name:t.name}))}),e("CacheCurativeConsumedTextEvent",(e={})=>{const t=S?.observeCurativeConsumedText?.({item:e.item,amount:e.amount,source:e.source||"text-trigger"});t?.name&&i(`text:cache-consume:${t.name}`)}),e("CacheInventoryDeltaTextEvent",(e={})=>{const t=S?.observeInventoryDeltaText?.({item:e.item,amount:e.amount,delta:e.delta,source:e.source||"text-trigger"});t?.name&&i(`text:cache-${t.delta>0?"add":"remove"}:${t.name}`)}),e("LimbDamageTextEvent",e=>{const t=applyObservedLimbHit({limbModel:x,affModel:v,serverside:g,limb:e?.limb,amount:e?.amount,source:String(e?.source||"text-trigger"),at:e?.at});t.changed&&"torso"===t.limb&&t.stageChanged&&i(`text-limb-torso:${t.after?.stage||"unknown"}`)}),e("LimbResetTextEvent",e=>{const t=applyObservedLimbReset({limbModel:x,affModel:v,serverside:g,limb:e?.limb,source:String(e?.source||"text-trigger"),at:e?.at});t.changed&&"torso"===t.limb&&i("text-limb-torso:healthy")}),e("ServersideStatusTextEvent",(e={})=>{"enabled"!==String(e.key||"").trim().toLowerCase()?g.parseStatusLine(e):p?.observeConfirmation(Boolean(e.value))}),e("ServersideStatusSnapshotCompleteTextEvent",()=>{g.markStartupCaptured("status")}),e("ServersideAffPrioSnapshotOpenTextEvent",e=>{g.beginObservedAffPrioritySnapshot(e?.set||"")}),e("ServersideAffPrioSnapshotCompleteTextEvent",()=>{g.completeObservedAffPrioritySnapshot()}),e("ServersideDefPrioSnapshotOpenTextEvent",e=>{g.beginObservedDefPrioritySnapshot(e?.set||"")}),e("ServersideDefPrioSnapshotCompleteTextEvent",()=>{g.completeObservedDefPrioritySnapshot()}),e("ServersideAffPrioTextEvent",e=>{if(!e?.aff)return;const t=Number(e.prio),n=g.updateObservedAffPriority(e.aff,t);if("live-confirmation"===e.source){const a="function"==typeof v?.normalizePriorityName?v.normalizePriorityName(e.aff):String(e.aff||"").toLowerCase();o(te.SERVERSIDE_AFF_PRIORITY_SET,{id:a,priority:t,source:"live-confirmation",accepted:n},a)}}),e("ServersideDefPrioTextEvent",e=>{if(!e?.def)return;const t=String(e.def||"").toLowerCase(),n=Number(e.prio),a=g.updateObservedDefPriority(t,n);"live-confirmation"===e.source&&o(te.SERVERSIDE_DEF_PRIORITY_SET,{id:t,priority:n,source:"live-confirmation",accepted:a},t)}),e("ServersideQueueListTextEvent",e=>{g.updateObservedQueue(e?.queue||[])}),e("ServersidePredictionsTextEvent",e=>{g.updateObservedPredictions(e?.predictions||{})}),e("ServersideCuringSetsTextEvent",e=>{g.observeCuringSets({sets:e?.sets||[],activeSet:e?.activeSet||"",used:e?.used,limit:e?.limit})}),e("ServersideCuringSetSwitchedTextEvent",e=>{d?.handleSwitched({set:e?.set||""})}),e("SnappedGotTrackableEvent",()=>{g.setTrackable("snapTrack",!0,{source:"text",label:"Snapped"}),b.setTimeout(()=>{g.setTrackable("snapTrack",!1,{source:"timer",label:"Snapped"})},8e3)})},ve={short:{rl:"right leg",ll:"left leg",ra:"right arm",la:"left arm",h:"head",tt:"torso",c:"centre",l:"left",r:"right"},long:{"right leg":"rl","left leg":"ll","right arm":"ra","left arm":"la",head:"h",torso:"tt",centre:"c",left:"l",right:"r"}},Se=["e","w","s","n","ne","se","sw","nw","in","out","d","u"],xe={e:"east",w:"west",s:"south",n:"north",ne:"northeast",se:"southeast",sw:"southwest",nw:"northwest",in:"in",out:"out",down:"down",d:"down",u:"up",up:"up"},Ce={e:"west",w:"east",s:"north",n:"south",ne:"southwest",se:"northwest",sw:"northeast",nw:"southeast",in:"out",out:"in",down:"up",d:"up",u:"down",up:"down"},we={east:"e",west:"w",south:"s",north:"n",northeast:"ne",northwest:"nw",southeast:"se",southwest:"sw",in:"in",out:"out",down:"d",up:"up"},ke=["Alchemist","Apostate","Bard","Blademaster","Depthswalker","Dragon","Druid","Infernal","Jester","Magi","Monk","Shikudo","Occultist","Paladin","Pariah","Priest","Psion","Runewarden","Sentinel","Serpent","Shaman","Sylvan","Unnamable","Air Elemental Lord","Earth Elemental Lord","Fire Elemental Lord","Water Elemental Lord"],normalizeClassName=(e="")=>{const t=String(e||"").trim();return t?/\bdragon\b/i.test(t)?"Dragon":ke.find(e=>e.toLowerCase()===t.toLowerCase())||t:""},classesMatch=(e="",t="")=>normalizeClassName(e).toLowerCase()===normalizeClassName(t).toLowerCase(),classListIncludes=(e=[],t="")=>{const n=Array.isArray(e)?e:e?[e]:[];if(!n.length)return!0;const a=normalizeClassName(t).toLowerCase();return n.some(e=>normalizeClassName(e).toLowerCase()===a)},hasOwn$4=(e,t)=>Object.prototype.hasOwnProperty.call(e||{},t),normalizeCommandList=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],normalizeStringList=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],normalizePrioritySeed=e=>{const t=Number(e);return Number.isFinite(t)?t<0?0:t>26?26:t:0},normalizeDefenseConfig=(e={})=>{const t=!1!==e.serverside;return deepFreeze({...deepClone$1(e),command:normalizeCommandList(e.command),bals_req:normalizeStringList(e.bals_req),bals_used:normalizeStringList(e.bals_used),blocks:deepClone$1(e.blocks||[]),skills:normalizeStringList(e.skills),opps:normalizeStringList(e.opps),serverside:t,preempt:!0===e.preempt,static:!0===e.static,clientOnly:!0===e.clientOnly,defaultPriority:normalizePrioritySeed(e.defaultPriority)})},createDefEntry=(e,t,n,a)=>({id:e,have:!1,lastChangeAt:0,order:t,seedStatic:n.static,defaultPriority:a,priorityOverride:null,command:n.command,bals_req:n.bals_req,bals_used:n.bals_used,blocks:n.blocks,skills:n.skills,opps:n.opps,serverside:n.serverside,preempt:n.preempt,static:n.static,clientOnly:n.clientOnly}),resolveDefensePriority=(e={})=>null===e.priorityOverride||void 0===e.priorityOverride?Number(e.defaultPriority??-1):Number(e.priorityOverride),matchesClass=(e=[],t="")=>!e||!e.length||(Array.isArray(t)?t.some(t=>classListIncludes(e,t)):classListIncludes(e,t)),isActiveStaticPriority=e=>{const t=Number(e);return Number.isFinite(t)&&t>0},createInitialDefenseState=({defTable:e={},defPrios:t={}}={})=>{const n=Object.keys(e),a={},o={};return n.forEach((n,i)=>{const s=normalizeDefenseConfig(e[n]),l=hasOwn$4(t,n)?normalizePrioritySeed(t[n]):s.defaultPriority;o[n]=l,a[n]=createDefEntry(n,i,s,l)}),{list:n,state:a,defaultPrios:o}},normalizeObservedDefenseId=e=>("string"==typeof e?e:String(e?.name||e?.id||e||"")).toLowerCase().replace(/\s*\(([^)]+)\)/g," $1").trim(),normalizeItemLocation=e=>String(e||"").trim().toLowerCase()||"inv",registerGmcpBridges=({registerGmcpListener:e,systemModel:t,balanceModel:n,affModel:a,defModel:o,cacheModel:i,limbModel:s,serverside:l,adapter:c,markDirty:u})=>{const requestInventoryResync=e=>{c?.sendGmcp?.(["Char.Items.Inv"],{source:e})};e(X.CHAR_VITALS,({vitals:e}={})=>{t.updateVitals(e),n.applyVitals(e),u("gmcp:vitals")}),e(X.CHAR_STATUS,({status:e}={})=>{t.updateStatus(e||{}),u("gmcp:status")}),e(X.CHAR_AFFLICTIONS_LIST,({afflictions:e}={})=>{const t=Array.isArray(e)?e:[];a.applyList(t),"function"==typeof s?.syncFromAfflictions&&"function"==typeof a?.currentSorted&&s.syncFromAfflictions(a.currentSorted(),"gmcp-list"),u("gmcp:aff-list")}),e(X.CHAR_AFFLICTIONS_ADD,({name:e}={})=>{e&&(a.got(e,{source:"gmcp-add"}),"function"==typeof s?.syncFromAfflictions&&"function"==typeof a?.currentSorted?s.syncFromAfflictions(a.currentSorted(),"gmcp-add"):s.applyAfflictionTransition(e,!0),u(`gmcp:aff-add:${e}`))}),e(X.CHAR_AFFLICTIONS_REMOVE,({name:e}={})=>{e&&(a.lose(e,{source:"gmcp-remove"}),"function"==typeof s?.syncFromAfflictions&&"function"==typeof a?.currentSorted?s.syncFromAfflictions(a.currentSorted(),"gmcp-remove"):s.applyAfflictionTransition(e,!1),l.getTransientPrioAff()===e&&l.clearPrioAff(),u(`gmcp:aff-remove:${e}`))}),e(X.CHAR_DEFENCES_LIST,({defences:e}={})=>{o.applyList(Array.isArray(e)?e:[],"gmcp-list"),u("gmcp:def-list")}),e(X.CHAR_DEFENCES_ADD,({name:e}={})=>{if(!e)return;const t=normalizeObservedDefenseId(e);if(t){if(t.startsWith("parrying "))for(const e of o.list())e!==t&&e.startsWith("parrying ")&&o.get(e)?.have&&o.setHave(e,!1,"gmcp-parry-implied-remove");o.setHave(t,!0,"gmcp-add"),"mindseye"===t&&requestInventoryResync("cache-visibility-resync:mindseye"),u(`gmcp:def-add:${t}`)}}),e(X.CHAR_DEFENCES_REMOVE,({name:e}={})=>{if(!e)return;const t=normalizeObservedDefenseId(e);t&&(o.setHave(t,!1,"gmcp-remove"),"blindness"===t&&requestInventoryResync("cache-visibility-resync:blindness"),u(`gmcp:def-remove:${t}`))}),e(X.IRE_RIFT_LIST,({rift:e}={})=>{i.observeRiftSnapshot?.(e||{}),u("gmcp:rift-list")}),e(X.IRE_RIFT_CHANGE,({change:e}={})=>{const t=i.observeRiftChange?.(e||{});t?.name&&u(`gmcp:rift-change:${t.name}`)}),e(X.CHAR_ITEMS_LIST,({items:e,location:n}={})=>{const a=normalizeItemLocation(n),o=Array.isArray(e)?e:[];if("inv"===a){i.observeInventorySnapshot?.(o);const toWieldedItem=e=>e?{id:e.id??null,name:String(e.name||""),icon:e.icon||null}:null;t.updateWielded("left",toWieldedItem(o.find(e=>"l"===e.attrib))),t.updateWielded("right",toWieldedItem(o.find(e=>"L"===e.attrib)))}u("gmcp:items-list")}),e(X.CHAR_ITEMS_DELTA,({inventoryDelta:e}={})=>{if(e){const n=normalizeItemLocation(e.location),a="inv"===n||"room"===n?i.observeItemDelta?.(e):null;if(a?.changed&&a.name&&u(`gmcp:room-pickup:${a.name}`),"inv"===n&&"update"===e.action){const{id:n,name:a,icon:o,attrib:i}=e,s=t.getChar().wielded;s.left?.id===n&&"l"!==i&&t.updateWielded("left",null),s.right?.id===n&&"L"!==i&&t.updateWielded("right",null),"l"===i?t.updateWielded("left",{id:n,name:a,icon:o}):"L"===i&&t.updateWielded("right",{id:n,name:a,icon:o})}}}),e(X.ROOM_INFO,({room:e,roomItems:n}={})=>{t.updateRoom(e||{}),t.setRoomItems(n||{}),u("gmcp:room-info")}),e(X.TARGET_INFO,({target:e}={})=>{t.updateTarget(e||{}),u("gmcp:target")})},normalizeBridgeSegment=e=>String(e||"").trim().toLowerCase().replace(/\s+/g,"_").replace(/[^a-z0-9._-]/g,""),isSystemOutputBalance=(e={})=>"systemoutput"===normalizeBridgeSegment(e?.id),Ee=Object.freeze(["balance","equilibrium"]),getCounterpartEqbalBalance=e=>{const t=normalizeBridgeSegment(e);return Ee.includes(t)?"balance"===t?"equilibrium":"balance":null},buildEqbalRecoveredPayload=(e,t={})=>{const n=normalizeBridgeSegment(t?.id),a=getCounterpartEqbalBalance(n);return a&&e?.have?.(n)&&e.have(a)?{...t,id:"eqbal",have:!0,recoveredId:n,balances:{balance:Boolean(e.have("balance")),equilibrium:Boolean(e.have("equilibrium"))}}:null},getRecoveredBalanceSeconds=(e={})=>{const t=Number(e?.durationMs);if(Number.isFinite(t)&&t>0)return t/1e3;const n=Number(e?.lastLostAtMs),a=Number(e?.lastGotAtMs);return Number.isFinite(n)&&Number.isFinite(a)&&a>n?(a-n)/1e3:Number(e?.durationSeconds??e?.baseDurationSeconds)},formatBalanceNotice=(e={})=>{const t=String(e?.id||"").trim(),n=getRecoveredBalanceSeconds(e);return t?!Number.isFinite(n)||n<=0?t:`${t}(${n.toFixed(2)})`:""},shouldEchoPriorityChange=(e={})=>["manual","public-api"].includes(String(e?.source||"").toLowerCase()),formatPriorityNotice=(e={},t)=>{const n=String(t||"").trim(),a=Number(e?.priority??e?.value),o=normalizeBridgeSegment(e?.domain),i=o&&"keepup"!==o?` (${o})`:!0===e?.static?" (static)":"";return n?Number.isFinite(a)?`${n} ${a}${i}`:`${n}${i}`:""},_e=Object.freeze({RuleAdded:te.RULE_ADDED,RuleRemoved:te.RULE_REMOVED,RuleEnabled:te.RULE_ENABLED,RuleDisabled:te.RULE_DISABLED,RulePackLoaded:te.RULE_PACK_LOADED,RulePackUnloaded:te.RULE_PACK_UNLOADED,RuleOrderChanged:te.RULE_ORDER_CHANGED}),Pe=Object.freeze({hp:{topic:te.SYSTEM_HEALTH_CHANGED,maxKey:"maxhp"},mp:{topic:te.SYSTEM_MANA_CHANGED,maxKey:"maxmp"},rage:{topic:te.SYSTEM_RAGE_CHANGED},bleed:{topic:te.SYSTEM_BLEED_CHANGED}}),buildVitalResourcePayload=(e={},t,{maxKey:n}={})=>{const a=e.changedFields?.[t];if(!a)return null;const o=a.current,i=a.previous;return{max:n?e.current?.[n]:o,current:o,previous:i,diff:o-i}},publishVitalResourceTopics=(e,t={})=>{Object.entries(Pe).forEach(([n,a])=>{const o=buildVitalResourcePayload(t,n,a);o&&e(a.topic,o)})},registerSystemModelBridge=({registerModelListener:e,publishPublic:t,syncDebugMode:n,systemModel:a,serverside:o,handleVitalsSideEffects:i})=>{e(a.onChange((e,a={})=>{switch(e){case"VitalsUpdated":t(te.SYSTEM_VITALS_CHANGED,a),publishVitalResourceTopics(t,a),i();break;case"StatusUpdated":t(te.SYSTEM_STATUS_CHANGED,a);break;case"ClassChanged":o.setBaselineFromRuntime(),t(te.SYSTEM_CLASS_CHANGED,a);break;case"TargetUpdated":t(te.SYSTEM_TARGET_CHANGED,a);break;case"RoomUpdated":t(te.SYSTEM_ROOM_CHANGED,a);break;case"RoomItemsUpdated":t(te.SYSTEM_ROOM_ITEMS_CHANGED,a);break;case"RuntimeStateChanged":t(te.SYSTEM_RUNTIME_CHANGED,a);break;case"PauseStateChanged":t(te.SYSTEM_PAUSE_CHANGED,a),t(a.paused?te.SYSTEM_PAUSED:te.SYSTEM_UNPAUSED,a);break;case"SettingsChanged":a.changedKeys?.includes("debug")&&n(),t(te.SYSTEM_SETTINGS_CHANGED,a);break;case"BaselineIntentChanged":t(te.SYSTEM_BASELINE_CHANGED,a);break;case"WieldedUpdated":t(te.SYSTEM_WIELDED_CHANGED,a);break;case"MountUpdated":t(te.SYSTEM_MOUNT_CHANGED,a);break;case"DeathDetected":t(te.SYSTEM_DEATH_DETECTED,a)}}))},registerAfflictionModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,systemModel:o,affModel:i,serverside:s})=>{e(i.onChange((e,l={})=>{switch("AffGot"!==e&&"AffLost"!==e||"aeon"!==l?.name||o.setRuntime({aeonLocked:i.haveAff("aeon")}),e){case"AffGot":n(te.AFF_GOT,l,l.name),a.publish("affGot",l.name,{...l,action:"got"});break;case"AffLost":n(te.AFF_LOST,l,l.name),a.publish("affLost",l.name,{...l,action:"lost"}),s.getTransientPrioAff()===l.name&&s.clearPrioAff();break;case"AffStackChanged":n(te.AFF_STACK_CHANGED,l,l.name);break;case"AffPriorityChanged":t(te.AFF_PRIORITY_CHANGED,l),shouldEchoPriorityChange(l)&&a.publish("priority",formatPriorityNotice(l,l.name),{...l,action:"set",subject:"aff"})}}))},registerDefenseModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,defModel:o})=>{e(o.onChange((e,o={})=>{switch(e){case"DefGot":n(te.DEF_GOT,o,o.id),a.publish("defGot",o.id,{...o,action:"got"});break;case"DefLost":n(te.DEF_LOST,o,o.id),a.publish("defLost",o.id,{...o,action:"lost"});break;case"DefPriorityChanged":t(te.DEF_PRIORITY_CHANGED,o),shouldEchoPriorityChange(o)&&a.publish("priority",formatPriorityNotice(o,o.id),{...o,action:"set",subject:"def"})}}))},registerBalanceModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,balanceModel:o})=>{e(o.onChange((e,i={})=>{switch(e){case"BalanceGot":n(te.BALANCE_GOT,i,i.id);{const e=buildEqbalRecoveredPayload(o,i);e&&t(te.EQBAL_GOT,e)}isSystemOutputBalance(i)||a.publish("balanceRecovered",formatBalanceNotice(i),{...i,action:"got"});break;case"BalanceLost":n(te.BALANCE_LOST,i,i.id),a.publish("balanceLost",i.id,{...i,action:"lost"});break;case"BalanceReset":n(te.BALANCE_RESET,i,i.id);break;case"BalanceDurationObserved":n(te.BALANCE_DURATION_OBSERVED,i,i.id);break;case"BalanceLossTimerRestarted":t(te.BALANCE_TIMER_RESTARTED,i)}}))},registerLimbModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,limbModel:a})=>{e(a.onChange((e,a={})=>{switch(e){case"LimbHit":n(te.LIMB_HIT,a,a.limb);break;case"LimbReset":n(te.LIMB_RESET,a,a.limb);break;case"LimbStageChanged":n(te.LIMB_STAGE_CHANGED,a,a.limb);break;case"LimbDecay":t(te.LIMB_DECAY,a)}}))},registerCacheModelBridge=({registerModelListener:e,publishPublic:t,cacheModel:n})=>{e(n.onChange((e,n={})=>{switch(e){case"CacheAmountChanged":t(te.CACHE_AMOUNT_CHANGED,n);break;case"CacheInventoryListApplied":t(te.CACHE_INVENTORY_LIST,n);break;case"CacheRiftListApplied":t(te.CACHE_RIFT_LIST,n);break;case"CacheDesiredPrecacheChanged":t(te.CACHE_PRECACHE_CHANGED,n)}}))},registerQueueModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,queueController:o})=>{e(o.onChange((e,i={})=>{switch(e){case"QueueFlushed":t(te.QUEUE_FLUSHED,i),a.publish("output",`Queue sent: ${i.queueId}`,i);break;case"QueueDeferred":t(te.QUEUE_DEFERRED,i);break;case"QueueUpdated":t(te.QUEUE_UPDATED,i);break;case"QueueCleared":t(te.QUEUE_CLEARED,i);break;case"QueueSentAcknowledged":{const e=o.getQueue(i.queueId)?.name||i.queueName||i.queueId;n(te.QUEUE_SENT,{...i,queueName:e},e);break}case"QueueFiredAcknowledged":{const e=o.getQueue(i.queueId)?.name||i.queueId;t(te.QUEUE_FIRED_ACK,i),n(te.QUEUE_FIRED,{...i,queueName:e},e);break}}}))},registerServersideModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,serverside:o,runtimeControl:i,systemModel:s,onServersideDirty:l})=>{let c=new Set;const syncRuleSuspendPause=(e=[])=>{c=new Set((e||[]).filter(Boolean).map(e=>String(e)));const t=c.size>0;s?.getRuntime?.().rulesSuspended!==t&&(s?.setRuntime?.({rulesSuspended:t}),i?.syncCuringState?.({source:"rule-suspend"}))},addRuleSuspend=e=>{e&&!c.has(String(e))&&syncRuleSuspendPause([...c,String(e)])},removeRuleSuspend=e=>{if(!e||!c.has(String(e)))return;const t=new Set(c);t.delete(String(e)),syncRuleSuspendPause([...t])};e(o.onChange((e,o={})=>{const i=_e[e];if(i)t(i,o);else switch(e){case"TrackableGot":a.publish("trackableGot",o.label||o.name,{...o,action:"got"});break;case"TrackableLost":a.publish("trackableLost",o.label||o.name,{...o,action:"lost"});break;case"ServersideDirty":l?.(o),t(te.SERVERSIDE_DIRTY,o);break;case"ServersideEvaluated":syncRuleSuspendPause(o.suspendingRules||[],o.source),t(te.SERVERSIDE_EVALUATED,o);break;case"RuleSuspendActivated":addRuleSuspend(o.id);break;case"RuleSuspendDeactivated":removeRuleSuspend(o.id);break;case"RuleActivated":o.suspendsCuring&&addRuleSuspend(o.id),n(te.RULE_ACTIVATED,o,o.id);break;case"RuleDeactivated":o.suspendsCuring&&removeRuleSuspend(o.id),n(te.RULE_DEACTIVATED,o,o.id)}}))},registerModelEventBridges=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,syncDebugMode:o,systemModel:i,affModel:s,defModel:l,balanceModel:c,cacheModel:u,limbModel:d,queueController:p,serverside:m,runtimeControl:g,handleVitalsSideEffects:h,onServersideDirty:b})=>{registerSystemModelBridge({registerModelListener:e,publishPublic:t,syncDebugMode:o,systemModel:i,serverside:m,handleVitalsSideEffects:h}),registerAfflictionModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,systemModel:i,affModel:s,serverside:m}),registerDefenseModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,defModel:l}),registerBalanceModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,balanceModel:c}),registerLimbModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,limbModel:d}),registerCacheModelBridge({registerModelListener:e,publishPublic:t,cacheModel:u}),registerQueueModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,queueController:p}),registerServersideModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,serverside:m,runtimeControl:g,systemModel:i,onServersideDirty:b})},Te="Flying above ",Ae=new Set(["dragon","air elemental lord","earth elemental lord","fire elemental lord","water elemental lord"]),registerCrossModelBridges=({registerModelListener:e,systemModel:t,defModel:n})=>{e(t.onChange((e,t={})=>{if("RoomUpdated"===e){const e=String(t?.current?.name||"").startsWith(Te);return void n.setHave("flying",e,"room-info")}"ClassChanged"===e&&Ae.has(String(t?.class||"").toLowerCase())&&n.setHave("mounted",!1,"class-change")}))},createRuntimeEventWiring=({adapter:e,internalEvents:t})=>{let n=[];const addUnsubscriber=e=>{"function"==typeof e&&n.push(e)},dispose=()=>{n.forEach(e=>{try{e()}catch(t){console.error("nexSys4 unsubscribe failure",t)}}),n=[]};return{attach:({options:n,queueTranslatedGmcp:a,publishPublic:o,publishPublicScoped:i,noticeCenter:s,syncDebugMode:l,systemModel:c,affModel:u,defModel:d,balanceModel:p,cacheModel:m,limbModel:g,queueController:h,serverside:b,markDirty:y,invalidateOutput:v,flushCycle:S,outputCycle:x,startup:C,curingSetProvisioner:w,curingSetGuard:k,curingMasterSwitch:E,runtimeControl:P,savePersistence:T})=>{dispose();const register=(t,n)=>{addUnsubscriber(e.on(t,n))},registerModelListener=e=>{addUnsubscriber(e)},registerGmcpListener=(e,n)=>{registerModelListener(t.on(e,n))};registerAdapterEvents({register,options:n,queueTranslatedGmcp:a,publishPublic:o,publishPublicScoped:i,markDirty:y,flushCycle:S,outputCycle:x,startup:C,curingSetProvisioner:w,curingSetGuard:k,curingMasterSwitch:E,runtimeControl:P,queueController:h,serverside:b,balanceModel:p,adapter:e,systemModel:c,affModel:u,cacheModel:m,limbModel:g,savePersistence:T}),register("OutboundCommandsEvent",(e={})=>{if("output-cycle"!==e?.context?.source)return;const t=Array.isArray(e.commands)?e.commands.filter(Boolean).map(e=>String(e)):[];if(!t.length)return;const n=c.getSettings().commandSeparator||"|";s.publish("output",`(${t.join(n)})`,{action:"commands",commands:t,source:e?.context?.cycleSource||e?.context?.source||"output-cycle"})}),registerGmcpBridges({registerGmcpListener,systemModel:c,balanceModel:p,affModel:u,defModel:d,cacheModel:m,limbModel:g,serverside:b,adapter:e,markDirty:y}),registerModelEventBridges({registerModelListener,publishPublic:o,publishPublicScoped:i,noticeCenter:s,syncDebugMode:l,systemModel:c,affModel:u,defModel:d,balanceModel:p,cacheModel:m,limbModel:g,queueController:h,serverside:b,runtimeControl:P,handleVitalsSideEffects:P.handleVitalsSideEffects,onServersideDirty:v}),registerCrossModelBridges({registerModelListener,systemModel:c,defModel:d})},dispose}},createRuntimeControlApi=({systemModel:e,serverside:t,queueController:n,noticeCenter:a,markDirty:o,onResume:i,dispatchCommands:s,curingMasterSwitch:l})=>{let c=!1;const buildSystemEventCommand=e=>e?`echo SystemEvent ${e}`:null,syncServersideCuring=(e,t={})=>{if("function"!=typeof s)return[];const n=e?"curing off":"curing on";if(e&&!1===l?.getObservedEnabled())return[];if(!e&&!0===l?.getObservedEnabled())return[];l?.markExpected(n);const a=buildSystemEventCommand(t.completionEvent);return s(a?[n,a]:[n],{source:t.source||(e?"runtime-pause":"runtime-unpause")})},syncCuringState=(t={})=>{const n=e.getRuntime();return syncServersideCuring(n.paused||n.rulesSuspended,t)},setPaused=(t,a={})=>{const s=Boolean(t),l=e.getRuntime();return l.paused===s?(a.forceCuringSync&&syncCuringState(a),!1):!(!s&&!isRuntimeReadyPhase(l.phase))&&(e.setRuntime({paused:s}),o(s?"paused":"unpaused"),syncCuringState(a),s||(n.flushDeferred(),i?.(a.source||"unpause")),!0)},ensureSlowModeRule=()=>{t.lifecycle.add({id:"runtime-slow-mode",pack:"runtime",evaluate:()=>e.getRuntime().slowMode?{settings:{sipHealthAt:30,sipManaAt:20,mossHealthAt:20,mossManaAt:20,batch:!1}}:null})};return{setPaused,syncCuringState,setSlowMode(t){const n=Boolean(t);return e.getRuntime().slowMode!==n&&(e.setRuntime({slowMode:n}),ensureSlowModeRule(),o(n?"slow-on":"slow-off"),!0)},handleVitalsSideEffects(){const t=e.getChar().dead;t&&!c&&(setPaused(!0,{source:"death-detected"}),a.publish("output","Death detected. Pausing nexSys runtime.",{source:"death-detected"})),!t&&c&&(setPaused(!1,{source:"death-recover"}),a.publish("output","Resurrection detected. Resuming nexSys runtime.",{source:"death-recover"})),c=t}}},Re="curing on",Me="curing off",createCuringMasterSwitch=({setPaused:e,noticeCenter:t})=>{let n=null,a=null;return{getObservedEnabled:()=>n,markExpected(e){const t=String(e||"").trim().toLowerCase();return(t===Re||t===Me)&&(a=t,!0)},observeConfirmation(o){const i=Boolean(o);return n=i,a===(i?Re:Me)?(a=null,{attributed:!0,enabled:i}):(a=null,i?e(!1,{source:"user-curing-on"}):(e(!0,{source:"user-curing-off"}),t.publish("output","Manual `curing off` detected. nexSys is paused and will not re-enable curing; send `curing on` to resume.",{source:"user-curing-off"})),{attributed:!1,enabled:i})}}},createCuringSetGuard=({serverside:e,systemModel:t,noticeCenter:n})=>{let a=!1,o=!1;const isRunningSession=()=>isRuntimeReadyPhase(t.getRuntime().phase),markNexsysSwitch=()=>{o=!0},handleSwitched=({set:t}={})=>{const i=normalizeSetName(t);if(!i)return;const s=o;o=!1,e.observeActiveCuringSet?.(i),isRunningSession()&&("nexsys4-default"!==i?s||a||(a=!0,n.publish("output",`nexSys paused — curing set is now ${i}; nexSys operates only in ${ie} and will resume when you switch back.`,{source:"curingset-foreign",force:!0})):a&&(a=!1,n.publish("output",`nexSys resumed — curing set is back to ${ie}.`,{source:"curingset-foreign-resume",force:!0})))},unload=({remove:t=!0}={})=>{const n=e.getCuringSets?.()??{},o=(n.sets||[]).map(e=>normalizeSetName(e)).filter(Boolean),i=normalizeSetName(n.priorSet),s=i&&"nexsys4-default"!==i&&o.includes(i)?i:o.find(e=>e&&"nexsys4-default"!==e)||"",l=[];s&&(markNexsysSwitch(),e.switchCuringSet(s),l.push(`curingset switch ${s}`));const c=t||!s;return c&&(e.deleteCuringSet(ie),l.push(`curingset delete ${ie}`)),a=!1,{restoreTarget:s,removed:c,commands:l}};return{handleSwitched,markNexsysSwitch,unload,isForeignPaused:()=>a}};function $constructor(e,t,n){function init(n,a){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:a,constr:_,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,a);const o=_.prototype,i=Object.keys(o);for(let e=0;e<i.length;e++){const t=i[e];t in n||(n[t]=o[t].bind(n))}}const a=n?.Parent??Object;class Definition extends a{}function _(e){var t;const a=n?.Parent?new Definition:this;init(a,e),(t=a._zod).deferred??(t.deferred=[]);for(const n of a._zod.deferred)n();return a}return Object.defineProperty(Definition,"name",{value:e}),Object.defineProperty(_,"init",{value:init}),Object.defineProperty(_,Symbol.hasInstance,{value:t=>!!(n?.Parent&&t instanceof n.Parent)||t?._zod?.traits?.has(e)}),Object.defineProperty(_,"name",{value:e}),_}var De=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},Oe=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}};(d=globalThis).__zod_globalConfig??(d.__zod_globalConfig={});var $e=globalThis.__zod_globalConfig;function config(e){return e&&Object.assign($e,e),$e}function getEnumValues(e){const t=Object.values(e).filter(e=>"number"==typeof e);return Object.entries(e).filter(([e,n])=>-1===t.indexOf(+e)).map(([e,t])=>t)}function jsonStringifyReplacer(e,t){return"bigint"==typeof t?t.toString():t}function cached(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function nullish(e){return null==e}function cleanRegex(e){const t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}function floatSafeRemainder(e,t){const n=e/t,a=Math.round(n),o=Number.EPSILON*Math.max(Math.abs(n),1);return Math.abs(n-a)<o?0:n-a}var Ie=Symbol("evaluating");function defineLazy(e,t,n){let a;Object.defineProperty(e,t,{get(){if(a!==Ie)return void 0===a&&(a=Ie,a=n()),a},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function assignProp(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function mergeDefs(...e){const t={};for(const n of e)Object.assign(t,Object.getOwnPropertyDescriptors(n));return Object.defineProperties({},t)}function esc(e){return JSON.stringify(e)}function slugify(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Ne="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function isObject(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}var ze=cached(()=>{if($e.jitless)return!1;if("undefined"!=typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(e){return!1}});function isPlainObject$2(e){if(!1===isObject(e))return!1;const t=e.constructor;if(void 0===t)return!0;if("function"!=typeof t)return!0;const n=t.prototype;return!1!==isObject(n)&&!1!==Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")}function shallowClone(e){return isPlainObject$2(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var Le=new Set(["string","number","symbol"]);function escapeRegex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function clone$1(e,t,n){const a=new e._zod.constr(t??e._zod.def);return t&&!n?.parent||(a._zod.parent=e),a}function normalizeParams(e){const t=e;if(!t)return{};if("string"==typeof t)return{error:()=>t};if(void 0!==t?.message){if(void 0!==t?.error)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,"string"==typeof t.error?{...t,error:()=>t.error}:t}function optionalKeys(e){return Object.keys(e).filter(t=>"optional"===e[t]._zod.optin&&"optional"===e[t]._zod.optout)}var je={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function pick(e,t){const n=e._zod.def,a=n.checks;if(a&&a.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");return clone$1(e,mergeDefs(e._zod.def,{get shape(){const e={};for(const a in t){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&(e[a]=n.shape[a])}return assignProp(this,"shape",e),e},checks:[]}))}function omit(e,t){const n=e._zod.def,a=n.checks;if(a&&a.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");return clone$1(e,mergeDefs(e._zod.def,{get shape(){const a={...e._zod.def.shape};for(const e in t){if(!(e in n.shape))throw new Error(`Unrecognized key: "${e}"`);t[e]&&delete a[e]}return assignProp(this,"shape",a),a},checks:[]}))}function extend(e,t){if(!isPlainObject$2(t))throw new Error("Invalid input to extend: expected a plain object");const n=e._zod.def.checks;if(n&&n.length>0){const n=e._zod.def.shape;for(const e in t)if(void 0!==Object.getOwnPropertyDescriptor(n,e))throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return clone$1(e,mergeDefs(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t};return assignProp(this,"shape",n),n}}))}function safeExtend(e,t){if(!isPlainObject$2(t))throw new Error("Invalid input to safeExtend: expected a plain object");return clone$1(e,mergeDefs(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t};return assignProp(this,"shape",n),n}}))}function merge(e,t){if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");return clone$1(e,mergeDefs(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t._zod.def.shape};return assignProp(this,"shape",n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function partial(e,t,n){const a=t._zod.def.checks;if(a&&a.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");return clone$1(t,mergeDefs(t._zod.def,{get shape(){const a=t._zod.def.shape,o={...a};if(n)for(const t in n){if(!(t in a))throw new Error(`Unrecognized key: "${t}"`);n[t]&&(o[t]=e?new e({type:"optional",innerType:a[t]}):a[t])}else for(const t in a)o[t]=e?new e({type:"optional",innerType:a[t]}):a[t];return assignProp(this,"shape",o),o},checks:[]}))}function required(e,t,n){return clone$1(t,mergeDefs(t._zod.def,{get shape(){const a=t._zod.def.shape,o={...a};if(n)for(const t in n){if(!(t in o))throw new Error(`Unrecognized key: "${t}"`);n[t]&&(o[t]=new e({type:"nonoptional",innerType:a[t]}))}else for(const t in a)o[t]=new e({type:"nonoptional",innerType:a[t]});return assignProp(this,"shape",o),o}}))}function aborted(e,t=0){if(!0===e.aborted)return!0;for(let n=t;n<e.issues.length;n++)if(!0!==e.issues[n]?.continue)return!0;return!1}function explicitlyAborted(e,t=0){if(!0===e.aborted)return!0;for(let n=t;n<e.issues.length;n++)if(!1===e.issues[n]?.continue)return!0;return!1}function prefixIssues(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function unwrapMessage(e){return"string"==typeof e?e:e?.message}function finalizeIssue(e,t,n){const a=e.message?e.message:unwrapMessage(e.inst?._zod.def?.error?.(e))??unwrapMessage(t?.error?.(e))??unwrapMessage(n.customError?.(e))??unwrapMessage(n.localeError?.(e))??"Invalid input",{inst:o,continue:i,input:s,...l}=e;return l.path??(l.path=[]),l.message=a,t?.reportInput&&(l.input=s),l}function getLengthableOrigin(e){return Array.isArray(e)?"array":"string"==typeof e?"string":"unknown"}function issue(...e){const[t,n,a]=e;return"string"==typeof t?{message:t,code:"custom",input:n,inst:a}:{...t}}var initializer$1=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,jsonStringifyReplacer,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Be=$constructor("$ZodError",initializer$1),Fe=$constructor("$ZodError",initializer$1,{Parent:Error});function flattenError(e,t=e=>e.message){const n={},a=[];for(const o of e.issues)o.path.length>0?(n[o.path[0]]=n[o.path[0]]||[],n[o.path[0]].push(t(o))):a.push(t(o));return{formErrors:a,fieldErrors:n}}function formatError(e,t=e=>e.message){const n={_errors:[]},processError=(e,a=[])=>{for(const o of e.issues)if("invalid_union"===o.code&&o.errors.length)o.errors.map(e=>processError({issues:e},[...a,...o.path]));else if("invalid_key"===o.code)processError({issues:o.issues},[...a,...o.path]);else if("invalid_element"===o.code)processError({issues:o.issues},[...a,...o.path]);else{const e=[...a,...o.path];if(0===e.length)n._errors.push(t(o));else{let a=n,i=0;for(;i<e.length;){const n=e[i];i!==e.length-1?a[n]=a[n]||{_errors:[]}:(a[n]=a[n]||{_errors:[]},a[n]._errors.push(t(o))),a=a[n],i++}}}};return processError(e),n}var _parse=e=>(t,n,a,o)=>{const i=a?{...a,async:!1}:{async:!1},s=t._zod.run({value:n,issues:[]},i);if(s instanceof Promise)throw new De;if(s.issues.length){const t=new(o?.Err??e)(s.issues.map(e=>finalizeIssue(e,i,config())));throw Ne(t,o?.callee),t}return s.value},_parseAsync=e=>async(t,n,a,o)=>{const i=a?{...a,async:!0}:{async:!0};let s=t._zod.run({value:n,issues:[]},i);if(s instanceof Promise&&(s=await s),s.issues.length){const t=new(o?.Err??e)(s.issues.map(e=>finalizeIssue(e,i,config())));throw Ne(t,o?.callee),t}return s.value},_safeParse=e=>(t,n,a)=>{const o=a?{...a,async:!1}:{async:!1},i=t._zod.run({value:n,issues:[]},o);if(i instanceof Promise)throw new De;return i.issues.length?{success:!1,error:new(e??Be)(i.issues.map(e=>finalizeIssue(e,o,config())))}:{success:!0,data:i.value}},qe=_safeParse(Fe),_safeParseAsync=e=>async(t,n,a)=>{const o=a?{...a,async:!0}:{async:!0};let i=t._zod.run({value:n,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?{success:!1,error:new e(i.issues.map(e=>finalizeIssue(e,o,config())))}:{success:!0,data:i.value}},Ue=_safeParseAsync(Fe),_encode=e=>(t,n,a)=>{const o=a?{...a,direction:"backward"}:{direction:"backward"};return _parse(e)(t,n,o)},_decode=e=>(t,n,a)=>_parse(e)(t,n,a),_encodeAsync=e=>async(t,n,a)=>{const o=a?{...a,direction:"backward"}:{direction:"backward"};return _parseAsync(e)(t,n,o)},_decodeAsync=e=>async(t,n,a)=>_parseAsync(e)(t,n,a),_safeEncode=e=>(t,n,a)=>{const o=a?{...a,direction:"backward"}:{direction:"backward"};return _safeParse(e)(t,n,o)},_safeDecode=e=>(t,n,a)=>_safeParse(e)(t,n,a),_safeEncodeAsync=e=>async(t,n,a)=>{const o=a?{...a,direction:"backward"}:{direction:"backward"};return _safeParseAsync(e)(t,n,o)},_safeDecodeAsync=e=>async(t,n,a)=>_safeParseAsync(e)(t,n,a),Ve=/^[cC][0-9a-z]{6,}$/,He=/^[0-9a-z]+$/,We=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Ge=/^[0-9a-vA-V]{20}$/,Ye=/^[A-Za-z0-9]{27}$/,Ke=/^[a-zA-Z0-9_-]{21}$/,Qe=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Ze=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,uuid=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Xe=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Je="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function emoji(){return new RegExp(Je,"u")}var et=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,tt=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,rt=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,nt=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,at=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,ot=/^[A-Za-z0-9_-]*$/,it=/^https?$/,st=/^\+[1-9]\d{6,14}$/,lt="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",ct=new RegExp(`^${lt}$`);function timeSource(e){const t="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"==typeof e.precision?-1===e.precision?`${t}`:0===e.precision?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function time$1(e){return new RegExp(`^${timeSource(e)}$`)}function datetime$1(e){const t=timeSource({precision:e.precision}),n=["Z"];e.local&&n.push(""),e.offset&&n.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const a=`${t}(?:${n.join("|")})`;return new RegExp(`^${lt}T(?:${a})$`)}var string$1=e=>new RegExp(`^${e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*"}$`),ut=/^-?\d+$/,dt=/^-?\d+(?:\.\d+)?$/,pt=/^[^A-Z]*$/,mt=/^[^a-z]*$/,ft=$constructor("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),gt={number:"number",bigint:"bigint",object:"date"},ht=$constructor("$ZodCheckLessThan",(e,t)=>{ft.init(e,t);const n=gt[typeof t.value];e._zod.onattach.push(e=>{const n=e._zod.bag,a=(t.inclusive?n.maximum:n.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<a&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=a=>{(t.inclusive?a.value<=t.value:a.value<t.value)||a.issues.push({origin:n,code:"too_big",maximum:"object"==typeof t.value?t.value.getTime():t.value,input:a.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),bt=$constructor("$ZodCheckGreaterThan",(e,t)=>{ft.init(e,t);const n=gt[typeof t.value];e._zod.onattach.push(e=>{const n=e._zod.bag,a=(t.inclusive?n.minimum:n.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>a&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=a=>{(t.inclusive?a.value>=t.value:a.value>t.value)||a.issues.push({origin:n,code:"too_small",minimum:"object"==typeof t.value?t.value.getTime():t.value,input:a.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),yt=$constructor("$ZodCheckMultipleOf",(e,t)=>{ft.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");("bigint"==typeof n.value?n.value%t.value!==BigInt(0):0!==floatSafeRemainder(n.value,t.value))&&n.issues.push({origin:typeof n.value,code:"not_multiple_of",divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),vt=$constructor("$ZodCheckNumberFormat",(e,t)=>{ft.init(e,t),t.format=t.format||"float64";const n=t.format?.includes("int"),a=n?"int":"number",[o,i]=je[t.format];e._zod.onattach.push(e=>{const a=e._zod.bag;a.format=t.format,a.minimum=o,a.maximum=i,n&&(a.pattern=ut)}),e._zod.check=s=>{const l=s.value;if(n){if(!Number.isInteger(l))return void s.issues.push({expected:a,format:t.format,code:"invalid_type",continue:!1,input:l,inst:e});if(!Number.isSafeInteger(l))return void(l>0?s.issues.push({input:l,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:a,inclusive:!0,continue:!t.abort}):s.issues.push({input:l,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:a,inclusive:!0,continue:!t.abort}))}l<o&&s.issues.push({origin:"number",input:l,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),l>i&&s.issues.push({origin:"number",input:l,code:"too_big",maximum:i,inclusive:!0,inst:e,continue:!t.abort})}}),St=$constructor("$ZodCheckMaxLength",(e,t)=>{var n;ft.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!nullish(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const n=e._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{const a=n.value;if(a.length<=t.maximum)return;const o=getLengthableOrigin(a);n.issues.push({origin:o,code:"too_big",maximum:t.maximum,inclusive:!0,input:a,inst:e,continue:!t.abort})}}),xt=$constructor("$ZodCheckMinLength",(e,t)=>{var n;ft.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!nullish(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const n=e._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{const a=n.value;if(a.length>=t.minimum)return;const o=getLengthableOrigin(a);n.issues.push({origin:o,code:"too_small",minimum:t.minimum,inclusive:!0,input:a,inst:e,continue:!t.abort})}}),Ct=$constructor("$ZodCheckLengthEquals",(e,t)=>{var n;ft.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!nullish(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{const a=n.value,o=a.length;if(o===t.length)return;const i=getLengthableOrigin(a),s=o>t.length;n.issues.push({origin:i,...s?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),wt=$constructor("$ZodCheckStringFormat",(e,t)=>{var n,a;ft.init(e,t),e._zod.onattach.push(e=>{const n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??(n.patterns=new Set),n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,t.pattern.test(n.value)||n.issues.push({origin:"string",code:"invalid_format",format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(a=e._zod).check??(a.check=()=>{})}),kt=$constructor("$ZodCheckRegex",(e,t)=>{wt.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,t.pattern.test(n.value)||n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Et=$constructor("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=pt),wt.init(e,t)}),_t=$constructor("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=mt),wt.init(e,t)}),Pt=$constructor("$ZodCheckIncludes",(e,t)=>{ft.init(e,t);const n=escapeRegex(t.includes),a=new RegExp("number"==typeof t.position?`^.{${t.position}}${n}`:n);t.pattern=a,e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(a)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Tt=$constructor("$ZodCheckStartsWith",(e,t)=>{ft.init(e,t);const n=new RegExp(`^${escapeRegex(t.prefix)}.*`);t.pattern??(t.pattern=n),e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),At=$constructor("$ZodCheckEndsWith",(e,t)=>{ft.init(e,t);const n=new RegExp(`.*${escapeRegex(t.suffix)}$`);t.pattern??(t.pattern=n),e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Rt=$constructor("$ZodCheckOverwrite",(e,t)=>{ft.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),Mt=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if("function"==typeof e)return e(this,{execution:"sync"}),void e(this,{execution:"async"});const t=e.split("\n").filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),a=t.map(e=>e.slice(n)).map(e=>" ".repeat(2*this.indent)+e);for(const o of a)this.content.push(o)}compile(){const e=Function,t=this?.args;return new e(...t,[...(this?.content??[""]).map(e=>` ${e}`)].join("\n"))}},Dt={major:4,minor:4,patch:3},Ot=$constructor("$ZodType",(e,t)=>{var n;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Dt;const a=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&a.unshift(e);for(const o of a)for(const t of o._zod.onattach)t(e);if(0===a.length)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{const runChecks=(e,t,n)=>{let a,o=aborted(e);for(const i of t){if(i._zod.def.when){if(explicitlyAborted(e))continue;if(!i._zod.def.when(e))continue}else if(o)continue;const t=e.issues.length,s=i._zod.check(e);if(s instanceof Promise&&!1===n?.async)throw new De;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,e.issues.length!==t&&(o||(o=aborted(e,t)))});else{if(e.issues.length===t)continue;o||(o=aborted(e,t))}}return a?a.then(()=>e):e},handleCanaryResult=(t,n,o)=>{if(aborted(t))return t.aborted=!0,t;const i=runChecks(n,a,o);if(i instanceof Promise){if(!1===o.async)throw new De;return i.then(t=>e._zod.parse(t,o))}return e._zod.parse(i,o)};e._zod.run=(t,n)=>{if(n.skipChecks)return e._zod.parse(t,n);if("backward"===n.direction){const a=e._zod.parse({value:t.value,issues:[]},{...n,skipChecks:!0});return a instanceof Promise?a.then(e=>handleCanaryResult(e,t,n)):handleCanaryResult(a,t,n)}const o=e._zod.parse(t,n);if(o instanceof Promise){if(!1===n.async)throw new De;return o.then(e=>runChecks(e,a,n))}return runChecks(o,a,n)}}defineLazy(e,"~standard",()=>({validate:t=>{try{const n=qe(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch(n){return Ue(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:"zod",version:1}))}),$t=$constructor("$ZodString",(e,t)=>{Ot.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??string$1(e._zod.bag),e._zod.parse=(n,a)=>{if(t.coerce)try{n.value=String(n.value)}catch(a){}return"string"==typeof n.value||n.issues.push({expected:"string",code:"invalid_type",input:n.value,inst:e}),n}}),It=$constructor("$ZodStringFormat",(e,t)=>{wt.init(e,t),$t.init(e,t)}),Nt=$constructor("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Ze),It.init(e,t)}),zt=$constructor("$ZodUUID",(e,t)=>{if(t.version){const e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(void 0===e)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=uuid(e))}else t.pattern??(t.pattern=uuid());It.init(e,t)}),Lt=$constructor("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Xe),It.init(e,t)}),jt=$constructor("$ZodURL",(e,t)=>{It.init(e,t),e._zod.check=n=>{try{const a=n.value.trim();if(!t.normalize&&t.protocol?.source===it.source&&!/^https?:\/\//i.test(a))return void n.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:n.value,inst:e,continue:!t.abort});const o=new URL(a);return t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(o.hostname)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),void(t.normalize?n.value=o.href:n.value=a)}catch(a){n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:e,continue:!t.abort})}}}),Bt=$constructor("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=emoji()),It.init(e,t)}),Ft=$constructor("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=Ke),It.init(e,t)}),qt=$constructor("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=Ve),It.init(e,t)}),Ut=$constructor("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=He),It.init(e,t)}),Vt=$constructor("$ZodULID",(e,t)=>{t.pattern??(t.pattern=We),It.init(e,t)}),Ht=$constructor("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Ge),It.init(e,t)}),Wt=$constructor("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=Ye),It.init(e,t)}),Gt=$constructor("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=datetime$1(t)),It.init(e,t)}),Yt=$constructor("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=ct),It.init(e,t)}),Kt=$constructor("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=time$1(t)),It.init(e,t)}),Qt=$constructor("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Qe),It.init(e,t)}),Zt=$constructor("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=et),It.init(e,t),e._zod.bag.format="ipv4"}),Xt=$constructor("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=tt),It.init(e,t),e._zod.bag.format="ipv6",e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:"invalid_format",format:"ipv6",input:n.value,inst:e,continue:!t.abort})}}}),Jt=$constructor("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=rt),It.init(e,t)}),er=$constructor("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=nt),It.init(e,t),e._zod.check=n=>{const a=n.value.split("/");try{if(2!==a.length)throw new Error;const[e,t]=a;if(!t)throw new Error;const n=Number(t);if(`${n}`!==t)throw new Error;if(n<0||n>128)throw new Error;new URL(`http://[${e}]`)}catch{n.issues.push({code:"invalid_format",format:"cidrv6",input:n.value,inst:e,continue:!t.abort})}}});function isValidBase64(e){if(""===e)return!0;if(/\s/.test(e))return!1;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var tr=$constructor("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=at),It.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=n=>{isValidBase64(n.value)||n.issues.push({code:"invalid_format",format:"base64",input:n.value,inst:e,continue:!t.abort})}});function isValidBase64URL(e){if(!ot.test(e))return!1;const t=e.replace(/[-_]/g,e=>"-"===e?"+":"/");return isValidBase64(t.padEnd(4*Math.ceil(t.length/4),"="))}var rr=$constructor("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=ot),It.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=n=>{isValidBase64URL(n.value)||n.issues.push({code:"invalid_format",format:"base64url",input:n.value,inst:e,continue:!t.abort})}}),nr=$constructor("$ZodE164",(e,t)=>{t.pattern??(t.pattern=st),It.init(e,t)});function isValidJWT(e,t=null){try{const n=e.split(".");if(3!==n.length)return!1;const[a]=n;if(!a)return!1;const o=JSON.parse(atob(a));return(!("typ"in o)||"JWT"===o?.typ)&&(!!o.alg&&(!t||"alg"in o&&o.alg===t))}catch{return!1}}var ar=$constructor("$ZodJWT",(e,t)=>{It.init(e,t),e._zod.check=n=>{isValidJWT(n.value,t.alg)||n.issues.push({code:"invalid_format",format:"jwt",input:n.value,inst:e,continue:!t.abort})}}),or=$constructor("$ZodNumber",(e,t)=>{Ot.init(e,t),e._zod.pattern=e._zod.bag.pattern??dt,e._zod.parse=(n,a)=>{if(t.coerce)try{n.value=Number(n.value)}catch(s){}const o=n.value;if("number"==typeof o&&!Number.isNaN(o)&&Number.isFinite(o))return n;const i="number"==typeof o?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return n.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...i?{received:i}:{}}),n}}),ir=$constructor("$ZodNumberFormat",(e,t)=>{vt.init(e,t),or.init(e,t)}),sr=$constructor("$ZodUnknown",(e,t)=>{Ot.init(e,t),e._zod.parse=e=>e}),lr=$constructor("$ZodNever",(e,t)=>{Ot.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:e}),t)});function handleArrayResult(e,t,n){e.issues.length&&t.issues.push(...prefixIssues(n,e.issues)),t.value[n]=e.value}var cr=$constructor("$ZodArray",(e,t)=>{Ot.init(e,t),e._zod.parse=(n,a)=>{const o=n.value;if(!Array.isArray(o))return n.issues.push({expected:"array",code:"invalid_type",input:o,inst:e}),n;n.value=Array(o.length);const i=[];for(let e=0;e<o.length;e++){const s=o[e],l=t.element._zod.run({value:s,issues:[]},a);l instanceof Promise?i.push(l.then(t=>handleArrayResult(t,n,e))):handleArrayResult(l,n,e)}return i.length?Promise.all(i).then(()=>n):n}});function handlePropertyResult(e,t,n,a,o,i){const s=n in a;if(e.issues.length){if(o&&i&&!s)return;t.issues.push(...prefixIssues(n,e.issues))}s||o?void 0===e.value?s&&(t.value[n]=void 0):t.value[n]=e.value:e.issues.length||t.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[n]})}function normalizeDef(e){const t=Object.keys(e.shape);for(const a of t)if(!e.shape?.[a]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${a}": expected a Zod schema`);const n=optionalKeys(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function handleCatchall(e,t,n,a,o,i){const s=[],l=o.keySet,c=o.catchall._zod,u=c.def.type,d="optional"===c.optin,p="optional"===c.optout;for(const m in t){if("__proto__"===m)continue;if(l.has(m))continue;if("never"===u){s.push(m);continue}const o=c.run({value:t[m],issues:[]},a);o instanceof Promise?e.push(o.then(e=>handlePropertyResult(e,n,m,t,d,p))):handlePropertyResult(o,n,m,t,d,p)}return s.length&&n.issues.push({code:"unrecognized_keys",keys:s,input:t,inst:i}),e.length?Promise.all(e).then(()=>n):n}var ur=$constructor("$ZodObject",(e,t)=>{if(Ot.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){const e=t.shape;Object.defineProperty(t,"shape",{get:()=>{const n={...e};return Object.defineProperty(t,"shape",{value:n}),n}})}const n=cached(()=>normalizeDef(t));defineLazy(e._zod,"propValues",()=>{const e=t.shape,n={};for(const t in e){const a=e[t]._zod;if(a.values){n[t]??(n[t]=new Set);for(const e of a.values)n[t].add(e)}}return n});const a=isObject,o=t.catchall;let i;e._zod.parse=(t,s)=>{i??(i=n.value);const l=t.value;if(!a(l))return t.issues.push({expected:"object",code:"invalid_type",input:l,inst:e}),t;t.value={};const c=[],u=i.shape;for(const e of i.keys){const n=u[e],a="optional"===n._zod.optin,o="optional"===n._zod.optout,i=n._zod.run({value:l[e],issues:[]},s);i instanceof Promise?c.push(i.then(n=>handlePropertyResult(n,t,e,l,a,o))):handlePropertyResult(i,t,e,l,a,o)}return o?handleCatchall(c,l,t,s,n.value,e):c.length?Promise.all(c).then(()=>t):t}}),dr=$constructor("$ZodObjectJIT",(e,t)=>{ur.init(e,t);const n=e._zod.parse,a=cached(()=>normalizeDef(t)),generateFastpass=e=>{const t=new Mt(["shape","payload","ctx"]),n=a.value,parseStr=e=>{const t=esc(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write("const input = payload.value;");const o=Object.create(null);let i=0;for(const a of n.keys)o[a]="key_"+i++;t.write("const newResult = {};");for(const a of n.keys){const n=o[a],i=esc(a),s=e[a],l="optional"===s?._zod?.optin,c="optional"===s?._zod?.optout;t.write(`const ${n} = ${parseStr(a)};`),l&&c?t.write(`\n if (${n}.issues.length) {\n if (${i} in input) {\n payload.issues = payload.issues.concat(${n}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${i}, ...iss.path] : [${i}]\n })));\n }\n }\n \n if (${n}.value === undefined) {\n if (${i} in input) {\n newResult[${i}] = undefined;\n }\n } else {\n newResult[${i}] = ${n}.value;\n }\n \n `):l?t.write(`\n if (${n}.issues.length) {\n payload.issues = payload.issues.concat(${n}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${i}, ...iss.path] : [${i}]\n })));\n }\n \n if (${n}.value === undefined) {\n if (${i} in input) {\n newResult[${i}] = undefined;\n }\n } else {\n newResult[${i}] = ${n}.value;\n }\n \n `):t.write(`\n const ${n}_present = ${i} in input;\n if (${n}.issues.length) {\n payload.issues = payload.issues.concat(${n}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${i}, ...iss.path] : [${i}]\n })));\n }\n if (!${n}_present && !${n}.issues.length) {\n payload.issues.push({\n code: "invalid_type",\n expected: "nonoptional",\n input: undefined,\n path: [${i}]\n });\n }\n\n if (${n}_present) {\n if (${n}.value === undefined) {\n newResult[${i}] = undefined;\n } else {\n newResult[${i}] = ${n}.value;\n }\n }\n\n `)}t.write("payload.value = newResult;"),t.write("return payload;");const s=t.compile();return(t,n)=>s(e,t,n)};let o;const i=isObject,s=!$e.jitless,l=s&&ze.value,c=t.catchall;let u;e._zod.parse=(d,p)=>{u??(u=a.value);const m=d.value;return i(m)?s&&l&&!1===p?.async&&!0!==p.jitless?(o||(o=generateFastpass(t.shape)),d=o(d,p),c?handleCatchall([],m,d,p,u,e):d):n(d,p):(d.issues.push({expected:"object",code:"invalid_type",input:m,inst:e}),d)}});function handleUnionResults(e,t,n,a){for(const i of e)if(0===i.issues.length)return t.value=i.value,t;const o=e.filter(e=>!aborted(e));return 1===o.length?(t.value=o[0].value,o[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>finalizeIssue(e,a,config())))}),t)}var pr=$constructor("$ZodUnion",(e,t)=>{Ot.init(e,t),defineLazy(e._zod,"optin",()=>t.options.some(e=>"optional"===e._zod.optin)?"optional":void 0),defineLazy(e._zod,"optout",()=>t.options.some(e=>"optional"===e._zod.optout)?"optional":void 0),defineLazy(e._zod,"values",()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),defineLazy(e._zod,"pattern",()=>{if(t.options.every(e=>e._zod.pattern)){const e=t.options.map(e=>e._zod.pattern);return new RegExp(`^(${e.map(e=>cleanRegex(e.source)).join("|")})$`)}});const n=1===t.options.length?t.options[0]._zod.run:null;e._zod.parse=(a,o)=>{if(n)return n(a,o);let i=!1;const s=[];for(const e of t.options){const t=e._zod.run({value:a.value,issues:[]},o);if(t instanceof Promise)s.push(t),i=!0;else{if(0===t.issues.length)return t;s.push(t)}}return i?Promise.all(s).then(t=>handleUnionResults(t,a,e,o)):handleUnionResults(s,a,e,o)}}),mr=$constructor("$ZodIntersection",(e,t)=>{Ot.init(e,t),e._zod.parse=(e,n)=>{const a=e.value,o=t.left._zod.run({value:a,issues:[]},n),i=t.right._zod.run({value:a,issues:[]},n);return o instanceof Promise||i instanceof Promise?Promise.all([o,i]).then(([t,n])=>handleIntersectionResults(e,t,n)):handleIntersectionResults(e,o,i)}});function mergeValues(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e===+t)return{valid:!0,data:e};if(isPlainObject$2(e)&&isPlainObject$2(t)){const n=Object.keys(t),a=Object.keys(e).filter(e=>-1!==n.indexOf(e)),o={...e,...t};for(const i of a){const n=mergeValues(e[i],t[i]);if(!n.valid)return{valid:!1,mergeErrorPath:[i,...n.mergeErrorPath]};o[i]=n.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};const n=[];for(let a=0;a<e.length;a++){const o=mergeValues(e[a],t[a]);if(!o.valid)return{valid:!1,mergeErrorPath:[a,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function handleIntersectionResults(e,t,n){const a=new Map;let o;for(const l of t.issues)if("unrecognized_keys"===l.code){o??(o=l);for(const e of l.keys)a.has(e)||a.set(e,{}),a.get(e).l=!0}else e.issues.push(l);for(const l of n.issues)if("unrecognized_keys"===l.code)for(const e of l.keys)a.has(e)||a.set(e,{}),a.get(e).r=!0;else e.issues.push(l);const i=[...a].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(i.length&&o&&e.issues.push({...o,keys:i}),aborted(e))return e;const s=mergeValues(t.value,n.value);if(!s.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(s.mergeErrorPath)}`);return e.value=s.data,e}var fr=$constructor("$ZodRecord",(e,t)=>{Ot.init(e,t),e._zod.parse=(n,a)=>{const o=n.value;if(!isPlainObject$2(o))return n.issues.push({expected:"record",code:"invalid_type",input:o,inst:e}),n;const i=[],s=t.keyType._zod.values;if(s){n.value={};const l=new Set;for(const u of s)if("string"==typeof u||"number"==typeof u||"symbol"==typeof u){l.add("number"==typeof u?u.toString():u);const s=t.keyType._zod.run({value:u,issues:[]},a);if(s instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(s.issues.length){n.issues.push({code:"invalid_key",origin:"record",issues:s.issues.map(e=>finalizeIssue(e,a,config())),input:u,path:[u],inst:e});continue}const c=s.value,d=t.valueType._zod.run({value:o[u],issues:[]},a);d instanceof Promise?i.push(d.then(e=>{e.issues.length&&n.issues.push(...prefixIssues(u,e.issues)),n.value[c]=e.value})):(d.issues.length&&n.issues.push(...prefixIssues(u,d.issues)),n.value[c]=d.value)}let c;for(const e in o)l.has(e)||(c=c??[],c.push(e));c&&c.length>0&&n.issues.push({code:"unrecognized_keys",input:o,inst:e,keys:c})}else{n.value={};for(const s of Reflect.ownKeys(o)){if("__proto__"===s)continue;if(!Object.prototype.propertyIsEnumerable.call(o,s))continue;let l=t.keyType._zod.run({value:s,issues:[]},a);if(l instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if("string"==typeof s&&dt.test(s)&&l.issues.length){const e=t.keyType._zod.run({value:Number(s),issues:[]},a);if(e instanceof Promise)throw new Error("Async schemas not supported in object keys currently");0===e.issues.length&&(l=e)}if(l.issues.length){"loose"===t.mode?n.value[s]=o[s]:n.issues.push({code:"invalid_key",origin:"record",issues:l.issues.map(e=>finalizeIssue(e,a,config())),input:s,path:[s],inst:e});continue}const c=t.valueType._zod.run({value:o[s],issues:[]},a);c instanceof Promise?i.push(c.then(e=>{e.issues.length&&n.issues.push(...prefixIssues(s,e.issues)),n.value[l.value]=e.value})):(c.issues.length&&n.issues.push(...prefixIssues(s,c.issues)),n.value[l.value]=c.value)}}return i.length?Promise.all(i).then(()=>n):n}}),gr=$constructor("$ZodEnum",(e,t)=>{Ot.init(e,t);const n=getEnumValues(t.entries),a=new Set(n);e._zod.values=a,e._zod.pattern=new RegExp(`^(${n.filter(e=>Le.has(typeof e)).map(e=>"string"==typeof e?escapeRegex(e):e.toString()).join("|")})$`),e._zod.parse=(t,o)=>{const i=t.value;return a.has(i)||t.issues.push({code:"invalid_value",values:n,input:i,inst:e}),t}}),hr=$constructor("$ZodTransform",(e,t)=>{Ot.init(e,t),e._zod.optin="optional",e._zod.parse=(n,a)=>{if("backward"===a.direction)throw new Oe(e.constructor.name);const o=t.transform(n.value,n);if(a.async)return(o instanceof Promise?o:Promise.resolve(o)).then(e=>(n.value=e,n.fallback=!0,n));if(o instanceof Promise)throw new De;return n.value=o,n.fallback=!0,n}});function handleOptionalResult(e,t){return void 0===t&&(e.issues.length||e.fallback)?{issues:[],value:void 0}:e}var br=$constructor("$ZodOptional",(e,t)=>{Ot.init(e,t),e._zod.optin="optional",e._zod.optout="optional",defineLazy(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),defineLazy(e._zod,"pattern",()=>{const e=t.innerType._zod.pattern;return e?new RegExp(`^(${cleanRegex(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if("optional"===t.innerType._zod.optin){const a=e.value,o=t.innerType._zod.run(e,n);return o instanceof Promise?o.then(e=>handleOptionalResult(e,a)):handleOptionalResult(o,a)}return void 0===e.value?e:t.innerType._zod.run(e,n)}}),yr=$constructor("$ZodExactOptional",(e,t)=>{br.init(e,t),defineLazy(e._zod,"values",()=>t.innerType._zod.values),defineLazy(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),vr=$constructor("$ZodNullable",(e,t)=>{Ot.init(e,t),defineLazy(e._zod,"optin",()=>t.innerType._zod.optin),defineLazy(e._zod,"optout",()=>t.innerType._zod.optout),defineLazy(e._zod,"pattern",()=>{const e=t.innerType._zod.pattern;return e?new RegExp(`^(${cleanRegex(e.source)}|null)$`):void 0}),defineLazy(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>null===e.value?e:t.innerType._zod.run(e,n)}),Sr=$constructor("$ZodDefault",(e,t)=>{Ot.init(e,t),e._zod.optin="optional",defineLazy(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if("backward"===n.direction)return t.innerType._zod.run(e,n);if(void 0===e.value)return e.value=t.defaultValue,e;const a=t.innerType._zod.run(e,n);return a instanceof Promise?a.then(e=>handleDefaultResult(e,t)):handleDefaultResult(a,t)}});function handleDefaultResult(e,t){return void 0===e.value&&(e.value=t.defaultValue),e}var xr=$constructor("$ZodPrefault",(e,t)=>{Ot.init(e,t),e._zod.optin="optional",defineLazy(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,n)=>("backward"===n.direction||void 0===e.value&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),Cr=$constructor("$ZodNonOptional",(e,t)=>{Ot.init(e,t),defineLazy(e._zod,"values",()=>{const e=t.innerType._zod.values;return e?new Set([...e].filter(e=>void 0!==e)):void 0}),e._zod.parse=(n,a)=>{const o=t.innerType._zod.run(n,a);return o instanceof Promise?o.then(t=>handleNonOptionalResult(t,e)):handleNonOptionalResult(o,e)}});function handleNonOptionalResult(e,t){return e.issues.length||void 0!==e.value||e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}var wr=$constructor("$ZodCatch",(e,t)=>{Ot.init(e,t),e._zod.optin="optional",defineLazy(e._zod,"optout",()=>t.innerType._zod.optout),defineLazy(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if("backward"===n.direction)return t.innerType._zod.run(e,n);const a=t.innerType._zod.run(e,n);return a instanceof Promise?a.then(a=>(e.value=a.value,a.issues.length&&(e.value=t.catchValue({...e,error:{issues:a.issues.map(e=>finalizeIssue(e,n,config()))},input:e.value}),e.issues=[],e.fallback=!0),e)):(e.value=a.value,a.issues.length&&(e.value=t.catchValue({...e,error:{issues:a.issues.map(e=>finalizeIssue(e,n,config()))},input:e.value}),e.issues=[],e.fallback=!0),e)}}),kr=$constructor("$ZodPipe",(e,t)=>{Ot.init(e,t),defineLazy(e._zod,"values",()=>t.in._zod.values),defineLazy(e._zod,"optin",()=>t.in._zod.optin),defineLazy(e._zod,"optout",()=>t.out._zod.optout),defineLazy(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if("backward"===n.direction){const a=t.out._zod.run(e,n);return a instanceof Promise?a.then(e=>handlePipeResult(e,t.in,n)):handlePipeResult(a,t.in,n)}const a=t.in._zod.run(e,n);return a instanceof Promise?a.then(e=>handlePipeResult(e,t.out,n)):handlePipeResult(a,t.out,n)}});function handlePipeResult(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues,fallback:e.fallback},n)}var Er=$constructor("$ZodReadonly",(e,t)=>{Ot.init(e,t),defineLazy(e._zod,"propValues",()=>t.innerType._zod.propValues),defineLazy(e._zod,"values",()=>t.innerType._zod.values),defineLazy(e._zod,"optin",()=>t.innerType?._zod?.optin),defineLazy(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if("backward"===n.direction)return t.innerType._zod.run(e,n);const a=t.innerType._zod.run(e,n);return a instanceof Promise?a.then(handleReadonlyResult):handleReadonlyResult(a)}});function handleReadonlyResult(e){return e.value=Object.freeze(e.value),e}var _r,Pr=$constructor("$ZodCustom",(e,t)=>{ft.init(e,t),Ot.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{const a=n.value,o=t.fn(a);if(o instanceof Promise)return o.then(t=>handleRefineResult(t,n,a,e));handleRefineResult(o,n,a,e)}});function handleRefineResult(e,t,n,a){if(!e){const e={code:"custom",input:n,inst:a,path:[...a._zod.def.path??[]],continue:!a._zod.def.abort};a._zod.def.params&&(e.params=a._zod.def.params),t.issues.push(issue(e))}}var Tr=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){const n=t[0];return this._map.set(e,n),n&&"object"==typeof n&&"id"in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){const t=this._map.get(e);return t&&"object"==typeof t&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){const t=e._zod.parent;if(t){const n={...this.get(t)??{}};delete n.id;const a={...n,...this._map.get(e)};return Object.keys(a).length?a:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function registry(){return new Tr}(_r=globalThis).__zod_globalRegistry??(_r.__zod_globalRegistry=registry());var Ar=globalThis.__zod_globalRegistry;function _string(e,t){return new e({type:"string",...normalizeParams(t)})}function _email(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...normalizeParams(t)})}function _guid(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...normalizeParams(t)})}function _uuid(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...normalizeParams(t)})}function _uuidv4(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...normalizeParams(t)})}function _uuidv6(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...normalizeParams(t)})}function _uuidv7(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...normalizeParams(t)})}function _url(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...normalizeParams(t)})}function _emoji(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...normalizeParams(t)})}function _nanoid(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...normalizeParams(t)})}function _cuid(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...normalizeParams(t)})}function _cuid2(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...normalizeParams(t)})}function _ulid(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...normalizeParams(t)})}function _xid(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...normalizeParams(t)})}function _ksuid(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...normalizeParams(t)})}function _ipv4(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...normalizeParams(t)})}function _ipv6(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...normalizeParams(t)})}function _cidrv4(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...normalizeParams(t)})}function _cidrv6(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...normalizeParams(t)})}function _base64(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...normalizeParams(t)})}function _base64url(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...normalizeParams(t)})}function _e164(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...normalizeParams(t)})}function _jwt(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...normalizeParams(t)})}function _isoDateTime(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...normalizeParams(t)})}function _isoDate(e,t){return new e({type:"string",format:"date",check:"string_format",...normalizeParams(t)})}function _isoTime(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...normalizeParams(t)})}function _isoDuration(e,t){return new e({type:"string",format:"duration",check:"string_format",...normalizeParams(t)})}function _coercedNumber(e,t){return new e({type:"number",coerce:!0,checks:[],...normalizeParams(t)})}function _int(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...normalizeParams(t)})}function _unknown(e){return new e({type:"unknown"})}function _never(e,t){return new e({type:"never",...normalizeParams(t)})}function _lt(e,t){return new ht({check:"less_than",...normalizeParams(t),value:e,inclusive:!1})}function _lte(e,t){return new ht({check:"less_than",...normalizeParams(t),value:e,inclusive:!0})}function _gt(e,t){return new bt({check:"greater_than",...normalizeParams(t),value:e,inclusive:!1})}function _gte(e,t){return new bt({check:"greater_than",...normalizeParams(t),value:e,inclusive:!0})}function _multipleOf(e,t){return new yt({check:"multiple_of",...normalizeParams(t),value:e})}function _maxLength(e,t){return new St({check:"max_length",...normalizeParams(t),maximum:e})}function _minLength(e,t){return new xt({check:"min_length",...normalizeParams(t),minimum:e})}function _length(e,t){return new Ct({check:"length_equals",...normalizeParams(t),length:e})}function _regex(e,t){return new kt({check:"string_format",format:"regex",...normalizeParams(t),pattern:e})}function _lowercase(e){return new Et({check:"string_format",format:"lowercase",...normalizeParams(e)})}function _uppercase(e){return new _t({check:"string_format",format:"uppercase",...normalizeParams(e)})}function _includes(e,t){return new Pt({check:"string_format",format:"includes",...normalizeParams(t),includes:e})}function _startsWith(e,t){return new Tt({check:"string_format",format:"starts_with",...normalizeParams(t),prefix:e})}function _endsWith(e,t){return new At({check:"string_format",format:"ends_with",...normalizeParams(t),suffix:e})}function _overwrite(e){return new Rt({check:"overwrite",tx:e})}function _normalize(e){return _overwrite(t=>t.normalize(e))}function _trim(){return _overwrite(e=>e.trim())}function _toLowerCase(){return _overwrite(e=>e.toLowerCase())}function _toUpperCase(){return _overwrite(e=>e.toUpperCase())}function _slugify(){return _overwrite(e=>slugify(e))}function _array(e,t,n){return new e({type:"array",element:t,...normalizeParams(n)})}function _refine(e,t,n){return new e({type:"custom",check:"custom",fn:t,...normalizeParams(n)})}function _superRefine(e,t){const n=_check(t=>(t.addIssue=e=>{if("string"==typeof e)t.issues.push(issue(e,t.value,n._zod.def));else{const a=e;a.fatal&&(a.continue=!1),a.code??(a.code="custom"),a.input??(a.input=t.value),a.inst??(a.inst=n),a.continue??(a.continue=!n._zod.def.abort),t.issues.push(issue(a))}},e(t.value,t)),t);return n}function _check(e,t){const n=new ft({check:"custom",...normalizeParams(t)});return n._zod.check=e,n}function initializeContext(e){let t=e?.target??"draft-2020-12";return"draft-4"===t&&(t="draft-04"),"draft-7"===t&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??Ar,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function process(e,t,n={path:[],schemaPath:[]}){var a;const o=e._zod.def,i=t.seen.get(e);if(i)return i.count++,n.schemaPath.includes(e)&&(i.cycle=n.path),i.schema;const s={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,s);const l=e._zod.toJSONSchema?.();if(l)s.schema=l;else{const a={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,s.schema,a);else{const n=s.schema,i=t.processors[o.type];if(!i)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);i(e,t,n,a)}const i=e._zod.parent;i&&(s.ref||(s.ref=i),process(i,t,a),t.seen.get(i).isParent=!0)}const c=t.metadataRegistry.get(e);return c&&Object.assign(s.schema,c),"input"===t.io&&isTransforming(e)&&(delete s.schema.examples,delete s.schema.default),"input"===t.io&&"_prefault"in s.schema&&((a=s.schema).default??(a.default=s.schema._prefault)),delete s.schema._prefault,t.seen.get(e).schema}function extractDefs(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const a=new Map;for(const o of e.seen.entries()){const t=e.metadataRegistry.get(o[0])?.id;if(t){const e=a.get(t);if(e&&e!==o[0])throw new Error(`Duplicate schema id "${t}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);a.set(t,o[0])}}const makeURI=t=>{const a="draft-2020-12"===e.target?"$defs":"definitions";if(e.external){const n=e.external.registry.get(t[0])?.id,o=e.external.uri??(e=>e);if(n)return{ref:o(n)};const i=t[1].defId??t[1].schema.id??"schema"+e.counter++;return t[1].defId=i,{defId:i,ref:`${o("__shared")}#/${a}/${i}`}}if(t[1]===n)return{ref:"#"};const o=`#/${a}/`,i=t[1].schema.id??"__schema"+e.counter++;return{defId:i,ref:o+i}},extractToDef=e=>{if(e[1].schema.$ref)return;const t=e[1],{ref:n,defId:a}=makeURI(e);t.def={...t.schema},a&&(t.defId=a);const o=t.schema;for(const i in o)delete o[i];o.$ref=n};if("throw"===e.cycles)for(const o of e.seen.entries()){const e=o[1];if(e.cycle)throw new Error(`Cycle detected: #/${e.cycle?.join("/")}/<root>\n\nSet the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const o of e.seen.entries()){const n=o[1];if(t!==o[0]){if(e.external){const n=e.external.registry.get(o[0])?.id;if(t!==o[0]&&n){extractToDef(o);continue}}(e.metadataRegistry.get(o[0])?.id||n.cycle||n.count>1&&"ref"===e.reused)&&extractToDef(o)}else extractToDef(o)}}function finalize$1(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const flattenRef=t=>{const n=e.seen.get(t);if(null===n.ref)return;const a=n.def??n.schema,o={...a},i=n.ref;if(n.ref=null,i){flattenRef(i);const n=e.seen.get(i),s=n.schema;if(!s.$ref||"draft-07"!==e.target&&"draft-04"!==e.target&&"openapi-3.0"!==e.target?Object.assign(a,s):(a.allOf=a.allOf??[],a.allOf.push(s)),Object.assign(a,o),t._zod.parent===i)for(const e in a)"$ref"!==e&&"allOf"!==e&&(e in o||delete a[e]);if(s.$ref&&n.def)for(const e in a)"$ref"!==e&&"allOf"!==e&&e in n.def&&JSON.stringify(a[e])===JSON.stringify(n.def[e])&&delete a[e]}const s=t._zod.parent;if(s&&s!==i){flattenRef(s);const t=e.seen.get(s);if(t?.schema.$ref&&(a.$ref=t.schema.$ref,t.def))for(const e in a)"$ref"!==e&&"allOf"!==e&&e in t.def&&JSON.stringify(a[e])===JSON.stringify(t.def[e])&&delete a[e]}e.override({zodSchema:t,jsonSchema:a,path:n.path??[]})};for(const l of[...e.seen.entries()].reverse())flattenRef(l[0]);const a={};if("draft-2020-12"===e.target?a.$schema="https://json-schema.org/draft/2020-12/schema":"draft-07"===e.target?a.$schema="http://json-schema.org/draft-07/schema#":"draft-04"===e.target?a.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const n=e.external.registry.get(t)?.id;if(!n)throw new Error("Schema is missing an `id` property");a.$id=e.external.uri(n)}Object.assign(a,n.def??n.schema);const o=e.metadataRegistry.get(t)?.id;void 0!==o&&a.id===o&&delete a.id;const i=e.external?.defs??{};for(const l of e.seen.entries()){const e=l[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,i[e.defId]=e.def)}e.external||Object.keys(i).length>0&&("draft-2020-12"===e.target?a.$defs=i:a.definitions=i);try{const n=JSON.parse(JSON.stringify(a));return Object.defineProperty(n,"~standard",{value:{...t["~standard"],jsonSchema:{input:createStandardJSONSchemaMethod(t,"input",e.processors),output:createStandardJSONSchemaMethod(t,"output",e.processors)}},enumerable:!1,writable:!1}),n}catch(s){throw new Error("Error converting schema to JSON.")}}function isTransforming(e,t){const n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);const a=e._zod.def;if("transform"===a.type)return!0;if("array"===a.type)return isTransforming(a.element,n);if("set"===a.type)return isTransforming(a.valueType,n);if("lazy"===a.type)return isTransforming(a.getter(),n);if("promise"===a.type||"optional"===a.type||"nonoptional"===a.type||"nullable"===a.type||"readonly"===a.type||"default"===a.type||"prefault"===a.type)return isTransforming(a.innerType,n);if("intersection"===a.type)return isTransforming(a.left,n)||isTransforming(a.right,n);if("record"===a.type||"map"===a.type)return isTransforming(a.keyType,n)||isTransforming(a.valueType,n);if("pipe"===a.type)return!!e._zod.traits.has("$ZodCodec")||(isTransforming(a.in,n)||isTransforming(a.out,n));if("object"===a.type){for(const e in a.shape)if(isTransforming(a.shape[e],n))return!0;return!1}if("union"===a.type){for(const e of a.options)if(isTransforming(e,n))return!0;return!1}if("tuple"===a.type){for(const e of a.items)if(isTransforming(e,n))return!0;return!(!a.rest||!isTransforming(a.rest,n))}return!1}var createToJSONSchemaMethod=(e,t={})=>n=>{const a=initializeContext({...n,processors:t});return process(e,a),extractDefs(a,e),finalize$1(a,e)},createStandardJSONSchemaMethod=(e,t,n={})=>a=>{const{libraryOptions:o,target:i}=a??{},s=initializeContext({...o??{},target:i,io:t,processors:n});return process(e,s),extractDefs(s,e),finalize$1(s,e)},Rr={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},stringProcessor=(e,t,n,a)=>{const o=n;o.type="string";const{minimum:i,maximum:s,format:l,patterns:c,contentEncoding:u}=e._zod.bag;if("number"==typeof i&&(o.minLength=i),"number"==typeof s&&(o.maxLength=s),l&&(o.format=Rr[l]??l,""===o.format&&delete o.format,"time"===l&&delete o.format),u&&(o.contentEncoding=u),c&&c.size>0){const e=[...c];1===e.length?o.pattern=e[0].source:e.length>1&&(o.allOf=[...e.map(e=>({..."draft-07"===t.target||"draft-04"===t.target||"openapi-3.0"===t.target?{type:"string"}:{},pattern:e.source}))])}},numberProcessor=(e,t,n,a)=>{const o=n,{minimum:i,maximum:s,format:l,multipleOf:c,exclusiveMaximum:u,exclusiveMinimum:d}=e._zod.bag;"string"==typeof l&&l.includes("int")?o.type="integer":o.type="number";const p="number"==typeof d&&d>=(i??Number.NEGATIVE_INFINITY),m="number"==typeof u&&u<=(s??Number.POSITIVE_INFINITY),g="draft-04"===t.target||"openapi-3.0"===t.target;p?g?(o.minimum=d,o.exclusiveMinimum=!0):o.exclusiveMinimum=d:"number"==typeof i&&(o.minimum=i),m?g?(o.maximum=u,o.exclusiveMaximum=!0):o.exclusiveMaximum=u:"number"==typeof s&&(o.maximum=s),"number"==typeof c&&(o.multipleOf=c)},neverProcessor=(e,t,n,a)=>{n.not={}},unknownProcessor=(e,t,n,a)=>{},enumProcessor=(e,t,n,a)=>{const o=getEnumValues(e._zod.def.entries);o.every(e=>"number"==typeof e)&&(n.type="number"),o.every(e=>"string"==typeof e)&&(n.type="string"),n.enum=o},customProcessor=(e,t,n,a)=>{if("throw"===t.unrepresentable)throw new Error("Custom types cannot be represented in JSON Schema")},transformProcessor=(e,t,n,a)=>{if("throw"===t.unrepresentable)throw new Error("Transforms cannot be represented in JSON Schema")},arrayProcessor=(e,t,n,a)=>{const o=n,i=e._zod.def,{minimum:s,maximum:l}=e._zod.bag;"number"==typeof s&&(o.minItems=s),"number"==typeof l&&(o.maxItems=l),o.type="array",o.items=process(i.element,t,{...a,path:[...a.path,"items"]})},objectProcessor=(e,t,n,a)=>{const o=n,i=e._zod.def;o.type="object",o.properties={};const s=i.shape;for(const u in s)o.properties[u]=process(s[u],t,{...a,path:[...a.path,"properties",u]});const l=new Set(Object.keys(s)),c=new Set([...l].filter(e=>{const n=i.shape[e]._zod;return"input"===t.io?void 0===n.optin:void 0===n.optout}));c.size>0&&(o.required=Array.from(c)),"never"===i.catchall?._zod.def.type?o.additionalProperties=!1:i.catchall?i.catchall&&(o.additionalProperties=process(i.catchall,t,{...a,path:[...a.path,"additionalProperties"]})):"output"===t.io&&(o.additionalProperties=!1)},unionProcessor=(e,t,n,a)=>{const o=e._zod.def,i=!1===o.inclusive,s=o.options.map((e,n)=>process(e,t,{...a,path:[...a.path,i?"oneOf":"anyOf",n]}));i?n.oneOf=s:n.anyOf=s},intersectionProcessor=(e,t,n,a)=>{const o=e._zod.def,i=process(o.left,t,{...a,path:[...a.path,"allOf",0]}),s=process(o.right,t,{...a,path:[...a.path,"allOf",1]}),isSimpleIntersection=e=>"allOf"in e&&1===Object.keys(e).length;n.allOf=[...isSimpleIntersection(i)?i.allOf:[i],...isSimpleIntersection(s)?s.allOf:[s]]},recordProcessor=(e,t,n,a)=>{const o=n,i=e._zod.def;o.type="object";const s=i.keyType,l=s._zod.bag?.patterns;if("loose"===i.mode&&l&&l.size>0){const e=process(i.valueType,t,{...a,path:[...a.path,"patternProperties","*"]});o.patternProperties={};for(const t of l)o.patternProperties[t.source]=e}else"draft-07"!==t.target&&"draft-2020-12"!==t.target||(o.propertyNames=process(i.keyType,t,{...a,path:[...a.path,"propertyNames"]})),o.additionalProperties=process(i.valueType,t,{...a,path:[...a.path,"additionalProperties"]});const c=s._zod.values;if(c){const e=[...c].filter(e=>"string"==typeof e||"number"==typeof e);e.length>0&&(o.required=e)}},nullableProcessor=(e,t,n,a)=>{const o=e._zod.def,i=process(o.innerType,t,a),s=t.seen.get(e);"openapi-3.0"===t.target?(s.ref=o.innerType,n.nullable=!0):n.anyOf=[i,{type:"null"}]},nonoptionalProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);t.seen.get(e).ref=o.innerType},defaultProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);t.seen.get(e).ref=o.innerType,n.default=JSON.parse(JSON.stringify(o.defaultValue))},prefaultProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);t.seen.get(e).ref=o.innerType,"input"===t.io&&(n._prefault=JSON.parse(JSON.stringify(o.defaultValue)))},catchProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);let i;t.seen.get(e).ref=o.innerType;try{i=o.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}n.default=i},pipeProcessor=(e,t,n,a)=>{const o=e._zod.def,i=o.in._zod.traits.has("$ZodTransform"),s="input"===t.io?i?o.out:o.in:o.out;process(s,t,a);t.seen.get(e).ref=s},readonlyProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);t.seen.get(e).ref=o.innerType,n.readOnly=!0},optionalProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);t.seen.get(e).ref=o.innerType},Mr=$constructor("ZodISODateTime",(e,t)=>{Gt.init(e,t),Xr.init(e,t)});function datetime(e){return _isoDateTime(Mr,e)}var Dr=$constructor("ZodISODate",(e,t)=>{Yt.init(e,t),Xr.init(e,t)});function date(e){return _isoDate(Dr,e)}var Or=$constructor("ZodISOTime",(e,t)=>{Kt.init(e,t),Xr.init(e,t)});function time(e){return _isoTime(Or,e)}var $r=$constructor("ZodISODuration",(e,t)=>{Qt.init(e,t),Xr.init(e,t)});function duration$1(e){return _isoDuration($r,e)}var initializer=(e,t)=>{Be.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:t=>formatError(e,t)},flatten:{value:t=>flattenError(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,jsonStringifyReplacer,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,jsonStringifyReplacer,2)}},isEmpty:{get:()=>0===e.issues.length}})},Ir=$constructor("ZodError",initializer,{Parent:Error}),Nr=_parse(Ir),zr=_parseAsync(Ir),Lr=_safeParse(Ir),jr=_safeParseAsync(Ir),Br=_encode(Ir),Fr=_decode(Ir),qr=_encodeAsync(Ir),Ur=_decodeAsync(Ir),Vr=_safeEncode(Ir),Hr=_safeDecode(Ir),Wr=_safeEncodeAsync(Ir),Gr=_safeDecodeAsync(Ir),Yr=new WeakMap;function _installLazyMethods(e,t,n){const a=Object.getPrototypeOf(e);let o=Yr.get(a);if(o||(o=new Set,Yr.set(a,o)),!o.has(t)){o.add(t);for(const e in n){const t=n[e];Object.defineProperty(a,e,{configurable:!0,enumerable:!1,get(){const n=t.bind(this);return Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:n}),n},set(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:t})}})}}}var Kr=$constructor("ZodType",(e,t)=>(Ot.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:createStandardJSONSchemaMethod(e,"input"),output:createStandardJSONSchemaMethod(e,"output")}}),e.toJSONSchema=createToJSONSchemaMethod(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.parse=(t,n)=>Nr(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>Lr(e,t,n),e.parseAsync=async(t,n)=>zr(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>jr(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>Br(e,t,n),e.decode=(t,n)=>Fr(e,t,n),e.encodeAsync=async(t,n)=>qr(e,t,n),e.decodeAsync=async(t,n)=>Ur(e,t,n),e.safeEncode=(t,n)=>Vr(e,t,n),e.safeDecode=(t,n)=>Hr(e,t,n),e.safeEncodeAsync=async(t,n)=>Wr(e,t,n),e.safeDecodeAsync=async(t,n)=>Gr(e,t,n),_installLazyMethods(e,"ZodType",{check(...e){const t=this.def;return this.clone(mergeDefs(t,{checks:[...t.checks??[],...e.map(e=>"function"==typeof e?{_zod:{check:e,def:{check:"custom"},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return clone$1(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(refine(e,t))},superRefine(e,t){return this.check(superRefine(e,t))},overwrite(e){return this.check(_overwrite(e))},optional(){return optional(this)},exactOptional(){return exactOptional(this)},nullable(){return nullable(this)},nullish(){return optional(nullable(this))},nonoptional(e){return nonoptional(this,e)},array(){return array(this)},or(e){return union([this,e])},and(e){return intersection(this,e)},transform(e){return pipe(this,transform(e))},default(e){return _default(this,e)},prefault(e){return prefault(this,e)},catch(e){return _catch(this,e)},pipe(e){return pipe(this,e)},readonly(){return readonly(this)},describe(e){const t=this.clone();return Ar.add(t,{description:e}),t},meta(...e){if(0===e.length)return Ar.get(this);const t=this.clone();return Ar.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e){return e(this)}}),Object.defineProperty(e,"description",{get:()=>Ar.get(e)?.description,configurable:!0}),e)),Qr=$constructor("_ZodString",(e,t)=>{$t.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>stringProcessor(e,t,n,a);const n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,_installLazyMethods(e,"_ZodString",{regex(...e){return this.check(_regex(...e))},includes(...e){return this.check(_includes(...e))},startsWith(...e){return this.check(_startsWith(...e))},endsWith(...e){return this.check(_endsWith(...e))},min(...e){return this.check(_minLength(...e))},max(...e){return this.check(_maxLength(...e))},length(...e){return this.check(_length(...e))},nonempty(...e){return this.check(_minLength(1,...e))},lowercase(e){return this.check(_lowercase(e))},uppercase(e){return this.check(_uppercase(e))},trim(){return this.check(_trim())},normalize(...e){return this.check(_normalize(...e))},toLowerCase(){return this.check(_toLowerCase())},toUpperCase(){return this.check(_toUpperCase())},slugify(){return this.check(_slugify())}})}),Zr=$constructor("ZodString",(e,t)=>{$t.init(e,t),Qr.init(e,t),e.email=t=>e.check(_email(Jr,t)),e.url=t=>e.check(_url(rn,t)),e.jwt=t=>e.check(_jwt(Sn,t)),e.emoji=t=>e.check(_emoji(nn,t)),e.guid=t=>e.check(_guid(en,t)),e.uuid=t=>e.check(_uuid(tn,t)),e.uuidv4=t=>e.check(_uuidv4(tn,t)),e.uuidv6=t=>e.check(_uuidv6(tn,t)),e.uuidv7=t=>e.check(_uuidv7(tn,t)),e.nanoid=t=>e.check(_nanoid(an,t)),e.guid=t=>e.check(_guid(en,t)),e.cuid=t=>e.check(_cuid(sn,t)),e.cuid2=t=>e.check(_cuid2(ln,t)),e.ulid=t=>e.check(_ulid(cn,t)),e.base64=t=>e.check(_base64(bn,t)),e.base64url=t=>e.check(_base64url(yn,t)),e.xid=t=>e.check(_xid(un,t)),e.ksuid=t=>e.check(_ksuid(dn,t)),e.ipv4=t=>e.check(_ipv4(pn,t)),e.ipv6=t=>e.check(_ipv6(mn,t)),e.cidrv4=t=>e.check(_cidrv4(gn,t)),e.cidrv6=t=>e.check(_cidrv6(hn,t)),e.e164=t=>e.check(_e164(vn,t)),e.datetime=t=>e.check(datetime(t)),e.date=t=>e.check(date(t)),e.time=t=>e.check(time(t)),e.duration=t=>e.check(duration$1(t))});function string(e){return _string(Zr,e)}var Xr=$constructor("ZodStringFormat",(e,t)=>{It.init(e,t),Qr.init(e,t)}),Jr=$constructor("ZodEmail",(e,t)=>{Lt.init(e,t),Xr.init(e,t)}),en=$constructor("ZodGUID",(e,t)=>{Nt.init(e,t),Xr.init(e,t)}),tn=$constructor("ZodUUID",(e,t)=>{zt.init(e,t),Xr.init(e,t)}),rn=$constructor("ZodURL",(e,t)=>{jt.init(e,t),Xr.init(e,t)}),nn=$constructor("ZodEmoji",(e,t)=>{Bt.init(e,t),Xr.init(e,t)}),an=$constructor("ZodNanoID",(e,t)=>{Ft.init(e,t),Xr.init(e,t)}),sn=$constructor("ZodCUID",(e,t)=>{qt.init(e,t),Xr.init(e,t)}),ln=$constructor("ZodCUID2",(e,t)=>{Ut.init(e,t),Xr.init(e,t)}),cn=$constructor("ZodULID",(e,t)=>{Vt.init(e,t),Xr.init(e,t)}),un=$constructor("ZodXID",(e,t)=>{Ht.init(e,t),Xr.init(e,t)}),dn=$constructor("ZodKSUID",(e,t)=>{Wt.init(e,t),Xr.init(e,t)}),pn=$constructor("ZodIPv4",(e,t)=>{Zt.init(e,t),Xr.init(e,t)}),mn=$constructor("ZodIPv6",(e,t)=>{Xt.init(e,t),Xr.init(e,t)}),gn=$constructor("ZodCIDRv4",(e,t)=>{Jt.init(e,t),Xr.init(e,t)}),hn=$constructor("ZodCIDRv6",(e,t)=>{er.init(e,t),Xr.init(e,t)}),bn=$constructor("ZodBase64",(e,t)=>{tr.init(e,t),Xr.init(e,t)}),yn=$constructor("ZodBase64URL",(e,t)=>{rr.init(e,t),Xr.init(e,t)}),vn=$constructor("ZodE164",(e,t)=>{nr.init(e,t),Xr.init(e,t)}),Sn=$constructor("ZodJWT",(e,t)=>{ar.init(e,t),Xr.init(e,t)}),xn=$constructor("ZodNumber",(e,t)=>{or.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>numberProcessor(e,t,n,a),_installLazyMethods(e,"ZodNumber",{gt(e,t){return this.check(_gt(e,t))},gte(e,t){return this.check(_gte(e,t))},min(e,t){return this.check(_gte(e,t))},lt(e,t){return this.check(_lt(e,t))},lte(e,t){return this.check(_lte(e,t))},max(e,t){return this.check(_lte(e,t))},int(e){return this.check(int(e))},safe(e){return this.check(int(e))},positive(e){return this.check(_gt(0,e))},nonnegative(e){return this.check(_gte(0,e))},negative(e){return this.check(_lt(0,e))},nonpositive(e){return this.check(_lte(0,e))},multipleOf(e,t){return this.check(_multipleOf(e,t))},step(e,t){return this.check(_multipleOf(e,t))},finite(){return this}});const n=e._zod.bag;e.minValue=Math.max(n.minimum??Number.NEGATIVE_INFINITY,n.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(n.maximum??Number.POSITIVE_INFINITY,n.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(n.format??"").includes("int")||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null}),Cn=$constructor("ZodNumberFormat",(e,t)=>{ir.init(e,t),xn.init(e,t)});function int(e){return _int(Cn,e)}var wn=$constructor("ZodUnknown",(e,t)=>{sr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>unknownProcessor(e,t,n,a)});function unknown(){return _unknown(wn)}var kn=$constructor("ZodNever",(e,t)=>{lr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>neverProcessor(e,t,n,a)});function never(e){return _never(kn,e)}var En=$constructor("ZodArray",(e,t)=>{cr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>arrayProcessor(e,t,n,a),e.element=t.element,_installLazyMethods(e,"ZodArray",{min(e,t){return this.check(_minLength(e,t))},nonempty(e){return this.check(_minLength(1,e))},max(e,t){return this.check(_maxLength(e,t))},length(e,t){return this.check(_length(e,t))},unwrap(){return this.element}})});function array(e,t){return _array(En,e,t)}var _n=$constructor("ZodObject",(e,t)=>{dr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>objectProcessor(e,t,n,a),defineLazy(e,"shape",()=>t.shape),_installLazyMethods(e,"ZodObject",{keyof(){return _enum(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:unknown()})},loose(){return this.clone({...this._zod.def,catchall:unknown()})},strict(){return this.clone({...this._zod.def,catchall:never()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return extend(this,e)},safeExtend(e){return safeExtend(this,e)},merge(e){return merge(this,e)},pick(e){return pick(this,e)},omit(e){return omit(this,e)},partial(...e){return partial(Dn,this,e[0])},required(...e){return required(zn,this,e[0])}})});function object(e,t){return new _n({type:"object",shape:e??{},...normalizeParams(t)})}var Pn=$constructor("ZodUnion",(e,t)=>{pr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>unionProcessor(e,t,n,a),e.options=t.options});function union(e,t){return new Pn({type:"union",options:e,...normalizeParams(t)})}var Tn=$constructor("ZodIntersection",(e,t)=>{mr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>intersectionProcessor(e,t,n,a)});function intersection(e,t){return new Tn({type:"intersection",left:e,right:t})}var An=$constructor("ZodRecord",(e,t)=>{fr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>recordProcessor(e,t,n,a),e.keyType=t.keyType,e.valueType=t.valueType});function record(e,t,n){return t&&t._zod?new An({type:"record",keyType:e,valueType:t,...normalizeParams(n)}):new An({type:"record",keyType:string(),valueType:e,...normalizeParams(t)})}var Rn=$constructor("ZodEnum",(e,t)=>{gr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>enumProcessor(e,t,n,a),e.enum=t.entries,e.options=Object.values(t.entries);const n=new Set(Object.keys(t.entries));e.extract=(e,a)=>{const o={};for(const i of e){if(!n.has(i))throw new Error(`Key ${i} not found in enum`);o[i]=t.entries[i]}return new Rn({...t,checks:[],...normalizeParams(a),entries:o})},e.exclude=(e,a)=>{const o={...t.entries};for(const t of e){if(!n.has(t))throw new Error(`Key ${t} not found in enum`);delete o[t]}return new Rn({...t,checks:[],...normalizeParams(a),entries:o})}});function _enum(e,t){return new Rn({type:"enum",entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...normalizeParams(t)})}var Mn=$constructor("ZodTransform",(e,t)=>{hr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>transformProcessor(e,t,n,a),e._zod.parse=(n,a)=>{if("backward"===a.direction)throw new Oe(e.constructor.name);n.addIssue=a=>{if("string"==typeof a)n.issues.push(issue(a,n.value,t));else{const t=a;t.fatal&&(t.continue=!1),t.code??(t.code="custom"),t.input??(t.input=n.value),t.inst??(t.inst=e),n.issues.push(issue(t))}};const o=t.transform(n.value,n);return o instanceof Promise?o.then(e=>(n.value=e,n.fallback=!0,n)):(n.value=o,n.fallback=!0,n)}});function transform(e){return new Mn({type:"transform",transform:e})}var Dn=$constructor("ZodOptional",(e,t)=>{br.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>optionalProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function optional(e){return new Dn({type:"optional",innerType:e})}var On=$constructor("ZodExactOptional",(e,t)=>{yr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>optionalProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function exactOptional(e){return new On({type:"optional",innerType:e})}var $n=$constructor("ZodNullable",(e,t)=>{vr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>nullableProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function nullable(e){return new $n({type:"nullable",innerType:e})}var In=$constructor("ZodDefault",(e,t)=>{Sr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>defaultProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function _default(e,t){return new In({type:"default",innerType:e,get defaultValue(){return"function"==typeof t?t():shallowClone(t)}})}var Nn=$constructor("ZodPrefault",(e,t)=>{xr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>prefaultProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function prefault(e,t){return new Nn({type:"prefault",innerType:e,get defaultValue(){return"function"==typeof t?t():shallowClone(t)}})}var zn=$constructor("ZodNonOptional",(e,t)=>{Cr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>nonoptionalProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function nonoptional(e,t){return new zn({type:"nonoptional",innerType:e,...normalizeParams(t)})}var Ln=$constructor("ZodCatch",(e,t)=>{wr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>catchProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function _catch(e,t){return new Ln({type:"catch",innerType:e,catchValue:"function"==typeof t?t:()=>t})}var jn=$constructor("ZodPipe",(e,t)=>{kr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>pipeProcessor(e,t,n,a),e.in=t.in,e.out=t.out});function pipe(e,t){return new jn({type:"pipe",in:e,out:t})}var Bn=$constructor("ZodReadonly",(e,t)=>{Er.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>readonlyProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function readonly(e){return new Bn({type:"readonly",innerType:e})}var Fn=$constructor("ZodCustom",(e,t)=>{Pr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>customProcessor(e,t,n,a)});function refine(e,t={}){return _refine(Fn,e,t)}function superRefine(e,t){return _superRefine(e,t)}function number(e){return _coercedNumber(xn,e)}var isRecord$1=e=>Boolean(e)&&"object"==typeof e&&!Array.isArray(e),isSupportedPersistenceSchemaVersion=e=>2===Number(e),createEmptyPersistenceSnapshot=()=>({schemaVersion:2,systemSettings:{},affSettings:{defaults:{}},defSettings:{defaults:{},static:{}},cacheSettings:{precache:{}}}),qn=record(string(),unknown()).catch(()=>({})),Un=object({schemaVersion:number().refine(isSupportedPersistenceSchemaVersion),systemSettings:qn,affSettings:object({defaults:qn}).catch(()=>({defaults:{}})),defSettings:object({defaults:qn,static:qn}).catch(()=>({defaults:{},static:{}})),cacheSettings:object({precache:qn}).catch(()=>({precache:{}}))}),normalizePersistenceSnapshot=(e,{assumeCurrentVersion:t=!1}={})=>{const n=t&&isRecord$1(e)&&null==e.schemaVersion?{...e,schemaVersion:2}:e,a=Un.safeParse(n);return a.success?a.data:createEmptyPersistenceSnapshot()},createRuntimePersistenceApi=({persistence:e,systemModel:t,affModel:n,defModel:a,cacheModel:o,serverside:i,syncDebugMode:s,markDirty:l})=>{const c=0,u=26,d={hasStoredSnapshot:!1,sourceKey:e?.key||"nexSys4Settings"},sanitizeSystemSettings=(e={})=>{const{customPromptEnabled:t,prompt:n,...a}=e||{},o=normalizeCommandSeparator(a.commandSeparator);if(o?a.commandSeparator=o:delete a.commandSeparator,a.ss&&"object"==typeof a.ss){const{enabled:e,...t}=a.ss;a.ss=t}return a},normalizePersistedDefPriority=e=>{const t=Number(e);return Number.isInteger(t)?t<c?c:t>u?u:t:c},buildAffDefaultMap=()=>n.list().reduce((e,t)=>(e[t]=n.getDefaultPriority(t),e),{}),countablePriorityNameSet=()=>new Set(n.getCountablePriorityNames?.()||[]),buildDefDefaultMap=()=>Object.entries(a.getDefaultPriorities()).reduce((e,[t,n])=>(e[t]=normalizePersistedDefPriority(n),e),{}),buildDefStaticOverrideMap=()=>({...a.getStaticOverrides?.()||{}}),buildCacheDefaultSnapshot=()=>o.getDesiredPrecache(),isValidServersideAffPriority=e=>{const t=Number(e);return Number.isInteger(t)&&t>=1&&t<=26},normalizeStoredAffDefaults=(e={})=>{const t=countablePriorityNameSet();return Object.entries(e).reduce((e,[a,o])=>{const i="function"==typeof n.normalizePriorityName?n.normalizePriorityName(a):String(a||"").trim().toLowerCase();if(!i)return e;if(t.has(i))return e;const s=n.getDefaultPriority(i);return isValidServersideAffPriority(s)&&!isValidServersideAffPriority(o)?(e[i]=s,e):(e[i]=o,e)},{})},normalizeStoredDefPriorities=(e={})=>Object.entries(e).reduce((e,[t,n])=>(e[t]=normalizePersistedDefPriority(n),e),{}),normalizeStoredDefStatics=(e={})=>Object.entries(e).reduce((e,[t,n])=>(!0!==n&&!1!==n||(e[t]=n),e),{}),buildPersistenceSnapshot=()=>({schemaVersion:2,systemSettings:sanitizeSystemSettings(t.getSettings()),affSettings:{defaults:buildAffDefaultMap()},defSettings:{defaults:buildDefDefaultMap(),static:buildDefStaticOverrideMap()},cacheSettings:{precache:buildCacheDefaultSnapshot()}}),applyStoredSnapshot=(e={})=>{const l=sanitizeSystemSettings(e.systemSettings||{});t.setSettings(l,{setBaseline:!0}),t.setBaselineIntent({ss:l.ss||{}});const c=e.affSettings?.defaults;c&&Object.entries(normalizeStoredAffDefaults(c)).forEach(([e,t])=>{n.setDefaultPriority(e,t,"persistence")});const u=normalizeStoredDefStatics(e.defSettings?.static);Object.entries(u).forEach(([e,t])=>{a.setStatic(e,t,"persistence")});const d=normalizeStoredDefPriorities(e.defSettings?.defaults);Object.entries(d).forEach(([e,t])=>{a.setDefaultPriority(e,t,"persistence")}),e.cacheSettings?.precache&&o.setDesiredPrecache(e.cacheSettings.precache),i.setBaselineFromRuntime(),s()},loadStoredSnapshot=()=>"function"==typeof e.read?e.read():{key:e?.key||"nexSys4Settings",exists:!1,snapshot:e.load()};return{buildPersistenceSnapshot,loadPersistence(){const{key:t,exists:n,snapshot:a}=loadStoredSnapshot();return d.hasStoredSnapshot=Boolean(n),d.sourceKey=t||e?.key||"nexSys4Settings",applyStoredSnapshot(a),{key:d.sourceKey,exists:d.hasStoredSnapshot,snapshot:a}},seedBaselineFromObservedStartup({skipObservedAdoption:e=!1}={}){if(d.hasStoredSnapshot)return!1;if(e)return!1;const o=i.getObserved?.()||{},l=sanitizeSystemSettings({ss:o.settings||{}});Object.keys(l).length&&t.setSettings(l,{setBaseline:!0});const c=countablePriorityNameSet();return Object.entries(o.affPriorities||{}).forEach(([e,t])=>{c.has(String(e||"").toLowerCase())||isValidServersideAffPriority(t)&&n.setDefaultPriority(e,t,"startup-observed-baseline")}),Object.entries(o.defPriorities||{}).forEach(([e,t])=>{a.get(e)&&a.setDefaultPriority(e,normalizePersistedDefPriority(t),"startup-observed-baseline")}),i.setBaselineFromRuntime(),s(),!0},savePersistence(){const t=buildPersistenceSnapshot();return e.save(t),i.setBaselineFromRuntime(),l("persistence-save"),t}}},evaluateBlockCondition=(e,t)=>Array.isArray(e)?e.every(e=>t(e)):t(e),isBlocked=(e=[],t)=>e.some(e=>evaluateBlockCondition(e,t)),isActiveDefensePriority=e=>{const t=Number(e);return Number.isInteger(t)&&t>=1&&t<=25},createDefensePlanner=({defModel:e,balanceModel:t,affModel:n,systemModel:a})=>{const plan=({includeStaticIds:o=[]}={})=>{const i=a.getClass(),s=new Set(o),l=e.list().map(t=>e.get(t)).filter(Boolean).map(t=>({entry:t,priority:e.getPriority(t.id)})).sort((e,t)=>e.priority!==t.priority?e.priority-t.priority:e.entry.order-t.entry.order),c=new Set,u={serverside:[],client:[]};return l.forEach(({entry:a,priority:o})=>{if(!isActiveDefensePriority(o)||c.has(a.id)||a.have)return;if(!e.isAvailableForClass(a.id,i))return;if(a.static&&!s.has(a.id))return;if(isBlocked(a.blocks,e=>n.haveAff(e)))return;if(!a.bals_req.every(e=>t.have(e)))return;a.opps.forEach(e=>c.add(e));const l=a.serverside?u.serverside:u.client;a.command.forEach(e=>{l.push({source:"defense",defense:a.id,command:e,prio:o,serverside:a.serverside,preempt:a.preempt,static:a.static})})}),{serverside:u.serverside,client:u.client,all:[...u.serverside,...u.client]}};return{plan}},dedupeCommandIntents=(e=[])=>{const t=new Map,n=[];return e.forEach(e=>{const a=e?.command,o=t.get(a);if(o)return void(!0===e?.requiresCompletion&&(o.requiresCompletion=!0));const i={...e};t.set(a,i),n.push(i)}),n},createOutputPlanner=({systemModel:e,serverside:t,defensePlanner:n,precachePlanner:a})=>({plan({source:o="prompt",injectedCommands:i=[],suppressedServersideCommands:s=[]}={}){const l=e.getRuntime(),c=t.evaluate({emitCommands:!1,source:o}),u=s.length?c.commands.filter(e=>!s.includes(e)):c.commands,d=t.getStaticDefRequests(),p=[];n.plan({includeStaticIds:Object.keys(d)}).client.forEach(e=>p.push(e)),l.slowMode||l.aeonLocked||a.plan().forEach(e=>p.push(e)),u.forEach(e=>{p.push({source:"serverside",command:e,requiresCompletion:!0})}),i.forEach(e=>{p.push({source:"injected",command:e})});const m=dedupeCommandIntents(p);return{intents:m,commands:m.map(e=>e.command),serversideCommands:u}}}),createPrecachePlanner=({cacheModel:e})=>({plan:()=>e.getPrecacheCommands().map(e=>({source:"precache",command:e,requiresCompletion:!0}))}),createQueueState=()=>Object.entries($).reduce((e,[t,n])=>(e[t]={...deepClone$1(n),id:t,items:[],prepend:[],pending:!1,lastSignature:"",deferred:!1},e),{}),splitCommandValue=(e,t="|")=>{const n=String(t||"|")||"|";return String(e).split(n).map(e=>e.trim()).filter(Boolean)},normalizeCommands=(e,t="|")=>e?Array.isArray(e)?e.flatMap(e=>null==e?[]:splitCommandValue(e,t)).filter(Boolean):splitCommandValue(e,t):[],hasQueuedItems=e=>e.items.length>0||e.prepend.length>0,buildLogicalCommands=e=>[`echo SystemEvent ${e.name}QueueFired`,...e.pre,...e.prepend,...e.items,...e.post].filter(Boolean),clearQueueState=e=>{e.items=[],e.prepend=[],e.pending=!1,e.lastSignature="",e.deferred=!1},resolveQueueId=(e,t)=>{if(e[t])return t;const n=String(t||"").replace(/QueueFired$/i,"").toLowerCase();return Object.keys(e).find(t=>{const a=e[t];return a.name.toLowerCase()===n||a.type.toLowerCase()===n})||null},hasLocalQueueState=(e={})=>(e.items||[]).length>0||(e.prepend||[]).length>0||e.pending||e.deferred||Boolean(e.lastSignature),clearLocalQueueState=e=>{if(!e)return!1;const t=hasLocalQueueState(e);return clearQueueState(e),t},markQueueDeferred=e=>{if(!e)return!1;const t=!e.deferred||!e.pending;return e.deferred=!0,e.pending=!0,t},markQueueAwaitingAck=(e,t)=>{if(!e)return!1;const n=e.lastSignature!==t||!0!==e.pending||!1!==e.deferred;return e.lastSignature=t,e.pending=!0,e.deferred=!1,n},createQueueMutationApi=({state:e,emit:t,flush:n,getSeparator:a,markStateChanged:o=()=>{}})=>{const resolveSeparator=()=>("function"==typeof a?a():"|")||"|",haveSameCommands=(e=[],t=[])=>e.length===t.length&&e.every((e,n)=>e===t[n]),clear=(n,a={})=>{const i=e[n];return!!i&&(!!clearLocalQueueState(i)&&(o(n),t("QueueCleared",{queueId:n,remote:Boolean(a.remote),command:a.command||null}),!0))};return{add(a,i,s={}){const l=e[a];if(!l)return!1;const c=normalizeCommands(i,resolveSeparator());if(!c.length)return!1;let u=!1;return c.forEach(e=>{l.items.includes(e)&&!s.allowDuplicate||(l.items.push(e),u=!0)}),!!u&&(o(a),t("QueueUpdated",{queueId:a,queue:deepClone$1(l)}),!1!==s.autoFlush&&n(a),!0)},prepend(a,i,s={}){const l=e[a];if(!l)return!1;const c=normalizeCommands(i,resolveSeparator());if(!c.length)return!1;let u=!1;for(let e=c.length-1;e>=0;e-=1){const t=c[e];l.prepend.includes(t)&&!s.allowDuplicate||(l.prepend.unshift(t),u=!0)}return!!u&&(o(a),t("QueueUpdated",{queueId:a,queue:deepClone$1(l)}),!1!==s.autoFlush&&n(a),!0)},clear,setPreCommands(n,a=[]){const i=e[n];if(!i)return!1;const s=normalizeCommands(a,resolveSeparator());return!haveSameCommands(i.pre,s)&&(i.pre=s,o(n),t("QueueUpdated",{queueId:n,queue:deepClone$1(i)}),!0)},setPostCommands(n,a=[]){const i=e[n];if(!i)return!1;const s=normalizeCommands(a,resolveSeparator());return!haveSameCommands(i.post,s)&&(i.post=s,o(n),t("QueueUpdated",{queueId:n,queue:deepClone$1(i)}),!0)}}},chunkCommands=(e=[],t=20)=>{const n=Array.isArray(e)?e.filter(Boolean).map(e=>String(e)):null==e||""===e?[]:[String(e)],a=Math.max(1,Number(t||20)),o=[];for(let i=0;i<n.length;i+=a)o.push(n.slice(i,i+a));return o},chunkCommandsWithTrailing=(e=[],{maxEntries:t=20,trailing:n=[]}={})=>{const a=chunkCommands(e,t),o=chunkCommands(n,t).flat();if(!o.length)return a;if(!a.length)return chunkCommands(o,t);const i=a[a.length-1];return i.length+o.length<=Math.max(1,Number(t||20))?(i.push(...o),a):[...a,...chunkCommands(o,t)]},createQueueFlushApi=({state:e,emit:t,send:n,getRuntimeState:a,getSeparator:o,maxEntriesPerSubmission:i,onQueueFired:s,markStateChanged:l=()=>{}})=>{const buildRemoteClearCommand=e=>`clearqueue ${e.type}`,buildStackPlan=(e=[])=>({type:"stackPlan",commands:e.filter(Boolean).map(e=>String(e))}),markExcludedQueuesCleared=(t=[])=>{t.forEach(t=>{const n=e[t];n&&clearLocalQueueState(n)&&l(t)})},deferQueue=(e,n)=>(markQueueDeferred(n)&&l(e),t("QueueDeferred",{queueId:e,queue:deepClone$1(n)}),[]),flush=(s,c={})=>{const u=e[s];if(!u||!hasQueuedItems(u))return[];const d=a?a():{paused:!1,phase:re.RUNNING,settings:{}};if(!isRuntimeReadyPhase(d.phase))return deferQueue(s,u);const p=Boolean(d.settings?.queueWhilePaused);if((d.paused||d.rulesSuspended)&&!p)return deferQueue(s,u);const m=buildLogicalCommands(u),g=m.join("");if(!c.force&&g===u.lastSignature)return[];const h=[],b=[];u.exclusions.forEach(t=>{const n=e[t];n&&hasQueuedItems(n)&&(h.push(buildRemoteClearCommand(n)),b.push(t))});const y="function"==typeof o?o():"|",v=chunkCommands(m,Math.max(1,i-h.length)).map((e,t)=>{const n=`queue ${0===t?"addclear":"add"} ${u.type} ${e.join(y)}`;return t>0||!h.length?buildStackPlan([n]):buildStackPlan([...h,n])});return markQueueAwaitingAck(u,g)&&l(s),markExcludedQueuesCleared(b),n(v,{source:"queue-controller",queueId:s,excludedIds:b}),t("QueueFlushed",{queueId:s,plans:v,signature:g}),v};return{flush,clearQueue:a=>{const o=e[a];if(!o)return!1;const i=buildRemoteClearCommand(o);clearLocalQueueState(o)&&l(a),t("QueueCleared",{queueId:a,remote:!0,command:i});const s=[buildStackPlan([i])];return n(s,{source:"queue-controller",queueId:a,remote:!0,action:"clear-queue"}),s},flushDeferred(){const t=[];return Object.keys(e).forEach(n=>{e[n].deferred&&flush(n,{force:!0}).length&&t.push(n)}),t},flushAll(){const t=[];return Object.keys(e).forEach(e=>{const n=flush(e);n.length&&t.push({queueId:e,plans:n})}),t},acknowledgeSent(n,a={}){const o=resolveQueueId(e,n);if(!o)return!1;const i=e[o];return t("QueueSentAcknowledged",{...a,queueId:o,queueType:i?.type||a.queueType||""}),!0},acknowledgeFired(n){const a=resolveQueueId(e,n);if(!a)return!1;const o=e[a],i=o?deepClone$1(o):null;return clearLocalQueueState(e[a])&&l(a),s?.({queueId:a,queue:i}),t("QueueFiredAcknowledged",{queueId:a}),!0}}},createQueueController=({send:e,getRuntimeState:t,getSeparator:n,maxEntriesPerSubmission:a=20,onQueueFired:o}={})=>{const i=new Set,s=createQueueState();let l=0;const c=new Map,markStateChanged=e=>{l+=1,e&&c.set(e,(c.get(e)??0)+1)},emit=(e,t)=>{i.forEach(n=>n(e,t))},buildQueueSnapshot=(e={})=>({id:e.id,name:e.name,type:e.type,pre:[...e.pre||[]],post:[...e.post||[]],exclusions:[...e.exclusions||[]],items:[...e.items||[]],prepend:[...e.prepend||[]],pending:Boolean(e.pending),lastSignature:e.lastSignature||"",deferred:Boolean(e.deferred)}),u=new Map,getQueueSnapshot=e=>s[e]?(u.has(e)||u.set(e,createSnapshotCache({getVersion:()=>c.get(e)??0,buildSnapshot:()=>buildQueueSnapshot(s[e])})),u.get(e)()):null,d=createSnapshotCache({getVersion:()=>l,buildSnapshot:()=>Object.keys(s).reduce((e,t)=>(e[t]=getQueueSnapshot(t),e),{})}),p=createQueueFlushApi({state:s,emit,send:e,getRuntimeState:t,getSeparator:n,maxEntriesPerSubmission:a,onQueueFired:o,markStateChanged}),m=createQueueMutationApi({state:s,emit,flush:p.flush,getSeparator:n,markStateChanged});return{onChange:e=>(i.add(e),()=>i.delete(e)),listQueues:()=>Object.keys(s),getQueue:e=>getQueueSnapshot(e),snapshot:()=>d(),add:m.add,prepend:m.prepend,clear:m.clear,clearQueue:p.clearQueue,flush:p.flush,flushAll:p.flushAll,flushDeferred:p.flushDeferred,acknowledgeSent:p.acknowledgeSent,acknowledgeFired:p.acknowledgeFired,setPreCommands:m.setPreCommands,setPostCommands:m.setPostCommands}},normalizeRule=(e,t="runtime")=>{if(!e?.id)throw new Error("Rule must include an id");if("function"!=typeof e.evaluate)throw new Error(`Rule "${e.id}" must expose evaluate(context)`);const n=Array.isArray(e.tags)?e.tags.map(e=>String(e).trim().toLowerCase()).filter(Boolean):[];return{id:String(e.id),enabled:!1!==e.enabled,terminal:!0===e.terminal,pack:e.pack||t,tags:n,meta:deepClone$1(e.meta||{}),evaluate:e.evaluate}},stripMasterSwitchSetting=(e={})=>{const{enabled:t,...n}=e||{};return n},mergeOverlay=(e,t={})=>t?(["affPriorities","defPriorities","curePriorities","settings","predictions"].forEach(n=>{if(!t[n])return;const a="settings"===n?stripMasterSwitchSetting(t[n]):t[n];e[n]={...e[n]||{},...a}}),void 0!==t.prioAff&&(e.prioAff=t.prioAff),Array.isArray(t.manualQueue)&&(e.manualQueue=[...t.manualQueue]),t.commands?.length&&(e.commands=[...e.commands||[],...t.commands]),e):e,createEmptyOverlay=()=>({affPriorities:{},defPriorities:{},curePriorities:{},settings:{},predictions:{},commands:[],prioAff:void 0,manualQueue:void 0}),diffRuleActivity=(e,t)=>{const n=[];return e.forEach((e,a)=>{t.has(a)||n.push({...e,from:!0,to:!1})}),t.forEach((t,a)=>{e.has(a)||n.push({...t,from:!1,to:!0})}),n},diffRuleSuspension=(e,t)=>{const n=[];return e.forEach((e,a)=>{e.suspendsCuring&&!t.get(a)?.suspendsCuring&&n.push({...e,from:!0,to:!1})}),t.forEach((t,a)=>{t.suspendsCuring&&!e.get(a)?.suspendsCuring&&n.push({...t,from:!1,to:!0})}),n},createRuleRegistry=(e=[])=>{const t=[],n=new Set,a=new Map,emit=(e,t)=>{n.forEach(n=>{try{n(e,t)}catch(a){console.error("nexSys4 rule registry listener failed",{event:e,error:a})}})},findIndex=e=>t.findIndex(t=>t.id===e),synthesizeDeactivation=(e,t)=>{const n=String(e);if(!a.has(n))return!1;const o=a.get(n);return a.delete(n),emit("RuleDeactivated",{...o,source:t}),!0},addRule=(e,n={})=>{const a=normalizeRule(e,n.pack);return!(findIndex(a.id)>=0)&&(Number.isInteger(n.index)&&n.index>=0&&n.index<t.length?t.splice(n.index,0,a):t.push(a),emit("RuleAdded",{id:a.id,pack:a.pack}),!0)},removeRule=e=>{const n=findIndex(e);if(n<0)return!1;synthesizeDeactivation(e,"removed");const[a]=t.splice(n,1);return emit("RuleRemoved",{id:a.id,pack:a.pack}),!0},setEnabled=(e,n)=>{const a=findIndex(e);return!(a<0)&&(t[a].enabled!==n&&(t[a].enabled=n,n||synthesizeDeactivation(e,"disabled"),emit(n?"RuleEnabled":"RuleDisabled",{id:e}),!0))},setPackEnabled=(e,n)=>{let a=!1;return t.forEach(t=>{t.pack===e&&(a=setEnabled(t.id,n)||a)}),a},loadPack=(e,t=[])=>{let n=!1;return t.forEach(t=>{n=addRule({...t,pack:e},{pack:e})||n}),n&&emit("RulePackLoaded",{packId:e}),n},unloadPack=e=>{const n=t.filter(t=>t.pack===e).map(e=>e.id);return!!n.length&&(n.forEach(e=>removeRule(e)),emit("RulePackUnloaded",{packId:e,count:n.length}),!0)},reorder=(e=[])=>{if(!Array.isArray(e)||!e.length)return!1;const n=new Set(t.map(e=>e.id)),a=new Set(e);if(e.length!==t.length||a.size!==t.length)return!1;if([...n].some(e=>!a.has(e)))return!1;const o=t.reduce((e,t)=>(e[t.id]=t,e),{});return t.length=0,e.forEach(e=>t.push(o[e])),emit("RuleOrderChanged",{order:[...e]}),!0},evaluate=(e={})=>{const n=createEmptyOverlay(),o=[],i=new Map;for(const a of t){if(!a.enabled)continue;const t=a.evaluate(e);if(t&&(o.push(a.id),i.set(a.id,{id:a.id,pack:a.pack,meta:a.meta,suspendsCuring:!0===t.suspendCuring}),mergeOverlay(n,t),a.terminal))break}n.commands=Array.from(new Set(n.commands||[]));const s=diffRuleActivity(a,i),l=diffRuleSuspension(a,i);return a.clear(),i.forEach((e,t)=>a.set(t,e)),{overlay:n,applied:o,transitions:s,suspendTransitions:l,suspendingRules:[...i.values()].filter(e=>e.suspendsCuring).map(e=>e.id)}};return e.forEach(e=>addRule(e,{pack:e.pack||"general"})),{onChange:e=>(n.add(e),()=>n.delete(e)),addRule,removeRule,enableRule:e=>setEnabled(e,!0),disableRule:e=>setEnabled(e,!1),enablePack:e=>setPackEnabled(e,!0),disablePack:e=>setPackEnabled(e,!1),loadPack,unloadPack,reorder,evaluate,list:()=>t.map(e=>({id:e.id,enabled:e.enabled,terminal:e.terminal,isActive:a.has(e.id),suspendsCuring:Boolean(a.get(e.id)?.suspendsCuring),pack:e.pack,tags:[...e.tags],meta:deepClone$1(e.meta)}))}},createSettingCommand=(e,t)=>Object.freeze({commandId:e,buildCommand:t}),Vn=Object.freeze({afflictions:createSettingCommand("curing-afflictions",e=>`curing afflictions ${boolWord(e)}`),defences:createSettingCommand("curing-defences",e=>`curing defences ${boolWord(e)}`),sipping:createSettingCommand("curing-sipping",e=>`curing sipping ${boolWord(e)}`),transmutation:createSettingCommand("curing-transmutation",e=>`curing transmutation ${boolWord(e)}`),sipHealthAt:createSettingCommand("curing-siphealth",e=>`curing siphealth ${e}`),sipManaAt:createSettingCommand("curing-sipmana",e=>`curing sipmana ${e}`),mossHealthAt:createSettingCommand("curing-mosshealth",e=>`curing mosshealth ${e}`),mossManaAt:createSettingCommand("curing-mossmana",e=>`curing mossmana ${e}`),sipPriority:createSettingCommand("curing-priority-mode",e=>`curing priority ${String(e||"health").toLowerCase()}`),focus:createSettingCommand("curing-focus-enabled",e=>`curing focus ${boolWord(e)}`),focusOverHerbs:createSettingCommand("curing-focus-priority-mode",e=>"curing focus "+(e?"first":"second")),tree:createSettingCommand("curing-tree",e=>{const t=String(e||"on").toLowerCase();return["on","off","custom"].includes(t)?`curing tree ${t}`:null}),useVault:createSettingCommand("curing-usevault",e=>`curing usevault ${boolWord(e)}`),clot:createSettingCommand("curing-useclot",e=>`curing useclot ${boolWord(e)}`),clotAt:createSettingCommand("curing-clotat",e=>`curing clotat ${e}`),fallback:createSettingCommand("curing-fallback",e=>`curing fallback ${boolWord(e)}`),kaidoTransmute:createSettingCommand("curing-kaidotransmute",e=>e?"curing kaidotransmute":null),batch:createSettingCommand("curing-batch",e=>`curing batch ${boolWord(e)}`),fracturesAbove:createSettingCommand("curing-healthaffsabove",e=>`curing healthaffsabove ${e}`),manaThreshold:createSettingCommand("curing-manathreshold",e=>`curing manathreshold ${e}`)}),sameArray=(e=[],t=[])=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0},mapDiff=(e={},t={})=>[...new Set([...Object.keys(e),...Object.keys(t)])].filter(n=>e[n]!==t[n]),normalizePredictionMap=(e={})=>Array.isArray(e)?e.reduce((e,t)=>(e[t]=!0,e),{}):{...e},toGamePriorityToken=e=>isServersideAffPriorityNumber(e)?String(Number(e)):String(26),createServersideDiffPlanner=({baseline:e={},getBaseline:t,getAffPriorityCommandName:n,getDefPriorityTokens:a}={})=>{const resolveBaseline=()=>"function"==typeof t?t()||{}:e,resolveAffPriorityCommandName=e=>{if("function"==typeof n){const t=n(e);if(t)return String(t)}return String(e)},resolveDefPriorityTokens=(e,t)=>{if(!isServersideAffPriorityNumber(t))return["reset"];if("function"==typeof a){const n=a(e,Number(t));if(Array.isArray(n)&&n.length)return n.map(e=>String(e));if(null!=n&&!1!==n)return[String(n)]}return[String(Number(t))]},normalizeDesiredDefPriority=e=>"RESET"===e||void 0===e?0:isServersideAffPriorityNumber(e)?Number(e):0,build=({desired:e={},observed:t={}}={})=>{const n=resolveBaseline(),a=n.settings||{},o=n.affPriorities||{},i=[],s=[],l=e.settings||{};mapDiff(l,t.settings||{}).sort().forEach(e=>{const t=Vn[e];if(!t)return;const n=t.buildCommand(l[e]);n&&(i.push(n),s.push(`settings:${e}`))});const c=e.affPriorities||{},u=t.affPriorities||{};!0===e.fullPriorityReset&&(i.push("curing priority reset"),s.push("aff-priority:reset-all"));const resolveDesiredAffPriority=e=>{const t=c[e];return"RESET"===t||void 0===t?o[e]??0:t},d=[...new Set([...Object.keys(c),...Object.keys(u)])].filter(e=>canonicalAffPriority(resolveDesiredAffPriority(e))!==canonicalAffPriority(u[e])).sort().map(e=>[e,toGamePriorityToken(resolveDesiredAffPriority(e))]);if(d.length){const e=d.flatMap(([e,t])=>[resolveAffPriorityCommandName(e),String(t)]);i.push(`curing priority ${e.join(" ")}`),d.forEach(([e])=>s.push(`aff-priority:${e}`))}const p=e.defPriorities||{},m=t.defPriorities||{},g=[...new Set([...Object.keys(p),...Object.keys(m)])].filter(e=>normalizeDesiredDefPriority(p[e])!==Number(m[e]??0)).sort().map(e=>{const t=p[e];return"RESET"===t||void 0===t?[e,["reset"],`def-priority-reset:${e}`]:isServersideAffPriorityNumber(t)?[e,resolveDefPriorityTokens(e,t),`def-priority:${e}`]:[e,["reset"],`def-priority-reset:${e}`]});if(g.length){const e=g.flatMap(([e,t])=>[e,...t]);i.push(`curing priority defence ${e.join(" ")}`),g.forEach(([,,e])=>s.push(e))}const h=e.prioAff;h!==t.prioAff&&(h?(i.push(`curing prioaff ${h}`),s.push(`prioaff:${h}`)):(i.push("curing prioaff none"),s.push("prioaff:clear")));const b=e.manualQueue||[];sameArray(b,t.manualQueue||[])||(i.push("curing queue reset"),b.forEach((e,t)=>{i.push(`curing queue insert ${t+1} ${e}`)}),s.push("manual-queue:reconcile"));const y=normalizePredictionMap(e.predictions),v=normalizePredictionMap(t.predictions);return[...new Set([...Object.keys(y),...Object.keys(v)])].sort().forEach(e=>{const t=Boolean(y[e]);t!==Boolean(v[e])&&(i.push(`${t?"curing predict":"curing unpredict"} ${e}`),s.push(`prediction:${e}`))}),{commands:Array.from(new Set(i)),reasonCodes:s,baseSettings:a}};return{build,getBaseSettings:()=>resolveBaseline().settings||{},getBaseAff:()=>resolveBaseline().affPriorities||{},getBaseDef:()=>resolveBaseline().defPriorities||{}}},Hn=Object.freeze({BALANCE:"balance",EQUILIBRIUM:"equilibrium",ENTITY:"entity",FOCUS:"focus",FREE:"free",WRITHE:"writhe"}),hasAny=(e,t)=>e.haveAnAff(t),hasAll=(e,t)=>e.haveAffs(t),emergencyClassRules=e=>{const t={},n=!e.haveBal(Hn.FOCUS)||e.haveAff("impatience");return t.fitness=e.isClass(["Runewarden","Monk","Blademaster","Infernal","Paladin","Sentinel","Druid"])&&e.haveAff("asthma")&&(hasAny(e,["slickness","hellsight"])&&hasAny(e,["paralysis","clumsiness","sensitivity"])||hasAny(e,["damagedhead","mangledhead","damagedleftleg","damagedrightleg"])&&hasAny(e,["paralysis","clumsiness","sensitivity","slickness","hellsight","disloyalty"]))?100:"RESET",t.dragonheal=e.isClass("Dragon")&&hasAll(e,["asthma","slickness","anorexia"])&&n?100:"RESET",t.dragonflex="RESET",e.isClass("Dragon")&&(hasAll(e,["entangled","webbed"])||hasAny(e,["entangled","webbed"])&&(e.haveBal(Hn.BALANCE)&&!e.haveBal(Hn.WRITHE)||e.haveAff("transfixation")))&&(t.dragonflex=100),t.bloodboil=e.isClass("Magi")&&hasAll(e,["asthma","slickness"])&&(hasAny(e,["hypochondria","paralysis"])||e.haveAff("anorexia")&&n)?100:"RESET",t.dwinnu=e.isClass("Bard")&&(hasAll(e,["webbed","entangled"])||hasAny(e,["webbed","entangled"])&&e.haveAff("transfixation"))?100:"RESET",t.salt=e.isClass("Alchemist")&&(hasAll(e,["asthma","slickness","anorexia"])&&n||hasAll(e,["asthma","slickness","hypochondria"])||hasAll(e,["asthma","slickness","paralysis"]))?100:"RESET",t.shrugging=e.isClass("Serpent")&&(hasAll(e,["asthma","slickness","anorexia"])&&n||hasAll(e,["asthma","slickness","hypochondria"])||hasAll(e,["asthma","slickness","paralysis"]))?100:"RESET",t.fool=e.isClass("Occultist")&&(hasAll(e,["asthma","slickness","anorexia"])&&n||hasAll(e,["asthma","slickness","hypochondria"])||hasAll(e,["asthma","slickness","impatience"]))?100:"RESET",t.alleviate=e.isClass("Blademaster")&&(hasAll(e,["asthma","slickness","anorexia"])&&n||hasAll(e,["asthma","slickness","hypochondria"])||hasAll(e,["asthma","slickness","impatience"]))?100:"RESET",t},createDefaultServersideRulePack=()=>[{id:"aeon-threshold-and-priority",pack:"general",evaluate:e=>e.haveAff("aeon")?{settings:{sipHealthAt:30,sipManaAt:10,mossHealthAt:0,mossManaAt:0,batch:!1,clotAt:5e3},affPriorities:{asthma:3,weariness:4,anorexia:5,impatience:7,paralysis:8}}:null},{id:"focus-balance-priority-shift",pack:"general",evaluate:e=>e.haveBal(Hn.FOCUS)?null:{affPriorities:{stupidity:9,recklessness:12,dizziness:14,shyness:14}}},{id:"scytherus-paralysis",pack:"general",evaluate:e=>hasAll(e,["scytherus","paralysis"])?{affPriorities:{scytherus:2}}:null},{id:"confusion-disrupted",pack:"general",evaluate:e=>hasAll(e,["confusion","disrupted"])&&(e.haveBal(Hn.FOCUS)||e.haveAff("impatience"))&&!e.haveAff("whisperingmadness")?{affPriorities:{confusion:2}}:null},{id:"impatience-snaptrack",pack:"general",evaluate:e=>e.haveAff("impatience")&&e.trackableElapsed("snapTrack")<8e3?{affPriorities:{impatience:2}}:null},{id:"hypochondria-impatience",pack:"general",evaluate:e=>hasAll(e,["impatience","hypochondria"])?{affPriorities:{hypochondria:1}}:e.haveAff("hypochondria")&&e.trackableElapsed("snapTrack")<8e3?{affPriorities:{hypochondria:2}}:null},{id:"slickness-asthma-sensitivity-group",pack:"general",evaluate:e=>{const t=hasAny(e,["sensitivity","clumsiness","weariness","hypochondria"]);return hasAll(e,["slickness","asthma"])&&t&&!e.haveAff("anorexia")?{affPriorities:{slickness:2}}:null}},{id:"asthma-hellsight-slickness",pack:"general",evaluate:e=>{const t=!hasAny(e,["sensitivity","clumsiness","weariness","hypochondria"]);return hasAll(e,["slickness","asthma"])&&t||hasAll(e,["hellsight","asthma"])?{affPriorities:{asthma:2}}:null}},{id:"darkshade-lightwall",pack:"general",evaluate:e=>e.haveAff("darkshade")&&e.affElapsed("darkshade")>1e4&&e.roomHasItem("a lightwall")?{affPriorities:{darkshade:2}}:null},{id:"prone-sensitivity-legdamage",pack:"general",evaluate:e=>hasAll(e,["prone","sensitivity"])&&hasAny(e,["damagedleftleg","damagedrightleg"])?{affPriorities:{sensitivity:2}}:null},{id:"conflagration-burning",pack:"general",evaluate:e=>{if(!e.haveAff("conflagration")||!hasAny(e,["brokenleftleg","brokenrightleg","damagedleftleg","damagedrightleg","mangledleftleg","mangledrightleg"]))return null;const t=hasAny(e,["damagedleftleg","damagedrightleg","mangledleftleg","mangledrightleg"]);return e.haveAff("prone")&&!t?{affPriorities:{burning:7}}:{affPriorities:{burning:4}}}},{id:"cadmus-focus-toggle",pack:"general",evaluate:e=>({settings:{focus:!e.haveAff("cadmuscurse")}})},{id:"scalded-blindness-defence",pack:"general",evaluate:e=>e.haveAff("scalded")?{defPriorities:{blindness:0}}:null},{id:"class-emergency-cures",pack:"general",evaluate:e=>({curePriorities:emergencyClassRules(e)})}],Wn=Object.freeze(["status","affPriorities","defPriorities"]),Gn=Object.freeze({reportingcommands:"reporting",afflictions:"afflictions",defences:"defences",sipping:"sipping",transmutation:"transmutation",siphealth:"sipHealthAt",siphealthat:"sipHealthAt",sipmana:"sipManaAt",sipmanaat:"sipManaAt",mosshealth:"mossHealthAt",mosshealthat:"mossHealthAt",mossmana:"mossManaAt",mossmanaat:"mossManaAt",priority:"sipPriority",sippriority:"sipPriority",focus:"focus",focusoverherbs:"focusOverHerbs",tree:"tree",usevault:"useVault",useclot:"clot",clot:"clot",clotat:"clotAt",clotabove:"clotAbove",fallback:"fallback",kaidotransmute:"kaidoTransmute",customcuringpriority:"customAffPriority",customdefencepriority:"customDefPriority",batch:"batch",healthaffsabove:"fracturesAbove",fracturesabove:"fracturesAbove",manathreshold:"manaThreshold",insomnia:"insomnia"}),Yn=Object.freeze(new Set(["status","enabled"])),createServersideObservationApi=({state:e,affModel:t,defModel:n,systemModel:a,emit:o,markDirty:i,replaceBucket:s,maybeResolveFullPriorityReset:l,normalizeAffPriorityName:c=e=>String(e||"").toLowerCase()})=>{const getMissingStartupFlags=(t=Object.keys(e.startup.flags))=>t.filter(t=>t in e.startup.flags&&!e.startup.flags[t]),u=createSnapshotCache({getVersion:()=>e.startup,buildSnapshot:()=>({...e.startup.flags})}),d=createSnapshotCache({getVersion:()=>e.startup,buildSnapshot:()=>{const e=u(),t=getMissingStartupFlags(Wn);return{ready:Object.values(e).every(Boolean),requiredReady:0===t.length,missingRequired:t,flags:e}}}),markStartupCaptured=t=>t in e.startup.flags&&!e.startup.flags[t]&&(s("startup",{...e.startup,flags:{...e.startup.flags,[t]:!0}}),o("ServersideStartupSnapshotCaptured",{topic:t,flags:u()}),!0),updateObservedSetting=(t,n)=>{if(e.observed.settings[t]!==n){if(s("observed",{...e.observed,settings:{...e.observed.settings,[t]:n}}),e.startup.flags.status){const a=e.derived?.settings?.[t];void 0!==a&&"RESET"!==a||s("sessionBaseline",{...e.sessionBaseline,settings:{...e.sessionBaseline.settings,[t]:n}})}i(`observed-setting:${t}`)}},normalizeCaptureSetName=e=>String(e||"").trim().toLowerCase(),isCaptureSetOwned=e=>{const t=e||"";return""===t||"nexsys4-default"===t},completeObservedAffPrioritySnapshot=()=>{const t=e.capture.affPriorities,n=e.capture.prioritySet||"";if(e.capture.affPriorities=null,e.capture.prioritySet="",t){if(!isCaptureSetOwned(n))return!1;s("observed",{...e.observed,affPriorities:t,prioritySet:n}),l(),i("observed-aff-priority-snapshot")}return markStartupCaptured("affPriorities"),!0},completeObservedDefPrioritySnapshot=()=>{const t=e.capture.defPriorities,n=e.capture.prioritySet||"";if(e.capture.defPriorities=null,e.capture.prioritySet="",t){if(!isCaptureSetOwned(n))return!1;s("observed",{...e.observed,defPriorities:t,prioritySet:n}),i("observed-def-priority-snapshot")}return markStartupCaptured("defPriorities"),!0},updateObservedQueue=(t=[])=>{const n=t||[],a=e.observed.manualQueue,o=n.length===a.length&&n.every((e,t)=>e===a[t]);markStartupCaptured("queue"),o||(s("observed",{...e.observed,manualQueue:[...n]}),i("observed-manual-queue"))},updateObservedPredictions=(t={})=>{const n=t||{},a=e.observed.predictions,o=Object.keys(n),l=o.length===Object.keys(a).length&&o.every(e=>n[e]===a[e]);markStartupCaptured("predictions"),l||(s("observed",{...e.observed,predictions:{...n}}),i("observed-predictions"))},parseStatusLine=({key:e,value:t})=>{const n=String(e||"").trim();if(Yn.has(n.toLowerCase()))return;const a=Gn[n.toLowerCase()]||n;updateObservedSetting(a,normalizeStatusValue(a,t))};return{markStartupCaptured,resetStartupStatus:()=>{const t=Object.keys(e.startup.flags).reduce((e,t)=>(e[t]=!1,e),{});return e.capture.affPriorities=null,e.capture.defPriorities=null,s("startup",{...e.startup,flags:t}),o("ServersideStartupReset",{flags:u()}),!0},isStartupReady:()=>Object.values(e.startup.flags).every(Boolean),getStartupStatus:()=>d(),getMissingStartupFlags,beginObservedAffPrioritySnapshot:(n="")=>(e.capture.affPriorities=buildObservedAffPriorities(t),e.capture.prioritySet=normalizeCaptureSetName(n),!0),completeObservedAffPrioritySnapshot,updateObservedSetting,updateObservedAffPriority:(t,n)=>{const a=e.capture.affPriorities||e.observed.affPriorities,o=String(t||"").toLowerCase(),u=c(t);if(!u)return!1;if(!Object.prototype.hasOwnProperty.call(a,u))return!1;const d=normalizeServersideAffPriority(n);if(e.capture.affPriorities)return o&&o!==u&&delete a[o],a[u]=d,!0;const p={...e.observed.affPriorities};if(o&&o!==u&&delete p[o],p[u]=d,s("observed",{...e.observed,affPriorities:p}),l(),e.startup.flags.affPriorities){const t=e.derived?.affPriorities?.[u];void 0!==t&&"RESET"!==t||s("sessionBaseline",{...e.sessionBaseline,affPriorities:{...e.sessionBaseline.affPriorities,[u]:d}})}return i(`observed-aff-priority:${u}`),!0},beginObservedDefPrioritySnapshot:(t="")=>(e.capture.defPriorities=buildObservedDefPriorities(n,a.getClass()),e.capture.prioritySet=normalizeCaptureSetName(t),!0),completeObservedDefPrioritySnapshot,updateObservedDefPriority:(t,o)=>{const l=e.capture.defPriorities||e.observed.defPriorities,c=String(t||"").toLowerCase(),u=n.get(c);if(!u?.serverside)return!1;if(!n.isAvailableForClass(c,a.getClass()))return!1;const d="RESET"===String(o).toUpperCase()?0:Number(o);if(!Number.isFinite(d))return!1;if(e.capture.defPriorities)return l[c]=d,!0;if(s("observed",{...e.observed,defPriorities:{...e.observed.defPriorities,[c]:d}}),e.startup.flags.defPriorities){const t=e.derived?.defPriorities?.[c];if(void 0===t||"RESET"===t){const t={...e.sessionBaseline.defPriorities};u.static?delete t[c]:t[c]=d,s("sessionBaseline",{...e.sessionBaseline,defPriorities:t})}}return i(`observed-def-priority:${c}`),!0},updateObservedQueue,updateObservedPredictions,parseStatusLine}},createServersideTransientApi=({state:e,trackables:t,now:n,markDirty:a,emit:o,replaceBucket:i,normalizeAffName:s=e=>String(e||"").toLowerCase()})=>({setTrackable(e,i,s={}){const l=String(e||"").trim();if(!l)return!1;t[l]||(t[l]={have:!1,since:0});const c=Boolean(i);if(t[l].have===c)return!1;const u=n();return t[l].have=c,t[l].since=c?u:0,o(c?"TrackableGot":"TrackableLost",{name:l,label:String(s.label||l),have:c,at:u,since:t[l].since,source:String(s.source||"manual")}),a(`trackable:${l}`),!0},setPrioAff(t){const n=t?s(t):null;return e.transient.prioAff!==n&&(i("transient",{...e.transient,prioAff:n}),a("prioaff"),!0)},clearPrioAff:()=>!!e.transient.prioAff&&(i("transient",{...e.transient,prioAff:null}),a("prioaff-clear"),!0),requestPriorityReset:()=>!e.transient.fullPriorityReset&&(i("transient",{...e.transient,fullPriorityReset:!0}),a("priority-reset-request"),!0),requestStaticDefPriorities(t={}){let n=!1;const o={...e.transient.staticDefRequests};return Object.entries(t||{}).forEach(([e,t])=>{const a=String(e||"").trim().toLowerCase(),i=Number(t);!a||!Number.isInteger(i)||i<1||i>25||o[a]!==i&&(o[a]=i,n=!0)}),n&&(i("transient",{...e.transient,staticDefRequests:o}),a("static-def-request")),n},clearStaticDefPriorities(t){const n=Array.isArray(t)?t.map(e=>String(e||"").trim().toLowerCase()).filter(Boolean):Object.keys(e.transient.staticDefRequests);let o=e.transient.staticDefRequests;n.forEach(t=>{Object.prototype.hasOwnProperty.call(o,t)&&(o===e.transient.staticDefRequests&&(o={...e.transient.staticDefRequests}),delete o[t])});const s=i("transient",{...e.transient,staticDefRequests:o});return s&&a("static-def-clear"),s},addPrediction(t){const n=String(t||"").toLowerCase();return!(!n||e.transient.predictions[n])&&(i("transient",{...e.transient,predictions:{...e.transient.predictions,[n]:!0}}),a(`prediction-add:${n}`),!0)},removePrediction(t){const n=String(t||"").toLowerCase();if(!n||!e.transient.predictions[n])return!1;const o={...e.transient.predictions};return delete o[n],i("transient",{...e.transient,predictions:o}),a(`prediction-remove:${n}`),!0},manualQueueAdd(t){const n=String(t||"").toLowerCase();return!(!n||e.transient.manualQueue.includes(n))&&(i("transient",{...e.transient,manualQueue:[...e.transient.manualQueue,n]}),a("manual-queue-add"),!0)},manualQueueInsert(t,n){const o=String(n||"").toLowerCase(),s=Math.max(1,Math.min(20,Number(t||1)));if(!o||e.transient.manualQueue.includes(o))return!1;const l=[...e.transient.manualQueue];return l.splice(s-1,0,o),i("transient",{...e.transient,manualQueue:l}),a("manual-queue-insert"),!0},manualQueueRemove(t){const n=String(t||"").toLowerCase(),o=e.transient.manualQueue.indexOf(n);if(o<0)return!1;const s=[...e.transient.manualQueue];return s.splice(o,1),i("transient",{...e.transient,manualQueue:s}),a("manual-queue-remove"),!0},manualQueueReset:()=>!!e.transient.manualQueue.length&&(i("transient",{...e.transient,manualQueue:[]}),a("manual-queue-reset"),!0)}),shallowCopyDesired=e=>({settings:{...e.settings},affPriorities:{...e.affPriorities},defPriorities:{...e.defPriorities},curePriorities:{...e.curePriorities},manualQueue:[...e.manualQueue||[]],predictions:{...e.predictions},prioAff:e.prioAff??null,fullPriorityReset:Boolean(e.fullPriorityReset),injectedCommands:[...e.injectedCommands||[]],appliedRules:[...e.appliedRules||[]],suspendingRules:[...e.suspendingRules||[]]}),copyRuleTransitionPayload=(e,t)=>({id:e.id,pack:e.pack,meta:e.meta,source:t,suspendsCuring:!0===e.suspendsCuring}),areCommandSequencesEqual=(e=[],t=[])=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0},createServersideEvaluationApi=({state:e,affModel:t,defModel:n,balanceModel:a,systemModel:o,cureTable:i,ruleRegistry:s,diffPlanner:l,sendCommands:c,emit:u,markDirty:d,replaceBucket:p,refreshRulesBucket:m,now:g,trackables:h,options:b})=>{const clearResolvedPending=()=>{const t=b.pendingTimeoutMs||12e3,n=g();let a=e.pending;for(const[o,i]of e.pending.entries())n-i>t&&(a===e.pending&&(a=new Map(e.pending)),a.delete(o));return p("pending",a)},markPendingCommands=(t=[],n={})=>{const a=t.map(e=>normalizeCommand(e)).filter(e=>e&&isServersideCommand(e));if(a.length){const t=g(),n=new Map(e.pending);a.forEach(e=>n.set(e,t)),p("pending",n)}return a.length&&u("ServersidePendingUpdated",{commands:[...a],context:{...n}}),a},filterServersideDefPriorities=(e={})=>{const t=o.getClass();return Object.entries(e||{}).reduce((e,[a,o])=>{const i=n.get(a);return!i?.serverside||i.static?e:n.isAvailableForClass(a,t)?(e[a]=o,e):e},{})},buildRequestedStaticDefPriorities=()=>{const t=o.getClass(),a=e.transient.staticDefRequests||{};let i=a;const removeRequest=e=>{i===a&&(i={...a}),delete i[e]},s=Object.entries(a).reduce((e,[a,o])=>{const i=n.get(a);if(!i?.static)return removeRequest(a),e;if(n.haveDef(a)||!n.isAvailableForClass(a,t))return removeRequest(a),e;if(!i.serverside)return e;const s=n.getPriority(a),l=isServersideAffPriorityNumber(s)?s:o;return!isServersideAffPriorityNumber(l)||Number(l)>=26?(removeRequest(a),e):(e[a]=Number(l),e)},{});return i!==a&&p("transient",{...e.transient,staticDefRequests:i}),s},emitRuleTransitions=(e=[],t)=>{e.forEach(e=>{e.to||u("RuleDeactivated",{...copyRuleTransitionPayload(e,t)})}),e.forEach(e=>{e.to&&u("RuleActivated",{...copyRuleTransitionPayload(e,t)})})},emitRuleSuspendTransitions=(e=[],t)=>{e.forEach(e=>{e.to||u("RuleSuspendDeactivated",{...copyRuleTransitionPayload(e,t)})}),e.forEach(e=>{e.to&&u("RuleSuspendActivated",{...copyRuleTransitionPayload(e,t)})})},resolveDesired=()=>{const i=createServersideContext({affModel:t,defModel:n,balanceModel:a,systemModel:o,trackables:h,now:g}),l=s.evaluate(i);return m?.(),p("derived",l.overlay),p("desired",{settings:{...e.sessionBaseline.settings,...l.overlay.settings},affPriorities:mergeWithResets(e.sessionBaseline.affPriorities,l.overlay.affPriorities),defPriorities:{...mergeWithResets(e.sessionBaseline.defPriorities,filterServersideDefPriorities(l.overlay.defPriorities)),...buildRequestedStaticDefPriorities()},curePriorities:mergeWithResets(e.sessionBaseline.curePriorities,l.overlay.curePriorities),manualQueue:Array.isArray(l.overlay.manualQueue)?[...l.overlay.manualQueue]:[...e.transient.manualQueue],predictions:{...e.transient.predictions,...l.overlay.predictions},prioAff:null!==e.transient.prioAff&&void 0!==e.transient.prioAff?e.transient.prioAff:l.overlay.prioAff||null,fullPriorityReset:e.transient.fullPriorityReset,injectedCommands:l.overlay.commands||[],appliedRules:l.applied,suspendingRules:l.suspendingRules||[]}),{desired:e.desired,evaluation:l}};return{markPendingCommands,maybeResolveFullPriorityReset:()=>!!e.transient.fullPriorityReset&&(!!Object.keys(e.sessionBaseline.affPriorities).every(t=>(e.observed.affPriorities[t]??e.sessionBaseline.affPriorities[t])===e.sessionBaseline.affPriorities[t])&&(p("transient",{...e.transient,fullPriorityReset:!1}),u("ServersideFullPriorityResetResolved",{fullPriorityReset:!1}),!0)),evaluate({emitCommands:t=!0,source:n="prompt"}={}){clearResolvedPending();const{desired:a,evaluation:o}=resolveDesired(),i=l.build({desired:a,observed:e.observed});let s=[...a.injectedCommands,...i.commands].filter(Boolean).filter(t=>!e.pending.has(normalizeCommand(t)));const d=Math.max(1,Number(b.maxCommandsPerCycle||40));let m=e.diagnostics.recoveryCounter;s.length>d&&(s=s.slice(0,d),m+=1);const g=(i.commands||[]).filter(Boolean).filter(t=>!e.pending.has(normalizeCommand(t)));let h=g.length&&areCommandSequencesEqual(e.lastDiffCommands||[],g)?e.diagnostics.commandRepeatCounter+1:0,y=e.diagnostics.desyncCounter;return h>=(b.desyncCommandRepeats||3)&&(y+=1,m+=1,s.push("curing status","curing priority list","curing priority defence list","curing queue list","curing predictions"),h=0),t&&s.length&&(c(s,{source:"serverside-reconcile",reasonCodes:i.reasonCodes,cycleSource:n}),markPendingCommands(s,{source:"serverside-reconcile",reasonCodes:i.reasonCodes,cycleSource:n})),e.lastDiffCommands=[...g],p("diagnostics",{...e.diagnostics,lastCommands:[...s],lastReasons:[...i.reasonCodes],desyncCounter:y,recoveryCounter:m,commandRepeatCounter:h}),e.dirty=!1,u("ServersideEvaluated",{source:n,desired:shallowCopyDesired(a),commands:[...s],reasons:[...i.reasonCodes],suspendingRules:[...o.suspendingRules||[]]}),emitRuleSuspendTransitions(o.suspendTransitions,n),emitRuleTransitions(o.transitions,n),{desired:shallowCopyDesired(a),commands:s,reasons:i.reasonCodes}},setBaselineFromRuntime(){const{enabled:a,...s}=o.getBaselineIntent().ss||{},l=o.getClass(),c={...e.baseline,settings:{...e.baseline.settings,...s},affPriorities:buildBaselineAffPriorities(t),defPriorities:buildBaselineDefPriorities(n,l),curePriorities:buildBaselineCurePriorities(i)};p("baseline",c);const u=buildObservedDefPriorities(n,l),m=Object.keys(u).reduce((t,n)=>(t[n]=e.observed.defPriorities[n]??u[n],t),{});p("observed",{...e.observed,defPriorities:m}),p("sessionBaseline",{settings:{...c.settings},affPriorities:{...c.affPriorities},defPriorities:{...c.defPriorities},curePriorities:{...c.curePriorities}}),d("baseline-refresh")},getCurePriority(t){const n=String(t||"").toLowerCase();return e.desired.curePriorities?.[n]??e.baseline.curePriorities[n]??0},observeOutbound:(e=[])=>markPendingCommands(e,{source:"observe-outbound"})}},createServersideCuringSetApi=({state:e,sendCommands:t,markPendingCommands:n,markDirty:a,markStartupCaptured:o,replaceBucket:i})=>{const issueCuringSetCommand=(e,a)=>{const o=normalizeCommand(e);return!!o&&(t([o],{source:"serverside-curingset",reason:a}),n([o],{source:"serverside-curingset",reason:a}),!0)};return{switchCuringSet(t){const n=normalizeSetName(t);if(!n)return!1;const o=issueCuringSetCommand(`curingset switch ${n}`,"switch");return o&&(i("curingsets",{...e.curingsets,activeSet:n}),a("curingset-switch")),o},deleteCuringSet(e){const t=normalizeSetName(e);return!!t&&issueCuringSetCommand(`curingset delete ${t}`,"delete")},observeActiveCuringSet(t){const n=normalizeSetName(t);if(!n||n===normalizeSetName(e.curingsets.activeSet))return!1;const o=i("curingsets",{...e.curingsets,activeSet:n});return o&&a("curingset-active"),o},observeCuringSets({sets:t=[],activeSet:n="",used:s,limit:l}={}){const c=[...new Set((t||[]).map(e=>normalizeSetName(e)).filter(Boolean))],u=normalizeSetName(n),d=Number(s),p=Number(l),m=Number.isFinite(d)?d:e.curingsets.used,g=Number.isFinite(p)?p:e.curingsets.limit,h=e.curingsets.priorSet||(u&&"nexsys4-default"!==u?u:"");i("curingsets",{...e.curingsets,sets:c,activeSet:u,priorSet:h,used:m,limit:g}),o("curingsets"),a("curingset-observed")}}},Kn=new Set(["RuleActivated","RuleDeactivated","RuleAdded","RuleRemoved","RuleEnabled","RuleDisabled","RulePackLoaded","RulePackUnloaded","RuleOrderChanged"]),Qn=Object.freeze(["baseline","sessionBaseline","derived","desired","observed","transient","pending","diagnostics","curingsets","startup","rules"]),areBucketValuesEqual=(e,t)=>{if(Object.is(e,t))return!0;if(!e||!t||"object"!=typeof e||"object"!=typeof t)return!1;if(e instanceof Date||t instanceof Date)return e instanceof Date&&t instanceof Date&&e.getTime()===t.getTime();if(Array.isArray(e)||Array.isArray(t))return!(!Array.isArray(e)||!Array.isArray(t))&&(e.length===t.length&&e.every((e,n)=>areBucketValuesEqual(e,t[n])));if(e instanceof Map||t instanceof Map){if(!(e instanceof Map&&t instanceof Map))return!1;if(e.size!==t.size)return!1;const n=[...e.entries()],a=[...t.entries()];for(let e=0;e<n.length;e+=1){const[t,o]=n[e],[i,s]=a[e];if(!Object.is(t,i)||!areBucketValuesEqual(o,s))return!1}return!0}const n=Object.keys(e),a=Object.keys(t);return n.length===a.length&&n.every(n=>Object.prototype.hasOwnProperty.call(t,n)&&areBucketValuesEqual(e[n],t[n]))},createServersideController=({adapter:e,dispatchCommands:t,affModel:n,defModel:a,balanceModel:o,systemModel:i,cureTable:s={},options:l={}}={})=>{if("function"!=typeof t)throw new Error("createServersideController requires a dispatchCommands function.");const now=()=>e.now(),c=t,u={snapTrack:{have:!1,since:0}},{enabled:d,...p}=i.getBaselineIntent().ss||{},m=createInitialServersideState({baselineSettings:{afflictions:!0,defences:!0,sipping:!0,transmutation:!0,fallback:!0,kaidoTransmute:!1,...p},affModel:n,defModel:a,systemModel:i,cureTable:s}),g=new Set,emit=(e,t)=>{g.forEach(n=>n(e,t))},markDirty=(e="state-change")=>{m.dirty=!0,emit("ServersideDirty",{reason:e})},replaceBucket=(e,t)=>!areBucketValuesEqual(m[e],t)&&(m[e]=t,!0),h=createRuleRegistry(createDefaultServersideRulePack()),refreshRulesBucket=()=>replaceBucket("rules",h.list());refreshRulesBucket();const b=createServersideDiffPlanner({getBaseline:()=>m.baseline,getAffPriorityCommandName:"function"==typeof n?.formatPriorityCommandName?e=>n.formatPriorityCommandName(e):void 0,getDefPriorityTokens:(e,t)=>{const n=[String(Number(t))];return!0===a.get(e)?.preempt&&n.push("preempt"),n}}),y="function"==typeof n?.normalizeName?e=>n.normalizeName(e):e=>String(e||"").toLowerCase(),v="function"==typeof n?.normalizePriorityName?e=>n.normalizePriorityName(e):e=>String(e||"").toLowerCase(),S=createServersideEvaluationApi({state:m,affModel:n,defModel:a,balanceModel:o,systemModel:i,cureTable:s,ruleRegistry:h,diffPlanner:b,sendCommands:c,emit,markDirty,replaceBucket,refreshRulesBucket,now,trackables:u,options:l}),x=createServersideObservationApi({state:m,affModel:n,defModel:a,systemModel:i,emit,markDirty,replaceBucket,maybeResolveFullPriorityReset:S.maybeResolveFullPriorityReset,normalizeAffPriorityName:v}),C=createServersideTransientApi({state:m,trackables:u,now,markDirty,emit,replaceBucket,normalizeAffName:y}),w=createServersideCuringSetApi({state:m,sendCommands:c,markPendingCommands:S.markPendingCommands,markDirty,markStartupCaptured:x.markStartupCaptured,replaceBucket}),requestSnapshotSync=()=>c(["curing status","curing priority list","curing queue list","curing predictions","curingset list","curing priority defence list"],{source:"serverside-snapshot-sync"}),applyLifecycleChange=e=>(e&&markDirty("rule-lifecycle"),e);h.onChange((e,t)=>{refreshRulesBucket(),Kn.has(e)?emit(e,t):markDirty("rule-engine-change")});const copyRecord=(e={})=>({...e||{}}),copyArray=(e=[])=>[...e||[]],copyRuleOverlay=(e={})=>({affPriorities:copyRecord(e.affPriorities),defPriorities:copyRecord(e.defPriorities),curePriorities:copyRecord(e.curePriorities),settings:copyRecord(e.settings),predictions:copyRecord(e.predictions),commands:copyArray(e.commands),prioAff:e.prioAff,manualQueue:Array.isArray(e.manualQueue)?[...e.manualQueue]:void 0}),copyDesiredSnapshot=(e={})=>({settings:copyRecord(e.settings),affPriorities:copyRecord(e.affPriorities),defPriorities:copyRecord(e.defPriorities),curePriorities:copyRecord(e.curePriorities),manualQueue:copyArray(e.manualQueue),predictions:copyRecord(e.predictions),prioAff:e.prioAff??null,fullPriorityReset:Boolean(e.fullPriorityReset),injectedCommands:copyArray(e.injectedCommands),appliedRules:copyArray(e.appliedRules),suspendingRules:copyArray(e.suspendingRules)}),copyObservedSnapshot=(e={})=>({settings:copyRecord(e.settings),affPriorities:copyRecord(e.affPriorities),defPriorities:copyRecord(e.defPriorities),curePriorities:copyRecord(e.curePriorities),prioAff:e.prioAff??null,manualQueue:copyArray(e.manualQueue),predictions:copyRecord(e.predictions),prioritySet:e.prioritySet||""}),copyTransientSnapshot=(e={})=>({prioAff:e.prioAff??null,manualQueue:copyArray(e.manualQueue),predictions:copyRecord(e.predictions),staticDefRequests:copyRecord(e.staticDefRequests),fullPriorityReset:Boolean(e.fullPriorityReset)}),copyDiagnosticsSnapshot=(e={})=>({lastCommands:copyArray(e.lastCommands),lastReasons:copyArray(e.lastReasons),desyncCounter:Number(e.desyncCounter||0),recoveryCounter:Number(e.recoveryCounter||0),commandRepeatCounter:Number(e.commandRepeatCounter||0)}),copyCuringSetSnapshot=(e={})=>({sets:copyArray(e.sets),activeSet:e.activeSet||"",priorSet:e.priorSet||"",used:Number(e.used||0),limit:Number(e.limit||0)}),copyRulesSnapshot=(e=[])=>(e||[]).map(e=>({id:e.id,enabled:e.enabled,terminal:e.terminal,isActive:e.isActive,suspendsCuring:Boolean(e.suspendsCuring),pack:e.pack,tags:Array.isArray(e.tags)?[...e.tags]:[],meta:deepClone$1(e.meta||{})})),k=createSnapshotCache({getVersion:()=>m.baseline,buildSnapshot:()=>({settings:copyRecord(m.baseline.settings),affPriorities:copyRecord(m.baseline.affPriorities),defPriorities:copyRecord(m.baseline.defPriorities),curePriorities:copyRecord(m.baseline.curePriorities)})}),E=createSnapshotCache({getVersion:()=>m.sessionBaseline,buildSnapshot:()=>({settings:copyRecord(m.sessionBaseline.settings),affPriorities:copyRecord(m.sessionBaseline.affPriorities),defPriorities:copyRecord(m.sessionBaseline.defPriorities),curePriorities:copyRecord(m.sessionBaseline.curePriorities)})}),P=createSnapshotCache({getVersion:()=>m.derived,buildSnapshot:()=>copyRuleOverlay(m.derived)}),T=createSnapshotCache({getVersion:()=>m.desired,buildSnapshot:()=>copyDesiredSnapshot(m.desired)}),R=createSnapshotCache({getVersion:()=>m.observed,buildSnapshot:()=>copyObservedSnapshot(m.observed)}),M=createSnapshotCache({getVersion:()=>m.transient,buildSnapshot:()=>copyTransientSnapshot(m.transient)}),D=createSnapshotCache({getVersion:()=>m.pending,buildSnapshot:()=>[...m.pending.entries()]}),O=createSnapshotCache({getVersion:()=>m.diagnostics,buildSnapshot:()=>copyDiagnosticsSnapshot(m.diagnostics)}),$=createSnapshotCache({getVersion:()=>m.curingsets,buildSnapshot:()=>copyCuringSetSnapshot(m.curingsets)}),I={baseline:k,sessionBaseline:E,derived:P,desired:T,observed:R,transient:M,pending:D,diagnostics:O,curingsets:$,startup:createSnapshotCache({getVersion:()=>m.startup,buildSnapshot:()=>({flags:copyRecord(m.startup.flags)})}),rules:createSnapshotCache({getVersion:()=>m.rules,buildSnapshot:()=>copyRulesSnapshot(m.rules)})};let N=null;const getSnapshot=()=>{const e=Qn.reduce((e,t)=>(e[t]=I[t](),e),{});return N&&Qn.every(t=>N[t]===e[t])||(N=deepFreeze(e)),N},acknowledgeCommand=e=>acknowledgeCommands([e]),acknowledgeCommands=(e=[])=>{let t=m.pending;return e.forEach(e=>{const n=normalizeCommand(e);n&&t.has(n)&&(t===m.pending&&(t=new Map(m.pending)),t.delete(n))}),replaceBucket("pending",t)};return{onChange:e=>(g.add(e),()=>g.delete(e)),markDirty,evaluate:S.evaluate,isDirty:()=>m.dirty,getTransientPrioAff:()=>m.transient.prioAff,getStaticDefRequests:()=>M().staticDefRequests,getObserved:()=>R(),getCuringSets:()=>$(),snapshot:()=>getSnapshot(),isStartupReady:x.isStartupReady,getStartupStatus:x.getStartupStatus,getMissingStartupFlags:x.getMissingStartupFlags,markStartupCaptured:x.markStartupCaptured,resetStartupStatus:x.resetStartupStatus,setBaselineFromRuntime:S.setBaselineFromRuntime,getCurePriority:S.getCurePriority,requestSnapshotSync,beginObservedAffPrioritySnapshot:x.beginObservedAffPrioritySnapshot,completeObservedAffPrioritySnapshot:x.completeObservedAffPrioritySnapshot,updateObservedSetting:x.updateObservedSetting,updateObservedAffPriority:x.updateObservedAffPriority,beginObservedDefPrioritySnapshot:x.beginObservedDefPrioritySnapshot,completeObservedDefPrioritySnapshot:x.completeObservedDefPrioritySnapshot,updateObservedDefPriority:x.updateObservedDefPriority,updateObservedQueue:x.updateObservedQueue,updateObservedPredictions:x.updateObservedPredictions,parseStatusLine:x.parseStatusLine,setTrackable:C.setTrackable,setPrioAff:C.setPrioAff,clearPrioAff:C.clearPrioAff,requestPriorityReset:C.requestPriorityReset,requestStaticDefPriorities:C.requestStaticDefPriorities,clearStaticDefPriorities:C.clearStaticDefPriorities,addPrediction:C.addPrediction,removePrediction:C.removePrediction,manualQueueAdd:C.manualQueueAdd,manualQueueInsert:C.manualQueueInsert,manualQueueRemove:C.manualQueueRemove,manualQueueReset:C.manualQueueReset,switchCuringSet:w.switchCuringSet,deleteCuringSet:w.deleteCuringSet,observeCuringSets:w.observeCuringSets,observeActiveCuringSet:w.observeActiveCuringSet,acknowledgeCommand,acknowledgeCommands,markPendingCommands:S.markPendingCommands,observeOutbound:S.observeOutbound,lifecycle:{add:(e,t)=>applyLifecycleChange(h.addRule(e,t)),remove:e=>applyLifecycleChange(h.removeRule(e)),enable:e=>applyLifecycleChange(h.enableRule(e)),disable:e=>applyLifecycleChange(h.disableRule(e)),enablePack:e=>applyLifecycleChange(h.enablePack(e)),disablePack:e=>applyLifecycleChange(h.disablePack(e)),load:(e,t)=>applyLifecycleChange(h.loadPack(e,t)),unload:e=>applyLifecycleChange(h.unloadPack(e)),reorder:e=>applyLifecycleChange(h.reorder(e)),list:()=>h.list()}}},createCommandDispatcher=({adapter:e}={})=>{const t=[],n=200,isDebugEnabled=()=>"function"==typeof e?.isDebugEnabled&&e.isDebugEnabled(),normalizeCommands=(e=[])=>Array.isArray(e)?e.filter(Boolean).map(e=>String(e)):null==e||""===e?[]:[String(e)],resolveSeparator=()=>("function"==typeof e?.getCommandSeparator?e.getCommandSeparator():"|")||"|",normalizeStackPlan=e=>{if(e&&"object"==typeof e&&!Array.isArray(e)){if("stackPlan"!==e.type)return null;const t=normalizeCommands(e.commands);return t.length?{type:"stackPlan",commands:t}:null}const t=normalizeCommands(e);return t.length?{type:"stackPlan",commands:t}:null},normalizeStackPlans=(e=[])=>{if(Array.isArray(e))return e.map(normalizeStackPlan).filter(Boolean);const t=normalizeStackPlan(e);return t?[t]:[]},serializeStackPlan=e=>e.commands.join(resolveSeparator()),recordDispatch=({mode:a,commands:o=[],context:i={},stackIndex:s=1,stackCount:l=1,stackPlan:c=null}={})=>{const u=normalizeCommands(o);if(!u.length)return[];const d={mode:a,commands:[...u],context:{...i},at:e.now(),stackIndex:s,stackCount:l,stackPlan:c?{type:c.type,commands:[...c.commands]}:null};return t.push(d),!isDebugEnabled()&&t.length>n&&t.splice(0,t.length-n),u},sendCommands=(t=[],n={})=>{const a=recordDispatch({mode:"commands",commands:t,context:n});return a.length?(e.send(a,n),a):[]};return{send:sendCommands,sendCommands,sendStackPlan:(t=[],n={})=>{const a=normalizeStackPlans(t);return a.length?(a.forEach((t,o)=>{const i={...n,stackIndex:o+1,stackCount:a.length};recordDispatch({mode:"stack-plan",commands:t.commands,context:i,stackIndex:o+1,stackCount:a.length,stackPlan:t}),e.send(serializeStackPlan(t),i)}),a.map(e=>({type:e.type,commands:[...e.commands]}))):[]},normalizeCommands,history:()=>t.map(e=>({mode:e.mode,commands:[...e.commands],context:{...e.context},at:e.at,stackIndex:e.stackIndex,stackCount:e.stackCount,stackPlan:e.stackPlan?{type:e.stackPlan.type,commands:[...e.stackPlan.commands]}:null}))}},Zn=Object.freeze({freeQueue:[{balanceId:Hn.BALANCE,minDurationMs:250},{balanceId:Hn.EQUILIBRIUM,minDurationMs:250}],fullQueue:[{balanceId:Hn.BALANCE,minDurationMs:250},{balanceId:Hn.EQUILIBRIUM,minDurationMs:250}],classQueue:[{balanceId:Hn.ENTITY,minDurationMs:500}]}),createQueueFiredSideEffects=({balanceModel:e,now:t})=>({queueId:n})=>{const a=Zn[n]||[];if(!a.length)return[];const o=t();return a.filter(({balanceId:t,minDurationMs:n})=>!1===e.have(t)&&e.computeDurationMs(t)>Number(n||0)).map(({balanceId:t})=>(e.restartLossTimer(t,`queue-fired-resync:${n}`,o),t))},createDomainControllers=({adapter:e,seedData:t,options:n={},now:a,models:o})=>{const{systemModel:i,affModel:s,balanceModel:l,defModel:c,cacheModel:u}=o,d=createCommandDispatcher({adapter:e}),p=createQueueFiredSideEffects({balanceModel:l,now:a}),m=createQueueController({send:d.sendStackPlan,getRuntimeState:()=>{const e=i.getRuntime();return{paused:e.paused,phase:e.phase,settings:i.getSettings()}},getSeparator:()=>i.getSettings().commandSeparator,maxEntriesPerSubmission:Number(n.maxEntriesPerSubmission||20),onQueueFired:p}),g=createServersideController({adapter:e,dispatchCommands:d.sendCommands,affModel:s,defModel:c,balanceModel:l,systemModel:i,cureTable:t.cureTable,options:{maxCommandsPerCycle:Number(n.maxSsCommandsPerCycle||40)}}),h=createDefensePlanner({defModel:c,balanceModel:l,affModel:s,systemModel:i}),b=createPrecachePlanner({cacheModel:u});return{commandDispatcher:d,queueController:m,serverside:g,defensePlanner:h,precachePlanner:b,outputPlanner:createOutputPlanner({systemModel:i,serverside:g,defensePlanner:h,precachePlanner:b})}},secondsToMs$1=e=>{const t=Number(e);return Number.isFinite(t)?Math.max(0,Math.round(1e3*t)):0},msToSeconds$1=e=>{const t=Number(e);return Number.isFinite(t)?t/1e3:0},createBalanceState=(e={})=>{const t={};return Object.entries(e||{}).forEach(([e,n])=>{t[e]={id:e,have:!0,baseDurationMs:secondsToMs$1(n.length),config:deepFreeze(deepClone$1(n||{})),lastLostAtMs:0,lastGotAtMs:0,activeDurationMs:0,expectedReadyAtMs:0,lastRecoveredDurationMs:0,lastServerDurationMs:0,callbacks:{},timer:null}}),t},createBalancePayload=(e,t={})=>({id:e.id,have:e.have,baseDurationMs:e.baseDurationMs,lastLostAtMs:e.lastLostAtMs,lastGotAtMs:e.lastGotAtMs,activeDurationMs:e.activeDurationMs,expectedReadyAtMs:e.expectedReadyAtMs,lastRecoveredDurationMs:e.lastRecoveredDurationMs,lastServerDurationMs:e.lastServerDurationMs,...t}),createBalanceMutationApi=({state:e,emit:t,now:n,setTimeoutFn:a,clearTimeoutFn:o,computeDurationMs:i})=>{const clearTimer=e=>{e.timer&&(o?.(e.timer),e.timer=null)},normalizeDurationMs=(e={},t=0)=>Number.isFinite(Number(e.durationMs))?Math.max(0,Math.round(Number(e.durationMs))):Number.isFinite(Number(e.durationSeconds))?secondsToMs$1(e.durationSeconds):Math.max(0,Math.round(Number(t)||0)),s=1e3,scheduleRecovery=(e,t)=>{clearTimer(e),!a||e.have||e.expectedReadyAtMs<=0||(e.timer=a(()=>{gain(e.id,"timer",n())},Math.max(0,e.expectedReadyAtMs+s-t)))},applyServerDuration=(e,t)=>{e.lastServerDurationMs=t},emitDurationObserved=(e,n,a,o)=>{t("BalanceDurationObserved",createBalancePayload(e,{source:o,atMs:a,durationMs:n,durationSeconds:msToSeconds$1(n)}))},createTimingPayload=(e,t,n,a)=>createBalancePayload(e,{reason:t,atMs:n,durationMs:a,durationSeconds:msToSeconds$1(a)});function gain(a,o="manual",i=n()){const s=e[a];if(!s||s.have)return!1;const l=s.activeDurationMs;return s.have=!0,s.lastGotAtMs=i,s.lastRecoveredDurationMs=Math.max(0,i-s.lastLostAtMs),s.activeDurationMs=0,s.expectedReadyAtMs=0,clearTimer(s),s.callbacks.onStop?.(s),t("BalanceGot",createTimingPayload(s,o,i,s.lastRecoveredDurationMs||l)),!0}const lose=(a,o="manual",s=n(),l={})=>{const c=e[a];if(!c||!c.have)return!1;const u=normalizeDurationMs(l,i(a));return c.have=!1,c.lastLostAtMs=s,c.activeDurationMs=u,c.expectedReadyAtMs=u>0?s+u:0,!0===l.serverDuration&&applyServerDuration(c,u),c.callbacks.onStart?.(c),!1!==l.autoRegain?scheduleRecovery(c,s):clearTimer(c),t("BalanceLost",createTimingPayload(c,o,s,u)),!0},observeServerUse=(t,a,o={})=>{const i=e[t],s=secondsToMs$1(a);if(!i||s<=0)return!1;const l=o.atMs??o.at??n(),c=String(o.source||"serverside-duration");if(i.have){const e=lose(t,c,l,{durationMs:s,serverDuration:!0,autoRegain:o.autoRegain});return e&&emitDurationObserved(i,s,l,c),e}return applyServerDuration(i,s),i.activeDurationMs=s,i.expectedReadyAtMs=i.lastLostAtMs+s,!1!==o.autoRegain?scheduleRecovery(i,l):clearTimer(i),emitDurationObserved(i,s,l,c),!0};return{gain,lose,restartLossTimer:(a,o="manual",s=n(),l={})=>{const c=e[a];if(!c||c.have)return!1;const u=normalizeDurationMs(l,i(a));return c.lastLostAtMs=s,c.activeDurationMs=u,c.expectedReadyAtMs=u>0?s+u:0,!0===l.serverDuration&&applyServerDuration(c,u),!1!==l.autoRegain?scheduleRecovery(c,s):clearTimer(c),t("BalanceLossTimerRestarted",createTimingPayload(c,o,s,u)),!0},observeServerUse,reset(a,o="reset"){const i=e[a];return!!i&&(clearTimer(i),i.have=!0,i.lastGotAtMs=n(),i.activeDurationMs=0,i.expectedReadyAtMs=0,i.callbacks.onReset?.(i),t("BalanceReset",createBalancePayload(i,{reason:o})),!0)},setCallback(t,n={}){const a=e[t];return!!a&&(a.callbacks={...a.callbacks,...n},!0)},applyVitals(t={}){const a=toParsedGmcpVitals(t);a.balancePatches.forEach(({id:e,have:t})=>{if(!e||void 0===t)return;const a=n();t?gain(e,"gmcp-vitals",a):lose(e,"gmcp-vitals",a)}),a.resourceStats.forEach(({key:t,balanceState:a})=>{e[t]&&void 0!==a&&(a?gain(t,"gmcp-charstat",n()):lose(t,"gmcp-charstat",n()))})},dispose(){Object.values(e).forEach(clearTimer)}}},createBalanceQueryApi=({state:e,now:t,haveAff:n,getVersion:a=()=>0,getEntryVersion:o=()=>a()})=>{const buildEntrySnapshot=(e={})=>({id:e.id,have:e.have,baseDurationMs:e.baseDurationMs,baseDurationSeconds:msToSeconds$1(e.baseDurationMs),config:e.config,lastLostAtMs:e.lastLostAtMs,lastGotAtMs:e.lastGotAtMs,activeDurationMs:e.activeDurationMs,activeDurationSeconds:msToSeconds$1(e.activeDurationMs),expectedReadyAtMs:e.expectedReadyAtMs,lastRecoveredDurationMs:e.lastRecoveredDurationMs,lastRecoveredDurationSeconds:msToSeconds$1(e.lastRecoveredDurationMs),lastServerDurationMs:e.lastServerDurationMs,lastServerDurationSeconds:msToSeconds$1(e.lastServerDurationMs)}),i=new Map,getEntrySnapshot=t=>e[t]?(i.has(t)||i.set(t,createSnapshotCache({getVersion:()=>o(t),buildSnapshot:()=>buildEntrySnapshot(e[t])})),i.get(t)()):null,s=createSnapshotCache({getVersion:a,buildSnapshot:()=>Object.keys(e).reduce((e,t)=>(e[t]=getEntrySnapshot(t),e),{})}),computeDurationMs=t=>{const a=e[t];if(!a)return 0;let o=Number(a.baseDurationMs||0);const i=a.config.aff_modifiers||{};return Object.entries(i).forEach(([e,t])=>{if(!n(e))return;const a=Number(t.multiplier??1),i=secondsToMs$1(t.offset??0);o=Math.round(o*a+i)}),Math.max(0,o)},elapsedMs=(n,a=t())=>{const o=e[n];return o?o.have?Math.max(0,a-o.lastGotAtMs):Math.max(0,a-o.lastLostAtMs):0},remainingMs=(n,a=t())=>{const o=e[n];return!o||o.have?0:o.expectedReadyAtMs>0?Math.max(0,o.expectedReadyAtMs-a):Math.max(0,o.activeDurationMs-elapsedMs(n,a))},timing=(n,a=t())=>{const o=e[n];if(!o)return null;const i=elapsedMs(n,a),s=remainingMs(n,a),l=computeDurationMs(n);return{id:o.id,have:o.have,atMs:a,elapsedMs:i,elapsedSeconds:msToSeconds$1(i),remainingMs:s,remainingSeconds:msToSeconds$1(s),baseDurationMs:o.baseDurationMs,baseDurationSeconds:msToSeconds$1(o.baseDurationMs),computedDurationMs:l,computedDurationSeconds:msToSeconds$1(l),activeDurationMs:o.activeDurationMs,activeDurationSeconds:msToSeconds$1(o.activeDurationMs),expectedReadyAtMs:o.expectedReadyAtMs,lastLostAtMs:o.lastLostAtMs,lastGotAtMs:o.lastGotAtMs,lastRecoveredDurationMs:o.lastRecoveredDurationMs,lastRecoveredDurationSeconds:msToSeconds$1(o.lastRecoveredDurationMs),lastServerDurationMs:o.lastServerDurationMs,lastServerDurationSeconds:msToSeconds$1(o.lastServerDurationMs)}};return{list:()=>Object.keys(e),snapshot:()=>s(),get:e=>getEntrySnapshot(e),have:t=>Boolean(e[t]?.have),elapsed:elapsedMs,elapsedMs,elapsedSeconds:(e,n=t())=>msToSeconds$1(elapsedMs(e,n)),remaining:remainingMs,remainingMs,remainingSeconds:(e,n=t())=>msToSeconds$1(remainingMs(e,n)),timing,computeDuration:computeDurationMs,computeDurationMs,computeDurationSeconds:e=>msToSeconds$1(computeDurationMs(e))}},createBalanceModel=({balanceTable:e,now:t,setTimeoutFn:n,clearTimeoutFn:a,haveAff:o=()=>!1}={})=>{const i=createBalanceState(e),s=new Set;let l=0;const c=new Map,emit=(e,t)=>{l+=1,t?.id&&c.set(t.id,(c.get(t.id)??0)+1),s.forEach(n=>n(e,t))},u=createBalanceQueryApi({state:i,now:t,haveAff:o,getVersion:()=>l,getEntryVersion:e=>c.get(e)??0}),d=createBalanceMutationApi({state:i,emit,now:t,setTimeoutFn:n,clearTimeoutFn:a,computeDurationMs:u.computeDurationMs});return{onChange:e=>(s.add(e),()=>s.delete(e)),list:u.list,snapshot:u.snapshot,get:u.get,have:u.have,elapsed:u.elapsed,elapsedMs:u.elapsedMs,elapsedSeconds:u.elapsedSeconds,remaining:u.remaining,remainingMs:u.remainingMs,remainingSeconds:u.remainingSeconds,timing:u.timing,computeDuration:u.computeDuration,computeDurationMs:u.computeDurationMs,computeDurationSeconds:u.computeDurationSeconds,gain:d.gain,lose:d.lose,restartLossTimer:d.restartLossTimer,observeServerUse:d.observeServerUse,reset:d.reset,setCallback:d.setCallback,applyVitals:d.applyVitals,dispose:d.dispose}},asSet=(e={})=>Array.isArray(e)?new Set(e.map(e=>String(e).toLowerCase())):new Set(Object.keys(e).map(e=>String(e).toLowerCase())),Xn=0,Jn=1,createAfflictionReference=(e,t={})=>{const n=String(e||"").trim().toLowerCase();if(!n)return{raw:n,name:n,count:null,hasExplicitCount:!1,isCountable:!1};if(t[n])return{raw:n,name:n,count:null,hasExplicitCount:!1,isCountable:!0};const a=n.match(/^(.*?)(?:\s*\((\d+)\)|(\d+))$/),o=Number(a?.[2]??a?.[3]),i=a?.[1]?.trim();return a&&t[i]?{raw:n,name:i,count:o,hasExplicitCount:!0,isCountable:!0}:{raw:n,name:n,count:null,hasExplicitCount:!1,isCountable:!1}},normalizeAfflictionName=(e,t={})=>createAfflictionReference(e,t).name,normalizeAfflictionPriorityName=(e,t={})=>{const n=createAfflictionReference(e,t);return n.isCountable&&n.hasExplicitCount&&Number(n.count)>1?`${n.name}${n.count}`:n.name},formatAfflictionPriorityCommandName=(e,t={})=>{const n=createAfflictionReference(e,t);return n.isCountable?n.hasExplicitCount?`${n.name}${n.count}`:`${n.name}1`:n.name},createAffEntry=(e,t,n,a=null)=>({name:e,have:!1,count:0,min:Number(a?.min??Xn),max:Number(a?.max??Jn),since:0,lastChangeAt:0,order:t,defaultPriority:n,priorityOverride:null,timer:null}),createInitialAfflictionState=(e={})=>{const t=e.types?.countable||{},n=[...e.list||[]].reduce((e,n)=>{const a=normalizeAfflictionName(n,t);return a&&!e.includes(a)&&e.push(a),e},[]),a=Object.entries(e.prios||{}).reduce((e,[n,a])=>{const o=normalizeAfflictionName(n,t);return o&&(e[o]=a),e},{}),o={};return n.forEach((e,n)=>{o[e]=createAffEntry(e,n,a[e]??100,t[e]||null)}),{list:n,defaultPrios:a,state:o,timedConfig:e.types?.timed||{},countableConfig:t,uncurableSet:asSet(e.types?.uncurable||{})}},ensureAffEntry=(e,t,n={},a)=>{const o=normalizeAfflictionName(a,n);return e[o]||(e[o]=createAffEntry(o,Object.keys(e).length,t[o]??100,n[o]||null)),e[o]},toPriorityNumber=e=>{const t=Number(e);return Number.isFinite(t)?t:null},getPriorityValue=e=>e?e.priorityOverride??e.defaultPriority:null,getDefaultPriorityValue=e=>e?.defaultPriority??null,setPriorityValue=(e,t)=>e.priorityOverride===t?{changed:!1,priority:t}:(e.priorityOverride=t,{changed:!0,priority:t}),resetPriorityValue=e=>{const t=e.defaultPriority;return null===e.priorityOverride||void 0===e.priorityOverride?{changed:!1,priority:t}:(e.priorityOverride=null,{changed:!0,priority:t})},setDefaultPriorityValue=(e,t,{shouldSyncCurrentPriorityToDefault:n=e=>null===e.priorityOverride||void 0===e.priorityOverride,syncCurrentPriorityToDefault:a=()=>{}}={})=>{const o=e.defaultPriority;if(o===t)return{changed:!1,currentChanged:!1,priority:t,previousDefaultPriority:o};const i=n(e);return e.defaultPriority=t,i&&a(e,t),{changed:!0,currentChanged:i,priority:t,previousDefaultPriority:o}},createAfflictionPriorityApi=({state:e,defaultPrios:t,countableConfig:n,emit:a})=>{const getEntry=(a,{ensure:o=!1}={})=>o?ensureAffEntry(e,t,n,a):e[normalizeAfflictionName(a,n)]||null;return{ensureAff:e=>getEntry(e,{ensure:!0}),getPriority(e){const t=getEntry(e);return t?getPriorityValue(t):100},getDefaultPriority(e){const t=getEntry(e);return t?getDefaultPriorityValue(t):100},setPriority(e,t,n="manual"){const o=toPriorityNumber(t);if(null===o)return!1;const i=getEntry(e,{ensure:!0}),s=setPriorityValue(i,o);return!!s.changed&&(a("AffPriorityChanged",{name:i.name,source:n,priority:s.priority,defaultPriority:i.defaultPriority}),!0)},resetPriority(e,t="manual"){const n=getEntry(e,{ensure:!0}),o=resetPriorityValue(n);return!!o.changed&&(a("AffPriorityChanged",{name:n.name,source:t,priority:o.priority,defaultPriority:n.defaultPriority,reset:!0}),!0)},setDefaultPriority(e,t,n="manual"){const o=toPriorityNumber(t);if(null===o)return!1;const i=getEntry(e,{ensure:!0}),s=setDefaultPriorityValue(i,o);return!!s.changed&&(a("AffDefaultPriorityChanged",{name:i.name,source:n,priority:s.priority,previousDefaultPriority:s.previousDefaultPriority,currentPriority:getPriorityValue(i)}),s.currentChanged&&a("AffPriorityChanged",{name:i.name,source:n,priority:s.priority,defaultPriority:i.defaultPriority,defaultChanged:!0}),!0)}}},createAfflictionLifecycleApi=({state:e,defaultPrios:t,timedConfig:n,countableConfig:a,emit:o,now:i,setTimeoutFn:s,clearTimeoutFn:l})=>{const clearTimer=e=>{e.timer&&(l?.(e.timer),e.timer=null)},emitAffGot=(e,t,n)=>{o("AffGot",{name:e.name,at:t,source:n,have:e.have,count:e.count,min:e.min,max:e.max,since:e.since,lastChangeAt:e.lastChangeAt})},emitAffLost=(e,t,n)=>{o("AffLost",{name:e.name,at:t,source:n,have:e.have,count:e.count,min:e.min,max:e.max,since:e.since,lastChangeAt:e.lastChangeAt})},emitStackChanged=(e,t)=>{o("AffStackChanged",{name:e.name,count:e.count,min:e.min,max:e.max,have:e.have,at:t})},clampCount=(e,t)=>{const n=Number(t);return Number.isFinite(n)?Math.max(e.min,Math.min(e.max,n)):e.count},scheduleTimedExpiry=e=>{const t=n[e.name];if(!t)return;clearTimer(e);const a=Math.round(1e3*Number(t.length||0));a<=0||!s||(e.timer=s(()=>{lose(e.name,{source:"timed-expiry",at:i()})},a))},applyCountableState=(e,t,n={})=>{const a=n.at??i(),o=n.source||"manual",s=e.have;return e.count=clampCount(e,t),e.have=e.count>0,e.have&&!s&&(e.since=a),e.lastChangeAt=a,emitStackChanged(e,a),!s&&e.have?emitAffGot(e,a,o):s&&!e.have&&emitAffLost(e,a,o),s},got=(n,o={})=>{const s=createAfflictionReference(n,a),l=ensureAffEntry(e,t,a,s.name),c=o.at??i(),u=o.source||"manual",d=l.have;if(a[l.name]){const e=Number(o.count);return applyCountableState(l,Number.isFinite(e)?e:s.hasExplicitCount?s.count:l.count+Number(o.countDelta??1),{at:c,source:u}),l.have?scheduleTimedExpiry(l):clearTimer(l),!0}return!d&&(l.have=!0,l.count=1,l.since=c,l.lastChangeAt=c,scheduleTimedExpiry(l),emitAffGot(l,c,u),!0)},lose=(n,o={})=>{const s=ensureAffEntry(e,t,a,createAfflictionReference(n,a).name),l=o.at??i(),c=o.source||"manual",u=s.have;if(a[s.name]){const e=Number(o.count);return applyCountableState(s,Number.isFinite(e)?e:Number.isFinite(Number(o.countDelta))?s.count-Math.abs(Number(o.countDelta)):0,{at:l,source:c}),clearTimer(s),!0}return!!u&&(s.have=!1,s.count=0,s.lastChangeAt=l,clearTimer(s),emitAffLost(s,l,c),!0)};return{got,lose,applyList(t=[]){const n=new Set,o=new Map,i=new Set;(t||[]).forEach(e=>{const t=createAfflictionReference("string"==typeof e?e:String(e?.name||e?.affliction||e||""),a);if(t.name){if(a[t.name])return t.hasExplicitCount?(i.add(t.name),void o.set(t.name,Math.max(o.get(t.name)??0,t.count))):void(i.has(t.name)||o.set(t.name,(o.get(t.name)??0)+1));n.add(t.name)}}),Object.keys(e).forEach(t=>{a[t]?o.has(t)?got(t,{source:"gmcp-list",count:o.get(t)}):(e[t].have||e[t].count>0)&&lose(t,{source:"gmcp-list"}):n.has(t)?got(t,{source:"gmcp-list"}):e[t].have&&lose(t,{source:"gmcp-list"})})},dispose(){Object.values(e).forEach(clearTimer)}}},secondsToMs=e=>{const t=Number(e);return Number.isFinite(t)?Math.max(0,Math.round(1e3*t)):0},msToSeconds=e=>{const t=Number(e);return Number.isFinite(t)?t/1e3:0},createAfflictionQueryApi=({state:e,list:t,timedConfig:n,countableConfig:a,uncurableSet:o,getPriority:i,now:s,getVersion:l=()=>0,getEntryVersion:c=()=>l()})=>{const buildEntrySnapshot=(e={})=>({name:e.name,have:e.have,count:e.count,min:e.min,max:e.max,since:e.since,lastChangeAt:e.lastChangeAt,order:e.order,defaultPriority:e.defaultPriority,priorityOverride:e.priorityOverride}),u=new Map,getEntrySnapshot=t=>e[t]?(u.has(t)||u.set(t,createSnapshotCache({getVersion:()=>c(t),buildSnapshot:()=>buildEntrySnapshot(e[t])})),u.get(t)()):null,d=createSnapshotCache({getVersion:l,buildSnapshot:()=>Object.keys(e).reduce((e,t)=>(e[t]=getEntrySnapshot(t),e),{})}),elapsedMs=(t,n=s())=>{const o=e[normalizeAfflictionName(t,a)];return o?.have?Math.max(0,n-o.since):0},durationMs=e=>{const t=n[normalizeAfflictionName(e,a)];return t?secondsToMs(t.length):0},remainingMs=(t,n=s())=>{const o=normalizeAfflictionName(t,a),i=e[o],l=durationMs(o);return!i?.have||l<=0?0:Math.max(0,l-elapsedMs(o,n))},timing=(t,n=s())=>{const o=normalizeAfflictionName(t,a),i=e[o];if(!i)return null;const l=elapsedMs(o,n),c=durationMs(o),u=remainingMs(o,n);return{name:o,have:i.have,atMs:n,sinceMs:i.since,lastChangeAtMs:i.lastChangeAt,elapsedMs:l,elapsedSeconds:msToSeconds(l),timedDurationMs:c,timedDurationSeconds:msToSeconds(c),remainingMs:u,remainingSeconds:msToSeconds(u)}};return{snapshot:()=>d(),get:e=>getEntrySnapshot(normalizeAfflictionName(e,a)),list:()=>[...t,...Object.keys(e).filter(e=>!t.includes(e))],getCountablePriorityNames:()=>Object.entries(a).flatMap(([e,t])=>{const n=Math.max(0,Number(t?.max??0)),a=[];for(let o=2;o<=n;o+=1)a.push(`${e}${o}`);return a}),normalizeName:e=>normalizeAfflictionName(e,a),normalizePriorityName:e=>normalizeAfflictionPriorityName(e,a),formatPriorityCommandName:e=>formatAfflictionPriorityCommandName(e,a),haveAff(t){const n=normalizeAfflictionName(t,a);return Boolean(e[n]?.have)},haveAffs:(t=[])=>t.every(t=>{const n=normalizeAfflictionName(t,a);return Boolean(e[n]?.have)}),haveAnAff:(t=[])=>t.some(t=>{const n=normalizeAfflictionName(t,a);return Boolean(e[n]?.have)}),currentSorted:()=>Object.values(e).filter(e=>e.have).sort((e,t)=>{const n=i(e.name),a=i(t.name);return n!==a?n-a:e.order-t.order}).map(e=>e.name),isCountable(e){const t=normalizeAfflictionName(e,a);return Boolean(a[t])},isTimed(e){const t=normalizeAfflictionName(e,a);return Boolean(n[t])},isUncurable(e){const t=normalizeAfflictionName(e,a);return o.has(t)},elapsed:elapsedMs,elapsedMs,elapsedSeconds:(e,t=s())=>msToSeconds(elapsedMs(e,t)),remaining:remainingMs,remainingMs,remainingSeconds:(e,t=s())=>msToSeconds(remainingMs(e,t)),timing}},createAfflictionModel=({affTable:e,now:t,setTimeoutFn:n,clearTimeoutFn:a}={})=>{const{list:o,defaultPrios:i,state:s,timedConfig:l,countableConfig:c,uncurableSet:u}=createInitialAfflictionState(e),d=new Set;let p=0;const m=new Map,emit=(e,t)=>{p+=1,t?.name&&m.set(t.name,(m.get(t.name)??0)+1),d.forEach(n=>n(e,t))},getEntryVersion=e=>m.get(e)??0,g=createAfflictionPriorityApi({state:s,defaultPrios:i,countableConfig:c,emit}),h=createAfflictionLifecycleApi({state:s,defaultPrios:i,timedConfig:l,countableConfig:c,emit,now:t,setTimeoutFn:n,clearTimeoutFn:a}),b=createAfflictionQueryApi({state:s,list:o,timedConfig:l,countableConfig:c,uncurableSet:u,getPriority:g.getPriority,now:t,getVersion:()=>p,getEntryVersion});return{onChange:e=>(d.add(e),()=>d.delete(e)),snapshot:b.snapshot,get:b.get,list:b.list,getCountablePriorityNames:b.getCountablePriorityNames,normalizeName:b.normalizeName,normalizePriorityName:b.normalizePriorityName,formatPriorityCommandName:b.formatPriorityCommandName,got:h.got,lose:h.lose,applyList:h.applyList,setPriority:g.setPriority,resetPriority:g.resetPriority,getPriority:g.getPriority,getDefaultPriority:g.getDefaultPriority,setDefaultPriority:g.setDefaultPriority,haveAff:b.haveAff,haveAffs:b.haveAffs,haveAnAff:b.haveAnAff,currentSorted:b.currentSorted,isCountable:b.isCountable,isTimed:b.isTimed,isUncurable:b.isUncurable,elapsed:b.elapsed,elapsedMs:b.elapsedMs,elapsedSeconds:b.elapsedSeconds,remaining:b.remaining,remainingMs:b.remainingMs,remainingSeconds:b.remainingSeconds,timing:b.timing,dispose:h.dispose}},createDefenseLifecycleApi=({state:e,emit:t})=>{const consumeStaticPriority=(n,a="manual",o={})=>{const i=e[n];return!(!i?.static||!isActiveStaticPriority(resolveDefensePriority(i)))&&(i.priorityOverride=0,t("DefPriorityChanged",{id:n,value:0,source:a,consumed:!0,static:!0,defaultPriority:i.defaultPriority,...o}),!0)},setHave=(n,a,o="manual",i=Date.now())=>{const s=e[n];if(!s||s.have===a)return!1;s.have=a,s.lastChangeAt=i;const l={id:n,source:o,at:i,have:s.have,lastChangeAt:s.lastChangeAt,static:s.static,serverside:s.serverside,preempt:s.preempt};return t(a?"DefGot":"DefLost",l),a&&consumeStaticPriority(n,o,{triggeredByGain:!0}),!0};return{consumeStaticPriority,setHave,setStatic:(n,a,o="manual")=>{const i=e[n];if(!i)return!1;const s=Boolean(a);if(i.static===s)return!1;const l=i.static,c=resolveDefensePriority(i);let u=!1,d=!1;return i.static=s,s&&i.have&&isActiveStaticPriority(c)?(i.priorityOverride=0,d=!0,u=resolveDefensePriority(i)!==c):s||0!==i.priorityOverride||(i.priorityOverride=null,u=resolveDefensePriority(i)!==c),t("DefStaticChanged",{id:n,value:s,previousValue:l,source:o,have:i.have,static:i.static,seedStatic:i.seedStatic,defaultPriority:i.defaultPriority,currentPriority:resolveDefensePriority(i),serverside:i.serverside,preempt:i.preempt}),u&&t("DefPriorityChanged",{id:n,value:resolveDefensePriority(i),source:o,static:i.static,defaultPriority:i.defaultPriority,staticChanged:!0,consumed:d}),!0},setCommand:(n,a,o="manual")=>{const i=e[n];if(!i)return!1;const s=normalizeCommandList(a);return i.command=s,t("DefCommandChanged",{id:n,value:s,source:o}),!0},applyList(t=[],n="gmcp-list"){const a=new Set;(t||[]).forEach(e=>{const t=normalizeObservedDefenseId(e);t&&a.add(t)}),Object.keys(e).forEach(t=>{a.has(t)?(setHave(t,!0,n),e[t].static&&consumeStaticPriority(t,n,{observedActive:!0})):e[t].have&&!e[t].clientOnly&&setHave(t,!1,n)})}}},toDefensePriorityNumber=e=>{const t=toPriorityNumber(e);return null===t?null:t<0?0:t>26?26:t},createDefensePriorityApi=({state:e,emit:t,consumeStaticPriority:n})=>{const getEntry=t=>e[t]||null;return{getPriority(e){const t=getEntry(e);return t?getPriorityValue(t):-1},getDefaultPriority(e){const t=getEntry(e);return t?getDefaultPriorityValue(t):-1},setPriority(e,a,o="manual"){const i=toDefensePriorityNumber(a);if(null===i)return!1;const s=getEntry(e);if(!s)return!1;if(s.static&&!0===s.have&&isActiveStaticPriority(i))return n(e,o,{ignoredWhileActive:!0});const l=setPriorityValue(s,i);return!!l.changed&&(t("DefPriorityChanged",{id:s.id,value:l.priority,source:o,static:s.static,defaultPriority:s.defaultPriority}),!0)},resetPriority(e,a="manual"){const o=getEntry(e);if(!o)return!1;if(o.static&&!0===o.have)return n(e,a,{reset:!0,ignoredWhileActive:!0});const i=resetPriorityValue(o);return!!i.changed&&(t("DefPriorityChanged",{id:o.id,value:i.priority,source:a,static:o.static,defaultPriority:o.defaultPriority,reset:!0}),!0)},setDefaultPriority(e,n,a="manual"){const o=toDefensePriorityNumber(n);if(null===o)return!1;const i=getEntry(e);if(!i)return!1;const s=setDefaultPriorityValue(i,o);return!!s.changed&&(t("DefDefaultPriorityChanged",{id:i.id,value:s.priority,source:a,static:i.static,previousDefaultPriority:s.previousDefaultPriority,currentPriority:getPriorityValue(i)}),s.currentChanged&&t("DefPriorityChanged",{id:i.id,value:s.priority,source:a,static:i.static,defaultPriority:i.defaultPriority,defaultChanged:!0}),!0)}}},createDefenseQueryApi=({state:e,list:t,getVersion:n=()=>0,getEntryVersion:a=()=>n()})=>{const buildDefEntrySnapshot=(e={})=>({id:e.id,have:e.have,lastChangeAt:e.lastChangeAt,order:e.order,defaultPriority:e.defaultPriority,priorityOverride:e.priorityOverride,priority:resolveDefensePriority(e),command:e.command,bals_req:e.bals_req,bals_used:e.bals_used,blocks:e.blocks,skills:e.skills,opps:e.opps,serverside:e.serverside,preempt:e.preempt,static:e.static,clientOnly:e.clientOnly}),o=new Map,getDefSnapshot=t=>e[t]?(o.has(t)||o.set(t,createSnapshotCache({getVersion:()=>a(t),buildSnapshot:()=>buildDefEntrySnapshot(e[t])})),o.get(t)()):null,i=createSnapshotCache({getVersion:n,buildSnapshot:()=>Object.keys(e).reduce((t,n)=>(t[n]=resolveDefensePriority(e[n]),t),{})}),s=createSnapshotCache({getVersion:n,buildSnapshot:()=>Object.keys(e).reduce((t,n)=>(t[n]=Number(e[n].defaultPriority??-1),t),{})}),l=createSnapshotCache({getVersion:n,buildSnapshot:()=>Object.keys(e).reduce((t,n)=>(t[n]=Boolean(e[n]?.static),t),{})}),c=createSnapshotCache({getVersion:n,buildSnapshot:()=>Object.keys(e).reduce((t,n)=>(Boolean(e[n]?.static)!==Boolean(e[n]?.seedStatic)&&(t[n]=Boolean(e[n]?.static)),t),{})}),u=createSnapshotCache({getVersion:n,buildSnapshot:()=>Object.keys(e).reduce((e,t)=>(e[t]=getDefSnapshot(t),e),{})});return{snapshot:()=>u(),get:e=>getDefSnapshot(e),list:()=>[...t,...Object.keys(e).filter(e=>!t.includes(e))],isAvailableForClass:(t,n="")=>matchesClass(e[t]?.skills,n),haveDef:t=>Boolean(e[t]?.have),getPriority(t){const n=e[t];return n?resolveDefensePriority(n):-1},getDefaultPriority:t=>Number(e[t]?.defaultPriority??-1),getPriorities:()=>i(),getDefaultPriorities:()=>s(),getStatics:()=>l(),getStaticOverrides:()=>c(),isStatic:t=>Boolean(e[t]?.static)}},createDefenseModel=({defTable:e={},defPrios:t={}}={})=>{const{state:n,list:a}=createInitialDefenseState({defTable:e,defPrios:t}),o=new Set;let i=0;const s=new Map,emit=(e,t)=>{i+=1,t?.id&&s.set(t.id,(s.get(t.id)??0)+1),o.forEach(n=>n(e,t))},getEntryVersion=e=>s.get(e)??0,l=createDefenseLifecycleApi({state:n,emit}),c=createDefensePriorityApi({state:n,emit,consumeStaticPriority:l.consumeStaticPriority}),u=createDefenseQueryApi({state:n,list:a,getVersion:()=>i,getEntryVersion});return{onChange:e=>(o.add(e),()=>o.delete(e)),snapshot:u.snapshot,get:u.get,list:u.list,isAvailableForClass:u.isAvailableForClass,haveDef:u.haveDef,isStatic:u.isStatic,setStatic:l.setStatic,setCommand:l.setCommand,setHave:l.setHave,applyList:l.applyList,setPriority:c.setPriority,setDefaultPriority:c.setDefaultPriority,resetPriority:c.resetPriority,getPriority:c.getPriority,getDefaultPriority:c.getDefaultPriority,getDefaultPriorities:u.getDefaultPriorities,getPriorities:u.getPriorities,getStatics:u.getStatics,getStaticOverrides:u.getStaticOverrides}},ea=1e4,ta=["brokenleftarm","damagedleftarm","mangledleftarm"],ra=["brokenrightarm","damagedrightarm","mangledrightarm"],createCachePrecacheSupport=({state:e,haveAff:t=()=>!1}={})=>{const isPrecacheBlocked=()=>{const e=ta.some(e=>t(e)),n=ra.some(e=>t(e));return!(!e||!n)},buildPrecacheCommands=()=>isPrecacheBlocked()?[]:e.hydration.inventoryKnown&&e.hydration.riftKnown?Object.entries(e.desiredPrecache).flatMap(([t,n])=>{const a=toNumber(e.inventory[t],0),o=toNumber(e.rift[t],0),i=Math.max(0,toNumber(e.riftCapacity,ea)),s=Math.max(0,toNumber(n,0)),l=Math.max(0,s-a),c=Math.max(0,a-s),u=Math.min(l,o),d=Math.max(0,i-o);return u>0?[`outr ${u} ${t}`]:c>0&&d>0?[`inr ${Math.min(c,d)} ${t}`]:[]}):[];return{getPrecacheCommands:()=>buildPrecacheCommands(),isPrecacheBlocked,isHydrated:()=>e.hydration.inventoryKnown&&e.hydration.riftKnown,getTotal:t=>toNumber(e.inventory[t],0)+toNumber(e.rift[t],0)}},findCaseInsensitiveKey=(e={},t="")=>{if(!e||"object"!=typeof e)return null;const n=String(t).toLowerCase();return Object.keys(e).find(e=>String(e).toLowerCase()===n)||null},createCacheNameNormalizer=({cacheTable:e={},cacheNames:t={}}={})=>{const n=t.herb_name_to_herb||{},a=new Set(Object.keys(e)),toCount=(e,t=1)=>Math.max(0,toNumber(e,t)),resolveName=e=>{if(!e)return"";const t=String(e).trim().toLowerCase();return n[t]||t},resolveCountedName=e=>{const t=resolveName(e);if(a.has(t)||!t.endsWith("s"))return t;const n=resolveName(t.slice(0,-1));return a.has(n)?n:t},parseNameAndAmount=(e,t)=>{const n=String(e||"").trim().toLowerCase();if(!n)return{name:"",amount:Math.max(0,toNumber(t,1))};const o=n.match(/^a group of\s+(\d+)\s+(.+)$/);if(o){const[,e,n]=o,i=resolveCountedName(n);if(a.has(i))return{name:i,amount:toCount(t,toNumber(e,1))}}const i=n.match(/^(\d+)\s+(.+)$/);if(i){const[,e,n]=i,o=resolveCountedName(n);if(a.has(o))return{name:o,amount:toCount(t,toNumber(e,1))}}return{name:resolveCountedName(n),amount:toCount(t,1)}};return{resolveName,parseNameAndAmount,normalizeName:e=>parseNameAndAmount(e).name}},readGmcpPath=(e={},t=[])=>{const n=findCaseInsensitiveKey(e,t.join("."));if(n)return e[n];let a=e;for(const o of t){if(!a||"object"!=typeof a)return;const e=findCaseInsensitiveKey(a,o);if(!e)return;a=a[e]}return a},createCacheStateSupport=({state:e,emit:t=()=>{},cacheTable:n={},cacheNames:a={}}={})=>{const{parseNameAndAmount:o,normalizeName:i}=createCacheNameNormalizer({cacheTable:n,cacheNames:a}),s={invAddsById:new Map,roomRemovesById:new Map,appliedIds:new Set},normalizeItemId=e=>null==e||""===e?"":String(e),adjustInventoryAmount=(n,a,o="inventory-delta")=>!(!n||!(n in e.inventory))&&(e.inventory[n]=Math.max(0,e.inventory[n]+toNumber(a,0)),t("CacheAmountChanged",{bucket:"inventory",name:n,amount:e.inventory[n],source:o}),!0),parseInventoryEntry=(e={})=>{const t=e?.item||e,n=o(t?.name||t?.item||t,t?.amount??t?.count??t?.qty??e?.amount??e?.count??e?.qty);return{id:normalizeItemId(t?.id??e?.id),location:String(e?.location??t?.parentid??t?.location??"inv").toLowerCase(),name:n.name,amount:n.amount,icon:t?.icon??e?.icon,attrib:t?.attrib??e?.attrib}},storeInventoryCurative=(t={})=>{if(!t.id||!t.name||!(t.name in e.inventory))return!1;const n={name:t.name,amount:t.amount,location:t.location||"inv"};return void 0!==t.icon&&null!==t.icon&&(n.icon=t.icon),void 0!==t.attrib&&null!==t.attrib&&(n.attrib=t.attrib),e.inventoryCurativesById[t.id]=n,!0},deleteInventoryCurative=t=>{const n=normalizeItemId(t);return!(!n||!(n in e.inventoryCurativesById))&&(delete e.inventoryCurativesById[n],!0)},deleteInventoryCurativesByName=t=>{let n=!1;return Object.entries(e.inventoryCurativesById).forEach(([a,o])=>{o?.name===t&&(delete e.inventoryCurativesById[a],n=!0)}),n},emitInventoryIdentityChanged=()=>{t("CacheInventoryIdentityChanged",{...e.inventoryCurativesById})},buildResult=({changed:e=!1,identityChanged:t=!1,name:n="",amount:a=0,delta:o=0,source:i=""}={})=>({changed:e,identityChanged:t,name:n,amount:a,delta:o,source:i}),readInventorySnapshot=(e={})=>{const t=readGmcpPath(e,["Char","Items","List"]);if(void 0!==t)return t;const n=readGmcpPath(e,["Items","Inv"]);return void 0!==n?{location:"inv",items:n}:void 0},setAmount=(n,a,o,s="manual")=>{const l=i(a);if(!l||!(l in e[n]))return!1;const c=Math.max(0,toNumber(o,e[n][l]));return e[n][l]=c,t("CacheAmountChanged",{bucket:n,name:l,amount:c,source:s}),!0},setRiftCapacity=(n,a="manual")=>{const o=toNumber(e.riftCapacity,ea),i=Math.max(0,toNumber(n,o));return i!==e.riftCapacity&&(e.riftCapacity=i,t("CacheRiftCapacityChanged",{amount:i,source:a}),!0)},observeInventorySnapshot=(n=[])=>{const a={...e.inventory},o={};Object.keys(a).forEach(e=>{a[e]=0}),(n||[]).forEach(e=>{const t=parseInventoryEntry(e);if("inv"===t.location&&t.name&&t.name in a&&(a[t.name]+=t.amount,t.id)){const e={name:t.name,amount:t.amount,location:t.location};void 0!==t.icon&&null!==t.icon&&(e.icon=t.icon),void 0!==t.attrib&&null!==t.attrib&&(e.attrib=t.attrib),o[t.id]=e}}),e.inventory=a,e.inventoryCurativesById=o,e.hydration.inventoryKnown=!0,t("CacheInventoryListApplied",{...e.inventory})},applyRoomPickupTransfer=t=>{if(!t||s.appliedIds.has(t))return null;const n=s.invAddsById.get(t),a=s.roomRemovesById.get(t);if(!n||!a)return null;const o=n.name&&n.name in e.inventory,i=Math.max(0,toNumber(n.amount,0)),l=a.name&&a.name in e.inventory,c=Math.max(0,toNumber(a.amount,0)),u=o&&i>0?n:l&&c>0?a:null;if(s.invAddsById.delete(t),s.roomRemovesById.delete(t),s.appliedIds.add(t),!u)return null;const d=Math.max(0,toNumber(u.amount,0));return!u.name||!(u.name in e.inventory)||d<=0?null:adjustInventoryAmount(u.name,d,"gmcp:room-pickup")?buildResult({changed:!0,name:u.name,amount:d,delta:d,source:"gmcp:room-pickup"}):null},observeRoomPickupCandidate=(e,t)=>{if(!e.id||s.appliedIds.has(e.id))return null;if("inv"===e.location&&"add"===t)s.invAddsById.set(e.id,e);else{if("room"!==e.location||"remove"!==t)return null;s.roomRemovesById.set(e.id,e)}return applyRoomPickupTransfer(e.id)},observeRiftSnapshot=(n={})=>{const a=n.items||n,i=Array.isArray(a)?a:Object.entries(a).map(([e,t])=>({name:e,amount:t})),s={...e.rift};Object.keys(s).forEach(e=>{s[e]=0}),i.forEach(e=>{const t=o(e.name||e.item||e,e.amount??e.count??e.qty??0);t.name&&t.name in s&&(s[t.name]=t.amount)}),e.rift=s,e.hydration.riftKnown=!0,t("CacheRiftListApplied",{...e.rift})},hydrateFromGmcp=(e={})=>{let t=!1;const n=readInventorySnapshot(e);void 0!==n&&(Array.isArray(n)?(observeInventorySnapshot(n),t=!0):"inv"===String(n?.location??n?.Location??"inv").toLowerCase()&&(observeInventorySnapshot(n?.items||[]),t=!0));const a=readGmcpPath(e,["IRE","Rift","List"]);return void 0!==a&&(observeRiftSnapshot(a||{}),t=!0),t};return{observeInventorySnapshot,observeItemDelta:(t={})=>{const n=parseInventoryEntry(t),a=String(t.action||"").toLowerCase(),o=String(t.direction||"").toLowerCase(),i=a||o;let s=!1;if("inv"===n.location){const t=n.id&&e.inventoryCurativesById[n.id]||null;"add"===i?n.name&&n.name in e.inventory&&(s=storeInventoryCurative(n),s&&emitInventoryIdentityChanged()):"remove"===i?(s=!!t&&deleteInventoryCurative(n.id),s&&emitInventoryIdentityChanged()):"update"===i?n.name&&n.name in e.inventory?(s=storeInventoryCurative(n),s&&emitInventoryIdentityChanged()):t&&(s=deleteInventoryCurative(n.id),s&&emitInventoryIdentityChanged()):n.name&&n.name in e.inventory&&(s=storeInventoryCurative(n),s&&emitInventoryIdentityChanged())}const l=observeRoomPickupCandidate(n,i);return l?{...l,identityChanged:s}:buildResult({identityChanged:s})},observeRiftSnapshot,observeRiftChange:(t={})=>{const n=t.amount??t.count??t.qty;if(null==n||""===n)return!1;const a=o(t.name||t.item||t.desc||t,n);return!(!a.name||!(a.name in e.rift))&&(setAmount("rift",a.name,a.amount,"gmcp:rift-change"),{name:a.name,riftAmount:e.rift[a.name]})},observeRiftOutText:({item:t,name:n,amount:a=1,riftAmount:i}={})=>{const s=o(t||n,a);if(!s.name||!(s.name in e.inventory)||!(s.name in e.rift))return!1;const l=Math.max(0,toNumber(a,s.amount));return!(l<=0)&&(adjustInventoryAmount(s.name,l,"text:rift-out"),setAmount("rift",s.name,i,"text:rift-out"),{name:s.name,amount:l,riftAmount:e.rift[s.name]})},observeRiftInText:({item:t,name:n,amount:a=1,riftAmount:i,atCapacity:s=!1}={})=>{const l=o(t||n,a);if(!l.name||!(l.name in e.inventory)||!(l.name in e.rift))return!1;const c=Math.max(0,toNumber(a,l.amount));return!(c<=0)&&(adjustInventoryAmount(l.name,-c,"text:rift-in"),setAmount("rift",l.name,i,"text:rift-in"),s&&setRiftCapacity(i,"text:rift-in-max"),{name:l.name,amount:c,riftAmount:e.rift[l.name],riftCapacity:e.riftCapacity})},invalidateRiftSnapshot:({source:n="rift-resync"}={})=>!!e.hydration.riftKnown&&(e.hydration.riftKnown=!1,t("CacheRiftSnapshotInvalidated",{source:n}),!0),observeInventoryDeltaText:({item:t,name:n,amount:a,delta:i,source:s="text:inventory"}={})=>{const l=o(t||n,a);if(!l.name||!(l.name in e.inventory))return!1;const c=Math.max(0,toNumber(a,l.amount)),u=toNumber(i,0);if(c<=0||0===u)return!1;const d=u>0?c:-c;return adjustInventoryAmount(l.name,d,s),{name:l.name,amount:c,delta:d,inventoryAmount:e.inventory[l.name]}},observeInventoryEmptyText:({item:t,name:n,source:a="text:inventory-empty"}={})=>{const i=o(t||n,0);if(!i.name||!(i.name in e.inventory))return!1;const s=e.inventory[i.name],l=deleteInventoryCurativesByName(i.name);return l&&emitInventoryIdentityChanged(),setAmount("inventory",i.name,0,a),{changed:0!==s||l,identityChanged:l,name:i.name,amount:0,delta:-s,inventoryAmount:e.inventory[i.name],source:a}},observeCurativeConsumedText:({item:t,name:n,amount:a=1}={})=>{const i=o(t||n,a);if(!i.name||!(i.name in e.inventory))return!1;const s=Math.max(0,toNumber(a,i.amount));return!(s<=0)&&(adjustInventoryAmount(i.name,-s,"text:consume"),{name:i.name,amount:s,inventoryAmount:e.inventory[i.name]})},completeObservationBlock:()=>{s.invAddsById.clear(),s.roomRemovesById.clear(),s.appliedIds.clear()},hydrateFromGmcp,setDesiredPrecache:(n={})=>{Object.entries(n).forEach(([t,n])=>{t in e.desiredPrecache&&(e.desiredPrecache[t]=Math.max(0,toNumber(n,0)))}),t("CacheDesiredPrecacheChanged",{...e.desiredPrecache})}}},createCacheModel=({cacheTable:e={},cacheNames:t={},haveAff:n=()=>!1,haveDef:a=()=>!1}={})=>{const o=new Set;let i=0;const s={inventory:{...e},rift:{...e},riftCapacity:ea,inventoryCurativesById:{},desiredPrecache:Object.keys(e).reduce((e,t)=>(e[t]=0,e),{}),hydration:{inventoryKnown:!1,riftKnown:!1}},emit=(e,t)=>{i+=1,o.forEach(n=>n(e,t))},l=createSnapshotCache({getVersion:()=>i,buildSnapshot:()=>({inventory:{...s.inventory},rift:{...s.rift},riftCapacity:s.riftCapacity,inventoryCurativesById:Object.entries(s.inventoryCurativesById).reduce((e,[t,n])=>(e[t]={...n},e),{}),desiredPrecache:{...s.desiredPrecache},hydration:{...s.hydration}})});return{onChange:e=>(o.add(e),()=>o.delete(e)),snapshot:()=>l(),...createCacheStateSupport({state:s,emit,cacheTable:e,cacheNames:t}),...createCachePrecacheSupport({state:s,haveAff:n,haveDef:a}),getDesiredPrecache:()=>({...s.desiredPrecache})}},na={loadOnLogin:!1,flushSafetyMs:250,maxSendPerChunk:20,queueWhilePaused:!1,overrideTab:!1,customPrompt:!0,debug:!1,notices:{affGot:!0,affLost:!0,defGot:!0,defLost:!0,balanceLost:!1,balanceRecovered:!1,trackableGot:!1,trackableLost:!1,priority:!0,output:!1},ss:{transmutation:!0,sipPriority:"health",sipHealthAt:80,sipManaAt:70,mossHealthAt:90,mossManaAt:80,focus:!0,focusOverHerbs:!0,tree:"on",clot:!0,clotAt:19,fracturesAbove:35,manaThreshold:10,batch:!0}},aa={paused:!0,rulesSuspended:!1,slowMode:!1,aeonLocked:!1,phase:re.IDLE,startupFailureMessage:""},oa={name:"",class:"",race:"",color:"",hp:0,maxhp:0,mp:0,maxmp:0,ep:0,maxep:0,wp:0,maxwp:0,bleed:0,rage:0,dead:!1,mount:null,wielded:{left:null,right:null}},ia={id:"",text:"",isPlayer:null,hp:""},sa={id:null,name:"",exits:{},items:{}},getChangedPatchKeys=(e={},t,n)=>Object.keys(e||{}).filter(e=>JSON.stringify(n[e])!==JSON.stringify(t[e])),createSystemConfigApi=({state:e,emit:t})=>({getRuntime:()=>e.runtime,getSettings:()=>e.settings,getBaselineIntent:()=>e.baselineIntent,setRuntime(n={}){const a=e.runtime,o=deepMerge(e.runtime,n),i=Object.keys(o).filter(e=>o[e]!==a[e]);if(!i.length)return!1;const s=a.paused;return e.runtime=o,e.runtime.paused!==s&&t("PauseStateChanged",{paused:e.runtime.paused}),t("RuntimeStateChanged",{current:e.runtime,changedKeys:i}),!0},setSettings(n={},a={}){const o=e.settings,i=deepMerge(e.settings,n),s=getChangedPatchKeys(n,o,i);return!!s.length&&(e.settings=i,a.setBaseline&&(e.baselineIntent=deepMerge(e.baselineIntent,n)),t("SettingsChanged",{current:e.settings,patch:n,changedKeys:s}),!0)},setBaselineIntent(n={}){const a=e.baselineIntent,o=deepMerge(e.baselineIntent,n),i=getChangedPatchKeys(n,a,o);return!!i.length&&(e.baselineIntent=o,t("BaselineIntentChanged",{current:e.baselineIntent,patch:n,changedKeys:i}),!0)}}),shallowEqualRecord=(e={},t={})=>{const n=Object.keys(e||{}),a=Object.keys(t||{});return n.length===a.length&&n.every(n=>e[n]===t[n])},collectChangedFields=(e={})=>{const t={};return Object.entries(e).forEach(([e,[n,a]])=>{n!==a&&(t[e]={previous:n,current:a})}),t},la=["hp","maxhp","mp","maxmp","ep","maxep","wp","maxwp"],hasOwn$3=(e,t)=>null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t),isDragonClass=(e="")=>/\bdragon\b/i.test(String(e||"")),getDragonColor=(e="")=>{const t=String(e||"").trim().split(/\s+/).filter(Boolean),n=t.findIndex(e=>"dragon"===e.toLowerCase()),a=n>0?t[n-1]:"";return a?a[0].toUpperCase()+a.slice(1).toLowerCase():""},normalizeStatusClass=({className:e="",race:t="",classProvided:n=!1,raceProvided:a=!1}={})=>{const o=String(e||"").trim(),i=String(t||"").trim(),s=isDragonClass(o),l=isDragonClass(i);return s||!n&&a&&l?{className:"Dragon",color:getDragonColor(o)||getDragonColor(i)}:{className:normalizeClassName(o),color:""}},createSystemCharacterApi=({state:e,emit:t})=>({updateVitals(n={}){const a=toParsedGmcpVitals(n),o=a.resourceStats.filter(({balanceState:e})=>void 0===e),i={dead:e.char.dead};la.forEach(t=>{i[t]=e.char[t]}),o.forEach(({key:t})=>{t in i||(i[t]=e.char[t])}),la.forEach(t=>{void 0!==a.vitals[t]&&(e.char[t]=a.vitals[t])}),o.forEach(({key:t,value:n})=>{e.char[t]=n}),e.char.dead=e.char.hp<=0;const s={dead:[i.dead,e.char.dead]};la.forEach(t=>{s[t]=[i[t],e.char[t]]}),o.forEach(({key:t})=>{s[t]=[i[t],e.char[t]]});const l=collectChangedFields(s);return!!Object.keys(l).length&&(t("VitalsUpdated",{current:e.char,hpDiff:e.char.hp-i.hp,mpDiff:e.char.mp-i.mp,changedFields:l}),e.char.dead&&!i.dead&&t("DeathDetected",{hp:e.char.hp,previousHp:i.hp}),!0)},updateStatus(n={}){const a={name:e.char.name,class:e.char.class,race:e.char.race,color:e.char.color};hasOwn$3(n,"name")&&(e.char.name=n.name??""),hasOwn$3(n,"race")&&(e.char.race=n.race??"");const o=hasOwn$3(n,"class"),i=hasOwn$3(n,"race");if(o||i){const t=normalizeStatusClass({className:o?n.class:e.char.class,race:e.char.race,classProvided:o,raceProvided:i});e.char.class=t.className,e.char.color=t.color}const s=collectChangedFields({name:[a.name,e.char.name],class:[a.class,e.char.class],race:[a.race,e.char.race],color:[a.color,e.char.color]});return!!Object.keys(s).length&&(a.class!==e.char.class&&t("ClassChanged",{class:e.char.class,previousClass:a.class}),t("StatusUpdated",{current:e.char,changedFields:s}),!0)},updateWielded(n,a){if("left"!==n&&"right"!==n)return!1;const o=e.char.wielded[n],i=a?{id:a.id??null,name:String(a.name||""),icon:a.icon||null}:null;return(null!==o||null!==i)&&((!o||!i||o.id!==i.id||o.name!==i.name)&&(e.char.wielded[n]=i,t("WieldedUpdated",{side:n,current:i,previous:o}),!0))},updateMount(n){const a=e.char.mount,o=n?{name:String(n.name||""),id:n.id??null}:null;return a!==o&&((!a||!o||a.name!==o.name||a.id!==o.id)&&(e.char.mount=o,t("MountUpdated",{current:o,previous:a}),!0))},getChar:()=>e.char,getClass:()=>e.char.class,checkClass:t=>classesMatch(e.char.class,t),isClass:t=>void 0===t||!!t&&(Array.isArray(t)?t.some(t=>classesMatch(e.char.class,t)):classesMatch(e.char.class,t))}),ca=["Text","text","short_desc"],hasOwn$2=(e,t)=>null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t),getProvidedValue=(e,t,n,a="")=>{for(const o of t)if(hasOwn$2(e,o))return e[o]??a;return n},deriveIsPlayer=e=>"-1"===String(e),createSystemTargetApi=({state:e,emit:t})=>({updateTarget(n={}){const a=e.target,o={id:getProvidedValue(n,["id","ID"],a.id),text:getProvidedValue(n,ca,a.text),hp:getProvidedValue(n,["HP","hp","hpperc"],a.hp)};if(o.isPlayer=deriveIsPlayer(o.id),o.id===a.id&&o.text===a.text&&o.hp===a.hp&&o.isPlayer===a.isPlayer)return!1;e.target=o;const i=ca.some(e=>hasOwn$2(n,e)),s=o.id!==a.id||o.text!==a.text;return!(!i||!s)&&(t("TargetUpdated",{current:e.target,changedFields:collectChangedFields({id:[a.id,o.id],text:[a.text,o.text],isPlayer:[a.isPlayer,o.isPlayer],hp:[a.hp,o.hp]})}),!0)},isTarget(t){if(null==t)return!1;const n=String(t).toLowerCase();return e.target.text.toLowerCase()===n||String(e.target.id).toLowerCase()===n}}),hasOwn$1=(e,t)=>null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t),createSystemRoomApi=({state:e,emit:t})=>({getRoom:()=>e.room,updateRoom(n={}){const a=e.room,o={id:hasOwn$1(n,"num")?n.num:a.id,name:hasOwn$1(n,"name")?n.name??"":a.name,exits:hasOwn$1(n,"exits")?{...n.exits??{}}:a.exits,items:a.items},i=collectChangedFields({id:[a.id,o.id],name:[a.name,o.name]});return shallowEqualRecord(a.exits,o.exits)||(i.exits={previous:a.exits,current:o.exits}),!!Object.keys(i).length&&(e.room=o,t("RoomUpdated",{current:e.room,changedFields:i}),!0)},setRoomItems(n={}){const a={...n};return!shallowEqualRecord(e.room.items,a)&&(e.room.items=a,t("RoomItemsUpdated",{current:e.room.items}),!0)}}),createSystemModel=(e={})=>{const t={settings:deepMerge(na,e.settings||{}),baselineIntent:deepMerge(na,e.baselineIntent||{}),runtime:deepMerge(aa,e.runtime||{}),char:deepMerge(oa,e.char||{}),target:deepMerge(ia,e.target||{}),room:deepMerge(sa,e.room||{})};t.runtime={...t.runtime};const n=new Set;let a=0;const emit=(e,t)=>{a+=1,n.forEach(n=>n(e,t))},o=createSystemConfigApi({state:t,emit}),i=createSystemCharacterApi({state:t,emit}),s=createSystemTargetApi({state:t,emit}),l=createSystemRoomApi({state:t,emit}),copySettingsBucket=(e={})=>({...e,notices:{...e.notices||{}},ss:{...e.ss||{}}}),copyCharSnapshot=(e={})=>({...e,mount:e.mount?{...e.mount}:null,wielded:{left:e.wielded?.left?{...e.wielded.left}:null,right:e.wielded?.right?{...e.wielded.right}:null}}),copyTargetSnapshot=(e={})=>({...e}),copyRoomSnapshot=(e={})=>({...e,exits:{...e.exits||{}},items:{...e.items||{}}}),c=createSnapshotCache({getVersion:()=>a,buildSnapshot:()=>({settings:copySettingsBucket(t.settings),baselineIntent:copySettingsBucket(t.baselineIntent),runtime:{...t.runtime},char:copyCharSnapshot(t.char),target:copyTargetSnapshot(t.target),room:copyRoomSnapshot(t.room)})});return{onChange:e=>(n.add(e),()=>n.delete(e)),snapshot:()=>c(),getRuntime:o.getRuntime,getSettings:o.getSettings,getBaselineIntent:o.getBaselineIntent,setRuntime:o.setRuntime,setSettings:o.setSettings,setBaselineIntent:o.setBaselineIntent,updateVitals:i.updateVitals,updateStatus:i.updateStatus,updateWielded:i.updateWielded,updateMount:i.updateMount,getChar:i.getChar,getClass:i.getClass,checkClass:i.checkClass,isClass:i.isClass,updateTarget:s.updateTarget,isTarget:s.isTarget,getRoom:l.getRoom,updateRoom:l.updateRoom,setRoomItems:l.setRoomItems}},createModels=({adapter:e,seedData:t,options:n={},now:a})=>{const o=Boolean(n.debug),i=createSystemModel({settings:{debug:o},baselineIntent:{debug:o}}),s=createAfflictionModel({affTable:t.affTable,now:a,setTimeoutFn:e.setTimeout,clearTimeoutFn:e.clearTimeout}),l=createBalanceModel({balanceTable:t.balanceTable,haveAff:e=>s.haveAff(e),now:a,setTimeoutFn:e.setTimeout,clearTimeoutFn:e.clearTimeout}),c=createDefenseModel({defTable:t.defTable,defPrios:t.defPrios});return{systemModel:i,affModel:s,balanceModel:l,defModel:c,cacheModel:createCacheModel({cacheTable:t.cacheTable,cacheNames:t.cacheNames,haveAff:e=>s.haveAff(e),haveDef:e=>c.haveDef(e)}),limbModel:createLimbModel({now:a,setTimeoutFn:e.setTimeout,clearTimeoutFn:e.clearTimeout})}},ua="parry",da=25,resetParryPriorities=e=>{Object.keys(ve.long).forEach(t=>{e.setDefaultPriority(`parrying ${t}`,0,ua),e.get(`guarding ${t}`)&&e.setDefaultPriority(`guarding ${t}`,0,ua)})},createCombatDomainService=({affModel:e,defModel:t,limbModel:n,systemModel:a,queueController:o,serverside:i})=>({observeLimbHit:({limb:t,amount:a,source:o="manual",at:s}={})=>applyObservedLimbHit({limbModel:n,affModel:e,serverside:i,limb:t,amount:a,source:o,at:s}),observeLimbReset:({limb:t,source:a="manual",at:o}={})=>applyObservedLimbReset({limbModel:n,affModel:e,serverside:i,limb:t,source:a,at:o}),observeLimbStage:({limb:t,stage:a,source:o="manual",at:s}={})=>applyObservedLimbStage({limbModel:n,affModel:e,serverside:i,limb:t,stage:a,source:o,at:s}),parry(e){resetParryPriorities(t);const n=ve.short[e]||e,i=t.get(`guarding ${n}`);let s;return i&&a.isClass(i.skills)?(t.setDefaultPriority(`guarding ${n}`,da,ua),s=`guard ${n}`):(t.setDefaultPriority(`parrying ${n}`,da,ua),a.isClass("Dragon")?(t.setCommand(`parrying ${n}`,`clawparry ${n}`,ua),s=`clawparry ${n}`):(t.setCommand(`parrying ${n}`,`parry ${n}`,ua),s=`parry ${n}`)),o.prepend("freeQueue",s),{limbName:n,command:s}}}),isRecordValue=e=>Boolean(e)&&"object"==typeof e&&!Array.isArray(e),hasSupportedSchemaVersion=e=>isRecordValue(e)&&isSupportedPersistenceSchemaVersion(e.schemaVersion),createPersistenceStore=({adapter:e,key:t="nexSys4Settings",noticeCenter:n}={})=>{let a=!1;const noticeSchemaResetIfNeeded=e=>{a||!isRecordValue(e)||null==e.schemaVersion||isSupportedPersistenceSchemaVersion(e.schemaVersion)||(a=!0,n?.publish?.("persistence","Saved nexSys4 settings were in an older format and have been reset to defaults.",{force:!0}))},read=()=>{const n=e.getVariable(t);return noticeSchemaResetIfNeeded(n),{key:t,exists:hasSupportedSchemaVersion(n),snapshot:deepClone$1(normalizePersistenceSnapshot(n))}},load=()=>read().snapshot,save=(n={})=>{const a=deepClone$1(normalizePersistenceSnapshot(n,{assumeCurrentVersion:!0}));return e.setVariable(t,a),deepClone$1(a)};return{key:t,read,load,save}},createNoticeCenter=({adapter:e,systemModel:t})=>({publish:(n,a,o={})=>{const i=t.getSettings().notices||{},{force:s=!1,...l}=o;(s||!1!==i[n])&&e.notice(String(a),{category:n,...l})}}),pa=Object.freeze({PLANNED:"planned",SENT:"sent",AWAITING_COMPLETION:"awaiting-completion",COMPLETED:"completed",EXPIRED:"expired",RECOVERING:"recovering"}),createOutputCycle=({adapter:e,dispatchCommands:t,systemModel:n,serverside:a,outputPlanner:o,noticeCenter:i,options:s={}}={})=>{const now=()=>e?.now?.()??Date.now();let l=[],c="",u=1,d=null,p=null,m=null,g=[];const h=`echo SystemEvent ${ne.OUTPUT_COMPLETE}`,b=Math.max(50,Number(s.outputCompletionTimeoutMs||1e3)),y=Math.max(0,Number(s.maxOutputRecoveryAttempts??2)),clearCompletionTimer=()=>{m&&(e?.clearTimeout?.(m),m=null)},recordBatchState=(e,t,n={})=>{if(!e)return null;const a=now();return e.state=t,e.stateHistory.push({state:t,at:a}),Object.assign(e,n),e},snapshotBatch=e=>e?{id:e.id,source:e.source,state:e.state,stateHistory:e.stateHistory.map(e=>({...e})),completionRequired:e.completionRequired,recoveryAttempts:e.recoveryAttempts,maxRecoveryAttempts:e.maxRecoveryAttempts,commands:[...e.commands],dispatchedCommands:[...e.dispatchedCommands],serversideCommands:[...e.serversideCommands],batchCount:e.batchCount,createdAt:e.createdAt,sentAt:e.sentAt??null,completedAt:e.completedAt??null,expiredAt:e.expiredAt??null,lastRecoveryAt:e.lastRecoveryAt??null}:null,storeLastBatch=e=>{p=snapshotBatch(e)},createBatch=({source:e,intents:t=[],commands:n,serversideCommands:a,maxCommands:o})=>{const i=t.some(e=>!0===e?.requiresCompletion),s=i?n.filter(e=>e!==h):[...n],l=i?chunkCommandsWithTrailing(s,{maxEntries:o,trailing:[h]}):chunkCommands(s,o);return{id:u++,source:e,state:pa.PLANNED,stateHistory:[{state:pa.PLANNED,at:now()}],completionRequired:i,recoveryAttempts:0,maxRecoveryAttempts:y,commands:[...s],dispatchedCommands:i?[...s,h]:[...s],serversideCommands:[...a],batches:l,batchCount:l.length,createdAt:now(),observedOutbound:!1}},dispatchBatchBatches=(e,n,a={})=>{n.forEach((o,i)=>{t(o,{source:a.source||"output-cycle",cycleSource:e.source,batch:i+1,batchCount:n.length,outputBatchId:e.id,outputBatchState:e.state,recoveryAttempt:a.recoveryAttempt||0})})},scheduleCompletionTimeout=t=>{clearCompletionTimer(),m=e?.setTimeout?.(()=>{if(d&&d.id===t.id&&d.completionRequired){if(recordBatchState(d,pa.EXPIRED,{expiredAt:now()}),c="",d.recoveryAttempts>=d.maxRecoveryAttempts)return i?.publish?.("output",`Output completion confirmation expired after ${d.maxRecoveryAttempts} recovery probe(s).`,{force:!0}),storeLastBatch(d),d=null,void clearCompletionTimer();d.recoveryAttempts+=1,recordBatchState(d,pa.RECOVERING,{lastRecoveryAt:now()}),dispatchBatchBatches(d,[[h]],{source:"output-cycle-recovery",recoveryAttempt:d.recoveryAttempts}),scheduleCompletionTimeout(d)}},b)};return{planAndSend:({source:e="prompt"}={})=>{const t=n.getRuntime(),i=n.getSettings();if(t.paused||t.rulesSuspended)return t.rulesSuspended&&a.evaluate({emitCommands:!1,source:`${e}:rule-suspend-check`}),[];const s=a.getCuringSets?.().activeSet||"";if(s&&"nexsys4-default"!==s)return[];if(d)return[];const u="output-complete"===e?[...g]:[];g=[];const p=o.plan({source:e,injectedCommands:l,suppressedServersideCommands:u});if(n.getRuntime().paused||n.getRuntime().rulesSuspended)return l=[],[];if(!p.commands.length)return l=[],[];const m=Math.max(1,Number(i.maxSendPerChunk||20)),h=createBatch({source:e,intents:p.intents,commands:p.commands,serversideCommands:p.serversideCommands,maxCommands:m}),b=h.dispatchedCommands.join("");return b===c?[]:(h.serversideCommands.length&&!h.observedOutbound&&(a.observeOutbound(h.serversideCommands),h.observedOutbound=!0),recordBatchState(h,pa.SENT,{sentAt:now()}),dispatchBatchBatches(h,h.batches),c=b,h.completionRequired?(d=h,recordBatchState(d,pa.AWAITING_COMPLETION),scheduleCompletionTimeout(d)):(recordBatchState(h,pa.COMPLETED,{completedAt:now()}),storeLastBatch(h)),l=[],p.commands)},markComplete:()=>!!d&&(clearCompletionTimer(),g=[...d.serversideCommands],d.serversideCommands.length&&a.acknowledgeCommands(d.serversideCommands),recordBatchState(d,pa.COMPLETED,{completedAt:now()}),storeLastBatch(d),d=null,!0),isWaitingForCompletion:()=>d?.state===pa.AWAITING_COMPLETION||d?.state===pa.RECOVERING,isBlockingOutput:()=>Boolean(d),getLifecycleState:()=>({activeBatch:snapshotBatch(d),lastBatch:snapshotBatch(p)}),invalidate(){c=""},injectCommands(e=[]){l=[...l,...e.filter(Boolean)]},dispose(){clearCompletionTimer(),d=null,g=[]}}},createRuntimeServices=({adapter:e,options:t={},models:n,controllers:a})=>{const{systemModel:o,affModel:i,defModel:s,limbModel:l}=n,{commandDispatcher:c,queueController:u,serverside:d,defensePlanner:p,precachePlanner:m,outputPlanner:g}=a,h=createNoticeCenter({adapter:e,systemModel:o});return{persistence:createPersistenceStore({adapter:e,key:t.persistenceKey||"nexSys4Settings",noticeCenter:h}),combatService:createCombatDomainService({affModel:i,defModel:s,limbModel:l,systemModel:o,queueController:u,serverside:d}),noticeCenter:h,defensePlanner:p,precachePlanner:m,outputCycle:createOutputCycle({adapter:e,dispatchCommands:c.sendCommands,systemModel:o,serverside:d,outputPlanner:g,noticeCenter:h,options:t})}},createRuntimeDependencies=({adapter:e,seedData:t,options:n={}})=>{const now=()=>e.now(),a=createModels({adapter:e,seedData:t,options:n,now}),o=createDomainControllers({adapter:e,seedData:t,options:n,now,models:a}),i=createRuntimeServices({adapter:e,options:n,models:a,controllers:o});return{now,...o,...a,...i}},createRuntimeFlushCoordinator=({adapter:e,systemModel:t,serverside:n,outputCycle:a,flushGmcpBuffer:o})=>{const now=()=>e?.now?.()??Date.now(),i={started:!1,safetyTimer:null,dirty:!1,flushing:!1,dirtyAt:null},clearSafetyTimer=()=>{i.safetyTimer&&(e.clearTimeout(i.safetyTimer),i.safetyTimer=null)},isRuntimeReady=()=>isRuntimeReadyPhase(t.getRuntime().phase),hasPendingSafetyWork=()=>{const e="function"!=typeof n.isDirty||n.isDirty();return i.dirty&&e},scheduleSafetyFlush=()=>{const n=t.getSettings(),a=Number(n.flushSafetyMs||120),o=Number(n.flushSafetyMaxWaitMs||500),s=now();i.dirtyAt||(i.dirtyAt=s),clearSafetyTimer();const l=s-i.dirtyAt,c=l>=o?0:Math.min(a,o-l);i.safetyTimer=e.setTimeout(()=>{i.safetyTimer=null,hasPendingSafetyWork()?(i.dirtyAt=null,flushCycle("safety-flush")):i.dirtyAt=null},c)},invalidateOutput=()=>{i.dirty=!0,a.invalidate?.()},markDirty=(e="dirty")=>{if(invalidateOutput(),n.markDirty(e),!isRuntimeReady())return clearSafetyTimer(),void(i.dirtyAt=null);i.flushing||a.isBlockingOutput?.()||scheduleSafetyFlush()},flushCycle=(e="prompt")=>{if(!i.started||i.flushing)return[];if(clearSafetyTimer(),!isRuntimeReady())return[];i.flushing=!0;try{if(o(),t.getRuntime().paused)return i.dirty=!1,[];const n=a.planAndSend({source:e});return i.dirty=a.isBlockingOutput()&&0===n.length,i.dirty||(i.dirtyAt=null),n}finally{i.flushing=!1}};return{start(){i.started=!0},stop(){i.started=!1,i.dirty=!1,i.flushing=!1,i.dirtyAt=null,clearSafetyTimer()},isStarted:()=>i.started,isFlushing:()=>i.flushing,invalidateOutput,markDirty,flushCycle}},cell=(e="",t="",n="")=>({text:e,fg:t,bg:n}),createDefaultCureColors=()=>({antimony:{fg:"olive",bg:""},argentum:{fg:"royalblue",bg:""},arsenic:{fg:"",bg:""},aurum:{fg:"ForestGreen",bg:""},azurite:{fg:"",bg:""},bisemutum:{fg:"",bg:""},calamine:{fg:"",bg:""},calcite:{fg:"slategray",bg:""},cinnabar:{fg:"greenyellow",bg:""},cuprum:{fg:"DeepSkyBlue",bg:""},ferrum:{fg:"DarkOrange",bg:""},gypsum:{fg:"",bg:""},magnesium:{fg:"Red",bg:""},plumbum:{fg:"Gold",bg:""},potash:{fg:"",bg:""},quartz:{fg:"",bg:""},quicksilver:{fg:"",bg:""},realgar:{fg:"firebrick",bg:""},stannum:{fg:"Tan",bg:""},caloric:{fg:"darkseagreen",bg:""},mending:{fg:"orchid",bg:""},epidermal:{fg:"sienna",bg:""},restoration:{fg:"darkviolet",bg:""},health:{fg:"lightpink",bg:""},writhe:{fg:"PaleGoldenRod",bg:"darkslategray"}}),createDefaultVars=()=>({blackout:!1,paused:cell("","red"),retard:cell("","blue"),aeon:cell("","red"),h:cell("0","green"),m:cell("0","green"),e:cell("0","green"),w:cell("0","green"),maxh:cell(""),maxm:cell(""),maxe:cell(""),maxw:cell(""),ph:cell("100%","green"),pm:cell("100%","green"),pe:cell("100%"),pw:cell("100%"),diffh:cell("","green"),diffm:cell("","green"),diffhp:cell("","green"),diffmp:cell("","green"),target:cell("","pink"),targetHP:cell("","green"),eq:cell(""),bal:cell(""),c:cell(""),k:cell(""),d:cell(""),b:cell(""),shield:cell("","cyan"),prismatic:cell("","magenta"),rage:cell("","red"),karma:cell("","green"),essence:cell("","purple"),kai:cell("","blue")}),createDefaultAffs=(e=createDefaultCureColors())=>({addiction:{text:"add",...e.ferrum},aeon:{text:"ae",...e.cinnabar},agoraphobia:{text:"agor",...e.argentum},amnesia:{text:"amn",fg:"",bg:""},anorexia:{text:"ANO",...e.epidermal},asthma:{text:"AST",...e.aurum},blackout:{text:"bo",fg:"",bg:""},blindness:{text:"unb",...e.arsenic},bound:{text:"bnd",...e.writhe},brokenleftarm:{text:"la1",...e.mending},brokenleftleg:{text:"ll1",...e.mending},brokenrightarm:{text:"ra1",...e.mending},brokenrightleg:{text:"rl1",...e.mending},bruisedribs:{text:"ribs",fg:"",bg:""},burning:{text:"burn",...e.mending},calcifiedskull:{text:"calh",...e.restoration},calcifiedtorso:{text:"calt",...e.restoration},claustrophobia:{text:"clau",...e.stannum},clumsiness:{text:"clu",...e.aurum},concussion:{text:"conc",...e.restoration},confusion:{text:"con",...e.stannum},corruption:{text:"corr",fg:"",bg:""},crackedribs:{text:"cr",...e.health},crushedthroat:{text:"cru",...e.mending},daeggerimpale:{text:"daeg",...e.writhe},damage:{text:"dmg",fg:"tomato",bg:""},damagedleftarm:{text:"la2",...e.restoration},damagedleftleg:{text:"ll2",...e.restoration},damagedrightarm:{text:"ra2",...e.restoration},damagedrightleg:{text:"rl2",...e.restoration},damagedhead:{text:"hd2",...e.restoration},darkshade:{text:"dark",...e.ferrum},dazed:{text:"dzd",...e.cinnabar},dazzled:{text:"dzl",...e.mending},deadening:{text:"dea",...e.cinnabar},deafness:{text:"und",...e.calamine},dehydrated:{text:"deh",fg:"",bg:""},dementia:{text:"dem",...e.stannum},depression:{text:"dep",...e.plumbum},deteriorate:{text:"det",fg:"",bg:""},disloyalty:{text:"disl",...e.realgar},disrupted:{text:"disr",fg:"",bg:""},dissonance:{text:"disso",...e.plumbum},dizziness:{text:"diz",...e.plumbum},enscorcelled:{text:"ensor",fg:"",bg:""},entangled:{text:"entgl",...e.writhe},epilepsy:{text:"epi",...e.plumbum},fear:{text:"fear",fg:"",bg:""},flushings:{text:"flush",...e.ferrum},fratricide:{text:"frat",...e.ferrum},frozen:{text:"frz",...e.caloric},generosity:{text:"gen",...e.cuprum},grievouswounds:{text:"grv",...e.health},guilt:{text:"gui",...e.argentum},haemophilia:{text:"haem",...e.ferrum},hallucinations:{text:"hall",...e.stannum},hamstrung:{text:"hms",fg:"",bg:""},healthleech:{text:"hthl",...e.aurum},heartseed:{text:"heart",...e.restoration},hellsight:{text:"hell",...e.realgar},horror:{text:"hor",...e.plumbum},hypersomnia:{text:"hypers",...e.stannum},hypochondria:{text:"hypoch",...e.lobelia},hypothermia:{text:"hypoth",...e.restoration},icefisted:{text:"ice",fg:"",bg:""},impaled:{text:"impl",...e.writhe},impatience:{text:"IMPAT",...e.plumbum},indifference:{text:"ind",...e.cuprum},insomnia:{text:"insomnia",fg:"",bg:""},itching:{text:"itch",...e.epidermal},justice:{text:"just",...e.cuprum},kkractlebrand:{text:"kkr",...e.health},laceratedthroat:{text:"lac2",...e.restoration},latched:{text:"latch",...e.health},lethargy:{text:"let",...e.ferrum},lightbind:{text:"light",fg:"",bg:""},loneliness:{text:"lon",...e.argentum},lovers:{text:"love",...e.cuprum},manaleech:{text:"man",...e.realgar},mangledleftarm:{text:"la3",...e.restoration},mangledleftleg:{text:"ll3",...e.restoration},mangledrightarm:{text:"ra3",...e.restoration},mangledrightleg:{text:"rl3",...e.restoration},mangledhead:{text:"hd3",...e.restoration},masochism:{text:"maso",...e.argentum},mildtrauma:{text:"tor1",...e.restoration},mycalium:{text:"myc",...e.plumbum},nausea:{text:"nau",...e.ferrum},numbedleftarm:{text:"nbla",fg:"",bg:""},numbedrightarm:{text:"nbra",fg:"",bg:""},pacified:{text:"pac",...e.cuprum},paralysis:{text:"PAR",...e.magnesium},paranoia:{text:"prn",...e.stannum},parasite:{text:"prs",...e.aurum},peace:{text:"pea",...e.cuprum},phlogisticated:{text:"phlog",fg:"",bg:""},pinshot:{text:"psh",fg:"",bg:""},pressure:{text:"pres",...e.calcite},prone:{text:"pr",fg:"",bg:""},pyramides:{text:"pyra",...e.magnesium},pyre:{text:"pyre",...e.cuprum},rebbies:{text:"reb",...e.aurum},recklessness:{text:"reck",...e.argentum},retardation:{text:"ret",fg:"",bg:""},retribution:{text:"retr",...e.cuprum},revealed:{text:"rev",fg:"",bg:""},sandfever:{text:"sand",...e.plumbum},scalded:{text:"scald",...e.epidermal},scytherus:{text:"scy",...e.ferrum},selarnia:{text:"sel",...e.mending},sensitivity:{text:"sen",...e.aurum},serioustrauma:{text:"tor2",...e.restoration},shadowmadness:{text:"shad",...e.plumbum},shivering:{text:"shiv",...e.caloric},shyness:{text:"shy",...e.plumbum},skullfractures:{text:"sf",...e.health},slashedthroat:{text:"lac1",...e.epidermal},sleeping:{text:"slp",fg:"",bg:""},slickness:{text:"SLI",...e.magnesium},slimeobscure:{text:"nkh",fg:"",bg:""},spiritburn:{text:"spirB",...e.argentum},spiritwrack:{text:"spirW",fg:"",bg:""},stupidity:{text:"st",...e.plumbum},stuttering:{text:"stut",...e.epidermal},homunculusmercury:{text:"merc",fg:"",bg:""},temperedcholeric:{text:"choH",...e.antimony},temperedmelancholic:{text:"melaH",...e.antimony},temperedphlegmatic:{text:"phleH",...e.antimony},temperedsanguine:{text:"sanH",...e.antimony},tenderskin:{text:"tend",...e.argentum},tension:{text:"tens",...e.cinnabar},timeflux:{text:"tmfx",fg:"",bg:""},timeloop:{text:"tmlp",...e.cuprum},tonguetied:{text:"tngt",...e.restoration},torntendons:{text:"tt",...e.health},transfixation:{text:"trfx",...e.writhe},unweavingbody:{text:"unwB",...e.ferrum},unweavingspirit:{text:"unwS",...e.cinnabar},unweavingmind:{text:"unwM",...e.plumbum},vertigo:{text:"vert",...e.argentum},vitrified:{text:"vitri",fg:"",bg:""},voidfisted:{text:"void",fg:"",bg:""},voyria:{text:"voy",fg:"",bg:""},weariness:{text:"wea",...e.aurum},webbed:{text:"web",...e.writhe},whisperingmadness:{text:"mad",...e.argentum},wristfractures:{text:"wf",...e.health}}),createDefaultPromptState=()=>{const e=createDefaultCureColors();return{vars:createDefaultVars(),affs:createDefaultAffs(e),cureColors:e}},ma={"&":"&","<":"<",">":">",'"':""","'":"'"},escapeHtml=e=>String(e??"").replace(/[&<>"']/g,e=>ma[e]),renderChunk=(e,t="",n="")=>{if(""===e||null==e)return"";const a=[];return t&&a.push(`color:${t}`),n&&a.push(`background-color:${n}`),`<span${a.length?` style="${a.join(";")}"`:""}>${escapeHtml(e)}</span>`},createPromptBuilder=({vars:e,affs:t,cureColors:n,renderAffsHtml:a,renderDiffHtml:o,renderTargetHtml:i,renderVarHtml:s,renderChunkHtml:l=renderChunk})=>{const c=[],u={vars:e,affs:t,cureColors:n,add(t,n,a){if(""===t||null==t)return u;const o="string"==typeof t?e[t]:null;return o&&"object"==typeof o&&"text"in o?c.push("function"==typeof s?s(t):l(o.text,o.fg,o.bg)):c.push(l(t,n,a)),u},addHTML:e=>(e&&c.push(String(e)),u),addAffs:()=>(c.push(a()),u),addDiff:()=>(c.push(o()),u),addTarget:()=>(c.push(i()),u),toHTML:()=>`<span class="nexsys-prompt">${c.join("")}</span>`};return u},fa=new Set(["diffh","diffm","diffhp","diffmp"]),ga=new Set(["target","targetHP"]),getCellSignature=(e={})=>`${String(e.text??"")}\0${String(e.fg??"")}\0${String(e.bg??"")}`,createPromptRenderer=({state:e,getComposer:t,getSortedAffNames:n,getAffSnapshot:a,renderChunkHtml:o=renderChunk})=>{const i=new Map,s=new Map,l=new Map,c=new Map;let u="",d="",p="",m="",g=!0,h=!0,b=!0,y=!0,v=null,S=Boolean(e.vars.blackout),x=[];const markPromptDirty=()=>{y=!0},markVarsDirty=(t=[])=>{Array.isArray(t)&&t.length&&(t.forEach(t=>{const n=e.vars[t];n&&"object"==typeof n&&"text"in n&&s.delete(t),fa.has(t)&&(h=!0),ga.has(t)&&(b=!0)}),y=!0)},syncExternalVarMutations=()=>{let t=!1;const n=new Set;Object.keys(e.vars||{}).forEach(a=>{n.add(a);const o=e.vars[a];if(!o||"object"!=typeof o||!("text"in o))return void((s.has(a)||i.has(a))&&(s.delete(a),i.delete(a),t=!0));const l=getCellSignature(o);s.get(a)!==l&&(s.delete(a),i.delete(a),t=!0,fa.has(a)&&(h=!0),ga.has(a)&&(b=!0))}),[...s.keys()].forEach(e=>{n.has(e)||(s.delete(e),i.delete(e),t=!0,fa.has(e)&&(h=!0),ga.has(e)&&(b=!0))});const a=Boolean(e.vars.blackout);a!==S&&(S=a,t=!0),t&&(y=!0)},syncExternalAffMutations=()=>{if(g||!x.length)return;let t=!1;x.forEach(n=>{const a=getCellSignature(e.affs[n]||{});l.get(n)!==a&&(t=!0)}),t&&(g=!0,y=!0)},syncExternalCureColorMutations=()=>{let t=!1;const n=new Set;Object.keys(e.cureColors||{}).forEach(a=>{n.add(a);const o=getCellSignature(e.cureColors[a]||{});c.get(a)!==o&&(t=!0)}),[...c.keys()].forEach(e=>{n.has(e)||(t=!0)}),t&&(y=!0)},renderVarHtml=t=>{const n=e.vars[t];if(!n||"object"!=typeof n||!("text"in n))return"";const a=getCellSignature(n);return s.get(t)===a&&i.has(t)||(i.set(t,o(n.text,n.fg,n.bg)),s.set(t,a)),i.get(t)||""},buildAffsHtml=()=>{const t=n()||[],{affs:i}=e;if(x=[...t],l.clear(),!t.length)return'<span class="nexsys-prompt-affs mono"></span>';const s=[o("[","brown")];for(let e=0;e<t.length;e+=1){const n=t[e],c=i[n]||{text:n,fg:"",bg:""},u="function"==typeof a&&a(n)||{},d=Number(u.max)>1&&Number.isFinite(Number(u.count))?`(${Number(u.count)})`:"";l.set(n,getCellSignature(i[n]||{}));const p=e<t.length-1?" ":"";s.push(o(`${c.text}${d}${p}`,c.fg,c.bg))}return s.push(o("]","brown")),`<span class="nexsys-prompt-affs mono">${s.join("")}</span>`},renderAffsHtml=()=>(g&&(u=buildAffsHtml(),g=!1),u),renderDiffHtml=()=>{if(h){const t=e.vars.diffh||{},n=e.vars.diffhp||{},a=e.vars.diffm||{},i=e.vars.diffmp||{},s=[];t.text&&(s.push(o(`${t.text}h`,t.fg,t.bg)),n.text&&s.push(o(`(${n.text})`,n.fg,n.bg))),a.text&&(s.length&&s.push(o(", ")),s.push(o(`${a.text}m`,a.fg,a.bg)),i.text&&s.push(o(`(${i.text})`,i.fg,i.bg))),d=s.join(""),h=!1}return d},renderTargetHtml=()=>{if(b){const t=e.vars.target||{},n=e.vars.targetHP||{},a=[];(t.text||n.text)&&(a.push(o(" [")),t.text&&a.push(renderVarHtml("target")),t.text&&n.text&&a.push(o(": ")),n.text&&a.push(renderVarHtml("targetHP")),a.push(o("] "))),p=a.join(""),b=!1}return p},resetTransients=()=>{const{vars:t}=e,n=["diffh","diffm","diffhp","diffmp"].filter(e=>{const n=t[e];return!(!n||""===n.text)&&(n.text="",!0)});n.length&&markVarsDirty(n)};return{render(){const n=t();if("function"!=typeof n)return"";if(syncExternalVarMutations(),syncExternalAffMutations(),syncExternalCureColorMutations(),!y&&n===v)return m;const a=createPromptBuilder({vars:e.vars,affs:e.affs,cureColors:e.cureColors,renderAffsHtml,renderDiffHtml,renderTargetHtml,renderVarHtml,renderChunkHtml:o});try{n(a)}catch(i){return console.error("nexSys4 prompt compose error",i),""}return m=a.toHTML(),y=!1,v=n,Object.keys(e.cureColors||{}).forEach(t=>{c.set(t,getCellSignature(e.cureColors[t]||{}))}),[...c.keys()].forEach(t=>{t in(e.cureColors||{})||c.delete(t)}),resetTransients(),m},markAffsDirty(){g=!0,y=!0},isAffDirty:()=>g,markDiffDirty(){h=!0,y=!0},markTargetDirty(){b=!0,y=!0},markVarsDirty,markPromptDirty,isPromptDirty:()=>y}},defaultCompose=e=>{const{vars:t}=e;t.blackout?e.add("-","reset"):(e.add("paused"),e.add("aeon"),e.add("retard"),e.add("h"),e.add(`(${t.ph.text}), `,t.h.fg,t.h.bg),e.add("m"),e.add(`(${t.pm.text}) `,t.m.fg,t.m.bg),t.rage.text&&Number(t.rage.text)>0&&e.add(`${t.rage.text}R `,t.rage.fg,t.rage.bg),t.karma.text&&e.add(`${t.karma.text}K `,t.karma.fg,t.karma.bg),e.add("eq"),e.add("bal"),e.add("|"),e.add("c"),e.add("k"),e.add("d"),e.add("b"),e.add(" "),e.addAffs(),e.addDiff())},ha=new Set(["diffh","diffm","diffhp","diffmp"]),ba=new Set(["target","targetHP"]),ya=Object.freeze(["deafness","blindness","insomnia"]),clampPct=e=>{const t=Number(e);return Number.isFinite(t)?t<0?0:t>100?100:t:0},colorGradation=e=>{const t=clampPct(e),n=t<75?50:Math.abs(t-100)/2+25;return`hsl(${(1.2*t).toFixed(0)}, 100%, ${n}%)`},colorPercentage=e=>{const t=Number(e)||0;return t>75?"green":t>=33?"yellow":"red"},createPromptPresenter=({publicEvents:e,affModel:t,defModel:n,balanceModel:a,systemModel:o,renderPrompt:i}={})=>{const s=createDefaultPromptState();let l=defaultCompose;const isPromptDefTracked=e=>"function"==typeof n?.get?Boolean(n.get(e)):"function"==typeof n?.haveDef,c=ya.filter(isPromptDefTracked),u=new Set(c),haveDef=e=>Boolean(n?.haveDef?.(e)),d=createPromptRenderer({state:s,getComposer:()=>l,getSortedAffNames:()=>{const e=t?.currentSorted&&t.currentSorted()||[],n=new Set,a=[];return e.forEach(e=>{u.has(e)||n.has(e)||(n.add(e),a.push(e))}),c.forEach(e=>{haveDef(e)||n.has(e)||(n.add(e),a.push(e))}),a},getAffSnapshot:e=>t?.get?.(e)||null}),isRecord=e=>e&&"object"==typeof e&&!Array.isArray(e),isCellLike=e=>isRecord(e)&&("text"in e||"fg"in e||"bg"in e),normalizeCellField=e=>null==e?"":String(e),getVarRegion=e=>ha.has(e)?"diff":ba.has(e)?"target":"",ensureVarCell=e=>{const t=s.vars[e];if(t&&"object"==typeof t&&"text"in t)return t;if(e in s.vars)return null;const n={text:"",fg:"",bg:""};return s.vars[e]=n,d.markPromptDirty(),n},applyCell=(e,t={},n={})=>{const a=n.create?ensureVarCell(e):s.vars[e];if(!a||"object"!=typeof a||!("text"in a))return!1;let o=!1;if("text"in t){const e=normalizeCellField(t.text);a.text!==e&&(a.text=e,o=!0)}if("fg"in t){const e=normalizeCellField(t.fg);a.fg!==e&&(a.fg=e,o=!0)}if("bg"in t){const e=normalizeCellField(t.bg);a.bg!==e&&(a.bg=e,o=!0)}return!!o&&(d.markVarsDirty([e]),"diff"===n.region&&d.markDiffDirty(),"target"===n.region&&d.markTargetDirty(),!0)},applyFlag=(e,t)=>{const n=Boolean(t);return s.vars[e]!==n&&(s.vars[e]=n,d.markPromptDirty(),!0)},patchVars=(e={})=>{if(!isRecord(e))return!1;let t=!1;return Object.entries(e).forEach(([e,n])=>{const a=s.vars[e],o=getVarRegion(e);"boolean"!=typeof a?"boolean"!=typeof n||void 0!==a?t=applyCell(e,isCellLike(n)?n:{text:n},{create:!0,region:o})||t:s.vars[e]!==n&&(s.vars[e]=n,d.markPromptDirty(),t=!0):t=applyFlag(e,n)||t}),t},patchAffs=(e={})=>{if(!isRecord(e))return!1;let t=!1;return Object.entries(e).forEach(([e,n])=>{if(null===n)return void(e in s.affs&&(delete s.affs[e],t=!0));const a=isCellLike(n)?n:{text:n},o=s.affs[e],i=o&&"object"==typeof o?o:s.affs[e]={text:"",fg:"",bg:""};["text","fg","bg"].forEach(e=>{if(!(e in a))return;const n=normalizeCellField(a[e]);i[e]!==n&&(i[e]=n,t=!0)})}),t&&d.markAffsDirty(),t},patchCureColors=(e={})=>{if(!isRecord(e))return!1;let t=!1;return Object.entries(e).forEach(([e,n])=>{if(null===n)return void(e in s.cureColors&&(delete s.cureColors[e],t=!0));const a=isRecord(n)?n:{fg:n},o=s.cureColors[e],i=o&&"object"==typeof o?o:s.cureColors[e]={fg:"",bg:""};["fg","bg"].forEach(e=>{if(!(e in a))return;const n=normalizeCellField(a[e]);i[e]!==n&&(i[e]=n,t=!0)})}),t&&d.markPromptDirty(),t},updateBalanceGlyphs=()=>{applyCell("eq",{text:a?.have?.(Hn.EQUILIBRIUM)?"e":""}),applyCell("bal",{text:a?.have?.(Hn.BALANCE)?"x":""})},updateDefGlyphs=()=>{applyCell("c",{text:haveDef("cloak")?"c":""}),applyCell("k",{text:haveDef("kola")?"k":""}),applyCell("d",{text:haveDef("deafness")?"d":""}),applyCell("b",{text:haveDef("blindness")?"b":""}),applyCell("shield",{text:haveDef("shield")?"(":""}),applyCell("prismatic",{text:haveDef("prismatic")?"[":""})},pctOf=(e,t)=>{const n=Number(e)||0,a=Number(t)||0;return a>0?100*n/a:0},onVitals=(e={})=>{const t=e.current||o?.snapshot?.().char||{},n=pctOf(t.hp,t.maxhp),a=pctOf(t.mp,t.maxmp),i=pctOf(t.ep,t.maxep),s=pctOf(t.wp,t.maxwp);applyCell("h",{text:t.hp??"",fg:colorGradation(n)}),applyCell("m",{text:t.mp??"",fg:colorGradation(a)}),applyCell("e",{text:t.ep??"",fg:colorGradation(i)}),applyCell("w",{text:t.wp??"",fg:colorGradation(s)}),applyCell("maxh",{text:t.maxhp??""}),applyCell("maxm",{text:t.maxmp??""}),applyCell("maxe",{text:t.maxep??""}),applyCell("maxw",{text:t.maxwp??""}),applyCell("ph",{text:`${n.toFixed(1)}%`}),applyCell("pm",{text:`${a.toFixed(1)}%`}),applyCell("pe",{text:`${i.toFixed(1)}%`}),applyCell("pw",{text:`${s.toFixed(1)}%`});const l=Number(e.hpDiff||0),c=Number(e.mpDiff||0),u=Number(t.maxhp)||0,d=Number(t.maxmp)||0;if(l){const e=l<0?"red":"green";applyCell("diffh",{text:`${l>0?"+":""}${l}`,fg:e},{region:"diff"}),applyCell("diffhp",{text:u?`${(l/u*100).toFixed(1)}%`:"",fg:e},{region:"diff"})}if(c){const e=c<0?"red":"green";applyCell("diffm",{text:`${c>0?"+":""}${c}`,fg:e},{region:"diff"}),applyCell("diffmp",{text:d?`${(c/d*100).toFixed(1)}%`:"",fg:e},{region:"diff"})}"karma"in t&&applyCell("karma",{text:t.karma??""}),"rage"in t&&applyCell("rage",{text:t.rage??""}),"essence"in t&&applyCell("essence",{text:t.essence??""}),"kai"in t&&applyCell("kai",{text:t.kai??""}),applyFlag("blackout",t.dead)},onRuntimeChange=()=>{const e=o?.snapshot?.().runtime||{};applyCell("retard",{text:e.slowMode?"(r)":""}),applyCell("paused",{text:e.paused?"(p)":""}),applyCell("aeon",{text:e.aeonLocked?"(a)":""})},onTargetChange=()=>{const e=o?.snapshot?.().target||{};applyCell("target",{text:e.text||""},{region:"target"}),applyCell("targetHP",{text:e.hp||""},{region:"target"});const t=parseInt(e.hp,10);Number.isFinite(t)&&applyCell("targetHP",{fg:colorGradation(t)},{region:"target"})},onAffEvent=(e={})=>{"aeon"===e?.name&&applyCell("aeon",{text:t?.haveAff?.("aeon")?"(a)":""}),d.markAffsDirty()},onDefEvent=(e={})=>{updateDefGlyphs(),u.has(e?.id)&&d.markAffsDirty()},onBalanceEvent=()=>updateBalanceGlyphs(),p=[];let m=!1;const subscribe=(t,n)=>{if(!e||"function"!=typeof e.on)return;const a=e.on(t,n);"function"==typeof a&&p.push(a)};return{start:()=>{m||(m=!0,subscribe(te.SYSTEM_VITALS_CHANGED,onVitals),subscribe(te.SYSTEM_RUNTIME_CHANGED,onRuntimeChange),subscribe(te.SYSTEM_PAUSE_CHANGED,onRuntimeChange),subscribe(te.SYSTEM_TARGET_CHANGED,onTargetChange),subscribe(te.AFF_GOT,onAffEvent),subscribe(te.AFF_LOST,onAffEvent),subscribe(te.AFF_STACK_CHANGED,onAffEvent),subscribe(te.AFF_PRIORITY_CHANGED,()=>d.markAffsDirty()),subscribe(te.DEF_GOT,onDefEvent),subscribe(te.DEF_LOST,onDefEvent),subscribe(te.BALANCE_GOT,onBalanceEvent),subscribe(te.BALANCE_LOST,onBalanceEvent),subscribe(te.BALANCE_RESET,onBalanceEvent),subscribe(te.BALANCE_TIMER_RESTARTED,onBalanceEvent),updateDefGlyphs(),updateBalanceGlyphs(),onRuntimeChange())},stop:()=>{p.forEach(e=>{try{e()}catch(t){console.error("nexSys4 prompt presenter unsubscribe failed",t)}}),p.length=0,m=!1},render:(e={})=>{const t=d.render();return"function"==typeof i?i(t,e):t},markAffsDirty:()=>d.markAffsDirty(),markPromptDirty:()=>d.markPromptDirty(),patchVars,patchAffs,patchCureColors,colorGradation,colorPercentage,get vars(){return s.vars},get affs(){return s.affs},get cureColors(){return s.cureColors},get compose(){return l},set compose(e){l="function"==typeof e?e:defaultCompose,d.markPromptDirty()},_state:s,_onVitals:onVitals,_onAffEvent:onAffEvent,_onDefEvent:onDefEvent,_onBalanceEvent:onBalanceEvent,_onRuntimeChange:onRuntimeChange,_onTargetChange:onTargetChange}},va=Object.freeze({INTERNAL:"internal",JS:"js",EVENTSTREAM:"eventstream"}),Sa=Object.freeze({STABLE:"stable",EXPERIMENTAL:"experimental",DEPRECATED:"deprecated"}),xa=/^nexsys4(\.[a-z0-9_-]+)+$/,Ca=Object.freeze(Object.values(va)),wa=Object.freeze(Object.values(Sa)),ka=Object.freeze({[va.INTERNAL]:Object.freeze([null,va.INTERNAL]),[va.JS]:Object.freeze([null,va.INTERNAL,va.JS]),[va.EVENTSTREAM]:Object.freeze([null,va.INTERNAL,va.JS,va.EVENTSTREAM])}),topicEntry=(e,t,n={})=>{const a=n.scopedAudience??null,o={audience:e,scopedAudience:a,stability:n.stability??Sa.STABLE,description:t};return null!=a&&n.scopedPayloadKey&&(o.scopedPayloadKey=n.scopedPayloadKey),Object.freeze(o)},eventStreamTopic=(e,t={})=>topicEntry(va.EVENTSTREAM,e,t),jsTopic=(e,t={})=>topicEntry(va.JS,e,t),scopedEventStreamTopic=(e,t)=>eventStreamTopic(e,{scopedAudience:va.EVENTSTREAM,scopedPayloadKey:t}),isScopedAudienceAllowed=(e,t)=>{const n=ka[e];return Array.isArray(n)&&n.includes(t)},validateRegistryEntry=(e,t)=>{if(!xa.test(e))throw new Error(`Invalid topic registry key "${e}": expected lowercase dotted nexsys4.* form.`);if(!t||"object"!=typeof t||Array.isArray(t))throw new Error(`Invalid registry entry for "${e}": expected an object.`);if(!Ca.includes(t.audience))throw new Error(`Invalid audience for "${e}": received "${t.audience}".`);if(!("scopedAudience"in t))throw new Error(`Missing scopedAudience metadata for "${e}".`);if(null!=t.scopedAudience&&!Ca.includes(t.scopedAudience))throw new Error(`Invalid scopedAudience for "${e}": received "${t.scopedAudience}".`);if(!isScopedAudienceAllowed(t.audience,t.scopedAudience??null))throw new Error(`Invalid scopedAudience for "${e}": "${t.scopedAudience}" exceeds base audience "${t.audience}".`);if(null!=t.scopedAudience&&("string"!=typeof t.scopedPayloadKey||!t.scopedPayloadKey.trim()))throw new Error(`Missing scopedPayloadKey for scoped topic "${e}".`);if(!wa.includes(t.stability))throw new Error(`Invalid stability for "${e}": received "${t.stability}".`);if("string"!=typeof t.description||!t.description.trim())throw new Error(`Invalid description for "${e}": expected a non-empty string.`)},validateTopicRegistry=(e,t=Object.values(te))=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new Error("Invalid topic registry: expected an object.");for(const n of t)if(!Object.prototype.hasOwnProperty.call(e,n))throw new Error(`Missing registry entry for "${n}".`);for(const n of Object.keys(e)){if(!t.includes(n))throw new Error(`Unexpected registry entry for "${n}".`);validateRegistryEntry(n,e[n])}return!0},Ea=Object.freeze({[te.RUNTIME_STARTED]:eventStreamTopic("Runtime startup completed."),[te.RUNTIME_STOPPED]:eventStreamTopic("Runtime shutdown completed."),[te.RAW_GMCP]:eventStreamTopic("Raw GMCP payload observed at the adapter boundary."),[te.SYSTEM_VITALS_CHANGED]:eventStreamTopic("Character vitals changed."),[te.SYSTEM_HEALTH_CHANGED]:eventStreamTopic("Health changed."),[te.SYSTEM_MANA_CHANGED]:eventStreamTopic("Mana changed."),[te.SYSTEM_RAGE_CHANGED]:eventStreamTopic("Rage changed."),[te.SYSTEM_BLEED_CHANGED]:eventStreamTopic("Bleed changed."),[te.SYSTEM_STATUS_CHANGED]:eventStreamTopic("Character status snapshot changed."),[te.SYSTEM_CLASS_CHANGED]:eventStreamTopic("Character class changed."),[te.SYSTEM_TARGET_CHANGED]:eventStreamTopic("Current target changed."),[te.SYSTEM_ROOM_CHANGED]:eventStreamTopic("Current room changed."),[te.SYSTEM_ROOM_ITEMS_CHANGED]:eventStreamTopic("Visible room items changed."),[te.SYSTEM_RUNTIME_CHANGED]:jsTopic("Runtime implementation state changed."),[te.SYSTEM_PAUSE_CHANGED]:eventStreamTopic("Runtime pause state changed."),[te.SYSTEM_PAUSED]:eventStreamTopic("Runtime paused."),[te.SYSTEM_UNPAUSED]:eventStreamTopic("Runtime unpaused."),[te.SYSTEM_LOADED]:eventStreamTopic("Startup game-state initialization completed."),[te.SYSTEM_SETTINGS_CHANGED]:jsTopic("Runtime settings changed."),[te.SYSTEM_BASELINE_CHANGED]:jsTopic("Baseline intent changed."),[te.SYSTEM_DEATH_DETECTED]:eventStreamTopic("Death was detected from character state."),[te.SYSTEM_MOUNT_CHANGED]:eventStreamTopic("Mounted state changed."),[te.SYSTEM_WIELDED_CHANGED]:eventStreamTopic("Wielded equipment changed."),[te.UI_CONFIG_CHANGED]:jsTopic("Configuration dialog open state changed."),[te.AFF_GOT]:scopedEventStreamTopic("Affliction became active.","name"),[te.AFF_LOST]:scopedEventStreamTopic("Affliction was cured or removed.","name"),[te.AFF_STACK_CHANGED]:scopedEventStreamTopic("Affliction stack count changed.","name"),[te.AFF_PRIORITY_CHANGED]:jsTopic("Affliction priority changed."),[te.DEF_GOT]:scopedEventStreamTopic("Defence became active.","id"),[te.DEF_LOST]:scopedEventStreamTopic("Defence expired or was removed.","id"),[te.DEF_PRIORITY_CHANGED]:jsTopic("Defence priority changed."),[te.BALANCE_GOT]:scopedEventStreamTopic("Balance became available.","id"),[te.BALANCE_LOST]:scopedEventStreamTopic("Balance was consumed or lost.","id"),[te.BALANCE_RESET]:scopedEventStreamTopic("Balance timing was reset.","id"),[te.BALANCE_DURATION_OBSERVED]:scopedEventStreamTopic("Observed balance recovery duration changed.","id"),[te.BALANCE_TIMER_RESTARTED]:jsTopic("Balance loss timer was restarted without a state flip."),[te.EQBAL_GOT]:eventStreamTopic("Balance and equilibrium are both available."),[te.LIMB_HIT]:scopedEventStreamTopic("Limb damage was recorded.","limb"),[te.LIMB_RESET]:scopedEventStreamTopic("Limb tracking was reset.","limb"),[te.LIMB_STAGE_CHANGED]:scopedEventStreamTopic("Limb damage stage changed.","limb"),[te.LIMB_DECAY]:jsTopic("Limb damage counter reset after 3 minutes of no hits."),[te.CACHE_AMOUNT_CHANGED]:eventStreamTopic("Cached item counts changed."),[te.CACHE_INVENTORY_LIST]:eventStreamTopic("Inventory cache snapshot applied."),[te.CACHE_RIFT_LIST]:eventStreamTopic("Rift cache snapshot applied."),[te.CACHE_PRECACHE_CHANGED]:jsTopic("Desired precache state changed."),[te.ITEM_ROOM_ADDED]:eventStreamTopic("An item appeared in the current room."),[te.ITEM_ROOM_REMOVED]:eventStreamTopic("An item left the current room."),[te.ITEM_ROOM_UPDATED]:eventStreamTopic("A current-room item changed."),[te.ITEM_ROOM_LIST]:eventStreamTopic("Current-room item list snapshot received."),[te.ITEM_INV_ADDED]:eventStreamTopic("An item was added to inventory."),[te.ITEM_INV_REMOVED]:eventStreamTopic("An item was removed from inventory."),[te.ITEM_INV_UPDATED]:eventStreamTopic("An inventory item changed."),[te.ITEM_INV_LIST]:eventStreamTopic("Inventory item list snapshot received."),[te.QUEUE_UPDATED]:jsTopic("Queue contents changed."),[te.QUEUE_FLUSHED]:jsTopic("Queue flush decision completed."),[te.QUEUE_DEFERRED]:jsTopic("Queue execution was deferred."),[te.QUEUE_CLEARED]:jsTopic("Queue contents were cleared."),[te.QUEUE_SENT]:scopedEventStreamTopic("A queue submission was accepted by the server.","queueName"),[te.QUEUE_FIRED]:scopedEventStreamTopic("A queue fire was acknowledged for a named queue.","queueName"),[te.QUEUE_FIRED_ACK]:eventStreamTopic("Queue fire acknowledgement was recorded."),[te.SERVERSIDE_AFF_PRIORITY_SET]:scopedEventStreamTopic("Live serverside affliction priority confirmation was observed.","id"),[te.SERVERSIDE_DEF_PRIORITY_SET]:scopedEventStreamTopic("Live serverside defence priority confirmation was observed.","id"),[te.SERVERSIDE_DIRTY]:jsTopic("Serverside reconciliation dirty flag changed."),[te.SERVERSIDE_EVALUATED]:jsTopic("Serverside evaluation completed."),[te.SERVERSIDE_RULE_CHANGED]:jsTopic("Legacy generic serverside rule-change signal reserved for compatibility."),[te.RULE_ADDED]:jsTopic("Serverside rule was added to the registry."),[te.RULE_REMOVED]:jsTopic("Serverside rule was removed from the registry."),[te.RULE_ENABLED]:jsTopic("Serverside rule was enabled."),[te.RULE_DISABLED]:jsTopic("Serverside rule was disabled."),[te.RULE_PACK_LOADED]:jsTopic("Serverside rule pack was loaded."),[te.RULE_PACK_UNLOADED]:jsTopic("Serverside rule pack was unloaded."),[te.RULE_ORDER_CHANGED]:jsTopic("Serverside rule evaluation order changed."),[te.RULE_ACTIVATED]:scopedEventStreamTopic("Serverside rule became active.","id"),[te.RULE_DEACTIVATED]:scopedEventStreamTopic("Serverside rule stopped being active.","id")});validateTopicRegistry(Ea);var buildExactTopicSet=e=>new Set(Object.keys(e||{})),buildScopedBaseMap=e=>{const t=new Map;return Object.entries(e||{}).forEach(([e,n])=>{null!=n?.scopedAudience&&t.set(e,n.scopedAudience)}),t},createEventStreamPublisher=({adapter:e,registry:t,globallyEnabled:n,rawGmcpEnabled:a})=>{const o=buildExactTopicSet(t),i=buildScopedBaseMap(t),resolveAudience=e=>{const n=String(e||"").trim();if(!n)return null;if(o.has(n))return t[n].audience;const a=n.lastIndexOf(".");if(a<0)return null;const s=n.slice(0,a);return i.get(s)??null},isAllowed=(e,t)=>!!n&&(t===va.EVENTSTREAM&&!(e===te.RAW_GMCP&&!a)),evaluate=(t,n)=>{const a=String(t||"").trim();return!!isAllowed(a,resolveAudience(a))&&("function"==typeof e?.raiseToEventStream&&e.raiseToEventStream(a,n))};return{attach:e=>e&&"function"==typeof e.onAny?e.onAny((e,t)=>{evaluate(t,e)}):()=>{},evaluate,resolveAudience,debugInfo:()=>({globallyEnabled:Boolean(n),rawGmcpEnabled:Boolean(a),exactTopicCount:o.size,scopedBaseCount:i.size})}},normalizeScopedTopicSegment=e=>{const t=String(e||"").trim().toLowerCase();return t?t.replace(/\s+/g,"_").replace(/[^a-z0-9._-]/g,""):""},normalizePublishedPayload=(e={})=>e&&"object"==typeof e&&!Array.isArray(e)?e:{value:e},normalizeMessage=(e,t={},n)=>{const a=normalizePublishedPayload(t);return{...a,topic:e,at:a.at??n()}},createRuntimeEventPorts=({adapter:e,internalEvents:t,publicEvents:n,now:a})=>{const publishPublic=(e,t={})=>{const o=normalizeMessage(e,t,a);return n.emit(e,o),o},publishPublicScoped=(e,t={},n)=>{const a=publishPublic(e,t),o=normalizeScopedTopicSegment(n);return o?(publishPublic(`${e}.${o}`,a),a):a};return{publishPublic,publishPublicScoped,publishInternal:(e,n={})=>{const o=normalizeMessage(e,n,a);return t.emit(e,o),o},publishAdapterLocal:(t,n={})=>("function"==typeof e?.emitLocal&&e.emitLocal(t,n),n)}},createRuntimeEngine=({adapter:e,seedData:t,options:n={}})=>{const a=resolveAdapterCapabilities(e),{now:o,commandDispatcher:i,systemModel:s,affModel:l,balanceModel:c,defModel:u,cacheModel:d,limbModel:p,persistence:m,queueController:g,serverside:h,combatService:b,noticeCenter:y,defensePlanner:v,precachePlanner:S,outputPlanner:x,outputCycle:C}=createRuntimeDependencies({adapter:e,seedData:t,options:n}),w=createGmcpBlockBuffer({coalesce:!1!==n.coalesceGmcp}),k=createEventBus({label:"nexSys4.internal"}),E=createEventBus({label:"nexSys4.public"}),P=createPromptPresenter({publicEvents:E,affModel:l,defModel:u,balanceModel:c,systemModel:s,renderPrompt:(t,n={})=>a.promptRender?e.renderPrompt(t,n):t}),T=createEventStreamPublisher({adapter:e,registry:Ea,globallyEnabled:!1!==n.publishToEventStream,rawGmcpEnabled:!0===n.publishRawGmcp}),R=createRuntimeEventPorts({adapter:e,internalEvents:k,publicEvents:E,now:o});T.attach(E);const setRuntimePhase=(e,t={})=>s.setRuntime({phase:e,...t}),syncDebugMode=()=>{const t=Boolean(s.getSettings().debug);return a.debugToggle&&e.setDebugEnabled(t),k.setDebugEnabled?.(t),E.setDebugEnabled?.(t),t},M=R.publishPublic,D=R.publishPublicScoped,O=R.publishAdapterLocal,publishStartupPhase=e=>O("StartupPhaseEvent",{phase:e});let $;const I=createCuringSetProvisioner({adapter:e,serverside:h,dispatchCommands:i.sendCommands,setRuntimePhase,publishStartupPhase,options:n}),N=createStartupCoordinator({adapter:e,systemModel:s,serverside:h,persistence:m,seedBaselineFromObservedStartup:()=>U.seedBaselineFromObservedStartup({skipObservedAdoption:I.wasCreatedThisRun()}),noticeCenter:y,buildPersistenceSnapshot:()=>U.buildPersistenceSnapshot(),startupTimeoutMs:n.startupTimeoutMs,maxStartupRetries:n.maxStartupRetries,startupFinalizeTimeoutMs:n.startupFinalizeTimeoutMs,maxStartupFinalizeRecoveryAttempts:n.maxStartupFinalizeRecoveryAttempts,publishStartupPhase,publishLoaded:e=>M(te.SYSTEM_LOADED,e),releaseStartupPause:e=>$.setPaused(!1,e),setRuntimePhase}),L=createGmcpApplier({emit:(e,t)=>k.emit(e,t)}),j=createItemTopicNotifier({publishPublic:M}),queueTranslatedGmcp=e=>{L.translate(e).forEach(e=>{j.notify(e),w.enqueue(e)})},hydrateCacheFromAdapterGmcp=()=>{if(!a.gmcpSnapshot)return!1;const t=e.getGMCP();return!(!t||"object"!=typeof t)&&(d.hydrateFromGmcp?.(t)??!1)},B=createRuntimeFlushCoordinator({adapter:e,systemModel:s,serverside:h,outputCycle:C,flushGmcpBuffer:()=>{w.flush().forEach(({topic:e,payload:t})=>{k.emit(e,t)}),d.completeObservationBlock?.({source:"runtime-flush"})}}),F=createCuringMasterSwitch({setPaused:(e,t)=>$.setPaused(e,t),noticeCenter:y,now:o,options:n});$=createRuntimeControlApi({systemModel:s,serverside:h,queueController:g,noticeCenter:y,curingMasterSwitch:F,dispatchCommands:i.sendCommands,markDirty:B.markDirty,onResume:e=>{B.isFlushing()||B.flushCycle(e)}});const q=createCuringSetGuard({serverside:h,systemModel:s,runtimeControl:$,noticeCenter:y}),U=createRuntimePersistenceApi({persistence:m,systemModel:s,affModel:l,defModel:u,cacheModel:d,serverside:h,syncDebugMode,markDirty:B.markDirty}),V=createRuntimeEventWiring({adapter:e,internalEvents:k}),H=createRuntimeStartupOrchestrator({adapter:e,systemModel:s,persistenceApi:U,startup:N,curingSetProvisioner:I,noticeCenter:y,syncDebugMode,isStarted:B.isStarted,markStarted:B.start,setRuntimePhase,publishStartupPhase,attachEventWiring:()=>{V.attach({options:n,queueTranslatedGmcp,publishPublic:M,publishPublicScoped:D,noticeCenter:y,syncDebugMode,systemModel:s,affModel:l,defModel:u,balanceModel:c,cacheModel:d,limbModel:p,queueController:g,serverside:h,markDirty:B.markDirty,invalidateOutput:B.invalidateOutput,flushCycle:B.flushCycle,outputCycle:C,startup:N,curingSetProvisioner:I,curingSetGuard:q,curingMasterSwitch:F,runtimeControl:$,savePersistence:U.savePersistence})},promptPresenter:P,publishRuntimeStarted:()=>M(te.RUNTIME_STARTED,{source:"runtime-start"}),hydrateCacheFromAdapterGmcp,runtimeControl:$,commandDispatcher:i}),stop=()=>{H.dispose(),B.isStarted()&&(M(te.RUNTIME_STOPPED,{source:"runtime-stop"}),B.stop(),N.dispose?.(),C.dispose?.(),V.dispose(),setRuntimePhase(re.IDLE,{paused:!0,startupFailureMessage:""}),P.stop(),l.dispose?.(),c.dispose?.(),p.dispose(),k.clear(),E.clear(),T.attach(E),a.destroy&&e.destroy())};let W=null;const snapshot=()=>{const e=s.snapshot(),t=l.snapshot(),n=c.snapshot(),a=u.snapshot(),o=d.snapshot(),i=p.snapshot(),m=g.snapshot(),b=h.snapshot();return W&&W.system===e&&W.affs===t&&W.balances===n&&W.defs===a&&W.cache===o&&W.limbs===i&&W.queues===m&&W.serverside===b||(W={system:e,affs:t,balances:n,defs:a,cache:o,limbs:i,queues:m,serverside:b}),W};return{start:H.start,stop,flushCycle:B.flushCycle,savePersistence:U.savePersistence,setPaused:$.setPaused,setSlowMode:$.setSlowMode,setConfigOpen:(e,t="runtime-ui")=>M(te.UI_CONFIG_CHANGED,{open:Boolean(e),source:t}),get paused(){return s.getRuntime().paused},snapshot,adapter:e,models:{systemModel:s,affModel:l,balanceModel:c,defModel:u,cacheModel:d,limbModel:p},services:{combat:b},planners:{defensePlanner:v,precachePlanner:S,outputPlanner:x,outputCycle:C},queueController:g,serverside:h,curingSetGuard:q,noticeCenter:y,persistence:m,commandDispatcher:i,promptPresenter:P,topics:te,onEvent:(e,t)=>E.on(e,t),offEvent:(e,t)=>E.off(e,t),markDirty:B.markDirty,ingestGmcp(e,t){queueTranslatedGmcp({tag:e,payload:t}),!0===n.publishRawGmcp&&M(te.RAW_GMCP,{source:"manual-gmcp",tag:String(e||"").trim().toLowerCase(),payload:t}),B.markDirty(`manual-gmcp:${e}`)},evaluateNow:(e="manual")=>B.flushCycle(e),addOutputCommands(e=[]){C.injectCommands(Array.isArray(e)?e:[e]),B.markDirty("manual-output-inject")},dispatchCommands:i.sendCommands,debugInfo:()=>({adapter:e.debugInfo?.()??null,internalEvents:k.debugInfo?.()??null,publicEvents:E.debugInfo?.()??null,eventStreamPublisher:T.debugInfo?.()??null})}},toArray=e=>Array.isArray(e)?e:[e],normalizeQueueKey=e=>String(e||"").trim(),createPublicCommandApi=({runtime:e})=>{const t=e.queueController,n=t.listQueues().map(e=>({queueId:e,meta:t.getQueue(e)||{}})),a=new Map,o=new Map,resolveQueueId=e=>{const t=normalizeQueueKey(e);return o.get(t)||t},getQueueHandle=e=>{const t=resolveQueueId(e);return a.get(t)||null},inspectQueue=e=>t.getQueue(resolveQueueId(e)),addQueue=(e,n,a)=>t.add(resolveQueueId(e),n,a),prependQueue=(e,n,a)=>t.prepend(resolveQueueId(e),n,a),clearLocalQueue=e=>t.clear(resolveQueueId(e)),clearGameQueue=e=>t.clearQueue(resolveQueueId(e)),flushQueue=(e,n)=>t.flush(resolveQueueId(e),n),isQueued=(e,t)=>{if(!t)return!1;const n=inspectQueue(e);return!!n&&(n.items.includes(t)||n.prepend.includes(t))};n.forEach(({queueId:e,meta:t})=>{a.set(e,{get id(){return e},get queueId(){return e},get name(){return inspectQueue(e)?.name||t.name||""},get type(){return inspectQueue(e)?.type||t.type||""},get exclusions(){return inspectQueue(e)?.exclusions||t.exclusions||[]},inspect:()=>inspectQueue(e),state:()=>inspectQueue(e),add:(t,n)=>addQueue(e,t,n),prepend:(t,n)=>prependQueue(e,t,n),clear:()=>clearLocalQueue(e),clearQueue:()=>clearGameQueue(e),flush:t=>flushQueue(e,t),isQueued:t=>isQueued(e,t)}),o.set(e,e),t.name&&o.set(t.name,e)});const i={controller:t,listQueues:()=>t.listQueues(),inspect:e=>inspectQueue(e),get:e=>getQueueHandle(e),add:(e,t,n)=>addQueue(e,t,n),prepend:(e,t,n)=>prependQueue(e,t,n),clear:e=>clearLocalQueue(e),clearQueue:e=>clearGameQueue(e),flush:(e,t)=>flushQueue(e,t),flushAll:()=>t.flushAll(),isQueued:(e,t)=>isQueued(e,t)},s={listQueues:()=>i.listQueues(),inspect:e=>i.inspect(e),get:e=>i.get(e)},l={};return n.forEach(({queueId:e,meta:t})=>{const n=a.get(e);n&&(l[e]=n,s[e]=n,t.name&&(s[t.name]=n))}),{queue:i,queues:s,...l,sendCmd:(t,n={})=>e.dispatchCommands([t],{source:"public-api",...n}),setTarget(t){const n=String(t??"").trim();if(!n)return{target:"",dispatched:!1,dispatchResult:null};const a=e.dispatchCommands(["settarget "+n],{source:"set-target"});return{target:n,dispatched:Boolean(a),dispatchResult:a}},sendInline:(t=[],n={})=>e.dispatchCommands(toArray(t),{source:"public-api-inline",...n}),addOutput(t=[]){e.addOutputCommands(toArray(t))},evaluateNow:(t="public-api")=>e.evaluateNow(t)}},_a="nexSys4",Pa="https://unpkg.com/nexsys4/dist/nexSys4.nxs",Ta="khaseem",Aa=Object.freeze(["nexSys4.userSettings"]),Ra=1e4,Ma=Object.freeze({fg:"red"}),toLowerName=e=>String(e??"").trim().toLowerCase(),safeCall=e=>{try{return e()}catch{return null}},clonePackageItem=e=>{if(!e||"object"!=typeof e)return null;if("function"==typeof structuredClone)try{return structuredClone(e)}catch{}try{return JSON.parse(JSON.stringify(e))}catch{return e}},getReflexes=e=>safeCall(()=>e?.reflexes?.())??null,getPackageRegistry=e=>{const t=safeCall(()=>e?.packages?.());if("function"==typeof t?.get)return t;const n=safeCall(()=>getReflexes(e)?.packages?.());return"function"==typeof n?.get?n:null},getInstalledPackage=(e,t)=>safeCall(()=>getPackageRegistry(e)?.get(t))??null,findGroupByName=(e,t)=>{if(!Array.isArray(e))return null;const n=toLowerName(t);return e.find(e=>toLowerName(e?.name)===n)??null},capturePreservedGroups=(e,t)=>t.map(t=>{const n=findGroupByName(e?.items,t);return n?{name:t,data:clonePackageItem(n)}:null}).filter(Boolean),applyPreservedGroup=(e,t,n)=>{const a=findGroupByName(e?.items,t.name);a&&t.data&&("function"!=typeof a.apply?"object"==typeof a&&Object.assign(a,clonePackageItem(t.data)):a.apply(t.data,n))},enableShippedGroups=(e,t)=>{if(!Array.isArray(e?.items))return;const n=new Set(t.map(toLowerName));e.items.filter(e=>"group"===e?.type&&!n.has(toLowerName(e.name))).forEach(e=>{e.enabled=!0})},reportUpdateError=({adapter:e,consoleObj:t,message:n,nexusClient:a})=>{t.error(n),"function"!=typeof e?.notice?a?.display?.(n):e.notice(n,Ma)},createAbortSignal=({AbortControllerCtor:e,setTimeoutFn:t,timeoutMs:n})=>{if(!e||n<=0)return{signal:void 0,timeout:null};const a=new e,o=t(()=>a.abort(),n);return{signal:a.signal,timeout:o}},updateNxs=async({adapter:e=null,clearTimeoutFn:t=clearTimeout,consoleObj:n=console,fetchFn:a=globalThis.fetch,nexusClient:o=globalThis.nexusclient,packageName:i=_a,preservedGroupNames:s=Aa,setTimeoutFn:l=setTimeout,skipCharacterName:c=Ta,timeoutMs:u=Ra,url:d=Pa}={})=>{if(c&&toLowerName(o?.charname)===toLowerName(c))return null;let p=null;try{if("function"!=typeof a)throw new Error("fetch is not available.");const e=getInstalledPackage(o,i);if(!e||"function"!=typeof e.apply)throw new Error(`${i} package is not installed in Nexus.`);const t=capturePreservedGroups(e,s),{signal:n,timeout:c}=createAbortSignal({AbortControllerCtor:globalThis.AbortController,setTimeoutFn:l,timeoutMs:u});p=c;const m=await a(d,{cache:"no-store",...n?{signal:n}:{}});if(!m?.ok)throw new Error(`${i} update failed: ${m?.status??"unknown"} ${m?.statusText??""}`.trim());const g=await m.json(),h=getReflexes(o);e.apply(g,h);const b=getInstalledPackage(o,i)??e;return t.forEach(e=>applyPreservedGroup(b,e,h)),enableShippedGroups(b,s),g}catch(m){return reportUpdateError({adapter:e,consoleObj:n,message:"AbortError"===m?.name?`${i} update timed out. Check your connection.`:`${i} update error: ${m?.message??String(m)}`,nexusClient:o}),null}finally{null!==p&&t(p)}},createPublicControlApi=({runtime:e,getModels:t})=>{const applySettings=(n={})=>(t().systemModel.setSettings(n,{setBaseline:!0}),e.savePersistence());return{pause:()=>e.setPaused(!0),unpause:()=>e.setPaused(!1),pauseToggle:()=>e.setPaused(!e.paused),setSlowMode:t=>e.setSlowMode(t),slowOn:()=>e.setSlowMode(!0),slowOff:()=>e.setSlowMode(!1),applySettings,setDebug:e=>applySettings({debug:Boolean(e)}),debugOn:()=>applySettings({debug:!0}),debugOff:()=>applySettings({debug:!1}),debug:()=>({runtime:e.snapshot(),internals:e.debugInfo?.()??null}),start:e.start,stop:e.stop,updateNxs:(t={})=>updateNxs({adapter:e.adapter,...t})}},resolveAudienceFor=(e,t)=>{const n=String(e||"").trim();if(!n)return null;if(Object.prototype.hasOwnProperty.call(t,n))return t[n].audience;const a=n.lastIndexOf(".");return a<0?null:t[n.slice(0,a)]?.scopedAudience??null},isPublicAudience=e=>e===va.JS||e===va.EVENTSTREAM,defaultIsDevMode=()=>{try{const e=globalThis.process?.env?.NODE_ENV;return!!e&&"production"!==e}catch{return!1}},defaultWarn=e=>{console.warn(e)},createPublicEventApi=({runtime:e,registry:t=Ea,isDevMode:n=defaultIsDevMode,warn:a=defaultWarn})=>{const o={on(o,i){const s=String(o||"").trim();return s&&"function"==typeof i?isPublicAudience(resolveAudienceFor(s,t))?e.onEvent(s,i):(n()&&a(`[nexSys4] topic "${s}" is not a public topic`),()=>{}):()=>{}},off(t,n){const a=String(t||"").trim();return!!a&&e.offEvent(a,n)}};return{events:o,on:o.on,off:o.off}},createPublicMutationApi=({runtime:e,getModels:t})=>{const n=e.services.combat,normalizeServersidePriority=e=>{const t=Number(e);return Number.isFinite(t)?t<0?0:t>26?26:t:0},samePriorityMaps=(e={},t={})=>{const n=new Set([...Object.keys(e||{}),...Object.keys(t||{})]);for(const a of n)if(normalizeServersidePriority(e?.[a])!==normalizeServersidePriority(t?.[a]))return!1;return!0},resetPriorities=(e=[],t,n="public-api")=>{let a=!1;return e.forEach(e=>{t(e,n)&&(a=!0)}),a},buildAffPriorityTarget=e=>{const t=e.list().reduce((t,n)=>(t[n]=normalizeServersidePriority(e.getPriority?.(n)),t),{});return e.getCountablePriorityNames?.().forEach(e=>{t[e]=0}),t},buildDefPriorityTarget=(e,t)=>{const n=t.snapshot?.().char?.class||"";return e.list().reduce((t,a)=>{const o=e.get(a);return!o?.serverside||o.static?t:"function"!=typeof e.isAvailableForClass||e.isAvailableForClass(a,n)?(t[a]=normalizeServersidePriority(e.getPriority?.(a)),t):t},{})},restorePersistedPriorities=({restoreAffs:n=!1,restoreDefs:a=!1,reason:o})=>{const{affModel:i,defModel:s,systemModel:l}=t();let c=!1;n&&(c=resetPriorities(i.list(),(e,t)=>i.resetPriority(e,t))||c),a&&(c=resetPriorities(s.list(),(e,t)=>s.resetPriority(e,t))||c);const u=e.serverside.snapshot?.(),d=n?buildAffPriorityTarget(i):null,p=a?buildDefPriorityTarget(s,l):null,m=Boolean(u&&(n&&!samePriorityMaps(u.sessionBaseline?.affPriorities,d)||a&&!samePriorityMaps(u.sessionBaseline?.defPriorities,p)));return!(!c&&!m)&&(refreshServersideBaseline(),e.markDirty(o),!0)},refreshServersideBaseline=()=>{e.serverside.setBaselineFromRuntime?.()},applyMutation=(t,n)=>!!t&&(refreshServersideBaseline(),e.markDirty(n),!0),applyDirtyOnly=(t,n)=>!!t&&(e.markDirty(n),!0);return{updateAffPriority:(e,n)=>applyMutation(t().affModel.setPriority(e,n,"public-api"),"api-aff-priority"),updateAffDefault:(e,n)=>applyMutation(t().affModel.setDefaultPriority(e,n,"public-api"),"api-aff-default"),resetAffPriority:e=>applyMutation(t().affModel.resetPriority(e,"public-api"),"api-aff-priority-reset"),resetAllAffPriorities:()=>restorePersistedPriorities({restoreAffs:!0,reason:"api-aff-priority-reset-all"}),updateDefPriority:(e,n)=>applyMutation(t().defModel.setPriority(e,n,"public-api"),"api-def-priority"),updateDefDefault:(e,n)=>applyMutation(t().defModel.setDefaultPriority(e,n,"public-api"),"api-def-default"),updateDefStatic:(e,n)=>applyMutation(t().defModel.setStatic(e,n,"public-api"),"api-def-static"),updateDefCommand:(e,n)=>applyMutation(t().defModel.setCommand(e,n,"public-api"),"api-def-command"),resetDefPriority:e=>applyMutation(t().defModel.resetPriority(e,"public-api"),"api-def-priority-reset"),resetAllDefPriorities:()=>restorePersistedPriorities({restoreDefs:!0,reason:"api-def-priority-reset-all"}),resetAllPriorities:()=>restorePersistedPriorities({restoreAffs:!0,restoreDefs:!0,reason:"api-priority-reset-all"}),defup(){const n=t().defModel,a={};let o=!1;for(const e of n.list()){const t=n.get(e);if(!t||t.have)continue;n.resetPriority(e,"defup")&&(o=!0);const i=n.get(e),s=normalizeServersidePriority(n.getPriority(e));i?.static&&s>=1&&s<=25&&(a[e]=s)}const i=e.serverside.requestStaticDefPriorities?.(a)??!1;return(o||i)&&(refreshServersideBaseline(),e.markDirty("api-defup")),o||i},defoff(){const n=t().defModel;let a=!1;for(const e of n.list()){const t=n.get(e);t&&!t.have&&(n.setPriority(e,0,"defoff")&&(a=!0))}const o=e.serverside.clearStaticDefPriorities?.()??!1;return(a||o)&&(refreshServersideBaseline(),e.markDirty("api-defoff")),a||o},setPrecache:(n={})=>(t().cacheModel.setDesiredPrecache(n),e.markDirty("api-precache"),e.savePersistence()),prioAff:t=>applyDirtyOnly(e.serverside.setPrioAff(t),"api-prioaff"),clearPrioAff:()=>applyDirtyOnly(e.serverside.clearPrioAff(),"api-prioaff-clear"),parry(t){n.parry(t),refreshServersideBaseline(),e.markDirty("api-parry")}}},Da="public-observe",freezeHandles=(e=[],t)=>Object.freeze(e.reduce((e,n)=>(e[n]=Object.freeze(t(n)),e),{})),getObserveSource=(e={})=>String(e?.source||Da),getObserveAt=(e={})=>e?.atMs??e?.at,getAffSnapshotState=(e,t)=>({have:e.haveAff(t),count:e.get(t)?.count??0}),didAffStateChange=(e,t)=>e.have!==t.have||e.count!==t.count,createPublicObserveApi=({runtime:e,getModels:t})=>{const n=t(),a=n.affModel,o=n.defModel,i=n.balanceModel,s=n.limbModel,l=n.systemModel,c=e.services.combat,u=freezeHandles(a.list?.()||[],t=>({got(n={}){const o=getAffSnapshotState(a,t);return a.got(t,{...n,source:getObserveSource(n)}),!!didAffStateChange(o,getAffSnapshotState(a,t))&&("function"==typeof s?.syncFromAfflictions&&"function"==typeof a?.currentSorted?s.syncFromAfflictions(a.currentSorted(),"affliction"):s?.applyAfflictionTransition?.(t,!0),e.markDirty(`api-observe-aff-got:${t}`),!0)},lost(n={}){const o=getAffSnapshotState(a,t);return a.lose(t,{...n,source:getObserveSource(n)}),!!didAffStateChange(o,getAffSnapshotState(a,t))&&("function"==typeof s?.syncFromAfflictions&&"function"==typeof a?.currentSorted?s.syncFromAfflictions(a.currentSorted(),"affliction"):s?.applyAfflictionTransition?.(t,!1),e.markDirty(`api-observe-aff-lost:${t}`),!0)}})),d=freezeHandles(o.list?.()||[],t=>({got:(n={})=>!!o.setHave(t,!0,getObserveSource(n),getObserveAt(n))&&(e.markDirty(`api-observe-def-got:${t}`),!0),lost:(n={})=>!!o.setHave(t,!1,getObserveSource(n),getObserveAt(n))&&(e.markDirty(`api-observe-def-lost:${t}`),!0)})),p=freezeHandles(i.list?.()||[],t=>{const observeServerUse=(n,a={})=>{const o=i.observeServerUse(t,n,{...a,source:getObserveSource({...a,source:a.source||"server-duration-observe"})});return o&&e.markDirty(`api-observe-balance-used:${t}`),o};return{got(n={}){const a=i.gain(t,getObserveSource(n),getObserveAt(n));return a&&e.markDirty(`api-observe-balance-got:${t}`),a},lost(n={}){const a=i.lose(t,getObserveSource(n),getObserveAt(n));return a&&e.markDirty(`api-observe-balance-lost:${t}`),a},used:observeServerUse,serverUsed:observeServerUse,observeServerUse}}),createObservedLimbHit=(e,t={},n)=>c.observeLimbHit({limb:e,amount:n,source:getObserveSource(t),at:getObserveAt(t)}),createObservedLimbReset=(e,t={})=>c.observeLimbReset({limb:e,source:getObserveSource(t),at:getObserveAt(t)}),createObservedLimbStage=(e,t,n={})=>c.observeLimbStage({limb:e,stage:t,source:getObserveSource(n),at:getObserveAt(n)}),m=freezeHandles(s?.list?.()||[],t=>({hit(n,a={}){const o=createObservedLimbHit(t,a,n);return o.changed&&"torso"===o.limb&&o.stageChanged&&e.markDirty(`api-observe-limb-torso:${o.after?.stage||"unknown"}`),o.changed},reset(n={}){const a=createObservedLimbReset(t,n);return a.changed&&"torso"===a.limb&&e.markDirty("api-observe-limb-torso:healthy"),a.changed},setStage(n,a={}){const o=createObservedLimbStage(t,n,a);return o.changed&&"torso"===o.limb&&o.stageChanged&&e.markDirty(`api-observe-limb-torso:${o.after?.stage||"unknown"}`),o.changed}})),markObservedLimbResult=t=>(t.changed&&"torso"===t.limb&&t.stageChanged?e.markDirty(`api-observe-limb-torso:${t.after?.stage||"unknown"}`):t.changed&&"torso"===t.limb&&"healthy"===t.after?.stage?e.markDirty("api-observe-limb-torso:healthy"):t.changed&&e.markDirty(`api-observe-limb:${t.limb}`),t.changed),g=Object.freeze({...m,get(e){if(!e)return null;const t=s?.get?.(e);return t?.id&&m[t.id]||null},list:()=>Object.keys(m),hit:(e,t,n={})=>markObservedLimbResult(createObservedLimbHit(e,n,t)),reset:(e,t={})=>markObservedLimbResult(createObservedLimbReset(e,t)),setStage:(e,t,n={})=>markObservedLimbResult(createObservedLimbStage(e,t,n))}),h=Object.freeze({set(t={}){const n=l.updateMount({name:String(t.name||""),id:t.id??null});return n&&e.markDirty("api-observe-mount-set"),n},clear(){const t=l.updateMount(null);return t&&e.markDirty("api-observe-mount-clear"),t}});return{observe:Object.freeze({affs:u,defs:d,balances:p,limbs:g,mount:h})}},createPublicPromptApi=({runtime:e,control:t})=>{const n=e?.promptPresenter;if(!n)return{prompt:null};const getSystemModel=()=>e?.models?.systemModel;let a=null;return a={colorGradation:n.colorGradation,colorPercentage:n.colorPercentage,render:e=>n.render(e),getCustomPrompt:()=>n.render({source:"legacy-getCustomPrompt"}),markAffsDirty:()=>n.markAffsDirty(),markPromptDirty:()=>n.markPromptDirty?.(),patchVars:(e={})=>(n.patchVars?.(e),a),patchAffs:(e={})=>(n.patchAffs?.(e),a),patchCureColors:(e={})=>(n.patchCureColors?.(e),a),applyPreset:e=>"function"==typeof e?(e(a),n.markPromptDirty?.(),a):(!e||"object"!=typeof e||Array.isArray(e)||("cureColors"in e&&a.patchCureColors(e.cureColors),"affs"in e&&a.patchAffs(e.affs),"vars"in e&&a.patchVars(e.vars),"compose"in e&&(a.compose=e.compose),"enabled"in e&&(a.enabled=e.enabled)),a),get vars(){return n.vars},get affs(){return n.affs},get cureColors(){return n.cureColors},get compose(){return n.compose},set compose(e){n.compose=e},get enabled(){const e=getSystemModel()?.snapshot?.().settings||{};return Boolean(e.customPrompt)},set enabled(e){t?.applySettings?.({customPrompt:Boolean(e)})}},{prompt:a}},createPublicLineApi=({lineUtils:e={}})=>({replace:e.replace,replaceHTML:e.replaceHTML,replaceWord:e.replaceWord,replaceWordHTML:e.replaceWordHTML,nextLine:e.nextLine,checkLine:e.checkLine,prevLine:e.prevLine,prependNotice:e.prependNotice,say:e.say}),normalizeScopedSegment=e=>String(e||"").trim().toLowerCase().replace(/\s+/g,"_").replace(/[^a-z0-9._-]/g,""),createPublicRulesApi=({runtime:e})=>({add:(t,n)=>e.serverside.lifecycle.add(t,n),remove:t=>e.serverside.lifecycle.remove(t),enable:t=>e.serverside.lifecycle.enable(t),disable:t=>e.serverside.lifecycle.disable(t),enablePack:t=>e.serverside.lifecycle.enablePack(t),disablePack:t=>e.serverside.lifecycle.disablePack(t),load:(t,n)=>e.serverside.lifecycle.load(t,n),unload:t=>e.serverside.lifecycle.unload(t),reorder:t=>e.serverside.lifecycle.reorder(t),list:()=>e.serverside.lifecycle.list(),bindTransition(t,n={}){const a=normalizeScopedSegment(t);if(!a)return()=>{};const o=e.topics||{},i=[];return"function"==typeof n.onActivate&&i.push(e.onEvent(`${o.RULE_ACTIVATED||"nexsys4.rule.activated"}.${a}`,n.onActivate)),"function"==typeof n.onDeactivate&&i.push(e.onEvent(`${o.RULE_DEACTIVATED||"nexsys4.rule.deactivated"}.${a}`,n.onDeactivate)),()=>{i.forEach(e=>e?.())}}}),createPublicServersideApi=({runtime:e})=>({predictions:{add:t=>e.serverside.addPrediction(t),remove:t=>e.serverside.removePrediction(t)},ssQueue:{add:t=>e.serverside.manualQueueAdd(t),insert:(t,n)=>e.serverside.manualQueueInsert(t,n),remove:t=>e.serverside.manualQueueRemove(t),reset:()=>e.serverside.manualQueueReset()},ss:{syncSnapshots:()=>e.serverside.requestSnapshotSync(),startupStatus:()=>e.serverside.getStartupStatus(),unload:(t={})=>e.curingSetGuard.unload(t)}}),createPublicStateApi=({runtime:e,getModels:t})=>{const{systemModel:n,affModel:a,defModel:o,balanceModel:i,limbModel:s}=t();return{snapshot:e.snapshot,getTarget:()=>n.snapshot().target,topics:e.topics,haveAff:e=>a.haveAff(e),affElapsedMs:e=>a.elapsedMs(e),affElapsedSeconds:e=>a.elapsedSeconds(e),affRemainingMs:e=>a.remainingMs(e),affRemainingSeconds:e=>a.remainingSeconds(e),affTiming:e=>a.timing(e),haveAffs:e=>a.haveAffs(toArray(e)),haveAnAff:e=>a.haveAnAff(toArray(e)),haveDef:e=>o.haveDef(e),haveDefs:e=>toArray(e).every(e=>o.haveDef(e)),haveAnyDef:e=>toArray(e).some(e=>o.haveDef(e)),haveBal:e=>i.have(e),haveBals:e=>toArray(e).every(e=>i.have(e)),haveAnyBal:e=>toArray(e).some(e=>i.have(e)),balElapsedMs:e=>i.elapsedMs(e),balElapsedSeconds:e=>i.elapsedSeconds(e),balRemainingMs:e=>i.remainingMs(e),balRemainingSeconds:e=>i.remainingSeconds(e),balTiming:e=>i.timing(e),getLimb:e=>s?.get?.(e)||null,listLimbs:()=>s?.list?.()||[],getClass:()=>n.getClass(),checkClass:e=>n.checkClass(e),isClass:e=>n.isClass(e),isTarget:e=>n.isTarget(e)}},isRecord=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),cloneAndFreezeCells=(e={})=>{const t={};for(const[n,a]of Object.entries(e))t[n]=isRecord(a)?Object.freeze({...a}):a;return Object.freeze(t)},buildPromptSnapshot=e=>e?Object.freeze({vars:cloneAndFreezeCells(e.vars),affs:cloneAndFreezeCells(e.affs),cureColors:cloneAndFreezeCells(e.cureColors)}):null,createPublicApi=({runtime:e,lineUtils:t={}})=>{const getModels=()=>e.models,n=createPublicStateApi({runtime:e,getModels}),a=createPublicEventApi({runtime:e}),o=createPublicControlApi({runtime:e,getModels}),i=createPublicCommandApi({runtime:e}),s=createPublicMutationApi({runtime:e,getModels}),l=createPublicObserveApi({runtime:e,getModels}),c=createPublicRulesApi({runtime:e}),u=createPublicServersideApi({runtime:e}),d=createPublicPromptApi({runtime:e,control:o}),p=createPublicLineApi({lineUtils:t}),{systemModel:m,affModel:g,defModel:h,balanceModel:b,limbModel:y,cacheModel:v}=getModels(),S=Object.freeze(Object.create(null,{system:{enumerable:!0,get:()=>m.snapshot()},target:{enumerable:!0,get:()=>m.snapshot().target},class:{enumerable:!0,get:()=>m.snapshot().char.class},affs:{enumerable:!0,get:()=>g.snapshot()},defs:{enumerable:!0,get:()=>h.snapshot()},balances:{enumerable:!0,get:()=>b.snapshot()},limbs:{enumerable:!0,get:()=>y.snapshot()},queue:{enumerable:!0,get:()=>e.queueController.snapshot()},cache:{enumerable:!0,get:()=>v.snapshot()},prompt:{enumerable:!0,get:()=>buildPromptSnapshot(e.promptPresenter)},serverside:{enumerable:!0,get:()=>e.serverside.snapshot()}})),x=Object.freeze({on:a.events.on,off:a.events.off,topics:e.topics}),C=Object.freeze({affs:l.observe.affs,defs:l.observe.defs,balances:l.observe.balances,limbs:l.observe.limbs,mount:Object.freeze({set:l.observe.mount.set,reset:l.observe.mount.clear})}),w=Object.freeze({openConfig:(t="api.ui.openConfig")=>e.setConfigOpen(!0,t),closeConfig:(t="api.ui.closeConfig")=>e.setConfigOpen(!1,t),setConfigOpen:(t,n="api.ui.setConfigOpen")=>e.setConfigOpen(Boolean(t),n)}),k={...i.queue,...i.queues,list:i.queue.listQueues};return{state:S,api:{affs:{have:n.haveAff,haveAll:n.haveAffs,haveAny:n.haveAnAff,elapsedMs:n.affElapsedMs,elapsedSeconds:n.affElapsedSeconds,remainingMs:n.affRemainingMs,remainingSeconds:n.affRemainingSeconds,timing:n.affTiming,setPriority:s.updateAffPriority,setDefaultPriority:s.updateAffDefault,resetPriority:s.resetAffPriority,resetAllPriorities:s.resetAllAffPriorities},defs:{have:n.haveDef,haveAll:n.haveDefs,haveAny:n.haveAnyDef,setPriority:s.updateDefPriority,setDefaultPriority:s.updateDefDefault,setStatic:s.updateDefStatic,setCommand:s.updateDefCommand,resetPriority:s.resetDefPriority,resetAllPriorities:s.resetAllDefPriorities,defup:s.defup,defoff:s.defoff,parry:s.parry},balances:{have:n.haveBal,haveAll:n.haveBals,haveAny:n.haveAnyBal,elapsedMs:n.balElapsedMs,elapsedSeconds:n.balElapsedSeconds,remainingMs:n.balRemainingMs,remainingSeconds:n.balRemainingSeconds,timing:n.balTiming},limbs:{get:n.getLimb,list:n.listLimbs},target:{get:n.getTarget,set:i.setTarget,is:n.isTarget},class:{get:n.getClass,is:n.isClass,check:n.checkClass},command:{send:i.sendCmd,sendInline:i.sendInline,addOutput:i.addOutput,evaluateNow:i.evaluateNow},queue:k,rules:c,prompt:d.prompt,observe:C,ui:w,line:p,control:{...o},ss:{predictions:u.predictions,queue:{add:u.ssQueue.add,insert:u.ssQueue.insert,remove:u.ssQueue.remove,clear:u.ssQueue.reset},syncSnapshots:u.ss.syncSnapshots,startupStatus:u.ss.startupStatus,unload:u.ss.unload,precache:{set:s.setPrecache},prioAff:{set:s.prioAff,reset:s.clearPrioAff}}},events:x}},generateChunk=(e,t,n)=>{const a=document.createElement("span");return a.style.color=t,a.style.backgroundColor=n,a.textContent=e,a},cloneTrustedHtmlNodes=e=>{const t=document.createElement("template");return t.innerHTML=String(e??""),[...t.content.childNodes].map(e=>e.cloneNode(!0))},replaceWordNodes=(e,t,n)=>{const a=String(t??"");if(!a)return!1;const o=document.createTreeWalker(e,globalThis.NodeFilter?.SHOW_TEXT??4),i=[];for(;o.nextNode();)i.push(o.currentNode);let s=!1;return i.forEach(e=>{const t=e?.textContent||"";if(!e?.parentNode||!t.includes(a))return;const o=document.createDocumentFragment();let i=0;for(;i<t.length;){const e=t.indexOf(a,i);if(-1===e){o.append(t.slice(i));break}e>i&&o.append(t.slice(i,e)),n().forEach(e=>o.appendChild(e)),i=e+a.length,s=!0}e.replaceWith(o)}),s},updateCurrentFormattedLine=e=>{const t=document.createElement("span");t.innerHTML=globalThis.nexusclient.current_line.parsed_line.formatted();const n=e(t);return globalThis.nexusclient.current_line.parsed_line.formatted=()=>t.innerHTML,n},replace$1=(...e)=>{const t=document.createElement("span");for(let n=0;n<e.length;n+=3)t.appendChild(generateChunk(e[n],e[n+1],e[n+2]));return globalThis.nexusclient.current_line.parsed_line.formatted=()=>t.outerHTML,!0},replaceHTML=e=>(globalThis.nexusclient.current_line.parsed_line.formatted=()=>e,!0),replaceWord=(e,t,n,a)=>updateCurrentFormattedLine(o=>replaceWordNodes(o,e,()=>[generateChunk(t,n,a)])),replaceWordHTML=(e,t)=>updateCurrentFormattedLine(n=>replaceWordNodes(n,e,()=>cloneTrustedHtmlNodes(t))),matchPattern=(e,t)=>"string"==typeof t?e.includes(t):t instanceof RegExp&&t.test(e),prevLine=e=>{const{current_block:t,current_line:n}=globalThis.nexusclient,a=t.indexOf(n);return!(a<=0)&&matchPattern(t[a-1].parsed_line.text(),e)},nextLine=e=>{const{current_block:t,current_line:n}=globalThis.nexusclient,a=t.indexOf(n);return!(a>=t.length-1)&&matchPattern(t[a+1].parsed_line.text(),e)},checkLine=(e,t)=>{const{current_block:n,current_line:a}=globalThis.nexusclient,o=n.indexOf(a)+t;return!(o<0||o>n.length-1)&&matchPattern(n[o].parsed_line.text(),e)},prependNotice=(...e)=>{const t=document.createElement("span");for(let n=0;n<e.length;n+=3)t.appendChild(generateChunk(e[n],e[n+1],e[n+2]));return globalThis.nexSys.prepend_line={timestamp:globalThis.nexusclient.current_block[1].timestamp,timestamp_ms:globalThis.nexusclient.current_block[1].timestamp_ms,parsed_line:{text:()=>t.outerHTML,formatted:()=>t.outerHTML}},t.outerHTML},say=e=>{const t=new SpeechSynthesisUtterance;t.voice=globalThis.speechSynthesis.getVoices().find(e=>"Google UK English Female"===e.voiceURI)||globalThis.speechSynthesis.getVoices().find(e=>"en-US"===e.lang),t.rate=1.1,t.pitch=1.3,t.text=e,globalThis.speechSynthesis.speaking&&globalThis.speechSynthesis.cancel(),setTimeout(()=>globalThis.speechSynthesis.speak(t),10)},Oa={affTable:U,balanceTable:V,cacheTable:P,cacheNames:{herb_name_to_herb:w,mineral_to_herb:k,herb_to_mineral:E,herb_names:x,herb_names_group:C,mineral_names:v,mineral_names_group:S},cureTable:G,defTable:Q,defPrios:Z},$a=Object.freeze({affCount:Array.isArray(U?.list)?U.list.length:0,cureCount:Object.keys(G||{}).length,defCount:Object.keys(Q||{}).length,balanceCount:Object.keys(V||{}).length,cacheCount:Object.keys(P||{}).length}),createNexSys=({adapter:e,adapterType:t="nexus",options:n={}}={})=>{installStringPrototypeHelpers();const a={...n.adapterOptions||{}};void 0===a.debug&&(a.debug=n.debug??!1),void 0===a.startupGag&&(a.startupGag=n.startupGag??!0);const o=assertAdapterContract(e||("mock"===t?createMockAdapter(a):createNexusAdapter(a))),i=createRuntimeEngine({adapter:o,seedData:Oa,options:n}),{state:s,api:l,events:c}=createPublicApi({runtime:i,lineUtils:{replace:replace$1,replaceHTML,replaceWord,replaceWordHTML,nextLine,checkLine,prependNotice,prevLine,say}});return{version:"1.0.7",seedMeta:$a,tables:{limbs:ve,dirs:Se,dirMap:xe,oppdirs:Ce,shortDirs:we,classList:ke},adapter:o,runtime:i,state:s,api:l,events:c}},clearGlobalNexSys=()=>{if("undefined"==typeof globalThis)return;const e=globalThis.nexSys,t=e?.api?.control?.stop;if(e&&"function"==typeof t)try{t()}catch(n){console.error("nexSys4 failed to stop the existing global runtime during reinstall",n)}try{delete globalThis.nexSys}catch{globalThis.nexSys=void 0}},installGlobalNexSys=(e={})=>{clearGlobalNexSys();const t=createNexSys(e);return globalThis.nexSys=t,t.api.control.start(),t},Ia=Object.freeze({coalesceGmcp:!0,publishToEventStream:!0,publishRawGmcp:!1,debug:!1,startupTimeoutMs:2500,maxStartupRetries:3,maxEntriesPerSubmission:20,pendingTimeoutMs:12e3,desyncCommandRepeats:3,maxSsCommandsPerCycle:40}),bootstrapNexus=(e={})=>{const{forceNew:t,...n}=e;return uninstallNexusClientOverrides(),installNexusClientOverrides(),installGlobalNexSys({adapterType:"nexus",options:{...Ia,...n}})},Na=Symbol.for("nexsys4.startup.installed"),za="font_stacks_original",getNexusclient=()=>globalThis.nexusclient&&"object"==typeof globalThis.nexusclient?globalThis.nexusclient:null,mountGui=e=>{if(!globalThis.ReactDOM||!globalThis.React)return!1;document.getElementById("modal-root")||document.body.appendChild(Object.assign(document.createElement("div"),{id:"modal-root"})),document.getElementById("nexsys-modal")?.remove();const t=Object.assign(document.createElement("div"),{id:"nexsys-modal"});return document.getElementById("modal-root").appendChild(t),globalThis.ReactDOM.createRoot(t).render(globalThis.React.createElement(e.component,{nexSys:e})),!0},injectFonts=()=>{const e=document.getElementsByTagName("head")[0],t=document.createElement("link");t.rel="stylesheet",t.href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap",e.appendChild(t);const n=document.createElement("link");n.rel="stylesheet",n.href="https://fonts.googleapis.com/css?family=Roboto%20Mono:300,400,500,700&display=swap",e.appendChild(n)},patchFontStacks=e=>{const t=e.settings();if(void 0!==t[za])return;const n=document.getElementsByTagName("head")[0],a=document.getElementById("nexSysCSS")||document.createElement("style");a.id="nexSysCSS",a.parentNode||n.appendChild(a),t[za]=t.font_stacks,t.font_stacks=function(){return a.textContent=`.timestamp {font-family: ${t.font_stack}}`,[{name:"RobotoMono",stack:"Roboto Mono,Consolas,monospace"},{name:"Consolas",stack:"Consolas,RobotoMono,monospace"},{name:"Verdana",stack:"Verdana, Geneva, sans-serif"},{name:"Lucida",stack:"'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', Geneva, Verdana, sans-serif"},{name:"Arial",stack:"Arial, 'Helvetica Neue', Helvetica, sans-serif"},{name:"Futura",stack:"Futura, 'Trebuchet MS', Arial, sans-serif"},{name:"Book Antiqua",stack:"'Book Antiqua', Palatino, 'Palatino Linotype', 'Palatino LT STD', Georgia, serif"},...t[za]()]}},initializeSettings=e=>{void 0===e.variables().vars.nexSys4Settings&&(e.variables().vars.nexSys4Settings={})},startupNexus=()=>{const e=getNexusclient();return!!e&&(e[Na]||(injectFonts(),patchFontStacks(e),initializeSettings(e),e[Na]=!0),mountGui(globalThis.nexSys),!0)},La=(0,c.createContext)(null);function useNexSys(){return(0,c.useContext)(La)}var ja=__commonJSMin(e=>{var t=Symbol.for("react.transitional.element");Symbol.for("react.fragment");function jsxProd(e,n,a){var o=null;if(void 0!==a&&(o=""+a),void 0!==n.key&&(o=""+n.key),"key"in n)for(var i in a={},n)"key"!==i&&(a[i]=n[i]);else a=n;return n=a.ref,{$$typeof:t,type:e,key:o,ref:void 0!==n?n:null,props:a}}e.jsx=jsxProd,e.jsxs=jsxProd}),Ba=__commonJSMin((e,t)=>{t.exports=ja()})();function NexSysProvider({nexSys:e,children:t}){return(0,Ba.jsx)(La.Provider,{value:e,children:t})}var Fa={black:"#000",white:"#fff"},qa={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},Ua={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},Va={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},Ha={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},Wa={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"},Ga={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},Ya={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"};function formatMuiErrorMessage(e,...t){const n=new URL(`https://mui.com/production-error/?code=${e}`);return t.forEach(e=>n.searchParams.append("args[]",e)),`Minified MUI error #${e}; visit ${n} for the full message.`}var Ka="$$material";function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},_extends.apply(null,arguments)}var Qa=!1;function sheetForTag(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}function createStyleElement(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}var Za=function(){function StyleSheet(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy?!Qa:e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var e=StyleSheet.prototype;return e.hydrate=function hydrate(e){e.forEach(this._insertTag)},e.insert=function insert(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(createStyleElement(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=sheetForTag(t);try{n.insertRule(e,n.cssRules.length)}catch(a){}}else t.appendChild(document.createTextNode(e));this.ctr++},e.flush=function flush(){this.tags.forEach(function(e){var t;return null==(t=e.parentNode)?void 0:t.removeChild(e)}),this.tags=[],this.ctr=0},StyleSheet}(),Xa="-ms-",Ja="-moz-",eo="-webkit-",to="comm",ro="rule",no="decl",ao="@import",oo="@keyframes",io="@layer",so=Math.abs,lo=String.fromCharCode,co=Object.assign;function hash$2(e,t){return 45^charat(e,0)?(((t<<2^charat(e,0))<<2^charat(e,1))<<2^charat(e,2))<<2^charat(e,3):0}function trim(e){return e.trim()}function match(e,t){return(e=t.exec(e))?e[0]:e}function replace(e,t,n){return e.replace(t,n)}function indexof(e,t){return e.indexOf(t)}function charat(e,t){return 0|e.charCodeAt(t)}function substr(e,t,n){return e.slice(t,n)}function strlen(e){return e.length}function sizeof(e){return e.length}function append(e,t){return t.push(e),e}function combine(e,t){return e.map(t).join("")}var uo=1,po=1,mo=0,fo=0,go=0,ho="";function node(e,t,n,a,o,i,s){return{value:e,root:t,parent:n,type:a,props:o,children:i,line:uo,column:po,length:s,return:""}}function copy(e,t){return co(node("",null,null,"",null,null,0),e,{length:-e.length},t)}function char(){return go}function prev(){return go=fo>0?charat(ho,--fo):0,po--,10===go&&(po=1,uo--),go}function next(){return go=fo<mo?charat(ho,fo++):0,po++,10===go&&(po=1,uo++),go}function peek$1(){return charat(ho,fo)}function caret(){return fo}function slice(e,t){return substr(ho,e,t)}function token(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function alloc(e){return uo=po=1,mo=strlen(ho=e),fo=0,[]}function dealloc(e){return ho="",e}function delimit(e){return trim(slice(fo-1,delimiter(91===e?e+2:40===e?e+1:e)))}function whitespace(e){for(;(go=peek$1())&&go<33;)next();return token(e)>2||token(go)>3?"":" "}function escaping(e,t){for(;--t&&next()&&!(go<48||go>102||go>57&&go<65||go>70&&go<97););return slice(e,caret()+(t<6&&32==peek$1()&&32==next()))}function delimiter(e){for(;next();)switch(go){case e:return fo;case 34:case 39:34!==e&&39!==e&&delimiter(go);break;case 40:41===e&&delimiter(e);break;case 92:next()}return fo}function commenter(e,t){for(;next()&&e+go!==57&&(e+go!==84||47!==peek$1()););return"/*"+slice(t,fo-1)+"*"+lo(47===e?e:next())}function identifier(e){for(;!token(peek$1());)next();return slice(e,fo)}function compile(e){return dealloc(parse("",null,null,null,[""],e=alloc(e),0,[0],e))}function parse(e,t,n,a,o,i,s,l,c){for(var u=0,d=0,p=s,m=0,g=0,h=0,b=1,y=1,v=1,S=0,x="",C=o,w=i,k=a,E=x;y;)switch(h=S,S=next()){case 40:if(108!=h&&58==charat(E,p-1)){-1!=indexof(E+=replace(delimit(S),"&","&\f"),"&\f")&&(v=-1);break}case 34:case 39:case 91:E+=delimit(S);break;case 9:case 10:case 13:case 32:E+=whitespace(h);break;case 92:E+=escaping(caret()-1,7);continue;case 47:switch(peek$1()){case 42:case 47:append(comment(commenter(next(),caret()),t,n),c);break;default:E+="/"}break;case 123*b:l[u++]=strlen(E)*v;case 125*b:case 59:case 0:switch(S){case 0:case 125:y=0;case 59+d:-1==v&&(E=replace(E,/\f/g,"")),g>0&&strlen(E)-p&&append(g>32?declaration(E+";",a,n,p-1):declaration(replace(E," ","")+";",a,n,p-2),c);break;case 59:E+=";";default:if(append(k=ruleset(E,t,n,u,d,o,l,x,C=[],w=[],p),i),123===S)if(0===d)parse(E,t,k,k,C,i,p,l,w);else switch(99===m&&110===charat(E,3)?100:m){case 100:case 108:case 109:case 115:parse(e,k,k,a&&append(ruleset(e,k,k,0,0,o,l,x,o,C=[],p),w),o,w,p,l,a?C:w);break;default:parse(E,k,k,k,[""],w,0,l,w)}}u=d=g=0,b=v=1,x=E="",p=s;break;case 58:p=1+strlen(E),g=h;default:if(b<1)if(123==S)--b;else if(125==S&&0==b++&&125==prev())continue;switch(E+=lo(S),S*b){case 38:v=d>0?1:(E+="\f",-1);break;case 44:l[u++]=(strlen(E)-1)*v,v=1;break;case 64:45===peek$1()&&(E+=delimit(next())),m=peek$1(),d=p=strlen(x=E+=identifier(caret())),S++;break;case 45:45===h&&2==strlen(E)&&(b=0)}}return i}function ruleset(e,t,n,a,o,i,s,l,c,u,d){for(var p=o-1,m=0===o?i:[""],g=sizeof(m),h=0,b=0,y=0;h<a;++h)for(var v=0,S=substr(e,p+1,p=so(b=s[h])),x=e;v<g;++v)(x=trim(b>0?m[v]+" "+S:replace(S,/&\f/g,m[v])))&&(c[y++]=x);return node(e,t,n,0===o?ro:l,c,u,d)}function comment(e,t,n){return node(e,t,n,to,lo(char()),substr(e,2,-2),0)}function declaration(e,t,n,a){return node(e,t,n,no,substr(e,0,a),substr(e,a+1,-1),a)}function serialize(e,t){for(var n="",a=sizeof(e),o=0;o<a;o++)n+=t(e[o],o,e,t)||"";return n}function stringify(e,t,n,a){switch(e.type){case io:if(e.children.length)break;case ao:case no:return e.return=e.return||e.value;case to:return"";case oo:return e.return=e.value+"{"+serialize(e.children,a)+"}";case ro:e.value=e.props.join(",")}return strlen(n=serialize(e.children,a))?e.return=e.value+"{"+n+"}":""}function middleware(e){var t=sizeof(e);return function(n,a,o,i){for(var s="",l=0;l<t;l++)s+=e[l](n,a,o,i)||"";return s}}function rulesheet(e){return function(t){t.root||(t=t.return)&&e(t)}}function memoize(e){var t=Object.create(null);return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}var bo=function identifierWithPointTracking(e,t,n){for(var a=0,o=0;a=o,o=peek$1(),38===a&&12===o&&(t[n]=1),!token(o);)next();return slice(e,fo)},yo=function toRules(e,t){var n=-1,a=44;do{switch(token(a)){case 0:38===a&&12===peek$1()&&(t[n]=1),e[n]+=bo(fo-1,t,n);break;case 2:e[n]+=delimit(a);break;case 4:if(44===a){e[++n]=58===peek$1()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=lo(a)}}while(a=next());return e},vo=function getRules(e,t){return dealloc(yo(alloc(e),t))},So=new WeakMap,xo=function compat(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,a=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||So.get(n))&&!a){So.set(e,!0);for(var o=[],i=vo(t,o),s=n.props,l=0,c=0;l<i.length;l++)for(var u=0;u<s.length;u++,c++)e.props[c]=o[l]?i[l].replace(/&\f/g,s[u]):s[u]+" "+i[l]}}},Co=function removeLabel(e){if("decl"===e.type){var t=e.value;108===t.charCodeAt(0)&&98===t.charCodeAt(2)&&(e.return="",e.value="")}};function prefix(e,t){switch(hash$2(e,t)){case 5103:return eo+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return eo+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return eo+e+Ja+e+Xa+e+e;case 6828:case 4268:return eo+e+Xa+e+e;case 6165:return eo+e+Xa+"flex-"+e+e;case 5187:return eo+e+replace(e,/(\w+).+(:[^]+)/,eo+"box-$1$2"+Xa+"flex-$1$2")+e;case 5443:return eo+e+Xa+"flex-item-"+replace(e,/flex-|-self/,"")+e;case 4675:return eo+e+Xa+"flex-line-pack"+replace(e,/align-content|flex-|-self/,"")+e;case 5548:return eo+e+Xa+replace(e,"shrink","negative")+e;case 5292:return eo+e+Xa+replace(e,"basis","preferred-size")+e;case 6060:return eo+"box-"+replace(e,"-grow","")+eo+e+Xa+replace(e,"grow","positive")+e;case 4554:return eo+replace(e,/([^-])(transform)/g,"$1"+eo+"$2")+e;case 6187:return replace(replace(replace(e,/(zoom-|grab)/,eo+"$1"),/(image-set)/,eo+"$1"),e,"")+e;case 5495:case 3959:return replace(e,/(image-set\([^]*)/,eo+"$1$`$1");case 4968:return replace(replace(e,/(.+:)(flex-)?(.*)/,eo+"box-pack:$3"+Xa+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+eo+e+e;case 4095:case 3583:case 4068:case 2532:return replace(e,/(.+)-inline(.+)/,eo+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(strlen(e)-1-t>6)switch(charat(e,t+1)){case 109:if(45!==charat(e,t+4))break;case 102:return replace(e,/(.+:)(.+)-([^]+)/,"$1"+eo+"$2-$3$1"+Ja+(108==charat(e,t+3)?"$3":"$2-$3"))+e;case 115:return~indexof(e,"stretch")?prefix(replace(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==charat(e,t+1))break;case 6444:switch(charat(e,strlen(e)-3-(~indexof(e,"!important")&&10))){case 107:return replace(e,":",":"+eo)+e;case 101:return replace(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+eo+(45===charat(e,14)?"inline-":"")+"box$3$1"+eo+"$2$3$1"+Xa+"$2box$3")+e}break;case 5936:switch(charat(e,t+11)){case 114:return eo+e+Xa+replace(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return eo+e+Xa+replace(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return eo+e+Xa+replace(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return eo+e+Xa+e+e}return e}var wo=[function prefixer(e,t,n,a){if(e.length>-1&&!e.return)switch(e.type){case no:e.return=prefix(e.value,e.length);break;case oo:return serialize([copy(e,{value:replace(e.value,"@","@"+eo)})],a);case ro:if(e.length)return combine(e.props,function(t){switch(match(t,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return serialize([copy(e,{props:[replace(t,/:(read-\w+)/,":"+Ja+"$1")]})],a);case"::placeholder":return serialize([copy(e,{props:[replace(t,/:(plac\w+)/,":"+eo+"input-$1")]}),copy(e,{props:[replace(t,/:(plac\w+)/,":"+Ja+"$1")]}),copy(e,{props:[replace(t,/:(plac\w+)/,Xa+"input-$1")]})],a)}return""})}}],ko=function createCache(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))})}var a,o,i=e.stylisPlugins||wo,s={},l=[];a=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n<t.length;n++)s[t[n]]=!0;l.push(e)});var c,u=[xo,Co],d=[stringify,rulesheet(function(e){c.insert(e)})],p=middleware(u.concat(i,d)),m=function stylis(e){return serialize(compile(e),p)};o=function insert(e,t,n,a){c=n,m(e?e+"{"+t.styles+"}":t.styles),a&&(g.inserted[t.name]=!0)};var g={key:t,sheet:new Za({key:t,container:a,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:s,registered:{},insert:o};return g.sheet.hydrate(l),g},Eo=__commonJSMin(e=>{var t="function"==typeof Symbol&&Symbol.for,n=t?Symbol.for("react.element"):60103,a=t?Symbol.for("react.portal"):60106,o=t?Symbol.for("react.fragment"):60107,i=t?Symbol.for("react.strict_mode"):60108,s=t?Symbol.for("react.profiler"):60114,l=t?Symbol.for("react.provider"):60109,c=t?Symbol.for("react.context"):60110,u=t?Symbol.for("react.async_mode"):60111,d=t?Symbol.for("react.concurrent_mode"):60111,p=t?Symbol.for("react.forward_ref"):60112,m=t?Symbol.for("react.suspense"):60113,g=t?Symbol.for("react.suspense_list"):60120,h=t?Symbol.for("react.memo"):60115,b=t?Symbol.for("react.lazy"):60116,y=t?Symbol.for("react.block"):60121,v=t?Symbol.for("react.fundamental"):60117,S=t?Symbol.for("react.responder"):60118,x=t?Symbol.for("react.scope"):60119;function z(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:switch(e=e.type){case u:case d:case o:case s:case i:case m:return e;default:switch(e=e&&e.$$typeof){case c:case p:case b:case h:case l:return e;default:return t}}case a:return t}}}function A(e){return z(e)===d}e.AsyncMode=u,e.ConcurrentMode=d,e.ContextConsumer=c,e.ContextProvider=l,e.Element=n,e.ForwardRef=p,e.Fragment=o,e.Lazy=b,e.Memo=h,e.Portal=a,e.Profiler=s,e.StrictMode=i,e.Suspense=m,e.isAsyncMode=function(e){return A(e)||z(e)===u},e.isConcurrentMode=A,e.isContextConsumer=function(e){return z(e)===c},e.isContextProvider=function(e){return z(e)===l},e.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===n},e.isForwardRef=function(e){return z(e)===p},e.isFragment=function(e){return z(e)===o},e.isLazy=function(e){return z(e)===b},e.isMemo=function(e){return z(e)===h},e.isPortal=function(e){return z(e)===a},e.isProfiler=function(e){return z(e)===s},e.isStrictMode=function(e){return z(e)===i},e.isSuspense=function(e){return z(e)===m},e.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===s||e===i||e===m||e===g||"object"==typeof e&&null!==e&&(e.$$typeof===b||e.$$typeof===h||e.$$typeof===l||e.$$typeof===c||e.$$typeof===p||e.$$typeof===v||e.$$typeof===S||e.$$typeof===x||e.$$typeof===y)},e.typeOf=z}),_o=__commonJSMin((e,t)=>{t.exports=Eo()}),Po=__commonJSMin((e,t)=>{var n=_o(),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function getStatics(e){return n.isMemo(e)?s:l[e.$$typeof]||a}l[n.ForwardRef]=i,l[n.Memo]=s;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,m=Object.getPrototypeOf,g=Object.prototype;function hoistNonReactStatics(e,t,n){if("string"!=typeof t){if(g){var a=m(t);a&&a!==g&&hoistNonReactStatics(e,a,n)}var i=u(t);d&&(i=i.concat(d(t)));for(var s=getStatics(e),l=getStatics(t),h=0;h<i.length;++h){var b=i[h];if(!(o[b]||n&&n[b]||l&&l[b]||s&&s[b])){var y=p(t,b);try{c(e,b,y)}catch(v){}}}}return e}t.exports=hoistNonReactStatics}),To=!0;function getRegisteredStyles(e,t,n){var a="";return n.split(" ").forEach(function(n){void 0!==e[n]?t.push(e[n]+";"):n&&(a+=n+" ")}),a}var Ao=function registerStyles(e,t,n){var a=e.key+"-"+t.name;!1!==n&&!1!==To||void 0!==e.registered[a]||(e.registered[a]=t.styles)},Ro=function insertStyles(e,t,n){Ao(e,t,n);var a=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var o=t;do{e.insert(t===o?"."+a:"",o,e.sheet,!0),o=o.next}while(void 0!==o)}};function murmur2(e){for(var t,n=0,a=0,o=e.length;o>=4;++a,o-=4)t=1540483477*(65535&(t=255&e.charCodeAt(a)|(255&e.charCodeAt(++a))<<8|(255&e.charCodeAt(++a))<<16|(255&e.charCodeAt(++a))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(o){case 3:n^=(255&e.charCodeAt(a+2))<<16;case 2:n^=(255&e.charCodeAt(a+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(a)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}var Mo={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},Do=!1,Oo=/[A-Z]|^ms/g,$o=/_EMO_([^_]+?)_([^]*?)_EMO_/g,Io=function isCustomProperty(e){return 45===e.charCodeAt(1)},No=function isProcessableValue(e){return null!=e&&"boolean"!=typeof e},zo=memoize(function(e){return Io(e)?e:e.replace(Oo,"-$&").toLowerCase()}),Lo=function processStyleValue(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace($o,function(e,t,n){return Bo={name:t,styles:n,next:Bo},t})}return 1===Mo[e]||Io(e)||"number"!=typeof t||0===t?t:t+"px"},jo="Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform.";function handleInterpolation(e,t,n){if(null==n)return"";var a=n;if(void 0!==a.__emotion_styles)return a;switch(typeof n){case"boolean":return"";case"object":var o=n;if(1===o.anim)return Bo={name:o.name,styles:o.styles,next:Bo},o.name;var i=n;if(void 0!==i.styles){var s=i.next;if(void 0!==s)for(;void 0!==s;)Bo={name:s.name,styles:s.styles,next:Bo},s=s.next;return i.styles+";"}return createStringFromObject(e,t,n);case"function":if(void 0!==e){var l=Bo,c=n(e);return Bo=l,handleInterpolation(e,t,c)}}var u=n;if(null==t)return u;var d=t[u];return void 0!==d?d:u}function createStringFromObject(e,t,n){var a="";if(Array.isArray(n))for(var o=0;o<n.length;o++)a+=handleInterpolation(e,t,n[o])+";";else for(var i in n){var s=n[i];if("object"!=typeof s){var l=s;null!=t&&void 0!==t[l]?a+=i+"{"+t[l]+"}":No(l)&&(a+=zo(i)+":"+Lo(i,l)+";")}else{if("NO_COMPONENT_SELECTOR"===i&&Do)throw new Error(jo);if(!Array.isArray(s)||"string"!=typeof s[0]||null!=t&&void 0!==t[s[0]]){var c=handleInterpolation(e,t,s);switch(i){case"animation":case"animationName":a+=zo(i)+":"+c+";";break;default:a+=i+"{"+c+"}"}}else for(var u=0;u<s.length;u++)No(s[u])&&(a+=zo(i)+":"+Lo(i,s[u])+";")}}return a}var Bo,Fo=/label:\s*([^\s;{]+)\s*(;|$)/g;function serializeStyles(e,t,n){if(1===e.length&&"object"==typeof e[0]&&null!==e[0]&&void 0!==e[0].styles)return e[0];var a=!0,o="";Bo=void 0;var i=e[0];null==i||void 0===i.raw?(a=!1,o+=handleInterpolation(n,t,i)):o+=i[0];for(var s=1;s<e.length;s++)o+=handleInterpolation(n,t,e[s]),a&&(o+=i[s]);Fo.lastIndex=0;for(var l,c="";null!==(l=Fo.exec(o));)c+="-"+l[1];return{name:murmur2(o)+c,styles:o,next:Bo}}var qo=function syncFallback(e){return e()},Uo=!!e.useInsertionEffect&&e.useInsertionEffect,Vo=Uo||qo,Ho=Uo||e.useLayoutEffect,Wo=e.createContext("undefined"!=typeof HTMLElement?ko({key:"css"}):null),Go=(Wo.Provider,function withEmotionCache(t){return(0,e.forwardRef)(function(n,a){return t(n,(0,e.useContext)(Wo),a)})}),Yo=e.createContext({}),Ko={}.hasOwnProperty,Qo="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",Zo=function createEmotionProps(e,t){var n={};for(var a in t)Ko.call(t,a)&&(n[a]=t[a]);return n[Qo]=e,n},Xo=function Insertion(e){var t=e.cache,n=e.serialized,a=e.isStringTag;return Ao(t,n,a),Vo(function(){return Ro(t,n,a)}),null},Jo=Go(function(t,n,a){var o=t.css;"string"==typeof o&&void 0!==n.registered[o]&&(o=n.registered[o]);var i=t[Qo],s=[o],l="";"string"==typeof t.className?l=getRegisteredStyles(n.registered,s,t.className):null!=t.className&&(l=t.className+" ");var c=serializeStyles(s,void 0,e.useContext(Yo));l+=n.key+"-"+c.name;var u={};for(var d in t)Ko.call(t,d)&&"css"!==d&&d!==Qo&&(u[d]=t[d]);return u.className=l,a&&(u.ref=a),e.createElement(e.Fragment,null,e.createElement(Xo,{cache:n,serialized:c,isStringTag:"string"==typeof i}),e.createElement(i,u))}),ei=(Po(),function jsx(t,n){var a=arguments;if(null==n||!Ko.call(n,"css"))return e.createElement.apply(void 0,a);var o=a.length,i=new Array(o);i[0]=Jo,i[1]=Zo(t,n);for(var s=2;s<o;s++)i[s]=a[s];return e.createElement.apply(null,i)});!function(e){var t;t||(t=e.JSX||(e.JSX={}))}(ei||(ei={}));var ti=Go(function(t,n){var a=serializeStyles([t.styles],void 0,e.useContext(Yo)),o=e.useRef();return Ho(function(){var e=n.key+"-global",t=new n.sheet.constructor({key:e,nonce:n.sheet.nonce,container:n.sheet.container,speedy:n.sheet.isSpeedy}),i=!1,s=document.querySelector('style[data-emotion="'+e+" "+a.name+'"]');return n.sheet.tags.length&&(t.before=n.sheet.tags[0]),null!==s&&(i=!0,s.setAttribute("data-emotion",e),t.hydrate([s])),o.current=[t,i],function(){t.flush()}},[n]),Ho(function(){var e=o.current,t=e[0];e[1]?e[1]=!1:(void 0!==a.next&&Ro(n,a.next,!0),t.tags.length&&(t.before=t.tags[t.tags.length-1].nextElementSibling,t.flush()),n.insert("",a,t,!1))},[n,a.name]),null});function css(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return serializeStyles(t)}function keyframes(){var e=css.apply(void 0,arguments),t="animation-"+e.name;return{name:t,styles:"@keyframes "+t+"{"+e.styles+"}",anim:1,toString:function toString(){return"_EMO_"+this.name+"_"+this.styles+"_EMO_"}}}var ri=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,ni=!1,ai=memoize(function(e){return ri.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91}),oi=function testOmitPropsOnComponent(e){return"theme"!==e},ii=function getDefaultShouldForwardProp(e){return"string"==typeof e&&e.charCodeAt(0)>96?ai:oi},si=function composeShouldForwardProps(e,t,n){var a;if(t){var o=t.shouldForwardProp;a=e.__emotion_forwardProp&&o?function(t){return e.__emotion_forwardProp(t)&&o(t)}:o}return"function"!=typeof a&&n&&(a=e.__emotion_forwardProp),a},li=function Insertion(e){var t=e.cache,n=e.serialized,a=e.isStringTag;return Ao(t,n,a),Vo(function(){return Ro(t,n,a)}),null},ci=function createStyled(t,n){var a,o,i=t.__emotion_real===t,s=i&&t.__emotion_base||t;void 0!==n&&(a=n.label,o=n.target);var l=si(t,n,i),c=l||ii(s),u=!c("as");return function(){var d=arguments,p=i&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==a&&p.push("label:"+a+";"),null==d[0]||void 0===d[0].raw)p.push.apply(p,d);else{var m=d[0];p.push(m[0]);for(var g=d.length,h=1;h<g;h++)p.push(d[h],m[h])}var b=Go(function(t,n,a){var i=u&&t.as||s,d="",m=[],g=t;if(null==t.theme){for(var h in g={},t)g[h]=t[h];g.theme=e.useContext(Yo)}"string"==typeof t.className?d=getRegisteredStyles(n.registered,m,t.className):null!=t.className&&(d=t.className+" ");var b=serializeStyles(p.concat(m),n.registered,g);d+=n.key+"-"+b.name,void 0!==o&&(d+=" "+o);var y=u&&void 0===l?ii(i):c,v={};for(var S in t)u&&"as"===S||y(S)&&(v[S]=t[S]);return v.className=d,a&&(v.ref=a),e.createElement(e.Fragment,null,e.createElement(li,{cache:n,serialized:b,isStringTag:"string"==typeof i}),e.createElement(i,v))});return b.displayName=void 0!==a?a:"Styled("+("string"==typeof s?s:s.displayName||s.name||"Component")+")",b.defaultProps=t.defaultProps,b.__emotion_real=b,b.__emotion_base=s,b.__emotion_styles=p,b.__emotion_forwardProp=l,Object.defineProperty(b,"toString",{value:function value(){return void 0===o&&ni?"NO_COMPONENT_SELECTOR":"."+o}}),b.withComponent=function(e,t){return createStyled(e,_extends({},n,t,{shouldForwardProp:si(b,t,!0)})).apply(void 0,p)},b}},ui=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"],di=ci.bind(null);function isEmpty$2(e){return null==e||0===Object.keys(e).length}function GlobalStyles$2(e){const{styles:t,defaultTheme:n={}}=e;return(0,Ba.jsx)(ti,{styles:"function"==typeof t?e=>t(isEmpty$2(e)?n:e):t})}function styled$1(e,t){return di(e,t)}function internal_mutateStyles(e,t){Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}ui.forEach(function(e){di[e]=di(e)});var pi=[];function internal_serializeStyles(e){return pi[0]=e,serializeStyles(pi)}var mi=__commonJSMin(e=>{Symbol.for("react.transitional.element"),Symbol.for("react.portal");var t=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),o=Symbol.for("react.consumer"),i=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),c=Symbol.for("react.suspense_list"),u=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),p=(Symbol.for("react.view_transition"),Symbol.for("react.client.reference"));e.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===t||e===a||e===n||e===l||e===c||"object"==typeof e&&null!==e&&(e.$$typeof===d||e.$$typeof===u||e.$$typeof===i||e.$$typeof===o||e.$$typeof===s||e.$$typeof===p||void 0!==e.getModuleId)}}),fi=__commonJSMin((e,t)=>{t.exports=mi()})();function isPlainObject$1(e){if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)}function deepClone(e){if(c.isValidElement(e)||(0,fi.isValidElementType)(e)||!isPlainObject$1(e))return e;const t={};return Object.keys(e).forEach(n=>{t[n]=deepClone(e[n])}),t}function deepmerge(e,t,n={clone:!0}){const a=n.clone?{...e}:e;return isPlainObject$1(e)&&isPlainObject$1(t)&&Object.keys(t).forEach(o=>{c.isValidElement(t[o])||(0,fi.isValidElementType)(t[o])?a[o]=t[o]:isPlainObject$1(t[o])&&Object.prototype.hasOwnProperty.call(e,o)&&isPlainObject$1(e[o])?a[o]=deepmerge(e[o],t[o],n):n.clone?a[o]=isPlainObject$1(t[o])?deepClone(t[o]):t[o]:a[o]=t[o]}),a}var sortBreakpointsValues=e=>{const t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>({...e,[t.key]:t.val}),{})};function createBreakpoints(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:a=5,...o}=e,i=sortBreakpointsValues(t),s=Object.keys(i);function up(e){return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n})`}function down(e){return`@media (max-width:${("number"==typeof t[e]?t[e]:e)-a/100}${n})`}function between(e,o){const i=s.indexOf(o);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n}) and (max-width:${(-1!==i&&"number"==typeof t[s[i]]?t[s[i]]:o)-a/100}${n})`}function only(e){return s.indexOf(e)+1<s.length?between(e,s[s.indexOf(e)+1]):up(e)}function not(e){const t=s.indexOf(e);return 0===t?up(s[1]):t===s.length-1?down(s[t]):between(e,s[s.indexOf(e)+1]).replace("@media","@media not all and")}const l=[];for(let c=0;c<s.length;c+=1)l.push(up(s[c]));return{keys:s,values:i,up,down,between,only,not,unit:n,internal_mediaKeys:l,...o}}var gi=/min-width:\s*([0-9.]+)/;function sortContainerQueries(e,t){if(!e.containerQueries||!hasContainerQuery(t))return t;const n=[];for(const o in t)o.startsWith("@container")&&n.push(o);n.sort((e,t)=>+(e.match(gi)?.[1]||0)-+(t.match(gi)?.[1]||0));const a=t;for(let o=0;o<n.length;o+=1){const e=n[o],t=a[e];delete a[e],a[e]=t}return a}function hasContainerQuery(e){for(const t in e)if(t.startsWith("@container"))return!0;return!1}function isCqShorthand(e,t){return"@"===t||t.startsWith("@")&&(e.some(e=>t.startsWith(`@${e}`))||!!t.match(/^@\d/))}function getContainerQuery(e,t){const n=t.match(/^@([^/]+)?\/?(.+)?$/);if(!n)return null;const[,a,o]=n,i=Number.isNaN(+a)?a||0:+a;return e.containerQueries(o).up(i)}function cssContainerQueries(e){const toContainerQuery=(e,t)=>e.replace("@media",t?`@container ${t}`:"@container");function attachCq(t,n){t.up=(...t)=>toContainerQuery(e.breakpoints.up(...t),n),t.down=(...t)=>toContainerQuery(e.breakpoints.down(...t),n),t.between=(...t)=>toContainerQuery(e.breakpoints.between(...t),n),t.only=(...t)=>toContainerQuery(e.breakpoints.only(...t),n),t.not=(...t)=>{const a=toContainerQuery(e.breakpoints.not(...t),n);return a.includes("not all and")?a.replace("not all and ","").replace("min-width:","width<").replace("max-width:","width>").replace("and","or"):a}}const t={},containerQueries=e=>(attachCq(t,e),t);return attachCq(containerQueries),{...e,containerQueries}}var hi={borderRadius:4};function isObjectEmpty$2(e){if(null==e)return!0;for(const t in e)return!1;return!0}function fastDeepAssign(e,t){const n=Array.isArray(t),a=Array.isArray(e);return isPrimitive(t)?t:isPrimitiveOrBuiltIn(e)?clone(t):n&&a?mergeArray(e,t):n!==a?clone(t):mergeObject(e,t)}function cloneArray(e){let t=0;const n=e.length,a=new Array(n);for(t=0;t<n;t+=1)a[t]=clone(e[t]);return a}function cloneObject(e){const t={};for(const n in e)t[n]=clone(e[n]);return t}function mergeArray(e,t){const n=e.length;for(let a=0;a<t.length;a+=1)e[n+a]=clone(t[a]);return e}function isMergeableObject(e){return!("object"!=typeof e||null===e||e instanceof RegExp||e instanceof Date)}function isPrimitive(e){return"object"!=typeof e||null===e}function isPrimitiveOrBuiltIn(e){return"object"!=typeof e||null===e||e instanceof RegExp||e instanceof Date}function clone(e){return isMergeableObject(e)?Array.isArray(e)?cloneArray(e):cloneObject(e):e}function mergeObject(e,t){for(const n in t)e[n]=n in e?fastDeepAssign(e[n],t[n]):clone(t[n]);return e}var bi={},yi={xs:0,sm:600,md:900,lg:1200,xl:1536},vi=createBreakpoints({values:yi}),Si={containerQueries:e=>({up:t=>{let n="number"==typeof t?t:yi[t]||t;return"number"==typeof n&&(n=`${n}px`),e?`@container ${e} (min-width:${n})`:`@container (min-width:${n})`}})};function handleBreakpoints(e,t,n){const a={};return iterateBreakpoints(a,e.theme,t,(e,t,o)=>{const i=n(t,o);e?a[e]=i:fastDeepAssign(a,i)})}function iterateBreakpoints(e,t,n,a){if(t??=bi,Array.isArray(n)){const o=t.breakpoints??vi;for(let t=0;t<n.length;t+=1)buildBreakpoint(e,o.up(o.keys[t]),n[t],void 0,a);return e}if("object"==typeof n){const o=t.breakpoints??vi,i=o.values??yi;for(const s in n)if(isCqShorthand(o.keys,s)){const o=getContainerQuery(t.containerQueries?t:Si,s);o&&buildBreakpoint(e,o,n[s],s,a)}else if(s in i)buildBreakpoint(e,o.up(s),n[s],s,a);else{const t=s;e[t]=n[t]}return e}return a(void 0,n),e}function buildBreakpoint(e,t,n,a,o){e[t]??={},o(t,n,a)}function createEmptyBreakpointObject(e=vi){const{internal_mediaKeys:t}=e,n={};for(let a=0;a<t.length;a+=1)n[t[a]]={};return n}function removeUnusedBreakpoints(e,t){const n=e.internal_mediaKeys;for(let a=0;a<n.length;a+=1){const e=n[a];isObjectEmpty$2(t[e])&&delete t[e]}return t}function hasBreakpoint(e,t){if(Array.isArray(t))return!0;if("object"==typeof t&&null!==t){for(let a=0;a<e.keys.length;a+=1)if(e.keys[a]in t)return!0;const n=Object.keys(t);for(let t=0;t<n.length;t+=1)if(isCqShorthand(e.keys,n[t]))return!0}return!1}function capitalize$1(e){if("string"!=typeof e)throw new Error(formatMuiErrorMessage(7));return e.charAt(0).toUpperCase()+e.slice(1)}function getStyleValue2(e,t,n,a){let o;return o="function"==typeof e?e(n):Array.isArray(e)?e[n]||n:"string"==typeof n&&getPath(e,n,!0,a)||n,t&&(o=t(o,n,e)),o}function getPath(e,t,n=!0,a=void 0){if(!e||!t)return null;const o=t.split(".");if(e.vars&&n){const t=getPathImpl(e.vars,o,a);if(null!=t)return t}return getPathImpl(e,o,a)}function getPathImpl(e,t,n=void 0){let a,o=e,i=0;for(;i<t.length;){if(null==o)return o;a=o,o=o[t[i]],i+=1}if(n&&void 0===o){const e=t[t.length-1],o=`${n}${"default"===e?"":capitalize$1(e)}`;return a?.[o]}return o}function style$1(e){const{prop:t,cssProperty:n=e.prop,themeKey:a,transform:o}=e,fn=e=>{if(null==e[t])return null;const i=e[t],s=getPath(e.theme,a)||{};return handleBreakpoints(e,i,e=>{const a=getStyleValue2(s,o,e,t);return!1===n?a:{[n]:a}})};return fn.propTypes={},fn.filterProps=[t],fn}var xi={internal_cache:{}},Ci={m:"margin",p:"padding"},wi={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},ki={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},Ei={};for(const Lg in Ci)Ei[Lg]=[Ci[Lg]];for(const Lg in Ci)for(const e in wi){const t=Ci[Lg],n=wi[e],a=Array.isArray(n)?n.map(e=>t+e):[t+n];Ei[Lg+e]=a}for(const Lg in ki)Ei[Lg]=Ei[ki[Lg]];var _i=new Set(["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"]),Pi=new Set(["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"]),Ti=new Set([..._i,...Pi]);function createUnaryUnit(e,t,n,a){const o=getPath(e,t,!0)??n;return"number"==typeof o||"string"==typeof o?e=>"string"==typeof e?e:"string"==typeof o?o.startsWith("var(")&&0===e?0:o.startsWith("var(")&&1===e?o:`calc(${e} * ${o})`:o*e:Array.isArray(o)?e=>{if("string"==typeof e)return e;const t=o[Math.abs(e)];return e>=0?t:"number"==typeof t?-t:"string"==typeof t&&t.startsWith("var(")?`calc(-1 * ${t})`:`-${t}`}:"function"==typeof o?o:()=>{}}function createUnarySpacing(e){return createUnaryUnit(e,"spacing",8,"spacing")}function getValue(e,t){return"string"==typeof t||null==t?t:e(t)}var Ai=[""];function style(e,t){const n=e.theme??xi,a=n?.internal_cache?.unarySpacing??createUnarySpacing(n),o={};for(const i in e){if(!t.has(i))continue;const n=Ei[i]??(Ai[0]=i,Ai),s=e[i];iterateBreakpoints(o,e.theme,s,(e,t)=>{const i=e?o[e]:o;for(let o=0;o<n.length;o+=1)i[n[o]]=getValue(a,t)})}return o}function margin(e){return style(e,_i)}function padding(e){return style(e,Pi)}function spacing(e){return style(e,Ti)}function createSpacing(e=8,t=createUnarySpacing({spacing:e})){if(e.mui)return e;const spacing=(...e)=>(0===e.length?[1]:e).map(e=>{const n=t(e);return"number"==typeof n?`${n}px`:n}).join(" ");return spacing.mui=!0,spacing}function compose(...e){const t=e.reduce((e,t)=>(t.filterProps.forEach(n=>{e[n]=t}),e),{}),fn=e=>{const n={};for(const a in e)t[a]&&fastDeepAssign(n,t[a](e));return n};return fn.propTypes={},fn.filterProps=e.reduce((e,t)=>e.concat(t.filterProps),[]),fn}function borderTransform(e){return"number"!=typeof e?e:`${e}px solid`}function createBorderStyle(e,t){return style$1({prop:e,themeKey:"borders",transform:t})}margin.propTypes={},margin.filterProps=_i,padding.propTypes={},padding.filterProps=Pi,spacing.propTypes={},spacing.filterProps=Ti;var Ri=createBorderStyle("border",borderTransform),Mi=createBorderStyle("borderTop",borderTransform),Di=createBorderStyle("borderRight",borderTransform),Oi=createBorderStyle("borderBottom",borderTransform),$i=createBorderStyle("borderLeft",borderTransform),Ii=createBorderStyle("borderColor"),Ni=createBorderStyle("borderTopColor"),zi=createBorderStyle("borderRightColor"),Li=createBorderStyle("borderBottomColor"),ji=createBorderStyle("borderLeftColor"),Bi=createBorderStyle("outline",borderTransform),Fi=createBorderStyle("outlineColor"),borderRadius=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){const t=createUnaryUnit(e.theme,"shape.borderRadius",4,"borderRadius"),styleFromPropValue=e=>({borderRadius:getValue(t,e)});return handleBreakpoints(e,e.borderRadius,styleFromPropValue)}return null};borderRadius.propTypes={},borderRadius.filterProps=["borderRadius"];compose(Ri,Mi,Di,Oi,$i,Ii,Ni,zi,Li,ji,borderRadius,Bi,Fi);var gap=e=>{if(void 0!==e.gap&&null!==e.gap){const t=createUnaryUnit(e.theme,"spacing",8,"gap"),styleFromPropValue=e=>({gap:getValue(t,e)});return handleBreakpoints(e,e.gap,styleFromPropValue)}return null};gap.propTypes={},gap.filterProps=["gap"];var columnGap=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){const t=createUnaryUnit(e.theme,"spacing",8,"columnGap"),styleFromPropValue=e=>({columnGap:getValue(t,e)});return handleBreakpoints(e,e.columnGap,styleFromPropValue)}return null};columnGap.propTypes={},columnGap.filterProps=["columnGap"];var rowGap=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){const t=createUnaryUnit(e.theme,"spacing",8,"rowGap"),styleFromPropValue=e=>({rowGap:getValue(t,e)});return handleBreakpoints(e,e.rowGap,styleFromPropValue)}return null};rowGap.propTypes={},rowGap.filterProps=["rowGap"];compose(gap,columnGap,rowGap,style$1({prop:"gridColumn"}),style$1({prop:"gridRow"}),style$1({prop:"gridAutoFlow"}),style$1({prop:"gridAutoColumns"}),style$1({prop:"gridAutoRows"}),style$1({prop:"gridTemplateColumns"}),style$1({prop:"gridTemplateRows"}),style$1({prop:"gridTemplateAreas"}),style$1({prop:"gridArea"}));function paletteTransform(e,t){return"grey"===t?t:e}compose(style$1({prop:"color",themeKey:"palette",transform:paletteTransform}),style$1({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:paletteTransform}),style$1({prop:"backgroundColor",themeKey:"palette",transform:paletteTransform}));function sizingTransform(e){return e<=1&&0!==e?100*e+"%":e}var qi=style$1({prop:"width",transform:sizingTransform}),maxWidth=e=>{if(void 0!==e.maxWidth&&null!==e.maxWidth){const styleFromPropValue=t=>{const n=e.theme?.breakpoints?.values?.[t]||yi[t];return n?"px"!==e.theme?.breakpoints?.unit?{maxWidth:`${n}${e.theme.breakpoints.unit}`}:{maxWidth:n}:{maxWidth:sizingTransform(t)}};return handleBreakpoints(e,e.maxWidth,styleFromPropValue)}return null};maxWidth.filterProps=["maxWidth"];var Ui=style$1({prop:"minWidth",transform:sizingTransform}),Vi=style$1({prop:"height",transform:sizingTransform}),Hi=style$1({prop:"maxHeight",transform:sizingTransform}),Wi=style$1({prop:"minHeight",transform:sizingTransform}),Gi=(style$1({prop:"size",cssProperty:"width",transform:sizingTransform}),style$1({prop:"size",cssProperty:"height",transform:sizingTransform}),compose(qi,maxWidth,Ui,Vi,Hi,Wi,style$1({prop:"boxSizing"})),{border:{themeKey:"borders",transform:borderTransform},borderTop:{themeKey:"borders",transform:borderTransform},borderRight:{themeKey:"borders",transform:borderTransform},borderBottom:{themeKey:"borders",transform:borderTransform},borderLeft:{themeKey:"borders",transform:borderTransform},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:borderTransform},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:borderRadius},color:{themeKey:"palette",transform:paletteTransform},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:paletteTransform},backgroundColor:{themeKey:"palette",transform:paletteTransform},p:{style:padding},pt:{style:padding},pr:{style:padding},pb:{style:padding},pl:{style:padding},px:{style:padding},py:{style:padding},padding:{style:padding},paddingTop:{style:padding},paddingRight:{style:padding},paddingBottom:{style:padding},paddingLeft:{style:padding},paddingX:{style:padding},paddingY:{style:padding},paddingInline:{style:padding},paddingInlineStart:{style:padding},paddingInlineEnd:{style:padding},paddingBlock:{style:padding},paddingBlockStart:{style:padding},paddingBlockEnd:{style:padding},m:{style:margin},mt:{style:margin},mr:{style:margin},mb:{style:margin},ml:{style:margin},mx:{style:margin},my:{style:margin},margin:{style:margin},marginTop:{style:margin},marginRight:{style:margin},marginBottom:{style:margin},marginLeft:{style:margin},marginX:{style:margin},marginY:{style:margin},marginInline:{style:margin},marginInlineStart:{style:margin},marginInlineEnd:{style:margin},marginBlock:{style:margin},marginBlockStart:{style:margin},marginBlockEnd:{style:margin},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:gap},rowGap:{style:rowGap},columnGap:{style:columnGap},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:sizingTransform},maxWidth:{style:maxWidth},minWidth:{transform:sizingTransform},height:{transform:sizingTransform},maxHeight:{transform:sizingTransform},minHeight:{transform:sizingTransform},boxSizing:{},font:{themeKey:"font"},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}}),Yi={};function unstable_createStyleFunctionSx(){function styleFunctionSx(e){if(!e.sx)return null;const{sx:t,theme:n=Yi,nested:a}=e,o=n.unstable_sxConfig??Gi,i={sx:null,theme:n,nested:!0};function process(t){let s=t;if("function"==typeof t)s=t(n);else if("object"!=typeof t)return t;if(!s)return null;const l=n.breakpoints??vi,c=createEmptyBreakpointObject(l);for(const a in s){const t=callIfFn(s[a],n);null!=t&&("object"==typeof t?o[a]?setThemeValue(c,a,t,n,o):hasBreakpoint(l,t)?iterateBreakpoints(c,e.theme,t,(e,t)=>{c[e][a]=t}):(i.sx=t,c[a]=styleFunctionSx(i)):setThemeValue(c,a,t,n,o))}return!a&&n.modularCssLayers?{"@layer sx":sortContainerQueries(n,removeUnusedBreakpoints(l,c))}:sortContainerQueries(n,removeUnusedBreakpoints(l,c))}return Array.isArray(t)?t.map(process):process(t)}return styleFunctionSx.filterProps=["sx"],styleFunctionSx}var Ki=unstable_createStyleFunctionSx();function setThemeValue(e,t,n,a,o){const i=o[t];if(!i)return void(e[t]=n);if(null==n)return;const{themeKey:s}=i;if("typography"===s&&"inherit"===n)return void(e[t]=n);const{style:l}=i;if(l)return void fastDeepAssign(e,l({[t]:n,theme:a}));const{cssProperty:c=t,transform:u}=i,d=getPath(a,s);iterateBreakpoints(e,a,n,(n,a)=>{const o=getStyleValue2(d,u,a,t);!1===c?fastDeepAssign(n?e[n]:e,o):n?e[n][c]=o:e[c]=o})}function callIfFn(e,t){return"function"==typeof e?e(t):e}function applyStyles$1(e,t){const n=this;if(n.vars){if(!n.colorSchemes?.[e]||"function"!=typeof n.getColorSchemeSelector)return{};let a=n.getColorSchemeSelector(e);return"&"===a?t:((a.includes("data-")||a.includes("."))&&(a=`*:where(${a.replace(/\s*&$/,"")}) &`),{[a]:t})}return n.palette.mode===e?t:{}}function createTheme$1(e={},...t){const{breakpoints:n={},palette:a={},spacing:o,shape:i={},...s}=e;let l=deepmerge({breakpoints:createBreakpoints(n),direction:"ltr",components:{},palette:{mode:"light",...a},spacing:createSpacing(o),shape:{...hi,...i}},s);return l=cssContainerQueries(l),l.applyStyles=applyStyles$1,l=t.reduce((e,t)=>deepmerge(e,t),l),l.unstable_sxConfig={...Gi,...s?.unstable_sxConfig},l.unstable_sx=function sx(e){return Ki({sx:e,theme:this})},l.internal_cache={},l}function isObjectEmpty$1(e){return 0===Object.keys(e).length}function useTheme$3(e=null){const t=c.useContext(Yo);return!t||isObjectEmpty$1(t)?e:t}var Qi=createTheme$1();function useTheme$2(e=Qi){return useTheme$3(e)}function wrapGlobalLayer(e){const t=internal_serializeStyles(e);return e!==t&&t.styles?(t.styles.match(/^@layer\s+[^{]*$/)||(t.styles=`@layer global{${t.styles}}`),t):e}function GlobalStyles$1({styles:e,themeId:t,defaultTheme:n={}}){const a=useTheme$2(n),o=t&&a[t]||a;let i="function"==typeof e?e(o):e;return o.modularCssLayers&&(i=Array.isArray(i)?i.map(e=>wrapGlobalLayer("function"==typeof e?e(o):e)):wrapGlobalLayer(i)),(0,Ba.jsx)(GlobalStyles$2,{styles:i})}var defaultGenerator=e=>e,Zi=(()=>{let e=defaultGenerator;return{configure(t){e=t},generate:t=>e(t),reset(){e=defaultGenerator}}})();function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n)}else for(n in e)e[n]&&(a&&(a+=" "),a+=n);return a}function clsx(){for(var e,t,n=0,a="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}function createBox(e={}){const{themeId:t,defaultTheme:n,defaultClassName:a="MuiBox-root",generateClassName:o}=e,i=styled$1("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(Ki);return c.forwardRef(function Box(e,s){const l=useTheme$2(n),{className:c,component:u="div",...d}=e;return(0,Ba.jsx)(i,{as:u,ref:s,className:clsx(c,o?o(a):a),theme:t&&l[t]||l,...d})})}var Xi={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function generateUtilityClass(e,t,n="Mui"){const a=Xi[t];return a?`${n}-${a}`:`${Zi.generate(e)}-${t}`}function generateUtilityClasses(e,t,n="Mui"){const a={};return t.forEach(t=>{a[t]=generateUtilityClass(e,t,n)}),a}function preprocessStyles(e){const{variants:t,...n}=e,a={variants:t,style:internal_serializeStyles(n),isProcessed:!0};return a.style===n||t&&t.forEach(e=>{"function"!=typeof e.style&&(e.style=internal_serializeStyles(e.style))}),a}var Ji=createTheme$1();function shouldForwardProp(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}function shallowLayer(e,t){return t&&e&&"object"==typeof e&&e.styles&&!e.styles.startsWith("@layer")&&(e.styles=`@layer ${t}{${String(e.styles)}}`),e}function defaultOverridesResolver(e){return e?(t,n)=>n[e]:null}function attachTheme(e,t,n){e.theme=isObjectEmpty$2(e.theme)?n:e.theme[t]||e.theme}function processStyle(e,t,n){const a="function"==typeof t?t(e):t;if(Array.isArray(a))return a.flatMap(t=>processStyle(e,t,n));if(Array.isArray(a?.variants)){let t;if(a.isProcessed)t=n?shallowLayer(a.style,n):a.style;else{const{variants:e,...o}=a;t=n?shallowLayer(internal_serializeStyles(o),n):o}return processStyleVariants(e,a.variants,[t],n)}return a?.isProcessed?n?shallowLayer(internal_serializeStyles(a.style),n):a.style:n?shallowLayer(internal_serializeStyles(a),n):a}function processStyleVariants(e,t,n=[],a=void 0){let o;e:for(let i=0;i<t.length;i+=1){const s=t[i];if("function"==typeof s.props){if(o??={...e,...e.ownerState,ownerState:e.ownerState},!s.props(o))continue}else for(const t in s.props)if(e[t]!==s.props[t]&&e.ownerState?.[t]!==s.props[t])continue e;"function"==typeof s.style?(o??={...e,...e.ownerState,ownerState:e.ownerState},n.push(a?shallowLayer(internal_serializeStyles(s.style(o)),a):s.style(o))):n.push(a?shallowLayer(internal_serializeStyles(s.style),a):s.style)}return n}function createStyled(e={}){const{themeId:t,defaultTheme:n=Ji,rootShouldForwardProp:a=shouldForwardProp,slotShouldForwardProp:o=shouldForwardProp}=e;function styleAttachTheme(e){attachTheme(e,t,n)}const styled=(e,t={})=>{internal_mutateStyles(e,e=>e.filter(e=>e!==Ki));const{name:n,slot:i,skipVariantsResolver:s,skipSx:l,overridesResolver:c=defaultOverridesResolver(lowercaseFirstLetter(i)),...u}=t,d=n&&n.startsWith("Mui")||i?"components":"custom",p=void 0!==s?s:i&&"Root"!==i&&"root"!==i||!1,m=l||!1;let g=shouldForwardProp;"Root"===i||"root"===i?g=a:i?g=o:isStringTag(e)&&(g=void 0);const h=styled$1(e,{shouldForwardProp:g,label:generateStyledLabel(n,i),...u}),transformStyle=e=>{if(e.__emotion_real===e)return e;if("function"==typeof e)return function styleFunctionProcessor(t){return processStyle(t,e,t.theme.modularCssLayers?d:void 0)};if(isPlainObject$1(e)){const t=preprocessStyles(e);return function styleObjectProcessor(e){return t.variants?processStyle(e,t,e.theme.modularCssLayers?d:void 0):e.theme.modularCssLayers?shallowLayer(t.style,d):t.style}}return e},muiStyledResolver=(...t)=>{const a=[],o=t.map(transformStyle),i=[];if(a.push(styleAttachTheme),n&&c&&i.push(function styleThemeOverrides(e){const t=e.theme.components?.[n]?.styleOverrides;if(!t)return null;const a={};for(const n in t)a[n]=processStyle(e,t[n],e.theme.modularCssLayers?"theme":void 0);return c(e,a)}),n&&!p&&i.push(function styleThemeVariants(e){const t=e.theme?.components?.[n]?.variants;return t?processStyleVariants(e,t,[],e.theme.modularCssLayers?"theme":void 0):null}),m||i.push(Ki),Array.isArray(o[0])){const e=o.shift(),t=new Array(a.length).fill(""),n=new Array(i.length).fill("");let s;s=[...t,...e,...n],s.raw=[...t,...e.raw,...n],a.unshift(s)}const s=h(...a,...o,...i);return e.muiName&&(s.muiName=e.muiName),s};return h.withConfig&&(muiStyledResolver.withConfig=h.withConfig),muiStyledResolver};return styled}function generateStyledLabel(e,t){let n;return n}function isStringTag(e){return"string"==typeof e&&e.charCodeAt(0)>96}function lowercaseFirstLetter(e){return e?e.charAt(0).toLowerCase()+e.slice(1):e}function resolveProps(e,t,n=!1){const a={...t};for(const o in e)if(Object.prototype.hasOwnProperty.call(e,o)){const i=o;if("components"===i||"slots"===i)a[i]={...e[i],...a[i]};else if("componentsProps"===i||"slotProps"===i){const o=e[i],s=t[i];if(s)if(o){a[i]={...s};for(const e in o)if(Object.prototype.hasOwnProperty.call(o,e)){const t=e;a[i][t]=resolveProps(o[t],s[t],n)}}else a[i]=s;else a[i]=o||{}}else"className"===i&&n&&void 0!==t.className?a.className=clsx(e?.className,t?.className):"style"===i&&n&&t.style?a.style={...e?.style,...t?.style}:void 0===a[i]&&(a[i]=e[i])}return a}var es="undefined"!=typeof window?c.useLayoutEffect:c.useEffect;function clamp(e,t=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,n))}function clampWrapper(e,t=0,n=1){return clamp(e,t,n)}function hexToRgb(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let n=e.match(t);return n&&1===n[0].length&&(n=n.map(e=>e+e)),n?`rgb${4===n.length?"a":""}(${n.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(", ")})`:""}function decomposeColor(e){if(e.type)return e;if("#"===e.charAt(0))return decomposeColor(hexToRgb(e));const t=e.indexOf("("),n=e.substring(0,t);if(!["rgb","rgba","hsl","hsla","color"].includes(n))throw new Error(formatMuiErrorMessage(9,e));let a,o=e.substring(t+1,e.length-1);if("color"===n){if(o=o.split(" "),a=o.shift(),4===o.length&&"/"===o[3].charAt(0)&&(o[3]=o[3].slice(1)),!["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].includes(a))throw new Error(formatMuiErrorMessage(10,a))}else o=o.split(",");return o=o.map(e=>parseFloat(e)),{type:n,values:o,colorSpace:a}}var colorChannel=e=>{const t=decomposeColor(e);return t.values.slice(0,3).map((e,n)=>t.type.includes("hsl")&&0!==n?`${e}%`:e).join(" ")},private_safeColorChannel=(e,t)=>{try{return colorChannel(e)}catch(n){return e}};function recomposeColor(e){const{type:t,colorSpace:n}=e;let{values:a}=e;return t.includes("rgb")?a=a.map((e,t)=>t<3?parseInt(e,10):e):t.includes("hsl")&&(a[1]=`${a[1]}%`,a[2]=`${a[2]}%`),a=t.includes("color")?`${n} ${a.join(" ")}`:`${a.join(", ")}`,`${t}(${a})`}function hslToRgb(e){e=decomposeColor(e);const{values:t}=e,n=t[0],a=t[1]/100,o=t[2]/100,i=a*Math.min(o,1-o),f=(e,t=(e+n/30)%12)=>o-i*Math.max(Math.min(t-3,9-t,1),-1);let s="rgb";const l=[Math.round(255*f(0)),Math.round(255*f(8)),Math.round(255*f(4))];return"hsla"===e.type&&(s+="a",l.push(t[3])),recomposeColor({type:s,values:l})}function getLuminance(e){let t="hsl"===(e=decomposeColor(e)).type||"hsla"===e.type?decomposeColor(hslToRgb(e)).values:e.values;return t=t.map(t=>("color"!==e.type&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4)),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function getContrastRatio(e,t){const n=getLuminance(e),a=getLuminance(t);return(Math.max(n,a)+.05)/(Math.min(n,a)+.05)}function alpha(e,t){return e=decomposeColor(e),t=clampWrapper(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,recomposeColor(e)}function private_safeAlpha(e,t,n){try{return alpha(e,t)}catch(a){return e}}function darken(e,t){if(e=decomposeColor(e),t=clampWrapper(t),e.type.includes("hsl"))e.values[2]*=1-t;else if(e.type.includes("rgb")||e.type.includes("color"))for(let n=0;n<3;n+=1)e.values[n]*=1-t;return recomposeColor(e)}function private_safeDarken(e,t,n){try{return darken(e,t)}catch(a){return e}}function lighten(e,t){if(e=decomposeColor(e),t=clampWrapper(t),e.type.includes("hsl"))e.values[2]+=(100-e.values[2])*t;else if(e.type.includes("rgb"))for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(e.type.includes("color"))for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return recomposeColor(e)}function private_safeLighten(e,t,n){try{return lighten(e,t)}catch(a){return e}}function emphasize(e,t=.15){return getLuminance(e)>.5?darken(e,t):lighten(e,t)}function private_safeEmphasize(e,t,n){try{return emphasize(e,t)}catch(a){return e}}var ts=c.createContext(null);function useTheme$1(){return c.useContext(ts)}var rs="function"==typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__";function mergeOuterLocalTheme(e,t){return"function"==typeof t?t(e):{...e,...t}}function ThemeProvider$2(e){const{children:t,theme:n}=e,a=useTheme$1(),o=c.useMemo(()=>{const e=null===a?{...n}:mergeOuterLocalTheme(a,n);return null!=e&&(e[rs]=null!==a),e},[n,a]);return(0,Ba.jsx)(ts.Provider,{value:o,children:t})}var ns=c.createContext();function RtlProvider({value:e,...t}){return(0,Ba.jsx)(ns.Provider,{value:e??!0,...t})}var useRtl=()=>c.useContext(ns)??!1,as=c.createContext(void 0);function DefaultPropsProvider({value:e,children:t}){return(0,Ba.jsx)(as.Provider,{value:e,children:t})}function getThemeProps(e){const{theme:t,name:n,props:a}=e;if(!t||!t.components||!t.components[n])return a;const o=t.components[n];return o.defaultProps?resolveProps(o.defaultProps,a,t.components.mergeClassNameAndStyle):o.styleOverrides||o.variants?a:resolveProps(o,a,t.components.mergeClassNameAndStyle)}function useDefaultProps$1({props:e,name:t}){return getThemeProps({props:e,name:t,theme:{components:c.useContext(as)}})}var os=0;function useGlobalId(e){const[t,n]=c.useState(e),a=e||t;return c.useEffect(()=>{null==t&&n(`mui-${os+=1}`)},[t]),a}var ss={...c}.useId;function useId(e){if(void 0!==ss){const t=ss();return e??t}return useGlobalId(e)}function useLayerOrder(e){const t=useTheme$3(),n=useId()||"",{modularCssLayers:a}=e;let o="mui.global, mui.components, mui.theme, mui.custom, mui.sx";return o=a&&null===t?"string"==typeof a?a.replace(/mui(?!\.)/g,o):`@layer ${o};`:"",es(()=>{const e=document.querySelector("head");if(!e)return;const t=e.firstChild;if(o){if(t&&t.hasAttribute?.("data-mui-layer-order")&&t.getAttribute("data-mui-layer-order")===n)return;const a=document.createElement("style");a.setAttribute("data-mui-layer-order",n),a.textContent=o,e.prepend(a)}else e.querySelector(`style[data-mui-layer-order="${n}"]`)?.remove()},[o,n]),o?(0,Ba.jsx)(GlobalStyles$1,{styles:o}):null}var ls={};function useThemeScoping(e,t,n,a=!1){return c.useMemo(()=>{const o=e&&t[e]||t;if("function"==typeof n){const i=n(o),s=e?{...t,[e]:i}:i;return a?()=>s:s}return e?{...t,[e]:n}:{...t,...n}},[e,t,n,a])}function ThemeProvider$1(e){const{children:t,theme:n,themeId:a}=e,o=useTheme$3(ls),i=useTheme$1()||ls,s=useThemeScoping(a,o,n),l=useThemeScoping(a,i,n,!0),c="rtl"===(a?s[a]:s).direction,u=useLayerOrder(s);return(0,Ba.jsx)(ThemeProvider$2,{theme:l,children:(0,Ba.jsx)(Yo.Provider,{value:s,children:(0,Ba.jsx)(RtlProvider,{value:c,children:(0,Ba.jsxs)(DefaultPropsProvider,{value:a?s[a].components:s.components,children:[u,t]})})})})}var cs={theme:void 0};function unstable_memoTheme(e){let t,n;return function styleMemoized(a){let o=t;return void 0!==o&&a.theme===n||(cs.theme=a.theme,o=preprocessStyles(e(cs)),t=o,n=a.theme),o}}var us="mode",ds="color-scheme",ps="data-color-scheme";function InitColorSchemeScript(e){const{defaultMode:t="system",defaultLightColorScheme:n="light",defaultDarkColorScheme:a="dark",modeStorageKey:o=us,colorSchemeStorageKey:i=ds,attribute:s=ps,colorSchemeNode:l="document.documentElement",nonce:c}=e||{};let u="",d=s;if("class"===s&&(d=".%s"),"data"===s&&(d="[data-%s]"),d.startsWith(".")){const e=d.substring(1);u+=`${l}.classList.remove('${e}'.replace('%s', light), '${e}'.replace('%s', dark));\n ${l}.classList.add('${e}'.replace('%s', colorScheme));`}const p=d.match(/\[([^[\]]+)\]/);if(p){const[e,t]=p[1].split("=");t||(u+=`${l}.removeAttribute('${e}'.replace('%s', light));\n ${l}.removeAttribute('${e}'.replace('%s', dark));`),u+=`\n ${l}.setAttribute('${e}'.replace('%s', colorScheme), ${t?`${t}.replace('%s', colorScheme)`:'""'});`}else".%s"!==d&&(u+=`${l}.setAttribute('${d}', colorScheme);`);return(0,Ba.jsx)("script",{suppressHydrationWarning:!0,nonce:"undefined"==typeof window?c:"",dangerouslySetInnerHTML:{__html:`(function() {\ntry {\n let colorScheme = '';\n const mode = localStorage.getItem('${o}') || '${t}';\n const dark = localStorage.getItem('${i}-dark') || '${a}';\n const light = localStorage.getItem('${i}-light') || '${n}';\n if (mode === 'system') {\n // handle system mode\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\n if (mql.matches) {\n colorScheme = dark\n } else {\n colorScheme = light\n }\n }\n if (mode === 'light') {\n colorScheme = light;\n }\n if (mode === 'dark') {\n colorScheme = dark;\n }\n if (colorScheme) {\n ${u}\n }\n} catch(e){}})();`}},"mui-color-scheme-init")}function noop$4(){}var localStorageManager=({key:e,storageWindow:t})=>(t||"undefined"==typeof window||(t=window),{get(n){if("undefined"==typeof window)return;if(!t)return n;let a;try{a=t.localStorage.getItem(e)}catch{}return a||n},set:n=>{if(t)try{t.localStorage.setItem(e,n)}catch{}},subscribe:n=>{if(!t)return noop$4;const listener=t=>{const a=t.newValue;t.key===e&&n(a)};return t.addEventListener("storage",listener),()=>{t.removeEventListener("storage",listener)}}});function noop$3(){}function getSystemMode(e){if("undefined"!=typeof window&&"function"==typeof window.matchMedia&&"system"===e)return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function processState(e,t){return"light"===e.mode||"system"===e.mode&&"light"===e.systemMode?t("light"):"dark"===e.mode||"system"===e.mode&&"dark"===e.systemMode?t("dark"):void 0}function getColorScheme(e){return processState(e,t=>"light"===t?e.lightColorScheme:"dark"===t?e.darkColorScheme:void 0)}function useCurrentColorScheme(e){const{defaultMode:t="light",defaultLightColorScheme:n,defaultDarkColorScheme:a,supportedColorSchemes:o=[],modeStorageKey:i=us,colorSchemeStorageKey:s=ds,storageWindow:l=("undefined"==typeof window?void 0:window),storageManager:u=localStorageManager,noSsr:d=!1}=e,p=o.join(","),m=o.length>1,g=c.useMemo(()=>u?.({key:i,storageWindow:l}),[u,i,l]),h=c.useMemo(()=>u?.({key:`${s}-light`,storageWindow:l}),[u,s,l]),b=c.useMemo(()=>u?.({key:`${s}-dark`,storageWindow:l}),[u,s,l]),[y,v]=c.useState(()=>{const e=g?.get(t)||t,o=h?.get(n)||n,i=b?.get(a)||a;return{mode:e,systemMode:getSystemMode(e),lightColorScheme:o,darkColorScheme:i}}),[S,x]=c.useState(d||!m);c.useEffect(()=>{x(!0)},[]);const C=getColorScheme(y),w=c.useCallback(e=>{v(n=>{if(e===n.mode)return n;const a=e??t;return g?.set(a),{...n,mode:a,systemMode:getSystemMode(a)}})},[g,t]),k=c.useCallback(e=>{e?"string"==typeof e?e&&!p.includes(e)?console.error(`\`${e}\` does not exist in \`theme.colorSchemes\`.`):v(t=>{const n={...t};return processState(t,t=>{"light"===t&&(h?.set(e),n.lightColorScheme=e),"dark"===t&&(b?.set(e),n.darkColorScheme=e)}),n}):v(t=>{const o={...t},i=null===e.light?n:e.light,s=null===e.dark?a:e.dark;return i&&(p.includes(i)?(o.lightColorScheme=i,h?.set(i)):console.error(`\`${i}\` does not exist in \`theme.colorSchemes\`.`)),s&&(p.includes(s)?(o.darkColorScheme=s,b?.set(s)):console.error(`\`${s}\` does not exist in \`theme.colorSchemes\`.`)),o}):v(e=>(h?.set(n),b?.set(a),{...e,lightColorScheme:n,darkColorScheme:a}))},[p,h,b,n,a]),E=c.useCallback(e=>{"system"===y.mode&&v(t=>{const n=e?.matches?"dark":"light";return t.systemMode===n?t:{...t,systemMode:n}})},[y.mode]),P=c.useRef(E);return P.current=E,c.useEffect(()=>{if("function"!=typeof window.matchMedia||!m)return;const handler=(...e)=>P.current(...e),e=window.matchMedia("(prefers-color-scheme: dark)");return e.addListener(handler),handler(e),()=>{e.removeListener(handler)}},[m]),c.useEffect(()=>{if(m){const e=g?.subscribe(e=>{e&&!["light","dark","system"].includes(e)||w(e||t)})||noop$3,n=h?.subscribe(e=>{e&&!p.match(e)||k({light:e})})||noop$3,a=b?.subscribe(e=>{e&&!p.match(e)||k({dark:e})})||noop$3;return()=>{e(),n(),a()}}},[k,w,p,t,l,m,g,h,b]),{...y,mode:S?y.mode:void 0,systemMode:S?y.systemMode:void 0,colorScheme:S?C:void 0,setMode:w,setColorScheme:k}}var ms="*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function createCssVarsProvider(e){const{themeId:t,theme:n={},modeStorageKey:a=us,colorSchemeStorageKey:o=ds,disableTransitionOnChange:i=!1,defaultColorScheme:s,resolveTheme:l}=e,u={allColorSchemes:[],colorScheme:void 0,darkColorScheme:void 0,lightColorScheme:void 0,mode:void 0,setColorScheme:()=>{},setMode:()=>{},systemMode:void 0},d=c.createContext(void 0),useColorScheme=()=>c.useContext(d)||u,p={},m={};function CssVarsProvider(e){const{children:u,theme:g,modeStorageKey:h=a,colorSchemeStorageKey:b=o,disableTransitionOnChange:y=i,storageManager:v,storageWindow:S=("undefined"==typeof window?void 0:window),documentNode:x=("undefined"==typeof document?void 0:document),colorSchemeNode:C=("undefined"==typeof document?void 0:document.documentElement),disableNestedContext:w=!1,disableStyleSheetGeneration:k=!1,defaultMode:E="system",forceThemeRerender:P=!1,noSsr:T}=e,R=c.useRef(!1),M=useTheme$1(),D=c.useContext(d),O=!!D&&!w,$=c.useMemo(()=>g||("function"==typeof n?n():n),[g]),I=$[t],N=I||$,{colorSchemes:L=p,components:j=m,cssVarPrefix:B}=N,F=Object.keys(L).filter(e=>!!L[e]).join(","),q=c.useMemo(()=>F.split(","),[F]),U="string"==typeof s?s:s.light,V="string"==typeof s?s:s.dark,{mode:H,setMode:W,systemMode:G,lightColorScheme:Y,darkColorScheme:K,colorScheme:Q,setColorScheme:Z}=useCurrentColorScheme({supportedColorSchemes:q,defaultLightColorScheme:U,defaultDarkColorScheme:V,modeStorageKey:h,colorSchemeStorageKey:b,defaultMode:L[U]&&L[V]?E:L[N.defaultColorScheme]?.palette?.mode||N.palette?.mode,storageManager:v,storageWindow:S,noSsr:T});let X=H,J=Q;O&&(X=D.mode,J=D.colorScheme);let ee=J||N.defaultColorScheme;N.vars&&!P&&(ee=N.defaultColorScheme);const te=c.useMemo(()=>{const e=N.generateThemeVars?.()||N.vars,t={...N,components:j,colorSchemes:L,cssVarPrefix:B,vars:e};if("function"==typeof t.generateSpacing&&(t.spacing=t.generateSpacing()),ee){const e=L[ee];e&&"object"==typeof e&&Object.keys(e).forEach(n=>{e[n]&&"object"==typeof e[n]?t[n]={...t[n],...e[n]}:t[n]=e[n]})}return l?l(t):t},[N,ee,j,L,B]),re=N.colorSchemeSelector;es(()=>{if(J&&C&&re&&"media"!==re){const e=re;let t=re;if("class"===e&&(t=".%s"),"data"===e&&(t="[data-%s]"),e?.startsWith("data-")&&!e.includes("%s")&&(t=`[${e}="%s"]`),t.startsWith("."))C.classList.remove(...q.map(e=>t.substring(1).replace("%s",e))),C.classList.add(t.substring(1).replace("%s",J));else{const e=t.replace("%s",J).match(/\[([^\]]+)\]/);if(e){const[t,n]=e[1].split("=");n||q.forEach(e=>{C.removeAttribute(t.replace(J,e))}),C.setAttribute(t,n?n.replace(/"|'/g,""):"")}else C.setAttribute(t,J)}}},[J,re,C,q]),c.useEffect(()=>{let e;if(y&&R.current&&x){const t=x.createElement("style");t.appendChild(x.createTextNode(ms)),x.head.appendChild(t),window.getComputedStyle(x.body),e=setTimeout(()=>{x.head.removeChild(t)},1)}return()=>{clearTimeout(e)}},[J,y,x]),c.useEffect(()=>(R.current=!0,()=>{R.current=!1}),[]);const ne=c.useMemo(()=>({allColorSchemes:q,colorScheme:J,darkColorScheme:K,lightColorScheme:Y,mode:X,setColorScheme:Z,setMode:W,systemMode:G}),[q,J,K,Y,X,Z,W,G,te.colorSchemeSelector]);let ae=!0;(k||!1===N.cssVariables||O&&M?.cssVarPrefix===B)&&(ae=!1);const oe=(0,Ba.jsxs)(c.Fragment,{children:[(0,Ba.jsx)(ThemeProvider$1,{themeId:I?t:void 0,theme:te,children:u}),ae&&(0,Ba.jsx)(GlobalStyles$2,{styles:te.generateStyleSheets?.()||[]})]});return O?oe:(0,Ba.jsx)(d.Provider,{value:ne,children:oe})}const g="string"==typeof s?s:s.light,h="string"==typeof s?s:s.dark;return{CssVarsProvider,useColorScheme,getInitColorSchemeScript:e=>InitColorSchemeScript({colorSchemeStorageKey:o,defaultLightColorScheme:g,defaultDarkColorScheme:h,modeStorageKey:a,...e})}}function createGetCssVar$1(e=""){function appendVar(...t){if(!t.length)return"";const n=t[0];return"string"!=typeof n||n.match(/(#|\(|\)|(-?(\d*\.)?\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\d*\.)?\d+)$|(\d+ \d+ \d+)/)?`, ${n}`:`, var(--${e?`${e}-`:""}${n}${appendVar(...t.slice(1))})`}return(t,...n)=>`var(--${e?`${e}-`:""}${t}${appendVar(...n)})`}var assignNestedKeys=(e,t,n,a=[])=>{let o=e;t.forEach((e,i)=>{i===t.length-1?Array.isArray(o)?o[Number(e)]=n:o&&"object"==typeof o&&(o[e]=n):o&&"object"==typeof o&&(o[e]||(o[e]=a.includes(e)?[]:{}),o=o[e])})},walkObjectDeep=(e,t,n)=>{function recurse(e,a=[],o=[]){Object.entries(e).forEach(([e,i])=>{(!n||n&&!n([...a,e]))&&null!=i&&("object"==typeof i&&Object.keys(i).length>0?recurse(i,[...a,e],Array.isArray(i)?[...o,e]:o):t([...a,e],i,o))})}recurse(e)},getCssValue=(e,t)=>"number"==typeof t?["lineHeight","fontWeight","opacity","zIndex"].some(t=>e.includes(t))||e[e.length-1].toLowerCase().includes("opacity")?t:`${t}px`:t;function cssVarsParser(e,t){const{prefix:n,shouldSkipGeneratingVar:a}=t||{},o={},i={},s={};return walkObjectDeep(e,(e,t,l)=>{if(!("string"!=typeof t&&"number"!=typeof t||a&&a(e,t))){const a=`--${n?`${n}-`:""}${e.join("-")}`,c=getCssValue(e,t);Object.assign(o,{[a]:c}),assignNestedKeys(i,e,`var(${a})`,l),assignNestedKeys(s,e,`var(${a}, ${c})`,l)}},e=>"vars"===e[0]),{css:o,vars:i,varsWithDefaults:s}}function prepareCssVars(e,t={}){const{getSelector:n=defaultGetSelector,disableCssColorScheme:a,colorSchemeSelector:o,enableContrastVars:i}=t,{colorSchemes:s={},components:l,defaultColorScheme:c="light",...u}=e,{vars:d,css:p,varsWithDefaults:m}=cssVarsParser(u,t);let g=m;const h={},{[c]:b,...y}=s;if(Object.entries(y||{}).forEach(([e,n])=>{const{vars:a,css:o,varsWithDefaults:i}=cssVarsParser(n,t);g=deepmerge(g,i),h[e]={css:o,vars:a}}),b){const{css:e,vars:n,varsWithDefaults:a}=cssVarsParser(b,t);g=deepmerge(g,a),h[c]={css:e,vars:n}}function defaultGetSelector(t,n){let a=o;if("class"===o&&(a=".%s"),"data"===o&&(a="[data-%s]"),o?.startsWith("data-")&&!o.includes("%s")&&(a=`[${o}="%s"]`),t){if("media"===a)return e.defaultColorScheme===t?":root":{[`@media (prefers-color-scheme: ${s[t]?.palette?.mode||t})`]:{":root":n}};if(a)return e.defaultColorScheme===t?`:root, ${a.replace("%s",String(t))}`:a.replace("%s",String(t))}return":root"}const generateStyleSheets=()=>{const t=[],o=e.defaultColorScheme||"light";function insertStyleSheet(e,n){Object.keys(n).length&&t.push("string"==typeof e?{[e]:{...n}}:e)}insertStyleSheet(n(void 0,{...p}),p);const{[o]:l,...c}=h;if(l){const{css:e}=l,t=s[o]?.palette?.mode,i=!a&&t?{colorScheme:t,...e}:{...e};insertStyleSheet(n(o,{...i}),i)}return Object.entries(c).forEach(([e,{css:t}])=>{const o=s[e]?.palette?.mode,i=!a&&o?{colorScheme:o,...t}:{...t};insertStyleSheet(n(e,{...i}),i)}),i&&t.push({":root":{"--__l-threshold":"0.7","--__l":"clamp(0, (l / var(--__l-threshold) - 1) * -infinity, 1)","--__a":"clamp(0.87, (l / var(--__l-threshold) - 1) * -infinity, 1)"}}),t};return{vars:g,generateThemeVars:()=>{let e={...d};return Object.entries(h).forEach(([,{vars:t}])=>{e=deepmerge(e,t)}),e},generateStyleSheets}}function createGetColorSchemeSelector(e){return function getColorSchemeSelector(t){return"media"===e?`@media (prefers-color-scheme: ${t})`:e?e.startsWith("data-")&&!e.includes("%s")?`[${e}="${t}"] &`:"class"===e?`.${t} &`:"data"===e?`[data-${t}] &`:`${e.replace("%s",t)} &`:"&"}}function composeClasses(e,t,n=void 0){const a={};for(const o in e){const i=e[o];let s="",l=!0;for(let e=0;e<i.length;e+=1){const a=i[e];a&&(s+=(!0===l?"":" ")+t(a),l=!1,n&&n[a]&&(s+=" "+n[a]))}a[o]=s}return a}function isMuiElement(e,t){return c.isValidElement(e)&&-1!==t.indexOf(e.type.muiName??e.type?._payload?.value?.muiName)}function getLight(){return{text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:Fa.white,default:Fa.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}}}var fs=getLight();function getDark(){return{text:{primary:Fa.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:Fa.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}}}var gs=getDark();function addLightOrDark(e,t,n,a){const o=a.light||a,i=a.dark||1.5*a;e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:"light"===t?e.light=lighten(e.main,o):"dark"===t&&(e.dark=darken(e.main,i)))}function mixLightOrDark(e,t,n,a,o){const i=o.light||o,s=o.dark||1.5*o;t[n]||(t.hasOwnProperty(a)?t[n]=t[a]:"light"===n?t.light=`color-mix(in ${e}, ${t.main}, #fff ${(100*i).toFixed(0)}%)`:"dark"===n&&(t.dark=`color-mix(in ${e}, ${t.main}, #000 ${(100*s).toFixed(0)}%)`))}function getDefaultPrimary(e="light"){return"dark"===e?{main:Va[200],light:Va[50],dark:Va[400]}:{main:Va[700],light:Va[400],dark:Va[800]}}function getDefaultSecondary(e="light"){return"dark"===e?{main:Ua[200],light:Ua[50],dark:Ua[400]}:{main:Ua[500],light:Ua[300],dark:Ua[700]}}function getDefaultError(e="light"){return"dark"===e?{main:qa[500],light:qa[300],dark:qa[700]}:{main:qa[700],light:qa[400],dark:qa[800]}}function getDefaultInfo(e="light"){return"dark"===e?{main:Ha[400],light:Ha[300],dark:Ha[700]}:{main:Ha[700],light:Ha[500],dark:Ha[900]}}function getDefaultSuccess(e="light"){return"dark"===e?{main:Wa[400],light:Wa[300],dark:Wa[700]}:{main:Wa[800],light:Wa[500],dark:Wa[900]}}function getDefaultWarning(e="light"){return"dark"===e?{main:Ga[400],light:Ga[300],dark:Ga[700]}:{main:"#ed6c02",light:Ga[500],dark:Ga[900]}}function contrastColor(e){return`oklch(from ${e} var(--__l) 0 h / var(--__a))`}function createPalette(e){const{mode:t="light",contrastThreshold:n=3,tonalOffset:a=.2,colorSpace:o,...i}=e,s=e.primary||getDefaultPrimary(t),l=e.secondary||getDefaultSecondary(t),c=e.error||getDefaultError(t),u=e.info||getDefaultInfo(t),d=e.success||getDefaultSuccess(t),p=e.warning||getDefaultWarning(t);function getContrastText(e){return o?contrastColor(e):getContrastRatio(e,gs.text.primary)>=n?gs.text.primary:fs.text.primary}const augmentColor=({color:e,name:t,mainShade:n=500,lightShade:i=300,darkShade:s=700})=>{if(!(e={...e}).main&&e[n]&&(e.main=e[n]),!e.hasOwnProperty("main"))throw new Error(formatMuiErrorMessage(11,t?` (${t})`:"",n));if("string"!=typeof e.main)throw new Error(formatMuiErrorMessage(12,t?` (${t})`:"",JSON.stringify(e.main)));return o?(mixLightOrDark(o,e,"light",i,a),mixLightOrDark(o,e,"dark",s,a)):(addLightOrDark(e,"light",i,a),addLightOrDark(e,"dark",s,a)),e.contrastText||(e.contrastText=getContrastText(e.main)),e};let m;return"light"===t?m=getLight():"dark"===t&&(m=getDark()),deepmerge({common:{...Fa},mode:t,primary:augmentColor({color:s,name:"primary"}),secondary:augmentColor({color:l,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:augmentColor({color:c,name:"error"}),warning:augmentColor({color:p,name:"warning"}),info:augmentColor({color:u,name:"info"}),success:augmentColor({color:d,name:"success"}),grey:Ya,contrastThreshold:n,getContrastText,augmentColor,tonalOffset:a,...m},i)}function prepareTypographyVars(e){const t={};return Object.entries(e).forEach(e=>{const[n,a]=e;"object"==typeof a&&(t[n]=`${a.fontStyle?`${a.fontStyle} `:""}${a.fontVariant?`${a.fontVariant} `:""}${a.fontWeight?`${a.fontWeight} `:""}${a.fontStretch?`${a.fontStretch} `:""}${a.fontSize||""}${a.lineHeight?`/${a.lineHeight} `:""}${a.fontFamily||""}`)}),t}function createMixins(e,t){return{toolbar:{minHeight:56,[e.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[e.up("sm")]:{minHeight:64}},...t}}function round$2(e){return Math.round(1e5*e)/1e5}var hs={textTransform:"uppercase"},bs='"Roboto", "Helvetica", "Arial", sans-serif';function createTypography(e,t){const{fontFamily:n=bs,fontSize:a=14,fontWeightLight:o=300,fontWeightRegular:i=400,fontWeightMedium:s=500,fontWeightBold:l=700,htmlFontSize:c=16,allVariants:u,pxToRem:d,...p}="function"==typeof t?t(e):t,m=a/14,g=d||(e=>e/c*m+"rem"),buildVariant=(e,t,a,o,i)=>({fontFamily:n,fontWeight:e,fontSize:g(t),lineHeight:a,...n===bs?{letterSpacing:`${round$2(o/t)}em`}:{},...i,...u});return deepmerge({htmlFontSize:c,pxToRem:g,fontFamily:n,fontSize:a,fontWeightLight:o,fontWeightRegular:i,fontWeightMedium:s,fontWeightBold:l,h1:buildVariant(o,96,1.167,-1.5),h2:buildVariant(o,60,1.2,-.5),h3:buildVariant(i,48,1.167,0),h4:buildVariant(i,34,1.235,.25),h5:buildVariant(i,24,1.334,0),h6:buildVariant(s,20,1.6,.15),subtitle1:buildVariant(i,16,1.75,.15),subtitle2:buildVariant(s,14,1.57,.1),body1:buildVariant(i,16,1.5,.15),body2:buildVariant(i,14,1.43,.15),button:buildVariant(s,14,1.75,.4,hs),caption:buildVariant(i,12,1.66,.4),overline:buildVariant(i,12,2.66,1,hs),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}},p,{clone:!1})}var ys=.2,vs=.14,Ss=.12;function createShadow(...e){return[`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,${ys})`,`${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,${vs})`,`${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,${Ss})`].join(",")}var xs=["none",createShadow(0,2,1,-1,0,1,1,0,0,1,3,0),createShadow(0,3,1,-2,0,2,2,0,0,1,5,0),createShadow(0,3,3,-2,0,3,4,0,0,1,8,0),createShadow(0,2,4,-1,0,4,5,0,0,1,10,0),createShadow(0,3,5,-1,0,5,8,0,0,1,14,0),createShadow(0,3,5,-1,0,6,10,0,0,1,18,0),createShadow(0,4,5,-2,0,7,10,1,0,2,16,1),createShadow(0,5,5,-3,0,8,10,1,0,3,14,2),createShadow(0,5,6,-3,0,9,12,1,0,3,16,2),createShadow(0,6,6,-3,0,10,14,1,0,4,18,3),createShadow(0,6,7,-4,0,11,15,1,0,4,20,3),createShadow(0,7,8,-4,0,12,17,2,0,5,22,4),createShadow(0,7,8,-4,0,13,19,2,0,5,24,4),createShadow(0,7,9,-4,0,14,21,2,0,5,26,4),createShadow(0,8,9,-5,0,15,22,2,0,6,28,5),createShadow(0,8,10,-5,0,16,24,2,0,6,30,5),createShadow(0,8,11,-5,0,17,26,2,0,6,32,5),createShadow(0,9,11,-5,0,18,28,2,0,7,34,6),createShadow(0,9,12,-6,0,19,29,2,0,7,36,6),createShadow(0,10,13,-6,0,20,31,3,0,8,38,7),createShadow(0,10,13,-6,0,21,33,3,0,8,40,7),createShadow(0,10,14,-6,0,22,35,3,0,8,42,7),createShadow(0,11,14,-7,0,23,36,3,0,9,44,8),createShadow(0,11,15,-7,0,24,38,3,0,9,46,8)],Cs={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},ws={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function formatMs(e){return`${Math.round(e)}ms`}function getAutoHeightDuration(e){if(!e)return 0;const t=e/36;return Math.min(Math.round(10*(4+15*t**.25+t/5)),3e3)}function createTransitions(e){const t={...Cs,...e.easing},n={...ws,...e.duration};return{getAutoHeightDuration,create:(e=["all"],a={})=>{const{duration:o=n.standard,easing:i=t.easeInOut,delay:s=0,...l}=a;return(Array.isArray(e)?e:[e]).map(e=>`${e} ${"string"==typeof o?o:formatMs(o)} ${i} ${"string"==typeof s?s:formatMs(s)}`).join(",")},...e,easing:t,duration:n}}var ks={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};function isSerializable(e){return isPlainObject$1(e)||void 0===e||"string"==typeof e||"boolean"==typeof e||"number"==typeof e||Array.isArray(e)}function stringifyTheme(e={}){const t={...e};function serializeTheme(e){const t=Object.entries(e);for(let n=0;n<t.length;n++){const[a,o]=t[n];!isSerializable(o)||a.startsWith("unstable_")||a.startsWith("internal_")?delete e[a]:isPlainObject$1(o)&&(e[a]={...o},serializeTheme(e[a]))}}return serializeTheme(t),`import { unstable_createBreakpoints as createBreakpoints, createTransitions } from '@mui/material/styles';\n\nconst theme = ${JSON.stringify(t,null,2)};\n\ntheme.breakpoints = createBreakpoints(theme.breakpoints || {});\ntheme.transitions = createTransitions(theme.transitions || {});\n\nexport default theme;`}function coefficientToPercentage(e){return"number"==typeof e?`${(100*e).toFixed(0)}%`:`calc((${e}) * 100%)`}var parseAddition=e=>{if(!Number.isNaN(+e))return+e;const t=e.match(/\d*\.?\d+/g);if(!t)return 0;let n=0;for(let a=0;a<t.length;a+=1)n+=+t[a];return n};function attachColorManipulators(e){Object.assign(e,{alpha(t,n){const a=this||e;return a.colorSpace?`oklch(from ${t} l c h / ${"string"==typeof n?`calc(${n})`:n})`:a.vars?`rgba(${t.replace(/var\(--([^,\s)]+)(?:,[^)]+)?\)+/g,"var(--$1Channel)")} / ${"string"==typeof n?`calc(${n})`:n})`:alpha(t,parseAddition(n))},lighten(t,n){const a=this||e;return a.colorSpace?`color-mix(in ${a.colorSpace}, ${t}, #fff ${coefficientToPercentage(n)})`:lighten(t,n)},darken(t,n){const a=this||e;return a.colorSpace?`color-mix(in ${a.colorSpace}, ${t}, #000 ${coefficientToPercentage(n)})`:darken(t,n)}})}function createThemeNoVars(e={},...t){const{breakpoints:n,mixins:a={},spacing:o,palette:i={},transitions:s={},typography:l={},shape:c,colorSpace:u,...d}=e;if(e.vars&&void 0===e.generateThemeVars)throw new Error(formatMuiErrorMessage(22));const p=createPalette({...i,colorSpace:u}),m=createTheme$1(e);let g=deepmerge(m,{mixins:createMixins(m.breakpoints,a),palette:p,shadows:xs.slice(),typography:createTypography(p,l),transitions:createTransitions(s),zIndex:{...ks}});return g=deepmerge(g,d),g=t.reduce((e,t)=>deepmerge(e,t),g),g.unstable_sxConfig={...Gi,...d?.unstable_sxConfig},g.unstable_sx=function sx(e){return Ki({sx:e,theme:this})},g.toRuntimeSource=stringifyTheme,attachColorManipulators(g),g}function getOverlayAlpha(e){let t;return t=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,Math.round(10*t)/1e3}var Es=[...Array(25)].map((e,t)=>{if(0===t)return"none";const n=getOverlayAlpha(t);return`linear-gradient(rgba(255 255 255 / ${n}), rgba(255 255 255 / ${n}))`});function getOpacity(e){return{inputPlaceholder:"dark"===e?.5:.42,inputUnderline:"dark"===e?.7:.42,switchTrackDisabled:"dark"===e?.2:.12,switchTrack:"dark"===e?.3:.38}}function getOverlays(e){return"dark"===e?Es:[]}function createColorScheme(e){const{palette:t={mode:"light"},opacity:n,overlays:a,colorSpace:o,...i}=e,s=createPalette({...t,colorSpace:o});return{palette:s,opacity:{...getOpacity(s.mode),...n},overlays:a||getOverlays(s.mode),...i}}function shouldSkipGeneratingVar(e){return!!e[0].match(/(cssVarPrefix|colorSchemeSelector|modularCssLayers|rootSelector|typography|mixins|breakpoints|direction|transitions)/)||!!e[0].match(/sxConfig$/)||"palette"===e[0]&&!!e[1]?.match(/(mode|contrastThreshold|tonalOffset)/)}var excludeVariablesFromRoot=e=>[...[...Array(25)].map((t,n)=>`--${e?`${e}-`:""}overlays-${n}`),`--${e?`${e}-`:""}palette-AppBar-darkBg`,`--${e?`${e}-`:""}palette-AppBar-darkColor`],createGetSelector_default=e=>(t,n)=>{const a=e.rootSelector||":root",o=e.colorSchemeSelector;let i=o;if("class"===o&&(i=".%s"),"data"===o&&(i="[data-%s]"),o?.startsWith("data-")&&!o.includes("%s")&&(i=`[${o}="%s"]`),e.defaultColorScheme===t){if("dark"===t){const o={};return excludeVariablesFromRoot(e.cssVarPrefix).forEach(e=>{o[e]=n[e],delete n[e]}),"media"===i?{[a]:n,"@media (prefers-color-scheme: dark)":{[a]:o}}:i?{[i.replace("%s",t)]:o,[`${a}, ${i.replace("%s",t)}`]:n}:{[a]:{...n,...o}}}if(i&&"media"!==i)return`${a}, ${i.replace("%s",String(t))}`}else if(t){if("media"===i)return{[`@media (prefers-color-scheme: ${String(t)})`]:{[a]:n}};if(i)return i.replace("%s",String(t))}return a};function assignNode(e,t){t.forEach(t=>{e[t]||(e[t]={})})}function setColor(e,t,n){!e[t]&&n&&(e[t]=n)}function toRgb(e){return"string"==typeof e&&e.startsWith("hsl")?hslToRgb(e):e}function setColorChannel(e,t){`${t}Channel`in e||(e[`${t}Channel`]=private_safeColorChannel(toRgb(e[t]),`MUI: Can't create \`palette.${t}Channel\` because \`palette.${t}\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().\nTo suppress this warning, you need to explicitly provide the \`palette.${t}Channel\` as a string (in rgb format, for example "12 12 12") or undefined if you want to remove the channel token.`))}function getSpacingVal(e){return"number"==typeof e?`${e}px`:"string"==typeof e||"function"==typeof e||Array.isArray(e)?e:"8px"}var silent=e=>{try{return e()}catch(t){}},createGetCssVar=(e="mui")=>createGetCssVar$1(e);function attachColorScheme$1(e,t,n,a,o){if(!n)return;n=!0===n?{}:n;const i="dark"===o?"dark":"light";if(!a)return void(t[o]=createColorScheme({...n,palette:{mode:i,...n?.palette},colorSpace:e}));const{palette:s,...l}=createThemeNoVars({...a,palette:{mode:i,...n?.palette},colorSpace:e});return t[o]={...n,palette:s,opacity:{...getOpacity(i),...n?.opacity},overlays:n?.overlays||getOverlays(i)},l}function createThemeWithVars(e={},...t){const{colorSchemes:n={light:!0},defaultColorScheme:a,disableCssColorScheme:o=!1,cssVarPrefix:i="mui",nativeColor:s=!1,shouldSkipGeneratingVar:l=shouldSkipGeneratingVar,colorSchemeSelector:c=(n.light&&n.dark?"media":void 0),rootSelector:u=":root",...d}=e,p=Object.keys(n)[0],m=a||(n.light&&"light"!==p?"light":p),g=createGetCssVar(i),{[m]:h,light:b,dark:y,...v}=n,S={...v};let x,C=h;if(("dark"===m&&!("dark"in n)||"light"===m&&!("light"in n))&&(C=!0),!C)throw new Error(formatMuiErrorMessage(21,m));s&&(x="oklch");const w=attachColorScheme$1(x,S,C,d,m);b&&!S.light&&attachColorScheme$1(x,S,b,void 0,"light"),y&&!S.dark&&attachColorScheme$1(x,S,y,void 0,"dark");let k={defaultColorScheme:m,...w,cssVarPrefix:i,colorSchemeSelector:c,rootSelector:u,getCssVar:g,colorSchemes:S,font:{...prepareTypographyVars(w.typography),...w.font},spacing:getSpacingVal(d.spacing)};Object.keys(k.colorSchemes).forEach(e=>{const t=k.colorSchemes[e].palette,setCssVarColor=e=>{const n=e.split("-"),a=n[1],o=n[2];return g(e,t[a][o])};function colorMix(e,t,n){if(x){let a;return e===private_safeAlpha&&(a=`transparent ${(100*(1-n)).toFixed(0)}%`),e===private_safeDarken&&(a=`#000 ${(100*n).toFixed(0)}%`),e===private_safeLighten&&(a=`#fff ${(100*n).toFixed(0)}%`),`color-mix(in ${x}, ${t}, ${a})`}return e(t,n)}if("light"===t.mode&&(setColor(t.common,"background","#fff"),setColor(t.common,"onBackground","#000")),"dark"===t.mode&&(setColor(t.common,"background","#000"),setColor(t.common,"onBackground","#fff")),assignNode(t,["Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip"]),"light"===t.mode){setColor(t.Alert,"errorColor",colorMix(private_safeDarken,s?g("palette-error-light"):t.error.light,.6)),setColor(t.Alert,"infoColor",colorMix(private_safeDarken,s?g("palette-info-light"):t.info.light,.6)),setColor(t.Alert,"successColor",colorMix(private_safeDarken,s?g("palette-success-light"):t.success.light,.6)),setColor(t.Alert,"warningColor",colorMix(private_safeDarken,s?g("palette-warning-light"):t.warning.light,.6)),setColor(t.Alert,"errorFilledBg",setCssVarColor("palette-error-main")),setColor(t.Alert,"infoFilledBg",setCssVarColor("palette-info-main")),setColor(t.Alert,"successFilledBg",setCssVarColor("palette-success-main")),setColor(t.Alert,"warningFilledBg",setCssVarColor("palette-warning-main")),setColor(t.Alert,"errorFilledColor",silent(()=>t.getContrastText(t.error.main))),setColor(t.Alert,"infoFilledColor",silent(()=>t.getContrastText(t.info.main))),setColor(t.Alert,"successFilledColor",silent(()=>t.getContrastText(t.success.main))),setColor(t.Alert,"warningFilledColor",silent(()=>t.getContrastText(t.warning.main))),setColor(t.Alert,"errorStandardBg",colorMix(private_safeLighten,s?g("palette-error-light"):t.error.light,.9)),setColor(t.Alert,"infoStandardBg",colorMix(private_safeLighten,s?g("palette-info-light"):t.info.light,.9)),setColor(t.Alert,"successStandardBg",colorMix(private_safeLighten,s?g("palette-success-light"):t.success.light,.9)),setColor(t.Alert,"warningStandardBg",colorMix(private_safeLighten,s?g("palette-warning-light"):t.warning.light,.9)),setColor(t.Alert,"errorIconColor",setCssVarColor("palette-error-main")),setColor(t.Alert,"infoIconColor",setCssVarColor("palette-info-main")),setColor(t.Alert,"successIconColor",setCssVarColor("palette-success-main")),setColor(t.Alert,"warningIconColor",setCssVarColor("palette-warning-main")),setColor(t.AppBar,"defaultBg",setCssVarColor("palette-grey-100")),setColor(t.Avatar,"defaultBg",setCssVarColor("palette-grey-400")),setColor(t.Button,"inheritContainedBg",setCssVarColor("palette-grey-300")),setColor(t.Button,"inheritContainedHoverBg",setCssVarColor("palette-grey-A100")),setColor(t.Chip,"defaultBorder",setCssVarColor("palette-grey-400")),setColor(t.Chip,"defaultAvatarColor",setCssVarColor("palette-grey-700")),setColor(t.Chip,"defaultIconColor",setCssVarColor("palette-grey-700")),setColor(t.FilledInput,"bg","rgba(0, 0, 0, 0.06)"),setColor(t.FilledInput,"hoverBg","rgba(0, 0, 0, 0.09)"),setColor(t.FilledInput,"disabledBg","rgba(0, 0, 0, 0.12)"),setColor(t.LinearProgress,"primaryBg",colorMix(private_safeLighten,s?g("palette-primary-main"):t.primary.main,.62)),setColor(t.LinearProgress,"secondaryBg",colorMix(private_safeLighten,s?g("palette-secondary-main"):t.secondary.main,.62)),setColor(t.LinearProgress,"errorBg",colorMix(private_safeLighten,s?g("palette-error-main"):t.error.main,.62)),setColor(t.LinearProgress,"infoBg",colorMix(private_safeLighten,s?g("palette-info-main"):t.info.main,.62)),setColor(t.LinearProgress,"successBg",colorMix(private_safeLighten,s?g("palette-success-main"):t.success.main,.62)),setColor(t.LinearProgress,"warningBg",colorMix(private_safeLighten,s?g("palette-warning-light"):t.warning.main,.62)),setColor(t.Skeleton,"bg",x?colorMix(private_safeAlpha,s?g("palette-text-primary"):t.text.primary,.11):`rgba(${setCssVarColor("palette-text-primaryChannel")} / 0.11)`),setColor(t.Slider,"primaryTrack",colorMix(private_safeLighten,s?g("palette-primary-main"):t.primary.main,.62)),setColor(t.Slider,"secondaryTrack",colorMix(private_safeLighten,s?g("palette-secondary-main"):t.secondary.main,.62)),setColor(t.Slider,"errorTrack",colorMix(private_safeLighten,s?g("palette-error-main"):t.error.main,.62)),setColor(t.Slider,"infoTrack",colorMix(private_safeLighten,s?g("palette-info-main"):t.info.main,.62)),setColor(t.Slider,"successTrack",colorMix(private_safeLighten,s?g("palette-success-main"):t.success.main,.62)),setColor(t.Slider,"warningTrack",colorMix(private_safeLighten,s?g("palette-warning-main"):t.warning.main,.62));const e=x?colorMix(private_safeDarken,s?g("palette-background-default"):t.background.default,.6825):private_safeEmphasize(t.background.default,.8);setColor(t.SnackbarContent,"bg",e),setColor(t.SnackbarContent,"color",silent(()=>x?gs.text.primary:t.getContrastText(e))),setColor(t.SpeedDialAction,"fabHoverBg",private_safeEmphasize(t.background.paper,.15)),setColor(t.StepConnector,"border",setCssVarColor("palette-grey-400")),setColor(t.StepContent,"border",setCssVarColor("palette-grey-400")),setColor(t.Switch,"defaultColor",setCssVarColor("palette-common-white")),setColor(t.Switch,"defaultDisabledColor",setCssVarColor("palette-grey-100")),setColor(t.Switch,"primaryDisabledColor",colorMix(private_safeLighten,s?g("palette-primary-main"):t.primary.main,.62)),setColor(t.Switch,"secondaryDisabledColor",colorMix(private_safeLighten,s?g("palette-secondary-main"):t.secondary.main,.62)),setColor(t.Switch,"errorDisabledColor",colorMix(private_safeLighten,s?g("palette-error-main"):t.error.main,.62)),setColor(t.Switch,"infoDisabledColor",colorMix(private_safeLighten,s?g("palette-info-main"):t.info.main,.62)),setColor(t.Switch,"successDisabledColor",colorMix(private_safeLighten,s?g("palette-success-main"):t.success.main,.62)),setColor(t.Switch,"warningDisabledColor",colorMix(private_safeLighten,s?g("palette-warning-main"):t.warning.main,.62)),setColor(t.TableCell,"border",colorMix(private_safeLighten,private_safeAlpha(s?g("palette-divider"):t.divider,1),.88)),setColor(t.Tooltip,"bg",colorMix(private_safeAlpha,s?g("palette-grey-700"):t.grey[700],.92))}if("dark"===t.mode){setColor(t.Alert,"errorColor",colorMix(private_safeLighten,s?g("palette-error-light"):t.error.light,.6)),setColor(t.Alert,"infoColor",colorMix(private_safeLighten,s?g("palette-info-light"):t.info.light,.6)),setColor(t.Alert,"successColor",colorMix(private_safeLighten,s?g("palette-success-light"):t.success.light,.6)),setColor(t.Alert,"warningColor",colorMix(private_safeLighten,s?g("palette-warning-light"):t.warning.light,.6)),setColor(t.Alert,"errorFilledBg",setCssVarColor("palette-error-dark")),setColor(t.Alert,"infoFilledBg",setCssVarColor("palette-info-dark")),setColor(t.Alert,"successFilledBg",setCssVarColor("palette-success-dark")),setColor(t.Alert,"warningFilledBg",setCssVarColor("palette-warning-dark")),setColor(t.Alert,"errorFilledColor",silent(()=>t.getContrastText(t.error.dark))),setColor(t.Alert,"infoFilledColor",silent(()=>t.getContrastText(t.info.dark))),setColor(t.Alert,"successFilledColor",silent(()=>t.getContrastText(t.success.dark))),setColor(t.Alert,"warningFilledColor",silent(()=>t.getContrastText(t.warning.dark))),setColor(t.Alert,"errorStandardBg",colorMix(private_safeDarken,s?g("palette-error-light"):t.error.light,.9)),setColor(t.Alert,"infoStandardBg",colorMix(private_safeDarken,s?g("palette-info-light"):t.info.light,.9)),setColor(t.Alert,"successStandardBg",colorMix(private_safeDarken,s?g("palette-success-light"):t.success.light,.9)),setColor(t.Alert,"warningStandardBg",colorMix(private_safeDarken,s?g("palette-warning-light"):t.warning.light,.9)),setColor(t.Alert,"errorIconColor",setCssVarColor("palette-error-main")),setColor(t.Alert,"infoIconColor",setCssVarColor("palette-info-main")),setColor(t.Alert,"successIconColor",setCssVarColor("palette-success-main")),setColor(t.Alert,"warningIconColor",setCssVarColor("palette-warning-main")),setColor(t.AppBar,"defaultBg",setCssVarColor("palette-grey-900")),setColor(t.AppBar,"darkBg",setCssVarColor("palette-background-paper")),setColor(t.AppBar,"darkColor",setCssVarColor("palette-text-primary")),setColor(t.Avatar,"defaultBg",setCssVarColor("palette-grey-600")),setColor(t.Button,"inheritContainedBg",setCssVarColor("palette-grey-800")),setColor(t.Button,"inheritContainedHoverBg",setCssVarColor("palette-grey-700")),setColor(t.Chip,"defaultBorder",setCssVarColor("palette-grey-700")),setColor(t.Chip,"defaultAvatarColor",setCssVarColor("palette-grey-300")),setColor(t.Chip,"defaultIconColor",setCssVarColor("palette-grey-300")),setColor(t.FilledInput,"bg","rgba(255, 255, 255, 0.09)"),setColor(t.FilledInput,"hoverBg","rgba(255, 255, 255, 0.13)"),setColor(t.FilledInput,"disabledBg","rgba(255, 255, 255, 0.12)"),setColor(t.LinearProgress,"primaryBg",colorMix(private_safeDarken,s?g("palette-primary-main"):t.primary.main,.5)),setColor(t.LinearProgress,"secondaryBg",colorMix(private_safeDarken,s?g("palette-secondary-main"):t.secondary.main,.5)),setColor(t.LinearProgress,"errorBg",colorMix(private_safeDarken,s?g("palette-error-main"):t.error.main,.5)),setColor(t.LinearProgress,"infoBg",colorMix(private_safeDarken,s?g("palette-info-main"):t.info.main,.5)),setColor(t.LinearProgress,"successBg",colorMix(private_safeDarken,s?g("palette-success-main"):t.success.main,.5)),setColor(t.LinearProgress,"warningBg",colorMix(private_safeDarken,s?g("palette-warning-main"):t.warning.main,.5)),setColor(t.Skeleton,"bg",x?colorMix(private_safeAlpha,s?g("palette-text-primary"):t.text.primary,.13):`rgba(${setCssVarColor("palette-text-primaryChannel")} / 0.13)`),setColor(t.Slider,"primaryTrack",colorMix(private_safeDarken,s?g("palette-primary-main"):t.primary.main,.5)),setColor(t.Slider,"secondaryTrack",colorMix(private_safeDarken,s?g("palette-secondary-main"):t.secondary.main,.5)),setColor(t.Slider,"errorTrack",colorMix(private_safeDarken,s?g("palette-error-main"):t.error.main,.5)),setColor(t.Slider,"infoTrack",colorMix(private_safeDarken,s?g("palette-info-main"):t.info.main,.5)),setColor(t.Slider,"successTrack",colorMix(private_safeDarken,s?g("palette-success-main"):t.success.main,.5)),setColor(t.Slider,"warningTrack",colorMix(private_safeDarken,s?g("palette-warning-light"):t.warning.main,.5));const e=x?colorMix(private_safeLighten,s?g("palette-background-default"):t.background.default,.985):private_safeEmphasize(t.background.default,.98);setColor(t.SnackbarContent,"bg",e),setColor(t.SnackbarContent,"color",silent(()=>x?fs.text.primary:t.getContrastText(e))),setColor(t.SpeedDialAction,"fabHoverBg",private_safeEmphasize(t.background.paper,.15)),setColor(t.StepConnector,"border",setCssVarColor("palette-grey-600")),setColor(t.StepContent,"border",setCssVarColor("palette-grey-600")),setColor(t.Switch,"defaultColor",setCssVarColor("palette-grey-300")),setColor(t.Switch,"defaultDisabledColor",setCssVarColor("palette-grey-600")),setColor(t.Switch,"primaryDisabledColor",colorMix(private_safeDarken,s?g("palette-primary-main"):t.primary.main,.55)),setColor(t.Switch,"secondaryDisabledColor",colorMix(private_safeDarken,s?g("palette-secondary-main"):t.secondary.main,.55)),setColor(t.Switch,"errorDisabledColor",colorMix(private_safeDarken,s?g("palette-error-main"):t.error.main,.55)),setColor(t.Switch,"infoDisabledColor",colorMix(private_safeDarken,s?g("palette-info-main"):t.info.main,.55)),setColor(t.Switch,"successDisabledColor",colorMix(private_safeDarken,s?g("palette-success-main"):t.success.main,.55)),setColor(t.Switch,"warningDisabledColor",colorMix(private_safeDarken,s?g("palette-warning-light"):t.warning.main,.55)),setColor(t.TableCell,"border",colorMix(private_safeDarken,private_safeAlpha(s?g("palette-divider"):t.divider,1),.68)),setColor(t.Tooltip,"bg",colorMix(private_safeAlpha,s?g("palette-grey-700"):t.grey[700],.92))}s||(setColorChannel(t.background,"default"),setColorChannel(t.background,"paper"),setColorChannel(t.common,"background"),setColorChannel(t.common,"onBackground"),setColorChannel(t,"divider")),Object.keys(t).forEach(e=>{const n=t[e];"tonalOffset"!==e&&!s&&n&&"object"==typeof n&&(n.main&&setColor(t[e],"mainChannel",private_safeColorChannel(toRgb(n.main))),n.light&&setColor(t[e],"lightChannel",private_safeColorChannel(toRgb(n.light))),n.dark&&setColor(t[e],"darkChannel",private_safeColorChannel(toRgb(n.dark))),n.contrastText&&setColor(t[e],"contrastTextChannel",private_safeColorChannel(toRgb(n.contrastText))),"text"===e&&(setColorChannel(t[e],"primary"),setColorChannel(t[e],"secondary")),"action"===e&&(n.active&&setColorChannel(t[e],"active"),n.selected&&setColorChannel(t[e],"selected")))})}),k=t.reduce((e,t)=>deepmerge(e,t),k);const E={prefix:i,disableCssColorScheme:o,shouldSkipGeneratingVar:l,getSelector:createGetSelector_default(k),enableContrastVars:s},{vars:P,generateThemeVars:T,generateStyleSheets:R}=prepareCssVars(k,E);return k.vars=P,Object.entries(k.colorSchemes[k.defaultColorScheme]).forEach(([e,t])=>{k[e]=t}),k.generateThemeVars=T,k.generateStyleSheets=R,k.generateSpacing=function generateSpacing(){return createSpacing(d.spacing,createUnarySpacing(this))},k.getColorSchemeSelector=createGetColorSchemeSelector(c),k.spacing=k.generateSpacing(),k.shouldSkipGeneratingVar=l,k.unstable_sxConfig={...Gi,...d?.unstable_sxConfig},k.unstable_sx=function sx(e){return Ki({sx:e,theme:this})},k.internal_cache={},k.toRuntimeSource=stringifyTheme,k}function attachColorScheme(e,t,n){e.colorSchemes&&n&&(e.colorSchemes[t]={...!0!==n&&n,palette:createPalette({...!0===n?{}:n.palette,mode:t})})}function createTheme(e={},...t){const{palette:n,cssVariables:a=!1,colorSchemes:o=(n?void 0:{light:!0}),defaultColorScheme:i=n?.mode,...s}=e,l=i||"light",c=o?.[l],u={...o,...n?{[l]:{..."boolean"!=typeof c&&c,palette:n}}:void 0};if(!1===a){if(!("colorSchemes"in e))return createThemeNoVars(e,...t);let a=n;"palette"in e||u[l]&&(!0!==u[l]?a=u[l].palette:"dark"===l&&(a={mode:"dark"}));const o=createThemeNoVars({...e,palette:a},...t);return o.defaultColorScheme=l,o.colorSchemes=u,"light"===o.palette.mode&&(o.colorSchemes.light={...!0!==u.light&&u.light,palette:o.palette},attachColorScheme(o,"dark",u.dark)),"dark"===o.palette.mode&&(o.colorSchemes.dark={...!0!==u.dark&&u.dark,palette:o.palette},attachColorScheme(o,"light",u.light)),o}return n||"light"in u||"light"!==l||(u.light=!0),createThemeWithVars({...s,colorSchemes:u,defaultColorScheme:l,..."boolean"!=typeof a&&a},...t)}var _s=createTheme();function useTheme(){const e=useTheme$2(_s);return e.$$material||e}function slotShouldForwardProp(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}var rootShouldForwardProp=e=>slotShouldForwardProp(e)&&"classes"!==e,Ps=createStyled({themeId:Ka,defaultTheme:_s,rootShouldForwardProp});function ThemeProviderNoVars({theme:e,...t}){const n="$$material"in e?e[Ka]:void 0;return(0,Ba.jsx)(ThemeProvider$1,{...t,themeId:n?Ka:void 0,theme:n||e})}var Ts={attribute:"data-mui-color-scheme",colorSchemeStorageKey:"mui-color-scheme",defaultLightColorScheme:"light",defaultDarkColorScheme:"dark",modeStorageKey:"mui-mode"},{CssVarsProvider:As,useColorScheme:Rs,getInitColorSchemeScript:Ms}=createCssVarsProvider({themeId:Ka,theme:()=>createTheme({cssVariables:!0}),colorSchemeStorageKey:Ts.colorSchemeStorageKey,modeStorageKey:Ts.modeStorageKey,defaultColorScheme:{light:Ts.defaultLightColorScheme,dark:Ts.defaultDarkColorScheme},resolveTheme:e=>{const t={...e,typography:createTypography(e.palette,e.typography)};return t.unstable_sx=function sx(e){return Ki({sx:e,theme:this})},t}}),Ds=As;function ThemeProvider({theme:e,...t}){const n=c.useMemo(()=>{if("function"==typeof e)return e;const t="$$material"in e?e[Ka]:e;return"colorSchemes"in t?null:"vars"in t?e:{...e,vars:null}},[e]);return n?(0,Ba.jsx)(ThemeProviderNoVars,{theme:n,...t}):(0,Ba.jsx)(Ds,{theme:e,...t})}var Os=capitalize$1;function createChainedFunction(...e){return e.reduce((e,t)=>null==t?e:function chainedFunction(...n){e.apply(this,n),t.apply(this,n)},()=>{})}function GlobalStyles(e){return(0,Ba.jsx)(GlobalStyles$1,{...e,defaultTheme:_s,themeId:Ka})}function globalCss(e){return function GlobalStylesWrapper(t){return(0,Ba.jsx)(GlobalStyles,{styles:"function"==typeof e?n=>e({theme:n,...t}):e})}}var $s=unstable_memoTheme;function useDefaultProps(e){return useDefaultProps$1(e)}function getSvgIconUtilityClass(e){return generateUtilityClass("MuiSvgIcon",e)}generateUtilityClasses("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var useUtilityClasses$48=e=>{const{color:t,fontSize:n,classes:a}=e;return composeClasses({root:["root","inherit"!==t&&`color${Os(t)}`,`fontSize${Os(n)}`]},getSvgIconUtilityClass,a)},Is=Ps("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"inherit"!==n.color&&t[`color${Os(n.color)}`],t[`fontSize${Os(n.fontSize)}`]]}})($s(({theme:e})=>({userSelect:"none",width:"1em",height:"1em",display:"inline-block",flexShrink:0,transition:e.transitions?.create?.("fill",{duration:(e.vars??e).transitions?.duration?.shorter}),variants:[{props:e=>!e.hasSvgAsChild,style:{fill:"currentColor"}},{props:{fontSize:"inherit"},style:{fontSize:"inherit"}},{props:{fontSize:"small"},style:{fontSize:e.typography?.pxToRem?.(20)||"1.25rem"}},{props:{fontSize:"medium"},style:{fontSize:e.typography?.pxToRem?.(24)||"1.5rem"}},{props:{fontSize:"large"},style:{fontSize:e.typography?.pxToRem?.(35)||"2.1875rem"}},...Object.entries((e.vars??e).palette).filter(([,e])=>e&&e.main).map(([t])=>({props:{color:t},style:{color:(e.vars??e).palette?.[t]?.main}})),{props:{color:"action"},style:{color:(e.vars??e).palette?.action?.active}},{props:{color:"disabled"},style:{color:(e.vars??e).palette?.action?.disabled}},{props:{color:"inherit"},style:{color:void 0}}]}))),Ns=c.forwardRef(function SvgIcon(e,t){const n=useDefaultProps({props:e,name:"MuiSvgIcon"}),{children:a,className:o,color:i="inherit",component:s="svg",fontSize:l="medium",htmlColor:u,inheritViewBox:d=!1,titleAccess:p,viewBox:m="0 0 24 24",...g}=n,h=c.isValidElement(a)&&"svg"===a.type,b={...n,color:i,component:s,fontSize:l,instanceFontSize:e.fontSize,inheritViewBox:d,viewBox:m,hasSvgAsChild:h},y={};return d||(y.viewBox=m),(0,Ba.jsxs)(Is,{as:s,className:clsx(useUtilityClasses$48(b).root,o),focusable:"false",color:u,"aria-hidden":!p||void 0,role:p?"img":void 0,ref:t,...y,...g,...h&&a.props,ownerState:b,children:[h?a.props.children:a,p?(0,Ba.jsx)("title",{children:p}):null]})});function createSvgIcon(e,t){function Component(t,n){return(0,Ba.jsx)(Ns,{"data-testid":void 0,ref:n,...t,children:e})}return Component.muiName=Ns.muiName,c.memo(c.forwardRef(Component))}function debounce$1(e,t=166){let n;function debounced(...a){const later=()=>{e.apply(this,a)};clearTimeout(n),n=setTimeout(later,t)}return debounced.clear=()=>{clearTimeout(n)},debounced}Ns.muiName="SvgIcon";var zs=debounce$1,Ls=isMuiElement;function activeElement(e){let t=e.activeElement;for(;null!=t?.shadowRoot?.activeElement;)t=t.shadowRoot.activeElement;return t}var js=activeElement;function ownerDocument(e){return e&&e.ownerDocument||document}var Bs=ownerDocument;function ownerWindow(e){return ownerDocument(e).defaultView||window}var Fs=ownerWindow;function setRef(e,t){"function"==typeof e?e(t):e&&(e.current=t)}var qs=es,Us=useId;function useControlled(e){const{controlled:t,default:n,name:a,state:o="value"}=e,{current:i}=c.useRef(void 0!==t),[s,l]=c.useState(n);return[i?t:s,c.useCallback(e=>{i||l(e)},[])]}var Vs=useControlled;function useEventCallback(e){const t=c.useRef(e);return es(()=>{t.current=e}),c.useRef((...e)=>(0,t.current)(...e)).current}var Hs=useEventCallback;function useForkRef(...e){const t=c.useRef(void 0),n=c.useCallback(t=>{const n=e.map(e=>{if(null==e)return null;if("function"==typeof e){const n=e,a=n(t);return"function"==typeof a?a:()=>{n(null)}}return e.current=t,()=>{e.current=null}});return()=>{n.forEach(e=>e?.())}},e);return c.useMemo(()=>e.every(e=>null==e)?null:e=>{t.current&&(t.current(),t.current=void 0),null!=e&&(t.current=n(e))},e)}var Ws=useForkRef;function isEventHandler(e,t){const n=e.charCodeAt(2);return"o"===e[0]&&"n"===e[1]&&n>=65&&n<=90&&"function"==typeof t}function mergeSlotProps$1(e,t){if(!e)return t;function extractHandlers(e,t){const n={};return Object.keys(t).forEach(a=>{isEventHandler(a,t[a])&&"function"==typeof e[a]&&(n[a]=(...n)=>{e[a](...n),t[a](...n)})}),n}if("function"==typeof e||"function"==typeof t)return n=>{const a="function"==typeof t?t(n):t,o="function"==typeof e?e({...n,...a}):e,i=clsx(n?.className,a?.className,o?.className),s=extractHandlers(o,a);return{...a,...o,...s,...!!i&&{className:i},...a?.style&&o?.style&&{style:{...a.style,...o.style}},...a?.sx&&o?.sx&&{sx:[...Array.isArray(a.sx)?a.sx:[a.sx],...Array.isArray(o.sx)?o.sx:[o.sx]]}}};const n=t,a=extractHandlers(e,n),o=clsx(n?.className,e?.className);return{...t,...e,...a,...!!o&&{className:o},...n?.style&&e?.style&&{style:{...n.style,...e.style}},...n?.sx&&e?.sx&&{sx:[...Array.isArray(n.sx)?n.sx:[n.sx],...Array.isArray(e.sx)?e.sx:[e.sx]]}}}function _objectWithoutPropertiesLoose(e,t){if(null==e)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(-1!==t.indexOf(a))continue;n[a]=e[a]}return n}function _setPrototypeOf(e,t){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},_setPrototypeOf(e,t)}function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,_setPrototypeOf(e,t)}var Gs={disabled:!1},Ys=e.default.createContext(null),Ks=function forceReflow(e){return e.scrollTop},Qs="unmounted",Zs="exited",Xs="entering",Js="entered",el="exiting",tl=function(n){function Transition(e,t){var a,o=n.call(this,e,t)||this,i=t&&!t.isMounting?e.enter:e.appear;return o.appearStatus=null,e.in?i?(a=Zs,o.appearStatus=Xs):a=Js:a=e.unmountOnExit||e.mountOnEnter?Qs:Zs,o.state={status:a},o.nextCallback=null,o}_inheritsLoose(Transition,n),Transition.getDerivedStateFromProps=function getDerivedStateFromProps(e,t){return e.in&&"unmounted"===t.status?{status:Zs}:null};var a=Transition.prototype;return a.componentDidMount=function componentDidMount(){this.updateStatus(!0,this.appearStatus)},a.componentDidUpdate=function componentDidUpdate(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?"entering"!==n&&"entered"!==n&&(t=Xs):"entering"!==n&&"entered"!==n||(t=el)}this.updateStatus(!1,t)},a.componentWillUnmount=function componentWillUnmount(){this.cancelNextCallback()},a.getTimeouts=function getTimeouts(){var e,t,n=this.props.timeout,a=e=t=n;return null!=n&&"number"!=typeof n&&(a=n.exit,e=n.enter,t=void 0!==n.appear?n.appear:e),{exit:a,enter:e,appear:t}},a.updateStatus=function updateStatus(e,n){if(void 0===e&&(e=!1),null!==n)if(this.cancelNextCallback(),"entering"===n){if(this.props.unmountOnExit||this.props.mountOnEnter){var a=this.props.nodeRef?this.props.nodeRef.current:t.default.findDOMNode(this);a&&Ks(a)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&"exited"===this.state.status&&this.setState({status:Qs})},a.performEnter=function performEnter(e){var n=this,a=this.props.enter,o=this.context?this.context.isMounting:e,i=this.props.nodeRef?[o]:[t.default.findDOMNode(this),o],s=i[0],l=i[1],c=this.getTimeouts(),u=o?c.appear:c.enter;!e&&!a||Gs.disabled?this.safeSetState({status:Js},function(){n.props.onEntered(s)}):(this.props.onEnter(s,l),this.safeSetState({status:Xs},function(){n.props.onEntering(s,l),n.onTransitionEnd(u,function(){n.safeSetState({status:Js},function(){n.props.onEntered(s,l)})})}))},a.performExit=function performExit(){var e=this,n=this.props.exit,a=this.getTimeouts(),o=this.props.nodeRef?void 0:t.default.findDOMNode(this);n&&!Gs.disabled?(this.props.onExit(o),this.safeSetState({status:el},function(){e.props.onExiting(o),e.onTransitionEnd(a.exit,function(){e.safeSetState({status:Zs},function(){e.props.onExited(o)})})})):this.safeSetState({status:Zs},function(){e.props.onExited(o)})},a.cancelNextCallback=function cancelNextCallback(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},a.safeSetState=function safeSetState(e,t){t=this.setNextCallback(t),this.setState(e,t)},a.setNextCallback=function setNextCallback(e){var t=this,n=!0;return this.nextCallback=function(a){n&&(n=!1,t.nextCallback=null,e(a))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},a.onTransitionEnd=function onTransitionEnd(e,n){this.setNextCallback(n);var a=this.props.nodeRef?this.props.nodeRef.current:t.default.findDOMNode(this),o=null==e&&!this.props.addEndListener;if(a&&!o){if(this.props.addEndListener){var i=this.props.nodeRef?[this.nextCallback]:[a,this.nextCallback],s=i[0],l=i[1];this.props.addEndListener(s,l)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},a.render=function render(){var t=this.state.status;if("unmounted"===t)return null;var n=this.props,a=n.children;n.in,n.mountOnEnter,n.unmountOnExit,n.appear,n.enter,n.exit,n.timeout,n.addEndListener,n.onEnter,n.onEntering,n.onEntered,n.onExit,n.onExiting,n.onExited,n.nodeRef;var o=_objectWithoutPropertiesLoose(n,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return e.default.createElement(Ys.Provider,{value:null},"function"==typeof a?a(t,o):e.default.cloneElement(e.default.Children.only(a),o))},Transition}(e.default.Component);function noop$2(){}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function getChildMapping(t,n){var a=function mapper(t){return n&&(0,e.isValidElement)(t)?n(t):t},o=Object.create(null);return t&&e.Children.map(t,function(e){return e}).forEach(function(e){o[e.key]=a(e)}),o}function mergeChildMappings(e,t){function getValueForKey(n){return n in t?t[n]:e[n]}e=e||{},t=t||{};var n,a=Object.create(null),o=[];for(var i in e)i in t?o.length&&(a[i]=o,o=[]):o.push(i);var s={};for(var l in t){if(a[l])for(n=0;n<a[l].length;n++){var c=a[l][n];s[a[l][n]]=getValueForKey(c)}s[l]=getValueForKey(l)}for(n=0;n<o.length;n++)s[o[n]]=getValueForKey(o[n]);return s}function getProp(e,t,n){return null!=n[t]?n[t]:e.props[t]}function getInitialChildMapping(t,n){return getChildMapping(t.children,function(a){return(0,e.cloneElement)(a,{onExited:n.bind(null,a),in:!0,appear:getProp(a,"appear",t),enter:getProp(a,"enter",t),exit:getProp(a,"exit",t)})})}function getNextChildMapping(t,n,a){var o=getChildMapping(t.children),i=mergeChildMappings(n,o);return Object.keys(i).forEach(function(s){var l=i[s];if((0,e.isValidElement)(l)){var c=s in n,u=s in o,d=n[s],p=(0,e.isValidElement)(d)&&!d.props.in;!u||c&&!p?u||!c||p?u&&c&&(0,e.isValidElement)(d)&&(i[s]=(0,e.cloneElement)(l,{onExited:a.bind(null,l),in:d.props.in,exit:getProp(l,"exit",t),enter:getProp(l,"enter",t)})):i[s]=(0,e.cloneElement)(l,{in:!1}):i[s]=(0,e.cloneElement)(l,{onExited:a.bind(null,l),in:!0,exit:getProp(l,"exit",t),enter:getProp(l,"enter",t)})}}),i}tl.contextType=Ys,tl.propTypes={},tl.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:noop$2,onEntering:noop$2,onEntered:noop$2,onExit:noop$2,onExiting:noop$2,onExited:noop$2},tl.UNMOUNTED=Qs,tl.EXITED=Zs,tl.ENTERING=Xs,tl.ENTERED=Js,tl.EXITING=el;var rl=Object.values||function(e){return Object.keys(e).map(function(t){return e[t]})},nl={component:"div",childFactory:function childFactory(e){return e}},al=function(t){function TransitionGroup(e,n){var a=t.call(this,e,n)||this;return a.state={contextValue:{isMounting:!0},handleExited:a.handleExited.bind(_assertThisInitialized(a)),firstRender:!0},a}_inheritsLoose(TransitionGroup,t);var n=TransitionGroup.prototype;return n.componentDidMount=function componentDidMount(){this.mounted=!0,this.setState({contextValue:{isMounting:!1}})},n.componentWillUnmount=function componentWillUnmount(){this.mounted=!1},TransitionGroup.getDerivedStateFromProps=function getDerivedStateFromProps(e,t){var n=t.children,a=t.handleExited;return{children:t.firstRender?getInitialChildMapping(e,a):getNextChildMapping(e,n,a),firstRender:!1}},n.handleExited=function handleExited(e,t){var n=getChildMapping(this.props.children);e.key in n||(e.props.onExited&&e.props.onExited(t),this.mounted&&this.setState(function(t){var n=_extends({},t.children);return delete n[e.key],{children:n}}))},n.render=function render(){var t=this.props,n=t.component,a=t.childFactory,o=_objectWithoutPropertiesLoose(t,["component","childFactory"]),i=this.state.contextValue,s=rl(this.state.children).map(a);return delete o.appear,delete o.enter,delete o.exit,null===n?e.default.createElement(Ys.Provider,{value:i},s):e.default.createElement(Ys.Provider,{value:i},e.default.createElement(n,o,s))},TransitionGroup}(e.default.Component);al.propTypes={},al.defaultProps=nl;var ol={};function useLazyRef(e,t){const n=c.useRef(ol);return n.current===ol&&(n.current=e(t)),n}var il=[];function useOnMount(e){c.useEffect(e,il)}var sl=class Timeout{static create(){return new Timeout}currentId=null;start(e,t){this.clear(),this.currentId=setTimeout(()=>{this.currentId=null,t()},e)}clear=()=>{null!==this.currentId&&(clearTimeout(this.currentId),this.currentId=null)};disposeEffect=()=>this.clear};function useTimeout(){const e=useLazyRef(sl.create).current;return useOnMount(e.disposeEffect),e}var reflow=e=>e.scrollTop;function normalizedTransitionCallback(e,t){return n=>{if(t){const a=e.current;void 0===n?t(a):t(a,n)}}}function getTransitionChildStyle(e,t,n,a,o,i){const s="exited"!==e||t?n[e]||n.exited:a;return o||i?{...s,...o,...i}:s}function getTransitionProps(e,t){const{timeout:n,easing:a,style:o={}}=e;return{duration:o.transitionDuration??("number"==typeof n?n:n[t.mode]||0),easing:o.transitionTimingFunction??("object"==typeof a?a[t.mode]:a),delay:o.transitionDelay}}function isHostComponent(e){return"string"==typeof e}function appendOwnerState(e,t,n){return void 0===e||isHostComponent(e)?t:{...t,ownerState:{...t.ownerState,...n}}}function resolveComponentProps(e,t,n){return"function"==typeof e?e(t,n):e}function extractEventHandlers(e){if(void 0===e)return{};const t={};for(const n of Object.keys(e))isEventHandler(n,e[n])&&(t[n]=e[n]);return t}function omitEventHandlers(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(n=>{t[n]=e[n]}),t}function mergeSlotProps(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:a,externalForwardedProps:o,className:i}=e;if(!t){const e=clsx(n?.className,i,o?.className,a?.className),t={...n?.style,...o?.style,...a?.style},s={...n,...o,...a};return e.length>0&&(s.className=e),Object.keys(t).length>0&&(s.style=t),{props:s,internalRef:void 0}}const s=extractEventHandlers({...o,...a}),l=omitEventHandlers(a),c=omitEventHandlers(o),u=t(s),d=clsx(u?.className,n?.className,i,o?.className,a?.className),p={...u?.style,...n?.style,...o?.style,...a?.style},m={...u,...n,...c,...l};return d.length>0&&(m.className=d),Object.keys(p).length>0&&(m.style=p),{props:m,internalRef:u.ref}}function useSlot(e,t){const{className:n,elementType:a,ownerState:o,externalForwardedProps:i,internalForwardedProps:s,shouldForwardComponentProp:l=!1,...c}=t,{component:u,slots:d={[e]:void 0},slotProps:p={[e]:void 0},...m}=i,g=d[e]||a,h=resolveComponentProps(p[e],o),{props:{component:b,...y},internalRef:v}=mergeSlotProps({className:n,...c,externalForwardedProps:"root"===e?m:void 0,externalSlotProps:h}),S=useForkRef(v,h?.ref,t.ref),x="root"===e?b||u:b;return[g,appendOwnerState(g,{..."root"===e&&!u&&!d[e]&&s,..."root"!==e&&!d[e]&&s,...y,...x&&!l&&{as:x},...x&&l&&{component:x},ref:S},o)]}function getPaperUtilityClass(e){return generateUtilityClass("MuiPaper",e)}generateUtilityClasses("MuiPaper",["root","rounded","outlined","elevation","elevation0","elevation1","elevation2","elevation3","elevation4","elevation5","elevation6","elevation7","elevation8","elevation9","elevation10","elevation11","elevation12","elevation13","elevation14","elevation15","elevation16","elevation17","elevation18","elevation19","elevation20","elevation21","elevation22","elevation23","elevation24"]);var useUtilityClasses$47=e=>{const{square:t,elevation:n,variant:a,classes:o}=e;return composeClasses({root:["root",a,!t&&"rounded","elevation"===a&&`elevation${n}`]},getPaperUtilityClass,o)},ll=Ps("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],!n.square&&t.rounded,"elevation"===n.variant&&t[`elevation${n.elevation}`]]}})($s(({theme:e})=>({backgroundColor:(e.vars||e).palette.background.paper,color:(e.vars||e).palette.text.primary,transition:e.transitions.create("box-shadow"),variants:[{props:({ownerState:e})=>!e.square,style:{borderRadius:e.shape.borderRadius}},{props:{variant:"outlined"},style:{border:`1px solid ${(e.vars||e).palette.divider}`}},{props:{variant:"elevation"},style:{boxShadow:"var(--Paper-shadow)",backgroundImage:"var(--Paper-overlay)"}}]}))),cl=c.forwardRef(function Paper(e,t){const n=useDefaultProps({props:e,name:"MuiPaper"}),a=useTheme(),{className:o,component:i="div",elevation:s=1,square:l=!1,variant:c="elevation",...u}=n,d={...n,component:i,elevation:s,square:l,variant:c};return(0,Ba.jsx)(ll,{as:i,ownerState:d,className:clsx(useUtilityClasses$47(d).root,o),ref:t,...u,style:{..."elevation"===c&&{"--Paper-shadow":(a.vars||a).shadows[s],...a.vars&&{"--Paper-overlay":a.vars.overlays?.[s]},...!a.vars&&"dark"===a.palette.mode&&{"--Paper-overlay":`linear-gradient(${alpha("#fff",getOverlayAlpha(s))}, ${alpha("#fff",getOverlayAlpha(s))})`}},...u.style}})});function isFocusVisible(e){try{return e.matches(":focus-visible")}catch(t){}return!1}function useFocusableWhenDisabled(e){const{focusableWhenDisabled:t,disabled:n,composite:a=!1,tabIndex:o=0,isNativeButton:i}=e,s=a&&!1!==t,l=a&&!1===t;return c.useMemo(()=>{const e={onKeyDown(e){n&&t&&"Tab"!==e.key&&e.preventDefault()}};return a||(e.tabIndex=o,!i&&n&&(e.tabIndex=t?o:-1)),(i&&(t||s)||!i&&n)&&(e["aria-disabled"]=n),!i||t&&!l||(e.disabled=n),e},[a,n,t,s,l,i,o])}var ul={};function useButtonBase(e){const{nativeButton:t,nativeButtonProp:n,internalNativeButton:a=t,allowInferredHostMismatch:o=!1,disabled:i,type:s,hasFormAction:l=!1,tabIndex:u=0,focusableWhenDisabled:d,stopEventPropagation:p=!1,onBeforeKeyDown:m,onBeforeKeyUp:g}=e,h=c.useRef(null),b=!0===d,y=useFocusableWhenDisabled({focusableWhenDisabled:b,disabled:i,isNativeButton:t,tabIndex:u}),v=c.useCallback(()=>{const e=h.current;return null==e?t:"BUTTON"===e.tagName||Boolean("A"===e.tagName&&e.href)},[t]),S=c.useMemo(()=>{const e=b?{}:{tabIndex:i?-1:u};return t?(e.type=void 0!==s||l?s:"button",b||(e.disabled=i)):(e.role="button",!b&&i&&(e["aria-disabled"]=i)),b?{...e,...y}:e},[i,b,y,l,t,u,s]);return{getButtonProps:c.useCallback((e=ul)=>{const{onClick:t,onKeyDown:n,onKeyUp:a,...o}=e,handleClick=e=>{p&&e.stopPropagation(),i?e.preventDefault():t?.(e)},handleKeyDown=e=>{b&&y.onKeyDown(e),i||(m?.(e),n?.(e),e.target!==e.currentTarget||v()||(" "!==e.key?"Enter"===e.key&&(e.preventDefault(),e.currentTarget.click()):e.preventDefault()))},handleKeyUp=e=>{i||(g?.(e),a?.(e),e.target!==e.currentTarget||v()||" "!==e.key||e.defaultPrevented||e.currentTarget.click())};return{...S,...o,onClick:handleClick,onKeyDown:handleKeyDown,onKeyUp:handleKeyUp}},[S,i,b,y,v,m,g,p]),rootRef:h}}var dl=class LazyRipple{static create(){return new LazyRipple}static use(){const e=useLazyRef(LazyRipple.create).current,[t,n]=c.useState(!1);return e.shouldMount=t,e.setShouldMount=n,c.useEffect(e.mountEffect,[t]),e}constructor(){this.ref={current:null},this.mounted=null,this.didMount=!1,this.shouldMount=!1,this.setShouldMount=null}mount(){return this.mounted||(this.mounted=createControlledPromise(),this.shouldMount=!0,this.setShouldMount(this.shouldMount)),this.mounted}mountEffect=()=>{this.shouldMount&&!this.didMount&&null!==this.ref.current&&(this.didMount=!0,this.mounted.resolve())};start(...e){this.mount().then(()=>this.ref.current?.start(...e))}stop(...e){this.mount().then(()=>this.ref.current?.stop(...e))}pulsate(...e){this.mount().then(()=>this.ref.current?.pulsate(...e))}};function useLazyRipple(){return dl.use()}function createControlledPromise(){let e,t;const n=new Promise((n,a)=>{e=n,t=a});return n.resolve=e,n.reject=t,n}function Ripple(e){const{className:t,classes:n,pulsate:a=!1,rippleX:o,rippleY:i,rippleSize:s,in:l,onExited:u,timeout:d}=e,[p,m]=c.useState(!1),g=clsx(t,n.ripple,n.rippleVisible,a&&n.ripplePulsate),h={width:s,height:s,top:-s/2+i,left:-s/2+o},b=clsx(n.child,p&&n.childLeaving,a&&n.childPulsate);return l||p||m(!0),c.useEffect(()=>{if(!l&&null!=u){const e=setTimeout(u,d);return()=>{clearTimeout(e)}}},[u,l,d]),(0,Ba.jsx)("span",{className:g,style:h,children:(0,Ba.jsx)("span",{className:b})})}var pl=generateUtilityClasses("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]),ml=550,fl=keyframes`
|
|
1
|
+
!function(e,t){var n=Object.create,a=Object.defineProperty,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,s=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,__commonJSMin=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),__copyProps=(e,t,n,s)=>{if(t&&"object"==typeof t||"function"==typeof t)for(var c,u=i(t),d=0,p=u.length;d<p;d++)c=u[d],l.call(e,c)||c===n||a(e,c,{get:(e=>t[e]).bind(null,c),enumerable:!(s=o(t,c))||s.enumerable});return e},__toESM=(e,t,o)=>(o=null!=e?n(s(e)):{},__copyProps(!t&&e&&e.__esModule?o:a(o,"default",{value:e,enumerable:!0}),e));let c=__toESM(e,1);e=__toESM(e);let u=__toESM(t,1);t=__toESM(t);var d,p=Symbol.for("nexsys4.nexusClientOverrides.installed"),m=Symbol.for("nexsys4.nexusClientOverrides.originals"),g=200,resolveOverrideTargets=e=>({buffer:"function"==typeof e?.buffer?e.buffer():null,platform:"function"==typeof e?.platform?e.platform():null,datahandler:"function"==typeof e?.datahandler?e.datahandler():null}),getActiveNexSys=()=>globalThis.nexSys&&"object"==typeof globalThis.nexSys?globalThis.nexSys:null,getSystemSettings=(e=getActiveNexSys())=>e?.state?.system?.settings||e?.sys?.settings||{},isOverrideTabEnabled=(e=getActiveNexSys())=>Boolean(getSystemSettings(e).overrideTab),normalizeTargetQuery=e=>{const t=String(e??"").trim();return t?`${t.charAt(0).toUpperCase()}${t.slice(1).toLowerCase()}`:""},getInputArea=()=>globalThis.document?.getElementsByTagName?.("textarea")?.[0]??null,createTabCompletion=()=>({txt:null,qry:null,vals:null,index:0,reset(){this.txt=null,this.qry=null,this.vals=null,this.index=0},tc(){const e=getInputArea();if(!e)return;if(this.txt??=String(e.value??"").split(" "),this.qry??=normalizeTargetQuery(this.txt.at(-1)),!this.qry)return;const t=Array.isArray(globalThis.nexGui?.colors?.enemies)?globalThis.nexGui.colors.enemies:[],n=Array.isArray(globalThis.GMCP?.WhoList)?globalThis.GMCP.WhoList:[];this.vals??=[...new Set([...t.map(e=>String(e)),...n.map(e=>String(e?.name??"")).filter(e=>e.startsWith(this.qry))])],this.vals.length&&(this.index>this.vals.length-1?(this.txt[this.txt.length-1]=this.qry,this.index=0):(this.txt[this.txt.length-1]=this.vals[this.index],this.index+=1),e.value=this.txt.join(" "))}}),ensureTabCompletion=(e=getActiveNexSys())=>{if(e?.tabCompletion?.tc&&e?.tabCompletion?.reset)return e.tabCompletion;const t=createTabCompletion();return e&&"object"==typeof e&&(e.tabCompletion=t),t},renderCustomPrompt=(e,t={})=>{const n=e?.api?.prompt,a=t?.line;try{const e="function"==typeof n?.getCustomPrompt?n.getCustomPrompt():"function"==typeof n?.render?n.render(t):null;return"string"!=typeof e?null:(a?.parsed_line&&"object"==typeof a.parsed_line&&(a.parsed_line.formatted=()=>e),e)}catch(o){return console.error("nexSys4 custom prompt render failed",o),null}},createAddBlockOverride=()=>function add_block(e=[]){const t=getActiveNexSys();t?.prepend_line&&(e.unshift(t.prepend_line),t.prepend_line=!1);const n=Boolean(getSystemSettings(t).customPrompt);let a=0;for(let i=0;i<e.length;i+=1){const o=e[i];if(!o||o.gag)continue;if(!o.parsed_line&&!o.html_line)continue;const s=Boolean(o.is_prompt&&n&&o.parsed_line)?renderCustomPrompt(t,{line:o,source:"nexus-client-override"}):null;o.is_prompt&&0===a&&null===s?o.gag=!0:(!o.parsed_line||"function"!=typeof o.parsed_line.text||o.parsed_line.text()||0!==a&&i!==e.length-1||null!==s)&&("function"==typeof this._fill_tab_completion&&this._fill_tab_completion(o),a+=1,this.lineid+=1,o.id=this.lineid,this.lines.push(o),this.unread=!0)}const o=this.prune_lines?.()??!1;(a||o)&&this.on_lines_changed?.()},createProcessLinesOverride=()=>function process_lines(e=[]){if(this.gagged)return;if(!e.length)return;this.current_block=e;const t=this.reflexes?.();for(let n=0;n<e.length&&!(n>=1e3);n+=1)if(this.current_line=e[n],this.current_line.index=n,e[n]?.line&&String(e[n].line).indexOf(String.fromCharCode(7))>=0&&this.platform?.()?.beep?.(),!this.fullstop&&"function"==typeof t?.handle_triggers){const a=t.handle_triggers(e,n);Array.isArray(a)&&(e=a)}t?.run_function?.("onBlock",e,"ALL"),this.buffer?.()?.add_block?.(e),this.current_line=void 0,this.current_block=void 0},createOnKeyUpOverride=()=>function on_key_up(e){if(!this._nexus?.datahandler?.()?.is_connected?.())return!0;if(this.dialog_has_focus?.())return!0;const t=getActiveNexSys(),n=isOverrideTabEnabled(t),a=n?ensureTabCompletion(t):null;return this.tab_pressed?9!==e||(this.tab_pressed=!1,n?(a?.tc?.(),!1):(this.player_targetted||this._nexus?.datahandler?.()?.tab_target?.(!1),this.player_targetted=!1,!1)):(a?.reset?.(),!0)},createSendCommandOverride=e=>function send_command(t){const n=getActiveNexSys(),a=Date.now();if(n&&"object"==typeof n&&(n.sentCommands=[...(Array.isArray(n.sentCommands)?n.sentCommands:[]).slice(0,g-1),{cmd:t,time:a}]),"function"==typeof e)return e.call(this,t);this._socket&&(this._socket.send(`${t}\r\n`),this.last_send=a)},installNexusClientOverrides=({nexusclient:e=globalThis.nexusclient}={})=>{if(!e||e[p])return Boolean(e);const{buffer:t,platform:n,datahandler:a}=resolveOverrideTargets(e);return!!(t&&n&&a)&&(e[m]={buffer:t,platform:n,datahandler:a,process_lines:e.process_lines,add_block:t.add_block,on_key_up:n.on_key_up,send_command:a.send_command},e.process_lines=createProcessLinesOverride(),t.add_block=createAddBlockOverride(),n.on_key_up=createOnKeyUpOverride(),a.send_command=createSendCommandOverride(a.send_command),e[p]=!0,!0)},uninstallNexusClientOverrides=({nexusclient:e=globalThis.nexusclient}={})=>{if(!e?.[p])return!1;const t=e[m];if(!t)return delete e[p],!1;const n=t.buffer||resolveOverrideTargets(e).buffer,a=t.platform||resolveOverrideTargets(e).platform,o=t.datahandler||resolveOverrideTargets(e).datahandler;return e.process_lines=t.process_lines,n&&(n.add_block=t.add_block),a&&(a.on_key_up=t.on_key_up),o&&(o.send_command=t.send_command),delete e[m],delete e[p],!0},h=["send","sendGmcp","on","off","notice","getCommandSeparator","now","setTimeout","clearTimeout","getVariable","setVariable","emitLocal","raiseToEventStream"],b=Object.freeze({promptRender:["renderPrompt"],gmcpSnapshot:["getGMCP"],debugToggle:["setDebugEnabled","isDebugEnabled"],destroy:["destroy"]}),resolveAdapterCapabilities=e=>{const t=e?.capabilities&&"object"==typeof e.capabilities?e.capabilities:{},n={};return Object.entries(b).forEach(([a,o])=>{const i=Object.prototype.hasOwnProperty.call(t,a)?Boolean(t[a]):o.every(t=>"function"==typeof e?.[t]);if(i){const t=o.filter(t=>"function"!=typeof e?.[t]);if(t.length)throw new Error(`nexSys4 adapter capability "${a}" requires methods: ${t.join(", ")}`)}n[a]=i}),Object.freeze(n)},assertAdapterContract=e=>{const t=h.filter(t=>"function"!=typeof e?.[t]);if(t.length)throw new Error(`nexSys4 adapter missing required methods: ${t.join(", ")}`);return resolveAdapterCapabilities(e),e},y=["Char.Vitals","Char.Status","Char.Afflictions.List","Char.Afflictions.Add","Char.Afflictions.Remove","Char.Defences.List","Char.Defences.Add","Char.Defences.Remove","Char.Items.Add","Char.Items.Remove","Char.Items.Update","Char.Items.List","IRE.Rift.List","IRE.Rift.Change","Room.Info","IRE.Target.Info"],registerEventStreamBindings=({eventBus:e,emit:t,pushTrace:n,eventRegistrations:a})=>{if(!e?.registerEvent)return;const registerBinding=(t,o)=>{const i=`nexsys4-${t.replace(/\W+/g,"-")}`,callback=e=>o(e);e.registerEvent(t,callback,{id:i,tags:["nexsys4"]}),a.push({eventName:t,id:i}),n("register:eventStream",{eventName:t,id:i})};y.forEach(e=>{registerBinding(e,n=>{t("GmcpEvent",{tag:e,payload:n??null,rawTag:e})})}),registerBinding("PromptEvent",e=>{t("PromptEvent",{source:"eventstream-prompt",payload:e??null})})},registerStartupGag=({onLocalEvent:e,client:t,notice:n,isDebugEnabled:a})=>{if("function"!=typeof e)return;const gagBlock=()=>{a()||t?.current_block?.forEach(e=>e.gag=!0)};let o=null,i=null,s=null;i=e("CuringStartupBeginEvent",()=>{i?.(),i=null,o||(o=e("PromptEvent",gagBlock))}),s=e("CuringStartupCompleteEvent",()=>{s?.(),s=null,gagBlock(),o?.(),o=null,n("loaded using startup spam gag.")})},escapeRegExp$2=e=>String(e||"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),createTriggerRegex=e=>e.regex instanceof RegExp?e.regex:new RegExp(`^${escapeRegExp$2(e.text)}$`,"i"),resolveTriggerReason=(e,t={})=>"function"==typeof e.resolveReason?e.resolveReason(t):e.reason,resolveTriggerPayload=(e,t,n={})=>{const a={id:e,source:"text"},o=resolveTriggerReason(t,n);return void 0!==t.have&&(a.have=t.have),void 0!==o&&(a.reason=o),"function"==typeof t.resolvePayload&&Object.assign(a,t.resolvePayload(n,a)||{}),a},createBalanceTextTrigger=(e,t)=>({name:`${e}-${t.name}`,regex:createTriggerRegex(t),action:({args:n,emit:a})=>{a("BalanceStateTextEvent",resolveTriggerPayload(e,t,n.groups))}}),createBalanceTextTriggersFromFamilies=(e=[])=>e.flatMap(({id:e,entries:t=[]})=>t.map(t=>createBalanceTextTrigger(e,t))),v=["a dolomite grain","a calcite mote","a bisemutum chip","an azurite mote","a magnesium chip","an aurum flake","a plumbum flake","a stannum flake","an arsenic pellet","a ferrum flake","an antimony flake","a cuprum flake","an argentum flake","a calamine crystal","a pinch of ground cinnabar","a pinch of realgar crystals","a quartz grain","a pinch of ground malachite","a quicksilver droplet","a potash crystal","a gypsum crystal"],S=["dolomite grains","calcite motes","bisemutum chips","azurite motes","magnesium chips","aurum flakes","plumbum flakes","stannum flakes","arsenic pellets","ferrum flakes","antimony flakes","cuprum flakes","argentum flakes","calamine crystals","pinches of ground cinnabar","pinches of ground realgar","quartz grains","pinches of ground malachite","quicksilver droplets","potash crystals","gypsum crystals"],x=["a bloodroot leaf","a piece of kelp","a goldenseal root","some prickly ash bark","some bayberry bark","a ginseng root","a ginger root","a bellwort flower","a lobelia seed","a hawthorn berry","a valerian leaf","a skullcap flower","slippery elm","a kola nut","sileris berry","some irid moss","a black cohosh root","a prickly pear","some myrrh gum","an echinacea root"],C=["bloodroot leaves","pieces of kelp","goldenseal roots","pieces of prickly ash bark","pieces of bayberry bark","ginseng roots","ginger roots","bellwort flowers","lobelia seeds","hawthorn berries","valerian leaves","skullcap flowers","slippery elms","kola nuts","sileris berries","pieces of irid moss","cohosh roots","prickly pears","myrrh gums","echinacea roots"],w={"a dolomite grain":"dolomite","a calcite mote":"calcite","a bisemutum chip":"bisemutum","an azurite mote":"azurite","a magnesium chip":"magnesium","an aurum flake":"aurum","a plumbum flake":"plumbum","a stannum flake":"stannum","an arsenic pellet":"arsenic","a ferrum flake":"ferrum","an antimony flake":"antimony","a cuprum flake":"cuprum","an argentum flake":"argentum","a calamine crystal":"calamine","a pinch of ground cinnabar":"cinnabar","a pinch of realgar crystals":"realgar","a quartz grain":"quartz","a pinch of ground malachite":"malachite","a quicksilver droplet":"quicksilver","a potash crystal":"potash","a gypsum crystal":"gypsum","a bloodroot leaf":"bloodroot","a piece of kelp":"kelp","a goldenseal root":"goldenseal","some prickly ash bark":"ash","some bayberry bark":"bayberry","a ginseng root":"ginseng","a ginger root":"ginger","a bellwort flower":"bellwort","a lobelia seed":"lobelia","a hawthorn berry":"hawthorn","a valerian leaf":"valerian","a skullcap flower":"skullcap","slippery elm":"elm","a kola nut":"kola","sileris berry":"sileris","some irid moss":"moss","a black cohosh root":"cohosh","a prickly pear":"pear","some myrrh gum":"myrrh","an echinacea root":"echinacea","dolomite grains":"dolomite","calcite motes":"calcite","bisemutum chips":"bisemutum","azurite motes":"azurite","magnesium chips":"magnesium","aurum flakes":"aurum","plumbum flakes":"plumbum","stannum flakes":"stannum","arsenic pellets":"arsenic","ferrum flakes":"ferrum","antimony flakes":"antimony","cuprum flakes":"cuprum","argentum flakes":"argentum","calamine crystals":"calamine","pinches of ground cinnabar":"cinnabar","pinches of ground realgar":"realgar","quartz grains":"quartz","pinches of ground malachite":"malachite","quicksilver droplets":"quicksilver","potash crystals":"potash","gypsum crystals":"gypsum","bloodroot leaves":"bloodroot","pieces of kelp":"kelp","goldenseal roots":"goldenseal","pieces of prickly ash bark":"ash","pieces of bayberry bark":"bayberry","ginseng roots":"ginseng","ginger roots":"ginger","bellwort flowers":"bellwort","lobelia seeds":"lobelia","hawthorn berries":"hawthorn","valerian leaves":"valerian","skullcap flowers":"skullcap","slippery elms":"elm","kola nuts":"kola","sileris berries":"sileris","pieces of irid moss":"moss","cohosh roots":"cohosh","prickly pears":"pear","myrrh gums":"myrrh","echinacea roots":"echinacea"},k={antimony:"ginger",argentum:"lobelia",arsenic:"bayberry",aurum:"kelp",bisemutum:"myrrh",calamine:"hawthorn",calcite:"pear",cinnabar:"elm",cuprum:"bellwort",dolomite:"echinacea",ferrum:"ginseng",gypsum:"cohosh",magnesium:"bloodroot",malachite:"skullcap",plumbum:"goldenseal",potash:"moss",quartz:"kola",quicksilver:"sileris",realgar:"valerian",stannum:"ash"},E={ash:"stannum",bayberry:"arsenic",bellwort:"cuprum",bloodroot:"magnesium",cohosh:"gypsum",echinacea:"dolomite",elm:"cinnabar",ginseng:"ferrum",ginger:"antimony",goldenseal:"plumbum",hawthorn:"calamine",kelp:"aurum",kola:"quartz",lobelia:"argentum",moss:"potash",myrrh:"bisemutum",pear:"calcite",sileris:"quicksilver",skullcap:"malachite",valerian:"realgar"},P={azurite:0,bisemutum:0,magnesium:0,plumbum:0,arsenic:0,potash:0,stannum:0,malachite:0,realgar:0,cinnabar:0,antimony:0,ferrum:0,quartz:0,quicksilver:0,aurum:0,calamine:0,cuprum:0,argentum:0,gypsum:0,calcite:0,dolomite:0,ginseng:0,bloodroot:0,kelp:0,hawthorn:0,lobelia:0,bellwort:0,ginger:0,bayberry:0,ash:0,goldenseal:0,moss:0,valerian:0,elm:0,skullcap:0,sileris:0,kola:0,cohosh:0,pear:0,myrrh:0,echinacea:0},escapeRegExp$1=e=>String(e||"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),buildAlternation=(e=[])=>e.map(e=>String(e||"").trim().toLowerCase()).filter(Boolean).map(escapeRegExp$1).join("|"),exactEntry=(e,t,n,a)=>({name:e,text:t,have:n,reason:a}),regexEntry=(e,t,n,a)=>({name:e,regex:t,have:n,reason:a}),dynamicReasonEntry=(e,t,n,a)=>({name:e,regex:t,have:n,resolveReason:a}),dynamicPayloadEntry=(e,t,n)=>({name:e,regex:t,resolvePayload:n}),T=[...x,...v].filter(e=>"some irid moss"!==e&&"a potash crystal"!==e),R=new RegExp(`^You eat (?<item>${buildAlternation(T)})\\.$`,"i"),M=/^Balance used: (?<duration>\d+\.\d{1,2})s\.$/i,D=/^Equilibrium used: (?<duration>\d+\.\d{1,2})s\.$/i,normalizeConsumedHerb=e=>{const t=String(e||"").trim().toLowerCase();return w[t]||t},parseObservedDurationSeconds=(e={})=>Number.parseFloat(String(e.duration||"")),O=[{id:"balance",entries:[exactEntry("ready","You have recovered balance on all limbs.",!0,"ready"),dynamicPayloadEntry("used",M,e=>({have:!1,reason:"used",durationSeconds:parseObservedDurationSeconds(e)}))]},{id:"equilibrium",entries:[exactEntry("ready","You have recovered equilibrium.",!0,"ready"),dynamicPayloadEntry("used",D,e=>({have:!1,reason:"used",durationSeconds:parseObservedDurationSeconds(e)}))]},{id:"herb",entries:[exactEntry("ready","You may eat another plant or mineral.",!0,"ready"),dynamicReasonEntry("use",R,!1,e=>normalizeConsumedHerb(e?.item))]},{id:"focus",entries:[exactEntry("ready","Your mind is able to focus once again.",!0,"ready"),exactEntry("use","You focus your mind intently on curing your mental maladies.",!1,"focus"),regexEntry("shriek",/^A diminutive homunculus resembling \w+ turns its head towards you, its jaws opening wider than what seems possible\. The homunculus stares intently at you and lets out an ear-piercing shriek that disrupts your thoughts\.$/i,!1,"shriek"),regexEntry("concussion",/^(?:The blow sets your head to spinning - you cannot concentrate on anything\.|\w+ swings (?:his|her) shield around, smashing your temple with a backhanded blow\.)$/i,!1,"concussion"),exactEntry("failed","You concentrate, but your mind is too tired to focus.",!1,"failed")]},{id:"sip",entries:[exactEntry("ready","You may drink another health or mana elixir.",!0,"ready"),exactEntry("health","The elixir heals and soothes you.",!1,"health"),exactEntry("mana","Your mind feels stronger and more alert.",!1,"mana"),regexEntry("apply",/^You take some elixir from .+ and rub it into your .+\.$/i,!1,"apply"),regexEntry("failed",/^(?:The elixir flows down your throat without effect\.|The health elixir fizzles away without any discernable effect\.)$/i,!1,"failed")]},{id:"moss",entries:[exactEntry("ready","You may eat another bit of irid moss or potash.",!0,"ready"),exactEntry("use","You feel your health and mana replenished.",!1,"consume"),exactEntry("failed","The potash slides down without effect.",!1,"failed")]},{id:"tree",entries:[exactEntry("ready","You may utilise the tree tattoo again.",!0,"ready"),exactEntry("use","You touch the tree of life tattoo.",!1,"touch"),exactEntry("failed","Your tree of life tattoo glows faintly for a moment then fades, leaving you unchanged.",!1,"failed")]},{id:"salve",entries:[exactEntry("ready","You may apply another salve to yourself.",!0,"ready"),exactEntry("failed","The salve dissolves and quickly disappears after you apply it.",!1,"failed"),regexEntry("restoration",/^\[Curing\]: APPLY RESTORATION TO \w+$/i,!1,"restoration"),regexEntry("apply",/^(?:\[Curing\]: APPLY (?:MENDING|EPIDERMAL|CALORIC).*$|You take out some salve and quickly rub it on your(?:\s\w+)+\.)$/i,!1,"apply")]},{id:"immunity",entries:[exactEntry("ready","Your system is able to absorb antidotes once again.",!0,"ready"),exactEntry("failed","The liquid reacts with the substance still present in your system, cancelling itself out.",!1,"failed"),exactEntry("use","[Curing]: SIP IMMUNITY",!1,"immunity")]},{id:"rebounding",entries:[exactEntry("aura","You feel an aura of rebounding surround you.",!0,"aura"),exactEntry("discharged","Your aura of weapons rebounding disappears.",!0,"discharged"),exactEntry("already-on","You puff on the pipe, but your existing aura of weapons rebounding negates any effect.",!0,"already-on"),regexEntry("malachite",/^You take a long drag of malachite off your pipe\.?$/i,!1,"malachite"),regexEntry("skullcap",/^You take a long drag of skullcap off your pipe\.$/i,!1,"skullcap")]},{id:"smoke",entries:[exactEntry("ready","Your lungs have recovered enough to smoke another mineral or plant.",!0,"ready"),exactEntry("failed","Your lungs have not yet recovered enough to allow you to smoke.",!1,"failed"),regexEntry("use",/^You take a long drag of/i,!1,"smoke")]},{id:"dragonbreath",entries:[regexEntry("ready",/^Your \w+ summoning is complete\.$/i,!0,"ready"),exactEntry("failed","You already have your breath summoned, Wyrm.",!1,"failed"),exactEntry("lightning","You feel your eyes begin to blaze as you summon lightning to your belly.",!1,"lightning"),exactEntry("fire","With an almost inaudible growl, you begin summoning a fiery inferno into your belly.",!1,"fire"),exactEntry("acid","With a great effort, you begin to summon caustic hell to your innards.",!1,"acid"),exactEntry("cold","Flaring your wings and head back, you begin summoning forth the icy cold of the pure, endless void into your belly.",!1,"cold"),exactEntry("venom","With a great shudder, you begin to summon forth the defiling, deadly wyrmvenom of legend.",!1,"venom"),exactEntry("psi","Calling upon the vast well of mental power at your disposal, you begin to summon a mind-rending blast of psi energy.",!1,"psi")]},{id:"deafness",entries:[exactEntry("ready","The aural world fades to silence.",!0,"ready"),exactEntry("calamine","You eat a calamine crystal.",!1,"calamine"),exactEntry("hawthorn","You eat a hawthorn berry.",!1,"hawthorn")]},{id:"deaf",entries:[exactEntry("already-on","You are already deaf.",!0,"already-on"),exactEntry("trance","The world about you falls silent as the deafness trance sinks upon you.",!0,"trance"),exactEntry("use","You stare straight ahead and concentrate on a distant focal point.",!1,"deaf")]},{id:"blind",entries:[exactEntry("already-on","You are already blind.",!0,"already-on"),exactEntry("ready","You open your eyes once more, and the world about you is darkness.",!0,"ready"),exactEntry("use","You close your eyes for a moment.",!1,"blind")]},{id:"speed",entries:[exactEntry("ready","Tiny tremours spread through your body as the world seems to slow down.",!0,"ready"),exactEntry("use","[Curing]: SIP SPEED",!1,"speed")]},{id:"sileris",entries:[exactEntry("quicksilver-ready","The quicksilver hardens into a supple metallic shell.",!0,"quicksilver"),exactEntry("berry-ready","The sileris berry juice hardens into a supple purple shell.",!0,"sileris"),exactEntry("quicksilver-use","You apply a quicksilver droplet to yourself.",!1,"quicksilver"),exactEntry("berry-use","You apply a sileris berry to yourself.",!1,"sileris")]},{id:"voice",entries:[exactEntry("ready","You have recovered voice balance.",!0,"ready")]},{id:"tremolo",entries:[exactEntry("ready","You may mangle a limb with the vibrato or tremolo once again.",!0,"ready"),regexEntry("arm-use",/^With a trilling vibrato you attack \w+'s broken (?:left|right) arm\. (?:He|She) screams in pain\.$/i,!1,"arm"),regexEntry("leg-use",/^Using a heavy tremolo you brutally punish \w+'s already shattered (?:left|right) leg\.$/i,!1,"leg")]},{id:"homunculus",entries:[exactEntry("ready","You may order your homunculus once more.",!0,"ready"),exactEntry("failed","You are unable to order your homunculus again so soon.",!1,"failed"),regexEntry("use",/^Focusing your mind on a diminutive homunculus resembling (?:\w+), you command it to disrupt (?:\w+)'s focus\. The homunculus turns towards (?:him|her) before letting out an ear-piercing shriek\.$/i,!1,"shriek")]},{id:"fitness",entries:[exactEntry("ready","You may purge your lungs once again.",!0,"ready"),exactEntry("use","You inhale deeply, purging yourself of your asthmatic condition.",!1,"fitness"),exactEntry("failed","You may not purge your lungs again as of this time.",!1,"failed")]},{id:"bloodboil",entries:[exactEntry("ready","You may boil your blood once again.",!0,"ready"),exactEntry("use","You summon spirits of fire to burn off that which afflicts you.",!1,"bloodboil"),exactEntry("failed","You have not recovered enough to boil your blood again as of yet.",!1,"failed")]},{id:"dragonheal",entries:[exactEntry("ready","You may purge your great form of afflictions once again.",!0,"ready"),exactEntry("use","You let out a great keening, and cast the impurities from your form.",!1,"dragonheal"),exactEntry("failed-recovery","You have not yet recovered enough to purge your great form of afflictions.",!1,"failed"),exactEntry("failed-disjointed","Your mind and body are too disjointed to invoke your healing powers, wyrm.",!1,"failed")]},{id:"rage",entries:[exactEntry("ready","You may channel your rage to cure your afflictions once again.",!0,"ready"),exactEntry("use","You allow your pent-up rage to vent and your eyes flash dangerously.",!1,"rage")]},{id:"salt",entries:[exactEntry("use","Directing the energy of salt, you surround yourself with a primal aura, purging yourself of ailments.",!1,"salt"),exactEntry("ready","You may channel alchemical energy to heal yourself once again.",!0,"ready"),exactEntry("failed","You have not recovered enough to heal yourself with alchemical energy once again.",!1,"failed")]},{id:"shrugging",entries:[exactEntry("ready","Your body has recovered enough to shrug afflictions once again.",!0,"ready"),exactEntry("use","Focusing inward, you purge your body of afflictions.",!1,"shrugging"),exactEntry("failed","You may not shrug again so soon.",!1,"failed")]},{id:"fool",entries:[exactEntry("ready","You may heal another affliction.",!0,"ready"),exactEntry("use","You press the Fool tarot to your forehead.",!1,"fool"),exactEntry("failed","The Fool has no effect on you.",!1,"failed")]},{id:"writhe",entries:[regexEntry("free",/^You have writhed free\b/i,!0,"ready"),exactEntry("no-affliction","You begin to writhe helplessly, throwing your body off balance.",!0,"no-affliction"),exactEntry("entangled","You begin to struggle free of your entanglement.",!1,"entangled"),exactEntry("transfixation","You begin trying to wrest your mind free of that which has transfixed it.",!1,"transfixation"),exactEntry("failed-entangled","You twist and turn as you attempt to escape from your entanglement.",!1,"failed"),exactEntry("failed-transfixation","You continue trying to wrest your mind free.",!1,"failed")]},{id:"impalewrithe",entries:[exactEntry("free-direct","With an heroic effort you manage to writhe yourself free from the weapon that impaled you.",!0,"impale"),exactEntry("use","You begin to writhe furiously to escape the blade that has impaled you.",!1,"impale"),regexEntry("free-swathe",/^With a vicious snarl \w+ carves a merciless swathe through your steaming guts\. You gurgle and choke as s?he withdraws (?:his|her) dripping blade, glistening with gore\.$/i,!0,"impale"),regexEntry("free-wrench",/^Searing pain tears through your midsection as you wrench away from [A-Z][a-z]+, (?:his|her) weapon ripping unceremoniously through your innards\.$/i,!0,"impale"),regexEntry("free-slide",/^With a snarl of contempt, \w+ allows you to slide free of (?:her|his) weapon\.$/i,!0,"impale")]},{id:"alleviate",entries:[exactEntry("ready","You may purge your body of afflictions once again.",!0,"ready"),exactEntry("use","Applying your knowledge of anatomy, you massage pressure points with your fingers, and a flood of relief courses through your body.",!1,"alleviate"),exactEntry("no-afflictions","There are no pesky afflictions keeping you from your destiny, Warrior.",!1,"no-afflictions"),exactEntry("failed","You are too exhausted to purge your body of afflictions.",!1,"failed")]},{id:"slough",entries:[exactEntry("use","You allow your outer layers to slough away, their fires extinguished along with the impurities contaminating them.",!1,"slough"),exactEntry("ready","You may slough off the impurities that plague you once again.",!0,"ready"),exactEntry("failed","You may not slough off the impurities again quite yet.",!1,"failed")]}],createBalanceTextTriggers=()=>({group:"balance/text",triggers:createBalanceTextTriggersFromFamilies(O)}),parsePositiveInteger=(e,t=1)=>{const n=Number.parseInt(String(e??""),10);return Number.isFinite(n)&&n>0?n:t},cleanItemText=e=>String(e||"").trim(),emitInventoryDelta=({emit:e,item:t,delta:n,source:a="text-trigger"})=>{e("CacheInventoryDeltaTextEvent",{item:cleanItemText(t),delta:n,source:a})},createCacheTextTriggers=()=>({group:"cache/text",triggers:[{name:"rift-out",regex:/^You remove (?<amount>\d+) (?<item>.+?), bringing the total in the rift to (?<riftAmount>\d+)\.$/i,action:({args:e,emit:t})=>{const n=e?.groups||{};t("CacheRiftOutTextEvent",{item:cleanItemText(n.item),amount:parsePositiveInteger(n.amount),riftAmount:parsePositiveInteger(n.riftAmount,0),source:"text-trigger"})}},{name:"curative-consume",regex:/^You eat (?<item>.+?)\.$/i,action:({args:e,emit:t})=>{t("CacheCurativeConsumedTextEvent",{item:cleanItemText((e?.groups||{}).item),amount:1,source:"text-trigger"})}},{name:"rift-in",regex:/^You store (?<amount>\d+) (?<item>.+?), bringing the total in the rift to (?<riftAmount>\d+)(?<capacityMarker>, which is the maximum for that type of object)?\.$/i,action:({args:e,emit:t})=>{const n=e?.groups||{};t("CacheRiftInTextEvent",{item:cleanItemText(n.item),amount:parsePositiveInteger(n.amount),riftAmount:parsePositiveInteger(n.riftAmount,0),atCapacity:Boolean(n.capacityMarker),source:"text-trigger"})}},{name:"rift-full",regex:/^You may not store any more of that type of thing\.$/i,action:({emit:e})=>{e("CacheRiftFullTextEvent",{source:"text-trigger"})}},{name:"inventory-empty",regex:/^You have no (?<item>.+?) in your inventory\.$/i,action:({args:e,emit:t})=>{t("CacheInventoryEmptyTextEvent",{item:cleanItemText((e?.groups||{}).item),source:"text-trigger"})}},{name:"give-away",regex:/^You give (?<item>.+?) to .+\.$/i,action:({args:e,emit:t})=>{emitInventoryDelta({emit:t,item:e?.groups?.item,delta:-1})}},{name:"receive",regex:/^.+ gives (?<item>.+?) to you\.$/i,action:({args:e,emit:t})=>{emitInventoryDelta({emit:t,item:e?.groups?.item,delta:1})}},{name:"drop",regex:/^You drop (?<item>.+?)\.$/i,action:({args:e,emit:t})=>{emitInventoryDelta({emit:t,item:e?.groups?.item,delta:-1})}}]}),normalizeTextValue=e=>String(e||"").trim(),parseDelimitedEntries=e=>String(e||"").split(/[|,]/).map(e=>e.trim().toLowerCase().replace(/^,+|,+$/g,"")).filter(Boolean),parseSpaceDelimitedEntries=e=>String(e||"").replace(/\s+\((\d+)\)/g,"($1)").trim().split(/\s+/).map(e=>e.trim().toLowerCase().replace(/^,+|,+$/g,"")).filter(Boolean),buildLimbPayload=({args:e,client:t,source:n="text-trigger"})=>({limb:normalizeTextValue(e.groups?.limb),raw:normalizeTextValue(t?.current_line?.line),source:n}),createLimbTextTriggers=()=>({group:"limb/selfDamage",triggers:[{name:"carve-hit",regex:/^As .+? carves into you, you perceive that \w+ has dealt (?<amount>[\d.]+)% damage to your (?<limb>.+)\.$/,action:({args:e,client:t,emit:n})=>{n("LimbDamageTextEvent",{...buildLimbPayload({args:e,client:t}),amount:Number(e.groups?.amount)})}},{name:"crunch-hit",regex:/^As .+?'s? blow crunches into you, you perceive that \w+ has dealt (?<amount>[\d.]+)% damage to your (?<limb>.+)\.$/,action:({args:e,client:t,emit:n})=>{n("LimbDamageTextEvent",{...buildLimbPayload({args:e,client:t}),amount:Number(e.groups?.amount)})}},{name:"pain-subsides",regex:/^The pain plaguing your (?<limb>.+) subsides\.$/,action:({args:e,client:t,emit:n})=>{n("LimbResetTextEvent",buildLimbPayload({args:e,client:t}))}}]}),normalizeTag=e=>String(e||"").trim().toLowerCase(),normalizeCommandSeparator=e=>String(e??"").trim(),toNumber=(e,t=0)=>{const n=Number(e);return Number.isFinite(n)?n:t},toOptionalBooleanFromYesNo=e=>{if(null==e||""===e)return;if("boolean"==typeof e)return e;if("number"==typeof e)return 0!==e;const t=String(e).trim().toLowerCase();return!!["yes","1","true","on"].includes(t)||!["no","0","false","off"].includes(t)&&void 0},boolWord=e=>e?"on":"off",nowMs=()=>Date.now(),$={classQueue:{name:"class",type:"c!p!t!w",pre:["touch soul","stand"],post:[],exclusions:["fullQueue"]},freeQueue:{name:"free",type:"free",pre:["touch soul","stand"],post:[],exclusions:["fullQueue","shieldQueue"]},fullQueue:{name:"full",type:"ebc!w!p!t",pre:["touch soul","stand"],post:[],exclusions:["freeQueue","shieldQueue","classQueue"]},shieldQueue:{name:"shield",type:"eb!w!t",pre:["touch soul","stand"],post:[],exclusions:["freeQueue","fullQueue"]},shipQueue:{name:"ship",type:"s!w!t",pre:["touch soul","stand"],post:[],exclusions:[]},bloodcloakQueue:{name:"bloodcloak",type:"!teb",pre:["touch soul"],post:[],exclusions:["fullQueue","freeQueue"]},battlerageQueue:{name:"battlerage",type:"!p!t!wu",pre:["touch soul"],post:[],exclusions:[]},stunQueue:{name:"stun",type:"!t",pre:["touch soul"],post:[],exclusions:[]}},escapeRegExp=e=>String(e).replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),normalizeTriggerName=e=>String(e||"").replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,""),resolveSeparator=e=>normalizeCommandSeparator(e?.settings?.command_separator??e?.settings?.commandSeparator)||"|",splitCommands=(e,t)=>String(e||"").split(String(t||"|")||"|").map(e=>e.trim()).filter(Boolean),createQueueSentTrigger=([e,t])=>({name:`sent-${normalizeTriggerName(e)}`,regex:new RegExp(`^\\[System\\]: Added (?<commands>.+) to your ${escapeRegExp(t.type)} queue\\.$`,"i"),action:({args:n,client:a,emit:o})=>{const i=resolveSeparator(a),s=normalizeTextValue(n.groups?.commands);o("QueueSentTextEvent",{raw:normalizeTextValue(a?.current_line?.line),queueId:e,queueName:t.name,queueType:t.type,rawCommands:s,commands:splitCommands(s,i),separator:i,source:"text-trigger"})}}),createQueueTextTriggers=()=>({group:"queue/text",triggers:Object.entries($).map(createQueueSentTrigger)}),createAffPrioritySnapshotTriggers=()=>({group:"serverside/affPrioritySnapshot",session:{name:"affPriorities",completionEvent:"ServersideAffPrioSnapshotCompleteTextEvent",fallbackCloseEvents:[{event:"PromptEvent",reason:"prompt"},{event:"CuringStartupCompleteEvent",reason:"startup-complete"}],resetEvents:[{event:"CuringStartupBeginEvent",reason:"startup-begin"}]},triggers:[{name:"open",opener:!0,openReason:"aff-priority-header",regex:/^Your affliction curing priorities(?::| for the priority set (?<set>\S+):)$/,action:({args:e,emit:t})=>{t("ServersideAffPrioSnapshotOpenTextEvent",{topic:"affPriorities",reason:"aff-priority-header",set:e.groups?.set||""})}},{name:"line",regex:/^(?<prio>\d+):\s*(?<entries>.*)$/,action:({args:e,emit:t})=>{const n=parseSpaceDelimitedEntries(e.groups.entries);return!!n.length&&(n.forEach(n=>{t("ServersideAffPrioTextEvent",{aff:n,prio:Number(e.groups.prio)})}),!0)}},{name:"close",closer:!0,closeReason:"aff-priority-terminal-line",regex:/^Affs with priority 26 are ignored\.$/i}]}),createCuringSetSnapshotTriggers=()=>{let e=[],t="";const reset=()=>{e=[],t=""};return{group:"serverside/curingSetSnapshot",session:{name:"curingSets",completionEvent:"ServersideCuringSetSnapshotCompleteTextEvent",fallbackCloseEvents:[{event:"PromptEvent",reason:"prompt"},{event:"CuringStartupCompleteEvent",reason:"startup-complete"}],resetEvents:[{event:"CuringStartupBeginEvent",reason:"startup-begin"}]},triggers:[{name:"open",opener:!0,openReason:"curingset-list-header",regex:/^Your current curing sets$/,action:()=>{reset()}},{name:"set-line",regex:/^(?!-+$)(?<name>\S+)(?<current> \(current\))?$/,action:({args:n})=>{const a=String(n.groups?.name||"").trim();return!!a&&(e.push(a),n.groups?.current&&(t=a),!0)}},{name:"close",closer:!0,closeReason:"curingset-total-line",regex:/^You are using a total of (?<used>\d+) of your allowed (?<limit>\d+) curing sets\.$/,action:({args:n,emit:a})=>{a("ServersideCuringSetsTextEvent",{sets:[...e],activeSet:t,used:Number(n.groups.used),limit:Number(n.groups.limit)})}},{name:"empty",opener:!0,closer:!0,openReason:"curingset-empty-header",closeReason:"curingset-empty-line",regex:/^You have no sets defined/,action:({emit:e})=>{reset(),e("ServersideCuringSetsTextEvent",{sets:[],activeSet:"",used:0})}}]}},createCuringSetSwitchTriggers=()=>({group:"serverside/curingSetSwitch",triggers:[{name:"switched",regex:/^You will now cure using the (?<set>\S+) set\.$/,action:({args:e,emit:t})=>{t("ServersideCuringSetSwitchedTextEvent",{set:e.groups?.set||""})}}]}),createDefPrioritySnapshotTriggers=()=>({group:"serverside/defPrioritySnapshot",session:{name:"defPriorities",completionEvent:"ServersideDefPrioSnapshotCompleteTextEvent",fallbackCloseEvents:[{event:"PromptEvent",reason:"prompt"},{event:"CuringStartupCompleteEvent",reason:"startup-complete"}],resetEvents:[{event:"CuringStartupBeginEvent",reason:"startup-begin"}]},triggers:[{name:"open",opener:!0,openReason:"def-priority-header",regex:/^Your defence priorities(?::| for curing set (?<set>\S+):)$/,action:({args:e,emit:t})=>{t("ServersideDefPrioSnapshotOpenTextEvent",{topic:"defPriorities",reason:"def-priority-header",set:e.groups?.set||""})}},{name:"line",regex:/^(?<def>\w+)\s*: (?<prio>\d+)$/,action:({args:e,emit:t})=>{t("ServersideDefPrioTextEvent",{def:String(e.groups.def||"").toLowerCase(),prio:Number(e.groups.prio)})}}]}),createLivePriorityConfirmationTriggers=()=>({group:"serverside/livePriorityConfirmations",triggers:[{name:"aff-set",regex:/^You have set the '(?<aff>[^']+)' affliction to the (?<prio>\d+) priority\.$/,action:({args:e,emit:t})=>{t("ServersideAffPrioTextEvent",{aff:String(e.groups.aff||"").toLowerCase(),prio:Number(e.groups.prio),source:"live-confirmation"})}},{name:"def-set",regex:/^You have set the '(?<def>\w+)' defence to the (?<prio>\d+) priority\.$/,action:({args:e,emit:t})=>{t("ServersideDefPrioTextEvent",{def:String(e.groups.def||"").toLowerCase(),prio:Number(e.groups.prio),source:"live-confirmation"})}}]}),emitStatus$1=(e,t,n)=>{e("ServersideStatusTextEvent",{key:t,value:n})},createLiveStatusConfirmationTriggers=()=>({group:"serverside/liveStatusConfirmations",triggers:[{name:"enabled",regex:/^Curing (?<value>activated|disabled)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"enabled",/^activated$/.test(e.groups.value))}},{name:"transmutation-on",regex:/^You will now use transmutation cures\.$/,action:({emit:e})=>{emitStatus$1(e,"transmutation",!0)}},{name:"transmutation-off",regex:/^You will now use concoction-based cures\.$/,action:({emit:e})=>{emitStatus$1(e,"transmutation",!1)}},{name:"sip-priority",regex:/^Curing will now prioritise (?<value>mana|health) over (?<other>mana|health)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"sipPriority",String(e.groups.value||"").toLowerCase())}},{name:"sip-threshold",regex:/^(?<kind>Health|Mana) curing threshold set to (?<value>\d+)%\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"health"===String(e.groups.kind||"").toLowerCase()?"sipHealthAt":"sipManaAt",Number(e.groups.value))}},{name:"moss-threshold",regex:/^Moss (?<kind>health|mana) curing threshold set to (?<value>\d+)%\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"health"===String(e.groups.kind||"").toLowerCase()?"mossHealthAt":"mossManaAt",Number(e.groups.value))}},{name:"focus",regex:/^Automatic usage of focusing (?<value>activated|disabled)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"focus",/^activated$/.test(e.groups.value))}},{name:"focus-over-herbs",regex:/^You will now prioritise (?<value>focus|herbs) over (?<other>focus|herbs)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"focusOverHerbs",/^focus$/.test(e.groups.value))}},{name:"tree",regex:/^Automatic usage of the tree tattoo (?<value>activated|disabled)\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"tree",/^activated$/.test(e.groups.value)?"on":"off")}},{name:"clot-on",regex:/^You will now attempt to clot your wounds\.$/,action:({emit:e})=>{emitStatus$1(e,"clot",!0)}},{name:"clot-off",regex:/^You will no longer attempt to clot your wounds\.$/,action:({emit:e})=>{emitStatus$1(e,"clot",!1)}},{name:"clot-at",regex:/^Will clot above (?<value>\d+) bleeding\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"clotAt",Number(e.groups.value))}},{name:"insomnia-on",regex:/^You will now use the insomnia ability\.$/,action:({emit:e})=>{emitStatus$1(e,"insomnia",!0)}},{name:"insomnia-off",regex:/^You will now not use the insomnia ability\.$/,action:({emit:e})=>{emitStatus$1(e,"insomnia",!1)}},{name:"fractures-above",regex:/^Will cure health based afflictions above (?<value>\d+)%\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"fracturesAbove",Number(e.groups.value))}},{name:"mana-threshold",regex:/^You will now use mana if above (?<value>\d+)% of your maximum mana reserves\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"manaThreshold",Number(e.groups.value))}},{name:"batch-on",regex:/^You will now attempt to cure multiple things at once\.$/,action:({emit:e})=>{emitStatus$1(e,"batch",!0)}},{name:"batch-off",regex:/^You will now cure one thing at a time\.$/,action:({emit:e})=>{emitStatus$1(e,"batch",!1)}},{name:"clot-above",regex:/^You will now use corrupted clotting if above (?<value>\d+)% of your maximum health reserves\.$/,action:({args:e,emit:t})=>{emitStatus$1(t,"clotAbove",Number(e.groups.value))}}]}),emitStatus=(e,t,n)=>{e("ServersideStatusTextEvent",{key:t,value:n})},I=[()=>({group:"system/systemEvent",triggers:[{name:"line",regex:/^SystemEvent (?<eventName>.+)$/,action:({args:e,client:t,emit:n})=>{const a=normalizeTextValue(e.groups?.eventName);if(!a)return;const o=normalizeTextValue(t?.current_line?.line);n(a,{raw:o});const i=a.match(/^(?<queueName>[A-Za-z]+)QueueFired$/);i?.groups?.queueName&&n("QueueFiredTextEvent",{raw:o,queueName:i.groups.queueName})}},{name:"all-queues-cleared",regex:/^\[System\]: All queued commands cleared\.$/,action:({client:e,emit:t})=>{t("AllQueuesClearedTextEvent",{raw:normalizeTextValue(e?.current_line?.line)})}}]}),()=>({group:"system/separatorChanged",triggers:[{name:"separator-changed",regex:/^Your command separator is now:\s*(?<sep>\S+)\s*$/,action:({args:e,emit:t})=>{const n=String(e.groups?.sep||"").trim();n&&t("CommandSeparatorChangedTextEvent",{separator:n})}}]}),createBalanceTextTriggers,createCacheTextTriggers,createLimbTextTriggers,createQueueTextTriggers,()=>({group:"serverside/statusSnapshot",session:{name:"status",completionEvent:"ServersideStatusSnapshotCompleteTextEvent",fallbackCloseEvents:[{event:"PromptEvent",reason:"prompt"},{event:"CuringStartupCompleteEvent",reason:"startup-complete"}],resetEvents:[{event:"CuringStartupBeginEvent",reason:"startup-begin"}]},triggers:[{name:"open",opener:!0,openReason:"status-header",regex:/^Curing Status:$/},{name:"enabled",regex:/^Enabled:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"enabled",/^yes$/i.test(e.groups.value))}},{name:"reporting",regex:/^Reporting commands:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"reporting",/^yes$/i.test(e.groups.value))}},{name:"sipping",regex:/^Sipping:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"sipping",/^yes$/i.test(e.groups.value))}},{name:"afflictions",regex:/^Affliction Curing:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"afflictions",/^yes$/i.test(e.groups.value))}},{name:"defences",regex:/^Defence Upkeep:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"defences",/^yes$/i.test(e.groups.value))}},{name:"transmutation",regex:/^Curing Method:\s+(?<value>\w+)$/,action:({args:e,emit:t})=>{emitStatus(t,"transmutation","transmutation"===String(e.groups.value||"").toLowerCase())}},{name:"fallback",regex:/^Fallback Curing:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"fallback",/^yes$/i.test(e.groups.value))}},{name:"custom-aff-priority",regex:/^Custom Curing Priority:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"customAffPriority",/^yes$/i.test(e.groups.value))}},{name:"custom-def-priority",regex:/^Custom Defence Priority:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"customDefPriority",/^yes$/i.test(e.groups.value))}},{name:"sip-priority",regex:/^Health\/Mana Priority:\s+(?<value>Health|Mana)$/,action:({args:e,emit:t})=>{emitStatus(t,"sipPriority",String(e.groups.value||"").toLowerCase())}},{name:"sip-health-at",regex:/^Sip health at:\s+(?<value>\d+)%$/,action:({args:e,emit:t})=>{emitStatus(t,"sipHealthAt",Number(e.groups.value))}},{name:"sip-mana-at",regex:/^Sip mana at:\s+(?<value>\d+)%$/,action:({args:e,emit:t})=>{emitStatus(t,"sipManaAt",Number(e.groups.value))}},{name:"moss-health-at",regex:/^Eat moss below health:\s+(?<value>\d+)%$/,action:({args:e,emit:t})=>{emitStatus(t,"mossHealthAt",Number(e.groups.value))}},{name:"moss-mana-at",regex:/^Eat moss below mana:\s+(?<value>\d+)%$/,action:({args:e,emit:t})=>{emitStatus(t,"mossManaAt",Number(e.groups.value))}},{name:"focus",regex:/^Use focus:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"focus",/^yes$/i.test(e.groups.value))}},{name:"focus-over-herbs",regex:/^Focus over herbs:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"focusOverHerbs",/^yes$/i.test(e.groups.value))}},{name:"clot",regex:/^Use clot:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"clot",/^yes$/i.test(e.groups.value))}},{name:"tree",regex:/^Use tree:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"tree",/^yes$/i.test(e.groups.value)?"on":"off")}},{name:"clot-at",regex:/^Clot at:\s+(?<value>\d+) bleeding$/,action:({args:e,emit:t})=>{emitStatus(t,"clotAt",Number(e.groups.value))}},{name:"insomnia",regex:/^Use insomnia:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"insomnia",/^yes$/i.test(e.groups.value))}},{name:"fractures-above",regex:/^Will cure fractures above:\s+(?<value>\d+)% health$/,action:({args:e,emit:t})=>{emitStatus(t,"fracturesAbove",Number(e.groups.value))}},{name:"mana-threshold",regex:/^Will use mana above:\s+(?<value>\d+)% mana$/,action:({args:e,emit:t})=>{emitStatus(t,"manaThreshold",Number(e.groups.value))}},{name:"clot-health",regex:/^Will clot health until:\s+(?<value>\d+)% health$/,action:({args:e,emit:t})=>{emitStatus(t,"clotAbove",Number(e.groups.value))}},{name:"batch",regex:/^Batch actions:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"batch",/^yes$/i.test(e.groups.value))}},{name:"kaido-transmute",closer:!0,closeReason:"status-terminal-line",regex:/^Use Kaido Transmute:\s+(?<value>Yes|No)$/,action:({args:e,emit:t})=>{emitStatus(t,"kaidoTransmute",/^yes$/i.test(e.groups.value))}}]}),createAffPrioritySnapshotTriggers,createDefPrioritySnapshotTriggers,createCuringSetSnapshotTriggers,createCuringSetSwitchTriggers,createLiveStatusConfirmationTriggers,createLivePriorityConfirmationTriggers,()=>({group:"serverside/queuePrediction",triggers:[{name:"queue-line",regex:/^CURING QUEUE(?:\s+LIST)?\s*:\s*(?<entries>.*)$/,action:({args:e,emit:t})=>{t("ServersideQueueListTextEvent",{queue:parseDelimitedEntries(e.groups.entries)})}},{name:"predictions-line",regex:/^CURING PREDICTIONS?\s*:\s*(?<entries>.*)$/,action:({args:e,emit:t})=>{t("ServersidePredictionsTextEvent",{predictions:parseDelimitedEntries(e.groups.entries).reduce((e,t)=>(e[t]=!0,e),{})})}}]})],createTriggerCatalog=()=>I.map(e=>e()),registerTextTriggers=({triggerApi:e,client:t,emit:n,onLocalEvent:a,pushTrace:o,triggerIds:i,registerCleanup:s,registerTriggerGroupActivity:l,triggerSessions:c})=>{if(!e?.triggers?.add)return void o("register:nexAction:skipped",{reason:"trigger-api-unavailable"});const u="function"==typeof e.triggers.enable&&"function"==typeof e.triggers.disable,sessionToggleTag=e=>`session:${e}`,setSessionTriggers=(t,n)=>{if(!u)return;const a=sessionToggleTag(t);n?e.triggers.enable([a]):e.triggers.disable([a]),o(n?"session:enable":"session:disable",{session:t,tag:a})},resetSession=(e,t={})=>{const n=c[e];return!!n&&(n.active=!1,n.hasLines=!1,n.lastReason=String(t.reason||"reset"),n.lastClosedAt=Date.now(),setSessionTriggers(e,!1),o("session:reset",{session:e,...t}),!0)},beginSession=(e,t={})=>{const n=c[e];return!!n&&(setSessionTriggers(e,!0),n.active?(o("session:reopen",{session:e,...t}),!1):(n.active=!0,n.hasLines=!1,n.lastReason=String(t.reason||t.source||"begin"),n.lastOpenedAt=Date.now(),o("session:begin",{session:e,...t}),!0))},markSessionHasData=e=>{const t=c[e];t?.active&&!t.hasLines&&(t.hasLines=!0)},completeSession=(e,t={})=>{const a=c[e];if(!a?.active)return!1;const i=a.hasLines;return a.active=!1,a.hasLines=!1,a.lastReason=String(t.reason||"complete"),a.lastClosedAt=Date.now(),setSessionTriggers(e,!1),o("session:complete",{session:e,reason:a.lastReason,hadLines:i,completionEvent:t.completionEvent||""}),t.completionEvent&&n(t.completionEvent,{topic:e,reason:a.lastReason}),!0},registerTextTrigger=({id:a,group:s,regex:c,action:u,enabled:d=!0,tags:p=[],once:m,duration:g,fg:h,bg:b,lines:y,prompt:v,finalAction:S,onRemove:x,onDisable:C,onEnable:w})=>{e.triggers.add({id:a,regex:c,enabled:d,tags:p,once:m,duration:g,fg:h,bg:b,lines:y,prompt:v,finalAction:S,onRemove:x,onDisable:C,onEnable:w,action:e=>u({args:e,client:t,emit:n,pushTrace:o})}),i.push(a),l(s,"triggerCount"),o("register:nexAction",{id:a,group:s,enabled:d,regex:c instanceof RegExp?c.source:String(c)})};createTriggerCatalog().forEach(e=>{const t=e.session;t&&"function"==typeof a&&((t.resetEvents||[]).forEach(({event:n,reason:o})=>{s(a(n,()=>resetSession(t.name,{reason:o,event:n}))),l(e.group,"hookCount")}),(t.fallbackCloseEvents||[]).forEach(({event:n,reason:o})=>{s(a(n,()=>completeSession(t.name,{reason:o,completionEvent:t.completionEvent}))),l(e.group,"hookCount")})),e.triggers.forEach(n=>{const a=t?.name,o=Boolean(a&&!0===n.opener),i=Boolean(a&&!0===n.closer),s=["nexsys4","adapter","text",`group:${e.group}`],l=Boolean(a)&&!o,d=l?[sessionToggleTag(a)]:[],p=(!l||!u)&&(n.enabled??!0);registerTextTrigger({id:`nexsys4-${e.group.replace(/[\\/]+/g,"-")}-${n.name}`,group:e.group,regex:n.regex,enabled:p,tags:[...s,...d,...n.tags||[]],once:n.once,duration:n.duration,fg:n.fg,bg:n.bg,lines:n.lines,prompt:n.prompt,finalAction:n.finalAction,onRemove:n.onRemove,onDisable:n.onDisable,onEnable:n.onEnable,action:s=>{if(o)beginSession(a,{group:e.group,trigger:n.name,reason:n.openReason||"open"});else if(a&&!c[a]?.active)return;const l="function"==typeof n.action?n.action(s):void 0;return!a||o||i||!1===l||markSessionHasData(a),i&&completeSession(a,{reason:n.closeReason||"close",completionEvent:t.completionEvent}),l}})})})},N="",L="#c1bfff",j="#FFF2D7",B=`<span style="color:${L}">[-</span><span style="color:${"#cf6dfc"}">nexSys</span><span style="color:${L}">-] </span>`,F=Object.freeze({fg:j,bg:N}),q=Object.freeze({default:Object.freeze({default:Object.freeze({message:F})}),affGot:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" +aff ",fg:"orange",bg:N}),message:Object.freeze({fg:"green",bg:N})})}),affLost:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" -aff ",fg:"orange",bg:N}),message:Object.freeze({fg:"red",bg:N})})}),defGot:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" +def ",fg:"purple",bg:N}),message:Object.freeze({fg:"green",bg:N})})}),defLost:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" -def ",fg:"purple",bg:N}),message:Object.freeze({fg:"red",bg:N})})}),balanceRecovered:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" onBal ",fg:"brown",bg:N}),message:Object.freeze({fg:"green",bg:N})})}),balanceLost:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" offBal ",fg:"brown",bg:N}),message:Object.freeze({fg:"red",bg:N})})}),trackableGot:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" + ",fg:"white",bg:N}),message:Object.freeze({fg:"green",bg:N})})}),trackableLost:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:" - ",fg:"white",bg:N}),message:Object.freeze({fg:"red",bg:N})})}),priority:Object.freeze({default:Object.freeze({prefix:Object.freeze({text:"priority change: ",fg:"yellow",bg:N}),message:Object.freeze({fg:"red",bg:N})})}),output:Object.freeze({default:Object.freeze({message:Object.freeze({fg:"red",bg:N})})})}),escapeHtml$1=e=>String(e||"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),normalizeNoticeToken=(e,t="")=>String(e||t).trim().toLowerCase(),resolveNoticeStyle=(e={})=>{const t=String(e.category||"default").trim(),n=normalizeNoticeToken(e.action,"default"),a=q[t]||q.default;return a[n]||a.default||q.default.default},normalizeNoticePart=(e,t=F)=>"string"==typeof e?{text:e,fg:t.fg,bg:t.bg}:{text:String(e?.text||""),fg:String(e?.fg??t.fg??F.fg),bg:String(e?.bg??t.bg??F.bg)},buildNoticeParts=(e,t={})=>{const n=resolveNoticeStyle(t),a=n.message||F;if(Array.isArray(t.parts)&&t.parts.length)return t.parts.map(e=>normalizeNoticePart(e,a)).filter(e=>e.text);if(t.title)return[normalizeNoticePart({text:String(t.title),fg:t.titleFg??a.fg,bg:t.titleBg??a.bg},a),normalizeNoticePart({text:String(e),fg:t.fg??a.fg,bg:t.bg??a.bg},a)].filter(e=>e.text);const o=[];return n.prefix?.text&&o.push(normalizeNoticePart(n.prefix,a)),o.push(normalizeNoticePart({text:String(e),fg:t.fg??a.fg,bg:t.bg??a.bg},a)),o.filter(e=>e.text)},renderSpanStyle=e=>["white-space:pre-wrap",e.fg?`color:${escapeHtml$1(e.fg)}`:"",e.bg?`background-color:${escapeHtml$1(e.bg)}`:""].filter(Boolean).join(";"),renderNoticeHtml=(e,t={},n=[])=>`<span class="nexsys4-notice" style="white-space:pre-wrap;">${B}${t.html?String(t.html):(n.length?n:buildNoticeParts(e,t)).map(e=>`<span style="${renderSpanStyle(e)}">${escapeHtml$1(e.text)}</span>`).join("")}</span>`,createNoticeTransport=({client:e,emit:t,pushTrace:n})=>({notice(a,o={}){const i=String(a),s=buildNoticeParts(i,o);e.add_html_line(renderNoticeHtml(i,o,s)),n("notice",{message:i,context:o,parts:s}),t("NoticeEvent",{message:i,context:o,parts:s})}}),createTriggerSessionState=()=>({active:!1,hasLines:!1,lastReason:"idle",lastOpenedAt:0,lastClosedAt:0}),createAdapterDebugState=({debug:e=!1,traceLimit:t=200,now:n=()=>Date.now(),logLabel:a="nexSys4.adapter"}={})=>{let o=Boolean(e);const i=Math.max(1,Number(t||200)),s=[],l=new Map,c={status:createTriggerSessionState(),affPriorities:createTriggerSessionState(),defPriorities:createTriggerSessionState(),curingSets:createTriggerSessionState()},pushTrace=(e,t={})=>{if(!o)return null;const l={at:n(),type:e,detail:t};return s.push(l),s.length>i&&s.splice(0,s.length-i),console.log(`[${a}] ${e}`,t),l};return{pushTrace,triggerSessions:c,registerTriggerGroupActivity:(e,t="triggerCount")=>{const n=String(e||"").trim();if(!n)return null;const a=l.get(n)||{name:n,triggerCount:0,hookCount:0};return a[t]=Number(a[t]||0)+1,l.set(n,a),a},setDebugEnabled(e){o=Boolean(e),pushTrace("debug",{enabled:o})},isDebugEnabled:()=>o,snapshotTriggerGroups:()=>[...l.values()].map(e=>({...e})).sort((e,t)=>e.name.localeCompare(t.name)),snapshotTriggerSessions:()=>Object.entries(c).reduce((e,[t,n])=>(e[t]={...n},e),{}),snapshotRecentTrace:()=>[...s]}},createAdapterEventHub=({pushTrace:e=()=>{},errorLabel:t="nexSys4 adapter listener failed"}={})=>{const n=new Map,normalizeEventName=e=>String(e||"").trim(),emit=(a,o)=>{const i=normalizeEventName(a),s=n.get(i);if(!i||!s?.size)return i&&e("emit",{event:i,listenerCount:0,payload:o}),0;const l=[...s];return e("emit",{event:i,listenerCount:l.length,payload:o}),l.forEach(e=>{if(n.get(i)?.has(e))try{e(o)}catch(a){console.error(t,{event:i,error:a})}}),l.length},on=(t,a)=>{const o=normalizeEventName(t);if(!o||"function"!=typeof a)return()=>{};let i=n.get(o);return i||(i=new Set,n.set(o,i)),i.add(a),e("on",{event:o,listenerCount:i.size}),()=>off(o,a)},off=(t,a)=>{const o=normalizeEventName(t),i=n.get(o);if(!o||!i)return!1;const s=i.delete(a);return i.size||n.delete(o),e("off",{event:o,removed:s,listenerCount:i.size}),s};return{emit,on,off,clear(){n.clear()}}},createAdapterLifecycle=({eventBus:e,triggerApi:t,pushTrace:n=()=>{},clearListeners:a=()=>{}}={})=>{const o=[],i=[],s=[],destroy=()=>{const l=s.length,c=o.length,u=[...i];s.splice(0).forEach(e=>{try{e()}catch(t){console.error("nexSys4 adapter cleanup failed",{error:t})}}),e?.removeListener&&o.forEach(({eventName:t,id:n})=>{e.removeListener(t,n)}),t?.triggers?.remove&&i.forEach(e=>t.triggers.remove(e)),n("destroy",{eventRegistrations:c,triggerIds:u,internalCleanupCount:l}),a()};return{eventRegistrations:o,triggerIds:i,registerCleanup:e=>"function"==typeof e?(s.push(e),e):()=>{},destroy}},summarizePromptContext=(e={})=>({source:e.source||"",hasLine:Boolean(e.line)}),createAdapterPromptSink=({emit:e,pushTrace:t})=>{const renderPrompt=(n,a={})=>{const o=String(n??""),i=a?.line;return i?.parsed_line&&"object"==typeof i.parsed_line&&(i.parsed_line.formatted=()=>o),e("PromptRendered",{prompt:o,context:a}),t("renderPrompt",{promptLength:o.length,context:summarizePromptContext(a)}),o};return{renderPrompt}},normalizeOutboundCommands=e=>Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0):"string"==typeof e&&e?[e]:[],normalizeGmcpRequests=e=>Array.isArray(e)?e.filter(Boolean).map(e=>String(e)):null==e||""===e?[]:[String(e)],createAdapterTransport=({client:e,emit:t,pushTrace:n,resolveSeparator:a}={})=>({send(o=[],i={}){const s=normalizeOutboundCommands(o);if(!s.length)return[];const l=s.join(a()||"|");return e?.send_commands&&e.send_commands(l,!1),n("send",{commands:s,payload:l,context:i}),t("OutboundCommandsEvent",{commands:s,payload:l,context:i}),s},sendGmcp(a=[],o={}){const i="function"==typeof e?.datahandler?e.datahandler():null;if("function"!=typeof i?.send_GMCP)return[];const s=normalizeGmcpRequests(a);if(!s.length)return[];const l=[];return s.forEach(e=>{try{i.send_GMCP(e),l.push(e)}catch(t){console.error("nexSys4 GMCP request failed",{request:e,error:t})}}),l.length&&(n("sendGmcp",{requests:l,context:o}),t("AdapterGmcpRequest",{requests:l,context:o})),l},getVariable(t){if(!e?.variables)return;const n=e.variables();return"function"==typeof n?.get?n.get(t):n?.vars?.[t]},setVariable(t,n){if(!e?.variables)return n;const a=e.variables();return"function"==typeof a?.set?(a.set(t,n),n):a?.vars?(a.vars[t]=n,n):n}}),createNexusAdapter=(e={})=>{const t=e.nexusclient||globalThis.nexusclient,monotonicNowMs=()=>globalThis.performance?.now?globalThis.performance.now():Date.now();let n=null;const resolveSeparator=()=>n||normalizeCommandSeparator(e.separator??t?.settings?.command_separator??t?.settings?.commandSeparator),a=e.eventStream||globalThis.eventStream,o=e.nexAction||globalThis.nexAction,getGMCP=()=>e.GMCP||globalThis.GMCP,{pushTrace:i,triggerSessions:s,registerTriggerGroupActivity:l,setDebugEnabled:c,isDebugEnabled:u,snapshotTriggerGroups:d,snapshotTriggerSessions:p,snapshotRecentTrace:m}=createAdapterDebugState({debug:e.debug,traceLimit:e.traceLimit}),{emit:g,on:h,off:b,clear:y}=createAdapterEventHub({pushTrace:i}),{eventRegistrations:v,triggerIds:S,registerCleanup:x,destroy:C}=createAdapterLifecycle({eventBus:a,triggerApi:o,pushTrace:i,clearListeners:y}),{send:w,sendGmcp:k,getVariable:E,setVariable:P}=createAdapterTransport({client:t,emit:g,pushTrace:i,resolveSeparator}),normalizeEventName=e=>String(e||"").trim(),{notice:T}=createNoticeTransport({client:t,emit:g,pushTrace:i}),{renderPrompt:R}=createAdapterPromptSink({emit:g,pushTrace:i}),emitLocal=(e,t)=>{const n=normalizeEventName(e);return!!n&&(g(n,t),i("emit:local",{event:n,payload:t}),!0)},raiseToEventStream=(e,t)=>{const n=normalizeEventName(e);return!(!n||!a?.raiseEvent)&&(a.raiseEvent(n,t),i("emit:eventstream",{topic:n,payload:t}),!0)};o?.triggers?.remove&&o.triggers.remove(["nexsys4"]),a?.removeByTag&&a.removeByTag(["nexsys4"]),registerEventStreamBindings({eventBus:a,emit:g,pushTrace:i,eventRegistrations:v}),registerTextTriggers({triggerApi:o,client:t,emit:g,onLocalEvent:h,pushTrace:i,triggerIds:S,registerCleanup:x,registerTriggerGroupActivity:l,triggerSessions:s}),!1!==e.startupGag&®isterStartupGag({onLocalEvent:h,client:t,notice:T,isDebugEnabled:u});const addOnceTrigger=({id:e,regex:n,action:a})=>o?.triggers?.add?(o.triggers.add({id:e,regex:n,enabled:!0,once:!0,tags:["nexsys4","probe",`probe:${e}`],action:e=>a({args:e,client:t,emit:g,pushTrace:i})}),S.push(e),i("probe-trigger:add",{id:e,regex:n instanceof RegExp?n.source:String(n)}),()=>{o?.triggers?.remove&&o.triggers.remove(e),i("probe-trigger:remove",{id:e})}):()=>{};return{capabilities:Object.freeze({promptRender:!0,gmcpSnapshot:!0,debugToggle:!0,destroy:!0}),send:w,sendGmcp:k,on:h,off:b,notice:T,getCommandSeparator:()=>resolveSeparator(),setSeparator(e){n=normalizeCommandSeparator(e)||null},addOnceTrigger,now:monotonicNowMs,setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),renderPrompt:R,getVariable:E,setVariable:P,emitLocal,raiseToEventStream,destroy:C,getGMCP,setDebugEnabled:c,isDebugEnabled:u,debugInfo:()=>({debugEnabled:u(),separator:resolveSeparator(),eventRegistrations:v.map(e=>({...e})),triggerIds:[...S],triggerGroups:d(),triggerSessions:p(),hasEventStream:Boolean(a?.registerEvent),hasNexActionTriggers:Boolean(o?.triggers?.add),recentTrace:m()})}},createMockAdapter=(e={})=>{const t=new Map,n=new Map,a=new Map;let o=normalizeCommandSeparator(e.separator??"|");const i=[],s=[],l=[],c=[],u=[],d=[];let p=Boolean(e.debug);const m=Math.max(1,Number(e.traceLimit||200)),g=[],pushTrace=(e,t={})=>{const n={at:nowMs(),type:e,detail:t};g.push(n),g.length>m&&g.splice(0,g.length-m),p&&console.log(`[nexSys4.mockAdapter] ${e}`,t)},normalizeEventName=e=>String(e||"").trim(),emit=(e,n)=>{const a=normalizeEventName(e),o=t.get(a);if(!a||!o?.size)return a&&pushTrace("emit",{event:a,listenerCount:0,payload:n}),0;const i=[...o];return pushTrace("emit",{event:a,listenerCount:i.length,payload:n}),i.forEach(e=>{if(t.get(a)?.has(e))try{e(n)}catch(o){console.error("nexSys4 mock adapter listener failed",{event:a,error:o})}}),i.length},on=(e,n)=>{const a=normalizeEventName(e);if(!a||"function"!=typeof n)return()=>{};let o=t.get(a);return o||(o=new Set,t.set(a,o)),o.add(n),pushTrace("on",{event:a,listenerCount:o.size}),()=>off(a,n)},off=(e,n)=>{const a=normalizeEventName(e),o=t.get(a);if(!a||!o)return!1;const i=o.delete(n);return o.size||t.delete(a),pushTrace("off",{event:a,removed:i,listenerCount:o.size}),i},removeOnceTrigger=e=>{const t=String(e||"").trim();if(!t)return!1;const n=a.delete(t);return pushTrace("probe-trigger:remove",{id:t,removed:n}),n},addOnceTrigger=({id:e,regex:t,action:n}={})=>{const o=String(e||"").trim();return o&&t instanceof RegExp&&"function"==typeof n?(a.set(o,{regex:t,action:n}),pushTrace("probe-trigger:add",{id:o,regex:t.source}),()=>removeOnceTrigger(o)):()=>{}},fireText=(e,t={})=>{const n=String(e??"");pushTrace("fireText",{text:n,detail:t,triggerCount:a.size});const o=[];return[...a.entries()].forEach(([e,i])=>{i.regex.lastIndex=0;const s=i.regex.exec(n);s&&(a.delete(e),o.push(e),i.action({args:{raw:n,line:n,text:n,groups:s.groups||{},matches:[...s]},detail:t}))}),o};return{capabilities:Object.freeze({promptRender:!0,gmcpSnapshot:!0,debugToggle:!0,destroy:!0}),send(e=[],t={}){const n=Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0):"string"==typeof e&&e?[e]:[];return n.length?(i.push({commands:n,context:t}),pushTrace("send",{commands:n,context:t}),emit("OutboundCommandsEvent",{commands:n,context:t}),n):[]},sendGmcp(e=[],t={}){const n=Array.isArray(e)?e.filter(Boolean).map(e=>String(e)):null==e||""===e?[]:[String(e)];return n.length?(u.push(...n),pushTrace("sendGmcp",{requests:n,context:t}),emit("AdapterGmcpRequest",{requests:n,context:t}),n):[]},on,off,emit,notice(e,t={}){s.push({message:String(e),context:t}),pushTrace("notice",{message:String(e),context:t})},getCommandSeparator:()=>o,setSeparator:e=>(o=normalizeCommandSeparator(e),pushTrace("setSeparator",{separator:o}),o),addOnceTrigger,fireText,now:()=>"function"==typeof e.now?e.now():nowMs(),setTimeout:(e,t)=>setTimeout(e,t),clearTimeout(e){clearTimeout(e)},renderPrompt(e,t={}){const n=String(e??""),a={prompt:n,context:t};return d.push(a),pushTrace("renderPrompt",{promptLength:n.length,source:t.source||"",hasLine:Boolean(t.line)}),emit("PromptRendered",a),n},getVariable:e=>n.get(e),setVariable:(e,t)=>(n.set(e,t),t),emitLocal(e,t){const n=String(e||"").trim();if(!n)return!1;const a={event:n,payload:t};return l.push(a),pushTrace("emit:local",a),emit(n,t),!0},raiseToEventStream(e,t){const n=String(e||"").trim();if(!n)return!1;const a={topic:n,payload:t};return c.push(a),pushTrace("emit:eventstream",a),!0},destroy(){t.clear(),a.clear()},getSentBatches:()=>i,getNotices:()=>s,getLocalEvents:()=>l,getEventStreamEvents:()=>c,getGmcpRequests:()=>u,getRenderedPrompts:()=>d,getGMCP:()=>e.gmcp||{},setDebugEnabled(e){p=Boolean(e),pushTrace("debug",{enabled:p})},isDebugEnabled:()=>p,debugInfo:()=>({debugEnabled:p,separator:o,recentTrace:[...g],sentBatchCount:i.length,gmcpRequests:[...u],renderedPromptCount:d.length})}},defineStringPrototypeHelper=(e,t)=>"function"!=typeof String.prototype[e]&&(Object.defineProperty(String.prototype,e,{configurable:!0,writable:!0,value:t}),!0),installStringPrototypeHelpers=()=>({toProperCase:defineStringPrototypeHelper("toProperCase",function toProperCase(){return this.replace(/\w\S*/g,function formatWord(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})}),capitalize:defineStringPrototypeHelper("capitalize",function capitalize(){return this.charAt(0).toUpperCase()+this.slice(1)})}),U={list:["accentato","addiction","aeon","agoraphobia","airfisted","amnesia","anorexia","asphyxiating","asthma","betrayal","blackout","blindness","blistered","bloodfire","bound","breathless","brokenleftarm","brokenrightarm","brokenleftleg","brokenrightleg","bruisedribs","burning","cadmuscurse","calcifiedskull","calcifiedtorso","claustrophobia","clumsiness","coldfate","concussion","condemned","conflagration","confusion","constricted","convergence","corruption","crackedribs","cremated","crescendo","crushedthroat","daeggerimpale","damagedhead","damagedleftarm","damagedleftleg","damagedrightarm","damagedrightleg","darkshade","dazed","dazzled","deadening","deafness","death","deathsickness","deepsleep","degenerate","dehydrated","dementia","demonstain","depression","deteriorate","diminished","disloyalty","disrupted","dissonance","dizziness","earworm","empoweredmannaz","empoweredloshre","enlightenment","enmesh","ensorcelled","entangled","epilepsy","fear","flamefisted","flushings","fratricide","frostbite","frozen","fulminated","generosity","grievouswounds","guilt","hamstrung","haemophilia","hallucinations","hatred","healthleech","heartseed","hecatecurse","hellsight","hindered","homunculusmercury","horror","hypersomnia","hypochondria","hypothermia","icebound","icefisted","impaled","impatience","indifference","inquisition","insomnia","internalbleeding","isolation","itching","justice","kaisurge","kkractlebrand","laceratedthroat","lapsingconsciousness","latched","lethargy","lightbind","loneliness","lovers","lovestruck","lullaby","manaleech","masochism","mildtrauma","mangledleftarm","mangledleftleg","mangledrightarm","mangledrightleg","mangledhead","mindclamp","mindravaged","muddled","mycalium","nausea","numbedleftarm","numbedrightarm","pacified","palpatarfeed","paralysis","paranoia","parasite","peace","penitence","petrified","phlogisticated","pinshot","pressure","prone","pyramides","pyre","rebbies","recklessness","reeling","retribution","revealed","sandfever","scalded","scrambledbrains","scytherus","selarnia","sensitivity","serioustrauma","shadowmadness","shivering","shyness","silenced","silver","skullfractures","slashedthroat","sleeping","slickness","slimeobscure","snared","solarburn","speechless","spiritburn","stridulating","stun","stupidity","stuttering","succumbed","temperedcholeric","temperedmelancholic","temperedphlegmatic","temperedsanguine","tenderskin","tension","timeflux","timeloop","tonguetied","torntendons","transfixation","trueblind","unweavingbody","unweavingmind","unweavingspirit","vertigo","vinewreathed","vitiated","vitrified","voidfisted","voyria","waterbonds","weakenedmind","weariness","webbed","woeconstrained","whisperingmadness","wristfractures","unconsciousness","harmonic","bop","spiritwrack","bedevil","loki","moon","evileye","dragoncurse","swiftcurse"],prios:{aeon:4,concussion:4,crushedthroat:4,paralysis:4,peace:4,sleeping:5,grievouswounds:5,latched:5,dazzled:5,unweavingbody:5,unweavingmind:5,unweavingspirit:5,weariness:5,prone:5,timeloop:5,fulminated:5,spiritburn:6,heartseed:6,guilt:6,tenderskin:6,pyramides:6,parasite:6,hypochondria:6,pacified:6,depression:6,confusion:6,mindravaged:6,retribution:6,shadowmadness:6,whisperingmadness:6,hellsight:6,anorexia:7,scalded:7,mycalium:7,frostbite:7,flushings:7,rebbies:7,sandfever:7,asthma:7,healthleech:7,impatience:8,itching:8,fratricide:8,scytherus:8,clumsiness:8,kkractlebrand:8,damagedleftleg:8,darkshade:8,slickness:8,recklessness:8,dementia:8,icebound:8,bound:9,daeggerimpale:9,entangled:9,sensitivity:9,transfixation:9,webbed:9,tonguetied:9,haemophilia:9,lethargy:9,manaleech:9,dissonance:9,pyre:9,skullfractures:10,damagedrightleg:10,hypersomnia:10,earworm:10,crescendo:10,diminished:10,torntendons:11,brokenleftleg:11,brokenrightleg:11,hallucinations:11,calcifiedskull:12,calcifiedtorso:12,mangledleftleg:12,mangledrightleg:12,disrupted:12,mangledhead:12,voyria:12,crackedribs:12,hypothermia:13,impaled:13,brokenleftarm:13,brokenrightarm:13,indifference:13,addiction:13,nausea:13,deadening:13,frozen:13,shivering:13,mildtrauma:13,internalbleeding:13,stupidity:14,wristfractures:14,damagedleftarm:14,disloyalty:14,tension:15,damagedhead:15,dazed:15,burning:15,lovers:16,pressure:16,damagedrightarm:16,temperedcholeric:16,temperedmelancholic:16,temperedphlegmatic:16,temperedsanguine:16,mangledleftarm:17,mangledrightarm:17,agoraphobia:18,claustrophobia:18,generosity:18,justice:18,loneliness:18,vertigo:18,paranoia:19,serioustrauma:20,epilepsy:20,laceratedthroat:22,slashedthroat:22,stuttering:22,selarnia:23,fear:23,masochism:23,dizziness:25,shyness:25,stridulating:25,horror:26,bleeding:30,amnesia:30,blackout:30,insomnia:30,deafness:30,blindness:30,harmonic:100,bop:100,spiritwrack:100,bedevil:100,loki:100,moon:100,evileye:100,dragoncurse:100,swiftcurse:100},types:{countable:{pressure:{min:0,max:5},crescendo:{min:0,max:5},unweavingbody:{min:0,max:5},unweavingspirit:{min:0,max:5},unweavingmind:{min:0,max:5},burning:{min:0,max:5},horror:{min:0,max:5},pyre:{min:0,max:3},temperedcholeric:{min:0,max:8},temperedmelancholic:{min:0,max:8},temperedphlegmatic:{min:0,max:8},temperedsanguine:{min:0,max:8},torntendons:{min:0,max:6},crackedribs:{min:0,max:6},skullfractures:{min:0,max:6},wristfractures:{min:0,max:6}},nonServerside:{accentato:0,airfisted:0,asphyxiating:0,blistered:0,bloodfire:0,bruisedribs:0,cadmuscurse:0,coldfate:0,condemned:0,conflagration:0,constricted:0,convergence:0,corruption:0,cremated:0,death:0,deathsickness:0,deepsleep:0,degenerate:0,dehydrated:0,demonstain:0,deteriorate:0,empoweredloshre:0,empoweredmannaz:0,enlightenment:0,enmesh:0,ensorcelled:0,flamefisted:0,hamstrung:0,hatred:0,hecatecurse:0,hindered:0,homunculusmercury:0,icefisted:0,inquisition:0,isolation:0,kaisurge:0,lightbind:0,lullaby:0,mindclamp:0,muddled:0,numbedleftarm:0,numbedrightarm:0,palpatarfeed:0,petrified:0,phlogisticated:0,pinshot:0,revealed:0,scrambledbrains:0,silenced:0,silver:0,slimeobscure:0,solarburn:0,stun:0,timeflux:0,trueblind:0,vinewreathed:0,vitiated:0,vitrified:0,voidfisted:0,waterbonds:0,weakenedmind:0,unconsciousness:0},timed:{accentato:{length:20},aeon:{length:16},airfisted:{length:16},betrayal:{length:15},blackout:{length:20},blistered:{length:20},breathless:{length:3},bruisedribs:{length:30},cadmuscurse:{length:20},condemned:{length:20},constricted:{length:30},corruption:{length:45},dazzled:{length:60},dehydrated:{length:60},demonstain:{length:120},empoweredloshre:{length:12},empoweredmannaz:{length:20},enmesh:{length:5},ensorcelled:{length:20},flamefisted:{length:30},hamstrung:{length:9},heartseed:{length:11},hecatecurse:{length:16},icefisted:{length:30},inquisition:{length:30},lightbind:{length:22},lovestruck:{length:5},muddled:{length:12},numbedleftarm:{length:7.5},numbedrightarm:{length:7.5},palpatarfeed:{length:20},phlogisticated:{length:45},pinshot:{length:18},reeling:{length:20},revealed:{length:60},scalded:{length:20},scrambledbrains:{length:60},silver:{length:180},slimeobscure:{length:60},solarburn:{length:5},snared:{length:20},speechless:{length:300},stridulating:{length:15},stun:{length:3},succumbed:{length:30},timeflux:{length:60},trueblind:{length:6},unconsciousness:{length:10},vinewreathed:{length:30},vitrified:{length:45},voidfisted:{length:5},waterbonds:{length:30},weakenedmind:{length:60},woeconstrained:{length:30}},unknown:{moon:["stupidity","confusion","epilepsy","masochism","hypersomnia","hallucinations"],loki:["stupidity","clumsiness","recklessness","asthma","shyness","darkshade","paralysis","brokenleftarm","brokenrightarm","brokenleftleg","brokenrightleg","sensitivity","disloyalty","nausea","weariness","dizziness","anorexia","voyria","haemophilia","addiction","selarnia","slickness","scytherus"],evileye:["confusion","dizziness"],dragoncurse:["recklessness","clumsiness","epilepsy","dizziness","pacified","nausea","addiction","anorexia","generosity","disloyalty","sensitivity","vertigo","paranoia","stupidity","hypochondria","lethargy","shivering","frozen","impatience","paralysis","asthma","agoraphobia"],harmonic:["stupidity","recklessness"],bop:["stupidity","recklessness"],swiftcurse:["stupidity","clumsiness","recklessness","asthma","paralysis","deafness","sensitivity","nausea","weariness","dizziness","anorexia","voyria","haemophilia","addiction","impatience","claustrophobia","vertigo","agoraphobia","masochism","epilepsy","manaleech","pacified","dementia","healthleech"],bedevil:["stupidity","recklessness"]},uncurable:{bloodfire:!0,cadmuscurse:!0,conflagration:!0,death:!0,deathsickness:!0,deepsleep:!0,enlightenment:!0,isolation:!0,lullaby:!0,mindclamp:!0,palpatarfeed:!0,penitence:!0,scalded:!0,stun:!0,weakenedmind:!0}}},V=((e=>{const t=new Set(e.list),n={};for(const[a,o]of Object.entries(e.prios))n[o]||(n[o]=[]),n[o].push(a);Object.freeze({affSet:t,prioArrays:Object.freeze(n)})})(U),{herb:{length:1.6,aff_modifiers:{homunculusmercury:{multiplier:1,offset:.5}}},focus:{length:2.5,aff_modifiers:{weakenedmind:{multiplier:2,offset:.5},whisperingmadness:{multiplier:1.6,offset:0}}},sip:{length:4.5,aff_modifiers:{skullfractures:{multiplier:1,offset:1}}},moss:{length:6},tree:{length:15,aff_modifiers:{slimeobscure:{multiplier:1,offset:10}}},equilibrium:{length:20,aff_modifiers:{confusion:{multiplier:1.5,offset:0}}},balance:{length:20,aff_modifiers:{lethargy:{multiplier:1.25,offset:0}}},salve:{length:4,aff_modifiers:{timeflux:{multiplier:1.5,offset:0}}},immunity:{length:10},rebounding:{length:9},smoke:{length:1.5},dragonbreath:{length:1.5},deafness:{length:3},deaf:{length:6},blind:{length:6},speed:{length:6},wake:{length:20},sileris:{length:8},free:{length:0},voice:{length:2.5},tremolo:{length:6},homunculus:{length:12},fitness:{length:10},bloodboil:{length:10},dragonheal:{length:20},rage:{length:10},salt:{length:10},shrugging:{length:10},alleviate:{length:10},slough:{length:10},fool:{length:40},writhe:{length:6},impalewrithe:{length:4},entity:{length:4},word:{length:5},anathema:{length:5},systemOutput:{length:1}}),H=["itching","paralysis","fear","brokenrightarm","brokenleftarm","brokenrightleg","brokenleftleg","lapsingconsciousness","aeon","lovers","confusion","epilepsy","pacified","blackout","dazed","justice","slashedthroat","hellsight","peace","dazzled","shyness","dizziness","slickness","asthma","nausea","selarnia","weariness","scytherus","fratricide","haemophilia","clumsiness","hallucinations","healthleech","dementia","recklessness","anorexia","masochism","impatience","stupidity","generosity","addiction","deadening","manaleech","stuttering","paranoia","agoraphobia","loneliness","claustrophobia","vertigo","hypersomnia","shivering","frozen","burning","sensitivity","hypochondria","lethargy","disloyalty","darkshade","voyria","dissonance","phlogisticated","silver","spiritburn","tenderskin","guilt","skullfractures","wristfractures","crackedribs","torntendons","indifference","retribution","shadowmadness","parasite","depression","timeloop","crushedthroat","tension","unweavingspirit","grievouswounds","pyramides","flushings","rebbies","mycalium","sandfever","crescendo","fulminated","frostbite"],W={ferrum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat ferrum",order:["darkshade","haemophilia","lethargy","addiction","scytherus","nausea","flushings","unweavingbody"],prio:0},magnesium:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat magnesium",order:["paralysis","slickness","pyramides"],prio:0},aurum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat aurum",order:["clumsiness","healthleech","sensitivity","weariness","asthma","rebbies","parasite"],prio:0},calamine:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat calamine",order:["deafness"],delay:2.5,prio:0},argentum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat argentum",order:["fratricide","masochism","loneliness","vertigo","recklessness","agoraphobia","guilt","whisperingmadness","spiritburn","tenderskin","hypochondria"],prio:0},cuprum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat cuprum",order:["pacified","peace","lovers","justice","generosity","indifference","retribution","pyre","timeloop","stridulating","diminished"],prio:0},antimony:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat antimony",order:["temperedcholeric","temperedmelancholic","temperedphlegmatic","temperedsanguine"],prio:0},arsenic:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat arsenic",prio:0},stannum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat stannum",order:["claustrophobia","paranoia","confusion","hypersomnia","hallucinations","dementia","crescendo"],prio:0},plumbum:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],order:["horror","stupidity","epilepsy","dizziness","shyness","impatience","dissonance","depression","sandfever","mycalium","shadowmadness","unweavingmind","fulminated"],command:"eat plumbum",prio:0},calcite:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],order:["pressure"],command:"eat calcite",prio:0},ginseng:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat ginseng",order:["darkshade","haemophilia","lethargy","addiction","scytherus","nausea","flushings","unweavingbody"],prio:0},bloodroot:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat bloodroot",order:["paralysis","slickness","pyramides"],prio:0},kelp:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat kelp",order:["clumsiness","healthleech","sensitivity","weariness","asthma","rebbies","parasite"],prio:0},hawthorn:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat hawthorn",order:["deafness"],delay:2.5,prio:0},lobelia:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat lobelia",order:["fratricide","masochism","loneliness","vertigo","recklessness","agoraphobia","guilt","whisperingmadness","spiritburn","tenderskin","hypochondria"],prio:0},bellwort:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat bellwort",order:["pacified","peace","lovers","justice","generosity","indifference","retribution","pyre","timeloop","stridulating","diminished"],prio:0},ginger:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat ginger",order:["temperedcholeric","temperedmelancholic","temperedphlegmatic","temperedsanguine"],prio:0},bayberry:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat bayberry",prio:0},ash:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat ash",order:["claustrophobia","paranoia","confusion","hypersomnia","hallucinations","dementia","crescendo"],prio:0},goldenseal:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],command:"eat goldenseal",order:["horror","stupidity","epilepsy","dizziness","shyness","impatience","dissonance","depression","sandfever","mycalium","shadowmadness","unweavingmind","fulminated"],prio:0},pear:{bals_used:["herb"],bals_req:["herb"],blocks:["death","anorexia","sleeping"],order:["pressure"],command:"eat pear",prio:0},smoke:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke cinnabar",order:["aeon","disloyalty","hellsight","manaleech","slickness","deadening","tension","unweavingspirit","earworm","dazed"],prio:0},cinnabar:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke cinnabar",order:["aeon","deadening","tension","unweavingspirit","earworm","dazed"],prio:0},malachite:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke malachite",prio:0},realgar:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke realgar",order:["disloyalty","hellsight","manaleech","slickness"],prio:0},elm:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke elm",order:["aeon","deadening","tension","unweavingspirit","earworm","dazed"],prio:0},skullcap:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke skullcap",prio:0},valerian:{bals_used:["smoke"],bals_req:["smoke"],blocks:["death","asthma","sleeping"],command:"smoke valerian",order:["disloyalty","hellsight","manaleech","slickness"],prio:0},caloric:{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply caloric",order:["frozen","shivering","frostbite"],prio:0},"epidermal to body":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply epidermal to body",order:["anorexia","itching"],prio:0},"epidermal to head":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply epidermal to head",order:["blindness","scalded","deafness","stuttering"],prio:0},"epidermal to ears":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply epidermal to ears",order:["deafness"],prio:0},"mending to head":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to head",order:["crushedthroat","dazzled"],prio:0},"mending to arms":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to arms",order:["brokenleftarm","brokenrightarm"],prio:0},"mending to legs":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to legs",order:["brokenleftleg","brokenrightleg"],prio:0},"mending to torso":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to torso",order:["burning"],prio:0},"mending to body":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply mending to body",order:["selarnia"],prio:0},"restoration to head":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply restoration to head",order:["mangledhead","damagedhead","calcifiedskull","concussion","tonguetied","slashedthroat","laceratedthroat"],delay:4,prio:0},"restoration to torso":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply restoration to torso",order:["hypothermia","heartseed","serioustrauma","mildtrauma","calcifiedtorso","internalbleeding"],delay:4,prio:0},"restoration to arms":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply restoration to arms",order:["mangledleftarm","mangledrightarm","damagedleftarm","damagedrightarm"],delay:4,prio:0},"restoration to legs":{bals_used:["salve"],bals_req:["salve"],blocks:["death","slickness","sleeping"],command:"apply restoration to legs",order:["mangledleftleg","mangledrightleg","damagedleftleg","damagedrightleg"],delay:4,prio:0},focus:{bals_req:["focus"],bals_used:["focus"],blocks:["death","impatience","sleeping"],command:"focus",order:["stupidity","epilepsy","dizziness","shyness","claustrophobia","paranoia","confusion","hallucinations","dementia","pacified","peace","lovers","generosity","masochism","loneliness","vertigo","recklessness","agoraphobia","anorexia","stuttering"],prio:0},"health to head":{bals_req:["sip"],bals_used:["sip"],command:"apply health to head",order:["skullfractures"],prio:0},"health to torso":{bals_req:["sip"],bals_used:["sip"],command:"apply health to torso",order:["crackedribs","grievouswounds"],prio:0},"health to arms":{bals_req:["sip"],bals_used:["sip"],command:"apply health to arms",order:["wristfractures"],prio:0},"health to legs":{bals_req:["sip"],bals_used:["sip"],command:"apply health to legs",order:["torntendons","latched","kkractlebrand"],prio:0},concentrate:{blocks:["death","sleeping","confusion"],command:"concentrate",order:["disrupted"],prio:0},immunity:{bals_req:["immunity"],bals_used:["immunity"],blocks:["death","sleeping","anorexia"],command:"sip immunity",order:["voyria"],prio:0},stand:{bals_req:["balance","equilibrium"],blocks:["death","sleeping","paralysis","brokenrightleg","brokenleftleg","damagedleftleg","damagedrightleg","mangledrightleg","mangledleftleg","entangled","transfixation","impaled","webbed","bound"],command:"stand",order:["prone"],prio:0},tree:{bals_used:["tree"],bals_req:["tree"],blocks:["death","sleeping","paralysis",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound"],command:"touch tree",order:H,prio:0},health:{bals_req:["sip"],bals_used:["sip"],blocks:["death","sleeping","anorexia"],command:"sip health",prio:0},mana:{bals_req:["sip"],bals_used:["sip"],blocks:["death","sleeping","anorexia"],command:"sip mana",prio:0},potash:{bals_req:["moss"],bals_used:["moss"],blocks:["death","sleeping","anorexia"],command:"eat potash",prio:0},moss:{bals_req:["moss"],bals_used:["moss"],blocks:["death","sleeping","anorexia"],command:"eat moss",prio:0},fitness:{bals_req:["equilibrium","balance","fitness"],bals_used:["balance","fitness"],blocks:["death","weariness","sleeping"],skills:["Monk","Shikudo","Runewarden"],command:"fitness",order:["asthma"],prio:0},bloodboil:{bals_req:["equilibrium","balance","bloodboil"],bals_used:["equilibrium","bloodboil"],blocks:["death","haemophilia","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound"],skills:["Magi"],command:"cast bloodboil",order:H,prio:0},restore:{bals_req:["balance","equilibrium"],bals_used:["equilibrium"],command:"restore",order:["brokenleftarm","brokenrightarm","brokenleftleg","brokenrightleg","skullfractures","torntendons","wristfractures","crackedribs"],prio:0},dragonflex:{bals_req:["balance"],bals_used:["balance"],command:"dragonflex",skills:["Dragon"],order:["webbed","entangled"],prio:0},dragonheal:{bals_req:["balance","equilibrium"],bals_used:["equilibrium"],command:"dragonheal",skills:["Dragon"],blocks:["death","sleeping",["recklessness","weariness"]],order:H,prio:0},dwinnu:{bals_req:["voice"],bals_used:["voice"],command:"chant dwinnu",skills:["Bard"],order:["webbed","entangled"],prio:0},rage:{bals_req:["rage"],bals_used:["rage"],command:"rage",skills:["Runewarden"],order:["pacified","peace","lovers","generosity"],prio:95},"touch soul":{command:"touch soul",blocks:["death"],order:["amnesia"],prio:101},salt:{bals_req:["equilibrium","salt"],bals_used:["salt","equilibrium"],blocks:["death","stupidity","sleeping"],skills:["Alchemist"],command:"educe salt",order:H,prio:0},siphon:{bals_req:["angel"],bals_used:["angel"],blocks:["death","sleeping"],skills:["Apostate","Priest"],command:"educe salt",order:H,prio:0},shrugging:{bals_req:["equilibrium","balance","shrugging"],bals_used:["shrugging"],blocks:["death","weariness","sleeping"],skills:["Serpent"],command:"shrugging",order:H,prio:0},slough:{bals_req:["equilibrium","balance","slough"],bals_used:["slough","balance"],blocks:["death","weariness","sleeping"],skills:["Fire Elemental Lord"],command:"slough impurities",order:H,prio:0},fool:{bals_req:["equilibrium","balance","fool"],bals_used:["fool","balance"],blocks:["death","prone","paralysis","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound"],skills:["Occultist"],command:"fling fool at me",order:H,prio:0},alleviate:{bals_req:["equilibrium","balance","alleviate"],bals_used:["alleviate","balance"],blocks:["death","paralysis","sleeping"],skills:["Blademaster"],command:"alleviate",order:H,prio:0}},normalizeCureCommand=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],G=Object.freeze(Object.fromEntries(Object.entries(W).map(([e,t])=>[e,Object.freeze({...t,command:Object.freeze(normalizeCureCommand(t.command))})]))),Y=Object.freeze(Object.entries(G).reduce((e,[t,n])=>((Array.isArray(n.order)?n.order:[]).forEach(n=>{e[n]||(e[n]=[]),e[n].push(t)}),e),{})),K={acrobatics:{command:"acrobatics on",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},airpocket:{command:["outr calcite","eat calcite"],bals_req:["free"],bals_used:["free"],blocks:["death","sleeping","anorexia"],serverside:!0,preempt:!0},alertness:{static:!0,command:"alertness on",bals_req:["equilibrium"],bals_used:["equilibrium"],serverside:!0},antiforce:{command:"intone gaiartha",bals_req:["balance","equilibrium"],bals_used:["word"],blocks:["death","sleeping","prone"],skills:["Depthswalker"],serverside:!0},aria:{command:"sing aria at me",bals_req:["voice"],bals_used:["voice"],blocks:["death","sleeping"],skills:["Bard"]},arctar:{command:"command orb",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],skills:["Occultist"],serverside:!1,preempt:!0},arrowcatching:{command:"arrowcatch on",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},astronomy:{static:!0,command:"astronomy empower me",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Alchemist"],serverside:!0},balancing:{command:"balancing on",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},belltattoo:{command:"touch bell",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["prone","death","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound","icefisted"],serverside:!0,preempt:!0},blindness:{command:["outr arsenic","eat arsenic"],bals_req:["herb"],bals_used:["herb"],blocks:["death","sleeping","anorexia"],serverside:!0},blocking:{command:"block d",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping","prone"],serverside:!1,preempt:!0},bloodshield:{command:"activate bloodshield",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],serverside:!0,preempt:!0},bodyaugment:{command:"intone mainaas",bals_req:["balance","equilibrium"],bals_used:["word"],blocks:["death","sleeping","prone"],skills:["Depthswalker"],bals_used:["word"],serverside:!0},bodyblock:{static:!0,command:"bdb",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Monk"],serverside:!0},boostedregeneration:{command:"boost regeneration",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo"],serverside:!0,preempt:!0},bulk:{command:"mutate bulk",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},cloak:{command:"touch cloak",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["prone","death","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound","icefisted"],serverside:!0},chargeshield:{static:!0,command:"cast chargeshield at me",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Magi"],serverside:!0},coldresist:{command:"activate cold resistance",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!0},compoundmask:{command:["wear mask","secure mask"],bals_req:["free"],bals_used:["free"],skills:["Alchemist"],serverside:!1},consciousness:{command:"consciousness on",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo","Blademaster"],serverside:!0,preempt:!0},constitution:{static:!0,command:"constitution",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Monk","Shikudo","Blademaster"],serverside:!0},curseward:{static:!0,command:"curseward",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],serverside:!0},deafness:{command:["outr calamine","eat calamine"],bals_req:["herb","deafness"],bals_used:["herb","deafness"],blocks:["death","sleeping","anorexia"],serverside:!0},deathsight:{static:!0,command:"deathsight",bals_req:["balance","equilibrium"],bals_used:["free"],serverside:!0,preempt:!0},deflect:{command:"deflect",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","prone","sleeping"],skills:["Runewarden","Paladin","Infernal","Unnamable"],serverside:!0,preempt:!0},density:{command:"wear shackle",bals_req:["salve"],bals_used:["salve"],blocks:["death","slickness","sleeping"],serverside:!0},devilmark:{static:!0,command:"devilmark",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping"],skills:["Occultist"],serverside:!0},diamondskin:{static:!0,command:"cast diamondskin",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Magi"],serverside:!0},distortedaura:{static:!0,command:"distortaura",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping"],skills:["Occultist"],serverside:!0},dragonarmour:{static:!0,command:"dragonarmour",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping"],skills:["Dragon"],serverside:!0},dragonbreath:{command:"summon ice",bals_req:["balance","equilibrium","dragonbreath"],bals_used:["free","dragonbreath"],blocks:["death","prone","sleeping"],skills:["Dragon"],preempt:!0,serverside:!0},drunkensailor:{command:"drunkensailor",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},durability:{command:"intone tsuura",bals_req:["balance","equilibrium"],skills:["Depthswalker"],blocks:["death","sleeping","prone"],bals_used:["word"],serverside:!0},electricresist:{command:"activate electric resistance",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!0},endure:{command:"endure",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],skills:["free"],serverside:!0,preempt:!0},enhancedform:{command:["amalgamate enhancement","imbibe enhancement"],bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],skills:["Alchemist"],serverside:!1,preempt:!0},evadeblock:{command:"evb",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Monk"],serverside:!0},eyes:{command:"mutate eyes",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},fireresist:{command:"activate fire resistance",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!0},fangbarrier:{command:"apply quicksilver",bals_req:["salve","sileris"],bals_used:["salve","sileris"],blocks:["death","slickness","paralysis","sleeping"],serverside:!0},fireshroud:{command:"ignite shroud",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","slickness","paralysis","sleeping"],serverside:!0,skills:["Fire Elemental Lord"]},fury:{command:"fury on",bals_req:["balance"],bals_used:["equilibrium"],skills:["Runewarden","Unnamable"],serverside:!0},flying:{command:"fly",bals_req:["balance, equilibrium"],bals_used:["balance"],blocks:["prone","death","sleeping","entangled","transfixation","impaled","webbed","bound"],serverside:!1,clientOnly:!0},ghost:{static:!0,command:"conjure ghost",bals_req:["equilibrium"],bals_used:["equilibrium"],skills:["Serpent"],serverside:!0},gripping:{command:"grip",bals_req:["balance","equilibrium"],bals_used:["free"],skills:["Runewarden","Paladin","Infernal","Unnamable","Shikudo","Bard","Blademaster","Jester","Shaman"],serverside:!0,preempt:!0},groundwatch:{command:"groundwatch on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},"guarding right leg":{command:"guard right leg",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding left leg":{command:"guard left leg",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding right leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding right arm":{command:"guard right arm",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right leg","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding left arm":{command:"guard left arm",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding right leg","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding head":{command:"guard head",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding right leg","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"guarding torso":{command:"guard torso",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Monk"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding right leg","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},heartsfury:{command:"heartsfury",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},heldbreath:{command:"hold breath",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","asthma","sleeping"],preempt:!0,serverside:!0},hiding:{command:"hide",bals_req:["equilibrium","balance"],bals_used:["balance"],skills:["Serpent"],serverside:!0},hypersight:{command:"hypersight on",bals_req:["balance"],bals_used:["equilibrium"],serverside:!0},immunity:{command:"immunity",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Monk","Shikudo","Blademaster"],serverside:!0},insomnia:{command:"insomnia",bals_req:["free"],bals_used:["free"],blocks:["death","hypersomnia","sleeping"],serverside:!0,preempt:!0},insulation:{command:"apply caloric",bals_req:["salve"],bals_used:["salve"],blocks:["death","sleeping","slickness","hypothermia"],serverside:!0},insufflate:{command:["get phial from pack","amalgamate insufflate potency 4 stability 1","imbibe insufflate"],bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Alchemist"],preempt:!0,serverside:!1},ironform:{static:!0,command:["get phial from pack","amalgamate petrifying potency 4 stability 1","imbibe petrifying"],bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Alchemist"],preempt:!0,serverside:!1},joints:{command:"mutate joints",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},kaiboost:{command:"kai boost",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo"],preempt:!0,serverside:!0},kaitrance:{command:"kai trance",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo"],serverside:!0,preempt:!0},kola:{command:["outr quartz","eat quartz"],bals_req:["free"],bals_used:["free"],blocks:["death","sleeping","anorexia"],serverside:!0,preempt:!0},lay:{command:"sing lay",bals_req:["voice"],bals_used:["voice"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},levitating:{command:"sip levitation",bals_req:["free"],bals_used:["free"],blocks:["death","anorexia","sleeping"],serverside:!0,preempt:!0},lifevision:{static:!0,command:"lifevision",bals_req:["equilibrium"],bals_used:["equilibrium"],serverside:!0},lipreading:{static:!0,command:"lipread",bals_req:["equilibrium"],bals_used:["equilibrium"],skills:["Serpent"],serverside:!0},locketdeath:{command:"solicit locket for immortality",bals_req:["free"],bals_used:["free"],serverside:!1},magicresist:{command:"activate magic resistance",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!0},blademastery:{command:"mastery on",bals_req:["balance","equilibrium"],bals_used:["free"],skills:["Runewarden","Unnamable"],preempt:!0,serverside:!0},meditate:{command:"meditate",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping","impatience"],preempt:!1,serverside:!1},mercury:{static:!0,command:"educe mercury",bals_req:["balance"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Alchemist"],serverside:!0},metabolise:{command:"metabolise paralysis",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],serverside:!1,preempt:!1},metawake:{command:"metawake on",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping","lullaby"],serverside:!0,preempt:!0},mindcloak:{command:"mind cloak on",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],preempt:!0,skills:["Monk","Shikudo"],serverside:!0},mindnet:{command:"mindnet on",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Monk","Shikudo","Blademaster"],serverside:!0,preempt:!0},mindseye:{static:!0,command:"touch mindseye",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound","icefisted"],serverside:!0},morimbuul:{command:"ldeck draw morimbuul",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],serverside:!1,preempt:!1},mounted:{command:"",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping","stunned","prone","paralysis","entangled","transfixation","impaled","webbed","bound"],preempt:!0,serverside:!1,clientOnly:!0},mouths:{command:"mutate mouths",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},nightsight:{command:"nightsight",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},numbness:{command:"numb",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Monk","Shikudo"]},"parrying right leg":{command:"parry right leg",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","guarding right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"parrying left leg":{command:"parry left leg",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","guarding right leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"parrying right arm":{command:"parry right arm",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","guarding right leg","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"parrying left arm":{command:"parry left arm",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","guarding right leg","parrying right arm","parrying torso","parrying head","parrying left","parrying right","parrying centre"]},"parrying head":{command:"parry head",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","guarding right leg","parrying left","parrying right","parrying centre"]},"parrying torso":{command:"parry torso",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","guarding right leg","parrying head","parrying left","parrying right","parrying centre"]},"parrying left":{command:"trueparry left",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Bard"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","guarding right leg","parrying right","parrying centre"]},"parrying right":{command:"trueparry right",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Bard"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","guarding right leg","parrying centre"]},"parrying centre":{command:"trueparry centre",bals_req:["balance","equilibrium"],bals_used:["free"],preempt:!0,skills:["Bard"],serverside:!1,opps:["guarding left leg","guarding left arm","guarding right arm","guarding torso","guarding head","parrying right leg","parrying left leg","parrying left arm","parrying right arm","parrying torso","parrying head","parrying left","parrying right","guarding right leg"]},pinchblock:{command:"pnb",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping"],skills:["Monk"],serverside:!0},projectiles:{command:"projectiles on",bals_req:["free"],bals_used:["free"],skills:["Monk","Shikudo","Blademaster"],blocks:["death","sleeping","mounted"],preempt:!0,serverside:!0},poisonresist:{command:"sip venom",bals_req:["free"],bals_used:["free"],blocks:["death","anorexia","sleeping"],serverside:!0,preempt:!0},precision:{command:"intone trusad",bals_req:["balance","equilibrium"],blocks:["death","sleeping","prone"],skills:["Depthswalker"],bals_used:["word"],serverside:!0},prismatic:{command:"strum lyre",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping"],serverside:!1},rebounding:{command:"smoke malachite",bals_req:["smoke","rebounding"],bals_used:["smoke","rebounding"],blocks:["death","asthma","sleeping"],serverside:!0},reflections:{command:"point wand235913 at me",bals_req:["balance","equilibrium"],bals_used:["free"],blocks:["death","sleeping"],preempt:!0,serverside:!1},regeneration:{command:"regeneration on",bals_req:["free"],bals_used:["free"],skills:["Monk","Shikudo"],blocks:["death","sleeping"],serverside:!0,preempt:!0},resistance:{command:"resistance",bals_req:["free"],bals_used:["free"],skills:["Runewarden","Paladin","Infernal","Monk","Shikudo","Unnamable"],blocks:["death","sleeping"],serverside:!0,preempt:!0},scales:{static:!0,command:"scales",bals_req:["balance","equilibrium"],bals_used:["balance"],skills:["Serpent"],serverside:!0},secondsight:{static:!0,command:"secondsight",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Serpent"],serverside:!0},selfishness:{command:"selfishness",bals_req:["balance","equilibrium"],bals_used:["balance"],serverside:!0},shield:{command:"touch shield",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","prone","sleeping",["brokenleftarm","brokenrightarm"],["brokenleftarm","damagedrightarm"],["brokenleftarm","mangledrightarm"],["damagedleftarm","brokenrightarm"],["damagedleftarm","damagedrightarm"],["damagedleftarm","mangledrightarm"],["mangledleftarm","brokenrightarm"],["mangledleftarm","damagedrightarm"],["mangledleftarm","mangledrightarm"],"entangled","transfixation","impaled","webbed","bound","icefisted"],serverside:!0},shintrance:{command:"shin trance",bals_req:["free"],bals_used:["free"],skills:["Blademaster"],blocks:["death","sleeping"],serverside:!0,preempt:!0},shinclarity:{static:!0,command:"clarity",bals_req:["balance"],bals_used:["equilibrium"],skills:["Blademaster"],blocks:["death","sleeping"],serverside:!0},shinbinding:{static:!0,command:"shinbinding on",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Blademaster"],blocks:["death","sleeping"],serverside:!0},shipwarning:{command:"shipwarning on",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],serverside:!0},shroud:{static:!0,command:"shroud",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Occultist","Serpent"],serverside:!0},softfocusing:{command:"softfocus on",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],serverside:!0,preempt:!0},songbird:{command:"whistle for songbird",bals_req:["equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Bard"]},speed:{command:"sip speed",bals_req:["speed"],bals_used:["speed"],blocks:["death","anorexia","sleeping"],serverside:!0},splitmind:{command:"split mind",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Monk","Shikudo"],serverside:!0},skysight:{command:"manifest skysight",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping","stunned","prone","paralysis","entangled","transfixation","impaled","webbed","bound"],skills:["Air Elemental Lord"],serverside:!0},skywatch:{command:"skywatch on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},stonefist:{static:!0,command:"cast stonefist",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Magi"],serverside:!0},stoneskin:{static:!0,command:"cast stoneskin",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Magi"],serverside:!0},sulphur:{static:!0,command:"educe sulphur",bals_req:["balance"],bals_used:["equilibrium"],blocks:["death","sleeping"],skills:["Alchemist"],serverside:!0},tekurastance:{command:"tekurastance",bals_req:["free"],bals_used:["balance"],skills:["Monk","Shikudo"]},telesense:{command:"telesense on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},temperance:{command:"sip frost",bals_req:["free"],bals_used:["free"],blocks:["death","anorexia","sleeping"],serverside:!0,preempt:!0},tempest:{command:"manifest tempest",bals_req:["balance","equilibrium"],bals_used:["balance"],blocks:["death","sleeping","stunned","prone","paralysis","entangled","transfixation","impaled","webbed","bound"],skills:["Air Elemental Lord"],serverside:!0},mutatetentacles:{command:"mutate tentacles",bals_req:["anathema"],bals_used:["anathema"],blocks:["death","sleeping","prone"],skills:["Unnamable"],serverside:!0},thirdeye:{command:"thirdeye",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},tin:{static:!0,command:"educe tin",bals_req:["balance"],bals_used:["equilibrium"],blocks:["death","sleeping","prone"],skills:["Alchemist"],serverside:!0},tentacles:{command:"tentacles",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],blocks:["death","sleeping","prone"],skills:["Occultist"],serverside:!0},toughness:{command:"toughness",bals_req:["free"],bals_used:["free"],skills:["Monk","Shikudo","Blademaster"],serverside:!0,preempt:!0},treewatch:{command:"treewatch on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},tune:{command:"sing tune",bals_req:["voice"],bals_used:["voice"],blocks:["death","sleeping"],skills:["Bard"],serverside:!0},twoartsstance:{command:"twoartsstance",bals_req:["free"],bals_used:["free"],blocks:["death","sleeping"],skills:["Blademaster"]},vigilance:{command:"vigilance on",bals_req:["free"],bals_used:["free"],serverside:!0,preempt:!0},vitality:{command:"vitality on",bals_req:["balance","equilibrium"],bals_used:["equilibrium"],skills:["Monk","Shikudo"],serverside:!0},weathering:{command:"weathering on",bals_req:["free"],bals_used:["free"],skills:["Runewarden","Infernal","Paladin","Monk","Shikudo","Blademaster","Unnamable"],blocks:["death","sleeping"],serverside:!0,preempt:!0},weaving:{static:!0,command:"weaving on",bals_req:["balance","equilibrium"],bals_used:["balance"],skills:["Serpent"],serverside:!0}},normalizeDefCommand=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],normalizeDefList=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],normalizeDefPriority=(e,t)=>{const n=Number(e);return Number.isFinite(n)?n<0?0:n>26?26:n:0},Q=Object.freeze(Object.fromEntries(Object.entries(K).map(([e,t])=>{const n=!1!==t.serverside;return[e,Object.freeze({...t,command:Object.freeze(normalizeDefCommand(t.command)),bals_req:Object.freeze(normalizeDefList(t.bals_req)),bals_used:Object.freeze(normalizeDefList(t.bals_used)),skills:Object.freeze(normalizeDefList(t.skills)),opps:Object.freeze(normalizeDefList(t.opps)),blocks:Object.freeze(t.blocks?[...t.blocks]:[]),serverside:n,preempt:!0===t.preempt,static:!0===t.static,clientOnly:!0===t.clientOnly,defaultPriority:normalizeDefPriority(t.defaultPriority,n)})]}))),Z=Object.freeze(Object.keys(Q).reduce((e,t)=>(e[t]=Number(Q[t].defaultPriority),e),{})),buildDefBySkillIndex=()=>{const e=Object.entries(Q).reduce((e,[t,n])=>{const a=n.skills;return Array.isArray(a)&&a.forEach(n=>{e[n]||(e[n]=[]),e[n].push(t)}),e},{});return Object.freeze(Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Object.freeze([...t])])))},X=(buildDefBySkillIndex(),Object.freeze({CHAR_VITALS:"nexsys4.gmcp.char.vitals",CHAR_STATUS:"nexsys4.gmcp.char.status",CHAR_AFFLICTIONS_LIST:"nexsys4.gmcp.char.afflictions.list",CHAR_AFFLICTIONS_ADD:"nexsys4.gmcp.char.afflictions.add",CHAR_AFFLICTIONS_REMOVE:"nexsys4.gmcp.char.afflictions.remove",CHAR_DEFENCES_LIST:"nexsys4.gmcp.char.defences.list",CHAR_DEFENCES_ADD:"nexsys4.gmcp.char.defences.add",CHAR_DEFENCES_REMOVE:"nexsys4.gmcp.char.defences.remove",IRE_RIFT_LIST:"nexsys4.gmcp.ire.rift.list",IRE_RIFT_CHANGE:"nexsys4.gmcp.ire.rift.change",CHAR_ITEMS_LIST:"nexsys4.gmcp.char.items.list",CHAR_ITEMS_DELTA:"nexsys4.gmcp.char.items.delta",ROOM_INFO:"nexsys4.gmcp.room.info",TARGET_INFO:"nexsys4.gmcp.target.info"})),isRecord$3=e=>Boolean(e)&&"object"==typeof e&&!Array.isArray(e),normalizeLocation=e=>String(e??"inv").trim().toLowerCase()||"inv",mergeDefinedRecord=(...e)=>e.reduce((e,t)=>(Object.entries(isRecord$3(t)?t:{}).forEach(([t,n])=>{void 0!==n&&(e[t]=n)}),e),{}),mergeResourceStats=(e=[],t=[])=>{const n=new Map;return[...e,...t].forEach(e=>{const t=String(e?.key||"").trim().toLowerCase();t&&n.set(t,e)}),[...n.values()]},mergeBalancePatches=(e=[],t=[])=>[...Array.isArray(e)?e:[],...Array.isArray(t)?t:[]],mergeStatusPayload=(e={},t={})=>{const n=isRecord$3(e)?e:{},a=isRecord$3(t)?t:{};return{...n,...a,status:{...isRecord$3(n.status)?n.status:{},...isRecord$3(a.status)?a.status:{}}}},mergeVitalsPayload=(e={},t={})=>{const n=isRecord$3(e)?e:{},a=isRecord$3(t)?t:{},o=isRecord$3(n.vitals)?n.vitals:{},i=isRecord$3(a.vitals)?a.vitals:{};return{...n,...a,vitals:{...o,...i,kind:i.kind||o.kind,vitals:mergeDefinedRecord(o.vitals,i.vitals),balances:mergeDefinedRecord(o.balances,i.balances),balancePatches:mergeBalancePatches(o.balancePatches,i.balancePatches),resourceStats:mergeResourceStats(Array.isArray(o.resourceStats)?o.resourceStats:[],Array.isArray(i.resourceStats)?i.resourceStats:[])}}},mergeTargetPayload=(e={},t={})=>{const n=isRecord$3(e)?e:{},a=isRecord$3(t)?t:{};return{...n,...a,target:mergeDefinedRecord(n.target,a.target)}},J=new Map([[X.CHAR_STATUS,{keyFor:()=>X.CHAR_STATUS,merge:mergeStatusPayload}],[X.CHAR_VITALS,{keyFor:()=>X.CHAR_VITALS,merge:mergeVitalsPayload}],[X.CHAR_AFFLICTIONS_LIST,{keyFor:()=>X.CHAR_AFFLICTIONS_LIST,merge:(e,t)=>t}],[X.CHAR_DEFENCES_LIST,{keyFor:()=>X.CHAR_DEFENCES_LIST,merge:(e,t)=>t}],[X.CHAR_ITEMS_LIST,{keyFor:({payload:e}={})=>`${X.CHAR_ITEMS_LIST}:${normalizeLocation(e?.location)}`,merge:(e,t)=>t}],[X.IRE_RIFT_LIST,{keyFor:()=>X.IRE_RIFT_LIST,merge:(e,t)=>t}],[X.TARGET_INFO,{keyFor:()=>X.TARGET_INFO,merge:mergeTargetPayload}]]),ee=new Set([X.CHAR_AFFLICTIONS_ADD,X.CHAR_AFFLICTIONS_REMOVE,X.CHAR_DEFENCES_ADD,X.CHAR_DEFENCES_REMOVE,X.CHAR_ITEMS_DELTA,X.IRE_RIFT_CHANGE]),createGmcpBlockBuffer=({coalesce:e=!0}={})=>{const t=[],flush=()=>{if(!e){const e=[...t];return t.length=0,e}const n=new Map,a=[],o=[];return t.forEach(e=>{const t=J.get(e.topic);if(t){const a=t.keyFor(e),o=n.get(a);return void(o?n.set(a,{...o,payload:t.merge(o.payload,e.payload)}):n.set(a,e))}ee.has(e.topic)?o.push(e):a.push(e)}),t.length=0,[...n.values(),...a,...o]};return{enqueue:(e={})=>{const n=String(e.topic||"").trim();n&&t.push({topic:n,payload:Object.prototype.hasOwnProperty.call(e,"payload")?e.payload:null})},flush,size:()=>t.length}},createEventBus=({label:e="nexSys4.eventBus",debugEnabled:t=!1,traceLimit:n=200}={})=>{const a=new Map,o=new Set;let i=Boolean(t);const s=Math.max(1,Number(n||200)),l=[],pushTrace=(t,n={})=>{if(!i)return null;const a={at:Date.now(),type:t,detail:n};return l.push(a),l.length>s&&l.splice(0,l.length-s),console.log(`[${e}] ${t}`,n),a},on=(e,t)=>{const n=String(e||"").trim();if(!n||"function"!=typeof t)return()=>{};const o=a.get(n)||new Set;return o.add(t),a.set(n,o),pushTrace("on",{topic:n,listenerCount:o.size}),()=>off(n,t)},off=(e,t)=>{const n=String(e||"").trim(),o=a.get(n);if(!n||!o)return!1;const i=o.delete(t);return o.size||a.delete(n),pushTrace("off",{topic:n,removed:i,listenerCount:o.size}),i},onAny=e=>"function"!=typeof e?()=>{}:(o.add(e),pushTrace("onAny",{listenerCount:o.size}),()=>offAny(e)),offAny=e=>{const t=o.delete(e);return pushTrace("offAny",{removed:t,listenerCount:o.size}),t},emit=(e,t)=>{const n=String(e||"").trim();if(!n)return 0;const s=[...a.get(n)||[]],l=[...o];return i&&pushTrace("emit",{topic:n,listenerCount:s.length,anyListenerCount:l.length,payload:t}),s.forEach(e=>{try{e(t,n)}catch(a){console.error("nexSys4 event bus handler failed",{topic:n,error:a})}}),l.forEach(e=>{try{e(t,n)}catch(a){console.error("nexSys4 event bus global handler failed",{topic:n,error:a})}}),s.length+l.length};return{on,off,onAny,offAny,emit,clear:()=>{a.clear(),o.clear()},setDebugEnabled(e){i=Boolean(e)},debugInfo:()=>({label:e,debugEnabled:i,topics:[...a.keys()],anyListenerCount:o.size,recentTrace:[...l]})}},te=Object.freeze({RUNTIME_STARTED:"nexsys4.runtime.started",RUNTIME_STOPPED:"nexsys4.runtime.stopped",RAW_GMCP:"nexsys4.raw.gmcp",SYSTEM_VITALS_CHANGED:"nexsys4.system.vitals.changed",SYSTEM_HEALTH_CHANGED:"nexsys4.system.health.changed",SYSTEM_MANA_CHANGED:"nexsys4.system.mana.changed",SYSTEM_RAGE_CHANGED:"nexsys4.system.rage.changed",SYSTEM_BLEED_CHANGED:"nexsys4.system.bleed.changed",SYSTEM_STATUS_CHANGED:"nexsys4.system.status.changed",SYSTEM_CLASS_CHANGED:"nexsys4.system.class.changed",SYSTEM_TARGET_CHANGED:"nexsys4.system.target.changed",SYSTEM_ROOM_CHANGED:"nexsys4.system.room.changed",SYSTEM_ROOM_ITEMS_CHANGED:"nexsys4.system.room_items.changed",SYSTEM_RUNTIME_CHANGED:"nexsys4.system.runtime.changed",SYSTEM_PAUSE_CHANGED:"nexsys4.system.pause.changed",SYSTEM_PAUSED:"nexsys4.system.paused",SYSTEM_UNPAUSED:"nexsys4.system.unpaused",SYSTEM_LOADED:"nexsys4.system.loaded",SYSTEM_SETTINGS_CHANGED:"nexsys4.system.settings.changed",SYSTEM_BASELINE_CHANGED:"nexsys4.system.baseline.changed",SYSTEM_DEATH_DETECTED:"nexsys4.system.death.detected",SYSTEM_MOUNT_CHANGED:"nexsys4.system.mount.changed",SYSTEM_WIELDED_CHANGED:"nexsys4.system.wielded.changed",UI_CONFIG_CHANGED:"nexsys4.ui.config.changed",AFF_GOT:"nexsys4.aff.got",AFF_LOST:"nexsys4.aff.lost",AFF_STACK_CHANGED:"nexsys4.aff.stack.changed",AFF_PRIORITY_CHANGED:"nexsys4.aff.priority.changed",DEF_GOT:"nexsys4.def.got",DEF_LOST:"nexsys4.def.lost",DEF_PRIORITY_CHANGED:"nexsys4.def.priority.changed",BALANCE_GOT:"nexsys4.balance.got",BALANCE_LOST:"nexsys4.balance.lost",BALANCE_RESET:"nexsys4.balance.reset",BALANCE_DURATION_OBSERVED:"nexsys4.balance.duration.observed",BALANCE_TIMER_RESTARTED:"nexsys4.balance.timer.restarted",EQBAL_GOT:"nexsys4.eqbal.got",LIMB_HIT:"nexsys4.limb.hit",LIMB_RESET:"nexsys4.limb.reset",LIMB_STAGE_CHANGED:"nexsys4.limb.stage.changed",LIMB_DECAY:"nexsys4.limb.decay",CACHE_AMOUNT_CHANGED:"nexsys4.cache.amount.changed",CACHE_INVENTORY_LIST:"nexsys4.cache.inventory.list",CACHE_RIFT_LIST:"nexsys4.cache.rift.list",CACHE_PRECACHE_CHANGED:"nexsys4.cache.precache.changed",ITEM_ROOM_ADDED:"nexsys4.item.room.added",ITEM_ROOM_REMOVED:"nexsys4.item.room.removed",ITEM_ROOM_UPDATED:"nexsys4.item.room.updated",ITEM_ROOM_LIST:"nexsys4.item.room.list",ITEM_INV_ADDED:"nexsys4.item.inv.added",ITEM_INV_REMOVED:"nexsys4.item.inv.removed",ITEM_INV_UPDATED:"nexsys4.item.inv.updated",ITEM_INV_LIST:"nexsys4.item.inv.list",QUEUE_UPDATED:"nexsys4.queue.updated",QUEUE_FLUSHED:"nexsys4.queue.flushed",QUEUE_DEFERRED:"nexsys4.queue.deferred",QUEUE_CLEARED:"nexsys4.queue.cleared",QUEUE_SENT:"nexsys4.queue.sent",QUEUE_FIRED:"nexsys4.queue.fired",QUEUE_FIRED_ACK:"nexsys4.queue.fired.ack",SERVERSIDE_AFF_PRIORITY_SET:"nexsys4.serverside.aff.priority.set",SERVERSIDE_DEF_PRIORITY_SET:"nexsys4.serverside.def.priority.set",SERVERSIDE_DIRTY:"nexsys4.serverside.dirty",SERVERSIDE_EVALUATED:"nexsys4.serverside.evaluated",SERVERSIDE_RULE_CHANGED:"nexsys4.serverside.rule.changed",RULE_ADDED:"nexsys4.rule.added",RULE_REMOVED:"nexsys4.rule.removed",RULE_ENABLED:"nexsys4.rule.enabled",RULE_DISABLED:"nexsys4.rule.disabled",RULE_PACK_LOADED:"nexsys4.rule.pack.loaded",RULE_PACK_UNLOADED:"nexsys4.rule.pack.unloaded",RULE_ORDER_CHANGED:"nexsys4.rule.order.changed",RULE_ACTIVATED:"nexsys4.rule.activated",RULE_DEACTIVATED:"nexsys4.rule.deactivated"}),re=Object.freeze({IDLE:"IDLE",PROBING_SEPARATOR:"PROBING_SEPARATOR",BOOTING:"BOOTING",PROVISIONING_CURINGSET:"PROVISIONING_CURINGSET",AWAITING_SNAPSHOTS:"AWAITING_SNAPSHOTS",CAPTURING_SNAPSHOTS:"CAPTURING_SNAPSHOTS",RUNNING:"RUNNING",FAILED:"FAILED"}),isRuntimeReadyPhase=e=>e===re.RUNNING,ne=Object.freeze({OUTPUT_COMPLETE:"SystemOutputCompleteEvent",STARTUP_BEGIN:"CuringStartupBeginEvent",STARTUP_COMPLETE:"CuringStartupCompleteEvent",STARTUP_FINALIZED:"CuringStartupFinalizedEvent",CURINGSET_READY:"CuringSetReadyEvent"}),ae=Object.freeze(["IRE.Rift.Request","IRE.Time.Request","Char.Skills.Get","Char.Items.Inv"]),buildStartupSnapshotCommands=()=>[`echo SystemEvent ${ne.STARTUP_BEGIN}`,"curing on","curing status","curing priority list","curing queue list","curing predictions","curing priority defence list","def","score","date",`echo SystemEvent ${ne.STARTUP_COMPLETE}`],buildStartupSnapshotBurst=()=>({gmcpRequests:[...ae],commands:buildStartupSnapshotCommands()}),oe=Object.freeze(["status","affPriorities","defPriorities"]),normalizeTimeoutMs=(e,t=1e3)=>{const n=Number(e);return Number.isFinite(n)&&n>0?Math.floor(n):t},normalizeRetryCount=(e,t=0)=>{const n=Number(e);return Number.isFinite(n)&&n>=0?Math.floor(n):t},createStartupCoordinator=({adapter:e,systemModel:t,serverside:n,persistence:a,seedBaselineFromObservedStartup:o=()=>{},noticeCenter:i,buildPersistenceSnapshot:s,startupTimeoutMs:l=1e3,maxStartupRetries:c=0,publishStartupPhase:u=()=>{},publishLoaded:d=()=>{},releaseStartupPause:p=()=>!1,setRuntimePhase:m=(e,n={})=>{t.setRuntime({phase:e,...n})}})=>{let g=!1,h=0,b=null,y=null;const v=normalizeTimeoutMs(l),S=normalizeRetryCount(c),clearConvergenceTimer=()=>{b&&(e.clearTimeout(b),b=null)},getMissingRequiredTopics=()=>{if("function"==typeof n.getMissingStartupFlags)return n.getMissingStartupFlags(oe);const e=n.getStartupStatus();return oe.filter(t=>!e.flags?.[t])},formatMissingRequiredTopics=(e=[])=>e.length?` Missing required captures: ${e.join(", ")}.`:"",startConvergenceTimer=()=>{clearConvergenceTimer(),b=e.setTimeout(()=>{if(g)return;const e=getMissingRequiredTopics();retryOrFail(e.length?`Startup snapshots did not converge within ${v}ms.`:`Startup closing fence did not arrive within ${v}ms.`,{phase:"snapshot-timeout-retry",source:"startup-timeout",missingRequired:e})},v)},complete=(e="startup-check")=>{clearConvergenceTimer(),m(re.RUNNING,{startupFailureMessage:""}),o(),a.save(s()),u("startup-complete"),p({source:"startup-complete"}),d({source:"startup-complete",topic:te.SYSTEM_LOADED}),i.publish("output","startup complete",{source:e})},fail=(e,{source:t="startup-failed",missingRequired:n=[]}={})=>{clearConvergenceTimer(),g=!0;const a=`${e}${formatMissingRequiredTopics(n)}`;return m(re.FAILED,{paused:!0,startupFailureMessage:a}),u("startup-failed"),i.publish("output",a,{force:!0,source:t,title:"startup failed: ",fg:"#fee2e2",bg:"#450a0a",titleFg:"#ffffff",titleBg:"#7f1d1d"}),!1},retryOrFail=(e,{phase:t,source:n,missingRequired:a=[]}={})=>!g&&(h>=S?fail(`${e} Exhausted ${S} startup retr${1===S?"y":"ies"}.`,{source:n,missingRequired:a}):(h+=1,requestSnapshots(y,t||"snapshot-retry",{source:n,retry:h,missingRequired:a}),!1)),requestSnapshots=(t,n="snapshot-request",a={})=>{if(y="function"==typeof t?t:y,"function"!=typeof y)return[];const o={source:"startup-snapshots",phase:n,attempt:h+1,retryCount:h,...a},{gmcpRequests:i,commands:s}=buildStartupSnapshotBurst();m(re.AWAITING_SNAPSHOTS),u(n),e.sendGmcp(i,o);const l=y(s,o);return startConvergenceTimer(),l};return{reset:()=>{g=!1,h=0,clearConvergenceTimer(),n.resetStartupStatus?.(),m(re.IDLE,{startupFailureMessage:""})},fail,requestSnapshots,handleFenceBegin:()=>!g&&(m(re.CAPTURING_SNAPSHOTS),u("snapshot-begin"),!0),handleFenceComplete:(e="snapshot:complete:text")=>{if(g)return!1;u("snapshot-complete");const t=n.getStartupStatus();t.flags.queue||n.updateObservedQueue([]),t.flags.predictions||n.updateObservedPredictions({});const a=getMissingRequiredTopics();return a.length?retryOrFail("Startup closing fence arrived before required snapshots converged.",{phase:"snapshot-retry",source:e,missingRequired:a}):(g=!0,complete(e),!0)},dispose(){clearConvergenceTimer()},isResolved:()=>g}},ie="nexsys4-default",normalizeCommand=e=>String(e||"").trim().toLowerCase().replace(/\s+/g," "),isServersideCommand=e=>{const t=normalizeCommand(e);return t.startsWith("curing ")||t.startsWith("curingset ")},normalizeSetName=e=>String(e||"").trim().toLowerCase(),toNumberMaybe=e=>{if("number"==typeof e&&Number.isFinite(e))return e;const t=Number(e);return Number.isFinite(t)?t:e},normalizeBoolean=e=>{if("boolean"==typeof e)return e;const t=String(e||"").trim().toLowerCase();return!!["on","yes","true","activated","enabled"].includes(t)||!["off","no","false","disabled"].includes(t)&&Boolean(e)},normalizeStatusValue=(e,t)=>{switch(e){case"enabled":case"reporting":case"afflictions":case"defences":case"sipping":case"transmutation":case"focus":case"useVault":case"clot":case"fallback":case"kaidoTransmute":case"customAffPriority":case"customDefPriority":case"batch":case"insomnia":return normalizeBoolean(t);case"focusOverHerbs":{if("boolean"==typeof t)return t;const e=String(t||"").trim().toLowerCase();return!!["focus","first","yes","on","true"].includes(e)||!["herbs","second","no","off","false"].includes(e)&&Boolean(t)}case"tree":{if("custom"===t)return"custom";if("boolean"==typeof t)return t?"on":"off";const e=String(t||"").trim().toLowerCase();return["custom","on","off"].includes(e)?e:["yes","activated","enabled","true"].includes(e)?"on":["no","disabled","false"].includes(e)?"off":e||"off"}case"sipPriority":return"mana"===String(t||"").trim().toLowerCase()?"mana":"health";default:return toNumberMaybe(t)}},createServersideContext=({affModel:e,defModel:t,balanceModel:n,systemModel:a,trackables:o,now:i})=>{const s=a.getRoom().items||{};let l=null;const isTarget=e=>Array.isArray(e)?e.some(e=>isTarget(e)):"function"==typeof a.isTarget&&a.isTarget(e);return{haveAff:t=>e.haveAff(t),haveAffs:(t=[])=>e.haveAffs(t),haveAnAff:(t=[])=>e.haveAnAff(t),affCount:t=>Number(e.get?.(t)?.count||0),affElapsed:t=>e.elapsed(t),sortedActiveAffs:()=>(null===l&&(l="function"==typeof e.currentSorted?e.currentSorted():[]),l),haveDef:e=>t.haveDef(e),haveDefs:(e=[])=>e.every(e=>t.haveDef(e)),haveADef:(e=[])=>e.some(e=>t.haveDef(e)),haveBal:e=>n.have(e),haveBals:(e=[])=>e.every(e=>n.have(e)),haveABal:(e=[])=>e.some(e=>n.have(e)),balElapsed:e=>n.elapsed(e),suspendCuring:(e={})=>({...e&&"object"==typeof e?e:{},suspendCuring:!0}),trackableElapsed:e=>{const t=o[e];return t?.have?i()-t.since:Number.POSITIVE_INFINITY},roomHasItem:e=>Boolean(s[e]),isTarget,isClass:e=>a.isClass(e)}},buildCountablePriorityDefaults=e=>"function"!=typeof e.getCountablePriorityNames?{}:e.getCountablePriorityNames().reduce((e,t)=>(e[t]=0,e),{}),normalizeServersideAffPriority=e=>{const t=Number(e);return Number.isInteger(t)&&t>=1&&t<=26?t:0},isServersideAffPriorityNumber=e=>{const t=Number(e);return Number.isInteger(t)&&t>=1&&t<=26},canonicalAffPriority=e=>{const t=normalizeServersideAffPriority(e);return 26===t?0:t},buildBaselineAffPriorities=e=>({...e.list().reduce((t,n)=>(t[n]=normalizeServersideAffPriority(e.getPriority(n)),t),{}),...buildCountablePriorityDefaults(e)}),buildObservedAffPriorities=e=>({...e.list().reduce((e,t)=>(e[t]=0,e),{}),...buildCountablePriorityDefaults(e)}),buildBaselineDefPriorities=(e,t="")=>e.list().reduce((n,a)=>{const o=e.get(a);return!o?.serverside||o.static?n:e.isAvailableForClass(a,t)?(n[a]=e.getPriority(a),n):n},{}),buildObservedDefPriorities=(e,t="")=>e.list().reduce((n,a)=>e.get(a)?.serverside&&e.isAvailableForClass(a,t)?(n[a]=0,n):n,{}),buildBaselineCurePriorities=(e={})=>Object.entries(e).reduce((e,[t,n])=>(e[t]=Number(n.prio||0),e),{}),mergeWithResets=(e,t={})=>{const n={...e};return Object.entries(t).forEach(([t,a])=>{n[t]="RESET"!==a?a:e[t]}),n},createInitialServersideState=({baselineSettings:e,affModel:t,defModel:n,systemModel:a,cureTable:o})=>{const i=a?.getClass?.()||"",s=buildBaselineAffPriorities(t),l=buildBaselineDefPriorities(n,i),c=buildBaselineCurePriorities(o);return{baseline:{settings:{...e},affPriorities:s,defPriorities:l,curePriorities:c},sessionBaseline:{settings:{...e},affPriorities:{...s},defPriorities:{...l},curePriorities:{...c}},derived:{},desired:{},observed:{settings:{...e},affPriorities:buildObservedAffPriorities(t),defPriorities:buildObservedDefPriorities(n,i),curePriorities:buildBaselineCurePriorities(o),prioAff:null,manualQueue:[],predictions:{},prioritySet:""},pending:new Map,capture:{affPriorities:null,defPriorities:null,prioritySet:""},transient:{prioAff:null,manualQueue:[],predictions:{},staticDefRequests:{},fullPriorityReset:!1},diagnostics:{lastCommands:[],lastReasons:[],desyncCounter:0,recoveryCounter:0,commandRepeatCounter:0},curingsets:{sets:[],activeSet:"",priorSet:"",used:0,limit:0},startup:{flags:{status:!1,affPriorities:!1,defPriorities:!1,queue:!1,predictions:!1,curingsets:!1}},lastDiffCommands:[],rules:[],dirty:!0}},createCuringSetProvisioner=({adapter:e,serverside:t,dispatchCommands:n,setRuntimePhase:a=()=>{},publishStartupPhase:o=()=>{},options:i={}}={})=>{const s=`echo SystemEvent ${ne.CURINGSET_READY}`,l=Math.max(50,Number(i.curingSetProvisionTimeoutMs??i.startupTimeoutMs??1e3)),c=Math.max(1,Number(i.maxCuringSetProvisionAttempts??4));let u=!1,d=0,p=!1,m=null,g={onReady:()=>{},onAbort:()=>{}};const clearTimer=()=>{m&&(e?.clearTimeout?.(m),m=null)},settle=()=>{u=!1,clearTimer()},finishReady=()=>{const{onReady:e}=g;settle(),e({createdThisRun:p})},finishAbort=e=>{const{onAbort:t}=g;settle(),t(e)},sendProbe=(t,a)=>{clearTimer(),d+=1,n([...t,"curingset list",s],{source:"curingset-provision",reason:a,attempt:d}),m=e?.setTimeout?.(()=>{u&&finishAbort(`nexSys4 could not confirm its curing set within ${l}ms (no response from the game). Reload to retry.`)},l)},handleBarrier=()=>{if(!u)return;clearTimer();const e=t.getCuringSets?.()??{},n=(e.sets||[]).map(e=>normalizeSetName(e)),a=normalizeSetName(e.activeSet),o=Number(e.used||0),i=Number(e.limit||0),s=n.includes(ie);"nexsys4-default"!==a?d>=c?finishAbort(`nexSys4 could not secure its curing set after ${c} attempts. Reload to retry.`):s?sendProbe([`curingset switch ${ie}`],"switch"):i>0&&o>=i?finishAbort(`nexSys4 needs its own curing set but all ${i} slots are full. Delete a set or CURINGSET EXPAND (25cr), then reload.`):(p=!0,sendProbe([`curingset new ${ie}`,`curingset switch ${ie}`],"create")):finishReady()};return{start({onReady:e=()=>{},onAbort:t=()=>{}}={}){g={onReady:e,onAbort:t},u=!0,d=0,p=!1,a(re.PROVISIONING_CURINGSET),o("provision-curingset"),sendProbe([],"list")},handleBarrier,wasCreatedThisRun:()=>p,isActive:()=>u,dispose(){settle()}}},se=Object.freeze({STARTED:"nexSys.start(): startup initiated.",ALREADY_STARTED:"nexSys.start(): runtime is already started.",STARTUP_PENDING:"nexSys.start(): runtime is already started; startup is still in progress.",STARTUP_FAILED:"nexSys.start(): runtime startup failed. Check the console and in-game notices.",SEPARATOR_PROBE:"nexSys.start(): command separator unknown; sending config to auto-detect. Startup will resume on capture."}),le=Object.freeze(["config","more","more"]),createRuntimeStartupOrchestrator=({adapter:e,systemModel:t,persistenceApi:n,startup:a,curingSetProvisioner:o,noticeCenter:i,syncDebugMode:s,isStarted:l,markStarted:c,setRuntimePhase:u,publishStartupPhase:d,attachEventWiring:p,promptPresenter:m,publishRuntimeStarted:g,hydrateCacheFromAdapterGmcp:h,commandDispatcher:b})=>{let y=null;const continueStartup=()=>{c(),u(re.BOOTING,{startupFailureMessage:""}),d("init"),g(),p(),m.start(),h(),o.start({onReady:()=>{a.requestSnapshots(b.sendCommands)},onAbort:e=>{a.fail(e,{source:"curingset-provision"})}})};return{dispose(){y&&(y(),y=null),o?.dispose?.()},start(){if(l()){const e=t.getRuntime().phase;return e===re.FAILED?se.STARTUP_FAILED:e===re.RUNNING?se.ALREADY_STARTED:se.STARTUP_PENDING}if(y)return se.SEPARATOR_PROBE;t.setSettings({commandSeparator:void 0},{setBaseline:!0}),n.loadPersistence(),a.reset();const o=normalizeCommandSeparator(t.getSettings().commandSeparator),c=normalizeCommandSeparator(e.getCommandSeparator()),p=o||c;return s(),p?(t.getSettings().commandSeparator!==p&&t.setSettings({commandSeparator:p},{setBaseline:!0}),continueStartup(),se.STARTED):(u(re.PROBING_SEPARATOR),d("separator-probe"),i.publish("output","Command separator not configured. Sending config to auto-detect...",{source:"separator-probe"}),y=e.addOnceTrigger({id:"nexsys4-separator-probe",regex:/\bCommandSeparator\s+(?<sep>\S+)/,action:({args:n})=>{const a=normalizeCommandSeparator(String(n.groups?.sep||"").trim());a&&(y=null,e.setSeparator(a),t.setSettings({commandSeparator:a},{setBaseline:!0}),continueStartup())}}),le.forEach(t=>{e.send([t],{source:"separator-probe"})}),se.SEPARATOR_PROBE)}}},ce=["hp","maxhp","mp","maxmp","ep","maxep","wp","maxwp"],ue="nexsys4.parsed_gmcp_vitals",hasOwn$6=(e,t)=>Boolean(e)&&Object.prototype.hasOwnProperty.call(e,t),parseNumericVital=(e,t)=>{if(!hasOwn$6(e,t))return;const n=toNumber(e[t],NaN);return Number.isFinite(n)?n:void 0},parseResourceStat=e=>{const[t,n]=String(e).split(":");if(!t||void 0===n)return null;const a=t.trim().toLowerCase(),o=n.trim();if(!a)return null;const i=toNumber(o.endsWith("%")?o.slice(0,-1):o,NaN),s=toOptionalBooleanFromYesNo(o);return{key:a,value:Number.isFinite(i)?i:o,balanceState:Number.isFinite(i)?void 0:s}},toBalancePatches=(e={})=>Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>({id:e,have:t})),parseGmcpVitals=(e={})=>{const t=e&&"object"==typeof e&&!Array.isArray(e)?e:{},n=ce.reduce((e,n)=>({...e,[n]:parseNumericVital(t,n)}),{}),a={balance:toOptionalBooleanFromYesNo(t.bal),equilibrium:toOptionalBooleanFromYesNo(t.eq)};return{kind:ue,vitals:n,balances:a,balancePatches:toBalancePatches(a),resourceStats:(Array.isArray(t.charstats)?t.charstats:[]).map(parseResourceStat).filter(Boolean)}},toParsedGmcpVitals=(e={})=>"nexsys4.parsed_gmcp_vitals"!==e?.kind?parseGmcpVitals(e):{...e,balancePatches:Array.isArray(e.balancePatches)?e.balancePatches:toBalancePatches(e.balances||{})},hasOwn$5=(e,t)=>null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t),isRecord$2=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),readFirstDefined=(e,t=[])=>{for(const n of t)if(hasOwn$5(e,n)&&void 0!==e[n]&&null!==e[n])return e[n]},parseAffName=(e={})=>{if("string"==typeof e)return e.toLowerCase();if(Array.isArray(e)){const t=e[0];if("string"==typeof t)return t.toLowerCase();const n=t&&"object"==typeof t?t:{};return String(n.affliction||n.defence||n.name||n.aff||n.def||"").toLowerCase()}const t=e&&"object"==typeof e?e:{};return String(t.affliction||t.defence||t.name||t.aff||t.def||"").toLowerCase()},parseRoomItems=(e={})=>Array.isArray(e?.items)?e.items.reduce((e,t)=>{const n=String(t?.name||t?.item||"").trim();return n?(e[n]=(e[n]||0)+1,e):e},{}):e?.items&&"object"==typeof e.items?{...e.items}:{},normalizeItemLocation$2=(e={},t=e?.item||e)=>String(e?.location??t?.parentid??t?.location??"inv").toLowerCase(),normalizeInventoryDeltaName=e=>"string"==typeof e?e:e?.name||e?.item||"",createInventoryDelta=(e,t={})=>{const n=t?.item||t,a=normalizeItemLocation$2(t,n);return{location:a,inventoryDelta:{id:n?.id??t?.id,location:a,name:normalizeInventoryDeltaName(n),icon:n?.icon??null,attrib:n?.attrib??null,amount:n?.amount??n?.count??n?.qty??t?.amount??t?.count,delta:n?.delta??t?.delta,action:e.split(".").pop(),direction:e.endsWith("remove")?"remove":e.endsWith("add")?"add":void 0},dirtyReason:`gmcp:${e}`}},hasInventoryIdentity=(e={})=>void 0!==e.id&&null!==e.id&&""!==e.id||Boolean(String(e.name||"").trim()),normalizeTargetRecord=(e={})=>{if(!isRecord$2(e))return{};const t={},n=readFirstDefined(e,["id","ID"]),a=readFirstDefined(e,["Text","text","short_desc"]),o=readFirstDefined(e,["HP","hp","hpperc"]);return void 0!==n&&(t.id=n),void 0!==a&&(t.text=a),void 0!==o&&(t.hp=o),t},createGmcpApplier=({emit:e=()=>{}}={})=>{const translate=(e={})=>{const t=[],emitTranslated=(e,n)=>{t.push({topic:e,payload:n})},n=normalizeTag(e.tag||e.rawTag||e.gmcp_method),a=e.payload;switch(n){case"char.vitals":emitTranslated(X.CHAR_VITALS,{vitals:parseGmcpVitals(a||{})});break;case"char.status":emitTranslated(X.CHAR_STATUS,{status:a||{}});break;case"char.afflictions.list":emitTranslated(X.CHAR_AFFLICTIONS_LIST,{afflictions:Array.isArray(a)?a:[]});break;case"char.afflictions.add":{const e=parseAffName(a);e&&emitTranslated(X.CHAR_AFFLICTIONS_ADD,{name:e});break}case"char.afflictions.remove":{const e=parseAffName(a);e&&emitTranslated(X.CHAR_AFFLICTIONS_REMOVE,{name:e});break}case"char.defences.list":emitTranslated(X.CHAR_DEFENCES_LIST,{defences:Array.isArray(a)?a:[]});break;case"char.defences.add":{const e=parseAffName(a);e&&emitTranslated(X.CHAR_DEFENCES_ADD,{name:e});break}case"char.defences.remove":{const e=parseAffName(a);e&&emitTranslated(X.CHAR_DEFENCES_REMOVE,{name:e});break}case"ire.rift.list":emitTranslated(X.IRE_RIFT_LIST,{rift:a||{}});break;case"ire.rift.change":emitTranslated(X.IRE_RIFT_CHANGE,{change:a||{}});break;case"char.items.list":emitTranslated(X.CHAR_ITEMS_LIST,{location:normalizeItemLocation$2(a),items:Array.isArray(a?.items)?a.items:[]});break;case"char.items.add":case"char.items.remove":case"char.items.update":{const e=createInventoryDelta(n,a||{}),t=hasInventoryIdentity(e.inventoryDelta)?e.inventoryDelta:null;emitTranslated(X.CHAR_ITEMS_DELTA,{inventoryDelta:t,dirtyReason:e.dirtyReason});break}case"room.info":emitTranslated(X.ROOM_INFO,{room:a||{},roomItems:parseRoomItems(a||{})});break;case"ire.target.info":emitTranslated(X.TARGET_INFO,{target:normalizeTargetRecord(a||{})})}return t};return{translate,apply(t){translate(t).forEach(({topic:t,payload:n})=>{e(t,n)})}}},de=Object.freeze({inv:te.ITEM_INV_LIST,room:te.ITEM_ROOM_LIST}),pe=Object.freeze({inv:Object.freeze({add:te.ITEM_INV_ADDED,remove:te.ITEM_INV_REMOVED,update:te.ITEM_INV_UPDATED}),room:Object.freeze({add:te.ITEM_ROOM_ADDED,remove:te.ITEM_ROOM_REMOVED,update:te.ITEM_ROOM_UPDATED})}),normalizeItemLocation$1=e=>String(e||"").trim().toLowerCase()||"inv",createItemTopicNotifier=({publishPublic:e=()=>{}}={})=>{const notifyList=(t,n)=>{const a=de[normalizeItemLocation$1(t)];a&&e(a,{location:normalizeItemLocation$1(t),items:Array.isArray(n)?n:[]})},notifyDelta=t=>{const n=normalizeItemLocation$1(t.location),a=String(t.action||t.direction||"").trim().toLowerCase(),o=pe[n]?.[a];o&&e(o,t)};return{notify({topic:e,payload:t}={}){e!==X.CHAR_ITEMS_DELTA?e===X.CHAR_ITEMS_LIST&¬ifyList(t?.location,t?.items):t?.inventoryDelta&¬ifyDelta(t.inventoryDelta)}}},fallbackClone=(e,t=new WeakMap)=>{if(null==e)return e;if("object"!=typeof e)return e;if(t.has(e))return t.get(e);if(e instanceof Date)return new Date(e.getTime());if(Array.isArray(e)){const n=[];return t.set(e,n),e.forEach(e=>n.push(fallbackClone(e,t))),n}if(e instanceof Set){const n=new Set;return t.set(e,n),[...e].forEach(e=>n.add(fallbackClone(e,t))),n}if(e instanceof Map){const n=new Map;return t.set(e,n),[...e.entries()].forEach(([e,a])=>{n.set(fallbackClone(e,t),fallbackClone(a,t))}),n}const n={};return t.set(e,n),Object.entries(e).forEach(([e,a])=>{"function"!=typeof a&&(n[e]=fallbackClone(a,t))}),n},deepClone$1=e=>{if("function"==typeof structuredClone)try{return structuredClone(e)}catch{}try{return JSON.parse(JSON.stringify(e))}catch{return fallbackClone(e)}},deepMerge=(e,t)=>{const n=Array.isArray(e)?[...e]:{...e||{}};return Object.entries(t||{}).forEach(([e,t])=>{!t||"object"!=typeof t||Array.isArray(t)||!n[e]||"object"!=typeof n[e]||Array.isArray(n[e])?n[e]=t:n[e]=deepMerge(n[e],t)}),n},deepFreeze=e=>e&&"object"==typeof e?(Object.isFrozen(e)||(Object.freeze(e),Object.keys(e).forEach(t=>deepFreeze(e[t]))),e):e,createSnapshotCache=({getVersion:e=()=>0,buildSnapshot:t=()=>({})}={})=>{let n=NaN,a=null;return()=>{const o=e();return a&&n===o||(n=o,a=deepFreeze(t())),a}},me=Object.freeze(["head","torso","leftarm","rightarm","leftleg","rightleg"]),fe=Object.freeze({healthy:0,damaged:1,broken:2,mangled:3}),ge=new Set(Object.keys(fe)),he=Object.freeze({head:"head",torso:"torso",leftarm:"leftarm",rightarm:"rightarm",leftleg:"leftleg",rightleg:"rightleg"}),be={brokenleftarm:{limb:"leftarm",stage:"broken"},brokenrightarm:{limb:"rightarm",stage:"broken"},brokenleftleg:{limb:"leftleg",stage:"broken"},brokenrightleg:{limb:"rightleg",stage:"broken"},damagedhead:{limb:"head",stage:"damaged"},damagedleftarm:{limb:"leftarm",stage:"damaged"},damagedrightarm:{limb:"rightarm",stage:"damaged"},damagedleftleg:{limb:"leftleg",stage:"damaged"},damagedrightleg:{limb:"rightleg",stage:"damaged"},mangledhead:{limb:"head",stage:"mangled"},mangledleftarm:{limb:"leftarm",stage:"mangled"},mangledrightarm:{limb:"rightarm",stage:"mangled"},mangledleftleg:{limb:"leftleg",stage:"mangled"},mangledrightleg:{limb:"rightleg",stage:"mangled"},mildtrauma:{limb:"torso",stage:"damaged"},serioustrauma:{limb:"torso",stage:"mangled"}},normalizeLimbId=e=>{const t=String(e||"").trim().toLowerCase().replace(/\s+/g,"");return he[t]||t},buildAfflictionStageSnapshot=(e=[])=>{const t=me.reduce((e,t)=>(e[t]="healthy",e),{});return e.forEach(e=>{const n=be[String(e||"").trim().toLowerCase()];if(!n)return;const a=t[n.limb]||"healthy";(fe[n.stage]??0)>(fe[a]??0)&&(t[n.limb]=n.stage)}),t},createLimbModel=({now:e=Date.now,setTimeoutFn:t,clearTimeoutFn:n,damageResetMs:a=18e4}={})=>{const o=new Set;let i=0;const s=new Map,l=new Map,c=me.reduce((t,n)=>(t[n]={id:n,percent:0,hits:0,stage:"healthy",updatedAt:e()},t),{}),emit=(e,t)=>{i+=1,t?.limb&&s.set(t.limb,(s.get(t.limb)??0)+1),o.forEach(n=>n(e,t))},cancelResetTimer=e=>{const t=l.get(e);null!=t&&(n(t),l.delete(e))},scheduleResetTimer=n=>{cancelResetTimer(n);const o=t(()=>{l.delete(n);const t=c[n];!t||t.percent<=0||(t.percent=0,t.hits=0,t.updatedAt=e(),emit("LimbDecay",{limb:n,value:deepClone$1(t)}))},a);l.set(n,o)},buildEntrySnapshot=(e={})=>({id:e.id,percent:e.percent,hits:e.hits,stage:e.stage,updatedAt:e.updatedAt}),u=new Map,getEntrySnapshot=e=>c[e]?(u.has(e)||u.set(e,createSnapshotCache({getVersion:()=>s.get(e)??0,buildSnapshot:()=>buildEntrySnapshot(c[e])})),u.get(e)()):null,d=createSnapshotCache({getVersion:()=>i,buildSnapshot:()=>me.reduce((e,t)=>(e[t]=getEntrySnapshot(t),e),{})}),setStage=(t,n,a="manual")=>{const o=normalizeLimbId(t),i=String(n||"").trim().toLowerCase();if(!c[o]||!ge.has(i))return!1;if(c[o].stage===i)return!1;const s=c[o],l=s.stage;return s.stage=i,s.percent=0,s.hits=0,s.updatedAt=e(),cancelResetTimer(o),emit("LimbStageChanged",{limb:o,stage:i,previousStage:l,source:a,value:deepClone$1(s)}),!0},applyAfflictionTransition=(e,t)=>{const n=be[String(e||"").toLowerCase()];return!!n&&(t?(setStage(n.limb,n.stage,"affliction"),!0):"damaged"===n.stage?(setStage(n.limb,"healthy","affliction"),!0):"mangled"===n.stage?(setStage(n.limb,"damaged","affliction"),!0):"broken"===n.stage&&(setStage(n.limb,"healthy","affliction"),!0))},syncFromAfflictions=(e=[],t="affliction-list")=>{const n=buildAfflictionStageSnapshot(e);return me.reduce((e,a)=>n[a]===c[a].stage?e:setStage(a,n[a],t)||e,!1)};return{onChange:e=>(o.add(e),()=>o.delete(e)),list:()=>[...me],snapshot:()=>d(),hit:(t,n,a="manual")=>{const o=normalizeLimbId(t),i=Number(n);if(!c[o]||!Number.isFinite(i)||i<=0)return!1;const s=c[o],l=s.stage;s.percent=Math.max(0,s.percent+i),s.hits+=1,s.updatedAt=e();let u=null;return"healthy"===s.stage&&s.percent>=100?(s.stage="damaged",s.percent=0,s.hits=0,u="damaged",cancelResetTimer(o)):"damaged"===s.stage&&s.percent>=100?(s.stage="mangled",s.percent=0,s.hits=0,u="mangled",cancelResetTimer(o)):scheduleResetTimer(o),emit("LimbHit",{limb:o,amount:i,source:a,transition:u,previousStage:l,value:deepClone$1(s)}),u&&emit("LimbStageChanged",{limb:o,stage:s.stage,previousStage:l,source:a,value:deepClone$1(s)}),!0},reset:(t,n="manual")=>{const a=normalizeLimbId(t);if(!c[a])return!1;const o=c[a],i=o.stage;return(0!==o.percent||0!==o.hits||"healthy"!==i)&&(o.percent=0,o.hits=0,o.stage="healthy",o.updatedAt=e(),cancelResetTimer(a),emit("LimbReset",{limb:a,source:n,previousStage:i,value:deepClone$1(o)}),"healthy"!==i&&emit("LimbStageChanged",{limb:a,stage:"healthy",previousStage:i,source:n,value:deepClone$1(o)}),!0)},setStage,applyAfflictionTransition,syncFromAfflictions,dispose(){me.forEach(cancelResetTimer)},get:e=>getEntrySnapshot(normalizeLimbId(e))}},buildLimbSnapshot=(e,t)=>{const n=e?.get?.(t);return n?{id:n.id,percent:n.percent,hits:n.hits,stage:n.stage}:null},didLimbChange=(e,t)=>Boolean(e&&t)&&(e.percent!==t.percent||e.hits!==t.hits||e.stage!==t.stage),syncTorsoTrauma=({affModel:e,serverside:t,stage:n,source:a,at:o})=>{switch(n){case"damaged":return e?.lose?.("serioustrauma",{source:a,at:o}),e?.got?.("mildtrauma",{source:a,at:o}),t?.removePrediction?.("serioustrauma"),t?.addPrediction?.("mildtrauma"),!0;case"mangled":return e?.lose?.("mildtrauma",{source:a,at:o}),e?.got?.("serioustrauma",{source:a,at:o}),t?.removePrediction?.("mildtrauma"),t?.addPrediction?.("serioustrauma"),!0;case"healthy":return e?.lose?.("mildtrauma",{source:a,at:o}),e?.lose?.("serioustrauma",{source:a,at:o}),t?.removePrediction?.("mildtrauma"),t?.removePrediction?.("serioustrauma"),!0;default:return!1}},buildObserveResult=(e,t,n,a=!1)=>({changed:didLimbChange(t,n)||a,traumaSynced:a,stageChanged:t?.stage!==n?.stage,limb:e,before:t,after:n}),applyObservedLimbHit=({limbModel:e,affModel:t,serverside:n,limb:a,amount:o,source:i="manual",at:s})=>{const l=normalizeLimbId(a),c=buildLimbSnapshot(e,l);if(!c)return{changed:!1,traumaSynced:!1,stageChanged:!1,limb:l,before:null,after:null};e.hit(l,o,i);const u=buildLimbSnapshot(e,l),d=didLimbChange(c,u),p=c.stage!==u?.stage,m=!("torso"!==l||!p)&&syncTorsoTrauma({affModel:t,serverside:n,stage:u?.stage,source:i,at:s});return{changed:d||m,traumaSynced:m,stageChanged:p,limb:l,before:c,after:u}},applyObservedLimbReset=({limbModel:e,affModel:t,serverside:n,limb:a,source:o="manual",at:i})=>{const s=normalizeLimbId(a),l=buildLimbSnapshot(e,s);return l?(e.reset(s,o),buildObserveResult(s,l,buildLimbSnapshot(e,s),"torso"===s&&syncTorsoTrauma({affModel:t,serverside:n,stage:"healthy",source:o,at:i}))):{changed:!1,traumaSynced:!1,stageChanged:!1,limb:s,before:null,after:null}},applyObservedLimbStage=({limbModel:e,affModel:t,serverside:n,limb:a,stage:o,source:i="manual",at:s})=>{const l=normalizeLimbId(a),c=buildLimbSnapshot(e,l);if(!c)return{changed:!1,traumaSynced:!1,stageChanged:!1,limb:l,before:null,after:null};e.setStage(l,o,i);const u=buildLimbSnapshot(e,l),d=c.stage!==u?.stage,p=!("torso"!==l||!d)&&syncTorsoTrauma({affModel:t,serverside:n,stage:u?.stage,source:i,at:s});return{changed:didLimbChange(c,u)||p,traumaSynced:p,stageChanged:d,limb:l,before:c,after:u}},ye=new Set(["char.items.add","char.items.remove","char.items.update"]),registerAdapterEvents=({register:e,options:t,queueTranslatedGmcp:n,publishPublic:a,publishPublicScoped:o,markDirty:i,flushCycle:s,outputCycle:l,startup:c,curingSetProvisioner:u,curingSetGuard:d,curingMasterSwitch:p,queueController:m,serverside:g,balanceModel:h,adapter:b,systemModel:y,affModel:v,cacheModel:S,limbModel:x,savePersistence:C})=>{e("GmcpEvent",e=>{n(e);const o=normalizeTag(e?.tag||e?.rawTag||e?.gmcp_method);!0===t.publishRawGmcp&&a(te.RAW_GMCP,{source:"adapter-gmcp",tag:o,payload:e?.payload??e?.gmcp_args??null}),ye.has(o)||i("gmcp-buffered")}),e("PromptEvent",()=>s("prompt")),e("ForcePopulateEvent",()=>s("force")),e("SystemOutputCompleteEvent",()=>{l.markComplete()&&s("output-complete")}),e(ne.CURINGSET_READY,()=>{u?.handleBarrier()}),e(ne.STARTUP_BEGIN,()=>{c.handleFenceBegin()}),e(ne.STARTUP_COMPLETE,()=>{c.handleFenceComplete("snapshot:complete:text")}),e("QueueFiredTextEvent",e=>{e?.queueName&&m.acknowledgeFired(e.queueName)}),e("QueueSentTextEvent",e=>{const t=e?.queueId||e?.queueName||e?.queueType;t&&m.acknowledgeSent(t,e)}),e("AllQueuesClearedTextEvent",()=>{m.listQueues().forEach(e=>{m.clear(e)})}),e("CommandSeparatorChangedTextEvent",({separator:e}={})=>{const t=normalizeCommandSeparator(e);t&&(b?.setSeparator(t),y?.setSettings({commandSeparator:t},{setBaseline:!0}),C?.())}),e("BalanceStateTextEvent",e=>{const t=String(e?.id||"").trim().toLowerCase();if(!t)return;const n=String(e?.reason||e?.source||"text"),a=Number(e?.durationSeconds);if(!0!==e?.have){if(!1===e?.have){if(Number.isFinite(a)&&a>0)return void h.observeServerUse(t,a,{source:n});h.lose(t,n)}}else h.gain(t,n)}),e("CacheRiftOutTextEvent",(e={})=>{const t=S?.observeRiftOutText?.({item:e.item,amount:e.amount,riftAmount:e.riftAmount,atCapacity:e.atCapacity,source:e.source||"text-trigger"});t?.name&&i(`text:cache-rift-out:${t.name}`)}),e("CacheRiftInTextEvent",(e={})=>{const t=S?.observeRiftInText?.({item:e.item,amount:e.amount,riftAmount:e.riftAmount,atCapacity:e.atCapacity,source:e.source||"text-trigger"});t?.name&&i(`text:cache-rift-in:${t.name}`)}),e("CacheRiftFullTextEvent",(e={})=>{const t=S?.invalidateRiftSnapshot?.({source:e.source||"text-trigger"});b?.sendGmcp?.(["IRE.Rift.Request"],{source:"cache-rift-full-text"}),t&&i("text:cache-rift-resync")}),e("CacheInventoryEmptyTextEvent",(e={})=>{const t=S?.observeInventoryEmptyText?.({item:e.item,source:e.source||"text-trigger"});t?.name&&(i(`text:cache-empty:${t.name}`),b?.sendGmcp?.(["Char.Items.Inv"],{source:"cache-inventory-empty-text",item:e.item||"",name:t.name}))}),e("CacheCurativeConsumedTextEvent",(e={})=>{const t=S?.observeCurativeConsumedText?.({item:e.item,amount:e.amount,source:e.source||"text-trigger"});t?.name&&i(`text:cache-consume:${t.name}`)}),e("CacheInventoryDeltaTextEvent",(e={})=>{const t=S?.observeInventoryDeltaText?.({item:e.item,amount:e.amount,delta:e.delta,source:e.source||"text-trigger"});t?.name&&i(`text:cache-${t.delta>0?"add":"remove"}:${t.name}`)}),e("LimbDamageTextEvent",e=>{const t=applyObservedLimbHit({limbModel:x,affModel:v,serverside:g,limb:e?.limb,amount:e?.amount,source:String(e?.source||"text-trigger"),at:e?.at});t.changed&&"torso"===t.limb&&t.stageChanged&&i(`text-limb-torso:${t.after?.stage||"unknown"}`)}),e("LimbResetTextEvent",e=>{const t=applyObservedLimbReset({limbModel:x,affModel:v,serverside:g,limb:e?.limb,source:String(e?.source||"text-trigger"),at:e?.at});t.changed&&"torso"===t.limb&&i("text-limb-torso:healthy")}),e("ServersideStatusTextEvent",(e={})=>{"enabled"!==String(e.key||"").trim().toLowerCase()?g.parseStatusLine(e):p?.observeConfirmation(Boolean(e.value))}),e("ServersideStatusSnapshotCompleteTextEvent",()=>{g.markStartupCaptured("status")}),e("ServersideAffPrioSnapshotOpenTextEvent",e=>{g.beginObservedAffPrioritySnapshot(e?.set||"")}),e("ServersideAffPrioSnapshotCompleteTextEvent",()=>{g.completeObservedAffPrioritySnapshot()}),e("ServersideDefPrioSnapshotOpenTextEvent",e=>{g.beginObservedDefPrioritySnapshot(e?.set||"")}),e("ServersideDefPrioSnapshotCompleteTextEvent",()=>{g.completeObservedDefPrioritySnapshot()}),e("ServersideAffPrioTextEvent",e=>{if(!e?.aff)return;const t=Number(e.prio),n=g.updateObservedAffPriority(e.aff,t);if("live-confirmation"===e.source){const a="function"==typeof v?.normalizePriorityName?v.normalizePriorityName(e.aff):String(e.aff||"").toLowerCase();o(te.SERVERSIDE_AFF_PRIORITY_SET,{id:a,priority:t,source:"live-confirmation",accepted:n},a)}}),e("ServersideDefPrioTextEvent",e=>{if(!e?.def)return;const t=String(e.def||"").toLowerCase(),n=Number(e.prio),a=g.updateObservedDefPriority(t,n);"live-confirmation"===e.source&&o(te.SERVERSIDE_DEF_PRIORITY_SET,{id:t,priority:n,source:"live-confirmation",accepted:a},t)}),e("ServersideQueueListTextEvent",e=>{g.updateObservedQueue(e?.queue||[])}),e("ServersidePredictionsTextEvent",e=>{g.updateObservedPredictions(e?.predictions||{})}),e("ServersideCuringSetsTextEvent",e=>{g.observeCuringSets({sets:e?.sets||[],activeSet:e?.activeSet||"",used:e?.used,limit:e?.limit})}),e("ServersideCuringSetSwitchedTextEvent",e=>{d?.handleSwitched({set:e?.set||""})}),e("SnappedGotTrackableEvent",()=>{g.setTrackable("snapTrack",!0,{source:"text",label:"Snapped"}),b.setTimeout(()=>{g.setTrackable("snapTrack",!1,{source:"timer",label:"Snapped"})},8e3)})},ve={short:{rl:"right leg",ll:"left leg",ra:"right arm",la:"left arm",h:"head",tt:"torso",c:"centre",l:"left",r:"right"},long:{"right leg":"rl","left leg":"ll","right arm":"ra","left arm":"la",head:"h",torso:"tt",centre:"c",left:"l",right:"r"}},Se=["e","w","s","n","ne","se","sw","nw","in","out","d","u"],xe={e:"east",w:"west",s:"south",n:"north",ne:"northeast",se:"southeast",sw:"southwest",nw:"northwest",in:"in",out:"out",down:"down",d:"down",u:"up",up:"up"},Ce={e:"west",w:"east",s:"north",n:"south",ne:"southwest",se:"northwest",sw:"northeast",nw:"southeast",in:"out",out:"in",down:"up",d:"up",u:"down",up:"down"},we={east:"e",west:"w",south:"s",north:"n",northeast:"ne",northwest:"nw",southeast:"se",southwest:"sw",in:"in",out:"out",down:"d",up:"up"},ke=["Alchemist","Apostate","Bard","Blademaster","Depthswalker","Dragon","Druid","Infernal","Jester","Magi","Monk","Shikudo","Occultist","Paladin","Pariah","Priest","Psion","Runewarden","Sentinel","Serpent","Shaman","Sylvan","Unnamable","Air Elemental Lord","Earth Elemental Lord","Fire Elemental Lord","Water Elemental Lord"],normalizeClassName=(e="")=>{const t=String(e||"").trim();return t?/\bdragon\b/i.test(t)?"Dragon":ke.find(e=>e.toLowerCase()===t.toLowerCase())||t:""},classesMatch=(e="",t="")=>normalizeClassName(e).toLowerCase()===normalizeClassName(t).toLowerCase(),classListIncludes=(e=[],t="")=>{const n=Array.isArray(e)?e:e?[e]:[];if(!n.length)return!0;const a=normalizeClassName(t).toLowerCase();return n.some(e=>normalizeClassName(e).toLowerCase()===a)},hasOwn$4=(e,t)=>Object.prototype.hasOwnProperty.call(e||{},t),normalizeCommandList=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],normalizeStringList=e=>Array.isArray(e)?e.filter(Boolean):e?[e]:[],normalizePrioritySeed=e=>{const t=Number(e);return Number.isFinite(t)?t<0?0:t>26?26:t:0},normalizeDefenseConfig=(e={})=>{const t=!1!==e.serverside;return deepFreeze({...deepClone$1(e),command:normalizeCommandList(e.command),bals_req:normalizeStringList(e.bals_req),bals_used:normalizeStringList(e.bals_used),blocks:deepClone$1(e.blocks||[]),skills:normalizeStringList(e.skills),opps:normalizeStringList(e.opps),serverside:t,preempt:!0===e.preempt,static:!0===e.static,clientOnly:!0===e.clientOnly,defaultPriority:normalizePrioritySeed(e.defaultPriority)})},createDefEntry=(e,t,n,a)=>({id:e,have:!1,lastChangeAt:0,order:t,seedStatic:n.static,defaultPriority:a,priorityOverride:null,command:n.command,bals_req:n.bals_req,bals_used:n.bals_used,blocks:n.blocks,skills:n.skills,opps:n.opps,serverside:n.serverside,preempt:n.preempt,static:n.static,clientOnly:n.clientOnly}),resolveDefensePriority=(e={})=>null===e.priorityOverride||void 0===e.priorityOverride?Number(e.defaultPriority??-1):Number(e.priorityOverride),matchesClass=(e=[],t="")=>!e||!e.length||(Array.isArray(t)?t.some(t=>classListIncludes(e,t)):classListIncludes(e,t)),isActiveStaticPriority=e=>{const t=Number(e);return Number.isFinite(t)&&t>0},createInitialDefenseState=({defTable:e={},defPrios:t={}}={})=>{const n=Object.keys(e),a={},o={};return n.forEach((n,i)=>{const s=normalizeDefenseConfig(e[n]),l=hasOwn$4(t,n)?normalizePrioritySeed(t[n]):s.defaultPriority;o[n]=l,a[n]=createDefEntry(n,i,s,l)}),{list:n,state:a,defaultPrios:o}},normalizeObservedDefenseId=e=>("string"==typeof e?e:String(e?.name||e?.id||e||"")).toLowerCase().replace(/\s*\(([^)]+)\)/g," $1").trim(),normalizeItemLocation=e=>String(e||"").trim().toLowerCase()||"inv",registerGmcpBridges=({registerGmcpListener:e,systemModel:t,balanceModel:n,affModel:a,defModel:o,cacheModel:i,limbModel:s,serverside:l,adapter:c,markDirty:u})=>{const requestInventoryResync=e=>{c?.sendGmcp?.(["Char.Items.Inv"],{source:e})};e(X.CHAR_VITALS,({vitals:e}={})=>{t.updateVitals(e),n.applyVitals(e),u("gmcp:vitals")}),e(X.CHAR_STATUS,({status:e}={})=>{t.updateStatus(e||{}),u("gmcp:status")}),e(X.CHAR_AFFLICTIONS_LIST,({afflictions:e}={})=>{const t=Array.isArray(e)?e:[];a.applyList(t),"function"==typeof s?.syncFromAfflictions&&"function"==typeof a?.currentSorted&&s.syncFromAfflictions(a.currentSorted(),"gmcp-list"),u("gmcp:aff-list")}),e(X.CHAR_AFFLICTIONS_ADD,({name:e}={})=>{e&&(a.got(e,{source:"gmcp-add"}),"function"==typeof s?.syncFromAfflictions&&"function"==typeof a?.currentSorted?s.syncFromAfflictions(a.currentSorted(),"gmcp-add"):s.applyAfflictionTransition(e,!0),u(`gmcp:aff-add:${e}`))}),e(X.CHAR_AFFLICTIONS_REMOVE,({name:e}={})=>{e&&(a.lose(e,{source:"gmcp-remove"}),"function"==typeof s?.syncFromAfflictions&&"function"==typeof a?.currentSorted?s.syncFromAfflictions(a.currentSorted(),"gmcp-remove"):s.applyAfflictionTransition(e,!1),l.getTransientPrioAff()===e&&l.clearPrioAff(),u(`gmcp:aff-remove:${e}`))}),e(X.CHAR_DEFENCES_LIST,({defences:e}={})=>{o.applyList(Array.isArray(e)?e:[],"gmcp-list"),u("gmcp:def-list")}),e(X.CHAR_DEFENCES_ADD,({name:e}={})=>{if(!e)return;const t=normalizeObservedDefenseId(e);if(t){if(t.startsWith("parrying "))for(const e of o.list())e!==t&&e.startsWith("parrying ")&&o.get(e)?.have&&o.setHave(e,!1,"gmcp-parry-implied-remove");o.setHave(t,!0,"gmcp-add"),"mindseye"===t&&requestInventoryResync("cache-visibility-resync:mindseye"),u(`gmcp:def-add:${t}`)}}),e(X.CHAR_DEFENCES_REMOVE,({name:e}={})=>{if(!e)return;const t=normalizeObservedDefenseId(e);t&&(o.setHave(t,!1,"gmcp-remove"),"blindness"===t&&requestInventoryResync("cache-visibility-resync:blindness"),u(`gmcp:def-remove:${t}`))}),e(X.IRE_RIFT_LIST,({rift:e}={})=>{i.observeRiftSnapshot?.(e||{}),u("gmcp:rift-list")}),e(X.IRE_RIFT_CHANGE,({change:e}={})=>{const t=i.observeRiftChange?.(e||{});t?.name&&u(`gmcp:rift-change:${t.name}`)}),e(X.CHAR_ITEMS_LIST,({items:e,location:n}={})=>{const a=normalizeItemLocation(n),o=Array.isArray(e)?e:[];if("inv"===a){i.observeInventorySnapshot?.(o);const toWieldedItem=e=>e?{id:e.id??null,name:String(e.name||""),icon:e.icon||null}:null;t.updateWielded("left",toWieldedItem(o.find(e=>"l"===e.attrib))),t.updateWielded("right",toWieldedItem(o.find(e=>"L"===e.attrib)))}u("gmcp:items-list")}),e(X.CHAR_ITEMS_DELTA,({inventoryDelta:e}={})=>{if(e){const n=normalizeItemLocation(e.location),a="inv"===n||"room"===n?i.observeItemDelta?.(e):null;if(a?.changed&&a.name&&u(`gmcp:room-pickup:${a.name}`),"inv"===n&&"update"===e.action){const{id:n,name:a,icon:o,attrib:i}=e,s=t.getChar().wielded;s.left?.id===n&&"l"!==i&&t.updateWielded("left",null),s.right?.id===n&&"L"!==i&&t.updateWielded("right",null),"l"===i?t.updateWielded("left",{id:n,name:a,icon:o}):"L"===i&&t.updateWielded("right",{id:n,name:a,icon:o})}}}),e(X.ROOM_INFO,({room:e,roomItems:n}={})=>{t.updateRoom(e||{}),t.setRoomItems(n||{}),u("gmcp:room-info")}),e(X.TARGET_INFO,({target:e}={})=>{t.updateTarget(e||{}),u("gmcp:target")})},normalizeBridgeSegment=e=>String(e||"").trim().toLowerCase().replace(/\s+/g,"_").replace(/[^a-z0-9._-]/g,""),isSystemOutputBalance=(e={})=>"systemoutput"===normalizeBridgeSegment(e?.id),Ee=Object.freeze(["balance","equilibrium"]),getCounterpartEqbalBalance=e=>{const t=normalizeBridgeSegment(e);return Ee.includes(t)?"balance"===t?"equilibrium":"balance":null},buildEqbalRecoveredPayload=(e,t={})=>{const n=normalizeBridgeSegment(t?.id),a=getCounterpartEqbalBalance(n);return a&&e?.have?.(n)&&e.have(a)?{...t,id:"eqbal",have:!0,recoveredId:n,balances:{balance:Boolean(e.have("balance")),equilibrium:Boolean(e.have("equilibrium"))}}:null},getRecoveredBalanceSeconds=(e={})=>{const t=Number(e?.durationMs);if(Number.isFinite(t)&&t>0)return t/1e3;const n=Number(e?.lastLostAtMs),a=Number(e?.lastGotAtMs);return Number.isFinite(n)&&Number.isFinite(a)&&a>n?(a-n)/1e3:Number(e?.durationSeconds??e?.baseDurationSeconds)},formatBalanceNotice=(e={})=>{const t=String(e?.id||"").trim(),n=getRecoveredBalanceSeconds(e);return t?!Number.isFinite(n)||n<=0?t:`${t}(${n.toFixed(2)})`:""},shouldEchoPriorityChange=(e={})=>["manual","public-api"].includes(String(e?.source||"").toLowerCase()),formatPriorityNotice=(e={},t)=>{const n=String(t||"").trim(),a=Number(e?.priority??e?.value),o=normalizeBridgeSegment(e?.domain),i=o&&"keepup"!==o?` (${o})`:!0===e?.static?" (static)":"";return n?Number.isFinite(a)?`${n} ${a}${i}`:`${n}${i}`:""},_e=Object.freeze({RuleAdded:te.RULE_ADDED,RuleRemoved:te.RULE_REMOVED,RuleEnabled:te.RULE_ENABLED,RuleDisabled:te.RULE_DISABLED,RulePackLoaded:te.RULE_PACK_LOADED,RulePackUnloaded:te.RULE_PACK_UNLOADED,RuleOrderChanged:te.RULE_ORDER_CHANGED}),Pe=Object.freeze({hp:{topic:te.SYSTEM_HEALTH_CHANGED,maxKey:"maxhp"},mp:{topic:te.SYSTEM_MANA_CHANGED,maxKey:"maxmp"},rage:{topic:te.SYSTEM_RAGE_CHANGED},bleed:{topic:te.SYSTEM_BLEED_CHANGED}}),buildVitalResourcePayload=(e={},t,{maxKey:n}={})=>{const a=e.changedFields?.[t];if(!a)return null;const o=a.current,i=a.previous;return{max:n?e.current?.[n]:o,current:o,previous:i,diff:o-i}},publishVitalResourceTopics=(e,t={})=>{Object.entries(Pe).forEach(([n,a])=>{const o=buildVitalResourcePayload(t,n,a);o&&e(a.topic,o)})},registerSystemModelBridge=({registerModelListener:e,publishPublic:t,syncDebugMode:n,systemModel:a,serverside:o,handleVitalsSideEffects:i})=>{e(a.onChange((e,a={})=>{switch(e){case"VitalsUpdated":t(te.SYSTEM_VITALS_CHANGED,a),publishVitalResourceTopics(t,a),i();break;case"StatusUpdated":t(te.SYSTEM_STATUS_CHANGED,a);break;case"ClassChanged":o.setBaselineFromRuntime(),t(te.SYSTEM_CLASS_CHANGED,a);break;case"TargetUpdated":t(te.SYSTEM_TARGET_CHANGED,a);break;case"RoomUpdated":t(te.SYSTEM_ROOM_CHANGED,a);break;case"RoomItemsUpdated":t(te.SYSTEM_ROOM_ITEMS_CHANGED,a);break;case"RuntimeStateChanged":t(te.SYSTEM_RUNTIME_CHANGED,a);break;case"PauseStateChanged":t(te.SYSTEM_PAUSE_CHANGED,a),t(a.paused?te.SYSTEM_PAUSED:te.SYSTEM_UNPAUSED,a);break;case"SettingsChanged":a.changedKeys?.includes("debug")&&n(),t(te.SYSTEM_SETTINGS_CHANGED,a);break;case"BaselineIntentChanged":t(te.SYSTEM_BASELINE_CHANGED,a);break;case"WieldedUpdated":t(te.SYSTEM_WIELDED_CHANGED,a);break;case"MountUpdated":t(te.SYSTEM_MOUNT_CHANGED,a);break;case"DeathDetected":t(te.SYSTEM_DEATH_DETECTED,a)}}))},registerAfflictionModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,systemModel:o,affModel:i,serverside:s})=>{e(i.onChange((e,l={})=>{switch("AffGot"!==e&&"AffLost"!==e||"aeon"!==l?.name||o.setRuntime({aeonLocked:i.haveAff("aeon")}),e){case"AffGot":n(te.AFF_GOT,l,l.name),a.publish("affGot",l.name,{...l,action:"got"});break;case"AffLost":n(te.AFF_LOST,l,l.name),a.publish("affLost",l.name,{...l,action:"lost"}),s.getTransientPrioAff()===l.name&&s.clearPrioAff();break;case"AffStackChanged":n(te.AFF_STACK_CHANGED,l,l.name);break;case"AffPriorityChanged":t(te.AFF_PRIORITY_CHANGED,l),shouldEchoPriorityChange(l)&&a.publish("priority",formatPriorityNotice(l,l.name),{...l,action:"set",subject:"aff"})}}))},registerDefenseModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,defModel:o})=>{e(o.onChange((e,o={})=>{switch(e){case"DefGot":n(te.DEF_GOT,o,o.id),a.publish("defGot",o.id,{...o,action:"got"});break;case"DefLost":n(te.DEF_LOST,o,o.id),a.publish("defLost",o.id,{...o,action:"lost"});break;case"DefPriorityChanged":t(te.DEF_PRIORITY_CHANGED,o),shouldEchoPriorityChange(o)&&a.publish("priority",formatPriorityNotice(o,o.id),{...o,action:"set",subject:"def"})}}))},registerBalanceModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,balanceModel:o})=>{e(o.onChange((e,i={})=>{switch(e){case"BalanceGot":n(te.BALANCE_GOT,i,i.id);{const e=buildEqbalRecoveredPayload(o,i);e&&t(te.EQBAL_GOT,e)}isSystemOutputBalance(i)||a.publish("balanceRecovered",formatBalanceNotice(i),{...i,action:"got"});break;case"BalanceLost":n(te.BALANCE_LOST,i,i.id),a.publish("balanceLost",i.id,{...i,action:"lost"});break;case"BalanceReset":n(te.BALANCE_RESET,i,i.id);break;case"BalanceDurationObserved":n(te.BALANCE_DURATION_OBSERVED,i,i.id);break;case"BalanceLossTimerRestarted":t(te.BALANCE_TIMER_RESTARTED,i)}}))},registerLimbModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,limbModel:a})=>{e(a.onChange((e,a={})=>{switch(e){case"LimbHit":n(te.LIMB_HIT,a,a.limb);break;case"LimbReset":n(te.LIMB_RESET,a,a.limb);break;case"LimbStageChanged":n(te.LIMB_STAGE_CHANGED,a,a.limb);break;case"LimbDecay":t(te.LIMB_DECAY,a)}}))},registerCacheModelBridge=({registerModelListener:e,publishPublic:t,cacheModel:n})=>{e(n.onChange((e,n={})=>{switch(e){case"CacheAmountChanged":t(te.CACHE_AMOUNT_CHANGED,n);break;case"CacheInventoryListApplied":t(te.CACHE_INVENTORY_LIST,n);break;case"CacheRiftListApplied":t(te.CACHE_RIFT_LIST,n);break;case"CacheDesiredPrecacheChanged":t(te.CACHE_PRECACHE_CHANGED,n)}}))},registerQueueModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,queueController:o})=>{e(o.onChange((e,i={})=>{switch(e){case"QueueFlushed":t(te.QUEUE_FLUSHED,i),a.publish("output",`Queue sent: ${i.queueId}`,i);break;case"QueueDeferred":t(te.QUEUE_DEFERRED,i);break;case"QueueUpdated":t(te.QUEUE_UPDATED,i);break;case"QueueCleared":t(te.QUEUE_CLEARED,i);break;case"QueueSentAcknowledged":{const e=o.getQueue(i.queueId)?.name||i.queueName||i.queueId;n(te.QUEUE_SENT,{...i,queueName:e},e);break}case"QueueFiredAcknowledged":{const e=o.getQueue(i.queueId)?.name||i.queueId;t(te.QUEUE_FIRED_ACK,i),n(te.QUEUE_FIRED,{...i,queueName:e},e);break}}}))},registerServersideModelBridge=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,serverside:o,runtimeControl:i,systemModel:s,onServersideDirty:l})=>{let c=new Set;const syncRuleSuspendPause=(e=[])=>{c=new Set((e||[]).filter(Boolean).map(e=>String(e)));const t=c.size>0;s?.getRuntime?.().rulesSuspended!==t&&(s?.setRuntime?.({rulesSuspended:t}),i?.syncCuringState?.({source:"rule-suspend"}))},addRuleSuspend=e=>{e&&!c.has(String(e))&&syncRuleSuspendPause([...c,String(e)])},removeRuleSuspend=e=>{if(!e||!c.has(String(e)))return;const t=new Set(c);t.delete(String(e)),syncRuleSuspendPause([...t])};e(o.onChange((e,o={})=>{const i=_e[e];if(i)t(i,o);else switch(e){case"TrackableGot":a.publish("trackableGot",o.label||o.name,{...o,action:"got"});break;case"TrackableLost":a.publish("trackableLost",o.label||o.name,{...o,action:"lost"});break;case"ServersideDirty":l?.(o),t(te.SERVERSIDE_DIRTY,o);break;case"ServersideEvaluated":syncRuleSuspendPause(o.suspendingRules||[],o.source),t(te.SERVERSIDE_EVALUATED,o);break;case"RuleSuspendActivated":addRuleSuspend(o.id);break;case"RuleSuspendDeactivated":removeRuleSuspend(o.id);break;case"RuleActivated":o.suspendsCuring&&addRuleSuspend(o.id),n(te.RULE_ACTIVATED,o,o.id);break;case"RuleDeactivated":o.suspendsCuring&&removeRuleSuspend(o.id),n(te.RULE_DEACTIVATED,o,o.id)}}))},registerModelEventBridges=({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,syncDebugMode:o,systemModel:i,affModel:s,defModel:l,balanceModel:c,cacheModel:u,limbModel:d,queueController:p,serverside:m,runtimeControl:g,handleVitalsSideEffects:h,onServersideDirty:b})=>{registerSystemModelBridge({registerModelListener:e,publishPublic:t,syncDebugMode:o,systemModel:i,serverside:m,handleVitalsSideEffects:h}),registerAfflictionModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,systemModel:i,affModel:s,serverside:m}),registerDefenseModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,defModel:l}),registerBalanceModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,balanceModel:c}),registerLimbModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,limbModel:d}),registerCacheModelBridge({registerModelListener:e,publishPublic:t,cacheModel:u}),registerQueueModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,queueController:p}),registerServersideModelBridge({registerModelListener:e,publishPublic:t,publishPublicScoped:n,noticeCenter:a,serverside:m,runtimeControl:g,systemModel:i,onServersideDirty:b})},Te="Flying above ",Ae=new Set(["dragon","air elemental lord","earth elemental lord","fire elemental lord","water elemental lord"]),registerCrossModelBridges=({registerModelListener:e,systemModel:t,defModel:n})=>{e(t.onChange((e,t={})=>{if("RoomUpdated"===e){const e=String(t?.current?.name||"").startsWith(Te);return void n.setHave("flying",e,"room-info")}"ClassChanged"===e&&Ae.has(String(t?.class||"").toLowerCase())&&n.setHave("mounted",!1,"class-change")}))},createRuntimeEventWiring=({adapter:e,internalEvents:t})=>{let n=[];const addUnsubscriber=e=>{"function"==typeof e&&n.push(e)},dispose=()=>{n.forEach(e=>{try{e()}catch(t){console.error("nexSys4 unsubscribe failure",t)}}),n=[]};return{attach:({options:n,queueTranslatedGmcp:a,publishPublic:o,publishPublicScoped:i,noticeCenter:s,syncDebugMode:l,systemModel:c,affModel:u,defModel:d,balanceModel:p,cacheModel:m,limbModel:g,queueController:h,serverside:b,markDirty:y,invalidateOutput:v,flushCycle:S,outputCycle:x,startup:C,curingSetProvisioner:w,curingSetGuard:k,curingMasterSwitch:E,runtimeControl:P,savePersistence:T})=>{dispose();const register=(t,n)=>{addUnsubscriber(e.on(t,n))},registerModelListener=e=>{addUnsubscriber(e)},registerGmcpListener=(e,n)=>{registerModelListener(t.on(e,n))};registerAdapterEvents({register,options:n,queueTranslatedGmcp:a,publishPublic:o,publishPublicScoped:i,markDirty:y,flushCycle:S,outputCycle:x,startup:C,curingSetProvisioner:w,curingSetGuard:k,curingMasterSwitch:E,runtimeControl:P,queueController:h,serverside:b,balanceModel:p,adapter:e,systemModel:c,affModel:u,cacheModel:m,limbModel:g,savePersistence:T}),register("OutboundCommandsEvent",(e={})=>{if("output-cycle"!==e?.context?.source)return;const t=Array.isArray(e.commands)?e.commands.filter(Boolean).map(e=>String(e)):[];if(!t.length)return;const n=c.getSettings().commandSeparator||"|";s.publish("output",`(${t.join(n)})`,{action:"commands",commands:t,source:e?.context?.cycleSource||e?.context?.source||"output-cycle"})}),registerGmcpBridges({registerGmcpListener,systemModel:c,balanceModel:p,affModel:u,defModel:d,cacheModel:m,limbModel:g,serverside:b,adapter:e,markDirty:y}),registerModelEventBridges({registerModelListener,publishPublic:o,publishPublicScoped:i,noticeCenter:s,syncDebugMode:l,systemModel:c,affModel:u,defModel:d,balanceModel:p,cacheModel:m,limbModel:g,queueController:h,serverside:b,runtimeControl:P,handleVitalsSideEffects:P.handleVitalsSideEffects,onServersideDirty:v}),registerCrossModelBridges({registerModelListener,systemModel:c,defModel:d})},dispose}},createRuntimeControlApi=({systemModel:e,serverside:t,queueController:n,noticeCenter:a,markDirty:o,onResume:i,dispatchCommands:s,curingMasterSwitch:l})=>{let c=!1;const buildSystemEventCommand=e=>e?`echo SystemEvent ${e}`:null,syncServersideCuring=(e,t={})=>{if("function"!=typeof s)return[];const n=e?"curing off":"curing on";if(e&&!1===l?.getObservedEnabled())return[];if(!e&&!0===l?.getObservedEnabled())return[];l?.markExpected(n);const a=buildSystemEventCommand(t.completionEvent);return s(a?[n,a]:[n],{source:t.source||(e?"runtime-pause":"runtime-unpause")})},syncCuringState=(t={})=>{const n=e.getRuntime();return syncServersideCuring(n.paused||n.rulesSuspended,t)},setPaused=(t,a={})=>{const s=Boolean(t),l=e.getRuntime();return l.paused===s?(a.forceCuringSync&&syncCuringState(a),!1):!(!s&&!isRuntimeReadyPhase(l.phase))&&(e.setRuntime({paused:s}),o(s?"paused":"unpaused"),syncCuringState(a),s||(n.flushDeferred(),i?.(a.source||"unpause")),!0)},ensureSlowModeRule=()=>{t.lifecycle.add({id:"runtime-slow-mode",pack:"runtime",evaluate:()=>e.getRuntime().slowMode?{settings:{sipHealthAt:30,sipManaAt:20,mossHealthAt:20,mossManaAt:20,batch:!1}}:null})};return{setPaused,syncCuringState,setSlowMode(t){const n=Boolean(t);return e.getRuntime().slowMode!==n&&(e.setRuntime({slowMode:n}),ensureSlowModeRule(),o(n?"slow-on":"slow-off"),!0)},handleVitalsSideEffects(){const t=e.getChar().dead;t&&!c&&(setPaused(!0,{source:"death-detected"}),a.publish("output","Death detected. Pausing nexSys runtime.",{source:"death-detected"})),!t&&c&&(setPaused(!1,{source:"death-recover"}),a.publish("output","Resurrection detected. Resuming nexSys runtime.",{source:"death-recover"})),c=t}}},Re="curing on",Me="curing off",createCuringMasterSwitch=({setPaused:e,noticeCenter:t})=>{let n=null,a=null;return{getObservedEnabled:()=>n,markExpected(e){const t=String(e||"").trim().toLowerCase();return(t===Re||t===Me)&&(a=t,!0)},observeConfirmation(o){const i=Boolean(o);return n=i,a===(i?Re:Me)?(a=null,{attributed:!0,enabled:i}):(a=null,i?e(!1,{source:"user-curing-on"}):(e(!0,{source:"user-curing-off"}),t.publish("output","Manual `curing off` detected. nexSys is paused and will not re-enable curing; send `curing on` to resume.",{source:"user-curing-off"})),{attributed:!1,enabled:i})}}},createCuringSetGuard=({serverside:e,systemModel:t,noticeCenter:n})=>{let a=!1,o=!1;const isRunningSession=()=>isRuntimeReadyPhase(t.getRuntime().phase),markNexsysSwitch=()=>{o=!0},handleSwitched=({set:t}={})=>{const i=normalizeSetName(t);if(!i)return;const s=o;o=!1,e.observeActiveCuringSet?.(i),isRunningSession()&&("nexsys4-default"!==i?s||a||(a=!0,n.publish("output",`nexSys paused — curing set is now ${i}; nexSys operates only in ${ie} and will resume when you switch back.`,{source:"curingset-foreign",force:!0})):a&&(a=!1,n.publish("output",`nexSys resumed — curing set is back to ${ie}.`,{source:"curingset-foreign-resume",force:!0})))},unload=({remove:t=!0}={})=>{const n=e.getCuringSets?.()??{},o=(n.sets||[]).map(e=>normalizeSetName(e)).filter(Boolean),i=normalizeSetName(n.priorSet),s=i&&"nexsys4-default"!==i&&o.includes(i)?i:o.find(e=>e&&"nexsys4-default"!==e)||"",l=[];s&&(markNexsysSwitch(),e.switchCuringSet(s),l.push(`curingset switch ${s}`));const c=t||!s;return c&&(e.deleteCuringSet(ie),l.push(`curingset delete ${ie}`)),a=!1,{restoreTarget:s,removed:c,commands:l}};return{handleSwitched,markNexsysSwitch,unload,isForeignPaused:()=>a}};function $constructor(e,t,n){function init(n,a){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:a,constr:_,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,a);const o=_.prototype,i=Object.keys(o);for(let e=0;e<i.length;e++){const t=i[e];t in n||(n[t]=o[t].bind(n))}}const a=n?.Parent??Object;class Definition extends a{}function _(e){var t;const a=n?.Parent?new Definition:this;init(a,e),(t=a._zod).deferred??(t.deferred=[]);for(const n of a._zod.deferred)n();return a}return Object.defineProperty(Definition,"name",{value:e}),Object.defineProperty(_,"init",{value:init}),Object.defineProperty(_,Symbol.hasInstance,{value:t=>!!(n?.Parent&&t instanceof n.Parent)||t?._zod?.traits?.has(e)}),Object.defineProperty(_,"name",{value:e}),_}var De=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},Oe=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}};(d=globalThis).__zod_globalConfig??(d.__zod_globalConfig={});var $e=globalThis.__zod_globalConfig;function config(e){return e&&Object.assign($e,e),$e}function getEnumValues(e){const t=Object.values(e).filter(e=>"number"==typeof e);return Object.entries(e).filter(([e,n])=>-1===t.indexOf(+e)).map(([e,t])=>t)}function jsonStringifyReplacer(e,t){return"bigint"==typeof t?t.toString():t}function cached(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function nullish(e){return null==e}function cleanRegex(e){const t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}function floatSafeRemainder(e,t){const n=e/t,a=Math.round(n),o=Number.EPSILON*Math.max(Math.abs(n),1);return Math.abs(n-a)<o?0:n-a}var Ie=Symbol("evaluating");function defineLazy(e,t,n){let a;Object.defineProperty(e,t,{get(){if(a!==Ie)return void 0===a&&(a=Ie,a=n()),a},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function assignProp(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function mergeDefs(...e){const t={};for(const n of e)Object.assign(t,Object.getOwnPropertyDescriptors(n));return Object.defineProperties({},t)}function esc(e){return JSON.stringify(e)}function slugify(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Ne="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function isObject(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}var ze=cached(()=>{if($e.jitless)return!1;if("undefined"!=typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(e){return!1}});function isPlainObject$2(e){if(!1===isObject(e))return!1;const t=e.constructor;if(void 0===t)return!0;if("function"!=typeof t)return!0;const n=t.prototype;return!1!==isObject(n)&&!1!==Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")}function shallowClone(e){return isPlainObject$2(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var Le=new Set(["string","number","symbol"]);function escapeRegex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function clone$1(e,t,n){const a=new e._zod.constr(t??e._zod.def);return t&&!n?.parent||(a._zod.parent=e),a}function normalizeParams(e){const t=e;if(!t)return{};if("string"==typeof t)return{error:()=>t};if(void 0!==t?.message){if(void 0!==t?.error)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,"string"==typeof t.error?{...t,error:()=>t.error}:t}function optionalKeys(e){return Object.keys(e).filter(t=>"optional"===e[t]._zod.optin&&"optional"===e[t]._zod.optout)}var je={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function pick(e,t){const n=e._zod.def,a=n.checks;if(a&&a.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");return clone$1(e,mergeDefs(e._zod.def,{get shape(){const e={};for(const a in t){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&(e[a]=n.shape[a])}return assignProp(this,"shape",e),e},checks:[]}))}function omit(e,t){const n=e._zod.def,a=n.checks;if(a&&a.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");return clone$1(e,mergeDefs(e._zod.def,{get shape(){const a={...e._zod.def.shape};for(const e in t){if(!(e in n.shape))throw new Error(`Unrecognized key: "${e}"`);t[e]&&delete a[e]}return assignProp(this,"shape",a),a},checks:[]}))}function extend(e,t){if(!isPlainObject$2(t))throw new Error("Invalid input to extend: expected a plain object");const n=e._zod.def.checks;if(n&&n.length>0){const n=e._zod.def.shape;for(const e in t)if(void 0!==Object.getOwnPropertyDescriptor(n,e))throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return clone$1(e,mergeDefs(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t};return assignProp(this,"shape",n),n}}))}function safeExtend(e,t){if(!isPlainObject$2(t))throw new Error("Invalid input to safeExtend: expected a plain object");return clone$1(e,mergeDefs(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t};return assignProp(this,"shape",n),n}}))}function merge(e,t){if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");return clone$1(e,mergeDefs(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t._zod.def.shape};return assignProp(this,"shape",n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function partial(e,t,n){const a=t._zod.def.checks;if(a&&a.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");return clone$1(t,mergeDefs(t._zod.def,{get shape(){const a=t._zod.def.shape,o={...a};if(n)for(const t in n){if(!(t in a))throw new Error(`Unrecognized key: "${t}"`);n[t]&&(o[t]=e?new e({type:"optional",innerType:a[t]}):a[t])}else for(const t in a)o[t]=e?new e({type:"optional",innerType:a[t]}):a[t];return assignProp(this,"shape",o),o},checks:[]}))}function required(e,t,n){return clone$1(t,mergeDefs(t._zod.def,{get shape(){const a=t._zod.def.shape,o={...a};if(n)for(const t in n){if(!(t in o))throw new Error(`Unrecognized key: "${t}"`);n[t]&&(o[t]=new e({type:"nonoptional",innerType:a[t]}))}else for(const t in a)o[t]=new e({type:"nonoptional",innerType:a[t]});return assignProp(this,"shape",o),o}}))}function aborted(e,t=0){if(!0===e.aborted)return!0;for(let n=t;n<e.issues.length;n++)if(!0!==e.issues[n]?.continue)return!0;return!1}function explicitlyAborted(e,t=0){if(!0===e.aborted)return!0;for(let n=t;n<e.issues.length;n++)if(!1===e.issues[n]?.continue)return!0;return!1}function prefixIssues(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function unwrapMessage(e){return"string"==typeof e?e:e?.message}function finalizeIssue(e,t,n){const a=e.message?e.message:unwrapMessage(e.inst?._zod.def?.error?.(e))??unwrapMessage(t?.error?.(e))??unwrapMessage(n.customError?.(e))??unwrapMessage(n.localeError?.(e))??"Invalid input",{inst:o,continue:i,input:s,...l}=e;return l.path??(l.path=[]),l.message=a,t?.reportInput&&(l.input=s),l}function getLengthableOrigin(e){return Array.isArray(e)?"array":"string"==typeof e?"string":"unknown"}function issue(...e){const[t,n,a]=e;return"string"==typeof t?{message:t,code:"custom",input:n,inst:a}:{...t}}var initializer$1=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,jsonStringifyReplacer,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Be=$constructor("$ZodError",initializer$1),Fe=$constructor("$ZodError",initializer$1,{Parent:Error});function flattenError(e,t=e=>e.message){const n={},a=[];for(const o of e.issues)o.path.length>0?(n[o.path[0]]=n[o.path[0]]||[],n[o.path[0]].push(t(o))):a.push(t(o));return{formErrors:a,fieldErrors:n}}function formatError(e,t=e=>e.message){const n={_errors:[]},processError=(e,a=[])=>{for(const o of e.issues)if("invalid_union"===o.code&&o.errors.length)o.errors.map(e=>processError({issues:e},[...a,...o.path]));else if("invalid_key"===o.code)processError({issues:o.issues},[...a,...o.path]);else if("invalid_element"===o.code)processError({issues:o.issues},[...a,...o.path]);else{const e=[...a,...o.path];if(0===e.length)n._errors.push(t(o));else{let a=n,i=0;for(;i<e.length;){const n=e[i];i!==e.length-1?a[n]=a[n]||{_errors:[]}:(a[n]=a[n]||{_errors:[]},a[n]._errors.push(t(o))),a=a[n],i++}}}};return processError(e),n}var _parse=e=>(t,n,a,o)=>{const i=a?{...a,async:!1}:{async:!1},s=t._zod.run({value:n,issues:[]},i);if(s instanceof Promise)throw new De;if(s.issues.length){const t=new(o?.Err??e)(s.issues.map(e=>finalizeIssue(e,i,config())));throw Ne(t,o?.callee),t}return s.value},_parseAsync=e=>async(t,n,a,o)=>{const i=a?{...a,async:!0}:{async:!0};let s=t._zod.run({value:n,issues:[]},i);if(s instanceof Promise&&(s=await s),s.issues.length){const t=new(o?.Err??e)(s.issues.map(e=>finalizeIssue(e,i,config())));throw Ne(t,o?.callee),t}return s.value},_safeParse=e=>(t,n,a)=>{const o=a?{...a,async:!1}:{async:!1},i=t._zod.run({value:n,issues:[]},o);if(i instanceof Promise)throw new De;return i.issues.length?{success:!1,error:new(e??Be)(i.issues.map(e=>finalizeIssue(e,o,config())))}:{success:!0,data:i.value}},qe=_safeParse(Fe),_safeParseAsync=e=>async(t,n,a)=>{const o=a?{...a,async:!0}:{async:!0};let i=t._zod.run({value:n,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?{success:!1,error:new e(i.issues.map(e=>finalizeIssue(e,o,config())))}:{success:!0,data:i.value}},Ue=_safeParseAsync(Fe),_encode=e=>(t,n,a)=>{const o=a?{...a,direction:"backward"}:{direction:"backward"};return _parse(e)(t,n,o)},_decode=e=>(t,n,a)=>_parse(e)(t,n,a),_encodeAsync=e=>async(t,n,a)=>{const o=a?{...a,direction:"backward"}:{direction:"backward"};return _parseAsync(e)(t,n,o)},_decodeAsync=e=>async(t,n,a)=>_parseAsync(e)(t,n,a),_safeEncode=e=>(t,n,a)=>{const o=a?{...a,direction:"backward"}:{direction:"backward"};return _safeParse(e)(t,n,o)},_safeDecode=e=>(t,n,a)=>_safeParse(e)(t,n,a),_safeEncodeAsync=e=>async(t,n,a)=>{const o=a?{...a,direction:"backward"}:{direction:"backward"};return _safeParseAsync(e)(t,n,o)},_safeDecodeAsync=e=>async(t,n,a)=>_safeParseAsync(e)(t,n,a),Ve=/^[cC][0-9a-z]{6,}$/,He=/^[0-9a-z]+$/,We=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Ge=/^[0-9a-vA-V]{20}$/,Ye=/^[A-Za-z0-9]{27}$/,Ke=/^[a-zA-Z0-9_-]{21}$/,Qe=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Ze=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,uuid=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Xe=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Je="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function emoji(){return new RegExp(Je,"u")}var et=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,tt=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,rt=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,nt=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,at=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,ot=/^[A-Za-z0-9_-]*$/,it=/^https?$/,st=/^\+[1-9]\d{6,14}$/,lt="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",ct=new RegExp(`^${lt}$`);function timeSource(e){const t="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"==typeof e.precision?-1===e.precision?`${t}`:0===e.precision?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function time$1(e){return new RegExp(`^${timeSource(e)}$`)}function datetime$1(e){const t=timeSource({precision:e.precision}),n=["Z"];e.local&&n.push(""),e.offset&&n.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const a=`${t}(?:${n.join("|")})`;return new RegExp(`^${lt}T(?:${a})$`)}var string$1=e=>new RegExp(`^${e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*"}$`),ut=/^-?\d+$/,dt=/^-?\d+(?:\.\d+)?$/,pt=/^[^A-Z]*$/,mt=/^[^a-z]*$/,ft=$constructor("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),gt={number:"number",bigint:"bigint",object:"date"},ht=$constructor("$ZodCheckLessThan",(e,t)=>{ft.init(e,t);const n=gt[typeof t.value];e._zod.onattach.push(e=>{const n=e._zod.bag,a=(t.inclusive?n.maximum:n.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<a&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=a=>{(t.inclusive?a.value<=t.value:a.value<t.value)||a.issues.push({origin:n,code:"too_big",maximum:"object"==typeof t.value?t.value.getTime():t.value,input:a.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),bt=$constructor("$ZodCheckGreaterThan",(e,t)=>{ft.init(e,t);const n=gt[typeof t.value];e._zod.onattach.push(e=>{const n=e._zod.bag,a=(t.inclusive?n.minimum:n.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>a&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=a=>{(t.inclusive?a.value>=t.value:a.value>t.value)||a.issues.push({origin:n,code:"too_small",minimum:"object"==typeof t.value?t.value.getTime():t.value,input:a.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),yt=$constructor("$ZodCheckMultipleOf",(e,t)=>{ft.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");("bigint"==typeof n.value?n.value%t.value!==BigInt(0):0!==floatSafeRemainder(n.value,t.value))&&n.issues.push({origin:typeof n.value,code:"not_multiple_of",divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),vt=$constructor("$ZodCheckNumberFormat",(e,t)=>{ft.init(e,t),t.format=t.format||"float64";const n=t.format?.includes("int"),a=n?"int":"number",[o,i]=je[t.format];e._zod.onattach.push(e=>{const a=e._zod.bag;a.format=t.format,a.minimum=o,a.maximum=i,n&&(a.pattern=ut)}),e._zod.check=s=>{const l=s.value;if(n){if(!Number.isInteger(l))return void s.issues.push({expected:a,format:t.format,code:"invalid_type",continue:!1,input:l,inst:e});if(!Number.isSafeInteger(l))return void(l>0?s.issues.push({input:l,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:a,inclusive:!0,continue:!t.abort}):s.issues.push({input:l,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:a,inclusive:!0,continue:!t.abort}))}l<o&&s.issues.push({origin:"number",input:l,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),l>i&&s.issues.push({origin:"number",input:l,code:"too_big",maximum:i,inclusive:!0,inst:e,continue:!t.abort})}}),St=$constructor("$ZodCheckMaxLength",(e,t)=>{var n;ft.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!nullish(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const n=e._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{const a=n.value;if(a.length<=t.maximum)return;const o=getLengthableOrigin(a);n.issues.push({origin:o,code:"too_big",maximum:t.maximum,inclusive:!0,input:a,inst:e,continue:!t.abort})}}),xt=$constructor("$ZodCheckMinLength",(e,t)=>{var n;ft.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!nullish(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const n=e._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{const a=n.value;if(a.length>=t.minimum)return;const o=getLengthableOrigin(a);n.issues.push({origin:o,code:"too_small",minimum:t.minimum,inclusive:!0,input:a,inst:e,continue:!t.abort})}}),Ct=$constructor("$ZodCheckLengthEquals",(e,t)=>{var n;ft.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!nullish(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{const a=n.value,o=a.length;if(o===t.length)return;const i=getLengthableOrigin(a),s=o>t.length;n.issues.push({origin:i,...s?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),wt=$constructor("$ZodCheckStringFormat",(e,t)=>{var n,a;ft.init(e,t),e._zod.onattach.push(e=>{const n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??(n.patterns=new Set),n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,t.pattern.test(n.value)||n.issues.push({origin:"string",code:"invalid_format",format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(a=e._zod).check??(a.check=()=>{})}),kt=$constructor("$ZodCheckRegex",(e,t)=>{wt.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,t.pattern.test(n.value)||n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Et=$constructor("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=pt),wt.init(e,t)}),_t=$constructor("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=mt),wt.init(e,t)}),Pt=$constructor("$ZodCheckIncludes",(e,t)=>{ft.init(e,t);const n=escapeRegex(t.includes),a=new RegExp("number"==typeof t.position?`^.{${t.position}}${n}`:n);t.pattern=a,e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(a)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Tt=$constructor("$ZodCheckStartsWith",(e,t)=>{ft.init(e,t);const n=new RegExp(`^${escapeRegex(t.prefix)}.*`);t.pattern??(t.pattern=n),e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),At=$constructor("$ZodCheckEndsWith",(e,t)=>{ft.init(e,t);const n=new RegExp(`.*${escapeRegex(t.suffix)}$`);t.pattern??(t.pattern=n),e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Rt=$constructor("$ZodCheckOverwrite",(e,t)=>{ft.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),Mt=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if("function"==typeof e)return e(this,{execution:"sync"}),void e(this,{execution:"async"});const t=e.split("\n").filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),a=t.map(e=>e.slice(n)).map(e=>" ".repeat(2*this.indent)+e);for(const o of a)this.content.push(o)}compile(){const e=Function,t=this?.args;return new e(...t,[...(this?.content??[""]).map(e=>` ${e}`)].join("\n"))}},Dt={major:4,minor:4,patch:3},Ot=$constructor("$ZodType",(e,t)=>{var n;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Dt;const a=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&a.unshift(e);for(const o of a)for(const t of o._zod.onattach)t(e);if(0===a.length)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{const runChecks=(e,t,n)=>{let a,o=aborted(e);for(const i of t){if(i._zod.def.when){if(explicitlyAborted(e))continue;if(!i._zod.def.when(e))continue}else if(o)continue;const t=e.issues.length,s=i._zod.check(e);if(s instanceof Promise&&!1===n?.async)throw new De;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,e.issues.length!==t&&(o||(o=aborted(e,t)))});else{if(e.issues.length===t)continue;o||(o=aborted(e,t))}}return a?a.then(()=>e):e},handleCanaryResult=(t,n,o)=>{if(aborted(t))return t.aborted=!0,t;const i=runChecks(n,a,o);if(i instanceof Promise){if(!1===o.async)throw new De;return i.then(t=>e._zod.parse(t,o))}return e._zod.parse(i,o)};e._zod.run=(t,n)=>{if(n.skipChecks)return e._zod.parse(t,n);if("backward"===n.direction){const a=e._zod.parse({value:t.value,issues:[]},{...n,skipChecks:!0});return a instanceof Promise?a.then(e=>handleCanaryResult(e,t,n)):handleCanaryResult(a,t,n)}const o=e._zod.parse(t,n);if(o instanceof Promise){if(!1===n.async)throw new De;return o.then(e=>runChecks(e,a,n))}return runChecks(o,a,n)}}defineLazy(e,"~standard",()=>({validate:t=>{try{const n=qe(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch(n){return Ue(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:"zod",version:1}))}),$t=$constructor("$ZodString",(e,t)=>{Ot.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??string$1(e._zod.bag),e._zod.parse=(n,a)=>{if(t.coerce)try{n.value=String(n.value)}catch(a){}return"string"==typeof n.value||n.issues.push({expected:"string",code:"invalid_type",input:n.value,inst:e}),n}}),It=$constructor("$ZodStringFormat",(e,t)=>{wt.init(e,t),$t.init(e,t)}),Nt=$constructor("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Ze),It.init(e,t)}),zt=$constructor("$ZodUUID",(e,t)=>{if(t.version){const e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(void 0===e)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=uuid(e))}else t.pattern??(t.pattern=uuid());It.init(e,t)}),Lt=$constructor("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Xe),It.init(e,t)}),jt=$constructor("$ZodURL",(e,t)=>{It.init(e,t),e._zod.check=n=>{try{const a=n.value.trim();if(!t.normalize&&t.protocol?.source===it.source&&!/^https?:\/\//i.test(a))return void n.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:n.value,inst:e,continue:!t.abort});const o=new URL(a);return t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(o.hostname)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),void(t.normalize?n.value=o.href:n.value=a)}catch(a){n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:e,continue:!t.abort})}}}),Bt=$constructor("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=emoji()),It.init(e,t)}),Ft=$constructor("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=Ke),It.init(e,t)}),qt=$constructor("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=Ve),It.init(e,t)}),Ut=$constructor("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=He),It.init(e,t)}),Vt=$constructor("$ZodULID",(e,t)=>{t.pattern??(t.pattern=We),It.init(e,t)}),Ht=$constructor("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Ge),It.init(e,t)}),Wt=$constructor("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=Ye),It.init(e,t)}),Gt=$constructor("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=datetime$1(t)),It.init(e,t)}),Yt=$constructor("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=ct),It.init(e,t)}),Kt=$constructor("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=time$1(t)),It.init(e,t)}),Qt=$constructor("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Qe),It.init(e,t)}),Zt=$constructor("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=et),It.init(e,t),e._zod.bag.format="ipv4"}),Xt=$constructor("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=tt),It.init(e,t),e._zod.bag.format="ipv6",e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:"invalid_format",format:"ipv6",input:n.value,inst:e,continue:!t.abort})}}}),Jt=$constructor("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=rt),It.init(e,t)}),er=$constructor("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=nt),It.init(e,t),e._zod.check=n=>{const a=n.value.split("/");try{if(2!==a.length)throw new Error;const[e,t]=a;if(!t)throw new Error;const n=Number(t);if(`${n}`!==t)throw new Error;if(n<0||n>128)throw new Error;new URL(`http://[${e}]`)}catch{n.issues.push({code:"invalid_format",format:"cidrv6",input:n.value,inst:e,continue:!t.abort})}}});function isValidBase64(e){if(""===e)return!0;if(/\s/.test(e))return!1;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var tr=$constructor("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=at),It.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=n=>{isValidBase64(n.value)||n.issues.push({code:"invalid_format",format:"base64",input:n.value,inst:e,continue:!t.abort})}});function isValidBase64URL(e){if(!ot.test(e))return!1;const t=e.replace(/[-_]/g,e=>"-"===e?"+":"/");return isValidBase64(t.padEnd(4*Math.ceil(t.length/4),"="))}var rr=$constructor("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=ot),It.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=n=>{isValidBase64URL(n.value)||n.issues.push({code:"invalid_format",format:"base64url",input:n.value,inst:e,continue:!t.abort})}}),nr=$constructor("$ZodE164",(e,t)=>{t.pattern??(t.pattern=st),It.init(e,t)});function isValidJWT(e,t=null){try{const n=e.split(".");if(3!==n.length)return!1;const[a]=n;if(!a)return!1;const o=JSON.parse(atob(a));return(!("typ"in o)||"JWT"===o?.typ)&&(!!o.alg&&(!t||"alg"in o&&o.alg===t))}catch{return!1}}var ar=$constructor("$ZodJWT",(e,t)=>{It.init(e,t),e._zod.check=n=>{isValidJWT(n.value,t.alg)||n.issues.push({code:"invalid_format",format:"jwt",input:n.value,inst:e,continue:!t.abort})}}),or=$constructor("$ZodNumber",(e,t)=>{Ot.init(e,t),e._zod.pattern=e._zod.bag.pattern??dt,e._zod.parse=(n,a)=>{if(t.coerce)try{n.value=Number(n.value)}catch(s){}const o=n.value;if("number"==typeof o&&!Number.isNaN(o)&&Number.isFinite(o))return n;const i="number"==typeof o?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return n.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...i?{received:i}:{}}),n}}),ir=$constructor("$ZodNumberFormat",(e,t)=>{vt.init(e,t),or.init(e,t)}),sr=$constructor("$ZodUnknown",(e,t)=>{Ot.init(e,t),e._zod.parse=e=>e}),lr=$constructor("$ZodNever",(e,t)=>{Ot.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:e}),t)});function handleArrayResult(e,t,n){e.issues.length&&t.issues.push(...prefixIssues(n,e.issues)),t.value[n]=e.value}var cr=$constructor("$ZodArray",(e,t)=>{Ot.init(e,t),e._zod.parse=(n,a)=>{const o=n.value;if(!Array.isArray(o))return n.issues.push({expected:"array",code:"invalid_type",input:o,inst:e}),n;n.value=Array(o.length);const i=[];for(let e=0;e<o.length;e++){const s=o[e],l=t.element._zod.run({value:s,issues:[]},a);l instanceof Promise?i.push(l.then(t=>handleArrayResult(t,n,e))):handleArrayResult(l,n,e)}return i.length?Promise.all(i).then(()=>n):n}});function handlePropertyResult(e,t,n,a,o,i){const s=n in a;if(e.issues.length){if(o&&i&&!s)return;t.issues.push(...prefixIssues(n,e.issues))}s||o?void 0===e.value?s&&(t.value[n]=void 0):t.value[n]=e.value:e.issues.length||t.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[n]})}function normalizeDef(e){const t=Object.keys(e.shape);for(const a of t)if(!e.shape?.[a]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${a}": expected a Zod schema`);const n=optionalKeys(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function handleCatchall(e,t,n,a,o,i){const s=[],l=o.keySet,c=o.catchall._zod,u=c.def.type,d="optional"===c.optin,p="optional"===c.optout;for(const m in t){if("__proto__"===m)continue;if(l.has(m))continue;if("never"===u){s.push(m);continue}const o=c.run({value:t[m],issues:[]},a);o instanceof Promise?e.push(o.then(e=>handlePropertyResult(e,n,m,t,d,p))):handlePropertyResult(o,n,m,t,d,p)}return s.length&&n.issues.push({code:"unrecognized_keys",keys:s,input:t,inst:i}),e.length?Promise.all(e).then(()=>n):n}var ur=$constructor("$ZodObject",(e,t)=>{if(Ot.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){const e=t.shape;Object.defineProperty(t,"shape",{get:()=>{const n={...e};return Object.defineProperty(t,"shape",{value:n}),n}})}const n=cached(()=>normalizeDef(t));defineLazy(e._zod,"propValues",()=>{const e=t.shape,n={};for(const t in e){const a=e[t]._zod;if(a.values){n[t]??(n[t]=new Set);for(const e of a.values)n[t].add(e)}}return n});const a=isObject,o=t.catchall;let i;e._zod.parse=(t,s)=>{i??(i=n.value);const l=t.value;if(!a(l))return t.issues.push({expected:"object",code:"invalid_type",input:l,inst:e}),t;t.value={};const c=[],u=i.shape;for(const e of i.keys){const n=u[e],a="optional"===n._zod.optin,o="optional"===n._zod.optout,i=n._zod.run({value:l[e],issues:[]},s);i instanceof Promise?c.push(i.then(n=>handlePropertyResult(n,t,e,l,a,o))):handlePropertyResult(i,t,e,l,a,o)}return o?handleCatchall(c,l,t,s,n.value,e):c.length?Promise.all(c).then(()=>t):t}}),dr=$constructor("$ZodObjectJIT",(e,t)=>{ur.init(e,t);const n=e._zod.parse,a=cached(()=>normalizeDef(t)),generateFastpass=e=>{const t=new Mt(["shape","payload","ctx"]),n=a.value,parseStr=e=>{const t=esc(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write("const input = payload.value;");const o=Object.create(null);let i=0;for(const a of n.keys)o[a]="key_"+i++;t.write("const newResult = {};");for(const a of n.keys){const n=o[a],i=esc(a),s=e[a],l="optional"===s?._zod?.optin,c="optional"===s?._zod?.optout;t.write(`const ${n} = ${parseStr(a)};`),l&&c?t.write(`\n if (${n}.issues.length) {\n if (${i} in input) {\n payload.issues = payload.issues.concat(${n}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${i}, ...iss.path] : [${i}]\n })));\n }\n }\n \n if (${n}.value === undefined) {\n if (${i} in input) {\n newResult[${i}] = undefined;\n }\n } else {\n newResult[${i}] = ${n}.value;\n }\n \n `):l?t.write(`\n if (${n}.issues.length) {\n payload.issues = payload.issues.concat(${n}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${i}, ...iss.path] : [${i}]\n })));\n }\n \n if (${n}.value === undefined) {\n if (${i} in input) {\n newResult[${i}] = undefined;\n }\n } else {\n newResult[${i}] = ${n}.value;\n }\n \n `):t.write(`\n const ${n}_present = ${i} in input;\n if (${n}.issues.length) {\n payload.issues = payload.issues.concat(${n}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${i}, ...iss.path] : [${i}]\n })));\n }\n if (!${n}_present && !${n}.issues.length) {\n payload.issues.push({\n code: "invalid_type",\n expected: "nonoptional",\n input: undefined,\n path: [${i}]\n });\n }\n\n if (${n}_present) {\n if (${n}.value === undefined) {\n newResult[${i}] = undefined;\n } else {\n newResult[${i}] = ${n}.value;\n }\n }\n\n `)}t.write("payload.value = newResult;"),t.write("return payload;");const s=t.compile();return(t,n)=>s(e,t,n)};let o;const i=isObject,s=!$e.jitless,l=s&&ze.value,c=t.catchall;let u;e._zod.parse=(d,p)=>{u??(u=a.value);const m=d.value;return i(m)?s&&l&&!1===p?.async&&!0!==p.jitless?(o||(o=generateFastpass(t.shape)),d=o(d,p),c?handleCatchall([],m,d,p,u,e):d):n(d,p):(d.issues.push({expected:"object",code:"invalid_type",input:m,inst:e}),d)}});function handleUnionResults(e,t,n,a){for(const i of e)if(0===i.issues.length)return t.value=i.value,t;const o=e.filter(e=>!aborted(e));return 1===o.length?(t.value=o[0].value,o[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>finalizeIssue(e,a,config())))}),t)}var pr=$constructor("$ZodUnion",(e,t)=>{Ot.init(e,t),defineLazy(e._zod,"optin",()=>t.options.some(e=>"optional"===e._zod.optin)?"optional":void 0),defineLazy(e._zod,"optout",()=>t.options.some(e=>"optional"===e._zod.optout)?"optional":void 0),defineLazy(e._zod,"values",()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),defineLazy(e._zod,"pattern",()=>{if(t.options.every(e=>e._zod.pattern)){const e=t.options.map(e=>e._zod.pattern);return new RegExp(`^(${e.map(e=>cleanRegex(e.source)).join("|")})$`)}});const n=1===t.options.length?t.options[0]._zod.run:null;e._zod.parse=(a,o)=>{if(n)return n(a,o);let i=!1;const s=[];for(const e of t.options){const t=e._zod.run({value:a.value,issues:[]},o);if(t instanceof Promise)s.push(t),i=!0;else{if(0===t.issues.length)return t;s.push(t)}}return i?Promise.all(s).then(t=>handleUnionResults(t,a,e,o)):handleUnionResults(s,a,e,o)}}),mr=$constructor("$ZodIntersection",(e,t)=>{Ot.init(e,t),e._zod.parse=(e,n)=>{const a=e.value,o=t.left._zod.run({value:a,issues:[]},n),i=t.right._zod.run({value:a,issues:[]},n);return o instanceof Promise||i instanceof Promise?Promise.all([o,i]).then(([t,n])=>handleIntersectionResults(e,t,n)):handleIntersectionResults(e,o,i)}});function mergeValues(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e===+t)return{valid:!0,data:e};if(isPlainObject$2(e)&&isPlainObject$2(t)){const n=Object.keys(t),a=Object.keys(e).filter(e=>-1!==n.indexOf(e)),o={...e,...t};for(const i of a){const n=mergeValues(e[i],t[i]);if(!n.valid)return{valid:!1,mergeErrorPath:[i,...n.mergeErrorPath]};o[i]=n.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};const n=[];for(let a=0;a<e.length;a++){const o=mergeValues(e[a],t[a]);if(!o.valid)return{valid:!1,mergeErrorPath:[a,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function handleIntersectionResults(e,t,n){const a=new Map;let o;for(const l of t.issues)if("unrecognized_keys"===l.code){o??(o=l);for(const e of l.keys)a.has(e)||a.set(e,{}),a.get(e).l=!0}else e.issues.push(l);for(const l of n.issues)if("unrecognized_keys"===l.code)for(const e of l.keys)a.has(e)||a.set(e,{}),a.get(e).r=!0;else e.issues.push(l);const i=[...a].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(i.length&&o&&e.issues.push({...o,keys:i}),aborted(e))return e;const s=mergeValues(t.value,n.value);if(!s.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(s.mergeErrorPath)}`);return e.value=s.data,e}var fr=$constructor("$ZodRecord",(e,t)=>{Ot.init(e,t),e._zod.parse=(n,a)=>{const o=n.value;if(!isPlainObject$2(o))return n.issues.push({expected:"record",code:"invalid_type",input:o,inst:e}),n;const i=[],s=t.keyType._zod.values;if(s){n.value={};const l=new Set;for(const u of s)if("string"==typeof u||"number"==typeof u||"symbol"==typeof u){l.add("number"==typeof u?u.toString():u);const s=t.keyType._zod.run({value:u,issues:[]},a);if(s instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(s.issues.length){n.issues.push({code:"invalid_key",origin:"record",issues:s.issues.map(e=>finalizeIssue(e,a,config())),input:u,path:[u],inst:e});continue}const c=s.value,d=t.valueType._zod.run({value:o[u],issues:[]},a);d instanceof Promise?i.push(d.then(e=>{e.issues.length&&n.issues.push(...prefixIssues(u,e.issues)),n.value[c]=e.value})):(d.issues.length&&n.issues.push(...prefixIssues(u,d.issues)),n.value[c]=d.value)}let c;for(const e in o)l.has(e)||(c=c??[],c.push(e));c&&c.length>0&&n.issues.push({code:"unrecognized_keys",input:o,inst:e,keys:c})}else{n.value={};for(const s of Reflect.ownKeys(o)){if("__proto__"===s)continue;if(!Object.prototype.propertyIsEnumerable.call(o,s))continue;let l=t.keyType._zod.run({value:s,issues:[]},a);if(l instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if("string"==typeof s&&dt.test(s)&&l.issues.length){const e=t.keyType._zod.run({value:Number(s),issues:[]},a);if(e instanceof Promise)throw new Error("Async schemas not supported in object keys currently");0===e.issues.length&&(l=e)}if(l.issues.length){"loose"===t.mode?n.value[s]=o[s]:n.issues.push({code:"invalid_key",origin:"record",issues:l.issues.map(e=>finalizeIssue(e,a,config())),input:s,path:[s],inst:e});continue}const c=t.valueType._zod.run({value:o[s],issues:[]},a);c instanceof Promise?i.push(c.then(e=>{e.issues.length&&n.issues.push(...prefixIssues(s,e.issues)),n.value[l.value]=e.value})):(c.issues.length&&n.issues.push(...prefixIssues(s,c.issues)),n.value[l.value]=c.value)}}return i.length?Promise.all(i).then(()=>n):n}}),gr=$constructor("$ZodEnum",(e,t)=>{Ot.init(e,t);const n=getEnumValues(t.entries),a=new Set(n);e._zod.values=a,e._zod.pattern=new RegExp(`^(${n.filter(e=>Le.has(typeof e)).map(e=>"string"==typeof e?escapeRegex(e):e.toString()).join("|")})$`),e._zod.parse=(t,o)=>{const i=t.value;return a.has(i)||t.issues.push({code:"invalid_value",values:n,input:i,inst:e}),t}}),hr=$constructor("$ZodTransform",(e,t)=>{Ot.init(e,t),e._zod.optin="optional",e._zod.parse=(n,a)=>{if("backward"===a.direction)throw new Oe(e.constructor.name);const o=t.transform(n.value,n);if(a.async)return(o instanceof Promise?o:Promise.resolve(o)).then(e=>(n.value=e,n.fallback=!0,n));if(o instanceof Promise)throw new De;return n.value=o,n.fallback=!0,n}});function handleOptionalResult(e,t){return void 0===t&&(e.issues.length||e.fallback)?{issues:[],value:void 0}:e}var br=$constructor("$ZodOptional",(e,t)=>{Ot.init(e,t),e._zod.optin="optional",e._zod.optout="optional",defineLazy(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),defineLazy(e._zod,"pattern",()=>{const e=t.innerType._zod.pattern;return e?new RegExp(`^(${cleanRegex(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if("optional"===t.innerType._zod.optin){const a=e.value,o=t.innerType._zod.run(e,n);return o instanceof Promise?o.then(e=>handleOptionalResult(e,a)):handleOptionalResult(o,a)}return void 0===e.value?e:t.innerType._zod.run(e,n)}}),yr=$constructor("$ZodExactOptional",(e,t)=>{br.init(e,t),defineLazy(e._zod,"values",()=>t.innerType._zod.values),defineLazy(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),vr=$constructor("$ZodNullable",(e,t)=>{Ot.init(e,t),defineLazy(e._zod,"optin",()=>t.innerType._zod.optin),defineLazy(e._zod,"optout",()=>t.innerType._zod.optout),defineLazy(e._zod,"pattern",()=>{const e=t.innerType._zod.pattern;return e?new RegExp(`^(${cleanRegex(e.source)}|null)$`):void 0}),defineLazy(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>null===e.value?e:t.innerType._zod.run(e,n)}),Sr=$constructor("$ZodDefault",(e,t)=>{Ot.init(e,t),e._zod.optin="optional",defineLazy(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if("backward"===n.direction)return t.innerType._zod.run(e,n);if(void 0===e.value)return e.value=t.defaultValue,e;const a=t.innerType._zod.run(e,n);return a instanceof Promise?a.then(e=>handleDefaultResult(e,t)):handleDefaultResult(a,t)}});function handleDefaultResult(e,t){return void 0===e.value&&(e.value=t.defaultValue),e}var xr=$constructor("$ZodPrefault",(e,t)=>{Ot.init(e,t),e._zod.optin="optional",defineLazy(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,n)=>("backward"===n.direction||void 0===e.value&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),Cr=$constructor("$ZodNonOptional",(e,t)=>{Ot.init(e,t),defineLazy(e._zod,"values",()=>{const e=t.innerType._zod.values;return e?new Set([...e].filter(e=>void 0!==e)):void 0}),e._zod.parse=(n,a)=>{const o=t.innerType._zod.run(n,a);return o instanceof Promise?o.then(t=>handleNonOptionalResult(t,e)):handleNonOptionalResult(o,e)}});function handleNonOptionalResult(e,t){return e.issues.length||void 0!==e.value||e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}var wr=$constructor("$ZodCatch",(e,t)=>{Ot.init(e,t),e._zod.optin="optional",defineLazy(e._zod,"optout",()=>t.innerType._zod.optout),defineLazy(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if("backward"===n.direction)return t.innerType._zod.run(e,n);const a=t.innerType._zod.run(e,n);return a instanceof Promise?a.then(a=>(e.value=a.value,a.issues.length&&(e.value=t.catchValue({...e,error:{issues:a.issues.map(e=>finalizeIssue(e,n,config()))},input:e.value}),e.issues=[],e.fallback=!0),e)):(e.value=a.value,a.issues.length&&(e.value=t.catchValue({...e,error:{issues:a.issues.map(e=>finalizeIssue(e,n,config()))},input:e.value}),e.issues=[],e.fallback=!0),e)}}),kr=$constructor("$ZodPipe",(e,t)=>{Ot.init(e,t),defineLazy(e._zod,"values",()=>t.in._zod.values),defineLazy(e._zod,"optin",()=>t.in._zod.optin),defineLazy(e._zod,"optout",()=>t.out._zod.optout),defineLazy(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if("backward"===n.direction){const a=t.out._zod.run(e,n);return a instanceof Promise?a.then(e=>handlePipeResult(e,t.in,n)):handlePipeResult(a,t.in,n)}const a=t.in._zod.run(e,n);return a instanceof Promise?a.then(e=>handlePipeResult(e,t.out,n)):handlePipeResult(a,t.out,n)}});function handlePipeResult(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues,fallback:e.fallback},n)}var Er=$constructor("$ZodReadonly",(e,t)=>{Ot.init(e,t),defineLazy(e._zod,"propValues",()=>t.innerType._zod.propValues),defineLazy(e._zod,"values",()=>t.innerType._zod.values),defineLazy(e._zod,"optin",()=>t.innerType?._zod?.optin),defineLazy(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if("backward"===n.direction)return t.innerType._zod.run(e,n);const a=t.innerType._zod.run(e,n);return a instanceof Promise?a.then(handleReadonlyResult):handleReadonlyResult(a)}});function handleReadonlyResult(e){return e.value=Object.freeze(e.value),e}var _r,Pr=$constructor("$ZodCustom",(e,t)=>{ft.init(e,t),Ot.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{const a=n.value,o=t.fn(a);if(o instanceof Promise)return o.then(t=>handleRefineResult(t,n,a,e));handleRefineResult(o,n,a,e)}});function handleRefineResult(e,t,n,a){if(!e){const e={code:"custom",input:n,inst:a,path:[...a._zod.def.path??[]],continue:!a._zod.def.abort};a._zod.def.params&&(e.params=a._zod.def.params),t.issues.push(issue(e))}}var Tr=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){const n=t[0];return this._map.set(e,n),n&&"object"==typeof n&&"id"in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){const t=this._map.get(e);return t&&"object"==typeof t&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){const t=e._zod.parent;if(t){const n={...this.get(t)??{}};delete n.id;const a={...n,...this._map.get(e)};return Object.keys(a).length?a:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function registry(){return new Tr}(_r=globalThis).__zod_globalRegistry??(_r.__zod_globalRegistry=registry());var Ar=globalThis.__zod_globalRegistry;function _string(e,t){return new e({type:"string",...normalizeParams(t)})}function _email(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...normalizeParams(t)})}function _guid(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...normalizeParams(t)})}function _uuid(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...normalizeParams(t)})}function _uuidv4(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...normalizeParams(t)})}function _uuidv6(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...normalizeParams(t)})}function _uuidv7(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...normalizeParams(t)})}function _url(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...normalizeParams(t)})}function _emoji(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...normalizeParams(t)})}function _nanoid(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...normalizeParams(t)})}function _cuid(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...normalizeParams(t)})}function _cuid2(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...normalizeParams(t)})}function _ulid(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...normalizeParams(t)})}function _xid(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...normalizeParams(t)})}function _ksuid(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...normalizeParams(t)})}function _ipv4(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...normalizeParams(t)})}function _ipv6(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...normalizeParams(t)})}function _cidrv4(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...normalizeParams(t)})}function _cidrv6(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...normalizeParams(t)})}function _base64(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...normalizeParams(t)})}function _base64url(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...normalizeParams(t)})}function _e164(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...normalizeParams(t)})}function _jwt(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...normalizeParams(t)})}function _isoDateTime(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...normalizeParams(t)})}function _isoDate(e,t){return new e({type:"string",format:"date",check:"string_format",...normalizeParams(t)})}function _isoTime(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...normalizeParams(t)})}function _isoDuration(e,t){return new e({type:"string",format:"duration",check:"string_format",...normalizeParams(t)})}function _coercedNumber(e,t){return new e({type:"number",coerce:!0,checks:[],...normalizeParams(t)})}function _int(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...normalizeParams(t)})}function _unknown(e){return new e({type:"unknown"})}function _never(e,t){return new e({type:"never",...normalizeParams(t)})}function _lt(e,t){return new ht({check:"less_than",...normalizeParams(t),value:e,inclusive:!1})}function _lte(e,t){return new ht({check:"less_than",...normalizeParams(t),value:e,inclusive:!0})}function _gt(e,t){return new bt({check:"greater_than",...normalizeParams(t),value:e,inclusive:!1})}function _gte(e,t){return new bt({check:"greater_than",...normalizeParams(t),value:e,inclusive:!0})}function _multipleOf(e,t){return new yt({check:"multiple_of",...normalizeParams(t),value:e})}function _maxLength(e,t){return new St({check:"max_length",...normalizeParams(t),maximum:e})}function _minLength(e,t){return new xt({check:"min_length",...normalizeParams(t),minimum:e})}function _length(e,t){return new Ct({check:"length_equals",...normalizeParams(t),length:e})}function _regex(e,t){return new kt({check:"string_format",format:"regex",...normalizeParams(t),pattern:e})}function _lowercase(e){return new Et({check:"string_format",format:"lowercase",...normalizeParams(e)})}function _uppercase(e){return new _t({check:"string_format",format:"uppercase",...normalizeParams(e)})}function _includes(e,t){return new Pt({check:"string_format",format:"includes",...normalizeParams(t),includes:e})}function _startsWith(e,t){return new Tt({check:"string_format",format:"starts_with",...normalizeParams(t),prefix:e})}function _endsWith(e,t){return new At({check:"string_format",format:"ends_with",...normalizeParams(t),suffix:e})}function _overwrite(e){return new Rt({check:"overwrite",tx:e})}function _normalize(e){return _overwrite(t=>t.normalize(e))}function _trim(){return _overwrite(e=>e.trim())}function _toLowerCase(){return _overwrite(e=>e.toLowerCase())}function _toUpperCase(){return _overwrite(e=>e.toUpperCase())}function _slugify(){return _overwrite(e=>slugify(e))}function _array(e,t,n){return new e({type:"array",element:t,...normalizeParams(n)})}function _refine(e,t,n){return new e({type:"custom",check:"custom",fn:t,...normalizeParams(n)})}function _superRefine(e,t){const n=_check(t=>(t.addIssue=e=>{if("string"==typeof e)t.issues.push(issue(e,t.value,n._zod.def));else{const a=e;a.fatal&&(a.continue=!1),a.code??(a.code="custom"),a.input??(a.input=t.value),a.inst??(a.inst=n),a.continue??(a.continue=!n._zod.def.abort),t.issues.push(issue(a))}},e(t.value,t)),t);return n}function _check(e,t){const n=new ft({check:"custom",...normalizeParams(t)});return n._zod.check=e,n}function initializeContext(e){let t=e?.target??"draft-2020-12";return"draft-4"===t&&(t="draft-04"),"draft-7"===t&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??Ar,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function process(e,t,n={path:[],schemaPath:[]}){var a;const o=e._zod.def,i=t.seen.get(e);if(i)return i.count++,n.schemaPath.includes(e)&&(i.cycle=n.path),i.schema;const s={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,s);const l=e._zod.toJSONSchema?.();if(l)s.schema=l;else{const a={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,s.schema,a);else{const n=s.schema,i=t.processors[o.type];if(!i)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);i(e,t,n,a)}const i=e._zod.parent;i&&(s.ref||(s.ref=i),process(i,t,a),t.seen.get(i).isParent=!0)}const c=t.metadataRegistry.get(e);return c&&Object.assign(s.schema,c),"input"===t.io&&isTransforming(e)&&(delete s.schema.examples,delete s.schema.default),"input"===t.io&&"_prefault"in s.schema&&((a=s.schema).default??(a.default=s.schema._prefault)),delete s.schema._prefault,t.seen.get(e).schema}function extractDefs(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const a=new Map;for(const o of e.seen.entries()){const t=e.metadataRegistry.get(o[0])?.id;if(t){const e=a.get(t);if(e&&e!==o[0])throw new Error(`Duplicate schema id "${t}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);a.set(t,o[0])}}const makeURI=t=>{const a="draft-2020-12"===e.target?"$defs":"definitions";if(e.external){const n=e.external.registry.get(t[0])?.id,o=e.external.uri??(e=>e);if(n)return{ref:o(n)};const i=t[1].defId??t[1].schema.id??"schema"+e.counter++;return t[1].defId=i,{defId:i,ref:`${o("__shared")}#/${a}/${i}`}}if(t[1]===n)return{ref:"#"};const o=`#/${a}/`,i=t[1].schema.id??"__schema"+e.counter++;return{defId:i,ref:o+i}},extractToDef=e=>{if(e[1].schema.$ref)return;const t=e[1],{ref:n,defId:a}=makeURI(e);t.def={...t.schema},a&&(t.defId=a);const o=t.schema;for(const i in o)delete o[i];o.$ref=n};if("throw"===e.cycles)for(const o of e.seen.entries()){const e=o[1];if(e.cycle)throw new Error(`Cycle detected: #/${e.cycle?.join("/")}/<root>\n\nSet the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const o of e.seen.entries()){const n=o[1];if(t!==o[0]){if(e.external){const n=e.external.registry.get(o[0])?.id;if(t!==o[0]&&n){extractToDef(o);continue}}(e.metadataRegistry.get(o[0])?.id||n.cycle||n.count>1&&"ref"===e.reused)&&extractToDef(o)}else extractToDef(o)}}function finalize$1(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const flattenRef=t=>{const n=e.seen.get(t);if(null===n.ref)return;const a=n.def??n.schema,o={...a},i=n.ref;if(n.ref=null,i){flattenRef(i);const n=e.seen.get(i),s=n.schema;if(!s.$ref||"draft-07"!==e.target&&"draft-04"!==e.target&&"openapi-3.0"!==e.target?Object.assign(a,s):(a.allOf=a.allOf??[],a.allOf.push(s)),Object.assign(a,o),t._zod.parent===i)for(const e in a)"$ref"!==e&&"allOf"!==e&&(e in o||delete a[e]);if(s.$ref&&n.def)for(const e in a)"$ref"!==e&&"allOf"!==e&&e in n.def&&JSON.stringify(a[e])===JSON.stringify(n.def[e])&&delete a[e]}const s=t._zod.parent;if(s&&s!==i){flattenRef(s);const t=e.seen.get(s);if(t?.schema.$ref&&(a.$ref=t.schema.$ref,t.def))for(const e in a)"$ref"!==e&&"allOf"!==e&&e in t.def&&JSON.stringify(a[e])===JSON.stringify(t.def[e])&&delete a[e]}e.override({zodSchema:t,jsonSchema:a,path:n.path??[]})};for(const l of[...e.seen.entries()].reverse())flattenRef(l[0]);const a={};if("draft-2020-12"===e.target?a.$schema="https://json-schema.org/draft/2020-12/schema":"draft-07"===e.target?a.$schema="http://json-schema.org/draft-07/schema#":"draft-04"===e.target?a.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const n=e.external.registry.get(t)?.id;if(!n)throw new Error("Schema is missing an `id` property");a.$id=e.external.uri(n)}Object.assign(a,n.def??n.schema);const o=e.metadataRegistry.get(t)?.id;void 0!==o&&a.id===o&&delete a.id;const i=e.external?.defs??{};for(const l of e.seen.entries()){const e=l[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,i[e.defId]=e.def)}e.external||Object.keys(i).length>0&&("draft-2020-12"===e.target?a.$defs=i:a.definitions=i);try{const n=JSON.parse(JSON.stringify(a));return Object.defineProperty(n,"~standard",{value:{...t["~standard"],jsonSchema:{input:createStandardJSONSchemaMethod(t,"input",e.processors),output:createStandardJSONSchemaMethod(t,"output",e.processors)}},enumerable:!1,writable:!1}),n}catch(s){throw new Error("Error converting schema to JSON.")}}function isTransforming(e,t){const n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);const a=e._zod.def;if("transform"===a.type)return!0;if("array"===a.type)return isTransforming(a.element,n);if("set"===a.type)return isTransforming(a.valueType,n);if("lazy"===a.type)return isTransforming(a.getter(),n);if("promise"===a.type||"optional"===a.type||"nonoptional"===a.type||"nullable"===a.type||"readonly"===a.type||"default"===a.type||"prefault"===a.type)return isTransforming(a.innerType,n);if("intersection"===a.type)return isTransforming(a.left,n)||isTransforming(a.right,n);if("record"===a.type||"map"===a.type)return isTransforming(a.keyType,n)||isTransforming(a.valueType,n);if("pipe"===a.type)return!!e._zod.traits.has("$ZodCodec")||(isTransforming(a.in,n)||isTransforming(a.out,n));if("object"===a.type){for(const e in a.shape)if(isTransforming(a.shape[e],n))return!0;return!1}if("union"===a.type){for(const e of a.options)if(isTransforming(e,n))return!0;return!1}if("tuple"===a.type){for(const e of a.items)if(isTransforming(e,n))return!0;return!(!a.rest||!isTransforming(a.rest,n))}return!1}var createToJSONSchemaMethod=(e,t={})=>n=>{const a=initializeContext({...n,processors:t});return process(e,a),extractDefs(a,e),finalize$1(a,e)},createStandardJSONSchemaMethod=(e,t,n={})=>a=>{const{libraryOptions:o,target:i}=a??{},s=initializeContext({...o??{},target:i,io:t,processors:n});return process(e,s),extractDefs(s,e),finalize$1(s,e)},Rr={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},stringProcessor=(e,t,n,a)=>{const o=n;o.type="string";const{minimum:i,maximum:s,format:l,patterns:c,contentEncoding:u}=e._zod.bag;if("number"==typeof i&&(o.minLength=i),"number"==typeof s&&(o.maxLength=s),l&&(o.format=Rr[l]??l,""===o.format&&delete o.format,"time"===l&&delete o.format),u&&(o.contentEncoding=u),c&&c.size>0){const e=[...c];1===e.length?o.pattern=e[0].source:e.length>1&&(o.allOf=[...e.map(e=>({..."draft-07"===t.target||"draft-04"===t.target||"openapi-3.0"===t.target?{type:"string"}:{},pattern:e.source}))])}},numberProcessor=(e,t,n,a)=>{const o=n,{minimum:i,maximum:s,format:l,multipleOf:c,exclusiveMaximum:u,exclusiveMinimum:d}=e._zod.bag;"string"==typeof l&&l.includes("int")?o.type="integer":o.type="number";const p="number"==typeof d&&d>=(i??Number.NEGATIVE_INFINITY),m="number"==typeof u&&u<=(s??Number.POSITIVE_INFINITY),g="draft-04"===t.target||"openapi-3.0"===t.target;p?g?(o.minimum=d,o.exclusiveMinimum=!0):o.exclusiveMinimum=d:"number"==typeof i&&(o.minimum=i),m?g?(o.maximum=u,o.exclusiveMaximum=!0):o.exclusiveMaximum=u:"number"==typeof s&&(o.maximum=s),"number"==typeof c&&(o.multipleOf=c)},neverProcessor=(e,t,n,a)=>{n.not={}},unknownProcessor=(e,t,n,a)=>{},enumProcessor=(e,t,n,a)=>{const o=getEnumValues(e._zod.def.entries);o.every(e=>"number"==typeof e)&&(n.type="number"),o.every(e=>"string"==typeof e)&&(n.type="string"),n.enum=o},customProcessor=(e,t,n,a)=>{if("throw"===t.unrepresentable)throw new Error("Custom types cannot be represented in JSON Schema")},transformProcessor=(e,t,n,a)=>{if("throw"===t.unrepresentable)throw new Error("Transforms cannot be represented in JSON Schema")},arrayProcessor=(e,t,n,a)=>{const o=n,i=e._zod.def,{minimum:s,maximum:l}=e._zod.bag;"number"==typeof s&&(o.minItems=s),"number"==typeof l&&(o.maxItems=l),o.type="array",o.items=process(i.element,t,{...a,path:[...a.path,"items"]})},objectProcessor=(e,t,n,a)=>{const o=n,i=e._zod.def;o.type="object",o.properties={};const s=i.shape;for(const u in s)o.properties[u]=process(s[u],t,{...a,path:[...a.path,"properties",u]});const l=new Set(Object.keys(s)),c=new Set([...l].filter(e=>{const n=i.shape[e]._zod;return"input"===t.io?void 0===n.optin:void 0===n.optout}));c.size>0&&(o.required=Array.from(c)),"never"===i.catchall?._zod.def.type?o.additionalProperties=!1:i.catchall?i.catchall&&(o.additionalProperties=process(i.catchall,t,{...a,path:[...a.path,"additionalProperties"]})):"output"===t.io&&(o.additionalProperties=!1)},unionProcessor=(e,t,n,a)=>{const o=e._zod.def,i=!1===o.inclusive,s=o.options.map((e,n)=>process(e,t,{...a,path:[...a.path,i?"oneOf":"anyOf",n]}));i?n.oneOf=s:n.anyOf=s},intersectionProcessor=(e,t,n,a)=>{const o=e._zod.def,i=process(o.left,t,{...a,path:[...a.path,"allOf",0]}),s=process(o.right,t,{...a,path:[...a.path,"allOf",1]}),isSimpleIntersection=e=>"allOf"in e&&1===Object.keys(e).length;n.allOf=[...isSimpleIntersection(i)?i.allOf:[i],...isSimpleIntersection(s)?s.allOf:[s]]},recordProcessor=(e,t,n,a)=>{const o=n,i=e._zod.def;o.type="object";const s=i.keyType,l=s._zod.bag?.patterns;if("loose"===i.mode&&l&&l.size>0){const e=process(i.valueType,t,{...a,path:[...a.path,"patternProperties","*"]});o.patternProperties={};for(const t of l)o.patternProperties[t.source]=e}else"draft-07"!==t.target&&"draft-2020-12"!==t.target||(o.propertyNames=process(i.keyType,t,{...a,path:[...a.path,"propertyNames"]})),o.additionalProperties=process(i.valueType,t,{...a,path:[...a.path,"additionalProperties"]});const c=s._zod.values;if(c){const e=[...c].filter(e=>"string"==typeof e||"number"==typeof e);e.length>0&&(o.required=e)}},nullableProcessor=(e,t,n,a)=>{const o=e._zod.def,i=process(o.innerType,t,a),s=t.seen.get(e);"openapi-3.0"===t.target?(s.ref=o.innerType,n.nullable=!0):n.anyOf=[i,{type:"null"}]},nonoptionalProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);t.seen.get(e).ref=o.innerType},defaultProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);t.seen.get(e).ref=o.innerType,n.default=JSON.parse(JSON.stringify(o.defaultValue))},prefaultProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);t.seen.get(e).ref=o.innerType,"input"===t.io&&(n._prefault=JSON.parse(JSON.stringify(o.defaultValue)))},catchProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);let i;t.seen.get(e).ref=o.innerType;try{i=o.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}n.default=i},pipeProcessor=(e,t,n,a)=>{const o=e._zod.def,i=o.in._zod.traits.has("$ZodTransform"),s="input"===t.io?i?o.out:o.in:o.out;process(s,t,a);t.seen.get(e).ref=s},readonlyProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);t.seen.get(e).ref=o.innerType,n.readOnly=!0},optionalProcessor=(e,t,n,a)=>{const o=e._zod.def;process(o.innerType,t,a);t.seen.get(e).ref=o.innerType},Mr=$constructor("ZodISODateTime",(e,t)=>{Gt.init(e,t),Xr.init(e,t)});function datetime(e){return _isoDateTime(Mr,e)}var Dr=$constructor("ZodISODate",(e,t)=>{Yt.init(e,t),Xr.init(e,t)});function date(e){return _isoDate(Dr,e)}var Or=$constructor("ZodISOTime",(e,t)=>{Kt.init(e,t),Xr.init(e,t)});function time(e){return _isoTime(Or,e)}var $r=$constructor("ZodISODuration",(e,t)=>{Qt.init(e,t),Xr.init(e,t)});function duration$1(e){return _isoDuration($r,e)}var initializer=(e,t)=>{Be.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:t=>formatError(e,t)},flatten:{value:t=>flattenError(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,jsonStringifyReplacer,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,jsonStringifyReplacer,2)}},isEmpty:{get:()=>0===e.issues.length}})},Ir=$constructor("ZodError",initializer,{Parent:Error}),Nr=_parse(Ir),zr=_parseAsync(Ir),Lr=_safeParse(Ir),jr=_safeParseAsync(Ir),Br=_encode(Ir),Fr=_decode(Ir),qr=_encodeAsync(Ir),Ur=_decodeAsync(Ir),Vr=_safeEncode(Ir),Hr=_safeDecode(Ir),Wr=_safeEncodeAsync(Ir),Gr=_safeDecodeAsync(Ir),Yr=new WeakMap;function _installLazyMethods(e,t,n){const a=Object.getPrototypeOf(e);let o=Yr.get(a);if(o||(o=new Set,Yr.set(a,o)),!o.has(t)){o.add(t);for(const e in n){const t=n[e];Object.defineProperty(a,e,{configurable:!0,enumerable:!1,get(){const n=t.bind(this);return Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:n}),n},set(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:t})}})}}}var Kr=$constructor("ZodType",(e,t)=>(Ot.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:createStandardJSONSchemaMethod(e,"input"),output:createStandardJSONSchemaMethod(e,"output")}}),e.toJSONSchema=createToJSONSchemaMethod(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.parse=(t,n)=>Nr(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>Lr(e,t,n),e.parseAsync=async(t,n)=>zr(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>jr(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>Br(e,t,n),e.decode=(t,n)=>Fr(e,t,n),e.encodeAsync=async(t,n)=>qr(e,t,n),e.decodeAsync=async(t,n)=>Ur(e,t,n),e.safeEncode=(t,n)=>Vr(e,t,n),e.safeDecode=(t,n)=>Hr(e,t,n),e.safeEncodeAsync=async(t,n)=>Wr(e,t,n),e.safeDecodeAsync=async(t,n)=>Gr(e,t,n),_installLazyMethods(e,"ZodType",{check(...e){const t=this.def;return this.clone(mergeDefs(t,{checks:[...t.checks??[],...e.map(e=>"function"==typeof e?{_zod:{check:e,def:{check:"custom"},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return clone$1(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(refine(e,t))},superRefine(e,t){return this.check(superRefine(e,t))},overwrite(e){return this.check(_overwrite(e))},optional(){return optional(this)},exactOptional(){return exactOptional(this)},nullable(){return nullable(this)},nullish(){return optional(nullable(this))},nonoptional(e){return nonoptional(this,e)},array(){return array(this)},or(e){return union([this,e])},and(e){return intersection(this,e)},transform(e){return pipe(this,transform(e))},default(e){return _default(this,e)},prefault(e){return prefault(this,e)},catch(e){return _catch(this,e)},pipe(e){return pipe(this,e)},readonly(){return readonly(this)},describe(e){const t=this.clone();return Ar.add(t,{description:e}),t},meta(...e){if(0===e.length)return Ar.get(this);const t=this.clone();return Ar.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e){return e(this)}}),Object.defineProperty(e,"description",{get:()=>Ar.get(e)?.description,configurable:!0}),e)),Qr=$constructor("_ZodString",(e,t)=>{$t.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>stringProcessor(e,t,n,a);const n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,_installLazyMethods(e,"_ZodString",{regex(...e){return this.check(_regex(...e))},includes(...e){return this.check(_includes(...e))},startsWith(...e){return this.check(_startsWith(...e))},endsWith(...e){return this.check(_endsWith(...e))},min(...e){return this.check(_minLength(...e))},max(...e){return this.check(_maxLength(...e))},length(...e){return this.check(_length(...e))},nonempty(...e){return this.check(_minLength(1,...e))},lowercase(e){return this.check(_lowercase(e))},uppercase(e){return this.check(_uppercase(e))},trim(){return this.check(_trim())},normalize(...e){return this.check(_normalize(...e))},toLowerCase(){return this.check(_toLowerCase())},toUpperCase(){return this.check(_toUpperCase())},slugify(){return this.check(_slugify())}})}),Zr=$constructor("ZodString",(e,t)=>{$t.init(e,t),Qr.init(e,t),e.email=t=>e.check(_email(Jr,t)),e.url=t=>e.check(_url(rn,t)),e.jwt=t=>e.check(_jwt(Sn,t)),e.emoji=t=>e.check(_emoji(nn,t)),e.guid=t=>e.check(_guid(en,t)),e.uuid=t=>e.check(_uuid(tn,t)),e.uuidv4=t=>e.check(_uuidv4(tn,t)),e.uuidv6=t=>e.check(_uuidv6(tn,t)),e.uuidv7=t=>e.check(_uuidv7(tn,t)),e.nanoid=t=>e.check(_nanoid(an,t)),e.guid=t=>e.check(_guid(en,t)),e.cuid=t=>e.check(_cuid(sn,t)),e.cuid2=t=>e.check(_cuid2(ln,t)),e.ulid=t=>e.check(_ulid(cn,t)),e.base64=t=>e.check(_base64(bn,t)),e.base64url=t=>e.check(_base64url(yn,t)),e.xid=t=>e.check(_xid(un,t)),e.ksuid=t=>e.check(_ksuid(dn,t)),e.ipv4=t=>e.check(_ipv4(pn,t)),e.ipv6=t=>e.check(_ipv6(mn,t)),e.cidrv4=t=>e.check(_cidrv4(gn,t)),e.cidrv6=t=>e.check(_cidrv6(hn,t)),e.e164=t=>e.check(_e164(vn,t)),e.datetime=t=>e.check(datetime(t)),e.date=t=>e.check(date(t)),e.time=t=>e.check(time(t)),e.duration=t=>e.check(duration$1(t))});function string(e){return _string(Zr,e)}var Xr=$constructor("ZodStringFormat",(e,t)=>{It.init(e,t),Qr.init(e,t)}),Jr=$constructor("ZodEmail",(e,t)=>{Lt.init(e,t),Xr.init(e,t)}),en=$constructor("ZodGUID",(e,t)=>{Nt.init(e,t),Xr.init(e,t)}),tn=$constructor("ZodUUID",(e,t)=>{zt.init(e,t),Xr.init(e,t)}),rn=$constructor("ZodURL",(e,t)=>{jt.init(e,t),Xr.init(e,t)}),nn=$constructor("ZodEmoji",(e,t)=>{Bt.init(e,t),Xr.init(e,t)}),an=$constructor("ZodNanoID",(e,t)=>{Ft.init(e,t),Xr.init(e,t)}),sn=$constructor("ZodCUID",(e,t)=>{qt.init(e,t),Xr.init(e,t)}),ln=$constructor("ZodCUID2",(e,t)=>{Ut.init(e,t),Xr.init(e,t)}),cn=$constructor("ZodULID",(e,t)=>{Vt.init(e,t),Xr.init(e,t)}),un=$constructor("ZodXID",(e,t)=>{Ht.init(e,t),Xr.init(e,t)}),dn=$constructor("ZodKSUID",(e,t)=>{Wt.init(e,t),Xr.init(e,t)}),pn=$constructor("ZodIPv4",(e,t)=>{Zt.init(e,t),Xr.init(e,t)}),mn=$constructor("ZodIPv6",(e,t)=>{Xt.init(e,t),Xr.init(e,t)}),gn=$constructor("ZodCIDRv4",(e,t)=>{Jt.init(e,t),Xr.init(e,t)}),hn=$constructor("ZodCIDRv6",(e,t)=>{er.init(e,t),Xr.init(e,t)}),bn=$constructor("ZodBase64",(e,t)=>{tr.init(e,t),Xr.init(e,t)}),yn=$constructor("ZodBase64URL",(e,t)=>{rr.init(e,t),Xr.init(e,t)}),vn=$constructor("ZodE164",(e,t)=>{nr.init(e,t),Xr.init(e,t)}),Sn=$constructor("ZodJWT",(e,t)=>{ar.init(e,t),Xr.init(e,t)}),xn=$constructor("ZodNumber",(e,t)=>{or.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>numberProcessor(e,t,n,a),_installLazyMethods(e,"ZodNumber",{gt(e,t){return this.check(_gt(e,t))},gte(e,t){return this.check(_gte(e,t))},min(e,t){return this.check(_gte(e,t))},lt(e,t){return this.check(_lt(e,t))},lte(e,t){return this.check(_lte(e,t))},max(e,t){return this.check(_lte(e,t))},int(e){return this.check(int(e))},safe(e){return this.check(int(e))},positive(e){return this.check(_gt(0,e))},nonnegative(e){return this.check(_gte(0,e))},negative(e){return this.check(_lt(0,e))},nonpositive(e){return this.check(_lte(0,e))},multipleOf(e,t){return this.check(_multipleOf(e,t))},step(e,t){return this.check(_multipleOf(e,t))},finite(){return this}});const n=e._zod.bag;e.minValue=Math.max(n.minimum??Number.NEGATIVE_INFINITY,n.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(n.maximum??Number.POSITIVE_INFINITY,n.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(n.format??"").includes("int")||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null}),Cn=$constructor("ZodNumberFormat",(e,t)=>{ir.init(e,t),xn.init(e,t)});function int(e){return _int(Cn,e)}var wn=$constructor("ZodUnknown",(e,t)=>{sr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>unknownProcessor(e,t,n,a)});function unknown(){return _unknown(wn)}var kn=$constructor("ZodNever",(e,t)=>{lr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>neverProcessor(e,t,n,a)});function never(e){return _never(kn,e)}var En=$constructor("ZodArray",(e,t)=>{cr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>arrayProcessor(e,t,n,a),e.element=t.element,_installLazyMethods(e,"ZodArray",{min(e,t){return this.check(_minLength(e,t))},nonempty(e){return this.check(_minLength(1,e))},max(e,t){return this.check(_maxLength(e,t))},length(e,t){return this.check(_length(e,t))},unwrap(){return this.element}})});function array(e,t){return _array(En,e,t)}var _n=$constructor("ZodObject",(e,t)=>{dr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>objectProcessor(e,t,n,a),defineLazy(e,"shape",()=>t.shape),_installLazyMethods(e,"ZodObject",{keyof(){return _enum(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:unknown()})},loose(){return this.clone({...this._zod.def,catchall:unknown()})},strict(){return this.clone({...this._zod.def,catchall:never()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return extend(this,e)},safeExtend(e){return safeExtend(this,e)},merge(e){return merge(this,e)},pick(e){return pick(this,e)},omit(e){return omit(this,e)},partial(...e){return partial(Dn,this,e[0])},required(...e){return required(zn,this,e[0])}})});function object(e,t){return new _n({type:"object",shape:e??{},...normalizeParams(t)})}var Pn=$constructor("ZodUnion",(e,t)=>{pr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>unionProcessor(e,t,n,a),e.options=t.options});function union(e,t){return new Pn({type:"union",options:e,...normalizeParams(t)})}var Tn=$constructor("ZodIntersection",(e,t)=>{mr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>intersectionProcessor(e,t,n,a)});function intersection(e,t){return new Tn({type:"intersection",left:e,right:t})}var An=$constructor("ZodRecord",(e,t)=>{fr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>recordProcessor(e,t,n,a),e.keyType=t.keyType,e.valueType=t.valueType});function record(e,t,n){return t&&t._zod?new An({type:"record",keyType:e,valueType:t,...normalizeParams(n)}):new An({type:"record",keyType:string(),valueType:e,...normalizeParams(t)})}var Rn=$constructor("ZodEnum",(e,t)=>{gr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>enumProcessor(e,t,n,a),e.enum=t.entries,e.options=Object.values(t.entries);const n=new Set(Object.keys(t.entries));e.extract=(e,a)=>{const o={};for(const i of e){if(!n.has(i))throw new Error(`Key ${i} not found in enum`);o[i]=t.entries[i]}return new Rn({...t,checks:[],...normalizeParams(a),entries:o})},e.exclude=(e,a)=>{const o={...t.entries};for(const t of e){if(!n.has(t))throw new Error(`Key ${t} not found in enum`);delete o[t]}return new Rn({...t,checks:[],...normalizeParams(a),entries:o})}});function _enum(e,t){return new Rn({type:"enum",entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...normalizeParams(t)})}var Mn=$constructor("ZodTransform",(e,t)=>{hr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>transformProcessor(e,t,n,a),e._zod.parse=(n,a)=>{if("backward"===a.direction)throw new Oe(e.constructor.name);n.addIssue=a=>{if("string"==typeof a)n.issues.push(issue(a,n.value,t));else{const t=a;t.fatal&&(t.continue=!1),t.code??(t.code="custom"),t.input??(t.input=n.value),t.inst??(t.inst=e),n.issues.push(issue(t))}};const o=t.transform(n.value,n);return o instanceof Promise?o.then(e=>(n.value=e,n.fallback=!0,n)):(n.value=o,n.fallback=!0,n)}});function transform(e){return new Mn({type:"transform",transform:e})}var Dn=$constructor("ZodOptional",(e,t)=>{br.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>optionalProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function optional(e){return new Dn({type:"optional",innerType:e})}var On=$constructor("ZodExactOptional",(e,t)=>{yr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>optionalProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function exactOptional(e){return new On({type:"optional",innerType:e})}var $n=$constructor("ZodNullable",(e,t)=>{vr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>nullableProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function nullable(e){return new $n({type:"nullable",innerType:e})}var In=$constructor("ZodDefault",(e,t)=>{Sr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>defaultProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function _default(e,t){return new In({type:"default",innerType:e,get defaultValue(){return"function"==typeof t?t():shallowClone(t)}})}var Nn=$constructor("ZodPrefault",(e,t)=>{xr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>prefaultProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function prefault(e,t){return new Nn({type:"prefault",innerType:e,get defaultValue(){return"function"==typeof t?t():shallowClone(t)}})}var zn=$constructor("ZodNonOptional",(e,t)=>{Cr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>nonoptionalProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function nonoptional(e,t){return new zn({type:"nonoptional",innerType:e,...normalizeParams(t)})}var Ln=$constructor("ZodCatch",(e,t)=>{wr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>catchProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function _catch(e,t){return new Ln({type:"catch",innerType:e,catchValue:"function"==typeof t?t:()=>t})}var jn=$constructor("ZodPipe",(e,t)=>{kr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>pipeProcessor(e,t,n,a),e.in=t.in,e.out=t.out});function pipe(e,t){return new jn({type:"pipe",in:e,out:t})}var Bn=$constructor("ZodReadonly",(e,t)=>{Er.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>readonlyProcessor(e,t,n,a),e.unwrap=()=>e._zod.def.innerType});function readonly(e){return new Bn({type:"readonly",innerType:e})}var Fn=$constructor("ZodCustom",(e,t)=>{Pr.init(e,t),Kr.init(e,t),e._zod.processJSONSchema=(t,n,a)=>customProcessor(e,t,n,a)});function refine(e,t={}){return _refine(Fn,e,t)}function superRefine(e,t){return _superRefine(e,t)}function number(e){return _coercedNumber(xn,e)}var isRecord$1=e=>Boolean(e)&&"object"==typeof e&&!Array.isArray(e),isSupportedPersistenceSchemaVersion=e=>2===Number(e),createEmptyPersistenceSnapshot=()=>({schemaVersion:2,systemSettings:{},affSettings:{defaults:{}},defSettings:{defaults:{},static:{}},cacheSettings:{precache:{}}}),qn=record(string(),unknown()).catch(()=>({})),Un=object({schemaVersion:number().refine(isSupportedPersistenceSchemaVersion),systemSettings:qn,affSettings:object({defaults:qn}).catch(()=>({defaults:{}})),defSettings:object({defaults:qn,static:qn}).catch(()=>({defaults:{},static:{}})),cacheSettings:object({precache:qn}).catch(()=>({precache:{}}))}),normalizePersistenceSnapshot=(e,{assumeCurrentVersion:t=!1}={})=>{const n=t&&isRecord$1(e)&&null==e.schemaVersion?{...e,schemaVersion:2}:e,a=Un.safeParse(n);return a.success?a.data:createEmptyPersistenceSnapshot()},createRuntimePersistenceApi=({persistence:e,systemModel:t,affModel:n,defModel:a,cacheModel:o,serverside:i,syncDebugMode:s,markDirty:l})=>{const c=0,u=26,d={hasStoredSnapshot:!1,sourceKey:e?.key||"nexSys4Settings"},sanitizeSystemSettings=(e={})=>{const{customPromptEnabled:t,prompt:n,...a}=e||{},o=normalizeCommandSeparator(a.commandSeparator);if(o?a.commandSeparator=o:delete a.commandSeparator,a.ss&&"object"==typeof a.ss){const{enabled:e,...t}=a.ss;a.ss=t}return a},normalizePersistedDefPriority=e=>{const t=Number(e);return Number.isInteger(t)?t<c?c:t>u?u:t:c},buildAffDefaultMap=()=>n.list().reduce((e,t)=>(e[t]=n.getDefaultPriority(t),e),{}),countablePriorityNameSet=()=>new Set(n.getCountablePriorityNames?.()||[]),buildDefDefaultMap=()=>Object.entries(a.getDefaultPriorities()).reduce((e,[t,n])=>(e[t]=normalizePersistedDefPriority(n),e),{}),buildDefStaticOverrideMap=()=>({...a.getStaticOverrides?.()||{}}),buildCacheDefaultSnapshot=()=>o.getDesiredPrecache(),isValidServersideAffPriority=e=>{const t=Number(e);return Number.isInteger(t)&&t>=1&&t<=26},normalizeStoredAffDefaults=(e={})=>{const t=countablePriorityNameSet();return Object.entries(e).reduce((e,[a,o])=>{const i="function"==typeof n.normalizePriorityName?n.normalizePriorityName(a):String(a||"").trim().toLowerCase();if(!i)return e;if(t.has(i))return e;const s=n.getDefaultPriority(i);return isValidServersideAffPriority(s)&&!isValidServersideAffPriority(o)?(e[i]=s,e):(e[i]=o,e)},{})},normalizeStoredDefPriorities=(e={})=>Object.entries(e).reduce((e,[t,n])=>(e[t]=normalizePersistedDefPriority(n),e),{}),normalizeStoredDefStatics=(e={})=>Object.entries(e).reduce((e,[t,n])=>(!0!==n&&!1!==n||(e[t]=n),e),{}),buildPersistenceSnapshot=()=>({schemaVersion:2,systemSettings:sanitizeSystemSettings(t.getSettings()),affSettings:{defaults:buildAffDefaultMap()},defSettings:{defaults:buildDefDefaultMap(),static:buildDefStaticOverrideMap()},cacheSettings:{precache:buildCacheDefaultSnapshot()}}),applyStoredSnapshot=(e={})=>{const l=sanitizeSystemSettings(e.systemSettings||{});t.setSettings(l,{setBaseline:!0}),t.setBaselineIntent({ss:l.ss||{}});const c=e.affSettings?.defaults;c&&Object.entries(normalizeStoredAffDefaults(c)).forEach(([e,t])=>{n.setDefaultPriority(e,t,"persistence")});const u=normalizeStoredDefStatics(e.defSettings?.static);Object.entries(u).forEach(([e,t])=>{a.setStatic(e,t,"persistence")});const d=normalizeStoredDefPriorities(e.defSettings?.defaults);Object.entries(d).forEach(([e,t])=>{a.setDefaultPriority(e,t,"persistence")}),e.cacheSettings?.precache&&o.setDesiredPrecache(e.cacheSettings.precache),i.setBaselineFromRuntime(),s()},loadStoredSnapshot=()=>"function"==typeof e.read?e.read():{key:e?.key||"nexSys4Settings",exists:!1,snapshot:e.load()};return{buildPersistenceSnapshot,loadPersistence(){const{key:t,exists:n,snapshot:a}=loadStoredSnapshot();return d.hasStoredSnapshot=Boolean(n),d.sourceKey=t||e?.key||"nexSys4Settings",applyStoredSnapshot(a),{key:d.sourceKey,exists:d.hasStoredSnapshot,snapshot:a}},seedBaselineFromObservedStartup({skipObservedAdoption:e=!1}={}){if(d.hasStoredSnapshot)return!1;if(e)return!1;const o=i.getObserved?.()||{},l=sanitizeSystemSettings({ss:o.settings||{}});Object.keys(l).length&&t.setSettings(l,{setBaseline:!0});const c=countablePriorityNameSet();return Object.entries(o.affPriorities||{}).forEach(([e,t])=>{c.has(String(e||"").toLowerCase())||isValidServersideAffPriority(t)&&n.setDefaultPriority(e,t,"startup-observed-baseline")}),Object.entries(o.defPriorities||{}).forEach(([e,t])=>{a.get(e)&&a.setDefaultPriority(e,normalizePersistedDefPriority(t),"startup-observed-baseline")}),i.setBaselineFromRuntime(),s(),!0},savePersistence(){const t=buildPersistenceSnapshot();return e.save(t),i.setBaselineFromRuntime(),l("persistence-save"),t}}},evaluateBlockCondition=(e,t)=>Array.isArray(e)?e.every(e=>t(e)):t(e),isBlocked=(e=[],t)=>e.some(e=>evaluateBlockCondition(e,t)),isActiveDefensePriority=e=>{const t=Number(e);return Number.isInteger(t)&&t>=1&&t<=25},createDefensePlanner=({defModel:e,balanceModel:t,affModel:n,systemModel:a})=>{const plan=({includeStaticIds:o=[]}={})=>{const i=a.getClass(),s=new Set(o),l=e.list().map(t=>e.get(t)).filter(Boolean).map(t=>({entry:t,priority:e.getPriority(t.id)})).sort((e,t)=>e.priority!==t.priority?e.priority-t.priority:e.entry.order-t.entry.order),c=new Set,u={serverside:[],client:[]};return l.forEach(({entry:a,priority:o})=>{if(!isActiveDefensePriority(o)||c.has(a.id)||a.have)return;if(!e.isAvailableForClass(a.id,i))return;if(a.static&&!s.has(a.id))return;if(isBlocked(a.blocks,e=>n.haveAff(e)))return;if(!a.bals_req.every(e=>t.have(e)))return;a.opps.forEach(e=>c.add(e));const l=a.serverside?u.serverside:u.client;a.command.forEach(e=>{l.push({source:"defense",defense:a.id,command:e,prio:o,serverside:a.serverside,preempt:a.preempt,static:a.static})})}),{serverside:u.serverside,client:u.client,all:[...u.serverside,...u.client]}};return{plan}},dedupeCommandIntents=(e=[])=>{const t=new Map,n=[];return e.forEach(e=>{const a=e?.command,o=t.get(a);if(o)return void(!0===e?.requiresCompletion&&(o.requiresCompletion=!0));const i={...e};t.set(a,i),n.push(i)}),n},createOutputPlanner=({systemModel:e,serverside:t,defensePlanner:n,precachePlanner:a})=>({plan({source:o="prompt",injectedCommands:i=[],suppressedServersideCommands:s=[]}={}){const l=e.getRuntime(),c=t.evaluate({emitCommands:!1,source:o}),u=s.length?c.commands.filter(e=>!s.includes(e)):c.commands,d=t.getStaticDefRequests(),p=[];n.plan({includeStaticIds:Object.keys(d)}).client.forEach(e=>p.push(e)),l.slowMode||l.aeonLocked||a.plan().forEach(e=>p.push(e)),u.forEach(e=>{p.push({source:"serverside",command:e,requiresCompletion:!0})}),i.forEach(e=>{p.push({source:"injected",command:e})});const m=dedupeCommandIntents(p);return{intents:m,commands:m.map(e=>e.command),serversideCommands:u}}}),createPrecachePlanner=({cacheModel:e})=>({plan:()=>e.getPrecacheCommands().map(e=>({source:"precache",command:e,requiresCompletion:!0}))}),createQueueState=()=>Object.entries($).reduce((e,[t,n])=>(e[t]={...deepClone$1(n),id:t,items:[],prepend:[],pending:!1,lastSignature:"",deferred:!1},e),{}),splitCommandValue=(e,t="|")=>{const n=String(t||"|")||"|";return String(e).split(n).map(e=>e.trim()).filter(Boolean)},normalizeCommands=(e,t="|")=>e?Array.isArray(e)?e.flatMap(e=>null==e?[]:splitCommandValue(e,t)).filter(Boolean):splitCommandValue(e,t):[],hasQueuedItems=e=>e.items.length>0||e.prepend.length>0,buildLogicalCommands=e=>[`echo SystemEvent ${e.name}QueueFired`,...e.pre,...e.prepend,...e.items,...e.post].filter(Boolean),clearQueueState=e=>{e.items=[],e.prepend=[],e.pending=!1,e.lastSignature="",e.deferred=!1},resolveQueueId=(e,t)=>{if(e[t])return t;const n=String(t||"").replace(/QueueFired$/i,"").toLowerCase();return Object.keys(e).find(t=>{const a=e[t];return a.name.toLowerCase()===n||a.type.toLowerCase()===n})||null},hasLocalQueueState=(e={})=>(e.items||[]).length>0||(e.prepend||[]).length>0||e.pending||e.deferred||Boolean(e.lastSignature),clearLocalQueueState=e=>{if(!e)return!1;const t=hasLocalQueueState(e);return clearQueueState(e),t},markQueueDeferred=e=>{if(!e)return!1;const t=!e.deferred||!e.pending;return e.deferred=!0,e.pending=!0,t},markQueueAwaitingAck=(e,t)=>{if(!e)return!1;const n=e.lastSignature!==t||!0!==e.pending||!1!==e.deferred;return e.lastSignature=t,e.pending=!0,e.deferred=!1,n},createQueueMutationApi=({state:e,emit:t,flush:n,getSeparator:a,markStateChanged:o=()=>{}})=>{const resolveSeparator=()=>("function"==typeof a?a():"|")||"|",haveSameCommands=(e=[],t=[])=>e.length===t.length&&e.every((e,n)=>e===t[n]),clear=(n,a={})=>{const i=e[n];return!!i&&(!!clearLocalQueueState(i)&&(o(n),t("QueueCleared",{queueId:n,remote:Boolean(a.remote),command:a.command||null}),!0))};return{add(a,i,s={}){const l=e[a];if(!l)return!1;const c=normalizeCommands(i,resolveSeparator());if(!c.length)return!1;let u=!1;return c.forEach(e=>{l.items.includes(e)&&!s.allowDuplicate||(l.items.push(e),u=!0)}),!!u&&(o(a),t("QueueUpdated",{queueId:a,queue:deepClone$1(l)}),!1!==s.autoFlush&&n(a),!0)},addClear(a,i,s={}){const l=e[a];if(!l)return!1;const c=normalizeCommands(i,resolveSeparator());return!(!c.length||haveSameCommands(l.items,c))&&(l.items=c,o(a),t("QueueUpdated",{queueId:a,queue:deepClone$1(l)}),!1!==s.autoFlush&&n(a),!0)},prepend(a,i,s={}){const l=e[a];if(!l)return!1;const c=normalizeCommands(i,resolveSeparator());if(!c.length)return!1;let u=!1;for(let e=c.length-1;e>=0;e-=1){const t=c[e];l.prepend.includes(t)&&!s.allowDuplicate||(l.prepend.unshift(t),u=!0)}return!!u&&(o(a),t("QueueUpdated",{queueId:a,queue:deepClone$1(l)}),!1!==s.autoFlush&&n(a),!0)},clear,setPreCommands(n,a=[]){const i=e[n];if(!i)return!1;const s=normalizeCommands(a,resolveSeparator());return!haveSameCommands(i.pre,s)&&(i.pre=s,o(n),t("QueueUpdated",{queueId:n,queue:deepClone$1(i)}),!0)},setPostCommands(n,a=[]){const i=e[n];if(!i)return!1;const s=normalizeCommands(a,resolveSeparator());return!haveSameCommands(i.post,s)&&(i.post=s,o(n),t("QueueUpdated",{queueId:n,queue:deepClone$1(i)}),!0)}}},chunkCommands=(e=[],t=20)=>{const n=Array.isArray(e)?e.filter(Boolean).map(e=>String(e)):null==e||""===e?[]:[String(e)],a=Math.max(1,Number(t||20)),o=[];for(let i=0;i<n.length;i+=a)o.push(n.slice(i,i+a));return o},chunkCommandsWithTrailing=(e=[],{maxEntries:t=20,trailing:n=[]}={})=>{const a=chunkCommands(e,t),o=chunkCommands(n,t).flat();if(!o.length)return a;if(!a.length)return chunkCommands(o,t);const i=a[a.length-1];return i.length+o.length<=Math.max(1,Number(t||20))?(i.push(...o),a):[...a,...chunkCommands(o,t)]},createQueueFlushApi=({state:e,emit:t,send:n,getRuntimeState:a,getSeparator:o,maxEntriesPerSubmission:i,onQueueFired:s,markStateChanged:l=()=>{}})=>{const buildRemoteClearCommand=e=>`clearqueue ${e.type}`,buildStackPlan=(e=[])=>({type:"stackPlan",commands:e.filter(Boolean).map(e=>String(e))}),markExcludedQueuesCleared=(t=[])=>{t.forEach(t=>{const n=e[t];n&&clearLocalQueueState(n)&&l(t)})},deferQueue=(e,n)=>(markQueueDeferred(n)&&l(e),t("QueueDeferred",{queueId:e,queue:deepClone$1(n)}),[]),flush=(s,c={})=>{const u=e[s];if(!u||!hasQueuedItems(u))return[];const d=a?a():{paused:!1,phase:re.RUNNING,settings:{}};if(!isRuntimeReadyPhase(d.phase))return deferQueue(s,u);const p=Boolean(d.settings?.queueWhilePaused);if((d.paused||d.rulesSuspended)&&!p)return deferQueue(s,u);const m=buildLogicalCommands(u),g=m.join("");if(!c.force&&g===u.lastSignature)return[];const h=[],b=[];u.exclusions.forEach(t=>{const n=e[t];n&&hasQueuedItems(n)&&(h.push(buildRemoteClearCommand(n)),b.push(t))});const y="function"==typeof o?o():"|",v=chunkCommands(m,Math.max(1,i-h.length)).map((e,t)=>{const n=`queue ${0===t?"addclear":"add"} ${u.type} ${e.join(y)}`;return t>0||!h.length?buildStackPlan([n]):buildStackPlan([...h,n])});return markQueueAwaitingAck(u,g)&&l(s),markExcludedQueuesCleared(b),n(v,{source:"queue-controller",queueId:s,excludedIds:b}),t("QueueFlushed",{queueId:s,plans:v,signature:g}),v};return{flush,clearQueue:a=>{const o=e[a];if(!o)return!1;const i=buildRemoteClearCommand(o);clearLocalQueueState(o)&&l(a),t("QueueCleared",{queueId:a,remote:!0,command:i});const s=[buildStackPlan([i])];return n(s,{source:"queue-controller",queueId:a,remote:!0,action:"clear-queue"}),s},flushDeferred(){const t=[];return Object.keys(e).forEach(n=>{e[n].deferred&&flush(n,{force:!0}).length&&t.push(n)}),t},flushAll(){const t=[];return Object.keys(e).forEach(e=>{const n=flush(e);n.length&&t.push({queueId:e,plans:n})}),t},acknowledgeSent(n,a={}){const o=resolveQueueId(e,n);if(!o)return!1;const i=e[o];return t("QueueSentAcknowledged",{...a,queueId:o,queueType:i?.type||a.queueType||""}),!0},acknowledgeFired(n){const a=resolveQueueId(e,n);if(!a)return!1;const o=e[a],i=o?deepClone$1(o):null;return clearLocalQueueState(e[a])&&l(a),s?.({queueId:a,queue:i}),t("QueueFiredAcknowledged",{queueId:a}),!0}}},createQueueController=({send:e,getRuntimeState:t,getSeparator:n,maxEntriesPerSubmission:a=20,onQueueFired:o}={})=>{const i=new Set,s=createQueueState();let l=0;const c=new Map,markStateChanged=e=>{l+=1,e&&c.set(e,(c.get(e)??0)+1)},emit=(e,t)=>{i.forEach(n=>n(e,t))},buildQueueSnapshot=(e={})=>({id:e.id,name:e.name,type:e.type,pre:[...e.pre||[]],post:[...e.post||[]],exclusions:[...e.exclusions||[]],items:[...e.items||[]],prepend:[...e.prepend||[]],pending:Boolean(e.pending),lastSignature:e.lastSignature||"",deferred:Boolean(e.deferred)}),u=new Map,getQueueSnapshot=e=>s[e]?(u.has(e)||u.set(e,createSnapshotCache({getVersion:()=>c.get(e)??0,buildSnapshot:()=>buildQueueSnapshot(s[e])})),u.get(e)()):null,d=createSnapshotCache({getVersion:()=>l,buildSnapshot:()=>Object.keys(s).reduce((e,t)=>(e[t]=getQueueSnapshot(t),e),{})}),p=createQueueFlushApi({state:s,emit,send:e,getRuntimeState:t,getSeparator:n,maxEntriesPerSubmission:a,onQueueFired:o,markStateChanged}),m=createQueueMutationApi({state:s,emit,flush:p.flush,getSeparator:n,markStateChanged});return{onChange:e=>(i.add(e),()=>i.delete(e)),listQueues:()=>Object.keys(s),getQueue:e=>getQueueSnapshot(e),snapshot:()=>d(),add:m.add,addClear:m.addClear,prepend:m.prepend,clear:m.clear,clearQueue:p.clearQueue,flush:p.flush,flushAll:p.flushAll,flushDeferred:p.flushDeferred,acknowledgeSent:p.acknowledgeSent,acknowledgeFired:p.acknowledgeFired,setPreCommands:m.setPreCommands,setPostCommands:m.setPostCommands}},normalizeRule=(e,t="runtime")=>{if(!e?.id)throw new Error("Rule must include an id");if("function"!=typeof e.evaluate)throw new Error(`Rule "${e.id}" must expose evaluate(context)`);const n=Array.isArray(e.tags)?e.tags.map(e=>String(e).trim().toLowerCase()).filter(Boolean):[];return{id:String(e.id),enabled:!1!==e.enabled,terminal:!0===e.terminal,pack:e.pack||t,tags:n,meta:deepClone$1(e.meta||{}),evaluate:e.evaluate}},stripMasterSwitchSetting=(e={})=>{const{enabled:t,...n}=e||{};return n},mergeOverlay=(e,t={})=>t?(["affPriorities","defPriorities","curePriorities","settings","predictions"].forEach(n=>{if(!t[n])return;const a="settings"===n?stripMasterSwitchSetting(t[n]):t[n];e[n]={...e[n]||{},...a}}),void 0!==t.prioAff&&(e.prioAff=t.prioAff),Array.isArray(t.manualQueue)&&(e.manualQueue=[...t.manualQueue]),t.commands?.length&&(e.commands=[...e.commands||[],...t.commands]),e):e,createEmptyOverlay=()=>({affPriorities:{},defPriorities:{},curePriorities:{},settings:{},predictions:{},commands:[],prioAff:void 0,manualQueue:void 0}),diffRuleActivity=(e,t)=>{const n=[];return e.forEach((e,a)=>{t.has(a)||n.push({...e,from:!0,to:!1})}),t.forEach((t,a)=>{e.has(a)||n.push({...t,from:!1,to:!0})}),n},diffRuleSuspension=(e,t)=>{const n=[];return e.forEach((e,a)=>{e.suspendsCuring&&!t.get(a)?.suspendsCuring&&n.push({...e,from:!0,to:!1})}),t.forEach((t,a)=>{t.suspendsCuring&&!e.get(a)?.suspendsCuring&&n.push({...t,from:!1,to:!0})}),n},createRuleRegistry=(e=[])=>{const t=[],n=new Set,a=new Map,emit=(e,t)=>{n.forEach(n=>{try{n(e,t)}catch(a){console.error("nexSys4 rule registry listener failed",{event:e,error:a})}})},findIndex=e=>t.findIndex(t=>t.id===e),synthesizeDeactivation=(e,t)=>{const n=String(e);if(!a.has(n))return!1;const o=a.get(n);return a.delete(n),emit("RuleDeactivated",{...o,source:t}),!0},addRule=(e,n={})=>{const a=normalizeRule(e,n.pack);return!(findIndex(a.id)>=0)&&(Number.isInteger(n.index)&&n.index>=0&&n.index<t.length?t.splice(n.index,0,a):t.push(a),emit("RuleAdded",{id:a.id,pack:a.pack}),!0)},removeRule=e=>{const n=findIndex(e);if(n<0)return!1;synthesizeDeactivation(e,"removed");const[a]=t.splice(n,1);return emit("RuleRemoved",{id:a.id,pack:a.pack}),!0},setEnabled=(e,n)=>{const a=findIndex(e);return!(a<0)&&(t[a].enabled!==n&&(t[a].enabled=n,n||synthesizeDeactivation(e,"disabled"),emit(n?"RuleEnabled":"RuleDisabled",{id:e}),!0))},setPackEnabled=(e,n)=>{let a=!1;return t.forEach(t=>{t.pack===e&&(a=setEnabled(t.id,n)||a)}),a},loadPack=(e,t=[])=>{let n=!1;return t.forEach(t=>{n=addRule({...t,pack:e},{pack:e})||n}),n&&emit("RulePackLoaded",{packId:e}),n},unloadPack=e=>{const n=t.filter(t=>t.pack===e).map(e=>e.id);return!!n.length&&(n.forEach(e=>removeRule(e)),emit("RulePackUnloaded",{packId:e,count:n.length}),!0)},reorder=(e=[])=>{if(!Array.isArray(e)||!e.length)return!1;const n=new Set(t.map(e=>e.id)),a=new Set(e);if(e.length!==t.length||a.size!==t.length)return!1;if([...n].some(e=>!a.has(e)))return!1;const o=t.reduce((e,t)=>(e[t.id]=t,e),{});return t.length=0,e.forEach(e=>t.push(o[e])),emit("RuleOrderChanged",{order:[...e]}),!0},evaluate=(e={})=>{const n=createEmptyOverlay(),o=[],i=new Map;for(const a of t){if(!a.enabled)continue;const t=a.evaluate(e);if(t&&(o.push(a.id),i.set(a.id,{id:a.id,pack:a.pack,meta:a.meta,suspendsCuring:!0===t.suspendCuring}),mergeOverlay(n,t),a.terminal))break}n.commands=Array.from(new Set(n.commands||[]));const s=diffRuleActivity(a,i),l=diffRuleSuspension(a,i);return a.clear(),i.forEach((e,t)=>a.set(t,e)),{overlay:n,applied:o,transitions:s,suspendTransitions:l,suspendingRules:[...i.values()].filter(e=>e.suspendsCuring).map(e=>e.id)}};return e.forEach(e=>addRule(e,{pack:e.pack||"general"})),{onChange:e=>(n.add(e),()=>n.delete(e)),addRule,removeRule,enableRule:e=>setEnabled(e,!0),disableRule:e=>setEnabled(e,!1),enablePack:e=>setPackEnabled(e,!0),disablePack:e=>setPackEnabled(e,!1),loadPack,unloadPack,reorder,evaluate,list:()=>t.map(e=>({id:e.id,enabled:e.enabled,terminal:e.terminal,isActive:a.has(e.id),suspendsCuring:Boolean(a.get(e.id)?.suspendsCuring),pack:e.pack,tags:[...e.tags],meta:deepClone$1(e.meta)}))}},createSettingCommand=(e,t)=>Object.freeze({commandId:e,buildCommand:t}),Vn=Object.freeze({afflictions:createSettingCommand("curing-afflictions",e=>`curing afflictions ${boolWord(e)}`),defences:createSettingCommand("curing-defences",e=>`curing defences ${boolWord(e)}`),sipping:createSettingCommand("curing-sipping",e=>`curing sipping ${boolWord(e)}`),transmutation:createSettingCommand("curing-transmutation",e=>`curing transmutation ${boolWord(e)}`),sipHealthAt:createSettingCommand("curing-siphealth",e=>`curing siphealth ${e}`),sipManaAt:createSettingCommand("curing-sipmana",e=>`curing sipmana ${e}`),mossHealthAt:createSettingCommand("curing-mosshealth",e=>`curing mosshealth ${e}`),mossManaAt:createSettingCommand("curing-mossmana",e=>`curing mossmana ${e}`),sipPriority:createSettingCommand("curing-priority-mode",e=>`curing priority ${String(e||"health").toLowerCase()}`),focus:createSettingCommand("curing-focus-enabled",e=>`curing focus ${boolWord(e)}`),focusOverHerbs:createSettingCommand("curing-focus-priority-mode",e=>"curing focus "+(e?"first":"second")),tree:createSettingCommand("curing-tree",e=>{const t=String(e||"on").toLowerCase();return["on","off","custom"].includes(t)?`curing tree ${t}`:null}),useVault:createSettingCommand("curing-usevault",e=>`curing usevault ${boolWord(e)}`),clot:createSettingCommand("curing-useclot",e=>`curing useclot ${boolWord(e)}`),clotAt:createSettingCommand("curing-clotat",e=>`curing clotat ${e}`),fallback:createSettingCommand("curing-fallback",e=>`curing fallback ${boolWord(e)}`),kaidoTransmute:createSettingCommand("curing-kaidotransmute",e=>e?"curing kaidotransmute":null),batch:createSettingCommand("curing-batch",e=>`curing batch ${boolWord(e)}`),fracturesAbove:createSettingCommand("curing-healthaffsabove",e=>`curing healthaffsabove ${e}`),manaThreshold:createSettingCommand("curing-manathreshold",e=>`curing manathreshold ${e}`)}),sameArray=(e=[],t=[])=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0},mapDiff=(e={},t={})=>[...new Set([...Object.keys(e),...Object.keys(t)])].filter(n=>e[n]!==t[n]),normalizePredictionMap=(e={})=>Array.isArray(e)?e.reduce((e,t)=>(e[t]=!0,e),{}):{...e},toGamePriorityToken=e=>isServersideAffPriorityNumber(e)?String(Number(e)):String(26),createServersideDiffPlanner=({baseline:e={},getBaseline:t,getAffPriorityCommandName:n,getDefPriorityTokens:a}={})=>{const resolveBaseline=()=>"function"==typeof t?t()||{}:e,resolveAffPriorityCommandName=e=>{if("function"==typeof n){const t=n(e);if(t)return String(t)}return String(e)},resolveDefPriorityTokens=(e,t)=>{if(!isServersideAffPriorityNumber(t))return["reset"];if("function"==typeof a){const n=a(e,Number(t));if(Array.isArray(n)&&n.length)return n.map(e=>String(e));if(null!=n&&!1!==n)return[String(n)]}return[String(Number(t))]},normalizeDesiredDefPriority=e=>"RESET"===e||void 0===e?0:isServersideAffPriorityNumber(e)?Number(e):0,build=({desired:e={},observed:t={}}={})=>{const n=resolveBaseline(),a=n.settings||{},o=n.affPriorities||{},i=[],s=[],l=e.settings||{};mapDiff(l,t.settings||{}).sort().forEach(e=>{const t=Vn[e];if(!t)return;const n=t.buildCommand(l[e]);n&&(i.push(n),s.push(`settings:${e}`))});const c=e.affPriorities||{},u=t.affPriorities||{};!0===e.fullPriorityReset&&(i.push("curing priority reset"),s.push("aff-priority:reset-all"));const resolveDesiredAffPriority=e=>{const t=c[e];return"RESET"===t||void 0===t?o[e]??0:t},d=[...new Set([...Object.keys(c),...Object.keys(u)])].filter(e=>canonicalAffPriority(resolveDesiredAffPriority(e))!==canonicalAffPriority(u[e])).sort().map(e=>[e,toGamePriorityToken(resolveDesiredAffPriority(e))]);if(d.length){const e=d.flatMap(([e,t])=>[resolveAffPriorityCommandName(e),String(t)]);i.push(`curing priority ${e.join(" ")}`),d.forEach(([e])=>s.push(`aff-priority:${e}`))}const p=e.defPriorities||{},m=t.defPriorities||{},g=[...new Set([...Object.keys(p),...Object.keys(m)])].filter(e=>normalizeDesiredDefPriority(p[e])!==Number(m[e]??0)).sort().map(e=>{const t=p[e];return"RESET"===t||void 0===t?[e,["reset"],`def-priority-reset:${e}`]:isServersideAffPriorityNumber(t)?[e,resolveDefPriorityTokens(e,t),`def-priority:${e}`]:[e,["reset"],`def-priority-reset:${e}`]});if(g.length){const e=g.flatMap(([e,t])=>[e,...t]);i.push(`curing priority defence ${e.join(" ")}`),g.forEach(([,,e])=>s.push(e))}const h=e.prioAff;h!==t.prioAff&&(h?(i.push(`curing prioaff ${h}`),s.push(`prioaff:${h}`)):(i.push("curing prioaff none"),s.push("prioaff:clear")));const b=e.manualQueue||[];sameArray(b,t.manualQueue||[])||(i.push("curing queue reset"),b.forEach((e,t)=>{i.push(`curing queue insert ${t+1} ${e}`)}),s.push("manual-queue:reconcile"));const y=normalizePredictionMap(e.predictions),v=normalizePredictionMap(t.predictions);return[...new Set([...Object.keys(y),...Object.keys(v)])].sort().forEach(e=>{const t=Boolean(y[e]);t!==Boolean(v[e])&&(i.push(`${t?"curing predict":"curing unpredict"} ${e}`),s.push(`prediction:${e}`))}),{commands:Array.from(new Set(i)),reasonCodes:s,baseSettings:a}};return{build,getBaseSettings:()=>resolveBaseline().settings||{},getBaseAff:()=>resolveBaseline().affPriorities||{},getBaseDef:()=>resolveBaseline().defPriorities||{}}},Hn=Object.freeze({BALANCE:"balance",EQUILIBRIUM:"equilibrium",ENTITY:"entity",FOCUS:"focus",FREE:"free",WRITHE:"writhe"}),hasAny=(e,t)=>e.haveAnAff(t),hasAll=(e,t)=>e.haveAffs(t),emergencyClassRules=e=>{const t={},n=!e.haveBal(Hn.FOCUS)||e.haveAff("impatience");return t.fitness=e.isClass(["Runewarden","Monk","Blademaster","Infernal","Paladin","Sentinel","Druid"])&&e.haveAff("asthma")&&(hasAny(e,["slickness","hellsight"])&&hasAny(e,["paralysis","clumsiness","sensitivity"])||hasAny(e,["damagedhead","mangledhead","damagedleftleg","damagedrightleg"])&&hasAny(e,["paralysis","clumsiness","sensitivity","slickness","hellsight","disloyalty"]))?100:"RESET",t.dragonheal=e.isClass("Dragon")&&hasAll(e,["asthma","slickness","anorexia"])&&n?100:"RESET",t.dragonflex="RESET",e.isClass("Dragon")&&(hasAll(e,["entangled","webbed"])||hasAny(e,["entangled","webbed"])&&(e.haveBal(Hn.BALANCE)&&!e.haveBal(Hn.WRITHE)||e.haveAff("transfixation")))&&(t.dragonflex=100),t.bloodboil=e.isClass("Magi")&&hasAll(e,["asthma","slickness"])&&(hasAny(e,["hypochondria","paralysis"])||e.haveAff("anorexia")&&n)?100:"RESET",t.dwinnu=e.isClass("Bard")&&(hasAll(e,["webbed","entangled"])||hasAny(e,["webbed","entangled"])&&e.haveAff("transfixation"))?100:"RESET",t.salt=e.isClass("Alchemist")&&(hasAll(e,["asthma","slickness","anorexia"])&&n||hasAll(e,["asthma","slickness","hypochondria"])||hasAll(e,["asthma","slickness","paralysis"]))?100:"RESET",t.shrugging=e.isClass("Serpent")&&(hasAll(e,["asthma","slickness","anorexia"])&&n||hasAll(e,["asthma","slickness","hypochondria"])||hasAll(e,["asthma","slickness","paralysis"]))?100:"RESET",t.fool=e.isClass("Occultist")&&(hasAll(e,["asthma","slickness","anorexia"])&&n||hasAll(e,["asthma","slickness","hypochondria"])||hasAll(e,["asthma","slickness","impatience"]))?100:"RESET",t.alleviate=e.isClass("Blademaster")&&(hasAll(e,["asthma","slickness","anorexia"])&&n||hasAll(e,["asthma","slickness","hypochondria"])||hasAll(e,["asthma","slickness","impatience"]))?100:"RESET",t},createDefaultServersideRulePack=()=>[{id:"aeon-threshold-and-priority",pack:"general",evaluate:e=>e.haveAff("aeon")?{settings:{sipHealthAt:30,sipManaAt:10,mossHealthAt:0,mossManaAt:0,batch:!1,clotAt:5e3},affPriorities:{asthma:3,weariness:4,anorexia:5,impatience:7,paralysis:8}}:null},{id:"focus-balance-priority-shift",pack:"general",evaluate:e=>e.haveBal(Hn.FOCUS)?null:{affPriorities:{stupidity:9,recklessness:12,dizziness:14,shyness:14}}},{id:"scytherus-paralysis",pack:"general",evaluate:e=>hasAll(e,["scytherus","paralysis"])?{affPriorities:{scytherus:2}}:null},{id:"confusion-disrupted",pack:"general",evaluate:e=>hasAll(e,["confusion","disrupted"])&&(e.haveBal(Hn.FOCUS)||e.haveAff("impatience"))&&!e.haveAff("whisperingmadness")?{affPriorities:{confusion:2}}:null},{id:"impatience-snaptrack",pack:"general",evaluate:e=>e.haveAff("impatience")&&e.trackableElapsed("snapTrack")<8e3?{affPriorities:{impatience:2}}:null},{id:"hypochondria-impatience",pack:"general",evaluate:e=>hasAll(e,["impatience","hypochondria"])?{affPriorities:{hypochondria:1}}:e.haveAff("hypochondria")&&e.trackableElapsed("snapTrack")<8e3?{affPriorities:{hypochondria:2}}:null},{id:"slickness-asthma-sensitivity-group",pack:"general",evaluate:e=>{const t=hasAny(e,["sensitivity","clumsiness","weariness","hypochondria"]);return hasAll(e,["slickness","asthma"])&&t&&!e.haveAff("anorexia")?{affPriorities:{slickness:2}}:null}},{id:"asthma-hellsight-slickness",pack:"general",evaluate:e=>{const t=!hasAny(e,["sensitivity","clumsiness","weariness","hypochondria"]);return hasAll(e,["slickness","asthma"])&&t||hasAll(e,["hellsight","asthma"])?{affPriorities:{asthma:2}}:null}},{id:"darkshade-lightwall",pack:"general",evaluate:e=>e.haveAff("darkshade")&&e.affElapsed("darkshade")>1e4&&e.roomHasItem("a lightwall")?{affPriorities:{darkshade:2}}:null},{id:"prone-sensitivity-legdamage",pack:"general",evaluate:e=>hasAll(e,["prone","sensitivity"])&&hasAny(e,["damagedleftleg","damagedrightleg"])?{affPriorities:{sensitivity:2}}:null},{id:"conflagration-burning",pack:"general",evaluate:e=>{if(!e.haveAff("conflagration")||!hasAny(e,["brokenleftleg","brokenrightleg","damagedleftleg","damagedrightleg","mangledleftleg","mangledrightleg"]))return null;const t=hasAny(e,["damagedleftleg","damagedrightleg","mangledleftleg","mangledrightleg"]);return e.haveAff("prone")&&!t?{affPriorities:{burning:7}}:{affPriorities:{burning:4}}}},{id:"cadmus-focus-toggle",pack:"general",evaluate:e=>({settings:{focus:!e.haveAff("cadmuscurse")}})},{id:"scalded-blindness-defence",pack:"general",evaluate:e=>e.haveAff("scalded")?{defPriorities:{blindness:0}}:null},{id:"class-emergency-cures",pack:"general",evaluate:e=>({curePriorities:emergencyClassRules(e)})}],Wn=Object.freeze(["status","affPriorities","defPriorities"]),Gn=Object.freeze({reportingcommands:"reporting",afflictions:"afflictions",defences:"defences",sipping:"sipping",transmutation:"transmutation",siphealth:"sipHealthAt",siphealthat:"sipHealthAt",sipmana:"sipManaAt",sipmanaat:"sipManaAt",mosshealth:"mossHealthAt",mosshealthat:"mossHealthAt",mossmana:"mossManaAt",mossmanaat:"mossManaAt",priority:"sipPriority",sippriority:"sipPriority",focus:"focus",focusoverherbs:"focusOverHerbs",tree:"tree",usevault:"useVault",useclot:"clot",clot:"clot",clotat:"clotAt",clotabove:"clotAbove",fallback:"fallback",kaidotransmute:"kaidoTransmute",customcuringpriority:"customAffPriority",customdefencepriority:"customDefPriority",batch:"batch",healthaffsabove:"fracturesAbove",fracturesabove:"fracturesAbove",manathreshold:"manaThreshold",insomnia:"insomnia"}),Yn=Object.freeze(new Set(["status","enabled"])),createServersideObservationApi=({state:e,affModel:t,defModel:n,systemModel:a,emit:o,markDirty:i,replaceBucket:s,maybeResolveFullPriorityReset:l,normalizeAffPriorityName:c=e=>String(e||"").toLowerCase()})=>{const getMissingStartupFlags=(t=Object.keys(e.startup.flags))=>t.filter(t=>t in e.startup.flags&&!e.startup.flags[t]),u=createSnapshotCache({getVersion:()=>e.startup,buildSnapshot:()=>({...e.startup.flags})}),d=createSnapshotCache({getVersion:()=>e.startup,buildSnapshot:()=>{const e=u(),t=getMissingStartupFlags(Wn);return{ready:Object.values(e).every(Boolean),requiredReady:0===t.length,missingRequired:t,flags:e}}}),markStartupCaptured=t=>t in e.startup.flags&&!e.startup.flags[t]&&(s("startup",{...e.startup,flags:{...e.startup.flags,[t]:!0}}),o("ServersideStartupSnapshotCaptured",{topic:t,flags:u()}),!0),updateObservedSetting=(t,n)=>{if(e.observed.settings[t]!==n){if(s("observed",{...e.observed,settings:{...e.observed.settings,[t]:n}}),e.startup.flags.status){const a=e.derived?.settings?.[t];void 0!==a&&"RESET"!==a||s("sessionBaseline",{...e.sessionBaseline,settings:{...e.sessionBaseline.settings,[t]:n}})}i(`observed-setting:${t}`)}},normalizeCaptureSetName=e=>String(e||"").trim().toLowerCase(),isCaptureSetOwned=e=>{const t=e||"";return""===t||"nexsys4-default"===t},completeObservedAffPrioritySnapshot=()=>{const t=e.capture.affPriorities,n=e.capture.prioritySet||"";if(e.capture.affPriorities=null,e.capture.prioritySet="",t){if(!isCaptureSetOwned(n))return!1;s("observed",{...e.observed,affPriorities:t,prioritySet:n}),l(),i("observed-aff-priority-snapshot")}return markStartupCaptured("affPriorities"),!0},completeObservedDefPrioritySnapshot=()=>{const t=e.capture.defPriorities,n=e.capture.prioritySet||"";if(e.capture.defPriorities=null,e.capture.prioritySet="",t){if(!isCaptureSetOwned(n))return!1;s("observed",{...e.observed,defPriorities:t,prioritySet:n}),i("observed-def-priority-snapshot")}return markStartupCaptured("defPriorities"),!0},updateObservedQueue=(t=[])=>{const n=t||[],a=e.observed.manualQueue,o=n.length===a.length&&n.every((e,t)=>e===a[t]);markStartupCaptured("queue"),o||(s("observed",{...e.observed,manualQueue:[...n]}),i("observed-manual-queue"))},updateObservedPredictions=(t={})=>{const n=t||{},a=e.observed.predictions,o=Object.keys(n),l=o.length===Object.keys(a).length&&o.every(e=>n[e]===a[e]);markStartupCaptured("predictions"),l||(s("observed",{...e.observed,predictions:{...n}}),i("observed-predictions"))},parseStatusLine=({key:e,value:t})=>{const n=String(e||"").trim();if(Yn.has(n.toLowerCase()))return;const a=Gn[n.toLowerCase()]||n;updateObservedSetting(a,normalizeStatusValue(a,t))};return{markStartupCaptured,resetStartupStatus:()=>{const t=Object.keys(e.startup.flags).reduce((e,t)=>(e[t]=!1,e),{});return e.capture.affPriorities=null,e.capture.defPriorities=null,s("startup",{...e.startup,flags:t}),o("ServersideStartupReset",{flags:u()}),!0},isStartupReady:()=>Object.values(e.startup.flags).every(Boolean),getStartupStatus:()=>d(),getMissingStartupFlags,beginObservedAffPrioritySnapshot:(n="")=>(e.capture.affPriorities=buildObservedAffPriorities(t),e.capture.prioritySet=normalizeCaptureSetName(n),!0),completeObservedAffPrioritySnapshot,updateObservedSetting,updateObservedAffPriority:(t,n)=>{const a=e.capture.affPriorities||e.observed.affPriorities,o=String(t||"").toLowerCase(),u=c(t);if(!u)return!1;if(!Object.prototype.hasOwnProperty.call(a,u))return!1;const d=normalizeServersideAffPriority(n);if(e.capture.affPriorities)return o&&o!==u&&delete a[o],a[u]=d,!0;const p={...e.observed.affPriorities};if(o&&o!==u&&delete p[o],p[u]=d,s("observed",{...e.observed,affPriorities:p}),l(),e.startup.flags.affPriorities){const t=e.derived?.affPriorities?.[u];void 0!==t&&"RESET"!==t||s("sessionBaseline",{...e.sessionBaseline,affPriorities:{...e.sessionBaseline.affPriorities,[u]:d}})}return i(`observed-aff-priority:${u}`),!0},beginObservedDefPrioritySnapshot:(t="")=>(e.capture.defPriorities=buildObservedDefPriorities(n,a.getClass()),e.capture.prioritySet=normalizeCaptureSetName(t),!0),completeObservedDefPrioritySnapshot,updateObservedDefPriority:(t,o)=>{const l=e.capture.defPriorities||e.observed.defPriorities,c=String(t||"").toLowerCase(),u=n.get(c);if(!u?.serverside)return!1;if(!n.isAvailableForClass(c,a.getClass()))return!1;const d="RESET"===String(o).toUpperCase()?0:Number(o);if(!Number.isFinite(d))return!1;if(e.capture.defPriorities)return l[c]=d,!0;if(s("observed",{...e.observed,defPriorities:{...e.observed.defPriorities,[c]:d}}),e.startup.flags.defPriorities){const t=e.derived?.defPriorities?.[c];if(void 0===t||"RESET"===t){const t={...e.sessionBaseline.defPriorities};u.static?delete t[c]:t[c]=d,s("sessionBaseline",{...e.sessionBaseline,defPriorities:t})}}return i(`observed-def-priority:${c}`),!0},updateObservedQueue,updateObservedPredictions,parseStatusLine}},createServersideTransientApi=({state:e,trackables:t,now:n,markDirty:a,emit:o,replaceBucket:i,normalizeAffName:s=e=>String(e||"").toLowerCase()})=>({setTrackable(e,i,s={}){const l=String(e||"").trim();if(!l)return!1;t[l]||(t[l]={have:!1,since:0});const c=Boolean(i);if(t[l].have===c)return!1;const u=n();return t[l].have=c,t[l].since=c?u:0,o(c?"TrackableGot":"TrackableLost",{name:l,label:String(s.label||l),have:c,at:u,since:t[l].since,source:String(s.source||"manual")}),a(`trackable:${l}`),!0},setPrioAff(t){const n=t?s(t):null;return e.transient.prioAff!==n&&(i("transient",{...e.transient,prioAff:n}),a("prioaff"),!0)},clearPrioAff:()=>!!e.transient.prioAff&&(i("transient",{...e.transient,prioAff:null}),a("prioaff-clear"),!0),requestPriorityReset:()=>!e.transient.fullPriorityReset&&(i("transient",{...e.transient,fullPriorityReset:!0}),a("priority-reset-request"),!0),requestStaticDefPriorities(t={}){let n=!1;const o={...e.transient.staticDefRequests};return Object.entries(t||{}).forEach(([e,t])=>{const a=String(e||"").trim().toLowerCase(),i=Number(t);!a||!Number.isInteger(i)||i<1||i>25||o[a]!==i&&(o[a]=i,n=!0)}),n&&(i("transient",{...e.transient,staticDefRequests:o}),a("static-def-request")),n},clearStaticDefPriorities(t){const n=Array.isArray(t)?t.map(e=>String(e||"").trim().toLowerCase()).filter(Boolean):Object.keys(e.transient.staticDefRequests);let o=e.transient.staticDefRequests;n.forEach(t=>{Object.prototype.hasOwnProperty.call(o,t)&&(o===e.transient.staticDefRequests&&(o={...e.transient.staticDefRequests}),delete o[t])});const s=i("transient",{...e.transient,staticDefRequests:o});return s&&a("static-def-clear"),s},addPrediction(t){const n=String(t||"").toLowerCase();return!(!n||e.transient.predictions[n])&&(i("transient",{...e.transient,predictions:{...e.transient.predictions,[n]:!0}}),a(`prediction-add:${n}`),!0)},removePrediction(t){const n=String(t||"").toLowerCase();if(!n||!e.transient.predictions[n])return!1;const o={...e.transient.predictions};return delete o[n],i("transient",{...e.transient,predictions:o}),a(`prediction-remove:${n}`),!0},manualQueueAdd(t){const n=String(t||"").toLowerCase();return!(!n||e.transient.manualQueue.includes(n))&&(i("transient",{...e.transient,manualQueue:[...e.transient.manualQueue,n]}),a("manual-queue-add"),!0)},manualQueueInsert(t,n){const o=String(n||"").toLowerCase(),s=Math.max(1,Math.min(20,Number(t||1)));if(!o||e.transient.manualQueue.includes(o))return!1;const l=[...e.transient.manualQueue];return l.splice(s-1,0,o),i("transient",{...e.transient,manualQueue:l}),a("manual-queue-insert"),!0},manualQueueRemove(t){const n=String(t||"").toLowerCase(),o=e.transient.manualQueue.indexOf(n);if(o<0)return!1;const s=[...e.transient.manualQueue];return s.splice(o,1),i("transient",{...e.transient,manualQueue:s}),a("manual-queue-remove"),!0},manualQueueReset:()=>!!e.transient.manualQueue.length&&(i("transient",{...e.transient,manualQueue:[]}),a("manual-queue-reset"),!0)}),shallowCopyDesired=e=>({settings:{...e.settings},affPriorities:{...e.affPriorities},defPriorities:{...e.defPriorities},curePriorities:{...e.curePriorities},manualQueue:[...e.manualQueue||[]],predictions:{...e.predictions},prioAff:e.prioAff??null,fullPriorityReset:Boolean(e.fullPriorityReset),injectedCommands:[...e.injectedCommands||[]],appliedRules:[...e.appliedRules||[]],suspendingRules:[...e.suspendingRules||[]]}),copyRuleTransitionPayload=(e,t)=>({id:e.id,pack:e.pack,meta:e.meta,source:t,suspendsCuring:!0===e.suspendsCuring}),areCommandSequencesEqual=(e=[],t=[])=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0},createServersideEvaluationApi=({state:e,affModel:t,defModel:n,balanceModel:a,systemModel:o,cureTable:i,ruleRegistry:s,diffPlanner:l,sendCommands:c,emit:u,markDirty:d,replaceBucket:p,refreshRulesBucket:m,now:g,trackables:h,options:b})=>{const clearResolvedPending=()=>{const t=b.pendingTimeoutMs||12e3,n=g();let a=e.pending;for(const[o,i]of e.pending.entries())n-i>t&&(a===e.pending&&(a=new Map(e.pending)),a.delete(o));return p("pending",a)},markPendingCommands=(t=[],n={})=>{const a=t.map(e=>normalizeCommand(e)).filter(e=>e&&isServersideCommand(e));if(a.length){const t=g(),n=new Map(e.pending);a.forEach(e=>n.set(e,t)),p("pending",n)}return a.length&&u("ServersidePendingUpdated",{commands:[...a],context:{...n}}),a},filterServersideDefPriorities=(e={})=>{const t=o.getClass();return Object.entries(e||{}).reduce((e,[a,o])=>{const i=n.get(a);return!i?.serverside||i.static?e:n.isAvailableForClass(a,t)?(e[a]=o,e):e},{})},buildRequestedStaticDefPriorities=()=>{const t=o.getClass(),a=e.transient.staticDefRequests||{};let i=a;const removeRequest=e=>{i===a&&(i={...a}),delete i[e]},s=Object.entries(a).reduce((e,[a,o])=>{const i=n.get(a);if(!i?.static)return removeRequest(a),e;if(n.haveDef(a)||!n.isAvailableForClass(a,t))return removeRequest(a),e;if(!i.serverside)return e;const s=n.getPriority(a),l=isServersideAffPriorityNumber(s)?s:o;return!isServersideAffPriorityNumber(l)||Number(l)>=26?(removeRequest(a),e):(e[a]=Number(l),e)},{});return i!==a&&p("transient",{...e.transient,staticDefRequests:i}),s},emitRuleTransitions=(e=[],t)=>{e.forEach(e=>{e.to||u("RuleDeactivated",{...copyRuleTransitionPayload(e,t)})}),e.forEach(e=>{e.to&&u("RuleActivated",{...copyRuleTransitionPayload(e,t)})})},emitRuleSuspendTransitions=(e=[],t)=>{e.forEach(e=>{e.to||u("RuleSuspendDeactivated",{...copyRuleTransitionPayload(e,t)})}),e.forEach(e=>{e.to&&u("RuleSuspendActivated",{...copyRuleTransitionPayload(e,t)})})},resolveDesired=()=>{const i=createServersideContext({affModel:t,defModel:n,balanceModel:a,systemModel:o,trackables:h,now:g}),l=s.evaluate(i);return m?.(),p("derived",l.overlay),p("desired",{settings:{...e.sessionBaseline.settings,...l.overlay.settings},affPriorities:mergeWithResets(e.sessionBaseline.affPriorities,l.overlay.affPriorities),defPriorities:{...mergeWithResets(e.sessionBaseline.defPriorities,filterServersideDefPriorities(l.overlay.defPriorities)),...buildRequestedStaticDefPriorities()},curePriorities:mergeWithResets(e.sessionBaseline.curePriorities,l.overlay.curePriorities),manualQueue:Array.isArray(l.overlay.manualQueue)?[...l.overlay.manualQueue]:[...e.transient.manualQueue],predictions:{...e.transient.predictions,...l.overlay.predictions},prioAff:null!==e.transient.prioAff&&void 0!==e.transient.prioAff?e.transient.prioAff:l.overlay.prioAff||null,fullPriorityReset:e.transient.fullPriorityReset,injectedCommands:l.overlay.commands||[],appliedRules:l.applied,suspendingRules:l.suspendingRules||[]}),{desired:e.desired,evaluation:l}};return{markPendingCommands,maybeResolveFullPriorityReset:()=>!!e.transient.fullPriorityReset&&(!!Object.keys(e.sessionBaseline.affPriorities).every(t=>(e.observed.affPriorities[t]??e.sessionBaseline.affPriorities[t])===e.sessionBaseline.affPriorities[t])&&(p("transient",{...e.transient,fullPriorityReset:!1}),u("ServersideFullPriorityResetResolved",{fullPriorityReset:!1}),!0)),evaluate({emitCommands:t=!0,source:n="prompt"}={}){clearResolvedPending();const{desired:a,evaluation:o}=resolveDesired(),i=l.build({desired:a,observed:e.observed});let s=[...a.injectedCommands,...i.commands].filter(Boolean).filter(t=>!e.pending.has(normalizeCommand(t)));const d=Math.max(1,Number(b.maxCommandsPerCycle||40));let m=e.diagnostics.recoveryCounter;s.length>d&&(s=s.slice(0,d),m+=1);const g=(i.commands||[]).filter(Boolean).filter(t=>!e.pending.has(normalizeCommand(t)));let h=g.length&&areCommandSequencesEqual(e.lastDiffCommands||[],g)?e.diagnostics.commandRepeatCounter+1:0,y=e.diagnostics.desyncCounter;return h>=(b.desyncCommandRepeats||3)&&(y+=1,m+=1,s.push("curing status","curing priority list","curing priority defence list","curing queue list","curing predictions"),h=0),t&&s.length&&(c(s,{source:"serverside-reconcile",reasonCodes:i.reasonCodes,cycleSource:n}),markPendingCommands(s,{source:"serverside-reconcile",reasonCodes:i.reasonCodes,cycleSource:n})),e.lastDiffCommands=[...g],p("diagnostics",{...e.diagnostics,lastCommands:[...s],lastReasons:[...i.reasonCodes],desyncCounter:y,recoveryCounter:m,commandRepeatCounter:h}),e.dirty=!1,u("ServersideEvaluated",{source:n,desired:shallowCopyDesired(a),commands:[...s],reasons:[...i.reasonCodes],suspendingRules:[...o.suspendingRules||[]]}),emitRuleSuspendTransitions(o.suspendTransitions,n),emitRuleTransitions(o.transitions,n),{desired:shallowCopyDesired(a),commands:s,reasons:i.reasonCodes}},setBaselineFromRuntime(){const{enabled:a,...s}=o.getBaselineIntent().ss||{},l=o.getClass(),c={...e.baseline,settings:{...e.baseline.settings,...s},affPriorities:buildBaselineAffPriorities(t),defPriorities:buildBaselineDefPriorities(n,l),curePriorities:buildBaselineCurePriorities(i)};p("baseline",c);const u=buildObservedDefPriorities(n,l),m=Object.keys(u).reduce((t,n)=>(t[n]=e.observed.defPriorities[n]??u[n],t),{});p("observed",{...e.observed,defPriorities:m}),p("sessionBaseline",{settings:{...c.settings},affPriorities:{...c.affPriorities},defPriorities:{...c.defPriorities},curePriorities:{...c.curePriorities}}),d("baseline-refresh")},getCurePriority(t){const n=String(t||"").toLowerCase();return e.desired.curePriorities?.[n]??e.baseline.curePriorities[n]??0},observeOutbound:(e=[])=>markPendingCommands(e,{source:"observe-outbound"})}},createServersideCuringSetApi=({state:e,sendCommands:t,markPendingCommands:n,markDirty:a,markStartupCaptured:o,replaceBucket:i})=>{const issueCuringSetCommand=(e,a)=>{const o=normalizeCommand(e);return!!o&&(t([o],{source:"serverside-curingset",reason:a}),n([o],{source:"serverside-curingset",reason:a}),!0)};return{switchCuringSet(t){const n=normalizeSetName(t);if(!n)return!1;const o=issueCuringSetCommand(`curingset switch ${n}`,"switch");return o&&(i("curingsets",{...e.curingsets,activeSet:n}),a("curingset-switch")),o},deleteCuringSet(e){const t=normalizeSetName(e);return!!t&&issueCuringSetCommand(`curingset delete ${t}`,"delete")},observeActiveCuringSet(t){const n=normalizeSetName(t);if(!n||n===normalizeSetName(e.curingsets.activeSet))return!1;const o=i("curingsets",{...e.curingsets,activeSet:n});return o&&a("curingset-active"),o},observeCuringSets({sets:t=[],activeSet:n="",used:s,limit:l}={}){const c=[...new Set((t||[]).map(e=>normalizeSetName(e)).filter(Boolean))],u=normalizeSetName(n),d=Number(s),p=Number(l),m=Number.isFinite(d)?d:e.curingsets.used,g=Number.isFinite(p)?p:e.curingsets.limit,h=e.curingsets.priorSet||(u&&"nexsys4-default"!==u?u:"");i("curingsets",{...e.curingsets,sets:c,activeSet:u,priorSet:h,used:m,limit:g}),o("curingsets"),a("curingset-observed")}}},Kn=new Set(["RuleActivated","RuleDeactivated","RuleAdded","RuleRemoved","RuleEnabled","RuleDisabled","RulePackLoaded","RulePackUnloaded","RuleOrderChanged"]),Qn=Object.freeze(["baseline","sessionBaseline","derived","desired","observed","transient","pending","diagnostics","curingsets","startup","rules"]),areBucketValuesEqual=(e,t)=>{if(Object.is(e,t))return!0;if(!e||!t||"object"!=typeof e||"object"!=typeof t)return!1;if(e instanceof Date||t instanceof Date)return e instanceof Date&&t instanceof Date&&e.getTime()===t.getTime();if(Array.isArray(e)||Array.isArray(t))return!(!Array.isArray(e)||!Array.isArray(t))&&(e.length===t.length&&e.every((e,n)=>areBucketValuesEqual(e,t[n])));if(e instanceof Map||t instanceof Map){if(!(e instanceof Map&&t instanceof Map))return!1;if(e.size!==t.size)return!1;const n=[...e.entries()],a=[...t.entries()];for(let e=0;e<n.length;e+=1){const[t,o]=n[e],[i,s]=a[e];if(!Object.is(t,i)||!areBucketValuesEqual(o,s))return!1}return!0}const n=Object.keys(e),a=Object.keys(t);return n.length===a.length&&n.every(n=>Object.prototype.hasOwnProperty.call(t,n)&&areBucketValuesEqual(e[n],t[n]))},createServersideController=({adapter:e,dispatchCommands:t,affModel:n,defModel:a,balanceModel:o,systemModel:i,cureTable:s={},options:l={}}={})=>{if("function"!=typeof t)throw new Error("createServersideController requires a dispatchCommands function.");const now=()=>e.now(),c=t,u={snapTrack:{have:!1,since:0}},{enabled:d,...p}=i.getBaselineIntent().ss||{},m=createInitialServersideState({baselineSettings:{afflictions:!0,defences:!0,sipping:!0,transmutation:!0,fallback:!0,kaidoTransmute:!1,...p},affModel:n,defModel:a,systemModel:i,cureTable:s}),g=new Set,emit=(e,t)=>{g.forEach(n=>n(e,t))},markDirty=(e="state-change")=>{m.dirty=!0,emit("ServersideDirty",{reason:e})},replaceBucket=(e,t)=>!areBucketValuesEqual(m[e],t)&&(m[e]=t,!0),h=createRuleRegistry(createDefaultServersideRulePack()),refreshRulesBucket=()=>replaceBucket("rules",h.list());refreshRulesBucket();const b=createServersideDiffPlanner({getBaseline:()=>m.baseline,getAffPriorityCommandName:"function"==typeof n?.formatPriorityCommandName?e=>n.formatPriorityCommandName(e):void 0,getDefPriorityTokens:(e,t)=>{const n=[String(Number(t))];return!0===a.get(e)?.preempt&&n.push("preempt"),n}}),y="function"==typeof n?.normalizeName?e=>n.normalizeName(e):e=>String(e||"").toLowerCase(),v="function"==typeof n?.normalizePriorityName?e=>n.normalizePriorityName(e):e=>String(e||"").toLowerCase(),S=createServersideEvaluationApi({state:m,affModel:n,defModel:a,balanceModel:o,systemModel:i,cureTable:s,ruleRegistry:h,diffPlanner:b,sendCommands:c,emit,markDirty,replaceBucket,refreshRulesBucket,now,trackables:u,options:l}),x=createServersideObservationApi({state:m,affModel:n,defModel:a,systemModel:i,emit,markDirty,replaceBucket,maybeResolveFullPriorityReset:S.maybeResolveFullPriorityReset,normalizeAffPriorityName:v}),C=createServersideTransientApi({state:m,trackables:u,now,markDirty,emit,replaceBucket,normalizeAffName:y}),w=createServersideCuringSetApi({state:m,sendCommands:c,markPendingCommands:S.markPendingCommands,markDirty,markStartupCaptured:x.markStartupCaptured,replaceBucket}),requestSnapshotSync=()=>c(["curing status","curing priority list","curing queue list","curing predictions","curingset list","curing priority defence list"],{source:"serverside-snapshot-sync"}),applyLifecycleChange=e=>(e&&markDirty("rule-lifecycle"),e);h.onChange((e,t)=>{refreshRulesBucket(),Kn.has(e)?emit(e,t):markDirty("rule-engine-change")});const copyRecord=(e={})=>({...e||{}}),copyArray=(e=[])=>[...e||[]],copyRuleOverlay=(e={})=>({affPriorities:copyRecord(e.affPriorities),defPriorities:copyRecord(e.defPriorities),curePriorities:copyRecord(e.curePriorities),settings:copyRecord(e.settings),predictions:copyRecord(e.predictions),commands:copyArray(e.commands),prioAff:e.prioAff,manualQueue:Array.isArray(e.manualQueue)?[...e.manualQueue]:void 0}),copyDesiredSnapshot=(e={})=>({settings:copyRecord(e.settings),affPriorities:copyRecord(e.affPriorities),defPriorities:copyRecord(e.defPriorities),curePriorities:copyRecord(e.curePriorities),manualQueue:copyArray(e.manualQueue),predictions:copyRecord(e.predictions),prioAff:e.prioAff??null,fullPriorityReset:Boolean(e.fullPriorityReset),injectedCommands:copyArray(e.injectedCommands),appliedRules:copyArray(e.appliedRules),suspendingRules:copyArray(e.suspendingRules)}),copyObservedSnapshot=(e={})=>({settings:copyRecord(e.settings),affPriorities:copyRecord(e.affPriorities),defPriorities:copyRecord(e.defPriorities),curePriorities:copyRecord(e.curePriorities),prioAff:e.prioAff??null,manualQueue:copyArray(e.manualQueue),predictions:copyRecord(e.predictions),prioritySet:e.prioritySet||""}),copyTransientSnapshot=(e={})=>({prioAff:e.prioAff??null,manualQueue:copyArray(e.manualQueue),predictions:copyRecord(e.predictions),staticDefRequests:copyRecord(e.staticDefRequests),fullPriorityReset:Boolean(e.fullPriorityReset)}),copyDiagnosticsSnapshot=(e={})=>({lastCommands:copyArray(e.lastCommands),lastReasons:copyArray(e.lastReasons),desyncCounter:Number(e.desyncCounter||0),recoveryCounter:Number(e.recoveryCounter||0),commandRepeatCounter:Number(e.commandRepeatCounter||0)}),copyCuringSetSnapshot=(e={})=>({sets:copyArray(e.sets),activeSet:e.activeSet||"",priorSet:e.priorSet||"",used:Number(e.used||0),limit:Number(e.limit||0)}),copyRulesSnapshot=(e=[])=>(e||[]).map(e=>({id:e.id,enabled:e.enabled,terminal:e.terminal,isActive:e.isActive,suspendsCuring:Boolean(e.suspendsCuring),pack:e.pack,tags:Array.isArray(e.tags)?[...e.tags]:[],meta:deepClone$1(e.meta||{})})),k=createSnapshotCache({getVersion:()=>m.baseline,buildSnapshot:()=>({settings:copyRecord(m.baseline.settings),affPriorities:copyRecord(m.baseline.affPriorities),defPriorities:copyRecord(m.baseline.defPriorities),curePriorities:copyRecord(m.baseline.curePriorities)})}),E=createSnapshotCache({getVersion:()=>m.sessionBaseline,buildSnapshot:()=>({settings:copyRecord(m.sessionBaseline.settings),affPriorities:copyRecord(m.sessionBaseline.affPriorities),defPriorities:copyRecord(m.sessionBaseline.defPriorities),curePriorities:copyRecord(m.sessionBaseline.curePriorities)})}),P=createSnapshotCache({getVersion:()=>m.derived,buildSnapshot:()=>copyRuleOverlay(m.derived)}),T=createSnapshotCache({getVersion:()=>m.desired,buildSnapshot:()=>copyDesiredSnapshot(m.desired)}),R=createSnapshotCache({getVersion:()=>m.observed,buildSnapshot:()=>copyObservedSnapshot(m.observed)}),M=createSnapshotCache({getVersion:()=>m.transient,buildSnapshot:()=>copyTransientSnapshot(m.transient)}),D=createSnapshotCache({getVersion:()=>m.pending,buildSnapshot:()=>[...m.pending.entries()]}),O=createSnapshotCache({getVersion:()=>m.diagnostics,buildSnapshot:()=>copyDiagnosticsSnapshot(m.diagnostics)}),$=createSnapshotCache({getVersion:()=>m.curingsets,buildSnapshot:()=>copyCuringSetSnapshot(m.curingsets)}),I={baseline:k,sessionBaseline:E,derived:P,desired:T,observed:R,transient:M,pending:D,diagnostics:O,curingsets:$,startup:createSnapshotCache({getVersion:()=>m.startup,buildSnapshot:()=>({flags:copyRecord(m.startup.flags)})}),rules:createSnapshotCache({getVersion:()=>m.rules,buildSnapshot:()=>copyRulesSnapshot(m.rules)})};let N=null;const getSnapshot=()=>{const e=Qn.reduce((e,t)=>(e[t]=I[t](),e),{});return N&&Qn.every(t=>N[t]===e[t])||(N=deepFreeze(e)),N},acknowledgeCommand=e=>acknowledgeCommands([e]),acknowledgeCommands=(e=[])=>{let t=m.pending;return e.forEach(e=>{const n=normalizeCommand(e);n&&t.has(n)&&(t===m.pending&&(t=new Map(m.pending)),t.delete(n))}),replaceBucket("pending",t)};return{onChange:e=>(g.add(e),()=>g.delete(e)),markDirty,evaluate:S.evaluate,isDirty:()=>m.dirty,getTransientPrioAff:()=>m.transient.prioAff,getStaticDefRequests:()=>M().staticDefRequests,getObserved:()=>R(),getCuringSets:()=>$(),snapshot:()=>getSnapshot(),isStartupReady:x.isStartupReady,getStartupStatus:x.getStartupStatus,getMissingStartupFlags:x.getMissingStartupFlags,markStartupCaptured:x.markStartupCaptured,resetStartupStatus:x.resetStartupStatus,setBaselineFromRuntime:S.setBaselineFromRuntime,getCurePriority:S.getCurePriority,requestSnapshotSync,beginObservedAffPrioritySnapshot:x.beginObservedAffPrioritySnapshot,completeObservedAffPrioritySnapshot:x.completeObservedAffPrioritySnapshot,updateObservedSetting:x.updateObservedSetting,updateObservedAffPriority:x.updateObservedAffPriority,beginObservedDefPrioritySnapshot:x.beginObservedDefPrioritySnapshot,completeObservedDefPrioritySnapshot:x.completeObservedDefPrioritySnapshot,updateObservedDefPriority:x.updateObservedDefPriority,updateObservedQueue:x.updateObservedQueue,updateObservedPredictions:x.updateObservedPredictions,parseStatusLine:x.parseStatusLine,setTrackable:C.setTrackable,setPrioAff:C.setPrioAff,clearPrioAff:C.clearPrioAff,requestPriorityReset:C.requestPriorityReset,requestStaticDefPriorities:C.requestStaticDefPriorities,clearStaticDefPriorities:C.clearStaticDefPriorities,addPrediction:C.addPrediction,removePrediction:C.removePrediction,manualQueueAdd:C.manualQueueAdd,manualQueueInsert:C.manualQueueInsert,manualQueueRemove:C.manualQueueRemove,manualQueueReset:C.manualQueueReset,switchCuringSet:w.switchCuringSet,deleteCuringSet:w.deleteCuringSet,observeCuringSets:w.observeCuringSets,observeActiveCuringSet:w.observeActiveCuringSet,acknowledgeCommand,acknowledgeCommands,markPendingCommands:S.markPendingCommands,observeOutbound:S.observeOutbound,lifecycle:{add:(e,t)=>applyLifecycleChange(h.addRule(e,t)),remove:e=>applyLifecycleChange(h.removeRule(e)),enable:e=>applyLifecycleChange(h.enableRule(e)),disable:e=>applyLifecycleChange(h.disableRule(e)),enablePack:e=>applyLifecycleChange(h.enablePack(e)),disablePack:e=>applyLifecycleChange(h.disablePack(e)),load:(e,t)=>applyLifecycleChange(h.loadPack(e,t)),unload:e=>applyLifecycleChange(h.unloadPack(e)),reorder:e=>applyLifecycleChange(h.reorder(e)),list:()=>h.list()}}},createCommandDispatcher=({adapter:e}={})=>{const t=[],n=200,isDebugEnabled=()=>"function"==typeof e?.isDebugEnabled&&e.isDebugEnabled(),normalizeCommands=(e=[])=>Array.isArray(e)?e.filter(Boolean).map(e=>String(e)):null==e||""===e?[]:[String(e)],resolveSeparator=()=>("function"==typeof e?.getCommandSeparator?e.getCommandSeparator():"|")||"|",normalizeStackPlan=e=>{if(e&&"object"==typeof e&&!Array.isArray(e)){if("stackPlan"!==e.type)return null;const t=normalizeCommands(e.commands);return t.length?{type:"stackPlan",commands:t}:null}const t=normalizeCommands(e);return t.length?{type:"stackPlan",commands:t}:null},normalizeStackPlans=(e=[])=>{if(Array.isArray(e))return e.map(normalizeStackPlan).filter(Boolean);const t=normalizeStackPlan(e);return t?[t]:[]},serializeStackPlan=e=>e.commands.join(resolveSeparator()),recordDispatch=({mode:a,commands:o=[],context:i={},stackIndex:s=1,stackCount:l=1,stackPlan:c=null}={})=>{const u=normalizeCommands(o);if(!u.length)return[];const d={mode:a,commands:[...u],context:{...i},at:e.now(),stackIndex:s,stackCount:l,stackPlan:c?{type:c.type,commands:[...c.commands]}:null};return t.push(d),!isDebugEnabled()&&t.length>n&&t.splice(0,t.length-n),u},sendCommands=(t=[],n={})=>{const a=recordDispatch({mode:"commands",commands:t,context:n});return a.length?(e.send(a,n),a):[]};return{send:sendCommands,sendCommands,sendStackPlan:(t=[],n={})=>{const a=normalizeStackPlans(t);return a.length?(a.forEach((t,o)=>{const i={...n,stackIndex:o+1,stackCount:a.length};recordDispatch({mode:"stack-plan",commands:t.commands,context:i,stackIndex:o+1,stackCount:a.length,stackPlan:t}),e.send(serializeStackPlan(t),i)}),a.map(e=>({type:e.type,commands:[...e.commands]}))):[]},normalizeCommands,history:()=>t.map(e=>({mode:e.mode,commands:[...e.commands],context:{...e.context},at:e.at,stackIndex:e.stackIndex,stackCount:e.stackCount,stackPlan:e.stackPlan?{type:e.stackPlan.type,commands:[...e.stackPlan.commands]}:null}))}},Zn=Object.freeze({freeQueue:[{balanceId:Hn.BALANCE,minDurationMs:250},{balanceId:Hn.EQUILIBRIUM,minDurationMs:250}],fullQueue:[{balanceId:Hn.BALANCE,minDurationMs:250},{balanceId:Hn.EQUILIBRIUM,minDurationMs:250}],classQueue:[{balanceId:Hn.ENTITY,minDurationMs:500}]}),createQueueFiredSideEffects=({balanceModel:e,now:t})=>({queueId:n})=>{const a=Zn[n]||[];if(!a.length)return[];const o=t();return a.filter(({balanceId:t,minDurationMs:n})=>!1===e.have(t)&&e.computeDurationMs(t)>Number(n||0)).map(({balanceId:t})=>(e.restartLossTimer(t,`queue-fired-resync:${n}`,o),t))},createDomainControllers=({adapter:e,seedData:t,options:n={},now:a,models:o})=>{const{systemModel:i,affModel:s,balanceModel:l,defModel:c,cacheModel:u}=o,d=createCommandDispatcher({adapter:e}),p=createQueueFiredSideEffects({balanceModel:l,now:a}),m=createQueueController({send:d.sendStackPlan,getRuntimeState:()=>{const e=i.getRuntime();return{paused:e.paused,phase:e.phase,settings:i.getSettings()}},getSeparator:()=>i.getSettings().commandSeparator,maxEntriesPerSubmission:Number(n.maxEntriesPerSubmission||20),onQueueFired:p}),g=createServersideController({adapter:e,dispatchCommands:d.sendCommands,affModel:s,defModel:c,balanceModel:l,systemModel:i,cureTable:t.cureTable,options:{maxCommandsPerCycle:Number(n.maxSsCommandsPerCycle||40)}}),h=createDefensePlanner({defModel:c,balanceModel:l,affModel:s,systemModel:i}),b=createPrecachePlanner({cacheModel:u});return{commandDispatcher:d,queueController:m,serverside:g,defensePlanner:h,precachePlanner:b,outputPlanner:createOutputPlanner({systemModel:i,serverside:g,defensePlanner:h,precachePlanner:b})}},secondsToMs$1=e=>{const t=Number(e);return Number.isFinite(t)?Math.max(0,Math.round(1e3*t)):0},msToSeconds$1=e=>{const t=Number(e);return Number.isFinite(t)?t/1e3:0},createBalanceState=(e={})=>{const t={};return Object.entries(e||{}).forEach(([e,n])=>{t[e]={id:e,have:!0,baseDurationMs:secondsToMs$1(n.length),config:deepFreeze(deepClone$1(n||{})),lastLostAtMs:0,lastGotAtMs:0,activeDurationMs:0,expectedReadyAtMs:0,lastRecoveredDurationMs:0,lastServerDurationMs:0,callbacks:{},timer:null}}),t},createBalancePayload=(e,t={})=>({id:e.id,have:e.have,baseDurationMs:e.baseDurationMs,lastLostAtMs:e.lastLostAtMs,lastGotAtMs:e.lastGotAtMs,activeDurationMs:e.activeDurationMs,expectedReadyAtMs:e.expectedReadyAtMs,lastRecoveredDurationMs:e.lastRecoveredDurationMs,lastServerDurationMs:e.lastServerDurationMs,...t}),createBalanceMutationApi=({state:e,emit:t,now:n,setTimeoutFn:a,clearTimeoutFn:o,computeDurationMs:i})=>{const clearTimer=e=>{e.timer&&(o?.(e.timer),e.timer=null)},normalizeDurationMs=(e={},t=0)=>Number.isFinite(Number(e.durationMs))?Math.max(0,Math.round(Number(e.durationMs))):Number.isFinite(Number(e.durationSeconds))?secondsToMs$1(e.durationSeconds):Math.max(0,Math.round(Number(t)||0)),s=1e3,scheduleRecovery=(e,t)=>{clearTimer(e),!a||e.have||e.expectedReadyAtMs<=0||(e.timer=a(()=>{gain(e.id,"timer",n())},Math.max(0,e.expectedReadyAtMs+s-t)))},applyServerDuration=(e,t)=>{e.lastServerDurationMs=t},emitDurationObserved=(e,n,a,o)=>{t("BalanceDurationObserved",createBalancePayload(e,{source:o,atMs:a,durationMs:n,durationSeconds:msToSeconds$1(n)}))},createTimingPayload=(e,t,n,a)=>createBalancePayload(e,{reason:t,atMs:n,durationMs:a,durationSeconds:msToSeconds$1(a)});function gain(a,o="manual",i=n()){const s=e[a];if(!s||s.have)return!1;const l=s.activeDurationMs;return s.have=!0,s.lastGotAtMs=i,s.lastRecoveredDurationMs=Math.max(0,i-s.lastLostAtMs),s.activeDurationMs=0,s.expectedReadyAtMs=0,clearTimer(s),s.callbacks.onStop?.(s),t("BalanceGot",createTimingPayload(s,o,i,s.lastRecoveredDurationMs||l)),!0}const lose=(a,o="manual",s=n(),l={})=>{const c=e[a];if(!c||!c.have)return!1;const u=normalizeDurationMs(l,i(a));return c.have=!1,c.lastLostAtMs=s,c.activeDurationMs=u,c.expectedReadyAtMs=u>0?s+u:0,!0===l.serverDuration&&applyServerDuration(c,u),c.callbacks.onStart?.(c),!1!==l.autoRegain?scheduleRecovery(c,s):clearTimer(c),t("BalanceLost",createTimingPayload(c,o,s,u)),!0},observeServerUse=(t,a,o={})=>{const i=e[t],s=secondsToMs$1(a);if(!i||s<=0)return!1;const l=o.atMs??o.at??n(),c=String(o.source||"serverside-duration");if(i.have){const e=lose(t,c,l,{durationMs:s,serverDuration:!0,autoRegain:o.autoRegain});return e&&emitDurationObserved(i,s,l,c),e}return applyServerDuration(i,s),i.activeDurationMs=s,i.expectedReadyAtMs=i.lastLostAtMs+s,!1!==o.autoRegain?scheduleRecovery(i,l):clearTimer(i),emitDurationObserved(i,s,l,c),!0};return{gain,lose,restartLossTimer:(a,o="manual",s=n(),l={})=>{const c=e[a];if(!c||c.have)return!1;const u=normalizeDurationMs(l,i(a));return c.lastLostAtMs=s,c.activeDurationMs=u,c.expectedReadyAtMs=u>0?s+u:0,!0===l.serverDuration&&applyServerDuration(c,u),!1!==l.autoRegain?scheduleRecovery(c,s):clearTimer(c),t("BalanceLossTimerRestarted",createTimingPayload(c,o,s,u)),!0},observeServerUse,reset(a,o="reset"){const i=e[a];return!!i&&(clearTimer(i),i.have=!0,i.lastGotAtMs=n(),i.activeDurationMs=0,i.expectedReadyAtMs=0,i.callbacks.onReset?.(i),t("BalanceReset",createBalancePayload(i,{reason:o})),!0)},setCallback(t,n={}){const a=e[t];return!!a&&(a.callbacks={...a.callbacks,...n},!0)},applyVitals(t={}){const a=toParsedGmcpVitals(t);a.balancePatches.forEach(({id:e,have:t})=>{if(!e||void 0===t)return;const a=n();t?gain(e,"gmcp-vitals",a):lose(e,"gmcp-vitals",a)}),a.resourceStats.forEach(({key:t,balanceState:a})=>{e[t]&&void 0!==a&&(a?gain(t,"gmcp-charstat",n()):lose(t,"gmcp-charstat",n()))})},dispose(){Object.values(e).forEach(clearTimer)}}},createBalanceQueryApi=({state:e,now:t,haveAff:n,getVersion:a=()=>0,getEntryVersion:o=()=>a()})=>{const buildEntrySnapshot=(e={})=>({id:e.id,have:e.have,baseDurationMs:e.baseDurationMs,baseDurationSeconds:msToSeconds$1(e.baseDurationMs),config:e.config,lastLostAtMs:e.lastLostAtMs,lastGotAtMs:e.lastGotAtMs,activeDurationMs:e.activeDurationMs,activeDurationSeconds:msToSeconds$1(e.activeDurationMs),expectedReadyAtMs:e.expectedReadyAtMs,lastRecoveredDurationMs:e.lastRecoveredDurationMs,lastRecoveredDurationSeconds:msToSeconds$1(e.lastRecoveredDurationMs),lastServerDurationMs:e.lastServerDurationMs,lastServerDurationSeconds:msToSeconds$1(e.lastServerDurationMs)}),i=new Map,getEntrySnapshot=t=>e[t]?(i.has(t)||i.set(t,createSnapshotCache({getVersion:()=>o(t),buildSnapshot:()=>buildEntrySnapshot(e[t])})),i.get(t)()):null,s=createSnapshotCache({getVersion:a,buildSnapshot:()=>Object.keys(e).reduce((e,t)=>(e[t]=getEntrySnapshot(t),e),{})}),computeDurationMs=t=>{const a=e[t];if(!a)return 0;let o=Number(a.baseDurationMs||0);const i=a.config.aff_modifiers||{};return Object.entries(i).forEach(([e,t])=>{if(!n(e))return;const a=Number(t.multiplier??1),i=secondsToMs$1(t.offset??0);o=Math.round(o*a+i)}),Math.max(0,o)},elapsedMs=(n,a=t())=>{const o=e[n];return o?o.have?Math.max(0,a-o.lastGotAtMs):Math.max(0,a-o.lastLostAtMs):0},remainingMs=(n,a=t())=>{const o=e[n];return!o||o.have?0:o.expectedReadyAtMs>0?Math.max(0,o.expectedReadyAtMs-a):Math.max(0,o.activeDurationMs-elapsedMs(n,a))},timing=(n,a=t())=>{const o=e[n];if(!o)return null;const i=elapsedMs(n,a),s=remainingMs(n,a),l=computeDurationMs(n);return{id:o.id,have:o.have,atMs:a,elapsedMs:i,elapsedSeconds:msToSeconds$1(i),remainingMs:s,remainingSeconds:msToSeconds$1(s),baseDurationMs:o.baseDurationMs,baseDurationSeconds:msToSeconds$1(o.baseDurationMs),computedDurationMs:l,computedDurationSeconds:msToSeconds$1(l),activeDurationMs:o.activeDurationMs,activeDurationSeconds:msToSeconds$1(o.activeDurationMs),expectedReadyAtMs:o.expectedReadyAtMs,lastLostAtMs:o.lastLostAtMs,lastGotAtMs:o.lastGotAtMs,lastRecoveredDurationMs:o.lastRecoveredDurationMs,lastRecoveredDurationSeconds:msToSeconds$1(o.lastRecoveredDurationMs),lastServerDurationMs:o.lastServerDurationMs,lastServerDurationSeconds:msToSeconds$1(o.lastServerDurationMs)}};return{list:()=>Object.keys(e),snapshot:()=>s(),get:e=>getEntrySnapshot(e),have:t=>Boolean(e[t]?.have),elapsed:elapsedMs,elapsedMs,elapsedSeconds:(e,n=t())=>msToSeconds$1(elapsedMs(e,n)),remaining:remainingMs,remainingMs,remainingSeconds:(e,n=t())=>msToSeconds$1(remainingMs(e,n)),timing,computeDuration:computeDurationMs,computeDurationMs,computeDurationSeconds:e=>msToSeconds$1(computeDurationMs(e))}},createBalanceModel=({balanceTable:e,now:t,setTimeoutFn:n,clearTimeoutFn:a,haveAff:o=()=>!1}={})=>{const i=createBalanceState(e),s=new Set;let l=0;const c=new Map,emit=(e,t)=>{l+=1,t?.id&&c.set(t.id,(c.get(t.id)??0)+1),s.forEach(n=>n(e,t))},u=createBalanceQueryApi({state:i,now:t,haveAff:o,getVersion:()=>l,getEntryVersion:e=>c.get(e)??0}),d=createBalanceMutationApi({state:i,emit,now:t,setTimeoutFn:n,clearTimeoutFn:a,computeDurationMs:u.computeDurationMs});return{onChange:e=>(s.add(e),()=>s.delete(e)),list:u.list,snapshot:u.snapshot,get:u.get,have:u.have,elapsed:u.elapsed,elapsedMs:u.elapsedMs,elapsedSeconds:u.elapsedSeconds,remaining:u.remaining,remainingMs:u.remainingMs,remainingSeconds:u.remainingSeconds,timing:u.timing,computeDuration:u.computeDuration,computeDurationMs:u.computeDurationMs,computeDurationSeconds:u.computeDurationSeconds,gain:d.gain,lose:d.lose,restartLossTimer:d.restartLossTimer,observeServerUse:d.observeServerUse,reset:d.reset,setCallback:d.setCallback,applyVitals:d.applyVitals,dispose:d.dispose}},asSet=(e={})=>Array.isArray(e)?new Set(e.map(e=>String(e).toLowerCase())):new Set(Object.keys(e).map(e=>String(e).toLowerCase())),Xn=0,Jn=1,createAfflictionReference=(e,t={})=>{const n=String(e||"").trim().toLowerCase();if(!n)return{raw:n,name:n,count:null,hasExplicitCount:!1,isCountable:!1};if(t[n])return{raw:n,name:n,count:null,hasExplicitCount:!1,isCountable:!0};const a=n.match(/^(.*?)(?:\s*\((\d+)\)|(\d+))$/),o=Number(a?.[2]??a?.[3]),i=a?.[1]?.trim();return a&&t[i]?{raw:n,name:i,count:o,hasExplicitCount:!0,isCountable:!0}:{raw:n,name:n,count:null,hasExplicitCount:!1,isCountable:!1}},normalizeAfflictionName=(e,t={})=>createAfflictionReference(e,t).name,normalizeAfflictionPriorityName=(e,t={})=>{const n=createAfflictionReference(e,t);return n.isCountable&&n.hasExplicitCount&&Number(n.count)>1?`${n.name}${n.count}`:n.name},formatAfflictionPriorityCommandName=(e,t={})=>{const n=createAfflictionReference(e,t);return n.isCountable?n.hasExplicitCount?`${n.name}${n.count}`:`${n.name}1`:n.name},createAffEntry=(e,t,n,a=null)=>({name:e,have:!1,count:0,min:Number(a?.min??Xn),max:Number(a?.max??Jn),since:0,lastChangeAt:0,order:t,defaultPriority:n,priorityOverride:null,timer:null}),createInitialAfflictionState=(e={})=>{const t=e.types?.countable||{},n=[...e.list||[]].reduce((e,n)=>{const a=normalizeAfflictionName(n,t);return a&&!e.includes(a)&&e.push(a),e},[]),a=Object.entries(e.prios||{}).reduce((e,[n,a])=>{const o=normalizeAfflictionName(n,t);return o&&(e[o]=a),e},{}),o={};return n.forEach((e,n)=>{o[e]=createAffEntry(e,n,a[e]??100,t[e]||null)}),{list:n,defaultPrios:a,state:o,timedConfig:e.types?.timed||{},countableConfig:t,uncurableSet:asSet(e.types?.uncurable||{})}},ensureAffEntry=(e,t,n={},a)=>{const o=normalizeAfflictionName(a,n);return e[o]||(e[o]=createAffEntry(o,Object.keys(e).length,t[o]??100,n[o]||null)),e[o]},toPriorityNumber=e=>{const t=Number(e);return Number.isFinite(t)?t:null},getPriorityValue=e=>e?e.priorityOverride??e.defaultPriority:null,getDefaultPriorityValue=e=>e?.defaultPriority??null,setPriorityValue=(e,t)=>e.priorityOverride===t?{changed:!1,priority:t}:(e.priorityOverride=t,{changed:!0,priority:t}),resetPriorityValue=e=>{const t=e.defaultPriority;return null===e.priorityOverride||void 0===e.priorityOverride?{changed:!1,priority:t}:(e.priorityOverride=null,{changed:!0,priority:t})},setDefaultPriorityValue=(e,t,{shouldSyncCurrentPriorityToDefault:n=e=>null===e.priorityOverride||void 0===e.priorityOverride,syncCurrentPriorityToDefault:a=()=>{}}={})=>{const o=e.defaultPriority;if(o===t)return{changed:!1,currentChanged:!1,priority:t,previousDefaultPriority:o};const i=n(e);return e.defaultPriority=t,i&&a(e,t),{changed:!0,currentChanged:i,priority:t,previousDefaultPriority:o}},createAfflictionPriorityApi=({state:e,defaultPrios:t,countableConfig:n,emit:a})=>{const getEntry=(a,{ensure:o=!1}={})=>o?ensureAffEntry(e,t,n,a):e[normalizeAfflictionName(a,n)]||null;return{ensureAff:e=>getEntry(e,{ensure:!0}),getPriority(e){const t=getEntry(e);return t?getPriorityValue(t):100},getDefaultPriority(e){const t=getEntry(e);return t?getDefaultPriorityValue(t):100},setPriority(e,t,n="manual"){const o=toPriorityNumber(t);if(null===o)return!1;const i=getEntry(e,{ensure:!0}),s=setPriorityValue(i,o);return!!s.changed&&(a("AffPriorityChanged",{name:i.name,source:n,priority:s.priority,defaultPriority:i.defaultPriority}),!0)},resetPriority(e,t="manual"){const n=getEntry(e,{ensure:!0}),o=resetPriorityValue(n);return!!o.changed&&(a("AffPriorityChanged",{name:n.name,source:t,priority:o.priority,defaultPriority:n.defaultPriority,reset:!0}),!0)},setDefaultPriority(e,t,n="manual"){const o=toPriorityNumber(t);if(null===o)return!1;const i=getEntry(e,{ensure:!0}),s=setDefaultPriorityValue(i,o);return!!s.changed&&(a("AffDefaultPriorityChanged",{name:i.name,source:n,priority:s.priority,previousDefaultPriority:s.previousDefaultPriority,currentPriority:getPriorityValue(i)}),s.currentChanged&&a("AffPriorityChanged",{name:i.name,source:n,priority:s.priority,defaultPriority:i.defaultPriority,defaultChanged:!0}),!0)}}},createAfflictionLifecycleApi=({state:e,defaultPrios:t,timedConfig:n,countableConfig:a,emit:o,now:i,setTimeoutFn:s,clearTimeoutFn:l})=>{const clearTimer=e=>{e.timer&&(l?.(e.timer),e.timer=null)},emitAffGot=(e,t,n)=>{o("AffGot",{name:e.name,at:t,source:n,have:e.have,count:e.count,min:e.min,max:e.max,since:e.since,lastChangeAt:e.lastChangeAt})},emitAffLost=(e,t,n)=>{o("AffLost",{name:e.name,at:t,source:n,have:e.have,count:e.count,min:e.min,max:e.max,since:e.since,lastChangeAt:e.lastChangeAt})},emitStackChanged=(e,t)=>{o("AffStackChanged",{name:e.name,count:e.count,min:e.min,max:e.max,have:e.have,at:t})},clampCount=(e,t)=>{const n=Number(t);return Number.isFinite(n)?Math.max(e.min,Math.min(e.max,n)):e.count},scheduleTimedExpiry=e=>{const t=n[e.name];if(!t)return;clearTimer(e);const a=Math.round(1e3*Number(t.length||0));a<=0||!s||(e.timer=s(()=>{lose(e.name,{source:"timed-expiry",at:i()})},a))},applyCountableState=(e,t,n={})=>{const a=n.at??i(),o=n.source||"manual",s=e.have;return e.count=clampCount(e,t),e.have=e.count>0,e.have&&!s&&(e.since=a),e.lastChangeAt=a,emitStackChanged(e,a),!s&&e.have?emitAffGot(e,a,o):s&&!e.have&&emitAffLost(e,a,o),s},got=(n,o={})=>{const s=createAfflictionReference(n,a),l=ensureAffEntry(e,t,a,s.name),c=o.at??i(),u=o.source||"manual",d=l.have;if(a[l.name]){const e=Number(o.count);return applyCountableState(l,Number.isFinite(e)?e:s.hasExplicitCount?s.count:l.count+Number(o.countDelta??1),{at:c,source:u}),l.have?scheduleTimedExpiry(l):clearTimer(l),!0}return!d&&(l.have=!0,l.count=1,l.since=c,l.lastChangeAt=c,scheduleTimedExpiry(l),emitAffGot(l,c,u),!0)},lose=(n,o={})=>{const s=ensureAffEntry(e,t,a,createAfflictionReference(n,a).name),l=o.at??i(),c=o.source||"manual",u=s.have;if(a[s.name]){const e=Number(o.count);return applyCountableState(s,Number.isFinite(e)?e:Number.isFinite(Number(o.countDelta))?s.count-Math.abs(Number(o.countDelta)):0,{at:l,source:c}),clearTimer(s),!0}return!!u&&(s.have=!1,s.count=0,s.lastChangeAt=l,clearTimer(s),emitAffLost(s,l,c),!0)};return{got,lose,applyList(t=[]){const n=new Set,o=new Map,i=new Set;(t||[]).forEach(e=>{const t=createAfflictionReference("string"==typeof e?e:String(e?.name||e?.affliction||e||""),a);if(t.name){if(a[t.name])return t.hasExplicitCount?(i.add(t.name),void o.set(t.name,Math.max(o.get(t.name)??0,t.count))):void(i.has(t.name)||o.set(t.name,(o.get(t.name)??0)+1));n.add(t.name)}}),Object.keys(e).forEach(t=>{a[t]?o.has(t)?got(t,{source:"gmcp-list",count:o.get(t)}):(e[t].have||e[t].count>0)&&lose(t,{source:"gmcp-list"}):n.has(t)?got(t,{source:"gmcp-list"}):e[t].have&&lose(t,{source:"gmcp-list"})})},dispose(){Object.values(e).forEach(clearTimer)}}},secondsToMs=e=>{const t=Number(e);return Number.isFinite(t)?Math.max(0,Math.round(1e3*t)):0},msToSeconds=e=>{const t=Number(e);return Number.isFinite(t)?t/1e3:0},createAfflictionQueryApi=({state:e,list:t,timedConfig:n,countableConfig:a,uncurableSet:o,getPriority:i,now:s,getVersion:l=()=>0,getEntryVersion:c=()=>l()})=>{const buildEntrySnapshot=(e={})=>({name:e.name,have:e.have,count:e.count,min:e.min,max:e.max,since:e.since,lastChangeAt:e.lastChangeAt,order:e.order,defaultPriority:e.defaultPriority,priorityOverride:e.priorityOverride}),u=new Map,getEntrySnapshot=t=>e[t]?(u.has(t)||u.set(t,createSnapshotCache({getVersion:()=>c(t),buildSnapshot:()=>buildEntrySnapshot(e[t])})),u.get(t)()):null,d=createSnapshotCache({getVersion:l,buildSnapshot:()=>Object.keys(e).reduce((e,t)=>(e[t]=getEntrySnapshot(t),e),{})}),elapsedMs=(t,n=s())=>{const o=e[normalizeAfflictionName(t,a)];return o?.have?Math.max(0,n-o.since):0},durationMs=e=>{const t=n[normalizeAfflictionName(e,a)];return t?secondsToMs(t.length):0},remainingMs=(t,n=s())=>{const o=normalizeAfflictionName(t,a),i=e[o],l=durationMs(o);return!i?.have||l<=0?0:Math.max(0,l-elapsedMs(o,n))},timing=(t,n=s())=>{const o=normalizeAfflictionName(t,a),i=e[o];if(!i)return null;const l=elapsedMs(o,n),c=durationMs(o),u=remainingMs(o,n);return{name:o,have:i.have,atMs:n,sinceMs:i.since,lastChangeAtMs:i.lastChangeAt,elapsedMs:l,elapsedSeconds:msToSeconds(l),timedDurationMs:c,timedDurationSeconds:msToSeconds(c),remainingMs:u,remainingSeconds:msToSeconds(u)}};return{snapshot:()=>d(),get:e=>getEntrySnapshot(normalizeAfflictionName(e,a)),list:()=>[...t,...Object.keys(e).filter(e=>!t.includes(e))],getCountablePriorityNames:()=>Object.entries(a).flatMap(([e,t])=>{const n=Math.max(0,Number(t?.max??0)),a=[];for(let o=2;o<=n;o+=1)a.push(`${e}${o}`);return a}),normalizeName:e=>normalizeAfflictionName(e,a),normalizePriorityName:e=>normalizeAfflictionPriorityName(e,a),formatPriorityCommandName:e=>formatAfflictionPriorityCommandName(e,a),haveAff(t){const n=normalizeAfflictionName(t,a);return Boolean(e[n]?.have)},haveAffs:(t=[])=>t.every(t=>{const n=normalizeAfflictionName(t,a);return Boolean(e[n]?.have)}),haveAnAff:(t=[])=>t.some(t=>{const n=normalizeAfflictionName(t,a);return Boolean(e[n]?.have)}),currentSorted:()=>Object.values(e).filter(e=>e.have).sort((e,t)=>{const n=i(e.name),a=i(t.name);return n!==a?n-a:e.order-t.order}).map(e=>e.name),isCountable(e){const t=normalizeAfflictionName(e,a);return Boolean(a[t])},isTimed(e){const t=normalizeAfflictionName(e,a);return Boolean(n[t])},isUncurable(e){const t=normalizeAfflictionName(e,a);return o.has(t)},elapsed:elapsedMs,elapsedMs,elapsedSeconds:(e,t=s())=>msToSeconds(elapsedMs(e,t)),remaining:remainingMs,remainingMs,remainingSeconds:(e,t=s())=>msToSeconds(remainingMs(e,t)),timing}},createAfflictionModel=({affTable:e,now:t,setTimeoutFn:n,clearTimeoutFn:a}={})=>{const{list:o,defaultPrios:i,state:s,timedConfig:l,countableConfig:c,uncurableSet:u}=createInitialAfflictionState(e),d=new Set;let p=0;const m=new Map,emit=(e,t)=>{p+=1,t?.name&&m.set(t.name,(m.get(t.name)??0)+1),d.forEach(n=>n(e,t))},getEntryVersion=e=>m.get(e)??0,g=createAfflictionPriorityApi({state:s,defaultPrios:i,countableConfig:c,emit}),h=createAfflictionLifecycleApi({state:s,defaultPrios:i,timedConfig:l,countableConfig:c,emit,now:t,setTimeoutFn:n,clearTimeoutFn:a}),b=createAfflictionQueryApi({state:s,list:o,timedConfig:l,countableConfig:c,uncurableSet:u,getPriority:g.getPriority,now:t,getVersion:()=>p,getEntryVersion});return{onChange:e=>(d.add(e),()=>d.delete(e)),snapshot:b.snapshot,get:b.get,list:b.list,getCountablePriorityNames:b.getCountablePriorityNames,normalizeName:b.normalizeName,normalizePriorityName:b.normalizePriorityName,formatPriorityCommandName:b.formatPriorityCommandName,got:h.got,lose:h.lose,applyList:h.applyList,setPriority:g.setPriority,resetPriority:g.resetPriority,getPriority:g.getPriority,getDefaultPriority:g.getDefaultPriority,setDefaultPriority:g.setDefaultPriority,haveAff:b.haveAff,haveAffs:b.haveAffs,haveAnAff:b.haveAnAff,currentSorted:b.currentSorted,isCountable:b.isCountable,isTimed:b.isTimed,isUncurable:b.isUncurable,elapsed:b.elapsed,elapsedMs:b.elapsedMs,elapsedSeconds:b.elapsedSeconds,remaining:b.remaining,remainingMs:b.remainingMs,remainingSeconds:b.remainingSeconds,timing:b.timing,dispose:h.dispose}},createDefenseLifecycleApi=({state:e,emit:t})=>{const consumeStaticPriority=(n,a="manual",o={})=>{const i=e[n];return!(!i?.static||!isActiveStaticPriority(resolveDefensePriority(i)))&&(i.priorityOverride=0,t("DefPriorityChanged",{id:n,value:0,source:a,consumed:!0,static:!0,defaultPriority:i.defaultPriority,...o}),!0)},setHave=(n,a,o="manual",i=Date.now())=>{const s=e[n];if(!s||s.have===a)return!1;s.have=a,s.lastChangeAt=i;const l={id:n,source:o,at:i,have:s.have,lastChangeAt:s.lastChangeAt,static:s.static,serverside:s.serverside,preempt:s.preempt};return t(a?"DefGot":"DefLost",l),a&&consumeStaticPriority(n,o,{triggeredByGain:!0}),!0};return{consumeStaticPriority,setHave,setStatic:(n,a,o="manual")=>{const i=e[n];if(!i)return!1;const s=Boolean(a);if(i.static===s)return!1;const l=i.static,c=resolveDefensePriority(i);let u=!1,d=!1;return i.static=s,s&&i.have&&isActiveStaticPriority(c)?(i.priorityOverride=0,d=!0,u=resolveDefensePriority(i)!==c):s||0!==i.priorityOverride||(i.priorityOverride=null,u=resolveDefensePriority(i)!==c),t("DefStaticChanged",{id:n,value:s,previousValue:l,source:o,have:i.have,static:i.static,seedStatic:i.seedStatic,defaultPriority:i.defaultPriority,currentPriority:resolveDefensePriority(i),serverside:i.serverside,preempt:i.preempt}),u&&t("DefPriorityChanged",{id:n,value:resolveDefensePriority(i),source:o,static:i.static,defaultPriority:i.defaultPriority,staticChanged:!0,consumed:d}),!0},setCommand:(n,a,o="manual")=>{const i=e[n];if(!i)return!1;const s=normalizeCommandList(a);return i.command=s,t("DefCommandChanged",{id:n,value:s,source:o}),!0},applyList(t=[],n="gmcp-list"){const a=new Set;(t||[]).forEach(e=>{const t=normalizeObservedDefenseId(e);t&&a.add(t)}),Object.keys(e).forEach(t=>{a.has(t)?(setHave(t,!0,n),e[t].static&&consumeStaticPriority(t,n,{observedActive:!0})):e[t].have&&!e[t].clientOnly&&setHave(t,!1,n)})}}},toDefensePriorityNumber=e=>{const t=toPriorityNumber(e);return null===t?null:t<0?0:t>26?26:t},createDefensePriorityApi=({state:e,emit:t,consumeStaticPriority:n})=>{const getEntry=t=>e[t]||null;return{getPriority(e){const t=getEntry(e);return t?getPriorityValue(t):-1},getDefaultPriority(e){const t=getEntry(e);return t?getDefaultPriorityValue(t):-1},setPriority(e,a,o="manual"){const i=toDefensePriorityNumber(a);if(null===i)return!1;const s=getEntry(e);if(!s)return!1;if(s.static&&!0===s.have&&isActiveStaticPriority(i))return n(e,o,{ignoredWhileActive:!0});const l=setPriorityValue(s,i);return!!l.changed&&(t("DefPriorityChanged",{id:s.id,value:l.priority,source:o,static:s.static,defaultPriority:s.defaultPriority}),!0)},resetPriority(e,a="manual"){const o=getEntry(e);if(!o)return!1;if(o.static&&!0===o.have)return n(e,a,{reset:!0,ignoredWhileActive:!0});const i=resetPriorityValue(o);return!!i.changed&&(t("DefPriorityChanged",{id:o.id,value:i.priority,source:a,static:o.static,defaultPriority:o.defaultPriority,reset:!0}),!0)},setDefaultPriority(e,n,a="manual"){const o=toDefensePriorityNumber(n);if(null===o)return!1;const i=getEntry(e);if(!i)return!1;const s=setDefaultPriorityValue(i,o);return!!s.changed&&(t("DefDefaultPriorityChanged",{id:i.id,value:s.priority,source:a,static:i.static,previousDefaultPriority:s.previousDefaultPriority,currentPriority:getPriorityValue(i)}),s.currentChanged&&t("DefPriorityChanged",{id:i.id,value:s.priority,source:a,static:i.static,defaultPriority:i.defaultPriority,defaultChanged:!0}),!0)}}},createDefenseQueryApi=({state:e,list:t,getVersion:n=()=>0,getEntryVersion:a=()=>n()})=>{const buildDefEntrySnapshot=(e={})=>({id:e.id,have:e.have,lastChangeAt:e.lastChangeAt,order:e.order,defaultPriority:e.defaultPriority,priorityOverride:e.priorityOverride,priority:resolveDefensePriority(e),command:e.command,bals_req:e.bals_req,bals_used:e.bals_used,blocks:e.blocks,skills:e.skills,opps:e.opps,serverside:e.serverside,preempt:e.preempt,static:e.static,clientOnly:e.clientOnly}),o=new Map,getDefSnapshot=t=>e[t]?(o.has(t)||o.set(t,createSnapshotCache({getVersion:()=>a(t),buildSnapshot:()=>buildDefEntrySnapshot(e[t])})),o.get(t)()):null,i=createSnapshotCache({getVersion:n,buildSnapshot:()=>Object.keys(e).reduce((t,n)=>(t[n]=resolveDefensePriority(e[n]),t),{})}),s=createSnapshotCache({getVersion:n,buildSnapshot:()=>Object.keys(e).reduce((t,n)=>(t[n]=Number(e[n].defaultPriority??-1),t),{})}),l=createSnapshotCache({getVersion:n,buildSnapshot:()=>Object.keys(e).reduce((t,n)=>(t[n]=Boolean(e[n]?.static),t),{})}),c=createSnapshotCache({getVersion:n,buildSnapshot:()=>Object.keys(e).reduce((t,n)=>(Boolean(e[n]?.static)!==Boolean(e[n]?.seedStatic)&&(t[n]=Boolean(e[n]?.static)),t),{})}),u=createSnapshotCache({getVersion:n,buildSnapshot:()=>Object.keys(e).reduce((e,t)=>(e[t]=getDefSnapshot(t),e),{})});return{snapshot:()=>u(),get:e=>getDefSnapshot(e),list:()=>[...t,...Object.keys(e).filter(e=>!t.includes(e))],isAvailableForClass:(t,n="")=>matchesClass(e[t]?.skills,n),haveDef:t=>Boolean(e[t]?.have),getPriority(t){const n=e[t];return n?resolveDefensePriority(n):-1},getDefaultPriority:t=>Number(e[t]?.defaultPriority??-1),getPriorities:()=>i(),getDefaultPriorities:()=>s(),getStatics:()=>l(),getStaticOverrides:()=>c(),isStatic:t=>Boolean(e[t]?.static)}},createDefenseModel=({defTable:e={},defPrios:t={}}={})=>{const{state:n,list:a}=createInitialDefenseState({defTable:e,defPrios:t}),o=new Set;let i=0;const s=new Map,emit=(e,t)=>{i+=1,t?.id&&s.set(t.id,(s.get(t.id)??0)+1),o.forEach(n=>n(e,t))},getEntryVersion=e=>s.get(e)??0,l=createDefenseLifecycleApi({state:n,emit}),c=createDefensePriorityApi({state:n,emit,consumeStaticPriority:l.consumeStaticPriority}),u=createDefenseQueryApi({state:n,list:a,getVersion:()=>i,getEntryVersion});return{onChange:e=>(o.add(e),()=>o.delete(e)),snapshot:u.snapshot,get:u.get,list:u.list,isAvailableForClass:u.isAvailableForClass,haveDef:u.haveDef,isStatic:u.isStatic,setStatic:l.setStatic,setCommand:l.setCommand,setHave:l.setHave,applyList:l.applyList,setPriority:c.setPriority,setDefaultPriority:c.setDefaultPriority,resetPriority:c.resetPriority,getPriority:c.getPriority,getDefaultPriority:c.getDefaultPriority,getDefaultPriorities:u.getDefaultPriorities,getPriorities:u.getPriorities,getStatics:u.getStatics,getStaticOverrides:u.getStaticOverrides}},ea=1e4,ta=["brokenleftarm","damagedleftarm","mangledleftarm"],ra=["brokenrightarm","damagedrightarm","mangledrightarm"],createCachePrecacheSupport=({state:e,haveAff:t=()=>!1}={})=>{const isPrecacheBlocked=()=>{const e=ta.some(e=>t(e)),n=ra.some(e=>t(e));return!(!e||!n)},buildPrecacheCommands=()=>isPrecacheBlocked()?[]:e.hydration.inventoryKnown&&e.hydration.riftKnown?Object.entries(e.desiredPrecache).flatMap(([t,n])=>{const a=toNumber(e.inventory[t],0),o=toNumber(e.rift[t],0),i=Math.max(0,toNumber(e.riftCapacity,ea)),s=Math.max(0,toNumber(n,0)),l=Math.max(0,s-a),c=Math.max(0,a-s),u=Math.min(l,o),d=Math.max(0,i-o);return u>0?[`outr ${u} ${t}`]:c>0&&d>0?[`inr ${Math.min(c,d)} ${t}`]:[]}):[];return{getPrecacheCommands:()=>buildPrecacheCommands(),isPrecacheBlocked,isHydrated:()=>e.hydration.inventoryKnown&&e.hydration.riftKnown,getTotal:t=>toNumber(e.inventory[t],0)+toNumber(e.rift[t],0)}},findCaseInsensitiveKey=(e={},t="")=>{if(!e||"object"!=typeof e)return null;const n=String(t).toLowerCase();return Object.keys(e).find(e=>String(e).toLowerCase()===n)||null},createCacheNameNormalizer=({cacheTable:e={},cacheNames:t={}}={})=>{const n=t.herb_name_to_herb||{},a=new Set(Object.keys(e)),toCount=(e,t=1)=>Math.max(0,toNumber(e,t)),resolveName=e=>{if(!e)return"";const t=String(e).trim().toLowerCase();return n[t]||t},resolveCountedName=e=>{const t=resolveName(e);if(a.has(t)||!t.endsWith("s"))return t;const n=resolveName(t.slice(0,-1));return a.has(n)?n:t},parseNameAndAmount=(e,t)=>{const n=String(e||"").trim().toLowerCase();if(!n)return{name:"",amount:Math.max(0,toNumber(t,1))};const o=n.match(/^a group of\s+(\d+)\s+(.+)$/);if(o){const[,e,n]=o,i=resolveCountedName(n);if(a.has(i))return{name:i,amount:toCount(t,toNumber(e,1))}}const i=n.match(/^(\d+)\s+(.+)$/);if(i){const[,e,n]=i,o=resolveCountedName(n);if(a.has(o))return{name:o,amount:toCount(t,toNumber(e,1))}}return{name:resolveCountedName(n),amount:toCount(t,1)}};return{resolveName,parseNameAndAmount,normalizeName:e=>parseNameAndAmount(e).name}},readGmcpPath=(e={},t=[])=>{const n=findCaseInsensitiveKey(e,t.join("."));if(n)return e[n];let a=e;for(const o of t){if(!a||"object"!=typeof a)return;const e=findCaseInsensitiveKey(a,o);if(!e)return;a=a[e]}return a},createCacheStateSupport=({state:e,emit:t=()=>{},cacheTable:n={},cacheNames:a={}}={})=>{const{parseNameAndAmount:o,normalizeName:i}=createCacheNameNormalizer({cacheTable:n,cacheNames:a}),s={invAddsById:new Map,roomRemovesById:new Map,appliedIds:new Set},normalizeItemId=e=>null==e||""===e?"":String(e),adjustInventoryAmount=(n,a,o="inventory-delta")=>!(!n||!(n in e.inventory))&&(e.inventory[n]=Math.max(0,e.inventory[n]+toNumber(a,0)),t("CacheAmountChanged",{bucket:"inventory",name:n,amount:e.inventory[n],source:o}),!0),parseInventoryEntry=(e={})=>{const t=e?.item||e,n=o(t?.name||t?.item||t,t?.amount??t?.count??t?.qty??e?.amount??e?.count??e?.qty);return{id:normalizeItemId(t?.id??e?.id),location:String(e?.location??t?.parentid??t?.location??"inv").toLowerCase(),name:n.name,amount:n.amount,icon:t?.icon??e?.icon,attrib:t?.attrib??e?.attrib}},storeInventoryCurative=(t={})=>{if(!t.id||!t.name||!(t.name in e.inventory))return!1;const n={name:t.name,amount:t.amount,location:t.location||"inv"};return void 0!==t.icon&&null!==t.icon&&(n.icon=t.icon),void 0!==t.attrib&&null!==t.attrib&&(n.attrib=t.attrib),e.inventoryCurativesById[t.id]=n,!0},deleteInventoryCurative=t=>{const n=normalizeItemId(t);return!(!n||!(n in e.inventoryCurativesById))&&(delete e.inventoryCurativesById[n],!0)},deleteInventoryCurativesByName=t=>{let n=!1;return Object.entries(e.inventoryCurativesById).forEach(([a,o])=>{o?.name===t&&(delete e.inventoryCurativesById[a],n=!0)}),n},emitInventoryIdentityChanged=()=>{t("CacheInventoryIdentityChanged",{...e.inventoryCurativesById})},buildResult=({changed:e=!1,identityChanged:t=!1,name:n="",amount:a=0,delta:o=0,source:i=""}={})=>({changed:e,identityChanged:t,name:n,amount:a,delta:o,source:i}),readInventorySnapshot=(e={})=>{const t=readGmcpPath(e,["Char","Items","List"]);if(void 0!==t)return t;const n=readGmcpPath(e,["Items","Inv"]);return void 0!==n?{location:"inv",items:n}:void 0},setAmount=(n,a,o,s="manual")=>{const l=i(a);if(!l||!(l in e[n]))return!1;const c=Math.max(0,toNumber(o,e[n][l]));return e[n][l]=c,t("CacheAmountChanged",{bucket:n,name:l,amount:c,source:s}),!0},setRiftCapacity=(n,a="manual")=>{const o=toNumber(e.riftCapacity,ea),i=Math.max(0,toNumber(n,o));return i!==e.riftCapacity&&(e.riftCapacity=i,t("CacheRiftCapacityChanged",{amount:i,source:a}),!0)},observeInventorySnapshot=(n=[])=>{const a={...e.inventory},o={};Object.keys(a).forEach(e=>{a[e]=0}),(n||[]).forEach(e=>{const t=parseInventoryEntry(e);if("inv"===t.location&&t.name&&t.name in a&&(a[t.name]+=t.amount,t.id)){const e={name:t.name,amount:t.amount,location:t.location};void 0!==t.icon&&null!==t.icon&&(e.icon=t.icon),void 0!==t.attrib&&null!==t.attrib&&(e.attrib=t.attrib),o[t.id]=e}}),e.inventory=a,e.inventoryCurativesById=o,e.hydration.inventoryKnown=!0,t("CacheInventoryListApplied",{...e.inventory})},applyRoomPickupTransfer=t=>{if(!t||s.appliedIds.has(t))return null;const n=s.invAddsById.get(t),a=s.roomRemovesById.get(t);if(!n||!a)return null;const o=n.name&&n.name in e.inventory,i=Math.max(0,toNumber(n.amount,0)),l=a.name&&a.name in e.inventory,c=Math.max(0,toNumber(a.amount,0)),u=o&&i>0?n:l&&c>0?a:null;if(s.invAddsById.delete(t),s.roomRemovesById.delete(t),s.appliedIds.add(t),!u)return null;const d=Math.max(0,toNumber(u.amount,0));return!u.name||!(u.name in e.inventory)||d<=0?null:adjustInventoryAmount(u.name,d,"gmcp:room-pickup")?buildResult({changed:!0,name:u.name,amount:d,delta:d,source:"gmcp:room-pickup"}):null},observeRoomPickupCandidate=(e,t)=>{if(!e.id||s.appliedIds.has(e.id))return null;if("inv"===e.location&&"add"===t)s.invAddsById.set(e.id,e);else{if("room"!==e.location||"remove"!==t)return null;s.roomRemovesById.set(e.id,e)}return applyRoomPickupTransfer(e.id)},observeRiftSnapshot=(n={})=>{const a=n.items||n,i=Array.isArray(a)?a:Object.entries(a).map(([e,t])=>({name:e,amount:t})),s={...e.rift};Object.keys(s).forEach(e=>{s[e]=0}),i.forEach(e=>{const t=o(e.name||e.item||e,e.amount??e.count??e.qty??0);t.name&&t.name in s&&(s[t.name]=t.amount)}),e.rift=s,e.hydration.riftKnown=!0,t("CacheRiftListApplied",{...e.rift})},hydrateFromGmcp=(e={})=>{let t=!1;const n=readInventorySnapshot(e);void 0!==n&&(Array.isArray(n)?(observeInventorySnapshot(n),t=!0):"inv"===String(n?.location??n?.Location??"inv").toLowerCase()&&(observeInventorySnapshot(n?.items||[]),t=!0));const a=readGmcpPath(e,["IRE","Rift","List"]);return void 0!==a&&(observeRiftSnapshot(a||{}),t=!0),t};return{observeInventorySnapshot,observeItemDelta:(t={})=>{const n=parseInventoryEntry(t),a=String(t.action||"").toLowerCase(),o=String(t.direction||"").toLowerCase(),i=a||o;let s=!1;if("inv"===n.location){const t=n.id&&e.inventoryCurativesById[n.id]||null;"add"===i?n.name&&n.name in e.inventory&&(s=storeInventoryCurative(n),s&&emitInventoryIdentityChanged()):"remove"===i?(s=!!t&&deleteInventoryCurative(n.id),s&&emitInventoryIdentityChanged()):"update"===i?n.name&&n.name in e.inventory?(s=storeInventoryCurative(n),s&&emitInventoryIdentityChanged()):t&&(s=deleteInventoryCurative(n.id),s&&emitInventoryIdentityChanged()):n.name&&n.name in e.inventory&&(s=storeInventoryCurative(n),s&&emitInventoryIdentityChanged())}const l=observeRoomPickupCandidate(n,i);return l?{...l,identityChanged:s}:buildResult({identityChanged:s})},observeRiftSnapshot,observeRiftChange:(t={})=>{const n=t.amount??t.count??t.qty;if(null==n||""===n)return!1;const a=o(t.name||t.item||t.desc||t,n);return!(!a.name||!(a.name in e.rift))&&(setAmount("rift",a.name,a.amount,"gmcp:rift-change"),{name:a.name,riftAmount:e.rift[a.name]})},observeRiftOutText:({item:t,name:n,amount:a=1,riftAmount:i}={})=>{const s=o(t||n,a);if(!s.name||!(s.name in e.inventory)||!(s.name in e.rift))return!1;const l=Math.max(0,toNumber(a,s.amount));return!(l<=0)&&(adjustInventoryAmount(s.name,l,"text:rift-out"),setAmount("rift",s.name,i,"text:rift-out"),{name:s.name,amount:l,riftAmount:e.rift[s.name]})},observeRiftInText:({item:t,name:n,amount:a=1,riftAmount:i,atCapacity:s=!1}={})=>{const l=o(t||n,a);if(!l.name||!(l.name in e.inventory)||!(l.name in e.rift))return!1;const c=Math.max(0,toNumber(a,l.amount));return!(c<=0)&&(adjustInventoryAmount(l.name,-c,"text:rift-in"),setAmount("rift",l.name,i,"text:rift-in"),s&&setRiftCapacity(i,"text:rift-in-max"),{name:l.name,amount:c,riftAmount:e.rift[l.name],riftCapacity:e.riftCapacity})},invalidateRiftSnapshot:({source:n="rift-resync"}={})=>!!e.hydration.riftKnown&&(e.hydration.riftKnown=!1,t("CacheRiftSnapshotInvalidated",{source:n}),!0),observeInventoryDeltaText:({item:t,name:n,amount:a,delta:i,source:s="text:inventory"}={})=>{const l=o(t||n,a);if(!l.name||!(l.name in e.inventory))return!1;const c=Math.max(0,toNumber(a,l.amount)),u=toNumber(i,0);if(c<=0||0===u)return!1;const d=u>0?c:-c;return adjustInventoryAmount(l.name,d,s),{name:l.name,amount:c,delta:d,inventoryAmount:e.inventory[l.name]}},observeInventoryEmptyText:({item:t,name:n,source:a="text:inventory-empty"}={})=>{const i=o(t||n,0);if(!i.name||!(i.name in e.inventory))return!1;const s=e.inventory[i.name],l=deleteInventoryCurativesByName(i.name);return l&&emitInventoryIdentityChanged(),setAmount("inventory",i.name,0,a),{changed:0!==s||l,identityChanged:l,name:i.name,amount:0,delta:-s,inventoryAmount:e.inventory[i.name],source:a}},observeCurativeConsumedText:({item:t,name:n,amount:a=1}={})=>{const i=o(t||n,a);if(!i.name||!(i.name in e.inventory))return!1;const s=Math.max(0,toNumber(a,i.amount));return!(s<=0)&&(adjustInventoryAmount(i.name,-s,"text:consume"),{name:i.name,amount:s,inventoryAmount:e.inventory[i.name]})},completeObservationBlock:()=>{s.invAddsById.clear(),s.roomRemovesById.clear(),s.appliedIds.clear()},hydrateFromGmcp,setDesiredPrecache:(n={})=>{Object.entries(n).forEach(([t,n])=>{t in e.desiredPrecache&&(e.desiredPrecache[t]=Math.max(0,toNumber(n,0)))}),t("CacheDesiredPrecacheChanged",{...e.desiredPrecache})}}},createCacheModel=({cacheTable:e={},cacheNames:t={},haveAff:n=()=>!1,haveDef:a=()=>!1}={})=>{const o=new Set;let i=0;const s={inventory:{...e},rift:{...e},riftCapacity:ea,inventoryCurativesById:{},desiredPrecache:Object.keys(e).reduce((e,t)=>(e[t]=0,e),{}),hydration:{inventoryKnown:!1,riftKnown:!1}},emit=(e,t)=>{i+=1,o.forEach(n=>n(e,t))},l=createSnapshotCache({getVersion:()=>i,buildSnapshot:()=>({inventory:{...s.inventory},rift:{...s.rift},riftCapacity:s.riftCapacity,inventoryCurativesById:Object.entries(s.inventoryCurativesById).reduce((e,[t,n])=>(e[t]={...n},e),{}),desiredPrecache:{...s.desiredPrecache},hydration:{...s.hydration}})});return{onChange:e=>(o.add(e),()=>o.delete(e)),snapshot:()=>l(),...createCacheStateSupport({state:s,emit,cacheTable:e,cacheNames:t}),...createCachePrecacheSupport({state:s,haveAff:n,haveDef:a}),getDesiredPrecache:()=>({...s.desiredPrecache})}},na={loadOnLogin:!1,flushSafetyMs:250,maxSendPerChunk:20,queueWhilePaused:!1,overrideTab:!1,customPrompt:!0,debug:!1,notices:{affGot:!0,affLost:!0,defGot:!0,defLost:!0,balanceLost:!1,balanceRecovered:!1,trackableGot:!1,trackableLost:!1,priority:!0,output:!1},ss:{transmutation:!0,sipPriority:"health",sipHealthAt:80,sipManaAt:70,mossHealthAt:90,mossManaAt:80,focus:!0,focusOverHerbs:!0,tree:"on",clot:!0,clotAt:19,fracturesAbove:35,manaThreshold:10,batch:!0}},aa={paused:!0,rulesSuspended:!1,slowMode:!1,aeonLocked:!1,phase:re.IDLE,startupFailureMessage:""},oa={name:"",class:"",race:"",color:"",hp:0,maxhp:0,mp:0,maxmp:0,ep:0,maxep:0,wp:0,maxwp:0,bleed:0,rage:0,dead:!1,mount:null,wielded:{left:null,right:null}},ia={id:"",text:"",isPlayer:null,hp:""},sa={id:null,name:"",exits:{},items:{}},getChangedPatchKeys=(e={},t,n)=>Object.keys(e||{}).filter(e=>JSON.stringify(n[e])!==JSON.stringify(t[e])),createSystemConfigApi=({state:e,emit:t})=>({getRuntime:()=>e.runtime,getSettings:()=>e.settings,getBaselineIntent:()=>e.baselineIntent,setRuntime(n={}){const a=e.runtime,o=deepMerge(e.runtime,n),i=Object.keys(o).filter(e=>o[e]!==a[e]);if(!i.length)return!1;const s=a.paused;return e.runtime=o,e.runtime.paused!==s&&t("PauseStateChanged",{paused:e.runtime.paused}),t("RuntimeStateChanged",{current:e.runtime,changedKeys:i}),!0},setSettings(n={},a={}){const o=e.settings,i=deepMerge(e.settings,n),s=getChangedPatchKeys(n,o,i);return!!s.length&&(e.settings=i,a.setBaseline&&(e.baselineIntent=deepMerge(e.baselineIntent,n)),t("SettingsChanged",{current:e.settings,patch:n,changedKeys:s}),!0)},setBaselineIntent(n={}){const a=e.baselineIntent,o=deepMerge(e.baselineIntent,n),i=getChangedPatchKeys(n,a,o);return!!i.length&&(e.baselineIntent=o,t("BaselineIntentChanged",{current:e.baselineIntent,patch:n,changedKeys:i}),!0)}}),shallowEqualRecord=(e={},t={})=>{const n=Object.keys(e||{}),a=Object.keys(t||{});return n.length===a.length&&n.every(n=>e[n]===t[n])},collectChangedFields=(e={})=>{const t={};return Object.entries(e).forEach(([e,[n,a]])=>{n!==a&&(t[e]={previous:n,current:a})}),t},la=["hp","maxhp","mp","maxmp","ep","maxep","wp","maxwp"],hasOwn$3=(e,t)=>null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t),isDragonClass=(e="")=>/\bdragon\b/i.test(String(e||"")),getDragonColor=(e="")=>{const t=String(e||"").trim().split(/\s+/).filter(Boolean),n=t.findIndex(e=>"dragon"===e.toLowerCase()),a=n>0?t[n-1]:"";return a?a[0].toUpperCase()+a.slice(1).toLowerCase():""},normalizeStatusClass=({className:e="",race:t="",classProvided:n=!1,raceProvided:a=!1}={})=>{const o=String(e||"").trim(),i=String(t||"").trim(),s=isDragonClass(o),l=isDragonClass(i);return s||!n&&a&&l?{className:"Dragon",color:getDragonColor(o)||getDragonColor(i)}:{className:normalizeClassName(o),color:""}},createSystemCharacterApi=({state:e,emit:t})=>({updateVitals(n={}){const a=toParsedGmcpVitals(n),o=a.resourceStats.filter(({balanceState:e})=>void 0===e),i={dead:e.char.dead};la.forEach(t=>{i[t]=e.char[t]}),o.forEach(({key:t})=>{t in i||(i[t]=e.char[t])}),la.forEach(t=>{void 0!==a.vitals[t]&&(e.char[t]=a.vitals[t])}),o.forEach(({key:t,value:n})=>{e.char[t]=n}),e.char.dead=e.char.hp<=0;const s={dead:[i.dead,e.char.dead]};la.forEach(t=>{s[t]=[i[t],e.char[t]]}),o.forEach(({key:t})=>{s[t]=[i[t],e.char[t]]});const l=collectChangedFields(s);return!!Object.keys(l).length&&(t("VitalsUpdated",{current:e.char,hpDiff:e.char.hp-i.hp,mpDiff:e.char.mp-i.mp,changedFields:l}),e.char.dead&&!i.dead&&t("DeathDetected",{hp:e.char.hp,previousHp:i.hp}),!0)},updateStatus(n={}){const a={name:e.char.name,class:e.char.class,race:e.char.race,color:e.char.color};hasOwn$3(n,"name")&&(e.char.name=n.name??""),hasOwn$3(n,"race")&&(e.char.race=n.race??"");const o=hasOwn$3(n,"class"),i=hasOwn$3(n,"race");if(o||i){const t=normalizeStatusClass({className:o?n.class:e.char.class,race:e.char.race,classProvided:o,raceProvided:i});e.char.class=t.className,e.char.color=t.color}const s=collectChangedFields({name:[a.name,e.char.name],class:[a.class,e.char.class],race:[a.race,e.char.race],color:[a.color,e.char.color]});return!!Object.keys(s).length&&(a.class!==e.char.class&&t("ClassChanged",{class:e.char.class,previousClass:a.class}),t("StatusUpdated",{current:e.char,changedFields:s}),!0)},updateWielded(n,a){if("left"!==n&&"right"!==n)return!1;const o=e.char.wielded[n],i=a?{id:a.id??null,name:String(a.name||""),icon:a.icon||null}:null;return(null!==o||null!==i)&&((!o||!i||o.id!==i.id||o.name!==i.name)&&(e.char.wielded[n]=i,t("WieldedUpdated",{side:n,current:i,previous:o}),!0))},updateMount(n){const a=e.char.mount,o=n?{name:String(n.name||""),id:n.id??null}:null;return a!==o&&((!a||!o||a.name!==o.name||a.id!==o.id)&&(e.char.mount=o,t("MountUpdated",{current:o,previous:a}),!0))},getChar:()=>e.char,getClass:()=>e.char.class,checkClass:t=>classesMatch(e.char.class,t),isClass:t=>void 0===t||!!t&&(Array.isArray(t)?t.some(t=>classesMatch(e.char.class,t)):classesMatch(e.char.class,t))}),ca=["Text","text","short_desc"],hasOwn$2=(e,t)=>null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t),getProvidedValue=(e,t,n,a="")=>{for(const o of t)if(hasOwn$2(e,o))return e[o]??a;return n},deriveIsPlayer=e=>"-1"===String(e),createSystemTargetApi=({state:e,emit:t})=>({updateTarget(n={}){const a=e.target,o={id:getProvidedValue(n,["id","ID"],a.id),text:getProvidedValue(n,ca,a.text),hp:getProvidedValue(n,["HP","hp","hpperc"],a.hp)};if(o.isPlayer=deriveIsPlayer(o.id),o.id===a.id&&o.text===a.text&&o.hp===a.hp&&o.isPlayer===a.isPlayer)return!1;e.target=o;const i=ca.some(e=>hasOwn$2(n,e)),s=o.id!==a.id||o.text!==a.text;return!(!i||!s)&&(t("TargetUpdated",{current:e.target,changedFields:collectChangedFields({id:[a.id,o.id],text:[a.text,o.text],isPlayer:[a.isPlayer,o.isPlayer],hp:[a.hp,o.hp]})}),!0)},isTarget(t){if(null==t)return!1;const n=String(t).toLowerCase();return e.target.text.toLowerCase()===n||String(e.target.id).toLowerCase()===n}}),hasOwn$1=(e,t)=>null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t),createSystemRoomApi=({state:e,emit:t})=>({getRoom:()=>e.room,updateRoom(n={}){const a=e.room,o={id:hasOwn$1(n,"num")?n.num:a.id,name:hasOwn$1(n,"name")?n.name??"":a.name,exits:hasOwn$1(n,"exits")?{...n.exits??{}}:a.exits,items:a.items},i=collectChangedFields({id:[a.id,o.id],name:[a.name,o.name]});return shallowEqualRecord(a.exits,o.exits)||(i.exits={previous:a.exits,current:o.exits}),!!Object.keys(i).length&&(e.room=o,t("RoomUpdated",{current:e.room,changedFields:i}),!0)},setRoomItems(n={}){const a={...n};return!shallowEqualRecord(e.room.items,a)&&(e.room.items=a,t("RoomItemsUpdated",{current:e.room.items}),!0)}}),createSystemModel=(e={})=>{const t={settings:deepMerge(na,e.settings||{}),baselineIntent:deepMerge(na,e.baselineIntent||{}),runtime:deepMerge(aa,e.runtime||{}),char:deepMerge(oa,e.char||{}),target:deepMerge(ia,e.target||{}),room:deepMerge(sa,e.room||{})};t.runtime={...t.runtime};const n=new Set;let a=0;const emit=(e,t)=>{a+=1,n.forEach(n=>n(e,t))},o=createSystemConfigApi({state:t,emit}),i=createSystemCharacterApi({state:t,emit}),s=createSystemTargetApi({state:t,emit}),l=createSystemRoomApi({state:t,emit}),copySettingsBucket=(e={})=>({...e,notices:{...e.notices||{}},ss:{...e.ss||{}}}),copyCharSnapshot=(e={})=>({...e,mount:e.mount?{...e.mount}:null,wielded:{left:e.wielded?.left?{...e.wielded.left}:null,right:e.wielded?.right?{...e.wielded.right}:null}}),copyTargetSnapshot=(e={})=>({...e}),copyRoomSnapshot=(e={})=>({...e,exits:{...e.exits||{}},items:{...e.items||{}}}),c=createSnapshotCache({getVersion:()=>a,buildSnapshot:()=>({settings:copySettingsBucket(t.settings),baselineIntent:copySettingsBucket(t.baselineIntent),runtime:{...t.runtime},char:copyCharSnapshot(t.char),target:copyTargetSnapshot(t.target),room:copyRoomSnapshot(t.room)})});return{onChange:e=>(n.add(e),()=>n.delete(e)),snapshot:()=>c(),getRuntime:o.getRuntime,getSettings:o.getSettings,getBaselineIntent:o.getBaselineIntent,setRuntime:o.setRuntime,setSettings:o.setSettings,setBaselineIntent:o.setBaselineIntent,updateVitals:i.updateVitals,updateStatus:i.updateStatus,updateWielded:i.updateWielded,updateMount:i.updateMount,getChar:i.getChar,getClass:i.getClass,checkClass:i.checkClass,isClass:i.isClass,updateTarget:s.updateTarget,isTarget:s.isTarget,getRoom:l.getRoom,updateRoom:l.updateRoom,setRoomItems:l.setRoomItems}},createModels=({adapter:e,seedData:t,options:n={},now:a})=>{const o=Boolean(n.debug),i=createSystemModel({settings:{debug:o},baselineIntent:{debug:o}}),s=createAfflictionModel({affTable:t.affTable,now:a,setTimeoutFn:e.setTimeout,clearTimeoutFn:e.clearTimeout}),l=createBalanceModel({balanceTable:t.balanceTable,haveAff:e=>s.haveAff(e),now:a,setTimeoutFn:e.setTimeout,clearTimeoutFn:e.clearTimeout}),c=createDefenseModel({defTable:t.defTable,defPrios:t.defPrios});return{systemModel:i,affModel:s,balanceModel:l,defModel:c,cacheModel:createCacheModel({cacheTable:t.cacheTable,cacheNames:t.cacheNames,haveAff:e=>s.haveAff(e),haveDef:e=>c.haveDef(e)}),limbModel:createLimbModel({now:a,setTimeoutFn:e.setTimeout,clearTimeoutFn:e.clearTimeout})}},ua="parry",da=25,resetParryPriorities=e=>{Object.keys(ve.long).forEach(t=>{e.setDefaultPriority(`parrying ${t}`,0,ua),e.get(`guarding ${t}`)&&e.setDefaultPriority(`guarding ${t}`,0,ua)})},createCombatDomainService=({affModel:e,defModel:t,limbModel:n,systemModel:a,queueController:o,serverside:i})=>({observeLimbHit:({limb:t,amount:a,source:o="manual",at:s}={})=>applyObservedLimbHit({limbModel:n,affModel:e,serverside:i,limb:t,amount:a,source:o,at:s}),observeLimbReset:({limb:t,source:a="manual",at:o}={})=>applyObservedLimbReset({limbModel:n,affModel:e,serverside:i,limb:t,source:a,at:o}),observeLimbStage:({limb:t,stage:a,source:o="manual",at:s}={})=>applyObservedLimbStage({limbModel:n,affModel:e,serverside:i,limb:t,stage:a,source:o,at:s}),parry(e){resetParryPriorities(t);const n=ve.short[e]||e,i=t.get(`guarding ${n}`);let s;return i&&a.isClass(i.skills)?(t.setDefaultPriority(`guarding ${n}`,da,ua),s=`guard ${n}`):(t.setDefaultPriority(`parrying ${n}`,da,ua),a.isClass("Dragon")?(t.setCommand(`parrying ${n}`,`clawparry ${n}`,ua),s=`clawparry ${n}`):(t.setCommand(`parrying ${n}`,`parry ${n}`,ua),s=`parry ${n}`)),o.prepend("freeQueue",s),{limbName:n,command:s}}}),isRecordValue=e=>Boolean(e)&&"object"==typeof e&&!Array.isArray(e),hasSupportedSchemaVersion=e=>isRecordValue(e)&&isSupportedPersistenceSchemaVersion(e.schemaVersion),createPersistenceStore=({adapter:e,key:t="nexSys4Settings",noticeCenter:n}={})=>{let a=!1;const noticeSchemaResetIfNeeded=e=>{a||!isRecordValue(e)||null==e.schemaVersion||isSupportedPersistenceSchemaVersion(e.schemaVersion)||(a=!0,n?.publish?.("persistence","Saved nexSys4 settings were in an older format and have been reset to defaults.",{force:!0}))},read=()=>{const n=e.getVariable(t);return noticeSchemaResetIfNeeded(n),{key:t,exists:hasSupportedSchemaVersion(n),snapshot:deepClone$1(normalizePersistenceSnapshot(n))}},load=()=>read().snapshot,save=(n={})=>{const a=deepClone$1(normalizePersistenceSnapshot(n,{assumeCurrentVersion:!0}));return e.setVariable(t,a),deepClone$1(a)};return{key:t,read,load,save}},createNoticeCenter=({adapter:e,systemModel:t})=>({publish:(n,a,o={})=>{const i=t.getSettings().notices||{},{force:s=!1,...l}=o;(s||!1!==i[n])&&e.notice(String(a),{category:n,...l})}}),pa=Object.freeze({PLANNED:"planned",SENT:"sent",AWAITING_COMPLETION:"awaiting-completion",COMPLETED:"completed",EXPIRED:"expired",RECOVERING:"recovering"}),createOutputCycle=({adapter:e,dispatchCommands:t,systemModel:n,serverside:a,outputPlanner:o,noticeCenter:i,options:s={}}={})=>{const now=()=>e?.now?.()??Date.now();let l=[],c="",u=1,d=null,p=null,m=null,g=[];const h=`echo SystemEvent ${ne.OUTPUT_COMPLETE}`,b=Math.max(50,Number(s.outputCompletionTimeoutMs||1e3)),y=Math.max(0,Number(s.maxOutputRecoveryAttempts??2)),clearCompletionTimer=()=>{m&&(e?.clearTimeout?.(m),m=null)},recordBatchState=(e,t,n={})=>{if(!e)return null;const a=now();return e.state=t,e.stateHistory.push({state:t,at:a}),Object.assign(e,n),e},snapshotBatch=e=>e?{id:e.id,source:e.source,state:e.state,stateHistory:e.stateHistory.map(e=>({...e})),completionRequired:e.completionRequired,recoveryAttempts:e.recoveryAttempts,maxRecoveryAttempts:e.maxRecoveryAttempts,commands:[...e.commands],dispatchedCommands:[...e.dispatchedCommands],serversideCommands:[...e.serversideCommands],batchCount:e.batchCount,createdAt:e.createdAt,sentAt:e.sentAt??null,completedAt:e.completedAt??null,expiredAt:e.expiredAt??null,lastRecoveryAt:e.lastRecoveryAt??null}:null,storeLastBatch=e=>{p=snapshotBatch(e)},createBatch=({source:e,intents:t=[],commands:n,serversideCommands:a,maxCommands:o})=>{const i=t.some(e=>!0===e?.requiresCompletion),s=i?n.filter(e=>e!==h):[...n],l=i?chunkCommandsWithTrailing(s,{maxEntries:o,trailing:[h]}):chunkCommands(s,o);return{id:u++,source:e,state:pa.PLANNED,stateHistory:[{state:pa.PLANNED,at:now()}],completionRequired:i,recoveryAttempts:0,maxRecoveryAttempts:y,commands:[...s],dispatchedCommands:i?[...s,h]:[...s],serversideCommands:[...a],batches:l,batchCount:l.length,createdAt:now(),observedOutbound:!1}},dispatchBatchBatches=(e,n,a={})=>{n.forEach((o,i)=>{t(o,{source:a.source||"output-cycle",cycleSource:e.source,batch:i+1,batchCount:n.length,outputBatchId:e.id,outputBatchState:e.state,recoveryAttempt:a.recoveryAttempt||0})})},scheduleCompletionTimeout=t=>{clearCompletionTimer(),m=e?.setTimeout?.(()=>{if(d&&d.id===t.id&&d.completionRequired){if(recordBatchState(d,pa.EXPIRED,{expiredAt:now()}),c="",d.recoveryAttempts>=d.maxRecoveryAttempts)return i?.publish?.("output",`Output completion confirmation expired after ${d.maxRecoveryAttempts} recovery probe(s).`,{force:!0}),storeLastBatch(d),d=null,void clearCompletionTimer();d.recoveryAttempts+=1,recordBatchState(d,pa.RECOVERING,{lastRecoveryAt:now()}),dispatchBatchBatches(d,[[h]],{source:"output-cycle-recovery",recoveryAttempt:d.recoveryAttempts}),scheduleCompletionTimeout(d)}},b)};return{planAndSend:({source:e="prompt"}={})=>{const t=n.getRuntime(),i=n.getSettings();if(t.paused||t.rulesSuspended)return t.rulesSuspended&&a.evaluate({emitCommands:!1,source:`${e}:rule-suspend-check`}),[];const s=a.getCuringSets?.().activeSet||"";if(s&&"nexsys4-default"!==s)return[];if(d)return[];const u="output-complete"===e?[...g]:[];g=[];const p=o.plan({source:e,injectedCommands:l,suppressedServersideCommands:u});if(n.getRuntime().paused||n.getRuntime().rulesSuspended)return l=[],[];if(!p.commands.length)return l=[],[];const m=Math.max(1,Number(i.maxSendPerChunk||20)),h=createBatch({source:e,intents:p.intents,commands:p.commands,serversideCommands:p.serversideCommands,maxCommands:m}),b=h.dispatchedCommands.join("");return b===c?[]:(h.serversideCommands.length&&!h.observedOutbound&&(a.observeOutbound(h.serversideCommands),h.observedOutbound=!0),recordBatchState(h,pa.SENT,{sentAt:now()}),dispatchBatchBatches(h,h.batches),c=b,h.completionRequired?(d=h,recordBatchState(d,pa.AWAITING_COMPLETION),scheduleCompletionTimeout(d)):(recordBatchState(h,pa.COMPLETED,{completedAt:now()}),storeLastBatch(h)),l=[],p.commands)},markComplete:()=>!!d&&(clearCompletionTimer(),g=[...d.serversideCommands],d.serversideCommands.length&&a.acknowledgeCommands(d.serversideCommands),recordBatchState(d,pa.COMPLETED,{completedAt:now()}),storeLastBatch(d),d=null,!0),isWaitingForCompletion:()=>d?.state===pa.AWAITING_COMPLETION||d?.state===pa.RECOVERING,isBlockingOutput:()=>Boolean(d),getLifecycleState:()=>({activeBatch:snapshotBatch(d),lastBatch:snapshotBatch(p)}),invalidate(){c=""},injectCommands(e=[]){l=[...l,...e.filter(Boolean)]},dispose(){clearCompletionTimer(),d=null,g=[]}}},createRuntimeServices=({adapter:e,options:t={},models:n,controllers:a})=>{const{systemModel:o,affModel:i,defModel:s,limbModel:l}=n,{commandDispatcher:c,queueController:u,serverside:d,defensePlanner:p,precachePlanner:m,outputPlanner:g}=a,h=createNoticeCenter({adapter:e,systemModel:o});return{persistence:createPersistenceStore({adapter:e,key:t.persistenceKey||"nexSys4Settings",noticeCenter:h}),combatService:createCombatDomainService({affModel:i,defModel:s,limbModel:l,systemModel:o,queueController:u,serverside:d}),noticeCenter:h,defensePlanner:p,precachePlanner:m,outputCycle:createOutputCycle({adapter:e,dispatchCommands:c.sendCommands,systemModel:o,serverside:d,outputPlanner:g,noticeCenter:h,options:t})}},createRuntimeDependencies=({adapter:e,seedData:t,options:n={}})=>{const now=()=>e.now(),a=createModels({adapter:e,seedData:t,options:n,now}),o=createDomainControllers({adapter:e,seedData:t,options:n,now,models:a}),i=createRuntimeServices({adapter:e,options:n,models:a,controllers:o});return{now,...o,...a,...i}},createRuntimeFlushCoordinator=({adapter:e,systemModel:t,serverside:n,outputCycle:a,flushGmcpBuffer:o})=>{const now=()=>e?.now?.()??Date.now(),i={started:!1,safetyTimer:null,dirty:!1,flushing:!1,dirtyAt:null},clearSafetyTimer=()=>{i.safetyTimer&&(e.clearTimeout(i.safetyTimer),i.safetyTimer=null)},isRuntimeReady=()=>isRuntimeReadyPhase(t.getRuntime().phase),hasPendingSafetyWork=()=>{const e="function"!=typeof n.isDirty||n.isDirty();return i.dirty&&e},scheduleSafetyFlush=()=>{const n=t.getSettings(),a=Number(n.flushSafetyMs||120),o=Number(n.flushSafetyMaxWaitMs||500),s=now();i.dirtyAt||(i.dirtyAt=s),clearSafetyTimer();const l=s-i.dirtyAt,c=l>=o?0:Math.min(a,o-l);i.safetyTimer=e.setTimeout(()=>{i.safetyTimer=null,hasPendingSafetyWork()?(i.dirtyAt=null,flushCycle("safety-flush")):i.dirtyAt=null},c)},invalidateOutput=()=>{i.dirty=!0,a.invalidate?.()},markDirty=(e="dirty")=>{if(invalidateOutput(),n.markDirty(e),!isRuntimeReady())return clearSafetyTimer(),void(i.dirtyAt=null);i.flushing||a.isBlockingOutput?.()||scheduleSafetyFlush()},flushCycle=(e="prompt")=>{if(!i.started||i.flushing)return[];if(clearSafetyTimer(),!isRuntimeReady())return[];i.flushing=!0;try{if(o(),t.getRuntime().paused)return i.dirty=!1,[];const n=a.planAndSend({source:e});return i.dirty=a.isBlockingOutput()&&0===n.length,i.dirty||(i.dirtyAt=null),n}finally{i.flushing=!1}};return{start(){i.started=!0},stop(){i.started=!1,i.dirty=!1,i.flushing=!1,i.dirtyAt=null,clearSafetyTimer()},isStarted:()=>i.started,isFlushing:()=>i.flushing,invalidateOutput,markDirty,flushCycle}},cell=(e="",t="",n="")=>({text:e,fg:t,bg:n}),createDefaultCureColors=()=>({antimony:{fg:"olive",bg:""},argentum:{fg:"royalblue",bg:""},arsenic:{fg:"",bg:""},aurum:{fg:"ForestGreen",bg:""},azurite:{fg:"",bg:""},bisemutum:{fg:"",bg:""},calamine:{fg:"",bg:""},calcite:{fg:"slategray",bg:""},cinnabar:{fg:"greenyellow",bg:""},cuprum:{fg:"DeepSkyBlue",bg:""},ferrum:{fg:"DarkOrange",bg:""},gypsum:{fg:"",bg:""},magnesium:{fg:"Red",bg:""},plumbum:{fg:"Gold",bg:""},potash:{fg:"",bg:""},quartz:{fg:"",bg:""},quicksilver:{fg:"",bg:""},realgar:{fg:"firebrick",bg:""},stannum:{fg:"Tan",bg:""},caloric:{fg:"darkseagreen",bg:""},mending:{fg:"orchid",bg:""},epidermal:{fg:"sienna",bg:""},restoration:{fg:"darkviolet",bg:""},health:{fg:"lightpink",bg:""},writhe:{fg:"PaleGoldenRod",bg:"darkslategray"}}),createDefaultVars=()=>({blackout:!1,paused:cell("","red"),retard:cell("","blue"),aeon:cell("","red"),h:cell("0","green"),m:cell("0","green"),e:cell("0","green"),w:cell("0","green"),maxh:cell(""),maxm:cell(""),maxe:cell(""),maxw:cell(""),ph:cell("100%","green"),pm:cell("100%","green"),pe:cell("100%"),pw:cell("100%"),diffh:cell("","green"),diffm:cell("","green"),diffhp:cell("","green"),diffmp:cell("","green"),target:cell("","pink"),targetHP:cell("","green"),eq:cell(""),bal:cell(""),c:cell(""),k:cell(""),d:cell(""),b:cell(""),shield:cell("","cyan"),prismatic:cell("","magenta"),rage:cell("","red"),karma:cell("","green"),essence:cell("","purple"),kai:cell("","blue")}),createDefaultAffs=(e=createDefaultCureColors())=>({addiction:{text:"add",...e.ferrum},aeon:{text:"ae",...e.cinnabar},agoraphobia:{text:"agor",...e.argentum},amnesia:{text:"amn",fg:"",bg:""},anorexia:{text:"ANO",...e.epidermal},asthma:{text:"AST",...e.aurum},blackout:{text:"bo",fg:"",bg:""},blindness:{text:"unb",...e.arsenic},bound:{text:"bnd",...e.writhe},brokenleftarm:{text:"la1",...e.mending},brokenleftleg:{text:"ll1",...e.mending},brokenrightarm:{text:"ra1",...e.mending},brokenrightleg:{text:"rl1",...e.mending},bruisedribs:{text:"ribs",fg:"",bg:""},burning:{text:"burn",...e.mending},calcifiedskull:{text:"calh",...e.restoration},calcifiedtorso:{text:"calt",...e.restoration},claustrophobia:{text:"clau",...e.stannum},clumsiness:{text:"clu",...e.aurum},concussion:{text:"conc",...e.restoration},confusion:{text:"con",...e.stannum},corruption:{text:"corr",fg:"",bg:""},crackedribs:{text:"cr",...e.health},crushedthroat:{text:"cru",...e.mending},daeggerimpale:{text:"daeg",...e.writhe},damage:{text:"dmg",fg:"tomato",bg:""},damagedleftarm:{text:"la2",...e.restoration},damagedleftleg:{text:"ll2",...e.restoration},damagedrightarm:{text:"ra2",...e.restoration},damagedrightleg:{text:"rl2",...e.restoration},damagedhead:{text:"hd2",...e.restoration},darkshade:{text:"dark",...e.ferrum},dazed:{text:"dzd",...e.cinnabar},dazzled:{text:"dzl",...e.mending},deadening:{text:"dea",...e.cinnabar},deafness:{text:"und",...e.calamine},dehydrated:{text:"deh",fg:"",bg:""},dementia:{text:"dem",...e.stannum},depression:{text:"dep",...e.plumbum},deteriorate:{text:"det",fg:"",bg:""},disloyalty:{text:"disl",...e.realgar},disrupted:{text:"disr",fg:"",bg:""},dissonance:{text:"disso",...e.plumbum},dizziness:{text:"diz",...e.plumbum},enscorcelled:{text:"ensor",fg:"",bg:""},entangled:{text:"entgl",...e.writhe},epilepsy:{text:"epi",...e.plumbum},fear:{text:"fear",fg:"",bg:""},flushings:{text:"flush",...e.ferrum},fratricide:{text:"frat",...e.ferrum},frozen:{text:"frz",...e.caloric},generosity:{text:"gen",...e.cuprum},grievouswounds:{text:"grv",...e.health},guilt:{text:"gui",...e.argentum},haemophilia:{text:"haem",...e.ferrum},hallucinations:{text:"hall",...e.stannum},hamstrung:{text:"hms",fg:"",bg:""},healthleech:{text:"hthl",...e.aurum},heartseed:{text:"heart",...e.restoration},hellsight:{text:"hell",...e.realgar},horror:{text:"hor",...e.plumbum},hypersomnia:{text:"hypers",...e.stannum},hypochondria:{text:"hypoch",...e.lobelia},hypothermia:{text:"hypoth",...e.restoration},icefisted:{text:"ice",fg:"",bg:""},impaled:{text:"impl",...e.writhe},impatience:{text:"IMPAT",...e.plumbum},indifference:{text:"ind",...e.cuprum},insomnia:{text:"insomnia",fg:"",bg:""},itching:{text:"itch",...e.epidermal},justice:{text:"just",...e.cuprum},kkractlebrand:{text:"kkr",...e.health},laceratedthroat:{text:"lac2",...e.restoration},latched:{text:"latch",...e.health},lethargy:{text:"let",...e.ferrum},lightbind:{text:"light",fg:"",bg:""},loneliness:{text:"lon",...e.argentum},lovers:{text:"love",...e.cuprum},manaleech:{text:"man",...e.realgar},mangledleftarm:{text:"la3",...e.restoration},mangledleftleg:{text:"ll3",...e.restoration},mangledrightarm:{text:"ra3",...e.restoration},mangledrightleg:{text:"rl3",...e.restoration},mangledhead:{text:"hd3",...e.restoration},masochism:{text:"maso",...e.argentum},mildtrauma:{text:"tor1",...e.restoration},mycalium:{text:"myc",...e.plumbum},nausea:{text:"nau",...e.ferrum},numbedleftarm:{text:"nbla",fg:"",bg:""},numbedrightarm:{text:"nbra",fg:"",bg:""},pacified:{text:"pac",...e.cuprum},paralysis:{text:"PAR",...e.magnesium},paranoia:{text:"prn",...e.stannum},parasite:{text:"prs",...e.aurum},peace:{text:"pea",...e.cuprum},phlogisticated:{text:"phlog",fg:"",bg:""},pinshot:{text:"psh",fg:"",bg:""},pressure:{text:"pres",...e.calcite},prone:{text:"pr",fg:"",bg:""},pyramides:{text:"pyra",...e.magnesium},pyre:{text:"pyre",...e.cuprum},rebbies:{text:"reb",...e.aurum},recklessness:{text:"reck",...e.argentum},retardation:{text:"ret",fg:"",bg:""},retribution:{text:"retr",...e.cuprum},revealed:{text:"rev",fg:"",bg:""},sandfever:{text:"sand",...e.plumbum},scalded:{text:"scald",...e.epidermal},scytherus:{text:"scy",...e.ferrum},selarnia:{text:"sel",...e.mending},sensitivity:{text:"sen",...e.aurum},serioustrauma:{text:"tor2",...e.restoration},shadowmadness:{text:"shad",...e.plumbum},shivering:{text:"shiv",...e.caloric},shyness:{text:"shy",...e.plumbum},skullfractures:{text:"sf",...e.health},slashedthroat:{text:"lac1",...e.epidermal},sleeping:{text:"slp",fg:"",bg:""},slickness:{text:"SLI",...e.magnesium},slimeobscure:{text:"nkh",fg:"",bg:""},spiritburn:{text:"spirB",...e.argentum},spiritwrack:{text:"spirW",fg:"",bg:""},stupidity:{text:"st",...e.plumbum},stuttering:{text:"stut",...e.epidermal},homunculusmercury:{text:"merc",fg:"",bg:""},temperedcholeric:{text:"choH",...e.antimony},temperedmelancholic:{text:"melaH",...e.antimony},temperedphlegmatic:{text:"phleH",...e.antimony},temperedsanguine:{text:"sanH",...e.antimony},tenderskin:{text:"tend",...e.argentum},tension:{text:"tens",...e.cinnabar},timeflux:{text:"tmfx",fg:"",bg:""},timeloop:{text:"tmlp",...e.cuprum},tonguetied:{text:"tngt",...e.restoration},torntendons:{text:"tt",...e.health},transfixation:{text:"trfx",...e.writhe},unweavingbody:{text:"unwB",...e.ferrum},unweavingspirit:{text:"unwS",...e.cinnabar},unweavingmind:{text:"unwM",...e.plumbum},vertigo:{text:"vert",...e.argentum},vitrified:{text:"vitri",fg:"",bg:""},voidfisted:{text:"void",fg:"",bg:""},voyria:{text:"voy",fg:"",bg:""},weariness:{text:"wea",...e.aurum},webbed:{text:"web",...e.writhe},whisperingmadness:{text:"mad",...e.argentum},wristfractures:{text:"wf",...e.health}}),createDefaultPromptState=()=>{const e=createDefaultCureColors();return{vars:createDefaultVars(),affs:createDefaultAffs(e),cureColors:e}},ma={"&":"&","<":"<",">":">",'"':""","'":"'"},escapeHtml=e=>String(e??"").replace(/[&<>"']/g,e=>ma[e]),renderChunk=(e,t="",n="")=>{if(""===e||null==e)return"";const a=[];return t&&a.push(`color:${t}`),n&&a.push(`background-color:${n}`),`<span${a.length?` style="${a.join(";")}"`:""}>${escapeHtml(e)}</span>`},createPromptBuilder=({vars:e,affs:t,cureColors:n,renderAffsHtml:a,renderDiffHtml:o,renderTargetHtml:i,renderVarHtml:s,renderChunkHtml:l=renderChunk})=>{const c=[],u={vars:e,affs:t,cureColors:n,add(t,n,a){if(""===t||null==t)return u;const o="string"==typeof t?e[t]:null;return o&&"object"==typeof o&&"text"in o?c.push("function"==typeof s?s(t):l(o.text,o.fg,o.bg)):c.push(l(t,n,a)),u},addHTML:e=>(e&&c.push(String(e)),u),addAffs:()=>(c.push(a()),u),addDiff:()=>(c.push(o()),u),addTarget:()=>(c.push(i()),u),toHTML:()=>`<span class="nexsys-prompt">${c.join("")}</span>`};return u},fa=new Set(["diffh","diffm","diffhp","diffmp"]),ga=new Set(["target","targetHP"]),getCellSignature=(e={})=>`${String(e.text??"")}\0${String(e.fg??"")}\0${String(e.bg??"")}`,createPromptRenderer=({state:e,getComposer:t,getSortedAffNames:n,getAffSnapshot:a,renderChunkHtml:o=renderChunk})=>{const i=new Map,s=new Map,l=new Map,c=new Map;let u="",d="",p="",m="",g=!0,h=!0,b=!0,y=!0,v=null,S=Boolean(e.vars.blackout),x=[];const markPromptDirty=()=>{y=!0},markVarsDirty=(t=[])=>{Array.isArray(t)&&t.length&&(t.forEach(t=>{const n=e.vars[t];n&&"object"==typeof n&&"text"in n&&s.delete(t),fa.has(t)&&(h=!0),ga.has(t)&&(b=!0)}),y=!0)},syncExternalVarMutations=()=>{let t=!1;const n=new Set;Object.keys(e.vars||{}).forEach(a=>{n.add(a);const o=e.vars[a];if(!o||"object"!=typeof o||!("text"in o))return void((s.has(a)||i.has(a))&&(s.delete(a),i.delete(a),t=!0));const l=getCellSignature(o);s.get(a)!==l&&(s.delete(a),i.delete(a),t=!0,fa.has(a)&&(h=!0),ga.has(a)&&(b=!0))}),[...s.keys()].forEach(e=>{n.has(e)||(s.delete(e),i.delete(e),t=!0,fa.has(e)&&(h=!0),ga.has(e)&&(b=!0))});const a=Boolean(e.vars.blackout);a!==S&&(S=a,t=!0),t&&(y=!0)},syncExternalAffMutations=()=>{if(g||!x.length)return;let t=!1;x.forEach(n=>{const a=getCellSignature(e.affs[n]||{});l.get(n)!==a&&(t=!0)}),t&&(g=!0,y=!0)},syncExternalCureColorMutations=()=>{let t=!1;const n=new Set;Object.keys(e.cureColors||{}).forEach(a=>{n.add(a);const o=getCellSignature(e.cureColors[a]||{});c.get(a)!==o&&(t=!0)}),[...c.keys()].forEach(e=>{n.has(e)||(t=!0)}),t&&(y=!0)},renderVarHtml=t=>{const n=e.vars[t];if(!n||"object"!=typeof n||!("text"in n))return"";const a=getCellSignature(n);return s.get(t)===a&&i.has(t)||(i.set(t,o(n.text,n.fg,n.bg)),s.set(t,a)),i.get(t)||""},buildAffsHtml=()=>{const t=n()||[],{affs:i}=e;if(x=[...t],l.clear(),!t.length)return'<span class="nexsys-prompt-affs mono"></span>';const s=[o("[","brown")];for(let e=0;e<t.length;e+=1){const n=t[e],c=i[n]||{text:n,fg:"",bg:""},u="function"==typeof a&&a(n)||{},d=Number(u.max)>1&&Number.isFinite(Number(u.count))?`(${Number(u.count)})`:"";l.set(n,getCellSignature(i[n]||{}));const p=e<t.length-1?" ":"";s.push(o(`${c.text}${d}${p}`,c.fg,c.bg))}return s.push(o("]","brown")),`<span class="nexsys-prompt-affs mono">${s.join("")}</span>`},renderAffsHtml=()=>(g&&(u=buildAffsHtml(),g=!1),u),renderDiffHtml=()=>{if(h){const t=e.vars.diffh||{},n=e.vars.diffhp||{},a=e.vars.diffm||{},i=e.vars.diffmp||{},s=[];t.text&&(s.push(o(`${t.text}h`,t.fg,t.bg)),n.text&&s.push(o(`(${n.text})`,n.fg,n.bg))),a.text&&(s.length&&s.push(o(", ")),s.push(o(`${a.text}m`,a.fg,a.bg)),i.text&&s.push(o(`(${i.text})`,i.fg,i.bg))),d=s.join(""),h=!1}return d},renderTargetHtml=()=>{if(b){const t=e.vars.target||{},n=e.vars.targetHP||{},a=[];(t.text||n.text)&&(a.push(o(" [")),t.text&&a.push(renderVarHtml("target")),t.text&&n.text&&a.push(o(": ")),n.text&&a.push(renderVarHtml("targetHP")),a.push(o("] "))),p=a.join(""),b=!1}return p},resetTransients=()=>{const{vars:t}=e,n=["diffh","diffm","diffhp","diffmp"].filter(e=>{const n=t[e];return!(!n||""===n.text)&&(n.text="",!0)});n.length&&markVarsDirty(n)};return{render(){const n=t();if("function"!=typeof n)return"";if(syncExternalVarMutations(),syncExternalAffMutations(),syncExternalCureColorMutations(),!y&&n===v)return m;const a=createPromptBuilder({vars:e.vars,affs:e.affs,cureColors:e.cureColors,renderAffsHtml,renderDiffHtml,renderTargetHtml,renderVarHtml,renderChunkHtml:o});try{n(a)}catch(i){return console.error("nexSys4 prompt compose error",i),""}return m=a.toHTML(),y=!1,v=n,Object.keys(e.cureColors||{}).forEach(t=>{c.set(t,getCellSignature(e.cureColors[t]||{}))}),[...c.keys()].forEach(t=>{t in(e.cureColors||{})||c.delete(t)}),resetTransients(),m},markAffsDirty(){g=!0,y=!0},isAffDirty:()=>g,markDiffDirty(){h=!0,y=!0},markTargetDirty(){b=!0,y=!0},markVarsDirty,markPromptDirty,isPromptDirty:()=>y}},defaultCompose=e=>{const{vars:t}=e;t.blackout?e.add("-","reset"):(e.add("paused"),e.add("aeon"),e.add("retard"),e.add("h"),e.add(`(${t.ph.text}), `,t.h.fg,t.h.bg),e.add("m"),e.add(`(${t.pm.text}) `,t.m.fg,t.m.bg),t.rage.text&&Number(t.rage.text)>0&&e.add(`${t.rage.text}R `,t.rage.fg,t.rage.bg),t.karma.text&&e.add(`${t.karma.text}K `,t.karma.fg,t.karma.bg),e.add("eq"),e.add("bal"),e.add("|"),e.add("c"),e.add("k"),e.add("d"),e.add("b"),e.add(" "),e.addAffs(),e.addDiff())},ha=new Set(["diffh","diffm","diffhp","diffmp"]),ba=new Set(["target","targetHP"]),ya=Object.freeze(["deafness","blindness","insomnia"]),clampPct=e=>{const t=Number(e);return Number.isFinite(t)?t<0?0:t>100?100:t:0},colorGradation=e=>{const t=clampPct(e),n=t<75?50:Math.abs(t-100)/2+25;return`hsl(${(1.2*t).toFixed(0)}, 100%, ${n}%)`},colorPercentage=e=>{const t=Number(e)||0;return t>75?"green":t>=33?"yellow":"red"},createPromptPresenter=({publicEvents:e,affModel:t,defModel:n,balanceModel:a,systemModel:o,renderPrompt:i}={})=>{const s=createDefaultPromptState();let l=defaultCompose;const isPromptDefTracked=e=>"function"==typeof n?.get?Boolean(n.get(e)):"function"==typeof n?.haveDef,c=ya.filter(isPromptDefTracked),u=new Set(c),haveDef=e=>Boolean(n?.haveDef?.(e)),d=createPromptRenderer({state:s,getComposer:()=>l,getSortedAffNames:()=>{const e=t?.currentSorted&&t.currentSorted()||[],n=new Set,a=[];return e.forEach(e=>{u.has(e)||n.has(e)||(n.add(e),a.push(e))}),c.forEach(e=>{haveDef(e)||n.has(e)||(n.add(e),a.push(e))}),a},getAffSnapshot:e=>t?.get?.(e)||null}),isRecord=e=>e&&"object"==typeof e&&!Array.isArray(e),isCellLike=e=>isRecord(e)&&("text"in e||"fg"in e||"bg"in e),normalizeCellField=e=>null==e?"":String(e),getVarRegion=e=>ha.has(e)?"diff":ba.has(e)?"target":"",ensureVarCell=e=>{const t=s.vars[e];if(t&&"object"==typeof t&&"text"in t)return t;if(e in s.vars)return null;const n={text:"",fg:"",bg:""};return s.vars[e]=n,d.markPromptDirty(),n},applyCell=(e,t={},n={})=>{const a=n.create?ensureVarCell(e):s.vars[e];if(!a||"object"!=typeof a||!("text"in a))return!1;let o=!1;if("text"in t){const e=normalizeCellField(t.text);a.text!==e&&(a.text=e,o=!0)}if("fg"in t){const e=normalizeCellField(t.fg);a.fg!==e&&(a.fg=e,o=!0)}if("bg"in t){const e=normalizeCellField(t.bg);a.bg!==e&&(a.bg=e,o=!0)}return!!o&&(d.markVarsDirty([e]),"diff"===n.region&&d.markDiffDirty(),"target"===n.region&&d.markTargetDirty(),!0)},applyFlag=(e,t)=>{const n=Boolean(t);return s.vars[e]!==n&&(s.vars[e]=n,d.markPromptDirty(),!0)},patchVars=(e={})=>{if(!isRecord(e))return!1;let t=!1;return Object.entries(e).forEach(([e,n])=>{const a=s.vars[e],o=getVarRegion(e);"boolean"!=typeof a?"boolean"!=typeof n||void 0!==a?t=applyCell(e,isCellLike(n)?n:{text:n},{create:!0,region:o})||t:s.vars[e]!==n&&(s.vars[e]=n,d.markPromptDirty(),t=!0):t=applyFlag(e,n)||t}),t},patchAffs=(e={})=>{if(!isRecord(e))return!1;let t=!1;return Object.entries(e).forEach(([e,n])=>{if(null===n)return void(e in s.affs&&(delete s.affs[e],t=!0));const a=isCellLike(n)?n:{text:n},o=s.affs[e],i=o&&"object"==typeof o?o:s.affs[e]={text:"",fg:"",bg:""};["text","fg","bg"].forEach(e=>{if(!(e in a))return;const n=normalizeCellField(a[e]);i[e]!==n&&(i[e]=n,t=!0)})}),t&&d.markAffsDirty(),t},patchCureColors=(e={})=>{if(!isRecord(e))return!1;let t=!1;return Object.entries(e).forEach(([e,n])=>{if(null===n)return void(e in s.cureColors&&(delete s.cureColors[e],t=!0));const a=isRecord(n)?n:{fg:n},o=s.cureColors[e],i=o&&"object"==typeof o?o:s.cureColors[e]={fg:"",bg:""};["fg","bg"].forEach(e=>{if(!(e in a))return;const n=normalizeCellField(a[e]);i[e]!==n&&(i[e]=n,t=!0)})}),t&&d.markPromptDirty(),t},updateBalanceGlyphs=()=>{applyCell("eq",{text:a?.have?.(Hn.EQUILIBRIUM)?"e":""}),applyCell("bal",{text:a?.have?.(Hn.BALANCE)?"x":""})},updateDefGlyphs=()=>{applyCell("c",{text:haveDef("cloak")?"c":""}),applyCell("k",{text:haveDef("kola")?"k":""}),applyCell("d",{text:haveDef("deafness")?"d":""}),applyCell("b",{text:haveDef("blindness")?"b":""}),applyCell("shield",{text:haveDef("shield")?"(":""}),applyCell("prismatic",{text:haveDef("prismatic")?"[":""})},pctOf=(e,t)=>{const n=Number(e)||0,a=Number(t)||0;return a>0?100*n/a:0},onVitals=(e={})=>{const t=e.current||o?.snapshot?.().char||{},n=pctOf(t.hp,t.maxhp),a=pctOf(t.mp,t.maxmp),i=pctOf(t.ep,t.maxep),s=pctOf(t.wp,t.maxwp);applyCell("h",{text:t.hp??"",fg:colorGradation(n)}),applyCell("m",{text:t.mp??"",fg:colorGradation(a)}),applyCell("e",{text:t.ep??"",fg:colorGradation(i)}),applyCell("w",{text:t.wp??"",fg:colorGradation(s)}),applyCell("maxh",{text:t.maxhp??""}),applyCell("maxm",{text:t.maxmp??""}),applyCell("maxe",{text:t.maxep??""}),applyCell("maxw",{text:t.maxwp??""}),applyCell("ph",{text:`${n.toFixed(1)}%`}),applyCell("pm",{text:`${a.toFixed(1)}%`}),applyCell("pe",{text:`${i.toFixed(1)}%`}),applyCell("pw",{text:`${s.toFixed(1)}%`});const l=Number(e.hpDiff||0),c=Number(e.mpDiff||0),u=Number(t.maxhp)||0,d=Number(t.maxmp)||0;if(l){const e=l<0?"red":"green";applyCell("diffh",{text:`${l>0?"+":""}${l}`,fg:e},{region:"diff"}),applyCell("diffhp",{text:u?`${(l/u*100).toFixed(1)}%`:"",fg:e},{region:"diff"})}if(c){const e=c<0?"red":"green";applyCell("diffm",{text:`${c>0?"+":""}${c}`,fg:e},{region:"diff"}),applyCell("diffmp",{text:d?`${(c/d*100).toFixed(1)}%`:"",fg:e},{region:"diff"})}"karma"in t&&applyCell("karma",{text:t.karma??""}),"rage"in t&&applyCell("rage",{text:t.rage??""}),"essence"in t&&applyCell("essence",{text:t.essence??""}),"kai"in t&&applyCell("kai",{text:t.kai??""}),applyFlag("blackout",t.dead)},onRuntimeChange=()=>{const e=o?.snapshot?.().runtime||{};applyCell("retard",{text:e.slowMode?"(r)":""}),applyCell("paused",{text:e.paused?"(p)":""}),applyCell("aeon",{text:e.aeonLocked?"(a)":""})},onTargetChange=()=>{const e=o?.snapshot?.().target||{};applyCell("target",{text:e.text||""},{region:"target"}),applyCell("targetHP",{text:e.hp||""},{region:"target"});const t=parseInt(e.hp,10);Number.isFinite(t)&&applyCell("targetHP",{fg:colorGradation(t)},{region:"target"})},onAffEvent=(e={})=>{"aeon"===e?.name&&applyCell("aeon",{text:t?.haveAff?.("aeon")?"(a)":""}),d.markAffsDirty()},onDefEvent=(e={})=>{updateDefGlyphs(),u.has(e?.id)&&d.markAffsDirty()},onBalanceEvent=()=>updateBalanceGlyphs(),p=[];let m=!1;const subscribe=(t,n)=>{if(!e||"function"!=typeof e.on)return;const a=e.on(t,n);"function"==typeof a&&p.push(a)};return{start:()=>{m||(m=!0,subscribe(te.SYSTEM_VITALS_CHANGED,onVitals),subscribe(te.SYSTEM_RUNTIME_CHANGED,onRuntimeChange),subscribe(te.SYSTEM_PAUSE_CHANGED,onRuntimeChange),subscribe(te.SYSTEM_TARGET_CHANGED,onTargetChange),subscribe(te.AFF_GOT,onAffEvent),subscribe(te.AFF_LOST,onAffEvent),subscribe(te.AFF_STACK_CHANGED,onAffEvent),subscribe(te.AFF_PRIORITY_CHANGED,()=>d.markAffsDirty()),subscribe(te.DEF_GOT,onDefEvent),subscribe(te.DEF_LOST,onDefEvent),subscribe(te.BALANCE_GOT,onBalanceEvent),subscribe(te.BALANCE_LOST,onBalanceEvent),subscribe(te.BALANCE_RESET,onBalanceEvent),subscribe(te.BALANCE_TIMER_RESTARTED,onBalanceEvent),updateDefGlyphs(),updateBalanceGlyphs(),onRuntimeChange())},stop:()=>{p.forEach(e=>{try{e()}catch(t){console.error("nexSys4 prompt presenter unsubscribe failed",t)}}),p.length=0,m=!1},render:(e={})=>{const t=d.render();return"function"==typeof i?i(t,e):t},markAffsDirty:()=>d.markAffsDirty(),markPromptDirty:()=>d.markPromptDirty(),patchVars,patchAffs,patchCureColors,colorGradation,colorPercentage,get vars(){return s.vars},get affs(){return s.affs},get cureColors(){return s.cureColors},get compose(){return l},set compose(e){l="function"==typeof e?e:defaultCompose,d.markPromptDirty()},_state:s,_onVitals:onVitals,_onAffEvent:onAffEvent,_onDefEvent:onDefEvent,_onBalanceEvent:onBalanceEvent,_onRuntimeChange:onRuntimeChange,_onTargetChange:onTargetChange}},va=Object.freeze({INTERNAL:"internal",JS:"js",EVENTSTREAM:"eventstream"}),Sa=Object.freeze({STABLE:"stable",EXPERIMENTAL:"experimental",DEPRECATED:"deprecated"}),xa=/^nexsys4(\.[a-z0-9_-]+)+$/,Ca=Object.freeze(Object.values(va)),wa=Object.freeze(Object.values(Sa)),ka=Object.freeze({[va.INTERNAL]:Object.freeze([null,va.INTERNAL]),[va.JS]:Object.freeze([null,va.INTERNAL,va.JS]),[va.EVENTSTREAM]:Object.freeze([null,va.INTERNAL,va.JS,va.EVENTSTREAM])}),topicEntry=(e,t,n={})=>{const a=n.scopedAudience??null,o={audience:e,scopedAudience:a,stability:n.stability??Sa.STABLE,description:t};return null!=a&&n.scopedPayloadKey&&(o.scopedPayloadKey=n.scopedPayloadKey),Object.freeze(o)},eventStreamTopic=(e,t={})=>topicEntry(va.EVENTSTREAM,e,t),jsTopic=(e,t={})=>topicEntry(va.JS,e,t),scopedEventStreamTopic=(e,t)=>eventStreamTopic(e,{scopedAudience:va.EVENTSTREAM,scopedPayloadKey:t}),isScopedAudienceAllowed=(e,t)=>{const n=ka[e];return Array.isArray(n)&&n.includes(t)},validateRegistryEntry=(e,t)=>{if(!xa.test(e))throw new Error(`Invalid topic registry key "${e}": expected lowercase dotted nexsys4.* form.`);if(!t||"object"!=typeof t||Array.isArray(t))throw new Error(`Invalid registry entry for "${e}": expected an object.`);if(!Ca.includes(t.audience))throw new Error(`Invalid audience for "${e}": received "${t.audience}".`);if(!("scopedAudience"in t))throw new Error(`Missing scopedAudience metadata for "${e}".`);if(null!=t.scopedAudience&&!Ca.includes(t.scopedAudience))throw new Error(`Invalid scopedAudience for "${e}": received "${t.scopedAudience}".`);if(!isScopedAudienceAllowed(t.audience,t.scopedAudience??null))throw new Error(`Invalid scopedAudience for "${e}": "${t.scopedAudience}" exceeds base audience "${t.audience}".`);if(null!=t.scopedAudience&&("string"!=typeof t.scopedPayloadKey||!t.scopedPayloadKey.trim()))throw new Error(`Missing scopedPayloadKey for scoped topic "${e}".`);if(!wa.includes(t.stability))throw new Error(`Invalid stability for "${e}": received "${t.stability}".`);if("string"!=typeof t.description||!t.description.trim())throw new Error(`Invalid description for "${e}": expected a non-empty string.`)},validateTopicRegistry=(e,t=Object.values(te))=>{if(!e||"object"!=typeof e||Array.isArray(e))throw new Error("Invalid topic registry: expected an object.");for(const n of t)if(!Object.prototype.hasOwnProperty.call(e,n))throw new Error(`Missing registry entry for "${n}".`);for(const n of Object.keys(e)){if(!t.includes(n))throw new Error(`Unexpected registry entry for "${n}".`);validateRegistryEntry(n,e[n])}return!0},Ea=Object.freeze({[te.RUNTIME_STARTED]:eventStreamTopic("Runtime startup completed."),[te.RUNTIME_STOPPED]:eventStreamTopic("Runtime shutdown completed."),[te.RAW_GMCP]:eventStreamTopic("Raw GMCP payload observed at the adapter boundary."),[te.SYSTEM_VITALS_CHANGED]:eventStreamTopic("Character vitals changed."),[te.SYSTEM_HEALTH_CHANGED]:eventStreamTopic("Health changed."),[te.SYSTEM_MANA_CHANGED]:eventStreamTopic("Mana changed."),[te.SYSTEM_RAGE_CHANGED]:eventStreamTopic("Rage changed."),[te.SYSTEM_BLEED_CHANGED]:eventStreamTopic("Bleed changed."),[te.SYSTEM_STATUS_CHANGED]:eventStreamTopic("Character status snapshot changed."),[te.SYSTEM_CLASS_CHANGED]:eventStreamTopic("Character class changed."),[te.SYSTEM_TARGET_CHANGED]:eventStreamTopic("Current target changed."),[te.SYSTEM_ROOM_CHANGED]:eventStreamTopic("Current room changed."),[te.SYSTEM_ROOM_ITEMS_CHANGED]:eventStreamTopic("Visible room items changed."),[te.SYSTEM_RUNTIME_CHANGED]:jsTopic("Runtime implementation state changed."),[te.SYSTEM_PAUSE_CHANGED]:eventStreamTopic("Runtime pause state changed."),[te.SYSTEM_PAUSED]:eventStreamTopic("Runtime paused."),[te.SYSTEM_UNPAUSED]:eventStreamTopic("Runtime unpaused."),[te.SYSTEM_LOADED]:eventStreamTopic("Startup game-state initialization completed."),[te.SYSTEM_SETTINGS_CHANGED]:jsTopic("Runtime settings changed."),[te.SYSTEM_BASELINE_CHANGED]:jsTopic("Baseline intent changed."),[te.SYSTEM_DEATH_DETECTED]:eventStreamTopic("Death was detected from character state."),[te.SYSTEM_MOUNT_CHANGED]:eventStreamTopic("Mounted state changed."),[te.SYSTEM_WIELDED_CHANGED]:eventStreamTopic("Wielded equipment changed."),[te.UI_CONFIG_CHANGED]:jsTopic("Configuration dialog open state changed."),[te.AFF_GOT]:scopedEventStreamTopic("Affliction became active.","name"),[te.AFF_LOST]:scopedEventStreamTopic("Affliction was cured or removed.","name"),[te.AFF_STACK_CHANGED]:scopedEventStreamTopic("Affliction stack count changed.","name"),[te.AFF_PRIORITY_CHANGED]:jsTopic("Affliction priority changed."),[te.DEF_GOT]:scopedEventStreamTopic("Defence became active.","id"),[te.DEF_LOST]:scopedEventStreamTopic("Defence expired or was removed.","id"),[te.DEF_PRIORITY_CHANGED]:jsTopic("Defence priority changed."),[te.BALANCE_GOT]:scopedEventStreamTopic("Balance became available.","id"),[te.BALANCE_LOST]:scopedEventStreamTopic("Balance was consumed or lost.","id"),[te.BALANCE_RESET]:scopedEventStreamTopic("Balance timing was reset.","id"),[te.BALANCE_DURATION_OBSERVED]:scopedEventStreamTopic("Observed balance recovery duration changed.","id"),[te.BALANCE_TIMER_RESTARTED]:jsTopic("Balance loss timer was restarted without a state flip."),[te.EQBAL_GOT]:eventStreamTopic("Balance and equilibrium are both available."),[te.LIMB_HIT]:scopedEventStreamTopic("Limb damage was recorded.","limb"),[te.LIMB_RESET]:scopedEventStreamTopic("Limb tracking was reset.","limb"),[te.LIMB_STAGE_CHANGED]:scopedEventStreamTopic("Limb damage stage changed.","limb"),[te.LIMB_DECAY]:jsTopic("Limb damage counter reset after 3 minutes of no hits."),[te.CACHE_AMOUNT_CHANGED]:eventStreamTopic("Cached item counts changed."),[te.CACHE_INVENTORY_LIST]:eventStreamTopic("Inventory cache snapshot applied."),[te.CACHE_RIFT_LIST]:eventStreamTopic("Rift cache snapshot applied."),[te.CACHE_PRECACHE_CHANGED]:jsTopic("Desired precache state changed."),[te.ITEM_ROOM_ADDED]:eventStreamTopic("An item appeared in the current room."),[te.ITEM_ROOM_REMOVED]:eventStreamTopic("An item left the current room."),[te.ITEM_ROOM_UPDATED]:eventStreamTopic("A current-room item changed."),[te.ITEM_ROOM_LIST]:eventStreamTopic("Current-room item list snapshot received."),[te.ITEM_INV_ADDED]:eventStreamTopic("An item was added to inventory."),[te.ITEM_INV_REMOVED]:eventStreamTopic("An item was removed from inventory."),[te.ITEM_INV_UPDATED]:eventStreamTopic("An inventory item changed."),[te.ITEM_INV_LIST]:eventStreamTopic("Inventory item list snapshot received."),[te.QUEUE_UPDATED]:jsTopic("Queue contents changed."),[te.QUEUE_FLUSHED]:jsTopic("Queue flush decision completed."),[te.QUEUE_DEFERRED]:jsTopic("Queue execution was deferred."),[te.QUEUE_CLEARED]:jsTopic("Queue contents were cleared."),[te.QUEUE_SENT]:scopedEventStreamTopic("A queue submission was accepted by the server.","queueName"),[te.QUEUE_FIRED]:scopedEventStreamTopic("A queue fire was acknowledged for a named queue.","queueName"),[te.QUEUE_FIRED_ACK]:eventStreamTopic("Queue fire acknowledgement was recorded."),[te.SERVERSIDE_AFF_PRIORITY_SET]:scopedEventStreamTopic("Live serverside affliction priority confirmation was observed.","id"),[te.SERVERSIDE_DEF_PRIORITY_SET]:scopedEventStreamTopic("Live serverside defence priority confirmation was observed.","id"),[te.SERVERSIDE_DIRTY]:jsTopic("Serverside reconciliation dirty flag changed."),[te.SERVERSIDE_EVALUATED]:jsTopic("Serverside evaluation completed."),[te.SERVERSIDE_RULE_CHANGED]:jsTopic("Legacy generic serverside rule-change signal reserved for compatibility."),[te.RULE_ADDED]:jsTopic("Serverside rule was added to the registry."),[te.RULE_REMOVED]:jsTopic("Serverside rule was removed from the registry."),[te.RULE_ENABLED]:jsTopic("Serverside rule was enabled."),[te.RULE_DISABLED]:jsTopic("Serverside rule was disabled."),[te.RULE_PACK_LOADED]:jsTopic("Serverside rule pack was loaded."),[te.RULE_PACK_UNLOADED]:jsTopic("Serverside rule pack was unloaded."),[te.RULE_ORDER_CHANGED]:jsTopic("Serverside rule evaluation order changed."),[te.RULE_ACTIVATED]:scopedEventStreamTopic("Serverside rule became active.","id"),[te.RULE_DEACTIVATED]:scopedEventStreamTopic("Serverside rule stopped being active.","id")});validateTopicRegistry(Ea);var buildExactTopicSet=e=>new Set(Object.keys(e||{})),buildScopedBaseMap=e=>{const t=new Map;return Object.entries(e||{}).forEach(([e,n])=>{null!=n?.scopedAudience&&t.set(e,n.scopedAudience)}),t},createEventStreamPublisher=({adapter:e,registry:t,globallyEnabled:n,rawGmcpEnabled:a})=>{const o=buildExactTopicSet(t),i=buildScopedBaseMap(t),resolveAudience=e=>{const n=String(e||"").trim();if(!n)return null;if(o.has(n))return t[n].audience;const a=n.lastIndexOf(".");if(a<0)return null;const s=n.slice(0,a);return i.get(s)??null},isAllowed=(e,t)=>!!n&&(t===va.EVENTSTREAM&&!(e===te.RAW_GMCP&&!a)),evaluate=(t,n)=>{const a=String(t||"").trim();return!!isAllowed(a,resolveAudience(a))&&("function"==typeof e?.raiseToEventStream&&e.raiseToEventStream(a,n))};return{attach:e=>e&&"function"==typeof e.onAny?e.onAny((e,t)=>{evaluate(t,e)}):()=>{},evaluate,resolveAudience,debugInfo:()=>({globallyEnabled:Boolean(n),rawGmcpEnabled:Boolean(a),exactTopicCount:o.size,scopedBaseCount:i.size})}},normalizeScopedTopicSegment=e=>{const t=String(e||"").trim().toLowerCase();return t?t.replace(/\s+/g,"_").replace(/[^a-z0-9._-]/g,""):""},normalizePublishedPayload=(e={})=>e&&"object"==typeof e&&!Array.isArray(e)?e:{value:e},normalizeMessage=(e,t={},n)=>{const a=normalizePublishedPayload(t);return{...a,topic:e,at:a.at??n()}},createRuntimeEventPorts=({adapter:e,internalEvents:t,publicEvents:n,now:a})=>{const publishPublic=(e,t={})=>{const o=normalizeMessage(e,t,a);return n.emit(e,o),o},publishPublicScoped=(e,t={},n)=>{const a=publishPublic(e,t),o=normalizeScopedTopicSegment(n);return o?(publishPublic(`${e}.${o}`,a),a):a};return{publishPublic,publishPublicScoped,publishInternal:(e,n={})=>{const o=normalizeMessage(e,n,a);return t.emit(e,o),o},publishAdapterLocal:(t,n={})=>("function"==typeof e?.emitLocal&&e.emitLocal(t,n),n)}},createRuntimeEngine=({adapter:e,seedData:t,options:n={}})=>{const a=resolveAdapterCapabilities(e),{now:o,commandDispatcher:i,systemModel:s,affModel:l,balanceModel:c,defModel:u,cacheModel:d,limbModel:p,persistence:m,queueController:g,serverside:h,combatService:b,noticeCenter:y,defensePlanner:v,precachePlanner:S,outputPlanner:x,outputCycle:C}=createRuntimeDependencies({adapter:e,seedData:t,options:n}),w=createGmcpBlockBuffer({coalesce:!1!==n.coalesceGmcp}),k=createEventBus({label:"nexSys4.internal"}),E=createEventBus({label:"nexSys4.public"}),P=createPromptPresenter({publicEvents:E,affModel:l,defModel:u,balanceModel:c,systemModel:s,renderPrompt:(t,n={})=>a.promptRender?e.renderPrompt(t,n):t}),T=createEventStreamPublisher({adapter:e,registry:Ea,globallyEnabled:!1!==n.publishToEventStream,rawGmcpEnabled:!0===n.publishRawGmcp}),R=createRuntimeEventPorts({adapter:e,internalEvents:k,publicEvents:E,now:o});T.attach(E);const setRuntimePhase=(e,t={})=>s.setRuntime({phase:e,...t}),syncDebugMode=()=>{const t=Boolean(s.getSettings().debug);return a.debugToggle&&e.setDebugEnabled(t),k.setDebugEnabled?.(t),E.setDebugEnabled?.(t),t},M=R.publishPublic,D=R.publishPublicScoped,O=R.publishAdapterLocal,publishStartupPhase=e=>O("StartupPhaseEvent",{phase:e});let $;const I=createCuringSetProvisioner({adapter:e,serverside:h,dispatchCommands:i.sendCommands,setRuntimePhase,publishStartupPhase,options:n}),N=createStartupCoordinator({adapter:e,systemModel:s,serverside:h,persistence:m,seedBaselineFromObservedStartup:()=>U.seedBaselineFromObservedStartup({skipObservedAdoption:I.wasCreatedThisRun()}),noticeCenter:y,buildPersistenceSnapshot:()=>U.buildPersistenceSnapshot(),startupTimeoutMs:n.startupTimeoutMs,maxStartupRetries:n.maxStartupRetries,startupFinalizeTimeoutMs:n.startupFinalizeTimeoutMs,maxStartupFinalizeRecoveryAttempts:n.maxStartupFinalizeRecoveryAttempts,publishStartupPhase,publishLoaded:e=>M(te.SYSTEM_LOADED,e),releaseStartupPause:e=>$.setPaused(!1,e),setRuntimePhase}),L=createGmcpApplier({emit:(e,t)=>k.emit(e,t)}),j=createItemTopicNotifier({publishPublic:M}),queueTranslatedGmcp=e=>{L.translate(e).forEach(e=>{j.notify(e),w.enqueue(e)})},hydrateCacheFromAdapterGmcp=()=>{if(!a.gmcpSnapshot)return!1;const t=e.getGMCP();return!(!t||"object"!=typeof t)&&(d.hydrateFromGmcp?.(t)??!1)},B=createRuntimeFlushCoordinator({adapter:e,systemModel:s,serverside:h,outputCycle:C,flushGmcpBuffer:()=>{w.flush().forEach(({topic:e,payload:t})=>{k.emit(e,t)}),d.completeObservationBlock?.({source:"runtime-flush"})}}),F=createCuringMasterSwitch({setPaused:(e,t)=>$.setPaused(e,t),noticeCenter:y,now:o,options:n});$=createRuntimeControlApi({systemModel:s,serverside:h,queueController:g,noticeCenter:y,curingMasterSwitch:F,dispatchCommands:i.sendCommands,markDirty:B.markDirty,onResume:e=>{B.isFlushing()||B.flushCycle(e)}});const q=createCuringSetGuard({serverside:h,systemModel:s,runtimeControl:$,noticeCenter:y}),U=createRuntimePersistenceApi({persistence:m,systemModel:s,affModel:l,defModel:u,cacheModel:d,serverside:h,syncDebugMode,markDirty:B.markDirty}),V=createRuntimeEventWiring({adapter:e,internalEvents:k}),H=createRuntimeStartupOrchestrator({adapter:e,systemModel:s,persistenceApi:U,startup:N,curingSetProvisioner:I,noticeCenter:y,syncDebugMode,isStarted:B.isStarted,markStarted:B.start,setRuntimePhase,publishStartupPhase,attachEventWiring:()=>{V.attach({options:n,queueTranslatedGmcp,publishPublic:M,publishPublicScoped:D,noticeCenter:y,syncDebugMode,systemModel:s,affModel:l,defModel:u,balanceModel:c,cacheModel:d,limbModel:p,queueController:g,serverside:h,markDirty:B.markDirty,invalidateOutput:B.invalidateOutput,flushCycle:B.flushCycle,outputCycle:C,startup:N,curingSetProvisioner:I,curingSetGuard:q,curingMasterSwitch:F,runtimeControl:$,savePersistence:U.savePersistence})},promptPresenter:P,publishRuntimeStarted:()=>M(te.RUNTIME_STARTED,{source:"runtime-start"}),hydrateCacheFromAdapterGmcp,runtimeControl:$,commandDispatcher:i}),stop=()=>{H.dispose(),B.isStarted()&&(M(te.RUNTIME_STOPPED,{source:"runtime-stop"}),B.stop(),N.dispose?.(),C.dispose?.(),V.dispose(),setRuntimePhase(re.IDLE,{paused:!0,startupFailureMessage:""}),P.stop(),l.dispose?.(),c.dispose?.(),p.dispose(),k.clear(),E.clear(),T.attach(E),a.destroy&&e.destroy())};let W=null;const snapshot=()=>{const e=s.snapshot(),t=l.snapshot(),n=c.snapshot(),a=u.snapshot(),o=d.snapshot(),i=p.snapshot(),m=g.snapshot(),b=h.snapshot();return W&&W.system===e&&W.affs===t&&W.balances===n&&W.defs===a&&W.cache===o&&W.limbs===i&&W.queues===m&&W.serverside===b||(W={system:e,affs:t,balances:n,defs:a,cache:o,limbs:i,queues:m,serverside:b}),W};return{start:H.start,stop,flushCycle:B.flushCycle,savePersistence:U.savePersistence,setPaused:$.setPaused,setSlowMode:$.setSlowMode,setConfigOpen:(e,t="runtime-ui")=>M(te.UI_CONFIG_CHANGED,{open:Boolean(e),source:t}),get paused(){return s.getRuntime().paused},snapshot,adapter:e,models:{systemModel:s,affModel:l,balanceModel:c,defModel:u,cacheModel:d,limbModel:p},services:{combat:b},planners:{defensePlanner:v,precachePlanner:S,outputPlanner:x,outputCycle:C},queueController:g,serverside:h,curingSetGuard:q,noticeCenter:y,persistence:m,commandDispatcher:i,promptPresenter:P,topics:te,onEvent:(e,t)=>E.on(e,t),offEvent:(e,t)=>E.off(e,t),markDirty:B.markDirty,ingestGmcp(e,t){queueTranslatedGmcp({tag:e,payload:t}),!0===n.publishRawGmcp&&M(te.RAW_GMCP,{source:"manual-gmcp",tag:String(e||"").trim().toLowerCase(),payload:t}),B.markDirty(`manual-gmcp:${e}`)},evaluateNow:(e="manual")=>B.flushCycle(e),addOutputCommands(e=[]){C.injectCommands(Array.isArray(e)?e:[e]),B.markDirty("manual-output-inject")},dispatchCommands:i.sendCommands,debugInfo:()=>({adapter:e.debugInfo?.()??null,internalEvents:k.debugInfo?.()??null,publicEvents:E.debugInfo?.()??null,eventStreamPublisher:T.debugInfo?.()??null})}},toArray=e=>Array.isArray(e)?e:[e],normalizeQueueKey=e=>String(e||"").trim(),createPublicCommandApi=({runtime:e})=>{const t=e.queueController,n=t.listQueues().map(e=>({queueId:e,meta:t.getQueue(e)||{}})),a=new Map,o=new Map,resolveQueueId=e=>{const t=normalizeQueueKey(e);return o.get(t)||t},getQueueHandle=e=>{const t=resolveQueueId(e);return a.get(t)||null},inspectQueue=e=>t.getQueue(resolveQueueId(e)),addQueue=(e,n,a)=>t.add(resolveQueueId(e),n,a),addClearQueue=(e,n,a)=>t.addClear(resolveQueueId(e),n,a),prependQueue=(e,n,a)=>t.prepend(resolveQueueId(e),n,a),clearLocalQueue=e=>t.clear(resolveQueueId(e)),clearGameQueue=e=>t.clearQueue(resolveQueueId(e)),flushQueue=(e,n)=>t.flush(resolveQueueId(e),n),isQueued=(e,t)=>{if(!t)return!1;const n=inspectQueue(e);return!!n&&(n.items.includes(t)||n.prepend.includes(t))};n.forEach(({queueId:e,meta:t})=>{a.set(e,{get id(){return e},get queueId(){return e},get name(){return inspectQueue(e)?.name||t.name||""},get type(){return inspectQueue(e)?.type||t.type||""},get exclusions(){return inspectQueue(e)?.exclusions||t.exclusions||[]},inspect:()=>inspectQueue(e),state:()=>inspectQueue(e),add:(t,n)=>addQueue(e,t,n),addClear:(t,n)=>addClearQueue(e,t,n),prepend:(t,n)=>prependQueue(e,t,n),clear:()=>clearLocalQueue(e),clearQueue:()=>clearGameQueue(e),flush:t=>flushQueue(e,t),isQueued:t=>isQueued(e,t)}),o.set(e,e),t.name&&o.set(t.name,e)});const i={controller:t,listQueues:()=>t.listQueues(),inspect:e=>inspectQueue(e),get:e=>getQueueHandle(e),add:(e,t,n)=>addQueue(e,t,n),addClear:(e,t,n)=>addClearQueue(e,t,n),prepend:(e,t,n)=>prependQueue(e,t,n),clear:e=>clearLocalQueue(e),clearQueue:e=>clearGameQueue(e),flush:(e,t)=>flushQueue(e,t),flushAll:()=>t.flushAll(),isQueued:(e,t)=>isQueued(e,t)},s={listQueues:()=>i.listQueues(),inspect:e=>i.inspect(e),get:e=>i.get(e)},l={};return n.forEach(({queueId:e,meta:t})=>{const n=a.get(e);n&&(l[e]=n,s[e]=n,t.name&&(s[t.name]=n))}),{queue:i,queues:s,...l,sendCmd:(t,n={})=>e.dispatchCommands([t],{source:"public-api",...n}),setTarget(t){const n=String(t??"").trim();if(!n)return{target:"",dispatched:!1,dispatchResult:null};const a=e.dispatchCommands(["settarget "+n],{source:"set-target"});return{target:n,dispatched:Boolean(a),dispatchResult:a}},sendInline:(t=[],n={})=>e.dispatchCommands(toArray(t),{source:"public-api-inline",...n}),addOutput(t=[]){e.addOutputCommands(toArray(t))},evaluateNow:(t="public-api")=>e.evaluateNow(t)}},_a="nexSys4",Pa="https://unpkg.com/nexsys4/dist/nexSys4.nxs",Ta="khaseem",Aa=Object.freeze(["nexSys4.userSettings"]),Ra=1e4,Ma=Object.freeze({fg:"red"}),toLowerName=e=>String(e??"").trim().toLowerCase(),safeCall=e=>{try{return e()}catch{return null}},clonePackageItem=e=>{if(!e||"object"!=typeof e)return null;if("function"==typeof structuredClone)try{return structuredClone(e)}catch{}try{return JSON.parse(JSON.stringify(e))}catch{return e}},getReflexes=e=>safeCall(()=>e?.reflexes?.())??null,getPackageRegistry=e=>{const t=safeCall(()=>e?.packages?.());if("function"==typeof t?.get)return t;const n=safeCall(()=>getReflexes(e)?.packages?.());return"function"==typeof n?.get?n:null},getInstalledPackage=(e,t)=>safeCall(()=>getPackageRegistry(e)?.get(t))??null,findGroupByName=(e,t)=>{if(!Array.isArray(e))return null;const n=toLowerName(t);return e.find(e=>toLowerName(e?.name)===n)??null},capturePreservedGroups=(e,t)=>t.map(t=>{const n=findGroupByName(e?.items,t);return n?{name:t,data:clonePackageItem(n)}:null}).filter(Boolean),applyPreservedGroup=(e,t,n)=>{const a=findGroupByName(e?.items,t.name);a&&t.data&&("function"!=typeof a.apply?"object"==typeof a&&Object.assign(a,clonePackageItem(t.data)):a.apply(t.data,n))},enableShippedGroups=(e,t)=>{if(!Array.isArray(e?.items))return;const n=new Set(t.map(toLowerName));e.items.filter(e=>"group"===e?.type&&!n.has(toLowerName(e.name))).forEach(e=>{e.enabled=!0})},reportUpdateError=({adapter:e,consoleObj:t,message:n,nexusClient:a})=>{t.error(n),"function"!=typeof e?.notice?a?.display?.(n):e.notice(n,Ma)},createAbortSignal=({AbortControllerCtor:e,setTimeoutFn:t,timeoutMs:n})=>{if(!e||n<=0)return{signal:void 0,timeout:null};const a=new e,o=t(()=>a.abort(),n);return{signal:a.signal,timeout:o}},updateNxs=async({adapter:e=null,clearTimeoutFn:t=clearTimeout,consoleObj:n=console,fetchFn:a=globalThis.fetch,nexusClient:o=globalThis.nexusclient,packageName:i=_a,preservedGroupNames:s=Aa,setTimeoutFn:l=setTimeout,skipCharacterName:c=Ta,timeoutMs:u=Ra,url:d=Pa}={})=>{if(c&&toLowerName(o?.charname)===toLowerName(c))return null;let p=null;try{if("function"!=typeof a)throw new Error("fetch is not available.");const e=getInstalledPackage(o,i);if(!e||"function"!=typeof e.apply)throw new Error(`${i} package is not installed in Nexus.`);const t=capturePreservedGroups(e,s),{signal:n,timeout:c}=createAbortSignal({AbortControllerCtor:globalThis.AbortController,setTimeoutFn:l,timeoutMs:u});p=c;const m=await a(d,{cache:"no-store",...n?{signal:n}:{}});if(!m?.ok)throw new Error(`${i} update failed: ${m?.status??"unknown"} ${m?.statusText??""}`.trim());const g=await m.json(),h=getReflexes(o);e.apply(g,h);const b=getInstalledPackage(o,i)??e;return t.forEach(e=>applyPreservedGroup(b,e,h)),enableShippedGroups(b,s),g}catch(m){return reportUpdateError({adapter:e,consoleObj:n,message:"AbortError"===m?.name?`${i} update timed out. Check your connection.`:`${i} update error: ${m?.message??String(m)}`,nexusClient:o}),null}finally{null!==p&&t(p)}},createPublicControlApi=({runtime:e,getModels:t})=>{const applySettings=(n={})=>(t().systemModel.setSettings(n,{setBaseline:!0}),e.savePersistence());return{pause:()=>e.setPaused(!0),unpause:()=>e.setPaused(!1),pauseToggle:()=>e.setPaused(!e.paused),setSlowMode:t=>e.setSlowMode(t),slowOn:()=>e.setSlowMode(!0),slowOff:()=>e.setSlowMode(!1),applySettings,setDebug:e=>applySettings({debug:Boolean(e)}),debugOn:()=>applySettings({debug:!0}),debugOff:()=>applySettings({debug:!1}),debug:()=>({runtime:e.snapshot(),internals:e.debugInfo?.()??null}),start:e.start,stop:e.stop,updateNxs:(t={})=>updateNxs({adapter:e.adapter,...t})}},resolveAudienceFor=(e,t)=>{const n=String(e||"").trim();if(!n)return null;if(Object.prototype.hasOwnProperty.call(t,n))return t[n].audience;const a=n.lastIndexOf(".");return a<0?null:t[n.slice(0,a)]?.scopedAudience??null},isPublicAudience=e=>e===va.JS||e===va.EVENTSTREAM,defaultIsDevMode=()=>{try{const e=globalThis.process?.env?.NODE_ENV;return!!e&&"production"!==e}catch{return!1}},defaultWarn=e=>{console.warn(e)},createPublicEventApi=({runtime:e,registry:t=Ea,isDevMode:n=defaultIsDevMode,warn:a=defaultWarn})=>{const o={on(o,i){const s=String(o||"").trim();return s&&"function"==typeof i?isPublicAudience(resolveAudienceFor(s,t))?e.onEvent(s,i):(n()&&a(`[nexSys4] topic "${s}" is not a public topic`),()=>{}):()=>{}},off(t,n){const a=String(t||"").trim();return!!a&&e.offEvent(a,n)}};return{events:o,on:o.on,off:o.off}},createPublicMutationApi=({runtime:e,getModels:t})=>{const n=e.services.combat,normalizeServersidePriority=e=>{const t=Number(e);return Number.isFinite(t)?t<0?0:t>26?26:t:0},samePriorityMaps=(e={},t={})=>{const n=new Set([...Object.keys(e||{}),...Object.keys(t||{})]);for(const a of n)if(normalizeServersidePriority(e?.[a])!==normalizeServersidePriority(t?.[a]))return!1;return!0},resetPriorities=(e=[],t,n="public-api")=>{let a=!1;return e.forEach(e=>{t(e,n)&&(a=!0)}),a},buildAffPriorityTarget=e=>{const t=e.list().reduce((t,n)=>(t[n]=normalizeServersidePriority(e.getPriority?.(n)),t),{});return e.getCountablePriorityNames?.().forEach(e=>{t[e]=0}),t},buildDefPriorityTarget=(e,t)=>{const n=t.snapshot?.().char?.class||"";return e.list().reduce((t,a)=>{const o=e.get(a);return!o?.serverside||o.static?t:"function"!=typeof e.isAvailableForClass||e.isAvailableForClass(a,n)?(t[a]=normalizeServersidePriority(e.getPriority?.(a)),t):t},{})},restorePersistedPriorities=({restoreAffs:n=!1,restoreDefs:a=!1,reason:o})=>{const{affModel:i,defModel:s,systemModel:l}=t();let c=!1;n&&(c=resetPriorities(i.list(),(e,t)=>i.resetPriority(e,t))||c),a&&(c=resetPriorities(s.list(),(e,t)=>s.resetPriority(e,t))||c);const u=e.serverside.snapshot?.(),d=n?buildAffPriorityTarget(i):null,p=a?buildDefPriorityTarget(s,l):null,m=Boolean(u&&(n&&!samePriorityMaps(u.sessionBaseline?.affPriorities,d)||a&&!samePriorityMaps(u.sessionBaseline?.defPriorities,p)));return!(!c&&!m)&&(refreshServersideBaseline(),e.markDirty(o),!0)},refreshServersideBaseline=()=>{e.serverside.setBaselineFromRuntime?.()},applyMutation=(t,n)=>!!t&&(refreshServersideBaseline(),e.markDirty(n),!0),applyDirtyOnly=(t,n)=>!!t&&(e.markDirty(n),!0);return{updateAffPriority:(e,n)=>applyMutation(t().affModel.setPriority(e,n,"public-api"),"api-aff-priority"),updateAffDefault:(e,n)=>applyMutation(t().affModel.setDefaultPriority(e,n,"public-api"),"api-aff-default"),resetAffPriority:e=>applyMutation(t().affModel.resetPriority(e,"public-api"),"api-aff-priority-reset"),resetAllAffPriorities:()=>restorePersistedPriorities({restoreAffs:!0,reason:"api-aff-priority-reset-all"}),updateDefPriority:(e,n)=>applyMutation(t().defModel.setPriority(e,n,"public-api"),"api-def-priority"),updateDefDefault:(e,n)=>applyMutation(t().defModel.setDefaultPriority(e,n,"public-api"),"api-def-default"),updateDefStatic:(e,n)=>applyMutation(t().defModel.setStatic(e,n,"public-api"),"api-def-static"),updateDefCommand:(e,n)=>applyMutation(t().defModel.setCommand(e,n,"public-api"),"api-def-command"),resetDefPriority:e=>applyMutation(t().defModel.resetPriority(e,"public-api"),"api-def-priority-reset"),resetAllDefPriorities:()=>restorePersistedPriorities({restoreDefs:!0,reason:"api-def-priority-reset-all"}),resetAllPriorities:()=>restorePersistedPriorities({restoreAffs:!0,restoreDefs:!0,reason:"api-priority-reset-all"}),defup(){const n=t().defModel,a={};let o=!1;for(const e of n.list()){const t=n.get(e);if(!t||t.have)continue;n.resetPriority(e,"defup")&&(o=!0);const i=n.get(e),s=normalizeServersidePriority(n.getPriority(e));i?.static&&s>=1&&s<=25&&(a[e]=s)}const i=e.serverside.requestStaticDefPriorities?.(a)??!1;return(o||i)&&(refreshServersideBaseline(),e.markDirty("api-defup")),o||i},defoff(){const n=t().defModel;let a=!1;for(const e of n.list()){const t=n.get(e);t&&!t.have&&(n.setPriority(e,0,"defoff")&&(a=!0))}const o=e.serverside.clearStaticDefPriorities?.()??!1;return(a||o)&&(refreshServersideBaseline(),e.markDirty("api-defoff")),a||o},setPrecache:(n={})=>(t().cacheModel.setDesiredPrecache(n),e.markDirty("api-precache"),e.savePersistence()),prioAff:t=>applyDirtyOnly(e.serverside.setPrioAff(t),"api-prioaff"),clearPrioAff:()=>applyDirtyOnly(e.serverside.clearPrioAff(),"api-prioaff-clear"),parry(t){n.parry(t),refreshServersideBaseline(),e.markDirty("api-parry")}}},Da="public-observe",freezeHandles=(e=[],t)=>Object.freeze(e.reduce((e,n)=>(e[n]=Object.freeze(t(n)),e),{})),getObserveSource=(e={})=>String(e?.source||Da),getObserveAt=(e={})=>e?.atMs??e?.at,getAffSnapshotState=(e,t)=>({have:e.haveAff(t),count:e.get(t)?.count??0}),didAffStateChange=(e,t)=>e.have!==t.have||e.count!==t.count,createPublicObserveApi=({runtime:e,getModels:t})=>{const n=t(),a=n.affModel,o=n.defModel,i=n.balanceModel,s=n.limbModel,l=n.systemModel,c=e.services.combat,u=freezeHandles(a.list?.()||[],t=>({got(n={}){const o=getAffSnapshotState(a,t);return a.got(t,{...n,source:getObserveSource(n)}),!!didAffStateChange(o,getAffSnapshotState(a,t))&&("function"==typeof s?.syncFromAfflictions&&"function"==typeof a?.currentSorted?s.syncFromAfflictions(a.currentSorted(),"affliction"):s?.applyAfflictionTransition?.(t,!0),e.markDirty(`api-observe-aff-got:${t}`),!0)},lost(n={}){const o=getAffSnapshotState(a,t);return a.lose(t,{...n,source:getObserveSource(n)}),!!didAffStateChange(o,getAffSnapshotState(a,t))&&("function"==typeof s?.syncFromAfflictions&&"function"==typeof a?.currentSorted?s.syncFromAfflictions(a.currentSorted(),"affliction"):s?.applyAfflictionTransition?.(t,!1),e.markDirty(`api-observe-aff-lost:${t}`),!0)}})),d=freezeHandles(o.list?.()||[],t=>({got:(n={})=>!!o.setHave(t,!0,getObserveSource(n),getObserveAt(n))&&(e.markDirty(`api-observe-def-got:${t}`),!0),lost:(n={})=>!!o.setHave(t,!1,getObserveSource(n),getObserveAt(n))&&(e.markDirty(`api-observe-def-lost:${t}`),!0)})),p=freezeHandles(i.list?.()||[],t=>{const observeServerUse=(n,a={})=>{const o=i.observeServerUse(t,n,{...a,source:getObserveSource({...a,source:a.source||"server-duration-observe"})});return o&&e.markDirty(`api-observe-balance-used:${t}`),o};return{got(n={}){const a=i.gain(t,getObserveSource(n),getObserveAt(n));return a&&e.markDirty(`api-observe-balance-got:${t}`),a},lost(n={}){const a=i.lose(t,getObserveSource(n),getObserveAt(n));return a&&e.markDirty(`api-observe-balance-lost:${t}`),a},used:observeServerUse,serverUsed:observeServerUse,observeServerUse}}),createObservedLimbHit=(e,t={},n)=>c.observeLimbHit({limb:e,amount:n,source:getObserveSource(t),at:getObserveAt(t)}),createObservedLimbReset=(e,t={})=>c.observeLimbReset({limb:e,source:getObserveSource(t),at:getObserveAt(t)}),createObservedLimbStage=(e,t,n={})=>c.observeLimbStage({limb:e,stage:t,source:getObserveSource(n),at:getObserveAt(n)}),m=freezeHandles(s?.list?.()||[],t=>({hit(n,a={}){const o=createObservedLimbHit(t,a,n);return o.changed&&"torso"===o.limb&&o.stageChanged&&e.markDirty(`api-observe-limb-torso:${o.after?.stage||"unknown"}`),o.changed},reset(n={}){const a=createObservedLimbReset(t,n);return a.changed&&"torso"===a.limb&&e.markDirty("api-observe-limb-torso:healthy"),a.changed},setStage(n,a={}){const o=createObservedLimbStage(t,n,a);return o.changed&&"torso"===o.limb&&o.stageChanged&&e.markDirty(`api-observe-limb-torso:${o.after?.stage||"unknown"}`),o.changed}})),markObservedLimbResult=t=>(t.changed&&"torso"===t.limb&&t.stageChanged?e.markDirty(`api-observe-limb-torso:${t.after?.stage||"unknown"}`):t.changed&&"torso"===t.limb&&"healthy"===t.after?.stage?e.markDirty("api-observe-limb-torso:healthy"):t.changed&&e.markDirty(`api-observe-limb:${t.limb}`),t.changed),g=Object.freeze({...m,get(e){if(!e)return null;const t=s?.get?.(e);return t?.id&&m[t.id]||null},list:()=>Object.keys(m),hit:(e,t,n={})=>markObservedLimbResult(createObservedLimbHit(e,n,t)),reset:(e,t={})=>markObservedLimbResult(createObservedLimbReset(e,t)),setStage:(e,t,n={})=>markObservedLimbResult(createObservedLimbStage(e,t,n))}),h=Object.freeze({set(t={}){const n=l.updateMount({name:String(t.name||""),id:t.id??null});return n&&e.markDirty("api-observe-mount-set"),n},clear(){const t=l.updateMount(null);return t&&e.markDirty("api-observe-mount-clear"),t}});return{observe:Object.freeze({affs:u,defs:d,balances:p,limbs:g,mount:h})}},createPublicPromptApi=({runtime:e,control:t})=>{const n=e?.promptPresenter;if(!n)return{prompt:null};const getSystemModel=()=>e?.models?.systemModel;let a=null;return a={colorGradation:n.colorGradation,colorPercentage:n.colorPercentage,render:e=>n.render(e),getCustomPrompt:()=>n.render({source:"legacy-getCustomPrompt"}),markAffsDirty:()=>n.markAffsDirty(),markPromptDirty:()=>n.markPromptDirty?.(),patchVars:(e={})=>(n.patchVars?.(e),a),patchAffs:(e={})=>(n.patchAffs?.(e),a),patchCureColors:(e={})=>(n.patchCureColors?.(e),a),applyPreset:e=>"function"==typeof e?(e(a),n.markPromptDirty?.(),a):(!e||"object"!=typeof e||Array.isArray(e)||("cureColors"in e&&a.patchCureColors(e.cureColors),"affs"in e&&a.patchAffs(e.affs),"vars"in e&&a.patchVars(e.vars),"compose"in e&&(a.compose=e.compose),"enabled"in e&&(a.enabled=e.enabled)),a),get vars(){return n.vars},get affs(){return n.affs},get cureColors(){return n.cureColors},get compose(){return n.compose},set compose(e){n.compose=e},get enabled(){const e=getSystemModel()?.snapshot?.().settings||{};return Boolean(e.customPrompt)},set enabled(e){t?.applySettings?.({customPrompt:Boolean(e)})}},{prompt:a}},createPublicLineApi=({lineUtils:e={}})=>({replace:e.replace,replaceHTML:e.replaceHTML,replaceWord:e.replaceWord,replaceWordHTML:e.replaceWordHTML,nextLine:e.nextLine,checkLine:e.checkLine,prevLine:e.prevLine,prependNotice:e.prependNotice,say:e.say}),normalizeScopedSegment=e=>String(e||"").trim().toLowerCase().replace(/\s+/g,"_").replace(/[^a-z0-9._-]/g,""),createPublicRulesApi=({runtime:e})=>({add:(t,n)=>e.serverside.lifecycle.add(t,n),remove:t=>e.serverside.lifecycle.remove(t),enable:t=>e.serverside.lifecycle.enable(t),disable:t=>e.serverside.lifecycle.disable(t),enablePack:t=>e.serverside.lifecycle.enablePack(t),disablePack:t=>e.serverside.lifecycle.disablePack(t),load:(t,n)=>e.serverside.lifecycle.load(t,n),unload:t=>e.serverside.lifecycle.unload(t),reorder:t=>e.serverside.lifecycle.reorder(t),list:()=>e.serverside.lifecycle.list(),bindTransition(t,n={}){const a=normalizeScopedSegment(t);if(!a)return()=>{};const o=e.topics||{},i=[];return"function"==typeof n.onActivate&&i.push(e.onEvent(`${o.RULE_ACTIVATED||"nexsys4.rule.activated"}.${a}`,n.onActivate)),"function"==typeof n.onDeactivate&&i.push(e.onEvent(`${o.RULE_DEACTIVATED||"nexsys4.rule.deactivated"}.${a}`,n.onDeactivate)),()=>{i.forEach(e=>e?.())}}}),createPublicServersideApi=({runtime:e})=>({predictions:{add:t=>e.serverside.addPrediction(t),remove:t=>e.serverside.removePrediction(t)},ssQueue:{add:t=>e.serverside.manualQueueAdd(t),insert:(t,n)=>e.serverside.manualQueueInsert(t,n),remove:t=>e.serverside.manualQueueRemove(t),reset:()=>e.serverside.manualQueueReset()},ss:{syncSnapshots:()=>e.serverside.requestSnapshotSync(),startupStatus:()=>e.serverside.getStartupStatus(),unload:(t={})=>e.curingSetGuard.unload(t)}}),createPublicStateApi=({runtime:e,getModels:t})=>{const{systemModel:n,affModel:a,defModel:o,balanceModel:i,limbModel:s}=t();return{snapshot:e.snapshot,getTarget:()=>n.snapshot().target,topics:e.topics,haveAff:e=>a.haveAff(e),affElapsedMs:e=>a.elapsedMs(e),affElapsedSeconds:e=>a.elapsedSeconds(e),affRemainingMs:e=>a.remainingMs(e),affRemainingSeconds:e=>a.remainingSeconds(e),affTiming:e=>a.timing(e),haveAffs:e=>a.haveAffs(toArray(e)),haveAnAff:e=>a.haveAnAff(toArray(e)),haveDef:e=>o.haveDef(e),haveDefs:e=>toArray(e).every(e=>o.haveDef(e)),haveAnyDef:e=>toArray(e).some(e=>o.haveDef(e)),haveBal:e=>i.have(e),haveBals:e=>toArray(e).every(e=>i.have(e)),haveAnyBal:e=>toArray(e).some(e=>i.have(e)),balElapsedMs:e=>i.elapsedMs(e),balElapsedSeconds:e=>i.elapsedSeconds(e),balRemainingMs:e=>i.remainingMs(e),balRemainingSeconds:e=>i.remainingSeconds(e),balTiming:e=>i.timing(e),getLimb:e=>s?.get?.(e)||null,listLimbs:()=>s?.list?.()||[],getClass:()=>n.getClass(),checkClass:e=>n.checkClass(e),isClass:e=>n.isClass(e),isTarget:e=>n.isTarget(e)}},isRecord=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),cloneAndFreezeCells=(e={})=>{const t={};for(const[n,a]of Object.entries(e))t[n]=isRecord(a)?Object.freeze({...a}):a;return Object.freeze(t)},buildPromptSnapshot=e=>e?Object.freeze({vars:cloneAndFreezeCells(e.vars),affs:cloneAndFreezeCells(e.affs),cureColors:cloneAndFreezeCells(e.cureColors)}):null,createPublicApi=({runtime:e,lineUtils:t={}})=>{const getModels=()=>e.models,n=createPublicStateApi({runtime:e,getModels}),a=createPublicEventApi({runtime:e}),o=createPublicControlApi({runtime:e,getModels}),i=createPublicCommandApi({runtime:e}),s=createPublicMutationApi({runtime:e,getModels}),l=createPublicObserveApi({runtime:e,getModels}),c=createPublicRulesApi({runtime:e}),u=createPublicServersideApi({runtime:e}),d=createPublicPromptApi({runtime:e,control:o}),p=createPublicLineApi({lineUtils:t}),{systemModel:m,affModel:g,defModel:h,balanceModel:b,limbModel:y,cacheModel:v}=getModels(),S=Object.freeze(Object.create(null,{system:{enumerable:!0,get:()=>m.snapshot()},target:{enumerable:!0,get:()=>m.snapshot().target},class:{enumerable:!0,get:()=>m.snapshot().char.class},affs:{enumerable:!0,get:()=>g.snapshot()},defs:{enumerable:!0,get:()=>h.snapshot()},balances:{enumerable:!0,get:()=>b.snapshot()},limbs:{enumerable:!0,get:()=>y.snapshot()},queue:{enumerable:!0,get:()=>e.queueController.snapshot()},cache:{enumerable:!0,get:()=>v.snapshot()},prompt:{enumerable:!0,get:()=>buildPromptSnapshot(e.promptPresenter)},serverside:{enumerable:!0,get:()=>e.serverside.snapshot()}})),x=Object.freeze({on:a.events.on,off:a.events.off,topics:e.topics}),C=Object.freeze({affs:l.observe.affs,defs:l.observe.defs,balances:l.observe.balances,limbs:l.observe.limbs,mount:Object.freeze({set:l.observe.mount.set,reset:l.observe.mount.clear})}),w=Object.freeze({openConfig:(t="api.ui.openConfig")=>e.setConfigOpen(!0,t),closeConfig:(t="api.ui.closeConfig")=>e.setConfigOpen(!1,t),setConfigOpen:(t,n="api.ui.setConfigOpen")=>e.setConfigOpen(Boolean(t),n)}),k={...i.queue,...i.queues,list:i.queue.listQueues};return{state:S,api:{affs:{have:n.haveAff,haveAll:n.haveAffs,haveAny:n.haveAnAff,elapsedMs:n.affElapsedMs,elapsedSeconds:n.affElapsedSeconds,remainingMs:n.affRemainingMs,remainingSeconds:n.affRemainingSeconds,timing:n.affTiming,setPriority:s.updateAffPriority,setDefaultPriority:s.updateAffDefault,resetPriority:s.resetAffPriority,resetAllPriorities:s.resetAllAffPriorities},defs:{have:n.haveDef,haveAll:n.haveDefs,haveAny:n.haveAnyDef,setPriority:s.updateDefPriority,setDefaultPriority:s.updateDefDefault,setStatic:s.updateDefStatic,setCommand:s.updateDefCommand,resetPriority:s.resetDefPriority,resetAllPriorities:s.resetAllDefPriorities,defup:s.defup,defoff:s.defoff,parry:s.parry},balances:{have:n.haveBal,haveAll:n.haveBals,haveAny:n.haveAnyBal,elapsedMs:n.balElapsedMs,elapsedSeconds:n.balElapsedSeconds,remainingMs:n.balRemainingMs,remainingSeconds:n.balRemainingSeconds,timing:n.balTiming},limbs:{get:n.getLimb,list:n.listLimbs},target:{get:n.getTarget,set:i.setTarget,is:n.isTarget},class:{get:n.getClass,is:n.isClass,check:n.checkClass},command:{send:i.sendCmd,sendInline:i.sendInline,addOutput:i.addOutput,evaluateNow:i.evaluateNow},queue:k,rules:c,prompt:d.prompt,observe:C,ui:w,line:p,control:{...o},ss:{predictions:u.predictions,queue:{add:u.ssQueue.add,insert:u.ssQueue.insert,remove:u.ssQueue.remove,clear:u.ssQueue.reset},syncSnapshots:u.ss.syncSnapshots,startupStatus:u.ss.startupStatus,unload:u.ss.unload,precache:{set:s.setPrecache},prioAff:{set:s.prioAff,reset:s.clearPrioAff}}},events:x}},generateChunk=(e,t,n)=>{const a=document.createElement("span");return a.style.color=t,a.style.backgroundColor=n,a.textContent=e,a},cloneTrustedHtmlNodes=e=>{const t=document.createElement("template");return t.innerHTML=String(e??""),[...t.content.childNodes].map(e=>e.cloneNode(!0))},replaceWordNodes=(e,t,n)=>{const a=String(t??"");if(!a)return!1;const o=document.createTreeWalker(e,globalThis.NodeFilter?.SHOW_TEXT??4),i=[];for(;o.nextNode();)i.push(o.currentNode);let s=!1;return i.forEach(e=>{const t=e?.textContent||"";if(!e?.parentNode||!t.includes(a))return;const o=document.createDocumentFragment();let i=0;for(;i<t.length;){const e=t.indexOf(a,i);if(-1===e){o.append(t.slice(i));break}e>i&&o.append(t.slice(i,e)),n().forEach(e=>o.appendChild(e)),i=e+a.length,s=!0}e.replaceWith(o)}),s},updateCurrentFormattedLine=e=>{const t=document.createElement("span");t.innerHTML=globalThis.nexusclient.current_line.parsed_line.formatted();const n=e(t);return globalThis.nexusclient.current_line.parsed_line.formatted=()=>t.innerHTML,n},replace$1=(...e)=>{const t=document.createElement("span");for(let n=0;n<e.length;n+=3)t.appendChild(generateChunk(e[n],e[n+1],e[n+2]));return globalThis.nexusclient.current_line.parsed_line.formatted=()=>t.outerHTML,!0},replaceHTML=e=>(globalThis.nexusclient.current_line.parsed_line.formatted=()=>e,!0),replaceWord=(e,t,n,a)=>updateCurrentFormattedLine(o=>replaceWordNodes(o,e,()=>[generateChunk(t,n,a)])),replaceWordHTML=(e,t)=>updateCurrentFormattedLine(n=>replaceWordNodes(n,e,()=>cloneTrustedHtmlNodes(t))),matchPattern=(e,t)=>"string"==typeof t?e.includes(t):t instanceof RegExp&&t.test(e),prevLine=e=>{const{current_block:t,current_line:n}=globalThis.nexusclient,a=t.indexOf(n);return!(a<=0)&&matchPattern(t[a-1].parsed_line.text(),e)},nextLine=e=>{const{current_block:t,current_line:n}=globalThis.nexusclient,a=t.indexOf(n);return!(a>=t.length-1)&&matchPattern(t[a+1].parsed_line.text(),e)},checkLine=(e,t)=>{const{current_block:n,current_line:a}=globalThis.nexusclient,o=n.indexOf(a)+t;return!(o<0||o>n.length-1)&&matchPattern(n[o].parsed_line.text(),e)},prependNotice=(...e)=>{const t=document.createElement("span");for(let n=0;n<e.length;n+=3)t.appendChild(generateChunk(e[n],e[n+1],e[n+2]));return globalThis.nexSys.prepend_line={timestamp:globalThis.nexusclient.current_block[1].timestamp,timestamp_ms:globalThis.nexusclient.current_block[1].timestamp_ms,parsed_line:{text:()=>t.outerHTML,formatted:()=>t.outerHTML}},t.outerHTML},say=e=>{const t=new SpeechSynthesisUtterance;t.voice=globalThis.speechSynthesis.getVoices().find(e=>"Google UK English Female"===e.voiceURI)||globalThis.speechSynthesis.getVoices().find(e=>"en-US"===e.lang),t.rate=1.1,t.pitch=1.3,t.text=e,globalThis.speechSynthesis.speaking&&globalThis.speechSynthesis.cancel(),setTimeout(()=>globalThis.speechSynthesis.speak(t),10)},Oa={affTable:U,balanceTable:V,cacheTable:P,cacheNames:{herb_name_to_herb:w,mineral_to_herb:k,herb_to_mineral:E,herb_names:x,herb_names_group:C,mineral_names:v,mineral_names_group:S},cureTable:G,defTable:Q,defPrios:Z},$a=Object.freeze({affCount:Array.isArray(U?.list)?U.list.length:0,cureCount:Object.keys(G||{}).length,defCount:Object.keys(Q||{}).length,balanceCount:Object.keys(V||{}).length,cacheCount:Object.keys(P||{}).length}),createNexSys=({adapter:e,adapterType:t="nexus",options:n={}}={})=>{installStringPrototypeHelpers();const a={...n.adapterOptions||{}};void 0===a.debug&&(a.debug=n.debug??!1),void 0===a.startupGag&&(a.startupGag=n.startupGag??!0);const o=assertAdapterContract(e||("mock"===t?createMockAdapter(a):createNexusAdapter(a))),i=createRuntimeEngine({adapter:o,seedData:Oa,options:n}),{state:s,api:l,events:c}=createPublicApi({runtime:i,lineUtils:{replace:replace$1,replaceHTML,replaceWord,replaceWordHTML,nextLine,checkLine,prependNotice,prevLine,say}});return{version:"1.0.8",seedMeta:$a,tables:{limbs:ve,dirs:Se,dirMap:xe,oppdirs:Ce,shortDirs:we,classList:ke},adapter:o,runtime:i,state:s,api:l,events:c}},clearGlobalNexSys=()=>{if("undefined"==typeof globalThis)return;const e=globalThis.nexSys,t=e?.api?.control?.stop;if(e&&"function"==typeof t)try{t()}catch(n){console.error("nexSys4 failed to stop the existing global runtime during reinstall",n)}try{delete globalThis.nexSys}catch{globalThis.nexSys=void 0}},installGlobalNexSys=(e={})=>{clearGlobalNexSys();const t=createNexSys(e);return globalThis.nexSys=t,t.api.control.start(),t},Ia=Object.freeze({coalesceGmcp:!0,publishToEventStream:!0,publishRawGmcp:!1,debug:!1,startupTimeoutMs:2500,maxStartupRetries:3,maxEntriesPerSubmission:20,pendingTimeoutMs:12e3,desyncCommandRepeats:3,maxSsCommandsPerCycle:40}),bootstrapNexus=(e={})=>{const{forceNew:t,...n}=e;return uninstallNexusClientOverrides(),installNexusClientOverrides(),installGlobalNexSys({adapterType:"nexus",options:{...Ia,...n}})},Na=Symbol.for("nexsys4.startup.installed"),za="font_stacks_original",getNexusclient=()=>globalThis.nexusclient&&"object"==typeof globalThis.nexusclient?globalThis.nexusclient:null,mountGui=e=>{if(!globalThis.ReactDOM||!globalThis.React)return!1;document.getElementById("modal-root")||document.body.appendChild(Object.assign(document.createElement("div"),{id:"modal-root"})),document.getElementById("nexsys-modal")?.remove();const t=Object.assign(document.createElement("div"),{id:"nexsys-modal"});return document.getElementById("modal-root").appendChild(t),globalThis.ReactDOM.createRoot(t).render(globalThis.React.createElement(e.component,{nexSys:e})),!0},injectFonts=()=>{const e=document.getElementsByTagName("head")[0],t=document.createElement("link");t.rel="stylesheet",t.href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap",e.appendChild(t);const n=document.createElement("link");n.rel="stylesheet",n.href="https://fonts.googleapis.com/css?family=Roboto%20Mono:300,400,500,700&display=swap",e.appendChild(n)},patchFontStacks=e=>{const t=e.settings();if(void 0!==t[za])return;const n=document.getElementsByTagName("head")[0],a=document.getElementById("nexSysCSS")||document.createElement("style");a.id="nexSysCSS",a.parentNode||n.appendChild(a),t[za]=t.font_stacks,t.font_stacks=function(){return a.textContent=`.timestamp {font-family: ${t.font_stack}}`,[{name:"RobotoMono",stack:"Roboto Mono,Consolas,monospace"},{name:"Consolas",stack:"Consolas,RobotoMono,monospace"},{name:"Verdana",stack:"Verdana, Geneva, sans-serif"},{name:"Lucida",stack:"'Lucida Grande', 'Lucida Sans Unicode', 'Lucida Sans', Geneva, Verdana, sans-serif"},{name:"Arial",stack:"Arial, 'Helvetica Neue', Helvetica, sans-serif"},{name:"Futura",stack:"Futura, 'Trebuchet MS', Arial, sans-serif"},{name:"Book Antiqua",stack:"'Book Antiqua', Palatino, 'Palatino Linotype', 'Palatino LT STD', Georgia, serif"},...t[za]()]}},initializeSettings=e=>{void 0===e.variables().vars.nexSys4Settings&&(e.variables().vars.nexSys4Settings={})},startupNexus=()=>{const e=getNexusclient();return!!e&&(e[Na]||(injectFonts(),patchFontStacks(e),initializeSettings(e),e[Na]=!0),mountGui(globalThis.nexSys),!0)},La=(0,c.createContext)(null);function useNexSys(){return(0,c.useContext)(La)}var ja=__commonJSMin(e=>{var t=Symbol.for("react.transitional.element");Symbol.for("react.fragment");function jsxProd(e,n,a){var o=null;if(void 0!==a&&(o=""+a),void 0!==n.key&&(o=""+n.key),"key"in n)for(var i in a={},n)"key"!==i&&(a[i]=n[i]);else a=n;return n=a.ref,{$$typeof:t,type:e,key:o,ref:void 0!==n?n:null,props:a}}e.jsx=jsxProd,e.jsxs=jsxProd}),Ba=__commonJSMin((e,t)=>{t.exports=ja()})();function NexSysProvider({nexSys:e,children:t}){return(0,Ba.jsx)(La.Provider,{value:e,children:t})}var Fa={black:"#000",white:"#fff"},qa={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},Ua={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},Va={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},Ha={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},Wa={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"},Ga={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},Ya={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"};function formatMuiErrorMessage(e,...t){const n=new URL(`https://mui.com/production-error/?code=${e}`);return t.forEach(e=>n.searchParams.append("args[]",e)),`Minified MUI error #${e}; visit ${n} for the full message.`}var Ka="$$material";function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},_extends.apply(null,arguments)}var Qa=!1;function sheetForTag(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}function createStyleElement(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}var Za=function(){function StyleSheet(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy?!Qa:e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var e=StyleSheet.prototype;return e.hydrate=function hydrate(e){e.forEach(this._insertTag)},e.insert=function insert(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(createStyleElement(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=sheetForTag(t);try{n.insertRule(e,n.cssRules.length)}catch(a){}}else t.appendChild(document.createTextNode(e));this.ctr++},e.flush=function flush(){this.tags.forEach(function(e){var t;return null==(t=e.parentNode)?void 0:t.removeChild(e)}),this.tags=[],this.ctr=0},StyleSheet}(),Xa="-ms-",Ja="-moz-",eo="-webkit-",to="comm",ro="rule",no="decl",ao="@import",oo="@keyframes",io="@layer",so=Math.abs,lo=String.fromCharCode,co=Object.assign;function hash$2(e,t){return 45^charat(e,0)?(((t<<2^charat(e,0))<<2^charat(e,1))<<2^charat(e,2))<<2^charat(e,3):0}function trim(e){return e.trim()}function match(e,t){return(e=t.exec(e))?e[0]:e}function replace(e,t,n){return e.replace(t,n)}function indexof(e,t){return e.indexOf(t)}function charat(e,t){return 0|e.charCodeAt(t)}function substr(e,t,n){return e.slice(t,n)}function strlen(e){return e.length}function sizeof(e){return e.length}function append(e,t){return t.push(e),e}function combine(e,t){return e.map(t).join("")}var uo=1,po=1,mo=0,fo=0,go=0,ho="";function node(e,t,n,a,o,i,s){return{value:e,root:t,parent:n,type:a,props:o,children:i,line:uo,column:po,length:s,return:""}}function copy(e,t){return co(node("",null,null,"",null,null,0),e,{length:-e.length},t)}function char(){return go}function prev(){return go=fo>0?charat(ho,--fo):0,po--,10===go&&(po=1,uo--),go}function next(){return go=fo<mo?charat(ho,fo++):0,po++,10===go&&(po=1,uo++),go}function peek$1(){return charat(ho,fo)}function caret(){return fo}function slice(e,t){return substr(ho,e,t)}function token(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function alloc(e){return uo=po=1,mo=strlen(ho=e),fo=0,[]}function dealloc(e){return ho="",e}function delimit(e){return trim(slice(fo-1,delimiter(91===e?e+2:40===e?e+1:e)))}function whitespace(e){for(;(go=peek$1())&&go<33;)next();return token(e)>2||token(go)>3?"":" "}function escaping(e,t){for(;--t&&next()&&!(go<48||go>102||go>57&&go<65||go>70&&go<97););return slice(e,caret()+(t<6&&32==peek$1()&&32==next()))}function delimiter(e){for(;next();)switch(go){case e:return fo;case 34:case 39:34!==e&&39!==e&&delimiter(go);break;case 40:41===e&&delimiter(e);break;case 92:next()}return fo}function commenter(e,t){for(;next()&&e+go!==57&&(e+go!==84||47!==peek$1()););return"/*"+slice(t,fo-1)+"*"+lo(47===e?e:next())}function identifier(e){for(;!token(peek$1());)next();return slice(e,fo)}function compile(e){return dealloc(parse("",null,null,null,[""],e=alloc(e),0,[0],e))}function parse(e,t,n,a,o,i,s,l,c){for(var u=0,d=0,p=s,m=0,g=0,h=0,b=1,y=1,v=1,S=0,x="",C=o,w=i,k=a,E=x;y;)switch(h=S,S=next()){case 40:if(108!=h&&58==charat(E,p-1)){-1!=indexof(E+=replace(delimit(S),"&","&\f"),"&\f")&&(v=-1);break}case 34:case 39:case 91:E+=delimit(S);break;case 9:case 10:case 13:case 32:E+=whitespace(h);break;case 92:E+=escaping(caret()-1,7);continue;case 47:switch(peek$1()){case 42:case 47:append(comment(commenter(next(),caret()),t,n),c);break;default:E+="/"}break;case 123*b:l[u++]=strlen(E)*v;case 125*b:case 59:case 0:switch(S){case 0:case 125:y=0;case 59+d:-1==v&&(E=replace(E,/\f/g,"")),g>0&&strlen(E)-p&&append(g>32?declaration(E+";",a,n,p-1):declaration(replace(E," ","")+";",a,n,p-2),c);break;case 59:E+=";";default:if(append(k=ruleset(E,t,n,u,d,o,l,x,C=[],w=[],p),i),123===S)if(0===d)parse(E,t,k,k,C,i,p,l,w);else switch(99===m&&110===charat(E,3)?100:m){case 100:case 108:case 109:case 115:parse(e,k,k,a&&append(ruleset(e,k,k,0,0,o,l,x,o,C=[],p),w),o,w,p,l,a?C:w);break;default:parse(E,k,k,k,[""],w,0,l,w)}}u=d=g=0,b=v=1,x=E="",p=s;break;case 58:p=1+strlen(E),g=h;default:if(b<1)if(123==S)--b;else if(125==S&&0==b++&&125==prev())continue;switch(E+=lo(S),S*b){case 38:v=d>0?1:(E+="\f",-1);break;case 44:l[u++]=(strlen(E)-1)*v,v=1;break;case 64:45===peek$1()&&(E+=delimit(next())),m=peek$1(),d=p=strlen(x=E+=identifier(caret())),S++;break;case 45:45===h&&2==strlen(E)&&(b=0)}}return i}function ruleset(e,t,n,a,o,i,s,l,c,u,d){for(var p=o-1,m=0===o?i:[""],g=sizeof(m),h=0,b=0,y=0;h<a;++h)for(var v=0,S=substr(e,p+1,p=so(b=s[h])),x=e;v<g;++v)(x=trim(b>0?m[v]+" "+S:replace(S,/&\f/g,m[v])))&&(c[y++]=x);return node(e,t,n,0===o?ro:l,c,u,d)}function comment(e,t,n){return node(e,t,n,to,lo(char()),substr(e,2,-2),0)}function declaration(e,t,n,a){return node(e,t,n,no,substr(e,0,a),substr(e,a+1,-1),a)}function serialize(e,t){for(var n="",a=sizeof(e),o=0;o<a;o++)n+=t(e[o],o,e,t)||"";return n}function stringify(e,t,n,a){switch(e.type){case io:if(e.children.length)break;case ao:case no:return e.return=e.return||e.value;case to:return"";case oo:return e.return=e.value+"{"+serialize(e.children,a)+"}";case ro:e.value=e.props.join(",")}return strlen(n=serialize(e.children,a))?e.return=e.value+"{"+n+"}":""}function middleware(e){var t=sizeof(e);return function(n,a,o,i){for(var s="",l=0;l<t;l++)s+=e[l](n,a,o,i)||"";return s}}function rulesheet(e){return function(t){t.root||(t=t.return)&&e(t)}}function memoize(e){var t=Object.create(null);return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}var bo=function identifierWithPointTracking(e,t,n){for(var a=0,o=0;a=o,o=peek$1(),38===a&&12===o&&(t[n]=1),!token(o);)next();return slice(e,fo)},yo=function toRules(e,t){var n=-1,a=44;do{switch(token(a)){case 0:38===a&&12===peek$1()&&(t[n]=1),e[n]+=bo(fo-1,t,n);break;case 2:e[n]+=delimit(a);break;case 4:if(44===a){e[++n]=58===peek$1()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=lo(a)}}while(a=next());return e},vo=function getRules(e,t){return dealloc(yo(alloc(e),t))},So=new WeakMap,xo=function compat(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,a=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||So.get(n))&&!a){So.set(e,!0);for(var o=[],i=vo(t,o),s=n.props,l=0,c=0;l<i.length;l++)for(var u=0;u<s.length;u++,c++)e.props[c]=o[l]?i[l].replace(/&\f/g,s[u]):s[u]+" "+i[l]}}},Co=function removeLabel(e){if("decl"===e.type){var t=e.value;108===t.charCodeAt(0)&&98===t.charCodeAt(2)&&(e.return="",e.value="")}};function prefix(e,t){switch(hash$2(e,t)){case 5103:return eo+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return eo+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return eo+e+Ja+e+Xa+e+e;case 6828:case 4268:return eo+e+Xa+e+e;case 6165:return eo+e+Xa+"flex-"+e+e;case 5187:return eo+e+replace(e,/(\w+).+(:[^]+)/,eo+"box-$1$2"+Xa+"flex-$1$2")+e;case 5443:return eo+e+Xa+"flex-item-"+replace(e,/flex-|-self/,"")+e;case 4675:return eo+e+Xa+"flex-line-pack"+replace(e,/align-content|flex-|-self/,"")+e;case 5548:return eo+e+Xa+replace(e,"shrink","negative")+e;case 5292:return eo+e+Xa+replace(e,"basis","preferred-size")+e;case 6060:return eo+"box-"+replace(e,"-grow","")+eo+e+Xa+replace(e,"grow","positive")+e;case 4554:return eo+replace(e,/([^-])(transform)/g,"$1"+eo+"$2")+e;case 6187:return replace(replace(replace(e,/(zoom-|grab)/,eo+"$1"),/(image-set)/,eo+"$1"),e,"")+e;case 5495:case 3959:return replace(e,/(image-set\([^]*)/,eo+"$1$`$1");case 4968:return replace(replace(e,/(.+:)(flex-)?(.*)/,eo+"box-pack:$3"+Xa+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+eo+e+e;case 4095:case 3583:case 4068:case 2532:return replace(e,/(.+)-inline(.+)/,eo+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(strlen(e)-1-t>6)switch(charat(e,t+1)){case 109:if(45!==charat(e,t+4))break;case 102:return replace(e,/(.+:)(.+)-([^]+)/,"$1"+eo+"$2-$3$1"+Ja+(108==charat(e,t+3)?"$3":"$2-$3"))+e;case 115:return~indexof(e,"stretch")?prefix(replace(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==charat(e,t+1))break;case 6444:switch(charat(e,strlen(e)-3-(~indexof(e,"!important")&&10))){case 107:return replace(e,":",":"+eo)+e;case 101:return replace(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+eo+(45===charat(e,14)?"inline-":"")+"box$3$1"+eo+"$2$3$1"+Xa+"$2box$3")+e}break;case 5936:switch(charat(e,t+11)){case 114:return eo+e+Xa+replace(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return eo+e+Xa+replace(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return eo+e+Xa+replace(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return eo+e+Xa+e+e}return e}var wo=[function prefixer(e,t,n,a){if(e.length>-1&&!e.return)switch(e.type){case no:e.return=prefix(e.value,e.length);break;case oo:return serialize([copy(e,{value:replace(e.value,"@","@"+eo)})],a);case ro:if(e.length)return combine(e.props,function(t){switch(match(t,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return serialize([copy(e,{props:[replace(t,/:(read-\w+)/,":"+Ja+"$1")]})],a);case"::placeholder":return serialize([copy(e,{props:[replace(t,/:(plac\w+)/,":"+eo+"input-$1")]}),copy(e,{props:[replace(t,/:(plac\w+)/,":"+Ja+"$1")]}),copy(e,{props:[replace(t,/:(plac\w+)/,Xa+"input-$1")]})],a)}return""})}}],ko=function createCache(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))})}var a,o,i=e.stylisPlugins||wo,s={},l=[];a=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n<t.length;n++)s[t[n]]=!0;l.push(e)});var c,u=[xo,Co],d=[stringify,rulesheet(function(e){c.insert(e)})],p=middleware(u.concat(i,d)),m=function stylis(e){return serialize(compile(e),p)};o=function insert(e,t,n,a){c=n,m(e?e+"{"+t.styles+"}":t.styles),a&&(g.inserted[t.name]=!0)};var g={key:t,sheet:new Za({key:t,container:a,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:s,registered:{},insert:o};return g.sheet.hydrate(l),g},Eo=__commonJSMin(e=>{var t="function"==typeof Symbol&&Symbol.for,n=t?Symbol.for("react.element"):60103,a=t?Symbol.for("react.portal"):60106,o=t?Symbol.for("react.fragment"):60107,i=t?Symbol.for("react.strict_mode"):60108,s=t?Symbol.for("react.profiler"):60114,l=t?Symbol.for("react.provider"):60109,c=t?Symbol.for("react.context"):60110,u=t?Symbol.for("react.async_mode"):60111,d=t?Symbol.for("react.concurrent_mode"):60111,p=t?Symbol.for("react.forward_ref"):60112,m=t?Symbol.for("react.suspense"):60113,g=t?Symbol.for("react.suspense_list"):60120,h=t?Symbol.for("react.memo"):60115,b=t?Symbol.for("react.lazy"):60116,y=t?Symbol.for("react.block"):60121,v=t?Symbol.for("react.fundamental"):60117,S=t?Symbol.for("react.responder"):60118,x=t?Symbol.for("react.scope"):60119;function z(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:switch(e=e.type){case u:case d:case o:case s:case i:case m:return e;default:switch(e=e&&e.$$typeof){case c:case p:case b:case h:case l:return e;default:return t}}case a:return t}}}function A(e){return z(e)===d}e.AsyncMode=u,e.ConcurrentMode=d,e.ContextConsumer=c,e.ContextProvider=l,e.Element=n,e.ForwardRef=p,e.Fragment=o,e.Lazy=b,e.Memo=h,e.Portal=a,e.Profiler=s,e.StrictMode=i,e.Suspense=m,e.isAsyncMode=function(e){return A(e)||z(e)===u},e.isConcurrentMode=A,e.isContextConsumer=function(e){return z(e)===c},e.isContextProvider=function(e){return z(e)===l},e.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===n},e.isForwardRef=function(e){return z(e)===p},e.isFragment=function(e){return z(e)===o},e.isLazy=function(e){return z(e)===b},e.isMemo=function(e){return z(e)===h},e.isPortal=function(e){return z(e)===a},e.isProfiler=function(e){return z(e)===s},e.isStrictMode=function(e){return z(e)===i},e.isSuspense=function(e){return z(e)===m},e.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===s||e===i||e===m||e===g||"object"==typeof e&&null!==e&&(e.$$typeof===b||e.$$typeof===h||e.$$typeof===l||e.$$typeof===c||e.$$typeof===p||e.$$typeof===v||e.$$typeof===S||e.$$typeof===x||e.$$typeof===y)},e.typeOf=z}),_o=__commonJSMin((e,t)=>{t.exports=Eo()}),Po=__commonJSMin((e,t)=>{var n=_o(),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function getStatics(e){return n.isMemo(e)?s:l[e.$$typeof]||a}l[n.ForwardRef]=i,l[n.Memo]=s;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,m=Object.getPrototypeOf,g=Object.prototype;function hoistNonReactStatics(e,t,n){if("string"!=typeof t){if(g){var a=m(t);a&&a!==g&&hoistNonReactStatics(e,a,n)}var i=u(t);d&&(i=i.concat(d(t)));for(var s=getStatics(e),l=getStatics(t),h=0;h<i.length;++h){var b=i[h];if(!(o[b]||n&&n[b]||l&&l[b]||s&&s[b])){var y=p(t,b);try{c(e,b,y)}catch(v){}}}}return e}t.exports=hoistNonReactStatics}),To=!0;function getRegisteredStyles(e,t,n){var a="";return n.split(" ").forEach(function(n){void 0!==e[n]?t.push(e[n]+";"):n&&(a+=n+" ")}),a}var Ao=function registerStyles(e,t,n){var a=e.key+"-"+t.name;!1!==n&&!1!==To||void 0!==e.registered[a]||(e.registered[a]=t.styles)},Ro=function insertStyles(e,t,n){Ao(e,t,n);var a=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var o=t;do{e.insert(t===o?"."+a:"",o,e.sheet,!0),o=o.next}while(void 0!==o)}};function murmur2(e){for(var t,n=0,a=0,o=e.length;o>=4;++a,o-=4)t=1540483477*(65535&(t=255&e.charCodeAt(a)|(255&e.charCodeAt(++a))<<8|(255&e.charCodeAt(++a))<<16|(255&e.charCodeAt(++a))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(o){case 3:n^=(255&e.charCodeAt(a+2))<<16;case 2:n^=(255&e.charCodeAt(a+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(a)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}var Mo={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},Do=!1,Oo=/[A-Z]|^ms/g,$o=/_EMO_([^_]+?)_([^]*?)_EMO_/g,Io=function isCustomProperty(e){return 45===e.charCodeAt(1)},No=function isProcessableValue(e){return null!=e&&"boolean"!=typeof e},zo=memoize(function(e){return Io(e)?e:e.replace(Oo,"-$&").toLowerCase()}),Lo=function processStyleValue(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace($o,function(e,t,n){return Bo={name:t,styles:n,next:Bo},t})}return 1===Mo[e]||Io(e)||"number"!=typeof t||0===t?t:t+"px"},jo="Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform.";function handleInterpolation(e,t,n){if(null==n)return"";var a=n;if(void 0!==a.__emotion_styles)return a;switch(typeof n){case"boolean":return"";case"object":var o=n;if(1===o.anim)return Bo={name:o.name,styles:o.styles,next:Bo},o.name;var i=n;if(void 0!==i.styles){var s=i.next;if(void 0!==s)for(;void 0!==s;)Bo={name:s.name,styles:s.styles,next:Bo},s=s.next;return i.styles+";"}return createStringFromObject(e,t,n);case"function":if(void 0!==e){var l=Bo,c=n(e);return Bo=l,handleInterpolation(e,t,c)}}var u=n;if(null==t)return u;var d=t[u];return void 0!==d?d:u}function createStringFromObject(e,t,n){var a="";if(Array.isArray(n))for(var o=0;o<n.length;o++)a+=handleInterpolation(e,t,n[o])+";";else for(var i in n){var s=n[i];if("object"!=typeof s){var l=s;null!=t&&void 0!==t[l]?a+=i+"{"+t[l]+"}":No(l)&&(a+=zo(i)+":"+Lo(i,l)+";")}else{if("NO_COMPONENT_SELECTOR"===i&&Do)throw new Error(jo);if(!Array.isArray(s)||"string"!=typeof s[0]||null!=t&&void 0!==t[s[0]]){var c=handleInterpolation(e,t,s);switch(i){case"animation":case"animationName":a+=zo(i)+":"+c+";";break;default:a+=i+"{"+c+"}"}}else for(var u=0;u<s.length;u++)No(s[u])&&(a+=zo(i)+":"+Lo(i,s[u])+";")}}return a}var Bo,Fo=/label:\s*([^\s;{]+)\s*(;|$)/g;function serializeStyles(e,t,n){if(1===e.length&&"object"==typeof e[0]&&null!==e[0]&&void 0!==e[0].styles)return e[0];var a=!0,o="";Bo=void 0;var i=e[0];null==i||void 0===i.raw?(a=!1,o+=handleInterpolation(n,t,i)):o+=i[0];for(var s=1;s<e.length;s++)o+=handleInterpolation(n,t,e[s]),a&&(o+=i[s]);Fo.lastIndex=0;for(var l,c="";null!==(l=Fo.exec(o));)c+="-"+l[1];return{name:murmur2(o)+c,styles:o,next:Bo}}var qo=function syncFallback(e){return e()},Uo=!!e.useInsertionEffect&&e.useInsertionEffect,Vo=Uo||qo,Ho=Uo||e.useLayoutEffect,Wo=e.createContext("undefined"!=typeof HTMLElement?ko({key:"css"}):null),Go=(Wo.Provider,function withEmotionCache(t){return(0,e.forwardRef)(function(n,a){return t(n,(0,e.useContext)(Wo),a)})}),Yo=e.createContext({}),Ko={}.hasOwnProperty,Qo="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",Zo=function createEmotionProps(e,t){var n={};for(var a in t)Ko.call(t,a)&&(n[a]=t[a]);return n[Qo]=e,n},Xo=function Insertion(e){var t=e.cache,n=e.serialized,a=e.isStringTag;return Ao(t,n,a),Vo(function(){return Ro(t,n,a)}),null},Jo=Go(function(t,n,a){var o=t.css;"string"==typeof o&&void 0!==n.registered[o]&&(o=n.registered[o]);var i=t[Qo],s=[o],l="";"string"==typeof t.className?l=getRegisteredStyles(n.registered,s,t.className):null!=t.className&&(l=t.className+" ");var c=serializeStyles(s,void 0,e.useContext(Yo));l+=n.key+"-"+c.name;var u={};for(var d in t)Ko.call(t,d)&&"css"!==d&&d!==Qo&&(u[d]=t[d]);return u.className=l,a&&(u.ref=a),e.createElement(e.Fragment,null,e.createElement(Xo,{cache:n,serialized:c,isStringTag:"string"==typeof i}),e.createElement(i,u))}),ei=(Po(),function jsx(t,n){var a=arguments;if(null==n||!Ko.call(n,"css"))return e.createElement.apply(void 0,a);var o=a.length,i=new Array(o);i[0]=Jo,i[1]=Zo(t,n);for(var s=2;s<o;s++)i[s]=a[s];return e.createElement.apply(null,i)});!function(e){var t;t||(t=e.JSX||(e.JSX={}))}(ei||(ei={}));var ti=Go(function(t,n){var a=serializeStyles([t.styles],void 0,e.useContext(Yo)),o=e.useRef();return Ho(function(){var e=n.key+"-global",t=new n.sheet.constructor({key:e,nonce:n.sheet.nonce,container:n.sheet.container,speedy:n.sheet.isSpeedy}),i=!1,s=document.querySelector('style[data-emotion="'+e+" "+a.name+'"]');return n.sheet.tags.length&&(t.before=n.sheet.tags[0]),null!==s&&(i=!0,s.setAttribute("data-emotion",e),t.hydrate([s])),o.current=[t,i],function(){t.flush()}},[n]),Ho(function(){var e=o.current,t=e[0];e[1]?e[1]=!1:(void 0!==a.next&&Ro(n,a.next,!0),t.tags.length&&(t.before=t.tags[t.tags.length-1].nextElementSibling,t.flush()),n.insert("",a,t,!1))},[n,a.name]),null});function css(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return serializeStyles(t)}function keyframes(){var e=css.apply(void 0,arguments),t="animation-"+e.name;return{name:t,styles:"@keyframes "+t+"{"+e.styles+"}",anim:1,toString:function toString(){return"_EMO_"+this.name+"_"+this.styles+"_EMO_"}}}var ri=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,ni=!1,ai=memoize(function(e){return ri.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91}),oi=function testOmitPropsOnComponent(e){return"theme"!==e},ii=function getDefaultShouldForwardProp(e){return"string"==typeof e&&e.charCodeAt(0)>96?ai:oi},si=function composeShouldForwardProps(e,t,n){var a;if(t){var o=t.shouldForwardProp;a=e.__emotion_forwardProp&&o?function(t){return e.__emotion_forwardProp(t)&&o(t)}:o}return"function"!=typeof a&&n&&(a=e.__emotion_forwardProp),a},li=function Insertion(e){var t=e.cache,n=e.serialized,a=e.isStringTag;return Ao(t,n,a),Vo(function(){return Ro(t,n,a)}),null},ci=function createStyled(t,n){var a,o,i=t.__emotion_real===t,s=i&&t.__emotion_base||t;void 0!==n&&(a=n.label,o=n.target);var l=si(t,n,i),c=l||ii(s),u=!c("as");return function(){var d=arguments,p=i&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==a&&p.push("label:"+a+";"),null==d[0]||void 0===d[0].raw)p.push.apply(p,d);else{var m=d[0];p.push(m[0]);for(var g=d.length,h=1;h<g;h++)p.push(d[h],m[h])}var b=Go(function(t,n,a){var i=u&&t.as||s,d="",m=[],g=t;if(null==t.theme){for(var h in g={},t)g[h]=t[h];g.theme=e.useContext(Yo)}"string"==typeof t.className?d=getRegisteredStyles(n.registered,m,t.className):null!=t.className&&(d=t.className+" ");var b=serializeStyles(p.concat(m),n.registered,g);d+=n.key+"-"+b.name,void 0!==o&&(d+=" "+o);var y=u&&void 0===l?ii(i):c,v={};for(var S in t)u&&"as"===S||y(S)&&(v[S]=t[S]);return v.className=d,a&&(v.ref=a),e.createElement(e.Fragment,null,e.createElement(li,{cache:n,serialized:b,isStringTag:"string"==typeof i}),e.createElement(i,v))});return b.displayName=void 0!==a?a:"Styled("+("string"==typeof s?s:s.displayName||s.name||"Component")+")",b.defaultProps=t.defaultProps,b.__emotion_real=b,b.__emotion_base=s,b.__emotion_styles=p,b.__emotion_forwardProp=l,Object.defineProperty(b,"toString",{value:function value(){return void 0===o&&ni?"NO_COMPONENT_SELECTOR":"."+o}}),b.withComponent=function(e,t){return createStyled(e,_extends({},n,t,{shouldForwardProp:si(b,t,!0)})).apply(void 0,p)},b}},ui=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"],di=ci.bind(null);function isEmpty$2(e){return null==e||0===Object.keys(e).length}function GlobalStyles$2(e){const{styles:t,defaultTheme:n={}}=e;return(0,Ba.jsx)(ti,{styles:"function"==typeof t?e=>t(isEmpty$2(e)?n:e):t})}function styled$1(e,t){return di(e,t)}function internal_mutateStyles(e,t){Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}ui.forEach(function(e){di[e]=di(e)});var pi=[];function internal_serializeStyles(e){return pi[0]=e,serializeStyles(pi)}var mi=__commonJSMin(e=>{Symbol.for("react.transitional.element"),Symbol.for("react.portal");var t=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),o=Symbol.for("react.consumer"),i=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),c=Symbol.for("react.suspense_list"),u=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),p=(Symbol.for("react.view_transition"),Symbol.for("react.client.reference"));e.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===t||e===a||e===n||e===l||e===c||"object"==typeof e&&null!==e&&(e.$$typeof===d||e.$$typeof===u||e.$$typeof===i||e.$$typeof===o||e.$$typeof===s||e.$$typeof===p||void 0!==e.getModuleId)}}),fi=__commonJSMin((e,t)=>{t.exports=mi()})();function isPlainObject$1(e){if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)}function deepClone(e){if(c.isValidElement(e)||(0,fi.isValidElementType)(e)||!isPlainObject$1(e))return e;const t={};return Object.keys(e).forEach(n=>{t[n]=deepClone(e[n])}),t}function deepmerge(e,t,n={clone:!0}){const a=n.clone?{...e}:e;return isPlainObject$1(e)&&isPlainObject$1(t)&&Object.keys(t).forEach(o=>{c.isValidElement(t[o])||(0,fi.isValidElementType)(t[o])?a[o]=t[o]:isPlainObject$1(t[o])&&Object.prototype.hasOwnProperty.call(e,o)&&isPlainObject$1(e[o])?a[o]=deepmerge(e[o],t[o],n):n.clone?a[o]=isPlainObject$1(t[o])?deepClone(t[o]):t[o]:a[o]=t[o]}),a}var sortBreakpointsValues=e=>{const t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>({...e,[t.key]:t.val}),{})};function createBreakpoints(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:a=5,...o}=e,i=sortBreakpointsValues(t),s=Object.keys(i);function up(e){return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n})`}function down(e){return`@media (max-width:${("number"==typeof t[e]?t[e]:e)-a/100}${n})`}function between(e,o){const i=s.indexOf(o);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n}) and (max-width:${(-1!==i&&"number"==typeof t[s[i]]?t[s[i]]:o)-a/100}${n})`}function only(e){return s.indexOf(e)+1<s.length?between(e,s[s.indexOf(e)+1]):up(e)}function not(e){const t=s.indexOf(e);return 0===t?up(s[1]):t===s.length-1?down(s[t]):between(e,s[s.indexOf(e)+1]).replace("@media","@media not all and")}const l=[];for(let c=0;c<s.length;c+=1)l.push(up(s[c]));return{keys:s,values:i,up,down,between,only,not,unit:n,internal_mediaKeys:l,...o}}var gi=/min-width:\s*([0-9.]+)/;function sortContainerQueries(e,t){if(!e.containerQueries||!hasContainerQuery(t))return t;const n=[];for(const o in t)o.startsWith("@container")&&n.push(o);n.sort((e,t)=>+(e.match(gi)?.[1]||0)-+(t.match(gi)?.[1]||0));const a=t;for(let o=0;o<n.length;o+=1){const e=n[o],t=a[e];delete a[e],a[e]=t}return a}function hasContainerQuery(e){for(const t in e)if(t.startsWith("@container"))return!0;return!1}function isCqShorthand(e,t){return"@"===t||t.startsWith("@")&&(e.some(e=>t.startsWith(`@${e}`))||!!t.match(/^@\d/))}function getContainerQuery(e,t){const n=t.match(/^@([^/]+)?\/?(.+)?$/);if(!n)return null;const[,a,o]=n,i=Number.isNaN(+a)?a||0:+a;return e.containerQueries(o).up(i)}function cssContainerQueries(e){const toContainerQuery=(e,t)=>e.replace("@media",t?`@container ${t}`:"@container");function attachCq(t,n){t.up=(...t)=>toContainerQuery(e.breakpoints.up(...t),n),t.down=(...t)=>toContainerQuery(e.breakpoints.down(...t),n),t.between=(...t)=>toContainerQuery(e.breakpoints.between(...t),n),t.only=(...t)=>toContainerQuery(e.breakpoints.only(...t),n),t.not=(...t)=>{const a=toContainerQuery(e.breakpoints.not(...t),n);return a.includes("not all and")?a.replace("not all and ","").replace("min-width:","width<").replace("max-width:","width>").replace("and","or"):a}}const t={},containerQueries=e=>(attachCq(t,e),t);return attachCq(containerQueries),{...e,containerQueries}}var hi={borderRadius:4};function isObjectEmpty$2(e){if(null==e)return!0;for(const t in e)return!1;return!0}function fastDeepAssign(e,t){const n=Array.isArray(t),a=Array.isArray(e);return isPrimitive(t)?t:isPrimitiveOrBuiltIn(e)?clone(t):n&&a?mergeArray(e,t):n!==a?clone(t):mergeObject(e,t)}function cloneArray(e){let t=0;const n=e.length,a=new Array(n);for(t=0;t<n;t+=1)a[t]=clone(e[t]);return a}function cloneObject(e){const t={};for(const n in e)t[n]=clone(e[n]);return t}function mergeArray(e,t){const n=e.length;for(let a=0;a<t.length;a+=1)e[n+a]=clone(t[a]);return e}function isMergeableObject(e){return!("object"!=typeof e||null===e||e instanceof RegExp||e instanceof Date)}function isPrimitive(e){return"object"!=typeof e||null===e}function isPrimitiveOrBuiltIn(e){return"object"!=typeof e||null===e||e instanceof RegExp||e instanceof Date}function clone(e){return isMergeableObject(e)?Array.isArray(e)?cloneArray(e):cloneObject(e):e}function mergeObject(e,t){for(const n in t)e[n]=n in e?fastDeepAssign(e[n],t[n]):clone(t[n]);return e}var bi={},yi={xs:0,sm:600,md:900,lg:1200,xl:1536},vi=createBreakpoints({values:yi}),Si={containerQueries:e=>({up:t=>{let n="number"==typeof t?t:yi[t]||t;return"number"==typeof n&&(n=`${n}px`),e?`@container ${e} (min-width:${n})`:`@container (min-width:${n})`}})};function handleBreakpoints(e,t,n){const a={};return iterateBreakpoints(a,e.theme,t,(e,t,o)=>{const i=n(t,o);e?a[e]=i:fastDeepAssign(a,i)})}function iterateBreakpoints(e,t,n,a){if(t??=bi,Array.isArray(n)){const o=t.breakpoints??vi;for(let t=0;t<n.length;t+=1)buildBreakpoint(e,o.up(o.keys[t]),n[t],void 0,a);return e}if("object"==typeof n){const o=t.breakpoints??vi,i=o.values??yi;for(const s in n)if(isCqShorthand(o.keys,s)){const o=getContainerQuery(t.containerQueries?t:Si,s);o&&buildBreakpoint(e,o,n[s],s,a)}else if(s in i)buildBreakpoint(e,o.up(s),n[s],s,a);else{const t=s;e[t]=n[t]}return e}return a(void 0,n),e}function buildBreakpoint(e,t,n,a,o){e[t]??={},o(t,n,a)}function createEmptyBreakpointObject(e=vi){const{internal_mediaKeys:t}=e,n={};for(let a=0;a<t.length;a+=1)n[t[a]]={};return n}function removeUnusedBreakpoints(e,t){const n=e.internal_mediaKeys;for(let a=0;a<n.length;a+=1){const e=n[a];isObjectEmpty$2(t[e])&&delete t[e]}return t}function hasBreakpoint(e,t){if(Array.isArray(t))return!0;if("object"==typeof t&&null!==t){for(let a=0;a<e.keys.length;a+=1)if(e.keys[a]in t)return!0;const n=Object.keys(t);for(let t=0;t<n.length;t+=1)if(isCqShorthand(e.keys,n[t]))return!0}return!1}function capitalize$1(e){if("string"!=typeof e)throw new Error(formatMuiErrorMessage(7));return e.charAt(0).toUpperCase()+e.slice(1)}function getStyleValue2(e,t,n,a){let o;return o="function"==typeof e?e(n):Array.isArray(e)?e[n]||n:"string"==typeof n&&getPath(e,n,!0,a)||n,t&&(o=t(o,n,e)),o}function getPath(e,t,n=!0,a=void 0){if(!e||!t)return null;const o=t.split(".");if(e.vars&&n){const t=getPathImpl(e.vars,o,a);if(null!=t)return t}return getPathImpl(e,o,a)}function getPathImpl(e,t,n=void 0){let a,o=e,i=0;for(;i<t.length;){if(null==o)return o;a=o,o=o[t[i]],i+=1}if(n&&void 0===o){const e=t[t.length-1],o=`${n}${"default"===e?"":capitalize$1(e)}`;return a?.[o]}return o}function style$1(e){const{prop:t,cssProperty:n=e.prop,themeKey:a,transform:o}=e,fn=e=>{if(null==e[t])return null;const i=e[t],s=getPath(e.theme,a)||{};return handleBreakpoints(e,i,e=>{const a=getStyleValue2(s,o,e,t);return!1===n?a:{[n]:a}})};return fn.propTypes={},fn.filterProps=[t],fn}var xi={internal_cache:{}},Ci={m:"margin",p:"padding"},wi={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},ki={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},Ei={};for(const Lg in Ci)Ei[Lg]=[Ci[Lg]];for(const Lg in Ci)for(const e in wi){const t=Ci[Lg],n=wi[e],a=Array.isArray(n)?n.map(e=>t+e):[t+n];Ei[Lg+e]=a}for(const Lg in ki)Ei[Lg]=Ei[ki[Lg]];var _i=new Set(["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"]),Pi=new Set(["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"]),Ti=new Set([..._i,...Pi]);function createUnaryUnit(e,t,n,a){const o=getPath(e,t,!0)??n;return"number"==typeof o||"string"==typeof o?e=>"string"==typeof e?e:"string"==typeof o?o.startsWith("var(")&&0===e?0:o.startsWith("var(")&&1===e?o:`calc(${e} * ${o})`:o*e:Array.isArray(o)?e=>{if("string"==typeof e)return e;const t=o[Math.abs(e)];return e>=0?t:"number"==typeof t?-t:"string"==typeof t&&t.startsWith("var(")?`calc(-1 * ${t})`:`-${t}`}:"function"==typeof o?o:()=>{}}function createUnarySpacing(e){return createUnaryUnit(e,"spacing",8,"spacing")}function getValue(e,t){return"string"==typeof t||null==t?t:e(t)}var Ai=[""];function style(e,t){const n=e.theme??xi,a=n?.internal_cache?.unarySpacing??createUnarySpacing(n),o={};for(const i in e){if(!t.has(i))continue;const n=Ei[i]??(Ai[0]=i,Ai),s=e[i];iterateBreakpoints(o,e.theme,s,(e,t)=>{const i=e?o[e]:o;for(let o=0;o<n.length;o+=1)i[n[o]]=getValue(a,t)})}return o}function margin(e){return style(e,_i)}function padding(e){return style(e,Pi)}function spacing(e){return style(e,Ti)}function createSpacing(e=8,t=createUnarySpacing({spacing:e})){if(e.mui)return e;const spacing=(...e)=>(0===e.length?[1]:e).map(e=>{const n=t(e);return"number"==typeof n?`${n}px`:n}).join(" ");return spacing.mui=!0,spacing}function compose(...e){const t=e.reduce((e,t)=>(t.filterProps.forEach(n=>{e[n]=t}),e),{}),fn=e=>{const n={};for(const a in e)t[a]&&fastDeepAssign(n,t[a](e));return n};return fn.propTypes={},fn.filterProps=e.reduce((e,t)=>e.concat(t.filterProps),[]),fn}function borderTransform(e){return"number"!=typeof e?e:`${e}px solid`}function createBorderStyle(e,t){return style$1({prop:e,themeKey:"borders",transform:t})}margin.propTypes={},margin.filterProps=_i,padding.propTypes={},padding.filterProps=Pi,spacing.propTypes={},spacing.filterProps=Ti;var Ri=createBorderStyle("border",borderTransform),Mi=createBorderStyle("borderTop",borderTransform),Di=createBorderStyle("borderRight",borderTransform),Oi=createBorderStyle("borderBottom",borderTransform),$i=createBorderStyle("borderLeft",borderTransform),Ii=createBorderStyle("borderColor"),Ni=createBorderStyle("borderTopColor"),zi=createBorderStyle("borderRightColor"),Li=createBorderStyle("borderBottomColor"),ji=createBorderStyle("borderLeftColor"),Bi=createBorderStyle("outline",borderTransform),Fi=createBorderStyle("outlineColor"),borderRadius=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){const t=createUnaryUnit(e.theme,"shape.borderRadius",4,"borderRadius"),styleFromPropValue=e=>({borderRadius:getValue(t,e)});return handleBreakpoints(e,e.borderRadius,styleFromPropValue)}return null};borderRadius.propTypes={},borderRadius.filterProps=["borderRadius"];compose(Ri,Mi,Di,Oi,$i,Ii,Ni,zi,Li,ji,borderRadius,Bi,Fi);var gap=e=>{if(void 0!==e.gap&&null!==e.gap){const t=createUnaryUnit(e.theme,"spacing",8,"gap"),styleFromPropValue=e=>({gap:getValue(t,e)});return handleBreakpoints(e,e.gap,styleFromPropValue)}return null};gap.propTypes={},gap.filterProps=["gap"];var columnGap=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){const t=createUnaryUnit(e.theme,"spacing",8,"columnGap"),styleFromPropValue=e=>({columnGap:getValue(t,e)});return handleBreakpoints(e,e.columnGap,styleFromPropValue)}return null};columnGap.propTypes={},columnGap.filterProps=["columnGap"];var rowGap=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){const t=createUnaryUnit(e.theme,"spacing",8,"rowGap"),styleFromPropValue=e=>({rowGap:getValue(t,e)});return handleBreakpoints(e,e.rowGap,styleFromPropValue)}return null};rowGap.propTypes={},rowGap.filterProps=["rowGap"];compose(gap,columnGap,rowGap,style$1({prop:"gridColumn"}),style$1({prop:"gridRow"}),style$1({prop:"gridAutoFlow"}),style$1({prop:"gridAutoColumns"}),style$1({prop:"gridAutoRows"}),style$1({prop:"gridTemplateColumns"}),style$1({prop:"gridTemplateRows"}),style$1({prop:"gridTemplateAreas"}),style$1({prop:"gridArea"}));function paletteTransform(e,t){return"grey"===t?t:e}compose(style$1({prop:"color",themeKey:"palette",transform:paletteTransform}),style$1({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:paletteTransform}),style$1({prop:"backgroundColor",themeKey:"palette",transform:paletteTransform}));function sizingTransform(e){return e<=1&&0!==e?100*e+"%":e}var qi=style$1({prop:"width",transform:sizingTransform}),maxWidth=e=>{if(void 0!==e.maxWidth&&null!==e.maxWidth){const styleFromPropValue=t=>{const n=e.theme?.breakpoints?.values?.[t]||yi[t];return n?"px"!==e.theme?.breakpoints?.unit?{maxWidth:`${n}${e.theme.breakpoints.unit}`}:{maxWidth:n}:{maxWidth:sizingTransform(t)}};return handleBreakpoints(e,e.maxWidth,styleFromPropValue)}return null};maxWidth.filterProps=["maxWidth"];var Ui=style$1({prop:"minWidth",transform:sizingTransform}),Vi=style$1({prop:"height",transform:sizingTransform}),Hi=style$1({prop:"maxHeight",transform:sizingTransform}),Wi=style$1({prop:"minHeight",transform:sizingTransform}),Gi=(style$1({prop:"size",cssProperty:"width",transform:sizingTransform}),style$1({prop:"size",cssProperty:"height",transform:sizingTransform}),compose(qi,maxWidth,Ui,Vi,Hi,Wi,style$1({prop:"boxSizing"})),{border:{themeKey:"borders",transform:borderTransform},borderTop:{themeKey:"borders",transform:borderTransform},borderRight:{themeKey:"borders",transform:borderTransform},borderBottom:{themeKey:"borders",transform:borderTransform},borderLeft:{themeKey:"borders",transform:borderTransform},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:borderTransform},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:borderRadius},color:{themeKey:"palette",transform:paletteTransform},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:paletteTransform},backgroundColor:{themeKey:"palette",transform:paletteTransform},p:{style:padding},pt:{style:padding},pr:{style:padding},pb:{style:padding},pl:{style:padding},px:{style:padding},py:{style:padding},padding:{style:padding},paddingTop:{style:padding},paddingRight:{style:padding},paddingBottom:{style:padding},paddingLeft:{style:padding},paddingX:{style:padding},paddingY:{style:padding},paddingInline:{style:padding},paddingInlineStart:{style:padding},paddingInlineEnd:{style:padding},paddingBlock:{style:padding},paddingBlockStart:{style:padding},paddingBlockEnd:{style:padding},m:{style:margin},mt:{style:margin},mr:{style:margin},mb:{style:margin},ml:{style:margin},mx:{style:margin},my:{style:margin},margin:{style:margin},marginTop:{style:margin},marginRight:{style:margin},marginBottom:{style:margin},marginLeft:{style:margin},marginX:{style:margin},marginY:{style:margin},marginInline:{style:margin},marginInlineStart:{style:margin},marginInlineEnd:{style:margin},marginBlock:{style:margin},marginBlockStart:{style:margin},marginBlockEnd:{style:margin},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:gap},rowGap:{style:rowGap},columnGap:{style:columnGap},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:sizingTransform},maxWidth:{style:maxWidth},minWidth:{transform:sizingTransform},height:{transform:sizingTransform},maxHeight:{transform:sizingTransform},minHeight:{transform:sizingTransform},boxSizing:{},font:{themeKey:"font"},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}}),Yi={};function unstable_createStyleFunctionSx(){function styleFunctionSx(e){if(!e.sx)return null;const{sx:t,theme:n=Yi,nested:a}=e,o=n.unstable_sxConfig??Gi,i={sx:null,theme:n,nested:!0};function process(t){let s=t;if("function"==typeof t)s=t(n);else if("object"!=typeof t)return t;if(!s)return null;const l=n.breakpoints??vi,c=createEmptyBreakpointObject(l);for(const a in s){const t=callIfFn(s[a],n);null!=t&&("object"==typeof t?o[a]?setThemeValue(c,a,t,n,o):hasBreakpoint(l,t)?iterateBreakpoints(c,e.theme,t,(e,t)=>{c[e][a]=t}):(i.sx=t,c[a]=styleFunctionSx(i)):setThemeValue(c,a,t,n,o))}return!a&&n.modularCssLayers?{"@layer sx":sortContainerQueries(n,removeUnusedBreakpoints(l,c))}:sortContainerQueries(n,removeUnusedBreakpoints(l,c))}return Array.isArray(t)?t.map(process):process(t)}return styleFunctionSx.filterProps=["sx"],styleFunctionSx}var Ki=unstable_createStyleFunctionSx();function setThemeValue(e,t,n,a,o){const i=o[t];if(!i)return void(e[t]=n);if(null==n)return;const{themeKey:s}=i;if("typography"===s&&"inherit"===n)return void(e[t]=n);const{style:l}=i;if(l)return void fastDeepAssign(e,l({[t]:n,theme:a}));const{cssProperty:c=t,transform:u}=i,d=getPath(a,s);iterateBreakpoints(e,a,n,(n,a)=>{const o=getStyleValue2(d,u,a,t);!1===c?fastDeepAssign(n?e[n]:e,o):n?e[n][c]=o:e[c]=o})}function callIfFn(e,t){return"function"==typeof e?e(t):e}function applyStyles$1(e,t){const n=this;if(n.vars){if(!n.colorSchemes?.[e]||"function"!=typeof n.getColorSchemeSelector)return{};let a=n.getColorSchemeSelector(e);return"&"===a?t:((a.includes("data-")||a.includes("."))&&(a=`*:where(${a.replace(/\s*&$/,"")}) &`),{[a]:t})}return n.palette.mode===e?t:{}}function createTheme$1(e={},...t){const{breakpoints:n={},palette:a={},spacing:o,shape:i={},...s}=e;let l=deepmerge({breakpoints:createBreakpoints(n),direction:"ltr",components:{},palette:{mode:"light",...a},spacing:createSpacing(o),shape:{...hi,...i}},s);return l=cssContainerQueries(l),l.applyStyles=applyStyles$1,l=t.reduce((e,t)=>deepmerge(e,t),l),l.unstable_sxConfig={...Gi,...s?.unstable_sxConfig},l.unstable_sx=function sx(e){return Ki({sx:e,theme:this})},l.internal_cache={},l}function isObjectEmpty$1(e){return 0===Object.keys(e).length}function useTheme$3(e=null){const t=c.useContext(Yo);return!t||isObjectEmpty$1(t)?e:t}var Qi=createTheme$1();function useTheme$2(e=Qi){return useTheme$3(e)}function wrapGlobalLayer(e){const t=internal_serializeStyles(e);return e!==t&&t.styles?(t.styles.match(/^@layer\s+[^{]*$/)||(t.styles=`@layer global{${t.styles}}`),t):e}function GlobalStyles$1({styles:e,themeId:t,defaultTheme:n={}}){const a=useTheme$2(n),o=t&&a[t]||a;let i="function"==typeof e?e(o):e;return o.modularCssLayers&&(i=Array.isArray(i)?i.map(e=>wrapGlobalLayer("function"==typeof e?e(o):e)):wrapGlobalLayer(i)),(0,Ba.jsx)(GlobalStyles$2,{styles:i})}var defaultGenerator=e=>e,Zi=(()=>{let e=defaultGenerator;return{configure(t){e=t},generate:t=>e(t),reset(){e=defaultGenerator}}})();function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n)}else for(n in e)e[n]&&(a&&(a+=" "),a+=n);return a}function clsx(){for(var e,t,n=0,a="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}function createBox(e={}){const{themeId:t,defaultTheme:n,defaultClassName:a="MuiBox-root",generateClassName:o}=e,i=styled$1("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(Ki);return c.forwardRef(function Box(e,s){const l=useTheme$2(n),{className:c,component:u="div",...d}=e;return(0,Ba.jsx)(i,{as:u,ref:s,className:clsx(c,o?o(a):a),theme:t&&l[t]||l,...d})})}var Xi={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function generateUtilityClass(e,t,n="Mui"){const a=Xi[t];return a?`${n}-${a}`:`${Zi.generate(e)}-${t}`}function generateUtilityClasses(e,t,n="Mui"){const a={};return t.forEach(t=>{a[t]=generateUtilityClass(e,t,n)}),a}function preprocessStyles(e){const{variants:t,...n}=e,a={variants:t,style:internal_serializeStyles(n),isProcessed:!0};return a.style===n||t&&t.forEach(e=>{"function"!=typeof e.style&&(e.style=internal_serializeStyles(e.style))}),a}var Ji=createTheme$1();function shouldForwardProp(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}function shallowLayer(e,t){return t&&e&&"object"==typeof e&&e.styles&&!e.styles.startsWith("@layer")&&(e.styles=`@layer ${t}{${String(e.styles)}}`),e}function defaultOverridesResolver(e){return e?(t,n)=>n[e]:null}function attachTheme(e,t,n){e.theme=isObjectEmpty$2(e.theme)?n:e.theme[t]||e.theme}function processStyle(e,t,n){const a="function"==typeof t?t(e):t;if(Array.isArray(a))return a.flatMap(t=>processStyle(e,t,n));if(Array.isArray(a?.variants)){let t;if(a.isProcessed)t=n?shallowLayer(a.style,n):a.style;else{const{variants:e,...o}=a;t=n?shallowLayer(internal_serializeStyles(o),n):o}return processStyleVariants(e,a.variants,[t],n)}return a?.isProcessed?n?shallowLayer(internal_serializeStyles(a.style),n):a.style:n?shallowLayer(internal_serializeStyles(a),n):a}function processStyleVariants(e,t,n=[],a=void 0){let o;e:for(let i=0;i<t.length;i+=1){const s=t[i];if("function"==typeof s.props){if(o??={...e,...e.ownerState,ownerState:e.ownerState},!s.props(o))continue}else for(const t in s.props)if(e[t]!==s.props[t]&&e.ownerState?.[t]!==s.props[t])continue e;"function"==typeof s.style?(o??={...e,...e.ownerState,ownerState:e.ownerState},n.push(a?shallowLayer(internal_serializeStyles(s.style(o)),a):s.style(o))):n.push(a?shallowLayer(internal_serializeStyles(s.style),a):s.style)}return n}function createStyled(e={}){const{themeId:t,defaultTheme:n=Ji,rootShouldForwardProp:a=shouldForwardProp,slotShouldForwardProp:o=shouldForwardProp}=e;function styleAttachTheme(e){attachTheme(e,t,n)}const styled=(e,t={})=>{internal_mutateStyles(e,e=>e.filter(e=>e!==Ki));const{name:n,slot:i,skipVariantsResolver:s,skipSx:l,overridesResolver:c=defaultOverridesResolver(lowercaseFirstLetter(i)),...u}=t,d=n&&n.startsWith("Mui")||i?"components":"custom",p=void 0!==s?s:i&&"Root"!==i&&"root"!==i||!1,m=l||!1;let g=shouldForwardProp;"Root"===i||"root"===i?g=a:i?g=o:isStringTag(e)&&(g=void 0);const h=styled$1(e,{shouldForwardProp:g,label:generateStyledLabel(n,i),...u}),transformStyle=e=>{if(e.__emotion_real===e)return e;if("function"==typeof e)return function styleFunctionProcessor(t){return processStyle(t,e,t.theme.modularCssLayers?d:void 0)};if(isPlainObject$1(e)){const t=preprocessStyles(e);return function styleObjectProcessor(e){return t.variants?processStyle(e,t,e.theme.modularCssLayers?d:void 0):e.theme.modularCssLayers?shallowLayer(t.style,d):t.style}}return e},muiStyledResolver=(...t)=>{const a=[],o=t.map(transformStyle),i=[];if(a.push(styleAttachTheme),n&&c&&i.push(function styleThemeOverrides(e){const t=e.theme.components?.[n]?.styleOverrides;if(!t)return null;const a={};for(const n in t)a[n]=processStyle(e,t[n],e.theme.modularCssLayers?"theme":void 0);return c(e,a)}),n&&!p&&i.push(function styleThemeVariants(e){const t=e.theme?.components?.[n]?.variants;return t?processStyleVariants(e,t,[],e.theme.modularCssLayers?"theme":void 0):null}),m||i.push(Ki),Array.isArray(o[0])){const e=o.shift(),t=new Array(a.length).fill(""),n=new Array(i.length).fill("");let s;s=[...t,...e,...n],s.raw=[...t,...e.raw,...n],a.unshift(s)}const s=h(...a,...o,...i);return e.muiName&&(s.muiName=e.muiName),s};return h.withConfig&&(muiStyledResolver.withConfig=h.withConfig),muiStyledResolver};return styled}function generateStyledLabel(e,t){let n;return n}function isStringTag(e){return"string"==typeof e&&e.charCodeAt(0)>96}function lowercaseFirstLetter(e){return e?e.charAt(0).toLowerCase()+e.slice(1):e}function resolveProps(e,t,n=!1){const a={...t};for(const o in e)if(Object.prototype.hasOwnProperty.call(e,o)){const i=o;if("components"===i||"slots"===i)a[i]={...e[i],...a[i]};else if("componentsProps"===i||"slotProps"===i){const o=e[i],s=t[i];if(s)if(o){a[i]={...s};for(const e in o)if(Object.prototype.hasOwnProperty.call(o,e)){const t=e;a[i][t]=resolveProps(o[t],s[t],n)}}else a[i]=s;else a[i]=o||{}}else"className"===i&&n&&void 0!==t.className?a.className=clsx(e?.className,t?.className):"style"===i&&n&&t.style?a.style={...e?.style,...t?.style}:void 0===a[i]&&(a[i]=e[i])}return a}var es="undefined"!=typeof window?c.useLayoutEffect:c.useEffect;function clamp(e,t=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,n))}function clampWrapper(e,t=0,n=1){return clamp(e,t,n)}function hexToRgb(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let n=e.match(t);return n&&1===n[0].length&&(n=n.map(e=>e+e)),n?`rgb${4===n.length?"a":""}(${n.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(", ")})`:""}function decomposeColor(e){if(e.type)return e;if("#"===e.charAt(0))return decomposeColor(hexToRgb(e));const t=e.indexOf("("),n=e.substring(0,t);if(!["rgb","rgba","hsl","hsla","color"].includes(n))throw new Error(formatMuiErrorMessage(9,e));let a,o=e.substring(t+1,e.length-1);if("color"===n){if(o=o.split(" "),a=o.shift(),4===o.length&&"/"===o[3].charAt(0)&&(o[3]=o[3].slice(1)),!["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].includes(a))throw new Error(formatMuiErrorMessage(10,a))}else o=o.split(",");return o=o.map(e=>parseFloat(e)),{type:n,values:o,colorSpace:a}}var colorChannel=e=>{const t=decomposeColor(e);return t.values.slice(0,3).map((e,n)=>t.type.includes("hsl")&&0!==n?`${e}%`:e).join(" ")},private_safeColorChannel=(e,t)=>{try{return colorChannel(e)}catch(n){return e}};function recomposeColor(e){const{type:t,colorSpace:n}=e;let{values:a}=e;return t.includes("rgb")?a=a.map((e,t)=>t<3?parseInt(e,10):e):t.includes("hsl")&&(a[1]=`${a[1]}%`,a[2]=`${a[2]}%`),a=t.includes("color")?`${n} ${a.join(" ")}`:`${a.join(", ")}`,`${t}(${a})`}function hslToRgb(e){e=decomposeColor(e);const{values:t}=e,n=t[0],a=t[1]/100,o=t[2]/100,i=a*Math.min(o,1-o),f=(e,t=(e+n/30)%12)=>o-i*Math.max(Math.min(t-3,9-t,1),-1);let s="rgb";const l=[Math.round(255*f(0)),Math.round(255*f(8)),Math.round(255*f(4))];return"hsla"===e.type&&(s+="a",l.push(t[3])),recomposeColor({type:s,values:l})}function getLuminance(e){let t="hsl"===(e=decomposeColor(e)).type||"hsla"===e.type?decomposeColor(hslToRgb(e)).values:e.values;return t=t.map(t=>("color"!==e.type&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4)),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function getContrastRatio(e,t){const n=getLuminance(e),a=getLuminance(t);return(Math.max(n,a)+.05)/(Math.min(n,a)+.05)}function alpha(e,t){return e=decomposeColor(e),t=clampWrapper(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,recomposeColor(e)}function private_safeAlpha(e,t,n){try{return alpha(e,t)}catch(a){return e}}function darken(e,t){if(e=decomposeColor(e),t=clampWrapper(t),e.type.includes("hsl"))e.values[2]*=1-t;else if(e.type.includes("rgb")||e.type.includes("color"))for(let n=0;n<3;n+=1)e.values[n]*=1-t;return recomposeColor(e)}function private_safeDarken(e,t,n){try{return darken(e,t)}catch(a){return e}}function lighten(e,t){if(e=decomposeColor(e),t=clampWrapper(t),e.type.includes("hsl"))e.values[2]+=(100-e.values[2])*t;else if(e.type.includes("rgb"))for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(e.type.includes("color"))for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return recomposeColor(e)}function private_safeLighten(e,t,n){try{return lighten(e,t)}catch(a){return e}}function emphasize(e,t=.15){return getLuminance(e)>.5?darken(e,t):lighten(e,t)}function private_safeEmphasize(e,t,n){try{return emphasize(e,t)}catch(a){return e}}var ts=c.createContext(null);function useTheme$1(){return c.useContext(ts)}var rs="function"==typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__";function mergeOuterLocalTheme(e,t){return"function"==typeof t?t(e):{...e,...t}}function ThemeProvider$2(e){const{children:t,theme:n}=e,a=useTheme$1(),o=c.useMemo(()=>{const e=null===a?{...n}:mergeOuterLocalTheme(a,n);return null!=e&&(e[rs]=null!==a),e},[n,a]);return(0,Ba.jsx)(ts.Provider,{value:o,children:t})}var ns=c.createContext();function RtlProvider({value:e,...t}){return(0,Ba.jsx)(ns.Provider,{value:e??!0,...t})}var useRtl=()=>c.useContext(ns)??!1,as=c.createContext(void 0);function DefaultPropsProvider({value:e,children:t}){return(0,Ba.jsx)(as.Provider,{value:e,children:t})}function getThemeProps(e){const{theme:t,name:n,props:a}=e;if(!t||!t.components||!t.components[n])return a;const o=t.components[n];return o.defaultProps?resolveProps(o.defaultProps,a,t.components.mergeClassNameAndStyle):o.styleOverrides||o.variants?a:resolveProps(o,a,t.components.mergeClassNameAndStyle)}function useDefaultProps$1({props:e,name:t}){return getThemeProps({props:e,name:t,theme:{components:c.useContext(as)}})}var os=0;function useGlobalId(e){const[t,n]=c.useState(e),a=e||t;return c.useEffect(()=>{null==t&&n(`mui-${os+=1}`)},[t]),a}var ss={...c}.useId;function useId(e){if(void 0!==ss){const t=ss();return e??t}return useGlobalId(e)}function useLayerOrder(e){const t=useTheme$3(),n=useId()||"",{modularCssLayers:a}=e;let o="mui.global, mui.components, mui.theme, mui.custom, mui.sx";return o=a&&null===t?"string"==typeof a?a.replace(/mui(?!\.)/g,o):`@layer ${o};`:"",es(()=>{const e=document.querySelector("head");if(!e)return;const t=e.firstChild;if(o){if(t&&t.hasAttribute?.("data-mui-layer-order")&&t.getAttribute("data-mui-layer-order")===n)return;const a=document.createElement("style");a.setAttribute("data-mui-layer-order",n),a.textContent=o,e.prepend(a)}else e.querySelector(`style[data-mui-layer-order="${n}"]`)?.remove()},[o,n]),o?(0,Ba.jsx)(GlobalStyles$1,{styles:o}):null}var ls={};function useThemeScoping(e,t,n,a=!1){return c.useMemo(()=>{const o=e&&t[e]||t;if("function"==typeof n){const i=n(o),s=e?{...t,[e]:i}:i;return a?()=>s:s}return e?{...t,[e]:n}:{...t,...n}},[e,t,n,a])}function ThemeProvider$1(e){const{children:t,theme:n,themeId:a}=e,o=useTheme$3(ls),i=useTheme$1()||ls,s=useThemeScoping(a,o,n),l=useThemeScoping(a,i,n,!0),c="rtl"===(a?s[a]:s).direction,u=useLayerOrder(s);return(0,Ba.jsx)(ThemeProvider$2,{theme:l,children:(0,Ba.jsx)(Yo.Provider,{value:s,children:(0,Ba.jsx)(RtlProvider,{value:c,children:(0,Ba.jsxs)(DefaultPropsProvider,{value:a?s[a].components:s.components,children:[u,t]})})})})}var cs={theme:void 0};function unstable_memoTheme(e){let t,n;return function styleMemoized(a){let o=t;return void 0!==o&&a.theme===n||(cs.theme=a.theme,o=preprocessStyles(e(cs)),t=o,n=a.theme),o}}var us="mode",ds="color-scheme",ps="data-color-scheme";function InitColorSchemeScript(e){const{defaultMode:t="system",defaultLightColorScheme:n="light",defaultDarkColorScheme:a="dark",modeStorageKey:o=us,colorSchemeStorageKey:i=ds,attribute:s=ps,colorSchemeNode:l="document.documentElement",nonce:c}=e||{};let u="",d=s;if("class"===s&&(d=".%s"),"data"===s&&(d="[data-%s]"),d.startsWith(".")){const e=d.substring(1);u+=`${l}.classList.remove('${e}'.replace('%s', light), '${e}'.replace('%s', dark));\n ${l}.classList.add('${e}'.replace('%s', colorScheme));`}const p=d.match(/\[([^[\]]+)\]/);if(p){const[e,t]=p[1].split("=");t||(u+=`${l}.removeAttribute('${e}'.replace('%s', light));\n ${l}.removeAttribute('${e}'.replace('%s', dark));`),u+=`\n ${l}.setAttribute('${e}'.replace('%s', colorScheme), ${t?`${t}.replace('%s', colorScheme)`:'""'});`}else".%s"!==d&&(u+=`${l}.setAttribute('${d}', colorScheme);`);return(0,Ba.jsx)("script",{suppressHydrationWarning:!0,nonce:"undefined"==typeof window?c:"",dangerouslySetInnerHTML:{__html:`(function() {\ntry {\n let colorScheme = '';\n const mode = localStorage.getItem('${o}') || '${t}';\n const dark = localStorage.getItem('${i}-dark') || '${a}';\n const light = localStorage.getItem('${i}-light') || '${n}';\n if (mode === 'system') {\n // handle system mode\n const mql = window.matchMedia('(prefers-color-scheme: dark)');\n if (mql.matches) {\n colorScheme = dark\n } else {\n colorScheme = light\n }\n }\n if (mode === 'light') {\n colorScheme = light;\n }\n if (mode === 'dark') {\n colorScheme = dark;\n }\n if (colorScheme) {\n ${u}\n }\n} catch(e){}})();`}},"mui-color-scheme-init")}function noop$4(){}var localStorageManager=({key:e,storageWindow:t})=>(t||"undefined"==typeof window||(t=window),{get(n){if("undefined"==typeof window)return;if(!t)return n;let a;try{a=t.localStorage.getItem(e)}catch{}return a||n},set:n=>{if(t)try{t.localStorage.setItem(e,n)}catch{}},subscribe:n=>{if(!t)return noop$4;const listener=t=>{const a=t.newValue;t.key===e&&n(a)};return t.addEventListener("storage",listener),()=>{t.removeEventListener("storage",listener)}}});function noop$3(){}function getSystemMode(e){if("undefined"!=typeof window&&"function"==typeof window.matchMedia&&"system"===e)return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function processState(e,t){return"light"===e.mode||"system"===e.mode&&"light"===e.systemMode?t("light"):"dark"===e.mode||"system"===e.mode&&"dark"===e.systemMode?t("dark"):void 0}function getColorScheme(e){return processState(e,t=>"light"===t?e.lightColorScheme:"dark"===t?e.darkColorScheme:void 0)}function useCurrentColorScheme(e){const{defaultMode:t="light",defaultLightColorScheme:n,defaultDarkColorScheme:a,supportedColorSchemes:o=[],modeStorageKey:i=us,colorSchemeStorageKey:s=ds,storageWindow:l=("undefined"==typeof window?void 0:window),storageManager:u=localStorageManager,noSsr:d=!1}=e,p=o.join(","),m=o.length>1,g=c.useMemo(()=>u?.({key:i,storageWindow:l}),[u,i,l]),h=c.useMemo(()=>u?.({key:`${s}-light`,storageWindow:l}),[u,s,l]),b=c.useMemo(()=>u?.({key:`${s}-dark`,storageWindow:l}),[u,s,l]),[y,v]=c.useState(()=>{const e=g?.get(t)||t,o=h?.get(n)||n,i=b?.get(a)||a;return{mode:e,systemMode:getSystemMode(e),lightColorScheme:o,darkColorScheme:i}}),[S,x]=c.useState(d||!m);c.useEffect(()=>{x(!0)},[]);const C=getColorScheme(y),w=c.useCallback(e=>{v(n=>{if(e===n.mode)return n;const a=e??t;return g?.set(a),{...n,mode:a,systemMode:getSystemMode(a)}})},[g,t]),k=c.useCallback(e=>{e?"string"==typeof e?e&&!p.includes(e)?console.error(`\`${e}\` does not exist in \`theme.colorSchemes\`.`):v(t=>{const n={...t};return processState(t,t=>{"light"===t&&(h?.set(e),n.lightColorScheme=e),"dark"===t&&(b?.set(e),n.darkColorScheme=e)}),n}):v(t=>{const o={...t},i=null===e.light?n:e.light,s=null===e.dark?a:e.dark;return i&&(p.includes(i)?(o.lightColorScheme=i,h?.set(i)):console.error(`\`${i}\` does not exist in \`theme.colorSchemes\`.`)),s&&(p.includes(s)?(o.darkColorScheme=s,b?.set(s)):console.error(`\`${s}\` does not exist in \`theme.colorSchemes\`.`)),o}):v(e=>(h?.set(n),b?.set(a),{...e,lightColorScheme:n,darkColorScheme:a}))},[p,h,b,n,a]),E=c.useCallback(e=>{"system"===y.mode&&v(t=>{const n=e?.matches?"dark":"light";return t.systemMode===n?t:{...t,systemMode:n}})},[y.mode]),P=c.useRef(E);return P.current=E,c.useEffect(()=>{if("function"!=typeof window.matchMedia||!m)return;const handler=(...e)=>P.current(...e),e=window.matchMedia("(prefers-color-scheme: dark)");return e.addListener(handler),handler(e),()=>{e.removeListener(handler)}},[m]),c.useEffect(()=>{if(m){const e=g?.subscribe(e=>{e&&!["light","dark","system"].includes(e)||w(e||t)})||noop$3,n=h?.subscribe(e=>{e&&!p.match(e)||k({light:e})})||noop$3,a=b?.subscribe(e=>{e&&!p.match(e)||k({dark:e})})||noop$3;return()=>{e(),n(),a()}}},[k,w,p,t,l,m,g,h,b]),{...y,mode:S?y.mode:void 0,systemMode:S?y.systemMode:void 0,colorScheme:S?C:void 0,setMode:w,setColorScheme:k}}var ms="*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function createCssVarsProvider(e){const{themeId:t,theme:n={},modeStorageKey:a=us,colorSchemeStorageKey:o=ds,disableTransitionOnChange:i=!1,defaultColorScheme:s,resolveTheme:l}=e,u={allColorSchemes:[],colorScheme:void 0,darkColorScheme:void 0,lightColorScheme:void 0,mode:void 0,setColorScheme:()=>{},setMode:()=>{},systemMode:void 0},d=c.createContext(void 0),useColorScheme=()=>c.useContext(d)||u,p={},m={};function CssVarsProvider(e){const{children:u,theme:g,modeStorageKey:h=a,colorSchemeStorageKey:b=o,disableTransitionOnChange:y=i,storageManager:v,storageWindow:S=("undefined"==typeof window?void 0:window),documentNode:x=("undefined"==typeof document?void 0:document),colorSchemeNode:C=("undefined"==typeof document?void 0:document.documentElement),disableNestedContext:w=!1,disableStyleSheetGeneration:k=!1,defaultMode:E="system",forceThemeRerender:P=!1,noSsr:T}=e,R=c.useRef(!1),M=useTheme$1(),D=c.useContext(d),O=!!D&&!w,$=c.useMemo(()=>g||("function"==typeof n?n():n),[g]),I=$[t],N=I||$,{colorSchemes:L=p,components:j=m,cssVarPrefix:B}=N,F=Object.keys(L).filter(e=>!!L[e]).join(","),q=c.useMemo(()=>F.split(","),[F]),U="string"==typeof s?s:s.light,V="string"==typeof s?s:s.dark,{mode:H,setMode:W,systemMode:G,lightColorScheme:Y,darkColorScheme:K,colorScheme:Q,setColorScheme:Z}=useCurrentColorScheme({supportedColorSchemes:q,defaultLightColorScheme:U,defaultDarkColorScheme:V,modeStorageKey:h,colorSchemeStorageKey:b,defaultMode:L[U]&&L[V]?E:L[N.defaultColorScheme]?.palette?.mode||N.palette?.mode,storageManager:v,storageWindow:S,noSsr:T});let X=H,J=Q;O&&(X=D.mode,J=D.colorScheme);let ee=J||N.defaultColorScheme;N.vars&&!P&&(ee=N.defaultColorScheme);const te=c.useMemo(()=>{const e=N.generateThemeVars?.()||N.vars,t={...N,components:j,colorSchemes:L,cssVarPrefix:B,vars:e};if("function"==typeof t.generateSpacing&&(t.spacing=t.generateSpacing()),ee){const e=L[ee];e&&"object"==typeof e&&Object.keys(e).forEach(n=>{e[n]&&"object"==typeof e[n]?t[n]={...t[n],...e[n]}:t[n]=e[n]})}return l?l(t):t},[N,ee,j,L,B]),re=N.colorSchemeSelector;es(()=>{if(J&&C&&re&&"media"!==re){const e=re;let t=re;if("class"===e&&(t=".%s"),"data"===e&&(t="[data-%s]"),e?.startsWith("data-")&&!e.includes("%s")&&(t=`[${e}="%s"]`),t.startsWith("."))C.classList.remove(...q.map(e=>t.substring(1).replace("%s",e))),C.classList.add(t.substring(1).replace("%s",J));else{const e=t.replace("%s",J).match(/\[([^\]]+)\]/);if(e){const[t,n]=e[1].split("=");n||q.forEach(e=>{C.removeAttribute(t.replace(J,e))}),C.setAttribute(t,n?n.replace(/"|'/g,""):"")}else C.setAttribute(t,J)}}},[J,re,C,q]),c.useEffect(()=>{let e;if(y&&R.current&&x){const t=x.createElement("style");t.appendChild(x.createTextNode(ms)),x.head.appendChild(t),window.getComputedStyle(x.body),e=setTimeout(()=>{x.head.removeChild(t)},1)}return()=>{clearTimeout(e)}},[J,y,x]),c.useEffect(()=>(R.current=!0,()=>{R.current=!1}),[]);const ne=c.useMemo(()=>({allColorSchemes:q,colorScheme:J,darkColorScheme:K,lightColorScheme:Y,mode:X,setColorScheme:Z,setMode:W,systemMode:G}),[q,J,K,Y,X,Z,W,G,te.colorSchemeSelector]);let ae=!0;(k||!1===N.cssVariables||O&&M?.cssVarPrefix===B)&&(ae=!1);const oe=(0,Ba.jsxs)(c.Fragment,{children:[(0,Ba.jsx)(ThemeProvider$1,{themeId:I?t:void 0,theme:te,children:u}),ae&&(0,Ba.jsx)(GlobalStyles$2,{styles:te.generateStyleSheets?.()||[]})]});return O?oe:(0,Ba.jsx)(d.Provider,{value:ne,children:oe})}const g="string"==typeof s?s:s.light,h="string"==typeof s?s:s.dark;return{CssVarsProvider,useColorScheme,getInitColorSchemeScript:e=>InitColorSchemeScript({colorSchemeStorageKey:o,defaultLightColorScheme:g,defaultDarkColorScheme:h,modeStorageKey:a,...e})}}function createGetCssVar$1(e=""){function appendVar(...t){if(!t.length)return"";const n=t[0];return"string"!=typeof n||n.match(/(#|\(|\)|(-?(\d*\.)?\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\d*\.)?\d+)$|(\d+ \d+ \d+)/)?`, ${n}`:`, var(--${e?`${e}-`:""}${n}${appendVar(...t.slice(1))})`}return(t,...n)=>`var(--${e?`${e}-`:""}${t}${appendVar(...n)})`}var assignNestedKeys=(e,t,n,a=[])=>{let o=e;t.forEach((e,i)=>{i===t.length-1?Array.isArray(o)?o[Number(e)]=n:o&&"object"==typeof o&&(o[e]=n):o&&"object"==typeof o&&(o[e]||(o[e]=a.includes(e)?[]:{}),o=o[e])})},walkObjectDeep=(e,t,n)=>{function recurse(e,a=[],o=[]){Object.entries(e).forEach(([e,i])=>{(!n||n&&!n([...a,e]))&&null!=i&&("object"==typeof i&&Object.keys(i).length>0?recurse(i,[...a,e],Array.isArray(i)?[...o,e]:o):t([...a,e],i,o))})}recurse(e)},getCssValue=(e,t)=>"number"==typeof t?["lineHeight","fontWeight","opacity","zIndex"].some(t=>e.includes(t))||e[e.length-1].toLowerCase().includes("opacity")?t:`${t}px`:t;function cssVarsParser(e,t){const{prefix:n,shouldSkipGeneratingVar:a}=t||{},o={},i={},s={};return walkObjectDeep(e,(e,t,l)=>{if(!("string"!=typeof t&&"number"!=typeof t||a&&a(e,t))){const a=`--${n?`${n}-`:""}${e.join("-")}`,c=getCssValue(e,t);Object.assign(o,{[a]:c}),assignNestedKeys(i,e,`var(${a})`,l),assignNestedKeys(s,e,`var(${a}, ${c})`,l)}},e=>"vars"===e[0]),{css:o,vars:i,varsWithDefaults:s}}function prepareCssVars(e,t={}){const{getSelector:n=defaultGetSelector,disableCssColorScheme:a,colorSchemeSelector:o,enableContrastVars:i}=t,{colorSchemes:s={},components:l,defaultColorScheme:c="light",...u}=e,{vars:d,css:p,varsWithDefaults:m}=cssVarsParser(u,t);let g=m;const h={},{[c]:b,...y}=s;if(Object.entries(y||{}).forEach(([e,n])=>{const{vars:a,css:o,varsWithDefaults:i}=cssVarsParser(n,t);g=deepmerge(g,i),h[e]={css:o,vars:a}}),b){const{css:e,vars:n,varsWithDefaults:a}=cssVarsParser(b,t);g=deepmerge(g,a),h[c]={css:e,vars:n}}function defaultGetSelector(t,n){let a=o;if("class"===o&&(a=".%s"),"data"===o&&(a="[data-%s]"),o?.startsWith("data-")&&!o.includes("%s")&&(a=`[${o}="%s"]`),t){if("media"===a)return e.defaultColorScheme===t?":root":{[`@media (prefers-color-scheme: ${s[t]?.palette?.mode||t})`]:{":root":n}};if(a)return e.defaultColorScheme===t?`:root, ${a.replace("%s",String(t))}`:a.replace("%s",String(t))}return":root"}const generateStyleSheets=()=>{const t=[],o=e.defaultColorScheme||"light";function insertStyleSheet(e,n){Object.keys(n).length&&t.push("string"==typeof e?{[e]:{...n}}:e)}insertStyleSheet(n(void 0,{...p}),p);const{[o]:l,...c}=h;if(l){const{css:e}=l,t=s[o]?.palette?.mode,i=!a&&t?{colorScheme:t,...e}:{...e};insertStyleSheet(n(o,{...i}),i)}return Object.entries(c).forEach(([e,{css:t}])=>{const o=s[e]?.palette?.mode,i=!a&&o?{colorScheme:o,...t}:{...t};insertStyleSheet(n(e,{...i}),i)}),i&&t.push({":root":{"--__l-threshold":"0.7","--__l":"clamp(0, (l / var(--__l-threshold) - 1) * -infinity, 1)","--__a":"clamp(0.87, (l / var(--__l-threshold) - 1) * -infinity, 1)"}}),t};return{vars:g,generateThemeVars:()=>{let e={...d};return Object.entries(h).forEach(([,{vars:t}])=>{e=deepmerge(e,t)}),e},generateStyleSheets}}function createGetColorSchemeSelector(e){return function getColorSchemeSelector(t){return"media"===e?`@media (prefers-color-scheme: ${t})`:e?e.startsWith("data-")&&!e.includes("%s")?`[${e}="${t}"] &`:"class"===e?`.${t} &`:"data"===e?`[data-${t}] &`:`${e.replace("%s",t)} &`:"&"}}function composeClasses(e,t,n=void 0){const a={};for(const o in e){const i=e[o];let s="",l=!0;for(let e=0;e<i.length;e+=1){const a=i[e];a&&(s+=(!0===l?"":" ")+t(a),l=!1,n&&n[a]&&(s+=" "+n[a]))}a[o]=s}return a}function isMuiElement(e,t){return c.isValidElement(e)&&-1!==t.indexOf(e.type.muiName??e.type?._payload?.value?.muiName)}function getLight(){return{text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:Fa.white,default:Fa.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}}}var fs=getLight();function getDark(){return{text:{primary:Fa.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:Fa.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}}}var gs=getDark();function addLightOrDark(e,t,n,a){const o=a.light||a,i=a.dark||1.5*a;e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:"light"===t?e.light=lighten(e.main,o):"dark"===t&&(e.dark=darken(e.main,i)))}function mixLightOrDark(e,t,n,a,o){const i=o.light||o,s=o.dark||1.5*o;t[n]||(t.hasOwnProperty(a)?t[n]=t[a]:"light"===n?t.light=`color-mix(in ${e}, ${t.main}, #fff ${(100*i).toFixed(0)}%)`:"dark"===n&&(t.dark=`color-mix(in ${e}, ${t.main}, #000 ${(100*s).toFixed(0)}%)`))}function getDefaultPrimary(e="light"){return"dark"===e?{main:Va[200],light:Va[50],dark:Va[400]}:{main:Va[700],light:Va[400],dark:Va[800]}}function getDefaultSecondary(e="light"){return"dark"===e?{main:Ua[200],light:Ua[50],dark:Ua[400]}:{main:Ua[500],light:Ua[300],dark:Ua[700]}}function getDefaultError(e="light"){return"dark"===e?{main:qa[500],light:qa[300],dark:qa[700]}:{main:qa[700],light:qa[400],dark:qa[800]}}function getDefaultInfo(e="light"){return"dark"===e?{main:Ha[400],light:Ha[300],dark:Ha[700]}:{main:Ha[700],light:Ha[500],dark:Ha[900]}}function getDefaultSuccess(e="light"){return"dark"===e?{main:Wa[400],light:Wa[300],dark:Wa[700]}:{main:Wa[800],light:Wa[500],dark:Wa[900]}}function getDefaultWarning(e="light"){return"dark"===e?{main:Ga[400],light:Ga[300],dark:Ga[700]}:{main:"#ed6c02",light:Ga[500],dark:Ga[900]}}function contrastColor(e){return`oklch(from ${e} var(--__l) 0 h / var(--__a))`}function createPalette(e){const{mode:t="light",contrastThreshold:n=3,tonalOffset:a=.2,colorSpace:o,...i}=e,s=e.primary||getDefaultPrimary(t),l=e.secondary||getDefaultSecondary(t),c=e.error||getDefaultError(t),u=e.info||getDefaultInfo(t),d=e.success||getDefaultSuccess(t),p=e.warning||getDefaultWarning(t);function getContrastText(e){return o?contrastColor(e):getContrastRatio(e,gs.text.primary)>=n?gs.text.primary:fs.text.primary}const augmentColor=({color:e,name:t,mainShade:n=500,lightShade:i=300,darkShade:s=700})=>{if(!(e={...e}).main&&e[n]&&(e.main=e[n]),!e.hasOwnProperty("main"))throw new Error(formatMuiErrorMessage(11,t?` (${t})`:"",n));if("string"!=typeof e.main)throw new Error(formatMuiErrorMessage(12,t?` (${t})`:"",JSON.stringify(e.main)));return o?(mixLightOrDark(o,e,"light",i,a),mixLightOrDark(o,e,"dark",s,a)):(addLightOrDark(e,"light",i,a),addLightOrDark(e,"dark",s,a)),e.contrastText||(e.contrastText=getContrastText(e.main)),e};let m;return"light"===t?m=getLight():"dark"===t&&(m=getDark()),deepmerge({common:{...Fa},mode:t,primary:augmentColor({color:s,name:"primary"}),secondary:augmentColor({color:l,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:augmentColor({color:c,name:"error"}),warning:augmentColor({color:p,name:"warning"}),info:augmentColor({color:u,name:"info"}),success:augmentColor({color:d,name:"success"}),grey:Ya,contrastThreshold:n,getContrastText,augmentColor,tonalOffset:a,...m},i)}function prepareTypographyVars(e){const t={};return Object.entries(e).forEach(e=>{const[n,a]=e;"object"==typeof a&&(t[n]=`${a.fontStyle?`${a.fontStyle} `:""}${a.fontVariant?`${a.fontVariant} `:""}${a.fontWeight?`${a.fontWeight} `:""}${a.fontStretch?`${a.fontStretch} `:""}${a.fontSize||""}${a.lineHeight?`/${a.lineHeight} `:""}${a.fontFamily||""}`)}),t}function createMixins(e,t){return{toolbar:{minHeight:56,[e.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[e.up("sm")]:{minHeight:64}},...t}}function round$2(e){return Math.round(1e5*e)/1e5}var hs={textTransform:"uppercase"},bs='"Roboto", "Helvetica", "Arial", sans-serif';function createTypography(e,t){const{fontFamily:n=bs,fontSize:a=14,fontWeightLight:o=300,fontWeightRegular:i=400,fontWeightMedium:s=500,fontWeightBold:l=700,htmlFontSize:c=16,allVariants:u,pxToRem:d,...p}="function"==typeof t?t(e):t,m=a/14,g=d||(e=>e/c*m+"rem"),buildVariant=(e,t,a,o,i)=>({fontFamily:n,fontWeight:e,fontSize:g(t),lineHeight:a,...n===bs?{letterSpacing:`${round$2(o/t)}em`}:{},...i,...u});return deepmerge({htmlFontSize:c,pxToRem:g,fontFamily:n,fontSize:a,fontWeightLight:o,fontWeightRegular:i,fontWeightMedium:s,fontWeightBold:l,h1:buildVariant(o,96,1.167,-1.5),h2:buildVariant(o,60,1.2,-.5),h3:buildVariant(i,48,1.167,0),h4:buildVariant(i,34,1.235,.25),h5:buildVariant(i,24,1.334,0),h6:buildVariant(s,20,1.6,.15),subtitle1:buildVariant(i,16,1.75,.15),subtitle2:buildVariant(s,14,1.57,.1),body1:buildVariant(i,16,1.5,.15),body2:buildVariant(i,14,1.43,.15),button:buildVariant(s,14,1.75,.4,hs),caption:buildVariant(i,12,1.66,.4),overline:buildVariant(i,12,2.66,1,hs),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}},p,{clone:!1})}var ys=.2,vs=.14,Ss=.12;function createShadow(...e){return[`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,${ys})`,`${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,${vs})`,`${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,${Ss})`].join(",")}var xs=["none",createShadow(0,2,1,-1,0,1,1,0,0,1,3,0),createShadow(0,3,1,-2,0,2,2,0,0,1,5,0),createShadow(0,3,3,-2,0,3,4,0,0,1,8,0),createShadow(0,2,4,-1,0,4,5,0,0,1,10,0),createShadow(0,3,5,-1,0,5,8,0,0,1,14,0),createShadow(0,3,5,-1,0,6,10,0,0,1,18,0),createShadow(0,4,5,-2,0,7,10,1,0,2,16,1),createShadow(0,5,5,-3,0,8,10,1,0,3,14,2),createShadow(0,5,6,-3,0,9,12,1,0,3,16,2),createShadow(0,6,6,-3,0,10,14,1,0,4,18,3),createShadow(0,6,7,-4,0,11,15,1,0,4,20,3),createShadow(0,7,8,-4,0,12,17,2,0,5,22,4),createShadow(0,7,8,-4,0,13,19,2,0,5,24,4),createShadow(0,7,9,-4,0,14,21,2,0,5,26,4),createShadow(0,8,9,-5,0,15,22,2,0,6,28,5),createShadow(0,8,10,-5,0,16,24,2,0,6,30,5),createShadow(0,8,11,-5,0,17,26,2,0,6,32,5),createShadow(0,9,11,-5,0,18,28,2,0,7,34,6),createShadow(0,9,12,-6,0,19,29,2,0,7,36,6),createShadow(0,10,13,-6,0,20,31,3,0,8,38,7),createShadow(0,10,13,-6,0,21,33,3,0,8,40,7),createShadow(0,10,14,-6,0,22,35,3,0,8,42,7),createShadow(0,11,14,-7,0,23,36,3,0,9,44,8),createShadow(0,11,15,-7,0,24,38,3,0,9,46,8)],Cs={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},ws={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function formatMs(e){return`${Math.round(e)}ms`}function getAutoHeightDuration(e){if(!e)return 0;const t=e/36;return Math.min(Math.round(10*(4+15*t**.25+t/5)),3e3)}function createTransitions(e){const t={...Cs,...e.easing},n={...ws,...e.duration};return{getAutoHeightDuration,create:(e=["all"],a={})=>{const{duration:o=n.standard,easing:i=t.easeInOut,delay:s=0,...l}=a;return(Array.isArray(e)?e:[e]).map(e=>`${e} ${"string"==typeof o?o:formatMs(o)} ${i} ${"string"==typeof s?s:formatMs(s)}`).join(",")},...e,easing:t,duration:n}}var ks={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};function isSerializable(e){return isPlainObject$1(e)||void 0===e||"string"==typeof e||"boolean"==typeof e||"number"==typeof e||Array.isArray(e)}function stringifyTheme(e={}){const t={...e};function serializeTheme(e){const t=Object.entries(e);for(let n=0;n<t.length;n++){const[a,o]=t[n];!isSerializable(o)||a.startsWith("unstable_")||a.startsWith("internal_")?delete e[a]:isPlainObject$1(o)&&(e[a]={...o},serializeTheme(e[a]))}}return serializeTheme(t),`import { unstable_createBreakpoints as createBreakpoints, createTransitions } from '@mui/material/styles';\n\nconst theme = ${JSON.stringify(t,null,2)};\n\ntheme.breakpoints = createBreakpoints(theme.breakpoints || {});\ntheme.transitions = createTransitions(theme.transitions || {});\n\nexport default theme;`}function coefficientToPercentage(e){return"number"==typeof e?`${(100*e).toFixed(0)}%`:`calc((${e}) * 100%)`}var parseAddition=e=>{if(!Number.isNaN(+e))return+e;const t=e.match(/\d*\.?\d+/g);if(!t)return 0;let n=0;for(let a=0;a<t.length;a+=1)n+=+t[a];return n};function attachColorManipulators(e){Object.assign(e,{alpha(t,n){const a=this||e;return a.colorSpace?`oklch(from ${t} l c h / ${"string"==typeof n?`calc(${n})`:n})`:a.vars?`rgba(${t.replace(/var\(--([^,\s)]+)(?:,[^)]+)?\)+/g,"var(--$1Channel)")} / ${"string"==typeof n?`calc(${n})`:n})`:alpha(t,parseAddition(n))},lighten(t,n){const a=this||e;return a.colorSpace?`color-mix(in ${a.colorSpace}, ${t}, #fff ${coefficientToPercentage(n)})`:lighten(t,n)},darken(t,n){const a=this||e;return a.colorSpace?`color-mix(in ${a.colorSpace}, ${t}, #000 ${coefficientToPercentage(n)})`:darken(t,n)}})}function createThemeNoVars(e={},...t){const{breakpoints:n,mixins:a={},spacing:o,palette:i={},transitions:s={},typography:l={},shape:c,colorSpace:u,...d}=e;if(e.vars&&void 0===e.generateThemeVars)throw new Error(formatMuiErrorMessage(22));const p=createPalette({...i,colorSpace:u}),m=createTheme$1(e);let g=deepmerge(m,{mixins:createMixins(m.breakpoints,a),palette:p,shadows:xs.slice(),typography:createTypography(p,l),transitions:createTransitions(s),zIndex:{...ks}});return g=deepmerge(g,d),g=t.reduce((e,t)=>deepmerge(e,t),g),g.unstable_sxConfig={...Gi,...d?.unstable_sxConfig},g.unstable_sx=function sx(e){return Ki({sx:e,theme:this})},g.toRuntimeSource=stringifyTheme,attachColorManipulators(g),g}function getOverlayAlpha(e){let t;return t=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,Math.round(10*t)/1e3}var Es=[...Array(25)].map((e,t)=>{if(0===t)return"none";const n=getOverlayAlpha(t);return`linear-gradient(rgba(255 255 255 / ${n}), rgba(255 255 255 / ${n}))`});function getOpacity(e){return{inputPlaceholder:"dark"===e?.5:.42,inputUnderline:"dark"===e?.7:.42,switchTrackDisabled:"dark"===e?.2:.12,switchTrack:"dark"===e?.3:.38}}function getOverlays(e){return"dark"===e?Es:[]}function createColorScheme(e){const{palette:t={mode:"light"},opacity:n,overlays:a,colorSpace:o,...i}=e,s=createPalette({...t,colorSpace:o});return{palette:s,opacity:{...getOpacity(s.mode),...n},overlays:a||getOverlays(s.mode),...i}}function shouldSkipGeneratingVar(e){return!!e[0].match(/(cssVarPrefix|colorSchemeSelector|modularCssLayers|rootSelector|typography|mixins|breakpoints|direction|transitions)/)||!!e[0].match(/sxConfig$/)||"palette"===e[0]&&!!e[1]?.match(/(mode|contrastThreshold|tonalOffset)/)}var excludeVariablesFromRoot=e=>[...[...Array(25)].map((t,n)=>`--${e?`${e}-`:""}overlays-${n}`),`--${e?`${e}-`:""}palette-AppBar-darkBg`,`--${e?`${e}-`:""}palette-AppBar-darkColor`],createGetSelector_default=e=>(t,n)=>{const a=e.rootSelector||":root",o=e.colorSchemeSelector;let i=o;if("class"===o&&(i=".%s"),"data"===o&&(i="[data-%s]"),o?.startsWith("data-")&&!o.includes("%s")&&(i=`[${o}="%s"]`),e.defaultColorScheme===t){if("dark"===t){const o={};return excludeVariablesFromRoot(e.cssVarPrefix).forEach(e=>{o[e]=n[e],delete n[e]}),"media"===i?{[a]:n,"@media (prefers-color-scheme: dark)":{[a]:o}}:i?{[i.replace("%s",t)]:o,[`${a}, ${i.replace("%s",t)}`]:n}:{[a]:{...n,...o}}}if(i&&"media"!==i)return`${a}, ${i.replace("%s",String(t))}`}else if(t){if("media"===i)return{[`@media (prefers-color-scheme: ${String(t)})`]:{[a]:n}};if(i)return i.replace("%s",String(t))}return a};function assignNode(e,t){t.forEach(t=>{e[t]||(e[t]={})})}function setColor(e,t,n){!e[t]&&n&&(e[t]=n)}function toRgb(e){return"string"==typeof e&&e.startsWith("hsl")?hslToRgb(e):e}function setColorChannel(e,t){`${t}Channel`in e||(e[`${t}Channel`]=private_safeColorChannel(toRgb(e[t]),`MUI: Can't create \`palette.${t}Channel\` because \`palette.${t}\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().\nTo suppress this warning, you need to explicitly provide the \`palette.${t}Channel\` as a string (in rgb format, for example "12 12 12") or undefined if you want to remove the channel token.`))}function getSpacingVal(e){return"number"==typeof e?`${e}px`:"string"==typeof e||"function"==typeof e||Array.isArray(e)?e:"8px"}var silent=e=>{try{return e()}catch(t){}},createGetCssVar=(e="mui")=>createGetCssVar$1(e);function attachColorScheme$1(e,t,n,a,o){if(!n)return;n=!0===n?{}:n;const i="dark"===o?"dark":"light";if(!a)return void(t[o]=createColorScheme({...n,palette:{mode:i,...n?.palette},colorSpace:e}));const{palette:s,...l}=createThemeNoVars({...a,palette:{mode:i,...n?.palette},colorSpace:e});return t[o]={...n,palette:s,opacity:{...getOpacity(i),...n?.opacity},overlays:n?.overlays||getOverlays(i)},l}function createThemeWithVars(e={},...t){const{colorSchemes:n={light:!0},defaultColorScheme:a,disableCssColorScheme:o=!1,cssVarPrefix:i="mui",nativeColor:s=!1,shouldSkipGeneratingVar:l=shouldSkipGeneratingVar,colorSchemeSelector:c=(n.light&&n.dark?"media":void 0),rootSelector:u=":root",...d}=e,p=Object.keys(n)[0],m=a||(n.light&&"light"!==p?"light":p),g=createGetCssVar(i),{[m]:h,light:b,dark:y,...v}=n,S={...v};let x,C=h;if(("dark"===m&&!("dark"in n)||"light"===m&&!("light"in n))&&(C=!0),!C)throw new Error(formatMuiErrorMessage(21,m));s&&(x="oklch");const w=attachColorScheme$1(x,S,C,d,m);b&&!S.light&&attachColorScheme$1(x,S,b,void 0,"light"),y&&!S.dark&&attachColorScheme$1(x,S,y,void 0,"dark");let k={defaultColorScheme:m,...w,cssVarPrefix:i,colorSchemeSelector:c,rootSelector:u,getCssVar:g,colorSchemes:S,font:{...prepareTypographyVars(w.typography),...w.font},spacing:getSpacingVal(d.spacing)};Object.keys(k.colorSchemes).forEach(e=>{const t=k.colorSchemes[e].palette,setCssVarColor=e=>{const n=e.split("-"),a=n[1],o=n[2];return g(e,t[a][o])};function colorMix(e,t,n){if(x){let a;return e===private_safeAlpha&&(a=`transparent ${(100*(1-n)).toFixed(0)}%`),e===private_safeDarken&&(a=`#000 ${(100*n).toFixed(0)}%`),e===private_safeLighten&&(a=`#fff ${(100*n).toFixed(0)}%`),`color-mix(in ${x}, ${t}, ${a})`}return e(t,n)}if("light"===t.mode&&(setColor(t.common,"background","#fff"),setColor(t.common,"onBackground","#000")),"dark"===t.mode&&(setColor(t.common,"background","#000"),setColor(t.common,"onBackground","#fff")),assignNode(t,["Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip"]),"light"===t.mode){setColor(t.Alert,"errorColor",colorMix(private_safeDarken,s?g("palette-error-light"):t.error.light,.6)),setColor(t.Alert,"infoColor",colorMix(private_safeDarken,s?g("palette-info-light"):t.info.light,.6)),setColor(t.Alert,"successColor",colorMix(private_safeDarken,s?g("palette-success-light"):t.success.light,.6)),setColor(t.Alert,"warningColor",colorMix(private_safeDarken,s?g("palette-warning-light"):t.warning.light,.6)),setColor(t.Alert,"errorFilledBg",setCssVarColor("palette-error-main")),setColor(t.Alert,"infoFilledBg",setCssVarColor("palette-info-main")),setColor(t.Alert,"successFilledBg",setCssVarColor("palette-success-main")),setColor(t.Alert,"warningFilledBg",setCssVarColor("palette-warning-main")),setColor(t.Alert,"errorFilledColor",silent(()=>t.getContrastText(t.error.main))),setColor(t.Alert,"infoFilledColor",silent(()=>t.getContrastText(t.info.main))),setColor(t.Alert,"successFilledColor",silent(()=>t.getContrastText(t.success.main))),setColor(t.Alert,"warningFilledColor",silent(()=>t.getContrastText(t.warning.main))),setColor(t.Alert,"errorStandardBg",colorMix(private_safeLighten,s?g("palette-error-light"):t.error.light,.9)),setColor(t.Alert,"infoStandardBg",colorMix(private_safeLighten,s?g("palette-info-light"):t.info.light,.9)),setColor(t.Alert,"successStandardBg",colorMix(private_safeLighten,s?g("palette-success-light"):t.success.light,.9)),setColor(t.Alert,"warningStandardBg",colorMix(private_safeLighten,s?g("palette-warning-light"):t.warning.light,.9)),setColor(t.Alert,"errorIconColor",setCssVarColor("palette-error-main")),setColor(t.Alert,"infoIconColor",setCssVarColor("palette-info-main")),setColor(t.Alert,"successIconColor",setCssVarColor("palette-success-main")),setColor(t.Alert,"warningIconColor",setCssVarColor("palette-warning-main")),setColor(t.AppBar,"defaultBg",setCssVarColor("palette-grey-100")),setColor(t.Avatar,"defaultBg",setCssVarColor("palette-grey-400")),setColor(t.Button,"inheritContainedBg",setCssVarColor("palette-grey-300")),setColor(t.Button,"inheritContainedHoverBg",setCssVarColor("palette-grey-A100")),setColor(t.Chip,"defaultBorder",setCssVarColor("palette-grey-400")),setColor(t.Chip,"defaultAvatarColor",setCssVarColor("palette-grey-700")),setColor(t.Chip,"defaultIconColor",setCssVarColor("palette-grey-700")),setColor(t.FilledInput,"bg","rgba(0, 0, 0, 0.06)"),setColor(t.FilledInput,"hoverBg","rgba(0, 0, 0, 0.09)"),setColor(t.FilledInput,"disabledBg","rgba(0, 0, 0, 0.12)"),setColor(t.LinearProgress,"primaryBg",colorMix(private_safeLighten,s?g("palette-primary-main"):t.primary.main,.62)),setColor(t.LinearProgress,"secondaryBg",colorMix(private_safeLighten,s?g("palette-secondary-main"):t.secondary.main,.62)),setColor(t.LinearProgress,"errorBg",colorMix(private_safeLighten,s?g("palette-error-main"):t.error.main,.62)),setColor(t.LinearProgress,"infoBg",colorMix(private_safeLighten,s?g("palette-info-main"):t.info.main,.62)),setColor(t.LinearProgress,"successBg",colorMix(private_safeLighten,s?g("palette-success-main"):t.success.main,.62)),setColor(t.LinearProgress,"warningBg",colorMix(private_safeLighten,s?g("palette-warning-light"):t.warning.main,.62)),setColor(t.Skeleton,"bg",x?colorMix(private_safeAlpha,s?g("palette-text-primary"):t.text.primary,.11):`rgba(${setCssVarColor("palette-text-primaryChannel")} / 0.11)`),setColor(t.Slider,"primaryTrack",colorMix(private_safeLighten,s?g("palette-primary-main"):t.primary.main,.62)),setColor(t.Slider,"secondaryTrack",colorMix(private_safeLighten,s?g("palette-secondary-main"):t.secondary.main,.62)),setColor(t.Slider,"errorTrack",colorMix(private_safeLighten,s?g("palette-error-main"):t.error.main,.62)),setColor(t.Slider,"infoTrack",colorMix(private_safeLighten,s?g("palette-info-main"):t.info.main,.62)),setColor(t.Slider,"successTrack",colorMix(private_safeLighten,s?g("palette-success-main"):t.success.main,.62)),setColor(t.Slider,"warningTrack",colorMix(private_safeLighten,s?g("palette-warning-main"):t.warning.main,.62));const e=x?colorMix(private_safeDarken,s?g("palette-background-default"):t.background.default,.6825):private_safeEmphasize(t.background.default,.8);setColor(t.SnackbarContent,"bg",e),setColor(t.SnackbarContent,"color",silent(()=>x?gs.text.primary:t.getContrastText(e))),setColor(t.SpeedDialAction,"fabHoverBg",private_safeEmphasize(t.background.paper,.15)),setColor(t.StepConnector,"border",setCssVarColor("palette-grey-400")),setColor(t.StepContent,"border",setCssVarColor("palette-grey-400")),setColor(t.Switch,"defaultColor",setCssVarColor("palette-common-white")),setColor(t.Switch,"defaultDisabledColor",setCssVarColor("palette-grey-100")),setColor(t.Switch,"primaryDisabledColor",colorMix(private_safeLighten,s?g("palette-primary-main"):t.primary.main,.62)),setColor(t.Switch,"secondaryDisabledColor",colorMix(private_safeLighten,s?g("palette-secondary-main"):t.secondary.main,.62)),setColor(t.Switch,"errorDisabledColor",colorMix(private_safeLighten,s?g("palette-error-main"):t.error.main,.62)),setColor(t.Switch,"infoDisabledColor",colorMix(private_safeLighten,s?g("palette-info-main"):t.info.main,.62)),setColor(t.Switch,"successDisabledColor",colorMix(private_safeLighten,s?g("palette-success-main"):t.success.main,.62)),setColor(t.Switch,"warningDisabledColor",colorMix(private_safeLighten,s?g("palette-warning-main"):t.warning.main,.62)),setColor(t.TableCell,"border",colorMix(private_safeLighten,private_safeAlpha(s?g("palette-divider"):t.divider,1),.88)),setColor(t.Tooltip,"bg",colorMix(private_safeAlpha,s?g("palette-grey-700"):t.grey[700],.92))}if("dark"===t.mode){setColor(t.Alert,"errorColor",colorMix(private_safeLighten,s?g("palette-error-light"):t.error.light,.6)),setColor(t.Alert,"infoColor",colorMix(private_safeLighten,s?g("palette-info-light"):t.info.light,.6)),setColor(t.Alert,"successColor",colorMix(private_safeLighten,s?g("palette-success-light"):t.success.light,.6)),setColor(t.Alert,"warningColor",colorMix(private_safeLighten,s?g("palette-warning-light"):t.warning.light,.6)),setColor(t.Alert,"errorFilledBg",setCssVarColor("palette-error-dark")),setColor(t.Alert,"infoFilledBg",setCssVarColor("palette-info-dark")),setColor(t.Alert,"successFilledBg",setCssVarColor("palette-success-dark")),setColor(t.Alert,"warningFilledBg",setCssVarColor("palette-warning-dark")),setColor(t.Alert,"errorFilledColor",silent(()=>t.getContrastText(t.error.dark))),setColor(t.Alert,"infoFilledColor",silent(()=>t.getContrastText(t.info.dark))),setColor(t.Alert,"successFilledColor",silent(()=>t.getContrastText(t.success.dark))),setColor(t.Alert,"warningFilledColor",silent(()=>t.getContrastText(t.warning.dark))),setColor(t.Alert,"errorStandardBg",colorMix(private_safeDarken,s?g("palette-error-light"):t.error.light,.9)),setColor(t.Alert,"infoStandardBg",colorMix(private_safeDarken,s?g("palette-info-light"):t.info.light,.9)),setColor(t.Alert,"successStandardBg",colorMix(private_safeDarken,s?g("palette-success-light"):t.success.light,.9)),setColor(t.Alert,"warningStandardBg",colorMix(private_safeDarken,s?g("palette-warning-light"):t.warning.light,.9)),setColor(t.Alert,"errorIconColor",setCssVarColor("palette-error-main")),setColor(t.Alert,"infoIconColor",setCssVarColor("palette-info-main")),setColor(t.Alert,"successIconColor",setCssVarColor("palette-success-main")),setColor(t.Alert,"warningIconColor",setCssVarColor("palette-warning-main")),setColor(t.AppBar,"defaultBg",setCssVarColor("palette-grey-900")),setColor(t.AppBar,"darkBg",setCssVarColor("palette-background-paper")),setColor(t.AppBar,"darkColor",setCssVarColor("palette-text-primary")),setColor(t.Avatar,"defaultBg",setCssVarColor("palette-grey-600")),setColor(t.Button,"inheritContainedBg",setCssVarColor("palette-grey-800")),setColor(t.Button,"inheritContainedHoverBg",setCssVarColor("palette-grey-700")),setColor(t.Chip,"defaultBorder",setCssVarColor("palette-grey-700")),setColor(t.Chip,"defaultAvatarColor",setCssVarColor("palette-grey-300")),setColor(t.Chip,"defaultIconColor",setCssVarColor("palette-grey-300")),setColor(t.FilledInput,"bg","rgba(255, 255, 255, 0.09)"),setColor(t.FilledInput,"hoverBg","rgba(255, 255, 255, 0.13)"),setColor(t.FilledInput,"disabledBg","rgba(255, 255, 255, 0.12)"),setColor(t.LinearProgress,"primaryBg",colorMix(private_safeDarken,s?g("palette-primary-main"):t.primary.main,.5)),setColor(t.LinearProgress,"secondaryBg",colorMix(private_safeDarken,s?g("palette-secondary-main"):t.secondary.main,.5)),setColor(t.LinearProgress,"errorBg",colorMix(private_safeDarken,s?g("palette-error-main"):t.error.main,.5)),setColor(t.LinearProgress,"infoBg",colorMix(private_safeDarken,s?g("palette-info-main"):t.info.main,.5)),setColor(t.LinearProgress,"successBg",colorMix(private_safeDarken,s?g("palette-success-main"):t.success.main,.5)),setColor(t.LinearProgress,"warningBg",colorMix(private_safeDarken,s?g("palette-warning-main"):t.warning.main,.5)),setColor(t.Skeleton,"bg",x?colorMix(private_safeAlpha,s?g("palette-text-primary"):t.text.primary,.13):`rgba(${setCssVarColor("palette-text-primaryChannel")} / 0.13)`),setColor(t.Slider,"primaryTrack",colorMix(private_safeDarken,s?g("palette-primary-main"):t.primary.main,.5)),setColor(t.Slider,"secondaryTrack",colorMix(private_safeDarken,s?g("palette-secondary-main"):t.secondary.main,.5)),setColor(t.Slider,"errorTrack",colorMix(private_safeDarken,s?g("palette-error-main"):t.error.main,.5)),setColor(t.Slider,"infoTrack",colorMix(private_safeDarken,s?g("palette-info-main"):t.info.main,.5)),setColor(t.Slider,"successTrack",colorMix(private_safeDarken,s?g("palette-success-main"):t.success.main,.5)),setColor(t.Slider,"warningTrack",colorMix(private_safeDarken,s?g("palette-warning-light"):t.warning.main,.5));const e=x?colorMix(private_safeLighten,s?g("palette-background-default"):t.background.default,.985):private_safeEmphasize(t.background.default,.98);setColor(t.SnackbarContent,"bg",e),setColor(t.SnackbarContent,"color",silent(()=>x?fs.text.primary:t.getContrastText(e))),setColor(t.SpeedDialAction,"fabHoverBg",private_safeEmphasize(t.background.paper,.15)),setColor(t.StepConnector,"border",setCssVarColor("palette-grey-600")),setColor(t.StepContent,"border",setCssVarColor("palette-grey-600")),setColor(t.Switch,"defaultColor",setCssVarColor("palette-grey-300")),setColor(t.Switch,"defaultDisabledColor",setCssVarColor("palette-grey-600")),setColor(t.Switch,"primaryDisabledColor",colorMix(private_safeDarken,s?g("palette-primary-main"):t.primary.main,.55)),setColor(t.Switch,"secondaryDisabledColor",colorMix(private_safeDarken,s?g("palette-secondary-main"):t.secondary.main,.55)),setColor(t.Switch,"errorDisabledColor",colorMix(private_safeDarken,s?g("palette-error-main"):t.error.main,.55)),setColor(t.Switch,"infoDisabledColor",colorMix(private_safeDarken,s?g("palette-info-main"):t.info.main,.55)),setColor(t.Switch,"successDisabledColor",colorMix(private_safeDarken,s?g("palette-success-main"):t.success.main,.55)),setColor(t.Switch,"warningDisabledColor",colorMix(private_safeDarken,s?g("palette-warning-light"):t.warning.main,.55)),setColor(t.TableCell,"border",colorMix(private_safeDarken,private_safeAlpha(s?g("palette-divider"):t.divider,1),.68)),setColor(t.Tooltip,"bg",colorMix(private_safeAlpha,s?g("palette-grey-700"):t.grey[700],.92))}s||(setColorChannel(t.background,"default"),setColorChannel(t.background,"paper"),setColorChannel(t.common,"background"),setColorChannel(t.common,"onBackground"),setColorChannel(t,"divider")),Object.keys(t).forEach(e=>{const n=t[e];"tonalOffset"!==e&&!s&&n&&"object"==typeof n&&(n.main&&setColor(t[e],"mainChannel",private_safeColorChannel(toRgb(n.main))),n.light&&setColor(t[e],"lightChannel",private_safeColorChannel(toRgb(n.light))),n.dark&&setColor(t[e],"darkChannel",private_safeColorChannel(toRgb(n.dark))),n.contrastText&&setColor(t[e],"contrastTextChannel",private_safeColorChannel(toRgb(n.contrastText))),"text"===e&&(setColorChannel(t[e],"primary"),setColorChannel(t[e],"secondary")),"action"===e&&(n.active&&setColorChannel(t[e],"active"),n.selected&&setColorChannel(t[e],"selected")))})}),k=t.reduce((e,t)=>deepmerge(e,t),k);const E={prefix:i,disableCssColorScheme:o,shouldSkipGeneratingVar:l,getSelector:createGetSelector_default(k),enableContrastVars:s},{vars:P,generateThemeVars:T,generateStyleSheets:R}=prepareCssVars(k,E);return k.vars=P,Object.entries(k.colorSchemes[k.defaultColorScheme]).forEach(([e,t])=>{k[e]=t}),k.generateThemeVars=T,k.generateStyleSheets=R,k.generateSpacing=function generateSpacing(){return createSpacing(d.spacing,createUnarySpacing(this))},k.getColorSchemeSelector=createGetColorSchemeSelector(c),k.spacing=k.generateSpacing(),k.shouldSkipGeneratingVar=l,k.unstable_sxConfig={...Gi,...d?.unstable_sxConfig},k.unstable_sx=function sx(e){return Ki({sx:e,theme:this})},k.internal_cache={},k.toRuntimeSource=stringifyTheme,k}function attachColorScheme(e,t,n){e.colorSchemes&&n&&(e.colorSchemes[t]={...!0!==n&&n,palette:createPalette({...!0===n?{}:n.palette,mode:t})})}function createTheme(e={},...t){const{palette:n,cssVariables:a=!1,colorSchemes:o=(n?void 0:{light:!0}),defaultColorScheme:i=n?.mode,...s}=e,l=i||"light",c=o?.[l],u={...o,...n?{[l]:{..."boolean"!=typeof c&&c,palette:n}}:void 0};if(!1===a){if(!("colorSchemes"in e))return createThemeNoVars(e,...t);let a=n;"palette"in e||u[l]&&(!0!==u[l]?a=u[l].palette:"dark"===l&&(a={mode:"dark"}));const o=createThemeNoVars({...e,palette:a},...t);return o.defaultColorScheme=l,o.colorSchemes=u,"light"===o.palette.mode&&(o.colorSchemes.light={...!0!==u.light&&u.light,palette:o.palette},attachColorScheme(o,"dark",u.dark)),"dark"===o.palette.mode&&(o.colorSchemes.dark={...!0!==u.dark&&u.dark,palette:o.palette},attachColorScheme(o,"light",u.light)),o}return n||"light"in u||"light"!==l||(u.light=!0),createThemeWithVars({...s,colorSchemes:u,defaultColorScheme:l,..."boolean"!=typeof a&&a},...t)}var _s=createTheme();function useTheme(){const e=useTheme$2(_s);return e.$$material||e}function slotShouldForwardProp(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}var rootShouldForwardProp=e=>slotShouldForwardProp(e)&&"classes"!==e,Ps=createStyled({themeId:Ka,defaultTheme:_s,rootShouldForwardProp});function ThemeProviderNoVars({theme:e,...t}){const n="$$material"in e?e[Ka]:void 0;return(0,Ba.jsx)(ThemeProvider$1,{...t,themeId:n?Ka:void 0,theme:n||e})}var Ts={attribute:"data-mui-color-scheme",colorSchemeStorageKey:"mui-color-scheme",defaultLightColorScheme:"light",defaultDarkColorScheme:"dark",modeStorageKey:"mui-mode"},{CssVarsProvider:As,useColorScheme:Rs,getInitColorSchemeScript:Ms}=createCssVarsProvider({themeId:Ka,theme:()=>createTheme({cssVariables:!0}),colorSchemeStorageKey:Ts.colorSchemeStorageKey,modeStorageKey:Ts.modeStorageKey,defaultColorScheme:{light:Ts.defaultLightColorScheme,dark:Ts.defaultDarkColorScheme},resolveTheme:e=>{const t={...e,typography:createTypography(e.palette,e.typography)};return t.unstable_sx=function sx(e){return Ki({sx:e,theme:this})},t}}),Ds=As;function ThemeProvider({theme:e,...t}){const n=c.useMemo(()=>{if("function"==typeof e)return e;const t="$$material"in e?e[Ka]:e;return"colorSchemes"in t?null:"vars"in t?e:{...e,vars:null}},[e]);return n?(0,Ba.jsx)(ThemeProviderNoVars,{theme:n,...t}):(0,Ba.jsx)(Ds,{theme:e,...t})}var Os=capitalize$1;function createChainedFunction(...e){return e.reduce((e,t)=>null==t?e:function chainedFunction(...n){e.apply(this,n),t.apply(this,n)},()=>{})}function GlobalStyles(e){return(0,Ba.jsx)(GlobalStyles$1,{...e,defaultTheme:_s,themeId:Ka})}function globalCss(e){return function GlobalStylesWrapper(t){return(0,Ba.jsx)(GlobalStyles,{styles:"function"==typeof e?n=>e({theme:n,...t}):e})}}var $s=unstable_memoTheme;function useDefaultProps(e){return useDefaultProps$1(e)}function getSvgIconUtilityClass(e){return generateUtilityClass("MuiSvgIcon",e)}generateUtilityClasses("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var useUtilityClasses$48=e=>{const{color:t,fontSize:n,classes:a}=e;return composeClasses({root:["root","inherit"!==t&&`color${Os(t)}`,`fontSize${Os(n)}`]},getSvgIconUtilityClass,a)},Is=Ps("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"inherit"!==n.color&&t[`color${Os(n.color)}`],t[`fontSize${Os(n.fontSize)}`]]}})($s(({theme:e})=>({userSelect:"none",width:"1em",height:"1em",display:"inline-block",flexShrink:0,transition:e.transitions?.create?.("fill",{duration:(e.vars??e).transitions?.duration?.shorter}),variants:[{props:e=>!e.hasSvgAsChild,style:{fill:"currentColor"}},{props:{fontSize:"inherit"},style:{fontSize:"inherit"}},{props:{fontSize:"small"},style:{fontSize:e.typography?.pxToRem?.(20)||"1.25rem"}},{props:{fontSize:"medium"},style:{fontSize:e.typography?.pxToRem?.(24)||"1.5rem"}},{props:{fontSize:"large"},style:{fontSize:e.typography?.pxToRem?.(35)||"2.1875rem"}},...Object.entries((e.vars??e).palette).filter(([,e])=>e&&e.main).map(([t])=>({props:{color:t},style:{color:(e.vars??e).palette?.[t]?.main}})),{props:{color:"action"},style:{color:(e.vars??e).palette?.action?.active}},{props:{color:"disabled"},style:{color:(e.vars??e).palette?.action?.disabled}},{props:{color:"inherit"},style:{color:void 0}}]}))),Ns=c.forwardRef(function SvgIcon(e,t){const n=useDefaultProps({props:e,name:"MuiSvgIcon"}),{children:a,className:o,color:i="inherit",component:s="svg",fontSize:l="medium",htmlColor:u,inheritViewBox:d=!1,titleAccess:p,viewBox:m="0 0 24 24",...g}=n,h=c.isValidElement(a)&&"svg"===a.type,b={...n,color:i,component:s,fontSize:l,instanceFontSize:e.fontSize,inheritViewBox:d,viewBox:m,hasSvgAsChild:h},y={};return d||(y.viewBox=m),(0,Ba.jsxs)(Is,{as:s,className:clsx(useUtilityClasses$48(b).root,o),focusable:"false",color:u,"aria-hidden":!p||void 0,role:p?"img":void 0,ref:t,...y,...g,...h&&a.props,ownerState:b,children:[h?a.props.children:a,p?(0,Ba.jsx)("title",{children:p}):null]})});function createSvgIcon(e,t){function Component(t,n){return(0,Ba.jsx)(Ns,{"data-testid":void 0,ref:n,...t,children:e})}return Component.muiName=Ns.muiName,c.memo(c.forwardRef(Component))}function debounce$1(e,t=166){let n;function debounced(...a){const later=()=>{e.apply(this,a)};clearTimeout(n),n=setTimeout(later,t)}return debounced.clear=()=>{clearTimeout(n)},debounced}Ns.muiName="SvgIcon";var zs=debounce$1,Ls=isMuiElement;function activeElement(e){let t=e.activeElement;for(;null!=t?.shadowRoot?.activeElement;)t=t.shadowRoot.activeElement;return t}var js=activeElement;function ownerDocument(e){return e&&e.ownerDocument||document}var Bs=ownerDocument;function ownerWindow(e){return ownerDocument(e).defaultView||window}var Fs=ownerWindow;function setRef(e,t){"function"==typeof e?e(t):e&&(e.current=t)}var qs=es,Us=useId;function useControlled(e){const{controlled:t,default:n,name:a,state:o="value"}=e,{current:i}=c.useRef(void 0!==t),[s,l]=c.useState(n);return[i?t:s,c.useCallback(e=>{i||l(e)},[])]}var Vs=useControlled;function useEventCallback(e){const t=c.useRef(e);return es(()=>{t.current=e}),c.useRef((...e)=>(0,t.current)(...e)).current}var Hs=useEventCallback;function useForkRef(...e){const t=c.useRef(void 0),n=c.useCallback(t=>{const n=e.map(e=>{if(null==e)return null;if("function"==typeof e){const n=e,a=n(t);return"function"==typeof a?a:()=>{n(null)}}return e.current=t,()=>{e.current=null}});return()=>{n.forEach(e=>e?.())}},e);return c.useMemo(()=>e.every(e=>null==e)?null:e=>{t.current&&(t.current(),t.current=void 0),null!=e&&(t.current=n(e))},e)}var Ws=useForkRef;function isEventHandler(e,t){const n=e.charCodeAt(2);return"o"===e[0]&&"n"===e[1]&&n>=65&&n<=90&&"function"==typeof t}function mergeSlotProps$1(e,t){if(!e)return t;function extractHandlers(e,t){const n={};return Object.keys(t).forEach(a=>{isEventHandler(a,t[a])&&"function"==typeof e[a]&&(n[a]=(...n)=>{e[a](...n),t[a](...n)})}),n}if("function"==typeof e||"function"==typeof t)return n=>{const a="function"==typeof t?t(n):t,o="function"==typeof e?e({...n,...a}):e,i=clsx(n?.className,a?.className,o?.className),s=extractHandlers(o,a);return{...a,...o,...s,...!!i&&{className:i},...a?.style&&o?.style&&{style:{...a.style,...o.style}},...a?.sx&&o?.sx&&{sx:[...Array.isArray(a.sx)?a.sx:[a.sx],...Array.isArray(o.sx)?o.sx:[o.sx]]}}};const n=t,a=extractHandlers(e,n),o=clsx(n?.className,e?.className);return{...t,...e,...a,...!!o&&{className:o},...n?.style&&e?.style&&{style:{...n.style,...e.style}},...n?.sx&&e?.sx&&{sx:[...Array.isArray(n.sx)?n.sx:[n.sx],...Array.isArray(e.sx)?e.sx:[e.sx]]}}}function _objectWithoutPropertiesLoose(e,t){if(null==e)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(-1!==t.indexOf(a))continue;n[a]=e[a]}return n}function _setPrototypeOf(e,t){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},_setPrototypeOf(e,t)}function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,_setPrototypeOf(e,t)}var Gs={disabled:!1},Ys=e.default.createContext(null),Ks=function forceReflow(e){return e.scrollTop},Qs="unmounted",Zs="exited",Xs="entering",Js="entered",el="exiting",tl=function(n){function Transition(e,t){var a,o=n.call(this,e,t)||this,i=t&&!t.isMounting?e.enter:e.appear;return o.appearStatus=null,e.in?i?(a=Zs,o.appearStatus=Xs):a=Js:a=e.unmountOnExit||e.mountOnEnter?Qs:Zs,o.state={status:a},o.nextCallback=null,o}_inheritsLoose(Transition,n),Transition.getDerivedStateFromProps=function getDerivedStateFromProps(e,t){return e.in&&"unmounted"===t.status?{status:Zs}:null};var a=Transition.prototype;return a.componentDidMount=function componentDidMount(){this.updateStatus(!0,this.appearStatus)},a.componentDidUpdate=function componentDidUpdate(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?"entering"!==n&&"entered"!==n&&(t=Xs):"entering"!==n&&"entered"!==n||(t=el)}this.updateStatus(!1,t)},a.componentWillUnmount=function componentWillUnmount(){this.cancelNextCallback()},a.getTimeouts=function getTimeouts(){var e,t,n=this.props.timeout,a=e=t=n;return null!=n&&"number"!=typeof n&&(a=n.exit,e=n.enter,t=void 0!==n.appear?n.appear:e),{exit:a,enter:e,appear:t}},a.updateStatus=function updateStatus(e,n){if(void 0===e&&(e=!1),null!==n)if(this.cancelNextCallback(),"entering"===n){if(this.props.unmountOnExit||this.props.mountOnEnter){var a=this.props.nodeRef?this.props.nodeRef.current:t.default.findDOMNode(this);a&&Ks(a)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&"exited"===this.state.status&&this.setState({status:Qs})},a.performEnter=function performEnter(e){var n=this,a=this.props.enter,o=this.context?this.context.isMounting:e,i=this.props.nodeRef?[o]:[t.default.findDOMNode(this),o],s=i[0],l=i[1],c=this.getTimeouts(),u=o?c.appear:c.enter;!e&&!a||Gs.disabled?this.safeSetState({status:Js},function(){n.props.onEntered(s)}):(this.props.onEnter(s,l),this.safeSetState({status:Xs},function(){n.props.onEntering(s,l),n.onTransitionEnd(u,function(){n.safeSetState({status:Js},function(){n.props.onEntered(s,l)})})}))},a.performExit=function performExit(){var e=this,n=this.props.exit,a=this.getTimeouts(),o=this.props.nodeRef?void 0:t.default.findDOMNode(this);n&&!Gs.disabled?(this.props.onExit(o),this.safeSetState({status:el},function(){e.props.onExiting(o),e.onTransitionEnd(a.exit,function(){e.safeSetState({status:Zs},function(){e.props.onExited(o)})})})):this.safeSetState({status:Zs},function(){e.props.onExited(o)})},a.cancelNextCallback=function cancelNextCallback(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},a.safeSetState=function safeSetState(e,t){t=this.setNextCallback(t),this.setState(e,t)},a.setNextCallback=function setNextCallback(e){var t=this,n=!0;return this.nextCallback=function(a){n&&(n=!1,t.nextCallback=null,e(a))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},a.onTransitionEnd=function onTransitionEnd(e,n){this.setNextCallback(n);var a=this.props.nodeRef?this.props.nodeRef.current:t.default.findDOMNode(this),o=null==e&&!this.props.addEndListener;if(a&&!o){if(this.props.addEndListener){var i=this.props.nodeRef?[this.nextCallback]:[a,this.nextCallback],s=i[0],l=i[1];this.props.addEndListener(s,l)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},a.render=function render(){var t=this.state.status;if("unmounted"===t)return null;var n=this.props,a=n.children;n.in,n.mountOnEnter,n.unmountOnExit,n.appear,n.enter,n.exit,n.timeout,n.addEndListener,n.onEnter,n.onEntering,n.onEntered,n.onExit,n.onExiting,n.onExited,n.nodeRef;var o=_objectWithoutPropertiesLoose(n,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return e.default.createElement(Ys.Provider,{value:null},"function"==typeof a?a(t,o):e.default.cloneElement(e.default.Children.only(a),o))},Transition}(e.default.Component);function noop$2(){}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function getChildMapping(t,n){var a=function mapper(t){return n&&(0,e.isValidElement)(t)?n(t):t},o=Object.create(null);return t&&e.Children.map(t,function(e){return e}).forEach(function(e){o[e.key]=a(e)}),o}function mergeChildMappings(e,t){function getValueForKey(n){return n in t?t[n]:e[n]}e=e||{},t=t||{};var n,a=Object.create(null),o=[];for(var i in e)i in t?o.length&&(a[i]=o,o=[]):o.push(i);var s={};for(var l in t){if(a[l])for(n=0;n<a[l].length;n++){var c=a[l][n];s[a[l][n]]=getValueForKey(c)}s[l]=getValueForKey(l)}for(n=0;n<o.length;n++)s[o[n]]=getValueForKey(o[n]);return s}function getProp(e,t,n){return null!=n[t]?n[t]:e.props[t]}function getInitialChildMapping(t,n){return getChildMapping(t.children,function(a){return(0,e.cloneElement)(a,{onExited:n.bind(null,a),in:!0,appear:getProp(a,"appear",t),enter:getProp(a,"enter",t),exit:getProp(a,"exit",t)})})}function getNextChildMapping(t,n,a){var o=getChildMapping(t.children),i=mergeChildMappings(n,o);return Object.keys(i).forEach(function(s){var l=i[s];if((0,e.isValidElement)(l)){var c=s in n,u=s in o,d=n[s],p=(0,e.isValidElement)(d)&&!d.props.in;!u||c&&!p?u||!c||p?u&&c&&(0,e.isValidElement)(d)&&(i[s]=(0,e.cloneElement)(l,{onExited:a.bind(null,l),in:d.props.in,exit:getProp(l,"exit",t),enter:getProp(l,"enter",t)})):i[s]=(0,e.cloneElement)(l,{in:!1}):i[s]=(0,e.cloneElement)(l,{onExited:a.bind(null,l),in:!0,exit:getProp(l,"exit",t),enter:getProp(l,"enter",t)})}}),i}tl.contextType=Ys,tl.propTypes={},tl.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:noop$2,onEntering:noop$2,onEntered:noop$2,onExit:noop$2,onExiting:noop$2,onExited:noop$2},tl.UNMOUNTED=Qs,tl.EXITED=Zs,tl.ENTERING=Xs,tl.ENTERED=Js,tl.EXITING=el;var rl=Object.values||function(e){return Object.keys(e).map(function(t){return e[t]})},nl={component:"div",childFactory:function childFactory(e){return e}},al=function(t){function TransitionGroup(e,n){var a=t.call(this,e,n)||this;return a.state={contextValue:{isMounting:!0},handleExited:a.handleExited.bind(_assertThisInitialized(a)),firstRender:!0},a}_inheritsLoose(TransitionGroup,t);var n=TransitionGroup.prototype;return n.componentDidMount=function componentDidMount(){this.mounted=!0,this.setState({contextValue:{isMounting:!1}})},n.componentWillUnmount=function componentWillUnmount(){this.mounted=!1},TransitionGroup.getDerivedStateFromProps=function getDerivedStateFromProps(e,t){var n=t.children,a=t.handleExited;return{children:t.firstRender?getInitialChildMapping(e,a):getNextChildMapping(e,n,a),firstRender:!1}},n.handleExited=function handleExited(e,t){var n=getChildMapping(this.props.children);e.key in n||(e.props.onExited&&e.props.onExited(t),this.mounted&&this.setState(function(t){var n=_extends({},t.children);return delete n[e.key],{children:n}}))},n.render=function render(){var t=this.props,n=t.component,a=t.childFactory,o=_objectWithoutPropertiesLoose(t,["component","childFactory"]),i=this.state.contextValue,s=rl(this.state.children).map(a);return delete o.appear,delete o.enter,delete o.exit,null===n?e.default.createElement(Ys.Provider,{value:i},s):e.default.createElement(Ys.Provider,{value:i},e.default.createElement(n,o,s))},TransitionGroup}(e.default.Component);al.propTypes={},al.defaultProps=nl;var ol={};function useLazyRef(e,t){const n=c.useRef(ol);return n.current===ol&&(n.current=e(t)),n}var il=[];function useOnMount(e){c.useEffect(e,il)}var sl=class Timeout{static create(){return new Timeout}currentId=null;start(e,t){this.clear(),this.currentId=setTimeout(()=>{this.currentId=null,t()},e)}clear=()=>{null!==this.currentId&&(clearTimeout(this.currentId),this.currentId=null)};disposeEffect=()=>this.clear};function useTimeout(){const e=useLazyRef(sl.create).current;return useOnMount(e.disposeEffect),e}var reflow=e=>e.scrollTop;function normalizedTransitionCallback(e,t){return n=>{if(t){const a=e.current;void 0===n?t(a):t(a,n)}}}function getTransitionChildStyle(e,t,n,a,o,i){const s="exited"!==e||t?n[e]||n.exited:a;return o||i?{...s,...o,...i}:s}function getTransitionProps(e,t){const{timeout:n,easing:a,style:o={}}=e;return{duration:o.transitionDuration??("number"==typeof n?n:n[t.mode]||0),easing:o.transitionTimingFunction??("object"==typeof a?a[t.mode]:a),delay:o.transitionDelay}}function isHostComponent(e){return"string"==typeof e}function appendOwnerState(e,t,n){return void 0===e||isHostComponent(e)?t:{...t,ownerState:{...t.ownerState,...n}}}function resolveComponentProps(e,t,n){return"function"==typeof e?e(t,n):e}function extractEventHandlers(e){if(void 0===e)return{};const t={};for(const n of Object.keys(e))isEventHandler(n,e[n])&&(t[n]=e[n]);return t}function omitEventHandlers(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(n=>{t[n]=e[n]}),t}function mergeSlotProps(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:a,externalForwardedProps:o,className:i}=e;if(!t){const e=clsx(n?.className,i,o?.className,a?.className),t={...n?.style,...o?.style,...a?.style},s={...n,...o,...a};return e.length>0&&(s.className=e),Object.keys(t).length>0&&(s.style=t),{props:s,internalRef:void 0}}const s=extractEventHandlers({...o,...a}),l=omitEventHandlers(a),c=omitEventHandlers(o),u=t(s),d=clsx(u?.className,n?.className,i,o?.className,a?.className),p={...u?.style,...n?.style,...o?.style,...a?.style},m={...u,...n,...c,...l};return d.length>0&&(m.className=d),Object.keys(p).length>0&&(m.style=p),{props:m,internalRef:u.ref}}function useSlot(e,t){const{className:n,elementType:a,ownerState:o,externalForwardedProps:i,internalForwardedProps:s,shouldForwardComponentProp:l=!1,...c}=t,{component:u,slots:d={[e]:void 0},slotProps:p={[e]:void 0},...m}=i,g=d[e]||a,h=resolveComponentProps(p[e],o),{props:{component:b,...y},internalRef:v}=mergeSlotProps({className:n,...c,externalForwardedProps:"root"===e?m:void 0,externalSlotProps:h}),S=useForkRef(v,h?.ref,t.ref),x="root"===e?b||u:b;return[g,appendOwnerState(g,{..."root"===e&&!u&&!d[e]&&s,..."root"!==e&&!d[e]&&s,...y,...x&&!l&&{as:x},...x&&l&&{component:x},ref:S},o)]}function getPaperUtilityClass(e){return generateUtilityClass("MuiPaper",e)}generateUtilityClasses("MuiPaper",["root","rounded","outlined","elevation","elevation0","elevation1","elevation2","elevation3","elevation4","elevation5","elevation6","elevation7","elevation8","elevation9","elevation10","elevation11","elevation12","elevation13","elevation14","elevation15","elevation16","elevation17","elevation18","elevation19","elevation20","elevation21","elevation22","elevation23","elevation24"]);var useUtilityClasses$47=e=>{const{square:t,elevation:n,variant:a,classes:o}=e;return composeClasses({root:["root",a,!t&&"rounded","elevation"===a&&`elevation${n}`]},getPaperUtilityClass,o)},ll=Ps("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],!n.square&&t.rounded,"elevation"===n.variant&&t[`elevation${n.elevation}`]]}})($s(({theme:e})=>({backgroundColor:(e.vars||e).palette.background.paper,color:(e.vars||e).palette.text.primary,transition:e.transitions.create("box-shadow"),variants:[{props:({ownerState:e})=>!e.square,style:{borderRadius:e.shape.borderRadius}},{props:{variant:"outlined"},style:{border:`1px solid ${(e.vars||e).palette.divider}`}},{props:{variant:"elevation"},style:{boxShadow:"var(--Paper-shadow)",backgroundImage:"var(--Paper-overlay)"}}]}))),cl=c.forwardRef(function Paper(e,t){const n=useDefaultProps({props:e,name:"MuiPaper"}),a=useTheme(),{className:o,component:i="div",elevation:s=1,square:l=!1,variant:c="elevation",...u}=n,d={...n,component:i,elevation:s,square:l,variant:c};return(0,Ba.jsx)(ll,{as:i,ownerState:d,className:clsx(useUtilityClasses$47(d).root,o),ref:t,...u,style:{..."elevation"===c&&{"--Paper-shadow":(a.vars||a).shadows[s],...a.vars&&{"--Paper-overlay":a.vars.overlays?.[s]},...!a.vars&&"dark"===a.palette.mode&&{"--Paper-overlay":`linear-gradient(${alpha("#fff",getOverlayAlpha(s))}, ${alpha("#fff",getOverlayAlpha(s))})`}},...u.style}})});function isFocusVisible(e){try{return e.matches(":focus-visible")}catch(t){}return!1}function useFocusableWhenDisabled(e){const{focusableWhenDisabled:t,disabled:n,composite:a=!1,tabIndex:o=0,isNativeButton:i}=e,s=a&&!1!==t,l=a&&!1===t;return c.useMemo(()=>{const e={onKeyDown(e){n&&t&&"Tab"!==e.key&&e.preventDefault()}};return a||(e.tabIndex=o,!i&&n&&(e.tabIndex=t?o:-1)),(i&&(t||s)||!i&&n)&&(e["aria-disabled"]=n),!i||t&&!l||(e.disabled=n),e},[a,n,t,s,l,i,o])}var ul={};function useButtonBase(e){const{nativeButton:t,nativeButtonProp:n,internalNativeButton:a=t,allowInferredHostMismatch:o=!1,disabled:i,type:s,hasFormAction:l=!1,tabIndex:u=0,focusableWhenDisabled:d,stopEventPropagation:p=!1,onBeforeKeyDown:m,onBeforeKeyUp:g}=e,h=c.useRef(null),b=!0===d,y=useFocusableWhenDisabled({focusableWhenDisabled:b,disabled:i,isNativeButton:t,tabIndex:u}),v=c.useCallback(()=>{const e=h.current;return null==e?t:"BUTTON"===e.tagName||Boolean("A"===e.tagName&&e.href)},[t]),S=c.useMemo(()=>{const e=b?{}:{tabIndex:i?-1:u};return t?(e.type=void 0!==s||l?s:"button",b||(e.disabled=i)):(e.role="button",!b&&i&&(e["aria-disabled"]=i)),b?{...e,...y}:e},[i,b,y,l,t,u,s]);return{getButtonProps:c.useCallback((e=ul)=>{const{onClick:t,onKeyDown:n,onKeyUp:a,...o}=e,handleClick=e=>{p&&e.stopPropagation(),i?e.preventDefault():t?.(e)},handleKeyDown=e=>{b&&y.onKeyDown(e),i||(m?.(e),n?.(e),e.target!==e.currentTarget||v()||(" "!==e.key?"Enter"===e.key&&(e.preventDefault(),e.currentTarget.click()):e.preventDefault()))},handleKeyUp=e=>{i||(g?.(e),a?.(e),e.target!==e.currentTarget||v()||" "!==e.key||e.defaultPrevented||e.currentTarget.click())};return{...S,...o,onClick:handleClick,onKeyDown:handleKeyDown,onKeyUp:handleKeyUp}},[S,i,b,y,v,m,g,p]),rootRef:h}}var dl=class LazyRipple{static create(){return new LazyRipple}static use(){const e=useLazyRef(LazyRipple.create).current,[t,n]=c.useState(!1);return e.shouldMount=t,e.setShouldMount=n,c.useEffect(e.mountEffect,[t]),e}constructor(){this.ref={current:null},this.mounted=null,this.didMount=!1,this.shouldMount=!1,this.setShouldMount=null}mount(){return this.mounted||(this.mounted=createControlledPromise(),this.shouldMount=!0,this.setShouldMount(this.shouldMount)),this.mounted}mountEffect=()=>{this.shouldMount&&!this.didMount&&null!==this.ref.current&&(this.didMount=!0,this.mounted.resolve())};start(...e){this.mount().then(()=>this.ref.current?.start(...e))}stop(...e){this.mount().then(()=>this.ref.current?.stop(...e))}pulsate(...e){this.mount().then(()=>this.ref.current?.pulsate(...e))}};function useLazyRipple(){return dl.use()}function createControlledPromise(){let e,t;const n=new Promise((n,a)=>{e=n,t=a});return n.resolve=e,n.reject=t,n}function Ripple(e){const{className:t,classes:n,pulsate:a=!1,rippleX:o,rippleY:i,rippleSize:s,in:l,onExited:u,timeout:d}=e,[p,m]=c.useState(!1),g=clsx(t,n.ripple,n.rippleVisible,a&&n.ripplePulsate),h={width:s,height:s,top:-s/2+i,left:-s/2+o},b=clsx(n.child,p&&n.childLeaving,a&&n.childPulsate);return l||p||m(!0),c.useEffect(()=>{if(!l&&null!=u){const e=setTimeout(u,d);return()=>{clearTimeout(e)}}},[u,l,d]),(0,Ba.jsx)("span",{className:g,style:h,children:(0,Ba.jsx)("span",{className:b})})}var pl=generateUtilityClasses("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]),ml=550,fl=keyframes`
|
|
2
2
|
0% {
|
|
3
3
|
transform: scale(0);
|
|
4
4
|
opacity: 0.1;
|