route-engine-js 1.40.1 → 1.42.0

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.
@@ -1,2 +1,6 @@
1
- var nf=Object.defineProperty;var sf=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),of=(e,t)=>{for(var n in t)nf(e,n,{get:t[n],enumerable:!0})};var Zu=sf(Ji=>{"use strict";Object.defineProperty(Ji,"__esModule",{value:!0});function Qu(e){let t=e.length,n=0,o=0,a;for(;o<t;)n++,a=e.charCodeAt(o++),a>=55296&&a<=56319&&o<t&&(a=e.charCodeAt(o),(a&64512)===56320&&o++);return n}Ji.default=Qu;Qu.code='require("ajv/dist/runtime/ucs2length").default'});var Pa=Symbol.for("immer-nothing"),Ia=Symbol.for("immer-draftable"),Ce=Symbol.for("immer-state");function Me(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Wr=Object.getPrototypeOf;function we(e){return!!e&&!!e[Ce]}function $r(e){return e?xa(e)||Array.isArray(e)||!!e[Ia]||!!e.constructor?.[Ia]||yn(e)||hn(e):!1}var af=Object.prototype.constructor.toString();function xa(e){if(!e||typeof e!="object")return!1;let t=Wr(e);if(t===null)return!0;let n=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return n===Object?!0:typeof n=="function"&&Function.toString.call(n)===af}function fn(e){return we(e)||Me(15,e),e[Ce].base_}function un(e,t){mn(e)===0?Reflect.ownKeys(e).forEach(n=>{t(n,e[n],e)}):e.forEach((n,o)=>t(o,n,e))}function mn(e){let t=e[Ce];return t?t.type_:Array.isArray(e)?1:yn(e)?2:hn(e)?3:0}function eo(e,t){return mn(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function Ea(e,t,n){let o=mn(e);o===2?e.set(t,n):o===3?e.add(n):e[t]=n}function lf(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}function yn(e){return e instanceof Map}function hn(e){return e instanceof Set}function Cr(e){return e.copy_||e.base_}function ro(e,t){if(yn(e))return new Map(e);if(hn(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);let n=xa(e);if(t===!0||t==="class_only"&&!n){let o=Object.getOwnPropertyDescriptors(e);delete o[Ce];let a=Reflect.ownKeys(o);for(let r=0;r<a.length;r++){let s=a[r],i=o[s];i.writable===!1&&(i.writable=!0,i.configurable=!0),(i.get||i.set)&&(o[s]={configurable:!0,writable:!0,enumerable:i.enumerable,value:e[s]})}return Object.create(Wr(e),o)}else{let o=Wr(e);if(o!==null&&n)return{...e};let a=Object.create(o);return Object.assign(a,e)}}function io(e,t=!1){return gn(e)||we(e)||!$r(e)||(mn(e)>1&&(e.set=e.add=e.clear=e.delete=cf),Object.freeze(e),t&&Object.entries(e).forEach(([n,o])=>io(o,!0))),e}function cf(){Me(2)}function gn(e){return Object.isFrozen(e)}var uf={};function _r(e){let t=uf[e];return t||Me(0,e),t}var bt;function Sa(){return bt}function pf(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function wa(e,t){t&&(_r("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function to(e){no(e),e.drafts_.forEach(df),e.drafts_=null}function no(e){e===bt&&(bt=e.parent_)}function ka(e){return bt=pf(bt,e)}function df(e){let t=e[Ce];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function va(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];return e!==void 0&&e!==n?(n[Ce].modified_&&(to(t),Me(4)),$r(e)&&(e=pn(t,e),t.parent_||dn(t,e)),t.patches_&&_r("Patches").generateReplacementPatches_(n[Ce].base_,e,t.patches_,t.inversePatches_)):e=pn(t,n,[]),to(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==Pa?e:void 0}function pn(e,t,n){if(gn(t))return t;let o=t[Ce];if(!o)return un(t,(a,r)=>Aa(e,o,t,a,r,n)),t;if(o.scope_!==e)return t;if(!o.modified_)return dn(e,o.base_,!0),o.base_;if(!o.finalized_){o.finalized_=!0,o.scope_.unfinalizedDrafts_--;let a=o.copy_,r=a,s=!1;o.type_===3&&(r=new Set(a),a.clear(),s=!0),un(r,(i,l)=>Aa(e,o,a,i,l,n,s)),dn(e,a,!1),n&&e.patches_&&_r("Patches").generatePatches_(o,n,e.patches_,e.inversePatches_)}return o.copy_}function Aa(e,t,n,o,a,r,s){if(we(a)){let i=r&&t&&t.type_!==3&&!eo(t.assigned_,o)?r.concat(o):void 0,l=pn(e,a,i);if(Ea(n,o,l),we(l))e.canAutoFreeze_=!1;else return}else s&&n.add(a);if($r(a)&&!gn(a)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;pn(e,a),(!t||!t.scope_.parent_)&&typeof o!="symbol"&&Object.prototype.propertyIsEnumerable.call(n,o)&&dn(e,a)}}function dn(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&io(t,n)}function ff(e,t){let n=Array.isArray(e),o={type_:n?1:0,scope_:t?t.scope_:Sa(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1},a=o,r=ao;n&&(a=[o],r=It);let{revoke:s,proxy:i}=Proxy.revocable(a,r);return o.draft_=i,o.revoke_=s,i}var ao={get(e,t){if(t===Ce)return e;let n=Cr(e);if(!eo(n,t))return mf(e,n,t);let o=n[t];return e.finalized_||!$r(o)?o:o===Qs(e.base_,t)?(Zs(e),e.copy_[t]=oo(o,e)):o},has(e,t){return t in Cr(e)},ownKeys(e){return Reflect.ownKeys(Cr(e))},set(e,t,n){let o=Oa(Cr(e),t);if(o?.set)return o.set.call(e.draft_,n),!0;if(!e.modified_){let a=Qs(Cr(e),t),r=a?.[Ce];if(r&&r.base_===n)return e.copy_[t]=n,e.assigned_[t]=!1,!0;if(lf(n,a)&&(n!==void 0||eo(e.base_,t)))return!0;Zs(e),so(e)}return e.copy_[t]===n&&(n!==void 0||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=n,e.assigned_[t]=!0),!0},deleteProperty(e,t){return Qs(e.base_,t)!==void 0||t in e.base_?(e.assigned_[t]=!1,Zs(e),so(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=Cr(e),o=Reflect.getOwnPropertyDescriptor(n,t);return o&&{writable:!0,configurable:e.type_!==1||t!=="length",enumerable:o.enumerable,value:n[t]}},defineProperty(){Me(11)},getPrototypeOf(e){return Wr(e.base_)},setPrototypeOf(){Me(12)}},It={};un(ao,(e,t)=>{It[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}});It.deleteProperty=function(e,t){return It.set.call(this,e,t,void 0)};It.set=function(e,t,n){return ao.set.call(this,e[0],t,n,e[0])};function Qs(e,t){let n=e[Ce];return(n?Cr(n):e)[t]}function mf(e,t,n){let o=Oa(t,n);return o?"value"in o?o.value:o.get?.call(e.draft_):void 0}function Oa(e,t){if(!(t in e))return;let n=Wr(e);for(;n;){let o=Object.getOwnPropertyDescriptor(n,t);if(o)return o;n=Wr(n)}}function so(e){e.modified_||(e.modified_=!0,e.parent_&&so(e.parent_))}function Zs(e){e.copy_||(e.copy_=ro(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var yf=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(t,n,o)=>{if(typeof t=="function"&&typeof n!="function"){let r=n;n=t;let s=this;return function(l=r,...c){return s.produce(l,u=>n.call(this,u,...c))}}typeof n!="function"&&Me(6),o!==void 0&&typeof o!="function"&&Me(7);let a;if($r(t)){let r=ka(this),s=oo(t,void 0),i=!0;try{a=n(s),i=!1}finally{i?to(r):no(r)}return wa(r,o),va(a,r)}else if(!t||typeof t!="object"){if(a=n(t),a===void 0&&(a=t),a===Pa&&(a=void 0),this.autoFreeze_&&io(a,!0),o){let r=[],s=[];_r("Patches").generateReplacementPatches_(t,a,r,s),o(r,s)}return a}else Me(1,t)},this.produceWithPatches=(t,n)=>{if(typeof t=="function")return(s,...i)=>this.produceWithPatches(s,l=>t(l,...i));let o,a;return[this.produce(t,n,(s,i)=>{o=s,a=i}),o,a]},typeof e?.autoFreeze=="boolean"&&this.setAutoFreeze(e.autoFreeze),typeof e?.useStrictShallowCopy=="boolean"&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){$r(e)||Me(8),we(e)&&(e=pr(e));let t=ka(this),n=oo(e,void 0);return n[Ce].isManual_=!0,no(t),n}finishDraft(e,t){let n=e&&e[Ce];(!n||!n.isManual_)&&Me(9);let{scope_:o}=n;return wa(o,t),va(void 0,o)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let a=t[n];if(a.path.length===0&&a.op==="replace"){e=a.value;break}}n>-1&&(t=t.slice(n+1));let o=_r("Patches").applyPatches_;return we(e)?o(e,t):this.produce(e,a=>o(a,t))}};function oo(e,t){let n=yn(e)?_r("MapSet").proxyMap_(e,t):hn(e)?_r("MapSet").proxySet_(e,t):ff(e,t);return(t?t.scope_:Sa()).drafts_.push(n),n}function pr(e){return we(e)||Me(10,e),Ra(e)}function Ra(e){if(!$r(e)||gn(e))return e;let t=e[Ce],n;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=ro(e,t.scope_.immer_.useStrictShallowCopy_)}else n=ro(e,!0);return un(n,(o,a)=>{Ea(n,o,Ra(a))}),t&&(t.finalized_=!1),n}var _e=new yf,bn=_e.produce,ck=_e.produceWithPatches.bind(_e),uk=_e.setAutoFreeze.bind(_e),pk=_e.setUseStrictShallowCopy.bind(_e),dk=_e.applyPatches.bind(_e),fk=_e.createDraft.bind(_e),mk=_e.finishDraft.bind(_e);var x={LITERAL:0,VARIABLE:1,INTERPOLATION:2,FUNCTION:3,BINARY:4,UNARY:5,CONDITIONAL:6,LOOP:7,OBJECT:8,ARRAY:9,PARTIAL:10,PATH_REFERENCE:11},J={EQ:0,NEQ:1,GT:2,LT:3,GTE:4,LTE:5,AND:6,OR:7,IN:8,ADD:10,SUBTRACT:11},Kr={NOT:0};var N=class extends Error{constructor(t){super(`Parse Error: ${t}`),this.name="JemplParseError"}},Oe=class extends Error{constructor(t){super(`Render Error: ${t}`),this.name="JemplRenderError"}};var lo=e=>{if(!e||e.trim()==="")throw new N("Missing condition expression after '$if'");if(e.includes("===")||e.includes("!==")){let n=e.includes("===")?"==":"!=";throw new N(`Invalid comparison operator '${e.includes("===")?"===":"!=="}' - did you mean '${n}'? (got: '${e}')`)}let t=["<",">","<=",">=","==","!="];for(let n of t)if(e.trim().endsWith(n))throw new N(`Incomplete comparison expression - missing right operand (got: '${e}')`)},Ca=e=>{if(e.trim().endsWith(" in"))throw new N(`Missing iterable expression after 'in' (got: '$for ${e}')`);if(!e.includes(" in "))throw new N(`Invalid loop syntax - missing 'in' keyword (got: '$for ${e}')`);let[t,n]=e.split(" in ");if(!n||n.trim()==="")throw new N(`Missing iterable expression after 'in' (got: '$for ${e}')`);let o=t.includes(",")?t.split(",").map(a=>a.trim()):[t.trim()];for(let a of o){if(!a)throw new N(`Invalid loop variable - variable name cannot be empty (got: '$for ${e}')`);if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(a))throw new N(`Invalid loop syntax (got: '$for ${e}')`)}};var $a=(e,t,n=!1)=>{if(t===null)return new Oe(`Cannot iterate over null value at '$for ${e}'`);if(t===void 0)return new Oe(`Cannot iterate over undefined value at '$for ${e}'`);let o=typeof t;return n?new Oe(`Cannot iterate over non-array value in loop '${e}' - got ${o} instead`):new Oe(`Cannot iterate over non-array value (got: ${o}) at '$for ${e}'`)},_a=(e,t)=>{let n=t&&Object.keys(t).length>0?Object.keys(t).join(", "):"no custom functions provided";return new Oe(`Unknown function '${e}' (${n})`)};var hf=(e,t,n={})=>{let o={},a={};n&&typeof n=="object"&&(n.functions!==void 0||n.partials!==void 0?(o=n.functions||{},a=n.partials||{}):typeof n=="object"&&(o=n));let s=ee(e,{functions:o,partials:a},t,{});return s===void 0?{}:s},ee=(e,t,n,o)=>{let a=t.functions||t;if(e.var&&!e.type)return be(e.var,n,o);if(e.type===x.LITERAL)return e.value;if(e.type===x.VARIABLE)return be(e.path,n,o);if(e.type===x.INTERPOLATION)return bf(e.parts,t,n,o);switch(e.type){case x.FUNCTION:return ja(e,t,n,o);case x.BINARY:return Na(e,t,n,o);case x.UNARY:return Da(e,t,n,o);case x.CONDITIONAL:return wf(e,t,n,o);case x.LOOP:return xf(e,t,n,o);case x.OBJECT:return Sf(e,t,n,o);case x.ARRAY:return Of(e,t,n,o);case x.PARTIAL:return Rf(e,t,n,o);case x.PATH_REFERENCE:return Cf(e,t,n,o);default:throw new Error(`Unknown node type: ${e.type}`)}},Ta=new Map,gf=e=>{let t=[],n="",o=!1;for(let a=0;a<e.length;a++){let r=e[a];if(r==="[")n&&(t.push({type:"property",value:n}),n=""),o=!0;else if(r==="]"){if(o&&n){let s=n.trim();if(/^\d+$/.test(s))t.push({type:"index",value:parseInt(s,10)});else if(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'")){let i=s.slice(1,-1);t.push({type:"property",value:i})}else t.push({type:"property",value:s});n=""}o=!1}else n+=r}return n&&t.push({type:"property",value:n}),t},be=(e,t,n)=>{if(!e)return;if(e in n)return n[e];let o=Ta.get(e);if(!o){let r=[],s="",i=0;for(let l=0;l<e.length;l++){let c=e[l];c==="["?(i++,s+=c):c==="]"?(i--,s+=c):c==="."&&i===0?s&&(r.push(s),s=""):s+=c}s&&r.push(s),o=[];for(let l of r){let c=gf(l.trim());o.push(...c)}Ta.set(e,o)}let a=t;for(let r=0;r<o.length;r++){let s=o[r];if(s.type==="property"&&s.value in n){a=n[s.value];continue}if(a==null)return;(s.type==="property"||s.type==="index")&&(a=a[s.value])}return a},bf=(e,t,n,o)=>{let a=[];for(let r of e)if(typeof r=="string")a.push(r);else{let s=ee(r,t,n,o);a.push(s!=null?String(s):"")}return a.join("")},ja=(e,t,n,o)=>{let a=t.functions||t,r=a[e.name];if(!r)throw _a(e.name,a);let s=e.args.map(i=>ee(i,t,n,o));return r(...s)},dr=(e,t,n,o)=>{if(e.var&&!e.type)return be(e.var,n,o);switch(e.type){case x.VARIABLE:return be(e.path,n,o);case x.LITERAL:return e.value;case x.BINARY:return Na(e,t,n,o);case x.UNARY:return Da(e,t,n,o);case x.FUNCTION:return ja(e,t,n,o);default:return ee(e,t,n,o)}},Na=(e,t,n,o)=>{if(e.op===J.AND||e.op===J.OR){let s=dr(e.left,t,n,o),i=dr(e.right,t,n,o);switch(e.op){case J.AND:return s&&i;case J.OR:return s||i}}let a=ee(e.left,t,n,o),r=ee(e.right,t,n,o);switch(e.op){case J.EQ:return a==r;case J.NEQ:return a!=r;case J.GT:return a>r;case J.LT:return a<r;case J.GTE:return a>=r;case J.LTE:return a<=r;case J.IN:return Array.isArray(r)?r.includes(a):!1;case J.ADD:if(typeof a!="number"||typeof r!="number")throw new Oe(`Arithmetic operations require numbers. Got ${typeof a} + ${typeof r}`);return a+r;case J.SUBTRACT:if(typeof a!="number"||typeof r!="number")throw new Oe(`Arithmetic operations require numbers. Got ${typeof a} - ${typeof r}`);return a-r;default:throw new Error(`Unknown binary operator: ${e.op}`)}},Da=(e,t,n,o)=>{let a=e.op===Kr.NOT?dr(e.operand,t,n,o):ee(e.operand,t,n,o);if(e.op===Kr.NOT)return!a;throw new Error(`Unknown unary operator: ${e.op}`)},If=(e,t,n,o)=>{if(e.conditions.length===2&&e.conditions[1]===null){let a=e.conditions[0];if(a.type===x.VARIABLE)if(be(a.path,n,o)){let s=e.bodies[0];if(s.type===x.OBJECT&&s.properties.length<=5){let i={};for(let l of s.properties){let c=l.parsedKey?ee(l.parsedKey,t,n,o):l.key,u=l.value;if(u.type===x.LITERAL)i[c]=u.value;else if(u.type===x.VARIABLE)i[c]=be(u.path,n,o);else if(u.type===x.INTERPOLATION){let p=[];for(let f of u.parts)if(typeof f=="string")p.push(f);else if(f.type===x.VARIABLE){let d=be(f.path,n,o);p.push(d!=null?String(d):"")}else{let d=ee(f,t,n,o);p.push(d!=null?String(d):"")}i[c]=p.join("")}else i[c]=ee(u,t,n,o)}return i}}else{let s=e.bodies[1];if(s.type===x.OBJECT&&s.properties.length<=5){let i={};for(let l of s.properties){let c=l.parsedKey?ee(l.parsedKey,t,n,o):l.key,u=l.value;if(u.type===x.LITERAL)i[c]=u.value;else if(u.type===x.VARIABLE)i[c]=be(u.path,n,o);else if(u.type===x.INTERPOLATION){let p=[];for(let f of u.parts)if(typeof f=="string")p.push(f);else if(f.type===x.VARIABLE){let d=be(f.path,n,o);p.push(d!=null?String(d):"")}else{let d=ee(f,t,n,o);p.push(d!=null?String(d):"")}i[c]=p.join("")}else i[c]=ee(u,t,n,o)}return i}}}return null},wf=(e,t,n,o)=>{let a=If(e,t,n,o);if(a!==null)return a;for(let r=0;r<e.conditions.length;r++){let s=e.conditions[r];if(s===null||dr(s,t,n,o))return ee(e.bodies[r],t,n,o)}return La},kf=(e,t)=>{let n=e.body,o=e.itemVar;if(n.type===x.CONDITIONAL&&n.conditions.length===1&&n.conditions[0].type===x.VARIABLE){let a=n.conditions[0].path,r=n.bodies[0];if(a.startsWith(o+".")){let s=a.substring(o.length+1);if(r.type===x.OBJECT&&r.properties.length<=5){for(let l of r.properties)if(l.parsedKey)return null;let i=[];for(let l=0;l<t.length;l++){let c=t[l];if(c[s]){let u={};for(let p of r.properties){let f=p.key,d=p.value;if(d.type===x.LITERAL)u[f]=d.value;else if(d.type===x.VARIABLE){let m=d.path;if(m===o)u[f]=c;else if(m.startsWith(o+".")){let y=m.substring(o.length+1);u[f]=c[y]}else return null}else if(d.type===x.INTERPOLATION){let m=[],y=!0;for(let g of d.parts)if(typeof g=="string")m.push(g);else if(g.type===x.VARIABLE){let h=g.path;if(h===o)m.push(c!=null?String(c):"");else if(h.startsWith(o+".")){let w=h.substring(o.length+1),b=c[w];m.push(b!=null?String(b):"")}else{y=!1;break}}else{y=!1;break}if(!y)return null;u[f]=m.join("")}else return null}i.push(u)}}return i}}}return null},vf=(e,t)=>{let n=e.body,o=e.itemVar,a=kf(e,t);if(a!==null)return a;if(n.type===x.OBJECT&&n.properties.length<=5&&!n.whenCondition){for(let i of n.properties)if(i.parsedKey)return null;let r=[],s=!0;for(let i of n.properties){let l=i.key,c=i.value;if(c.type===x.LITERAL)r.push({key:l,type:"literal",value:c.value});else if(c.type===x.VARIABLE){let u=c.path;if(u===o)r.push({key:l,type:"item"});else if(u.startsWith(o+".")){let p=u.substring(o.length+1);if(!p.includes(".")&&!p.includes("["))r.push({key:l,type:"prop",prop:p});else{s=!1;break}}else{s=!1;break}}else if(c.type===x.INTERPOLATION&&c.parts.length===1){let u=c.parts[0];if(u.type===x.VARIABLE){let p=u.path;if(p===o)r.push({key:l,type:"item_string"});else if(p.startsWith(o+".")){let f=p.substring(o.length+1);if(!f.includes(".")&&!f.includes("["))r.push({key:l,type:"prop_string",prop:f});else{s=!1;break}}else{s=!1;break}}else{s=!1;break}}else{s=!1;break}}if(s){let i=new Array(t.length);if(r.length===3&&r[0].type==="prop"&&r[0].key==="id"&&r[1].type==="prop_string"&&r[1].key==="title"&&r[2].type==="prop"&&r[2].key==="completed")for(let l=0;l<t.length;l++){let c=t[l];i[l]={id:c.id,title:c.title!=null?String(c.title):"",completed:c.completed}}else for(let l=0;l<t.length;l++){let c=t[l],u={};for(let p of r)if(p.type==="literal")u[p.key]=p.value;else if(p.type==="item")u[p.key]=c;else if(p.type==="prop")u[p.key]=c[p.prop];else if(p.type==="item_string")u[p.key]=c!=null?String(c):"";else if(p.type==="prop_string"){let f=c[p.prop];u[p.key]=f!=null?String(f):""}i[l]=u}return i}}return null},Af=(e,t,n,o,a)=>{let r=[],s=e.body;if(s.type===x.OBJECT&&s.fast!==!1){let i=e.itemVar,l=e.indexVar;for(let c=0;c<a.length;c++){let u=a[c],p={},f={...o,[i]:u,...l&&{[l]:c}};f.__paths__||(f.__paths__=o.__paths__||{});let d=e.iterable.path||"";if(o&&o.__paths__&&d){let m=d.split("."),y=m[0];y in o.__paths__&&(d=o.__paths__[y],m.length>1&&(d+="."+m.slice(1).join(".")))}f.__paths__={...f.__paths__,[i]:`${d}[${c}]`,...l&&{[l]:c}};for(let m of s.properties){let y=m.parsedKey?ee(m.parsedKey,t,n,f):m.key,g=m.value;if(g.type===x.LITERAL)p[y]=g.value;else if(g.type===x.VARIABLE){let h=g.path;if(h===i)p[y]=u;else if(h===l)p[y]=c;else if(h.startsWith(i+".")){let w=h.substring(i.length+1);!w.includes(".")&&!w.includes("[")?p[y]=u[w]:p[y]=be(h,n,{...o,[i]:u,...l&&{[l]:c}})}else p[y]=be(h,n,{...o,[i]:u,...l&&{[l]:c}})}else if(g.type===x.INTERPOLATION){let h=[];for(let w of g.parts)if(typeof w=="string")h.push(w);else if(w.type===x.VARIABLE){let b=w.path,E;if(b===i)E=u;else if(b===l)E=c;else if(b.startsWith(i+".")){let v=b.substring(i.length+1);!v.includes(".")&&!v.includes("[")?E=u[v]:E=be(b,n,{...o,[i]:u,...l&&{[l]:c}})}else E=be(b,n,{...o,[i]:u,...l&&{[l]:c}});h.push(E!=null?String(E):"")}else{let b={...o,[i]:u,...l&&{[l]:c}},E=ee(w,t,n,b);h.push(E!=null?String(E):"")}p[y]=h.join("")}else{let h={...o,[i]:u,...l&&{[l]:c}};p[y]=ee(g,t,n,h)}}r.push(p)}return r}return null},Pf=(e,t,n)=>{let o=e.body;if(o.type===x.OBJECT&&o.properties.length===1&&o.properties[0].key==="$if item.visible"){let r=o.properties[0].value;if(r.type===x.CONDITIONAL&&r.conditions.length===1&&r.conditions[0].type===x.VARIABLE&&r.conditions[0].path==="item.visible"){let s=r.bodies[0];if(s.type===x.OBJECT&&s.properties.length===2){let i=s.properties[0],l=s.properties[1];if(i.key==="id"&&i.value.type===x.VARIABLE&&i.value.path==="item.id"&&l.key==="$if item.highlighted"&&l.value.type===x.CONDITIONAL){let c=[];for(let u=0;u<t.length;u++){let p=t[u];if(p.visible){let f={id:p.id};p.highlighted?(f.highlight=!0,f.message=`This item is highlighted: ${p.name}`):(f.highlight=!1,f.message=p.name),c.push(f)}}return c}}}}return null},xf=(e,t,n,o)=>{let a=ee(e.iterable,t,n,o);if(!Array.isArray(a)){let c,u=!1;if(e.iterable.type===x.FUNCTION){u=!0;let f=e.iterable.args.map(d=>d.type===x.LITERAL?typeof d.value=="string"?`'${d.value}'`:String(d.value):d.type===x.VARIABLE?d.path:d.type===x.FUNCTION?`${d.name}(...)`:"?").join(", ");c=`${e.iterable.name}(${f})`}else c=e.iterable.path||"undefined";let p=`${e.itemVar}${e.indexVar?`, ${e.indexVar}`:""} in ${c}`;throw $a(p,a,u)}if(!e.indexVar){let c=Pf(e,a,e.itemVar);if(c!==null)return c}if(!e.indexVar){let c=vf(e,a);if(c!==null)return c}let r=Af(e,t,n,o,a);if(r!==null)return r;let s=[],i=e.iterable.path||"";if(o&&o.__paths__&&i){let c=i.split("."),u=c[0];u in o.__paths__&&(i=o.__paths__[u],c.length>1&&(i+="."+c.slice(1).join(".")))}let l=!1;e.body.type===x.ARRAY&&(e.body.items.length<=1?l=!1:l=e.body._shouldPreserveArray??=e.body.items.some(c=>c.type===x.OBJECT&&c.properties.some(u=>u.key.startsWith("$if ")||u.key.startsWith("$when "))));for(let c=0;c<a.length;c++){let u=e.indexVar?{...o,[e.itemVar]:a[c],[e.indexVar]:c}:{...o,[e.itemVar]:a[c]};u.__paths__||(u.__paths__=o.__paths__||{}),u.__paths__={...u.__paths__,[e.itemVar]:`${i}[${c}]`},e.indexVar&&(u.__paths__[e.indexVar]=c);let p=ee(e.body,t,n,u);if(Array.isArray(p)&&p.length===1&&!l){let f=p[0];s.push(f===void 0?{}:f)}else s.push(p===void 0?{}:p)}return s},Ef=(e,t,n,o)=>{if(e.whenCondition)return null;if(e.properties.length===1){let a=e.properties[0],r=a.parsedKey?ee(a.parsedKey,t,n,o):a.key,s=a.value;if(s.type===x.OBJECT&&s.properties.length<=10&&!s.whenCondition){let i={},l={},c=!0;for(let u of s.properties){let p=u.parsedKey?ee(u.parsedKey,t,n,o):u.key,f=u.value;if(f.type===x.LITERAL)l[p]=f.value;else if(f.type===x.VARIABLE)l[p]=be(f.path,n,o);else if(f.type===x.INTERPOLATION){let d=[];for(let m of f.parts)if(typeof m=="string")d.push(m);else if(m.type===x.VARIABLE){let y=be(m.path,n,o);d.push(y!=null?String(y):"")}else{c=!1;break}if(!c)break;l[p]=d.join("")}else if(f.type===x.OBJECT&&f.properties.length<=5){let d={};for(let m of f.properties){let y=m.key,g=m.value;if(g.type===x.LITERAL)d[y]=g.value;else if(g.type===x.VARIABLE)d[y]=be(g.path,n,o);else if(g.type===x.INTERPOLATION){let h=[];for(let w of g.parts)if(typeof w=="string")h.push(w);else if(w.type===x.VARIABLE){let b=be(w.path,n,o);h.push(b!=null?String(b):"")}else{c=!1;break}if(!c)break;d[y]=h.join("")}else{c=!1;break}}if(!c)break;l[p]=d}else{c=!1;break}}if(c)return i[r]=l,i}}return null},Sf=(e,t,n,o)=>{let a=t.functions||t;if(e.whenCondition&&!dr(e.whenCondition,a,n,o))return;let r=Ef(e,t,n,o);if(r!==null)return r;if(e.fast){let c={};for(let u of e.properties){let p=u.parsedKey?ee(u.parsedKey,t,n,o):u.key,f=u.value;if(f.type===x.LITERAL)c[p]=f.value;else if(f.type===x.VARIABLE)c[p]=be(f.path,n,o);else if(f.type===x.INTERPOLATION){let d=[];for(let m of f.parts)if(typeof m=="string")d.push(m);else if(m.type===x.VARIABLE){let y=be(m.path,n,o);d.push(y!=null?String(y):"")}else{let y=ee(m,t,n,o);d.push(y!=null?String(y):"")}c[p]=d.join("")}else c[p]=ee(f,t,n,o)}return c}let s={},i=null,l=!1;for(let c of e.properties)if(!c.key.startsWith("$if ")&&!c.key.match(/^\$if\s+\w+.*:?$/)&&!c.key.startsWith("$elif")&&!c.key.startsWith("$else")&&!c.key.startsWith("$for ")){l=!0;break}for(let c of e.properties)if(c.key.startsWith("$if ")||c.key.match(/^\$if\s+\w+.*:?$/)){let u=ee(c.value,t,n,o);if(!l&&u!==null&&u!==void 0)return Array.isArray(u)&&u.length===1?u[0]:u;typeof u=="object"&&u!==null&&!Array.isArray(u)&&Object.assign(s,u)}else if(c.key.startsWith("$for ")){if(e.properties.length===1)return ee(c.value,t,n,o)}else{let u=c.value;if(u&&u.type===x.OBJECT&&u.properties){let p=u.properties.find(f=>f.key.startsWith("$for "));if(p){let f=ee(p.value,t,n,o);f!==void 0&&(s[c.key]=f)}else{let f=ee(c.value,t,n,o);f!==void 0&&(s[c.key]=f)}}else{let p=c.parsedKey?ee(c.parsedKey,t,n,o):c.key,f=ee(c.value,t,n,o);f!==void 0&&(s[p]=f)}}return s},La={},Of=(e,t,n,o)=>{let a=[];for(let r of e.items)if(r.type===x.LOOP){let s=ee(r,t,n,o);Array.isArray(s)&&r.flatten!==!1?a.push(...s):a.push(s)}else{let s=ee(r,t,n,o);s!==La&&s!==void 0&&a.push(s)}return a},Rf=(e,t,n,o)=>{let{name:a,data:r,whenCondition:s}=e,i=t.partials||{},l=t.functions||t;if(s&&!dr(s,l,n,o))return;if(!i[a])throw new Oe(`Partial '${a}' is not defined`);let c=o._partialStack||[];if(c.includes(a))throw new Oe(`Circular partial reference detected: ${a}`);let u=i[a],p=n,f={...o,_partialStack:[...c,a]};if(o){p={...n};for(let d of Object.keys(o))d.startsWith("_")||(p[d]=o[d])}if(r){let d=ee(r,t,n,o);p={...p,...d}}return ee(u,t,p,f)},Cf=(e,t,n,o)=>{let{path:a}=e,r=a.split("."),s=r[0],i=r.slice(1);if(!o||!(s in o))throw new Oe(`Path reference '#{${a}}' refers to '${s}' which is not a loop variable in the current scope`);if(o.__paths__||(o.__paths__={}),!(s in o.__paths__))throw new Oe(`Path reference '#{${a}}' cannot be resolved - path tracking may not be initialized properly`);let l=o.__paths__[s];if(typeof l=="number"){if(i.length>0)throw new Oe(`Path reference '#{${a}}' - cannot access properties on index variable '${s}'`);return String(l)}return i.length>0&&(l+="."+i.join(".")),l};var co=hf;var $f=/\$\{([^}]*)\}/g,_f=/#\{([^}]*)\}/g,Va=(e,t={})=>{let n=e.match(/^(\w+)\((.*)\)$/);if(!n)return{isFunction:!1};let[,o,a]=n,r=Tf(a,t);return{isFunction:!0,type:x.FUNCTION,name:o,args:r}},Tf=(e,t={})=>e.trim()?jf(e).map(o=>Nf(o.trim(),t)):[],jf=e=>{let t=[],n="",o=0,a=!1,r="";for(let s=0;s<e.length;s++){let i=e[s],l=s>0?e[s-1]:"";!a&&(i==='"'||i==="'")?(a=!0,r=i,n+=i):a&&i===r&&l!=="\\"?(a=!1,r="",n+=i):!a&&i==="("?(o++,n+=i):!a&&i===")"?(o--,n+=i):!a&&i===","&&o===0?(t.push(n),n=""):n+=i}return n&&t.push(n),t},Nf=(e,t={})=>{if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return{type:x.LITERAL,value:e.slice(1,-1)};if(/^-?\d+(\.\d+)?$/.test(e))return{type:x.LITERAL,value:parseFloat(e)};if(e==="true")return{type:x.LITERAL,value:!0};if(e==="false")return{type:x.LITERAL,value:!1};if(e==="null")return{type:x.LITERAL,value:null};let n=Va(e,t);if(n.isFunction)return{type:n.type,name:n.name,args:n.args};let o=e.trim(),a=[{op:" + ",type:"ADD"},{op:" - ",type:"SUBTRACT"}],r=-1,s=null;for(let{op:i,type:l}of a){let c=0;for(;c<o.length;){let u=Tr(o.substring(c),i);if(u===-1)break;let p=c+u;p>r&&(r=p,s={op:i,type:l}),c=p+i.length}}if(r!==-1)try{return ke(o,t)}catch{return{type:x.VARIABLE,path:o}}return{type:x.VARIABLE,path:o}},qa=/^\w+\(.*\)$/,Df=/\s[+\-*/%]\s|\|\||&&|\?\?|.*\?.*:/,Lf=e=>{if(!(!e||e.trim()===""||qa.test(e))&&Df.test(e))throw e.includes("?")&&e.includes(":")?new N(`Complex expressions not supported in variable replacements - consider calculating the value in your data instead. Offending expression: "${e}"`):e.includes("||")||e.includes("&&")||e.includes("??")?new N(`Logical operators not supported in variable replacements - consider calculating the value in your data instead (operators like ||, &&, ?? are not supported). Offending expression: "${e}"`):new N(`Arithmetic expressions not supported in variable replacements - consider calculating '${e}' in your data instead (expressions with +, -, *, /, % are not supported). Offending expression: "${e}"`)},Ma=e=>{let t=e.trim();if(qa.test(t))throw new N(`Functions are not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(t.includes("["))throw new N(`Array indices not supported in path references - use simple variable names or properties. Offending expression: "#{${e}}"`);if(/[+\-*/%]/.test(t))throw new N(`Arithmetic expressions not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(/\|\||&&/.test(t))throw new N(`Logical operators not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(t.includes("?")&&t.includes(":"))throw new N(`Complex expressions not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);return{type:x.PATH_REFERENCE,path:t}},wt=(e,t={})=>{let n=e.trim();Lf(n);let o=Va(n,t);if(o.isFunction)return{type:o.type,name:o.name,args:o.args};if(n.includes("[")&&!/[\s+\-*/%|&?:]/.test(n)){let a=0;for(let r of n)r==="["?a++:r==="]"&&a--;if(a!==0)throw new Error("Invalid array index syntax")}return{type:x.VARIABLE,path:n}},uo=(e,t={})=>{let n=e,o=[];(e.includes("\\${")||e.includes("\\#{"))&&(n=e.replace(/\\\\(\$\{[^}]*\})/g,"\\DOUBLE_ESC_VAR$1"),n=n.replace(/\\\\(#\{[^}]*\})/g,"\\DOUBLE_ESC_PATH$1"),n=n.replace(/\\(\$\{[^}]*\})/g,(c,u)=>{let p=`__ESCAPED_${o.length}__`;return o.push(u),p}),n=n.replace(/\\(#\{[^}]*\})/g,(c,u)=>{let p=`__ESCAPED_${o.length}__`;return o.push(u),p}),n=n.replace(/\\DOUBLE_ESC_VAR/g,"\\"),n=n.replace(/\\DOUBLE_ESC_PATH/g,"\\"));let a=[...n.matchAll($f)],r=[...n.matchAll(_f)],s=[...a.map(c=>({match:c,type:"variable"})),...r.map(c=>({match:c,type:"pathref"}))].sort((c,u)=>c.match.index-u.match.index);if(s.length===0){let c=n;for(let u=0;u<o.length;u++)c=c.replace(`__ESCAPED_${u}__`,o[u]);return{type:x.LITERAL,value:c}}if(s.length===1&&s[0].match[0]===n&&o.length===0){let{match:c,type:u}=s[0];try{return u==="variable"?wt(c[1],t):Ma(c[1])}catch(p){if(p.message==="Invalid array index syntax")return{type:x.LITERAL,value:n};throw p}}let i=[],l=0;for(let{match:c,type:u}of s){let[p,f]=c,d=c.index;if(d>l){let m=n.substring(l,d);for(let y=0;y<o.length;y++)m=m.replace(`__ESCAPED_${y}__`,o[y]);m&&i.push(m)}try{let m;u==="variable"?m=wt(f.trim(),t):m=Ma(f.trim()),i.push(m)}catch(m){if(m.message==="Invalid array index syntax")i.push(p);else throw m}l=d+p.length}if(l<n.length){let c=n.substring(l);for(let u=0;u<o.length;u++)c=c.replace(`__ESCAPED_${u}__`,o[u]);c&&i.push(c)}return{type:x.INTERPOLATION,parts:i}};var mo=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Ba=e=>Object.keys(e),Ee=e=>e.join("."),fr=(e,t,n)=>{let o=Ba(e).filter(a=>!t.has(a));if(o.length>0)throw new N(`Unexpected key '${o[0]}' in condition JSON at '${Ee(n)}'`)},mr=(e,t)=>typeof e=="string"?uo(e,t):typeof e=="object"&&e!==null?Array.isArray(e)?Vf(e,t):qf(e,t):{type:x.LITERAL,value:e},Mf=e=>{let{$each:t,...n}=e;if(typeof t!="string")throw new N("$each value must be a non-empty string");let o=t.trim();if(o==="")throw new N("$each value must be a non-empty string");if(Object.keys(n).length===0)throw new N("Empty $each body not allowed");if(n.$partial!==void 0)throw new N("Cannot use $partial with $each at the same level. Wrap $partial in a parent object if you need conditionals.");return{[`$for ${o}`]:n}},Vf=(e,t)=>{let n=[],o=!1;for(let a=0;a<e.length;a++){let r=e[a];if(typeof r=="object"&&r!==null&&!Array.isArray(r)){if(r.$each!==void 0)try{let l=Mf(r),c=Object.keys(l);if(c.length===1&&/^\$for(?::\w+)?\s/.test(c[0])){let u=Ua(c[0],l[c[0]],t,!0);n.push(u),o=!0;continue}}catch(l){throw l instanceof N?l:new N(l.message)}let i=Object.keys(r);if(i.length===1&&/^\$for(?::\w+)?\s/.test(i[0])){let l=Ua(i[0],r[i[0]],t);n.push(l),o=!0;continue}}let s=mr(r,t);n.push(s),(s.type===x.FUNCTION||s.type===x.CONDITIONAL||s.type===x.LOOP||s.type===x.PARTIAL||s.type===x.OBJECT&&!s.fast||s.type===x.ARRAY&&!s.fast)&&(o=!0)}return{type:x.ARRAY,items:n,fast:!o}},qf=(e,t)=>{let n=[],o=!1,a=null,r=Object.entries(e),s=0;if(e.$partial!==void 0){if(typeof e.$partial!="string")throw new N("$partial value must be a string");if(e.$partial.trim()==="")throw new N("$partial value cannot be an empty string");let l=["$if","$elif","$else","$for"],c=[];for(let[h]of r)for(let w of l)if(h===w||h.startsWith(w+" ")||h.startsWith(w+"#")){c.push(w);break}if(c.length>0)throw new N(`Cannot use $partial with ${c.join(", ")} at the same level. Wrap $partial in a parent object if you need conditionals.`);let{$partial:u,$when:p,...f}=e,d={},m=!1;for(let[h,w]of Object.entries(f)){let b=h;(h.startsWith("\\$")||h.startsWith("$$"))&&(b=h.slice(1)),d[b]=w,m=!0}let y=null;if(m&&(y=mr(d,t),y.type===x.OBJECT)){let h=!1;for(let w of y.properties)if(w.value.type===x.VARIABLE||w.value.type===x.INTERPOLATION||w.value.type===x.FUNCTION||w.value.type===x.CONDITIONAL||w.value.type===x.OBJECT&&!w.value.fast||w.value.type===x.ARRAY&&!w.value.fast){h=!0;break}h&&(y.fast=!1)}let g={type:x.PARTIAL,name:u,data:y};return p!==void 0&&(g.whenCondition=Fa(p,t)),g}for(let[l,c]of r)if(l==="$when"){if(a!==null)throw new N("Multiple '$when' directives on the same object are not allowed");if(c==null)throw new N("Missing condition expression after '$when'");a=Fa(c,t),o=!0}else if(l.startsWith("$when#")||l.startsWith("$when "))throw new N("'$when' does not support ID syntax or inline conditions - use '$when' as a property");for(;s<r.length;){let[l,c]=r[s];if(l==="$when"){s++;continue}if(l==="$each")throw new N("$each can only be used inside arrays");if(l.startsWith("$if ")||l.match(/^\$if#\w+\s/)||l.match(/^\$if\s+\w+.*:$/)){let u=Ff(r,s,t);n.push({key:l,value:u.node}),o=!0,s=u.nextIndex}else if(/^\$for(?::\w+)?\s/.test(l)){let u=l.match(/^\$for(?::(\w+))?\s/)?.[1]||"",p=u?`:${u}`:"";throw new N(`$for loops must be inside arrays - use '- $for${p} item in items:' instead of '$for${p} item in items:'. For cleaner object generation syntax, consider using $each.`)}else{if(l.startsWith("$elif ")||l.startsWith("$else"))throw new N(`'${l.split(" ")[0]}' without matching '$if'`);if(l==="$if"||l==="$if:")throw new N("Missing condition expression after '$if'");{let u=mr(c,t);(u.type===x.FUNCTION||u.type===x.CONDITIONAL||u.type===x.PARTIAL||u.type===x.OBJECT&&!u.fast||u.type===x.ARRAY&&!u.fast)&&(o=!0);let p=uo(l,t),f={key:l,value:u};(p.type!==x.LITERAL||p.value!==l)&&(f.parsedKey=p),n.push(f),s++}}}let i={type:x.OBJECT,properties:n,fast:!o};return a&&(i.whenCondition=a),i},Ff=(e,t,n={})=>{let o=[],a=[],r=t,[s,i]=e[r],l=null,c;if(s.startsWith("$if#")){let p=s.match(/^\$if#(\w+)\s+(.+)$/);if(p)l=p[1],c=p[2];else throw new N(`Invalid conditional syntax: ${s}`)}else c=s.substring(4),c.endsWith(":")&&(c=c.slice(0,-1).trim());lo(c);let u=ke(c,n);for(o.push(u),a.push(mr(i,n)),r++;r<e.length;){let[p,f]=e[r],d=!1,m;if(l?p.startsWith(`$elif#${l} `)?(m=p.substring(`$elif#${l} `.length),m.endsWith(":")&&(m=m.slice(0,-1).trim()),d=!0):(p===`$else#${l}`||p===`$else#${l}:`)&&(d=!0,m=null):p.startsWith("$elif ")?(m=p.substring(6),m.endsWith(":")&&(m=m.slice(0,-1).trim()),d=!0):(p==="$else"||p==="$else:")&&(d=!0,m=null),d){if(m===null)o.push(null);else{lo(m);let y=ke(m,n);o.push(y)}if(a.push(mr(f,n)),r++,m===null)break}else break}return{node:{type:x.CONDITIONAL,conditions:o,bodies:a,id:l},nextIndex:r}},po={eq:J.EQ,neq:J.NEQ,gt:J.GT,gte:J.GTE,lt:J.LT,lte:J.LTE,in:J.IN,add:J.ADD,sub:J.SUBTRACT},fo={all:J.AND,any:J.OR},Uf=new Set(["var","literal","call","not",...Object.keys(po),...Object.keys(fo)]),Bf=(e,t,n)=>{if(!Array.isArray(e))throw new N(`Condition JSON operator '${t}' at '${Ee(n)}' requires an array`);if(e.length!==2)throw new N(`Condition JSON operator '${t}' at '${Ee(n)}' requires exactly 2 operands`);return e},Yf=(e,t,n,o,a)=>{if(!Array.isArray(e))throw new N(`Condition JSON operator '${t}' at '${Ee(a)}' requires an array`);if(e.length===0)throw new N(`Condition JSON operator '${t}' at '${Ee(a)}' requires at least 1 condition`);return e.map((s,i)=>$e(s,o,[...a,i])).reduce((s,i)=>({type:x.BINARY,op:n,left:s,right:i}))},zf=(e,t,n)=>{let o,a;if(typeof e.call=="string")o=e.call,a=e.args??[],fr(e,new Set(["call","args"]),n);else if(mo(e.call))o=e.call.name,a=e.call.args??[],fr(e,new Set(["call"]),n),fr(e.call,new Set(["name","args"]),[...n,"call"]);else throw new N(`Condition JSON call at '${Ee(n)}' requires a function name`);if(typeof o!="string"||o.trim()==="")throw new N(`Condition JSON call at '${Ee(n)}' requires a non-empty function name`);if(!/^\w+$/.test(o))throw new N(`Invalid condition JSON function name '${o}' at '${Ee(n)}'`);if(!Array.isArray(a))throw new N(`Condition JSON call '${o}' at '${Ee(n)}' requires args to be an array`);return{type:x.FUNCTION,name:o,args:a.map((r,s)=>$e(r,t,[...n,"args",s]))}},$e=(e,t={},n=["$when"])=>{if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null)return{type:x.LITERAL,value:e};if(Array.isArray(e))throw new N(`Condition JSON array at '${Ee(n)}' must be wrapped in an operator or { literal: [...] }`);if(!mo(e))throw new N(`Invalid condition JSON value at '${Ee(n)}'`);let o=Ba(e);if(o.length===0)throw new N(`Condition JSON object at '${Ee(n)}' must contain an operator`);let a=o.filter(s=>Uf.has(s));if(a.length===0)throw new N(`Unknown condition JSON operator '${o[0]}' at '${Ee(n)}'`);if(a.length>1)throw new N(`Condition JSON at '${Ee(n)}' must contain exactly one operator`);let r=a.includes("call")?"call":a[0];if(r==="var"){if(fr(e,new Set(["var"]),n),typeof e.var!="string"||e.var.trim()==="")throw new N(`Condition JSON var at '${Ee(n)}' requires a non-empty path`);return{type:x.VARIABLE,path:e.var}}if(r==="literal")return fr(e,new Set(["literal"]),n),{type:x.LITERAL,value:e.literal};if(r==="call")return zf(e,t,n);if(r==="not")return fr(e,new Set(["not"]),n),{type:x.UNARY,op:Kr.NOT,operand:$e(e.not,t,[...n,"not"])};if(r in fo)return fr(e,new Set([r]),n),Yf(e[r],r,fo[r],t,[...n,r]);if(r in po){fr(e,new Set([r]),n);let s=Bf(e[r],r,[...n,r]);return{type:x.BINARY,op:po[r],left:$e(s[0],t,[...n,r,0]),right:$e(s[1],t,[...n,r,1])}}throw new N(`Unknown condition JSON operator '${r}' at '${Ee(n)}'`)},Fa=(e,t={})=>{if(e==null)throw new N("Missing condition expression after '$when'");if(typeof e=="string"){if(e.trim()==="")throw new N("Empty condition expression after '$when'");return ke(e,t)}return mo(e)||Array.isArray(e)?$e(e,t):{type:x.LITERAL,value:e}},ke=(e,t={})=>{if(e=e.trim(),e.startsWith("(")&&e.endsWith(")")){let c=e.slice(1,-1),u=0,p=!0;for(let f=0;f<c.length;f++)if(c[f]==="("?u++:c[f]===")"&&u--,u<0){p=!1;break}if(p&&u===0)return ke(c,t)}let n=Tr(e,"||");if(n!==-1)return{type:x.BINARY,op:J.OR,left:ke(e.substring(0,n).trim(),t),right:ke(e.substring(n+2).trim(),t)};let o=Tr(e,"&&");if(o!==-1)return{type:x.BINARY,op:J.AND,left:ke(e.substring(0,o).trim(),t),right:ke(e.substring(o+2).trim(),t)};let a=[{op:">=",type:J.GTE},{op:"<=",type:J.LTE},{op:"==",type:J.EQ},{op:"!=",type:J.NEQ},{op:">",type:J.GT},{op:"<",type:J.LT},{op:" in ",type:J.IN}];for(let{op:c,type:u}of a){let p=Tr(e,c);if(p!==-1)return{type:x.BINARY,op:u,left:ke(e.substring(0,p).trim(),t),right:ke(e.substring(p+c.length).trim(),t)}}let r=-1,s=null,i=[{op:" + ",type:J.ADD},{op:" - ",type:J.SUBTRACT}];for(let{op:c,type:u}of i){let p=0;for(;p<e.length;){let f=Tr(e.substring(p),c);if(f===-1)break;let d=p+f;d>r&&(r=d,s={op:c,type:u}),p=d+c.length}}if(r!==-1&&s)return{type:x.BINARY,op:s.type,left:ke(e.substring(0,r).trim(),t),right:ke(e.substring(r+s.op.length).trim(),t)};let l=[" * "," / "," % "];for(let c of l)if(Tr(e,c)!==-1)throw new N(`Arithmetic operations are not allowed in conditionals: "${c}"`);return e.startsWith("!")?{type:x.UNARY,op:Kr.NOT,operand:ke(e.substring(1).trim(),t)}:Ya(e,t)},Tr=(e,t)=>{let n=0,o=0;for(;o<=e.length-t.length;){if(e[o]==="(")n++;else if(e[o]===")")n--;else if(n===0&&e.substring(o,o+t.length)===t)return o;o++}return-1},Gf=e=>{if(e=e.trim(),e==="true")return{type:x.LITERAL,value:!0};if(e==="false")return{type:x.LITERAL,value:!1};if(e==="null")return{type:x.LITERAL,value:null};if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return{type:x.LITERAL,value:e.slice(1,-1)};if(e==='""'||e==="''")return{type:x.LITERAL,value:""};if(e==="{}")return{type:x.LITERAL,value:{}};if(e==="[]")return{type:x.LITERAL,value:[]};let t=Number(e);return!isNaN(t)&&isFinite(t)?{type:x.LITERAL,value:t}:{type:x.VARIABLE,path:e}},Ya=(e,t)=>{let n=e.trim();if(n.match(/^(\w+)\((.*)\)$/))return wt(n,t);let a=Gf(n);if(a.type===x.LITERAL)return a;if(/^[a-zA-Z_$][\w.$]*$/.test(n))return{type:x.VARIABLE,path:n};try{return wt(n,t)}catch(r){if(r.message&&r.message.includes("not supported"))return a;throw r}},Hf=(e,t=!1)=>{let n=t?"$each":"$for";try{Ca(e)}catch(o){if(o instanceof N&&t){let a=o.message.replace(/\$for/g,"$each");throw new N(a.replace("Parse Error: ",""))}throw o}},Ua=(e,t,n,o=!1)=>{let a=/^\$for(?::(\w+))?\s+(.+)$/,r=e.match(a);if(!r){let g=o?"$each":"$for";throw new N(`Invalid loop syntax (got: '${e.replace("$for",g)}')`)}let s=r[1],i=r[2].trim();Hf(i,o);let l=i.match(/^(.+?)\s+in\s+(.+)$/);if(!l){let g=o?"$each":"$for";throw new N(`Invalid loop syntax - missing 'in' keyword (got: '${g} ${i}')`)}let c=l[1].trim(),u=l[2].trim(),p,f=null;if(c.includes(",")){let g=c.split(",").map(h=>h.trim());if(g.length!==2)throw new N(`Invalid loop variables: ${c}. Expected format: "item" or "item, index"`);p=g[0],f=g[1]}else p=c;let d=["this","undefined","null","true","false"];if(d.includes(p))throw new N(`Reserved variable name: ${p}`);if(f&&d.includes(f))throw new N(`Reserved variable name: ${f}`);let m=Ya(u,n),y=mr(t,n);return{type:x.LOOP,itemVar:p,indexVar:f,iterable:m,body:y,flatten:s!=="nested"}};var Xf=(e,t={})=>{let{functions:n={}}=t;return mr(e,n)},In=Xf;var kt={};of(kt,{now:()=>Wf});var Wf=()=>Date.now();var Kf=(e,t,n={})=>{let{functions:o={},partials:a={}}=n,r={...kt,...o},s=In(e,{functions:r}),i={};for(let[l,c]of Object.entries(a))i[l]=In(c,{functions:r});return co(s,t,{functions:r,partials:i})},jr=Kf;var Jf=e=>e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.type=="number",Qf=(e={})=>!e||typeof e!="object"?{}:Object.prototype.hasOwnProperty.call(e,"functions")||Object.prototype.hasOwnProperty.call(e,"partials")?e.functions||{}:e,Zf=(e,t)=>{if(Jf(e))return e;if(typeof e=="string"){if(e.trim()==="")throw new N("Empty condition expression");return ke(e,t)}return $e(e,t)},em=(e,t={},n={})=>{let o=Qf(n),a={...kt,...o},r=Zf(e,a);return!!dr(r,{functions:a,partials:{}},t,{})},yo=em;var Po=Symbol("runStoreTransaction"),Io="__routeEngineConditionComparison",wn=(e,t)=>typeof e=="number"&&typeof t=="number"&&Number.isFinite(e)&&Number.isFinite(t)||typeof e=="string"&&typeof t=="string",yr=Object.freeze({eq:(e,t)=>e===t,neq:(e,t)=>e!==t,gt:(e,t)=>wn(e,t)&&e>t,gte:(e,t)=>wn(e,t)&&e>=t,lt:(e,t)=>wn(e,t)&&e<t,lte:(e,t)=>wn(e,t)&&e<=t}),Qa=Object.freeze(Object.fromEntries(Object.keys(yr).map(e=>[e,`${Io}${e}`]))),rm=Object.freeze(Object.fromEntries(Object.entries(Qa).map(([e,t])=>[t,yr[e]]))),za=(e,t)=>Object.prototype.hasOwnProperty.call(e??{},t),tm=e=>{if(typeof e?.call=="string")return e.call;if(e?.call!==null&&typeof e?.call=="object"&&!Array.isArray(e.call))return e.call.name},kn=e=>{if(Array.isArray(e))return e.map(kn);if(e===null||typeof e!="object"||za(e,"literal")||za(e,"var"))return e;if(tm(e)?.startsWith(Io))throw new Error(`Condition function names beginning with "${Io}" are reserved`);let n=Object.entries(e);if(n.length===1){let[[o,a]]=n,r=Qa[o];if(r)return{call:r,args:a.map(kn)}}return Object.fromEntries(n.map(([o,a])=>[o,kn(a)]))},At=(e,t={})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");return $e(e),yo(kn(e),t,{functions:rm})},nm=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Za=(e,t,n={})=>{let o={},a={},{transformSelectorFirstArgument:r=y=>y,transformActionFirstArgument:s=y=>y,createTransactionalMetadata:i,updateTransactionalMetadata:l,finalizeTransactionalMetadata:c}=n,u=typeof i=="function",p={state:structuredClone(e),...u?{transactionalMetadata:structuredClone(i())}:{}},f=0,d=(y,g)=>!u||!c?y:bn(y,h=>{c({state:h.state,transactionalMetadata:h.transactionalMetadata,previousState:g.state,previousTransactionalMetadata:g.transactionalMetadata})});for(let[y,g]of Object.entries(t))y!=="createInitialState"&&(y.startsWith("select")?o[y]=(...h)=>g(r(p.state,p.transactionalMetadata),...h):a[y]=(...h)=>{let w,b=p,E=bn(p,v=>{let P=g(s(v.state,v.transactionalMetadata),...h);w=P!==void 0&&!we(P)?P:void 0,u&&l&&l({actionName:y,args:h,state:v.state,transactionalMetadata:v.transactionalMetadata,previousState:b.state,previousTransactionalMetadata:b.transactionalMetadata})});return f===0&&(E=d(E,b)),p=E,w});let m=y=>{if(typeof y!="function")throw new Error("Store transaction requires a callback");let g=p,h=f===0;f+=1;let w;try{w=y()}catch(b){throw f-=1,p=g,b}if(f-=1,h)try{p=d(p,g)}catch(b){throw p=g,b}return w};return{...o,...a,[Po]:m}},xn=(e,t)=>n=>{let o=e(),a=Array.isArray(n)?n:[n];return bn(o,r=>{a.forEach(s=>{t.forEach(i=>{i(r,s)})})})};var sm=(e,t)=>{if(e.default!==void 0)return e.default;let n=["number","boolean","string","object"];if(!n.includes(e.type))throw new Error(`Invalid variable type: ${e.type} for variable ${t}. Expected one of: ${n.join(", ")}`);switch(e.type){case"number":return 0;case"boolean":return!1;case"string":return"";case"object":return{}}},W=(e,t)=>Object.prototype.hasOwnProperty.call(e??{},t),wo=(e,t,n)=>{Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0})},Ie=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),om=new Set(["pageSize","groups"]),im=new Set(["id","variants"]),am=new Set(["id","imageId"]),lm=new Set(["pageSize","tracks"]),cm=new Set(["id","soundId","title","artist","album","description","coverImageId"]),um=new Set(["pageSize","replays"]),pm=new Set(["sceneId","title","thumbnailImageId","initialVariables"]),Nr=(e,t,n)=>{Object.keys(e).forEach(o=>{if(!t.has(o))throw new Error(`${n} contains unsupported property "${o}"`)})},Jr=(e,t)=>{if(typeof e!="string"||e.length===0)throw new Error(`${t} must be a non-empty string`)},Pt=(e={})=>{let t=e?.resources?.imageGallery;if(t===void 0)return;if(!Ie(t))throw new Error("resources.imageGallery must be an object");if(Nr(t,om,"resources.imageGallery"),!Number.isInteger(t.pageSize)||t.pageSize<1)throw new Error("resources.imageGallery.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(t.groups))throw new Error("resources.imageGallery.groups must be an array");let n=new Set;for(let[o,a]of t.groups.entries()){let r=`resources.imageGallery.groups[${o}]`;if(!Ie(a))throw new Error(`${r} must be an object`);if(Nr(a,im,r),Jr(a.id,`${r}.id`),n.has(a.id))throw new Error(`Duplicate image gallery group id "${a.id}"`);if(n.add(a.id),!Array.isArray(a.variants)||a.variants.length===0)throw new Error(`${r}.variants must be a non-empty array`);let s=new Set;for(let[i,l]of a.variants.entries()){let c=`${r}.variants[${i}]`;if(!Ie(l))throw new Error(`${c} must be an object`);if(Nr(l,am,c),Jr(l.id,`${c}.id`),Jr(l.imageId,`${c}.imageId`),s.has(l.id))throw new Error(`Duplicate image gallery variant id "${l.id}" in group "${a.id}"`);if(s.add(l.id),!W(e?.resources?.images,l.imageId))throw new Error(`Image gallery variant "${a.id}.${l.id}" references unknown image "${l.imageId}"`)}}},xt=(e={})=>{let t=e?.resources?.musicRoom;if(t===void 0)return;if(!Ie(t))throw new Error("resources.musicRoom must be an object");if(Nr(t,lm,"resources.musicRoom"),!Number.isInteger(t.pageSize)||t.pageSize<1)throw new Error("resources.musicRoom.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(t.tracks))throw new Error("resources.musicRoom.tracks must be an array");let n=new Set;for(let[o,a]of t.tracks.entries()){let r=`resources.musicRoom.tracks[${o}]`;if(!Ie(a))throw new Error(`${r} must be an object`);Nr(a,cm,r);for(let l of["id","soundId","title"])Jr(a[l],`${r}.${l}`);for(let l of["artist","album","description","coverImageId"])a[l]!==void 0&&Jr(a[l],`${r}.${l}`);if(n.has(a.id))throw new Error(`Duplicate music room track id "${a.id}"`);n.add(a.id);let s=e?.resources?.sounds?.[a.soundId];if(!W(e?.resources?.sounds,a.soundId))throw new Error(`Music room track "${a.id}" references unknown sound "${a.soundId}"`);if(!Ie(s))throw new Error(`Music room track "${a.id}" references invalid sound "${a.soundId}"`);if(s.playbackRate!==void 0&&(typeof s.playbackRate!="number"||!Number.isFinite(s.playbackRate)||s.playbackRate<=0))throw new Error(`Music room sound "${a.soundId}" playbackRate must be a finite number greater than 0`);let i=s.startAt??0;if(typeof i!="number"||!Number.isFinite(i)||i<0)throw new Error(`Music room sound "${a.soundId}" startAt must be a finite non-negative number`);if(s.endAt!==void 0&&s.endAt!==null&&(typeof s.endAt!="number"||!Number.isFinite(s.endAt)||s.endAt<=i))throw new Error(`Music room sound "${a.soundId}" endAt must be a finite number greater than startAt`);if(a.coverImageId!==void 0&&!W(e?.resources?.images,a.coverImageId))throw new Error(`Music room track "${a.id}" references unknown cover image "${a.coverImageId}"`)}},dm=(e,t,n)=>{let o=Array.isArray(n)?"array":typeof n;switch(t.type){case"number":if(typeof n!="number"||!Number.isFinite(n))throw new Error(`Scene replay initial variable "${e}" expected type number, got ${o}`);return;case"boolean":if(typeof n!="boolean")throw new Error(`Scene replay initial variable "${e}" expected type boolean, got ${o}`);return;case"string":if(typeof n!="string")throw new Error(`Scene replay initial variable "${e}" expected type string, got ${o}`);return;case"object":if(n===null||typeof n!="object")throw new Error(`Scene replay initial variable "${e}" expected type object, got ${o}`);return;default:throw new Error(`Scene replay initial variable "${e}" has invalid variable type "${t.type}"`)}},Et=(e={})=>{let t=e?.resources?.sceneReplay;if(t===void 0)return;if(!Ie(t))throw new Error("resources.sceneReplay must be an object");if(Nr(t,um,"resources.sceneReplay"),!Number.isInteger(t.pageSize)||t.pageSize<1)throw new Error("resources.sceneReplay.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(t.replays))throw new Error("resources.sceneReplay.replays must be an array");let n=e?.story?.scenes??{},o=new Set;for(let[a,r]of t.replays.entries()){let s=`resources.sceneReplay.replays[${a}]`;if(!Ie(r))throw new Error(`${s} must be an object`);Nr(r,pm,s);for(let u of["sceneId","title","thumbnailImageId"])Jr(r[u],`${s}.${u}`);if(o.has(r.sceneId))throw new Error(`Duplicate scene replay sceneId "${r.sceneId}"`);if(o.add(r.sceneId),!W(e?.resources?.images,r.thumbnailImageId))throw new Error(`Scene replay scene "${r.sceneId}" references unknown thumbnail image "${r.thumbnailImageId}"`);let i=n[r.sceneId];if(!i)throw new Error(`Scene replay references unknown scene "${r.sceneId}"`);let l=i.initialSectionId,c=i.sections?.[l];if(!c)throw new Error(`Scene replay scene "${r.sceneId}" references unknown initial section "${l}"`);if(c.initialLineId!==void 0&&!c.lines?.some(u=>u.id===c.initialLineId))throw new Error(`Scene replay scene "${r.sceneId}" initial section "${l}" references unknown initial line "${c.initialLineId}"`);if(r.initialVariables!==void 0){if(!Ie(r.initialVariables))throw new Error(`${s}.initialVariables must be an object`);for(let[u,p]of Object.entries(r.initialVariables)){let f=e?.resources?.variables?.[u];if(!f)throw new Error(`Scene replay scene "${r.sceneId}" initialVariables references unknown variable "${u}"`);if(Se(f))throw new Error(`Scene replay scene "${r.sceneId}" cannot initialize computed variable "${u}"`);if(f.readonly===!0)throw new Error(`Scene replay scene "${r.sceneId}" cannot initialize readonly variable "${u}"`);if(f.scope!=="context")throw new Error(`Scene replay scene "${r.sceneId}" can only initialize context variable "${u}"`);dm(u,f,p)}}}},el=e=>{let t=we(e)?pr(e):e;return structuredClone(t)},fm=({characterId:e,resourceCharacter:t,variables:n={}}={})=>{if(!W(t,"nameVariableId"))return;let o=t.nameVariableId,a=n?.[o];if(typeof a!="string")throw new Error(`Character "${e}" nameVariableId "${o}" must resolve to a string variable`);return a},En=({characterId:e,character:t,characterName:n,characters:o={},variables:a={}}={})=>{let r=e?o?.[e]:void 0;if(t?.name!==void 0)return t.name;if(n!==void 0)return n;let s=fm({characterId:e,resourceCharacter:r,variables:a});return s!==void 0?s:r?.name||""},Se=e=>W(e,"computed"),xo=(e,t)=>{switch(e?.type){case"number":return typeof t=="number"&&Number.isFinite(t);case"boolean":return typeof t=="boolean";case"string":return typeof t=="string";case"object":return t!==null&&typeof t=="object"&&!Array.isArray(t);default:return!1}},St=(e={},t={},{allowedScopes:n,preserveUnknown:o=!1}={})=>Object.fromEntries(Object.entries(e??{}).filter(([a,r])=>{let s=t[a];return s===void 0?o:!Se(s)&&(!n||n.includes(s.scope))&&xo(s,r)})),qe=(e,t)=>new Error(`${t} has invalid path: ${JSON.stringify(e)}`),mm=(e,t,n)=>{if(e[0]==='"')try{return JSON.parse(e)}catch{throw qe(t,n)}let a="";for(let r=1;r<e.length-1;r+=1){let s=e[r];if(s!=="\\"){if(s.charCodeAt(0)<32)throw qe(t,n);a+=s;continue}if(r+=1,r>=e.length-1)throw qe(t,n);let i=e[r];if(i==="u"){let c=e.slice(r+1,r+5);if(c.length!==4||!/^[0-9a-fA-F]{4}$/.test(c))throw qe(t,n);a+=String.fromCharCode(Number.parseInt(c,16)),r+=4;continue}let l={"\\":"\\",'"':'"',"'":"'","/":"/",n:`
2
- `,r:"\r",t:" ",b:"\b",f:"\f"};if(!W(l,i))throw qe(t,n);a+=l[i]}return a},rl=(e,t="Computed expression var")=>{if(typeof e!="string"||e.length===0||e.trim()!==e)throw qe(e,t);let n=[],o=0,a=()=>{let s=o;for(;o<e.length&&e[o]!=="."&&e[o]!=="["&&e[o]!=="]";)o+=1;let i=e.slice(s,o);if(i.length===0||i.trim()!==i||/\s/.test(i))throw qe(e,t);n.push(i)},r=()=>{for(o+=1;o<e.length&&/\s/.test(e[o]);)o+=1;let s=e[o];if(/\d/.test(s??"")){let u=o;for(;o<e.length&&/\d/.test(e[o]);)o+=1;let p=e.slice(u,o);for(;o<e.length&&/\s/.test(e[o]);)o+=1;if(e[o]!=="]"||p.length>1&&p.startsWith("0"))throw qe(e,t);o+=1,n.push(p);return}if(s!=='"'&&s!=="'")throw qe(e,t);let i=s,l=o;o+=1;let c=!1;for(;o<e.length;){let u=e[o];if(c)c=!1;else if(u==="\\")c=!0;else if(u===i){let p=e.slice(l,o+1);for(o+=1;o<e.length&&/\s/.test(e[o]);)o+=1;if(e[o]!=="]")throw qe(e,t);o+=1,n.push(mm(p,e,t));return}o+=1}if(c||o>=e.length)throw qe(e,t)};for(a();o<e.length;){if(e[o]==="."){o+=1,a();continue}if(e[o]==="["){r();continue}throw qe(e,t)}return n},ho=(e,t)=>{let n=e;for(let o of t){if(n==null||!W(n,o))return;n=n[o]}return n},tl=(e,t={})=>{if(typeof e!="string"||e.trim()==="")throw new Error("Computed expression var requires a non-empty string path");let n=rl(e),[o,a,...r]=n;if(o==="variables"){if(!a)return t.variables;let s=typeof t.resolveVariable=="function"?t.resolveVariable(a):t.variables?.[a];return ho(s,r)}return o==="runtime"?ho(t.runtime,n.slice(1)):ho(t,n)},nl=(e,t,n)=>{if(!Array.isArray(t))throw new Error(`Computed expression operator "${e}" requires an array`);if(n!==void 0&&t.length!==n)throw new Error(`Computed expression operator "${e}" requires ${n} operand(s)`)},ko=(e,t)=>{if(!Array.isArray(t))throw new Error(`Computed expression operator "${e}" requires an array`);if(t.length===0)throw new Error(`Computed expression operator "${e}" requires at least one operand`)},ym=(e,t)=>{if(typeof t!="number"||!Number.isFinite(t))throw new Error(`Computed expression operator "${e}" requires finite numeric operands`)},Be=(e,t,n,o)=>(nl(e,t,o),t.map(a=>Pn(a,n))),Ve=(e,t,n,o)=>{let a=Be(e,t,n,o);return a.forEach(r=>ym(e,r)),a},hm=(e,t,n)=>{switch(e){case"var":return tl(t,n);case"add":{let[o,a]=Ve(e,t,n,2);return o+a}case"sub":{let[o,a]=Ve(e,t,n,2);return o-a}case"mul":{let[o,a]=Ve(e,t,n,2);return o*a}case"div":{let[o,a]=Ve(e,t,n,2);return o/a}case"mod":{let[o,a]=Ve(e,t,n,2);return o%a}case"neg":{let[o]=Ve(e,t,n,1);return-o}case"round":{let[o]=Ve(e,t,n,1);return Math.round(o)}case"floor":{let[o]=Ve(e,t,n,1);return Math.floor(o)}case"ceil":{let[o]=Ve(e,t,n,1);return Math.ceil(o)}case"min":{let[o,a]=Ve(e,t,n,2);return Math.min(o,a)}case"max":{let[o,a]=Ve(e,t,n,2);return Math.max(o,a)}case"clamp":{let[o,a,r]=Ve(e,t,n,3);return Math.min(r,Math.max(a,o))}case"eq":{let[o,a]=Be(e,t,n,2);return yr.eq(o,a)}case"neq":{let[o,a]=Be(e,t,n,2);return yr.neq(o,a)}case"gt":{let[o,a]=Be(e,t,n,2);return yr.gt(o,a)}case"gte":{let[o,a]=Be(e,t,n,2);return yr.gte(o,a)}case"lt":{let[o,a]=Be(e,t,n,2);return yr.lt(o,a)}case"lte":{let[o,a]=Be(e,t,n,2);return yr.lte(o,a)}case"in":{let[o,a]=Be(e,t,n,2);return Array.isArray(a)?a.includes(o):!1}case"and":case"all":return ko(e,t),t.every(o=>!!Pn(o,n));case"or":case"any":return ko(e,t),t.some(o=>!!Pn(o,n));case"not":{let[o]=Be(e,t,n,1);return!o}case"length":{let[o]=Be(e,t,n,1);return typeof o=="string"||Array.isArray(o)?o.length:Ie(o)?Object.keys(o).length:0}case"includes":{let[o,a]=Be(e,t,n,2);return typeof o=="string"?typeof a=="string"&&o.includes(a):Array.isArray(o)?o.includes(a):!1}case"literal":return el(t);default:throw new Error(`Unknown computed expression operator: ${e}`)}},Pn=(e,t={})=>{if(e===null||typeof e!="object")return e;if(Array.isArray(e))throw new Error("Computed expression arrays are not valid; use value for literal arrays");let n=Object.entries(e);if(n.length!==1)throw new Error("Computed expression objects must contain exactly one operator");let[[o,a]]=n;return hm(o,a,t)},vo=(e,t)=>{if(e===null||typeof e!="object"||W(e,"literal"))return e;if(W(e,"var"))return{literal:tl(e.var,t)};if(W(e,"call"))throw new Error("Function calls are not supported in computed-variable conditions");return Object.fromEntries(Object.entries(e).map(([n,o])=>[n,Array.isArray(o)?o.map(a=>vo(a,t)):vo(o,t)]))},gm=(e,t={})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");return $e(e),At(vo(e,t))},sl=(e,t)=>{if(!Ie(e))throw new Error(`${t} must be an object`);let n=W(e,"expr"),o=W(e,"value");if(n===o)throw new Error(`${t} must contain exactly one of expr or value`)},go=(e,t,n)=>(sl(e,t),W(e,"value")?el(e.value):Pn(e.expr,n)),bm=(e,t={},n="unknown")=>{if(!Ie(e))throw new Error(`Computed variable "${n}" computed must be an object`);let o=W(e,"expr"),a=W(e,"value");if(W(e,"branches")){if(o||a)throw new Error(`Computed variable "${n}" cannot combine branches with expr or value`);if(!Array.isArray(e.branches))throw new Error(`Computed variable "${n}" branches must be an array`);if(e.branches.length===0)throw new Error(`Computed variable "${n}" branches must not be empty`);if(!Ie(e.default))throw new Error(`Computed variable "${n}" requires default`);for(let s=0;s<e.branches.length;s+=1){let i=e.branches[s];if(!Ie(i))throw new Error(`Computed variable "${n}" branch ${s} must be an object`);if(!W(i,"when"))throw new Error(`Computed variable "${n}" branch ${s} requires when`);if(gm(i.when,t))return go(i,`Computed variable "${n}" branch ${s}`,t)}return go(e.default,`Computed variable "${n}" default`,t)}if(o===a)throw new Error(`Computed variable "${n}" must contain exactly one of expr, value, or branches`);return go(e,`Computed variable "${n}"`,t)},ol=(e,t,n)=>{switch(t){case"number":if(typeof n!="number"||!Number.isFinite(n))throw new Error(`Computed variable "${e}" expected type number, got ${Array.isArray(n)?"array":typeof n}`);return;case"boolean":if(typeof n!="boolean")throw new Error(`Computed variable "${e}" expected type boolean, got ${Array.isArray(n)?"array":typeof n}`);return;case"string":if(typeof n!="string")throw new Error(`Computed variable "${e}" expected type string, got ${Array.isArray(n)?"array":typeof n}`);return;case"object":if(n===null||typeof n!="object")throw new Error(`Computed variable "${e}" expected type object, got ${typeof n}`);return;default:throw new Error(`Invalid variable type: ${t} for computed variable ${e}`)}},Im=Object.freeze({add:2,sub:2,mul:2,div:2,mod:2,neg:1,round:1,floor:1,ceil:1,min:2,max:2,clamp:3,eq:2,neq:2,gt:2,gte:2,lt:2,lte:2,in:2,not:1,length:1,includes:2}),wm=new Set(["and","or","all","any"]),km=new Set(["add","sub","mul","div","mod","neg","round","floor","ceil","min","max","clamp","length"]),vm=new Set(["add","sub","mul","div","mod","neg","round","floor","ceil","min","max","clamp"]),Am=new Set(["eq","neq","gt","gte","lt","lte","in","and","or","all","any","not","includes"]),Pm=new Set(["all","any","eq","neq","gt","gte","lt","lte","in","add","sub"]),il=new WeakMap,Ga=e=>e===null?"null":Array.isArray(e)?"object":typeof e,vn=(e,t,n)=>{for(let o of Object.keys(e))if(!t.has(o))throw new Error(`${n} contains unsupported property "${o}"`)},xm=(e,t,n,o)=>{if(n!==void 0&&n!==t)throw new Error(`Computed variable "${e}" ${o} expected type ${t}, got ${n}`)},al=(e,{variableId:t,variableConfigs:n,dependencies:o,path:a})=>{let r=`Computed variable "${t}" ${a} var`,[s,i,...l]=rl(e,r);if(s!=="variables"&&s!=="runtime")throw new Error(`${r} must reference variables.* or runtime.*, got ${JSON.stringify(e)}`);if(!i)throw new Error(`${r} must reference a concrete ${s} member, got ${JSON.stringify(e)}`);if(s==="runtime")return;if(!W(n,i))throw new Error(`Computed variable "${t}" ${a} references unknown variable "${i}"`);let c=n[i];return Se(c)&&o.add(i),l.length===0?c?.type:void 0},ll=(e,{variableId:t,variableConfigs:n,dependencies:o,path:a})=>{if(e===null||typeof e!="object"){if(typeof e=="number"&&!Number.isFinite(e))throw new Error(`Computed variable "${t}" ${a} must use finite numeric literals`);return Ga(e)}if(Array.isArray(e))throw new Error("Computed expression arrays are not valid; use value for literal arrays");let r=Object.entries(e);if(r.length!==1)throw new Error("Computed expression objects must contain exactly one operator");let[[s,i]]=r;if(s==="var"){if(typeof i!="string"||i.trim()==="")throw new Error("Computed expression var requires a non-empty string path");return al(i,{variableId:t,variableConfigs:n,dependencies:o,path:a})}if(s==="literal"){if(typeof i=="number"&&!Number.isFinite(i))throw new Error(`Computed variable "${t}" ${a} must use finite numeric literals`);return Ga(i)}let l=Im[s];if(l===void 0&&!wm.has(s))throw new Error(`Unknown computed expression operator: ${s}`);l===void 0?ko(s,i):nl(s,i,l);let c=i.map((u,p)=>ll(u,{variableId:t,variableConfigs:n,dependencies:o,path:`${a}.${s}[${p}]`}));if(vm.has(s)&&c.forEach(u=>{if(u!==void 0&&u!=="number")throw new Error(`Computed expression operator "${s}" requires numeric operands`)}),km.has(s))return"number";if(Am.has(s))return"boolean"},Em=(e,{variableId:t,variableConfigs:n,dependencies:o,path:a})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");try{$e(e)}catch(s){throw new Error(`Computed variable "${t}" ${a} is invalid: ${s.message}`,{cause:s})}let r=(s,i)=>{if(s===null||typeof s!="object"||W(s,"literal"))return;if(W(s,"var")){al(s.var,{variableId:t,variableConfigs:n,dependencies:o,path:i});return}if(W(s,"call"))throw new Error(`Computed variable "${t}" ${i} function calls are not supported`);if(W(s,"not")){r(s.not,`${i}.not`);return}let l=Object.keys(s).find(c=>Pm.has(c));s[l].forEach((c,u)=>{r(c,`${i}.${l}[${u}]`)})};r(e,a)},bo=(e,{variableId:t,variableConfig:n,variableConfigs:o,dependencies:a,path:r,allowedKeys:s=new Set(["expr","value"])})=>{if(sl(e,`Computed variable "${t}" ${r}`),vn(e,s,r),W(e,"value")){ol(t,n.type,e.value);return}let i=ll(e.expr,{variableId:t,variableConfigs:o,dependencies:a,path:`${r}.expr`});xm(t,n.type,i,`${r}.expr`)},Sm=(e,t,n)=>{let o=t.computed;if(!Ie(o))throw new Error(`Computed variable "${e}" computed must be an object`);let a=new Set,r=W(o,"expr"),s=W(o,"value");if(W(o,"branches")){if(vn(o,new Set(["branches","default"]),`Computed variable "${e}" computed`),r||s)throw new Error(`Computed variable "${e}" cannot combine branches with expr or value`);if(!Array.isArray(o.branches))throw new Error(`Computed variable "${e}" branches must be an array`);if(o.branches.length===0)throw new Error(`Computed variable "${e}" branches must not be empty`);if(!Ie(o.default))throw new Error(`Computed variable "${e}" requires default`);return o.branches.forEach((l,c)=>{if(!Ie(l))throw new Error(`Computed variable "${e}" branch ${c} must be an object`);if(vn(l,new Set(["when","expr","value"]),`Computed variable "${e}" branch ${c}`),!W(l,"when"))throw new Error(`Computed variable "${e}" branch ${c} requires when`);Em(l.when,{variableId:e,variableConfigs:n,dependencies:a,path:`computed.branches[${c}].when`}),bo(l,{variableId:e,variableConfig:t,variableConfigs:n,dependencies:a,path:`computed.branches[${c}]`,allowedKeys:new Set(["when","expr","value"])})}),bo(o.default,{variableId:e,variableConfig:t,variableConfigs:n,dependencies:a,path:"computed.default"}),a}if(vn(o,new Set(["expr","value"]),`Computed variable "${e}" computed`),r===s)throw new Error(`Computed variable "${e}" must contain exactly one of expr, value, or branches`);return bo(o,{variableId:e,variableConfig:t,variableConfigs:n,dependencies:a,path:"computed"}),a},Dr=(e={})=>{if(!Ie(e))throw new Error("Variable configs must be an object");if(W(e,"__proto__"))throw new Error('Variable id "__proto__" is reserved');if(W(e,""))throw new Error("Variable ids must not be empty");let t=new Map;Object.entries(e).forEach(([r,s])=>{if(Se(s)){if(!Ie(s))throw new Error(`Computed variable "${r}" must be an object`);if(!W(s,"type"))throw new Error(`Computed variable "${r}" requires type`);if(!W(s,"scope"))throw new Error(`Computed variable "${r}" requires scope`);if(W(s,"default"))throw new Error(`Computed variable "${r}" must not declare a top-level default`);if(Ot(s.scope,r),!["number","boolean","string","object"].includes(s.type))throw new Error(`Invalid variable type: ${s.type} for computed variable ${r}`);t.set(r,Sm(r,s,e))}});let n=new Set,o=[];t.forEach((r,s)=>{if(n.has(s))return;let i=[{variableId:s,dependencies:[...t.get(s)??[]],nextDependencyIndex:0}],l=new Map([[s,0]]);for(;i.length>0;){let c=i.at(-1);if(c.nextDependencyIndex>=c.dependencies.length){i.pop(),l.delete(c.variableId),n.add(c.variableId),o.push(c.variableId);continue}let u=c.dependencies[c.nextDependencyIndex];if(c.nextDependencyIndex+=1,n.has(u))continue;let p=l.get(u);if(p!==void 0){let f=[...i.slice(p).map(({variableId:d})=>d),u].join(" -> ");throw new Error(`Computed variable cycle detected: ${f}`)}l.set(u,i.length),i.push({variableId:u,dependencies:[...t.get(u)??[]],nextDependencyIndex:0})}});let a=Object.freeze({evaluationOrder:Object.freeze(o)});return il.set(e,a),a},Qr=({variables:e={},runtime:t={},variableConfigs:n={},eager:o=!0}={})=>{let{evaluationOrder:a}=il.get(n)??Dr(n),r=St(e,n,{preserveUnknown:!0}),s=Object.entries(n).filter(([,g])=>Se(g)).map(([g])=>g),i=Object.create(null),l=[],c=new Map(a.map((g,h)=>[g,h])),u=-1,p=!1,f=g=>{if(W(i,g))return i[g];let h=n[g];if(!Se(h))return W(r,g)?r[g]:void 0;let w=l.indexOf(g);if(w>=0){let b=[...l.slice(w),g].join(" -> ");throw new Error(`Computed variable cycle detected: ${b}`)}l.push(g);try{let b=bm(h.computed,y,g);return ol(g,h.type,b),wo(i,g,b),b}finally{l.pop()}},d=g=>{if(W(i,g))return i[g];let h=n[g];if(!Se(h))return W(r,g)?r[g]:void 0;let w=c.get(g);if(o&&!p&&w!==void 0&&w>u){p=!0;try{for(let b=u+1;b<=w;b+=1)f(a[b]),u=b}finally{p=!1}return i[g]}return f(g)},m=new Proxy({},{get:(g,h)=>{if(typeof h=="string")return d(h)},has:(g,h)=>typeof h=="string"&&(W(r,h)||s.includes(h)),ownKeys:()=>[...new Set([...Object.keys(r),...s])],getOwnPropertyDescriptor:(g,h)=>{if(!(typeof h!="string"||!W(r,h)&&!s.includes(h)))return{enumerable:!0,configurable:!0}}}),y={variables:m,runtime:t,resolveVariable:d};return o?(s.forEach(g=>{d(g)}),{...r,...i}):m},Om=({variables:e={},runtime:t={},variableConfigs:n,projectData:o}={})=>{let a=n??o?.resources?.variables??{};return Dr(a),Qr({variables:e,runtime:t,variableConfigs:a,eager:!0})},Sn=e=>{let t={},n={};return e.resources?.variables?(Object.entries(e.resources.variables).forEach(([o,a])=>{if(Se(a))return;let r=sm(a,o);a.scope==="context"?wo(t,o,r):wo(n,o,r)}),{contextVariableDefaultValues:t,globalVariablesDefaultValues:n}):{contextVariableDefaultValues:t,globalVariablesDefaultValues:n}},Ot=(e,t)=>{let n=["context","device","account"];if(!e)throw new Error(`Variable scope is required for variable: ${t}`);if(!n.includes(e))throw new Error(`Invalid variable scope: ${e} for variable ${t}. Expected one of: ${n.join(", ")}`)},Rt=(e,t,n)=>{let o={number:["set","increment","decrement","multiply","divide"],boolean:["set","toggle"],string:["set"],object:["set"]},a=o[e];if(!a)throw new Error(`Unknown variable type: ${e} for variable ${n}`);if(!Object.values(o).flat().includes(t))throw new Error(`Unknown operation: ${t}`);if(!a.includes(t))throw new Error(`Operation "${t}" is not valid for variable "${n}" of type "${e}". Valid operations: ${a.join(", ")}`)},Rm=2,Ha=12,cl=(e=Rm)=>{if(!Number.isInteger(e)||e<0||e>Ha)throw new Error(`Operation "divide" requires roundTo to be an integer between 0 and ${Ha}.`);return e},Cm=(e,t)=>{let n=10**t;return Math.round((e+Number.EPSILON)*n)/n},An=e=>typeof e=="number"&&Number.isFinite(e),On=(e,t,n,o,a={})=>{if(e==="number"){if(t==="set"&&!An(n))throw new Error(`Operation "set" requires value to be a number for variable "${o}".`);if(t==="multiply"&&!An(n))throw new Error(`Operation "multiply" requires value to be a number for variable "${o}".`);if(t==="divide"&&!An(n))throw new Error(`Operation "divide" requires value to be a number for variable "${o}".`);if(t==="divide"){if(n===0)throw new Error(`Operation "divide" requires value to be a non-zero number for variable "${o}".`);cl(a.roundTo)}}},Rn=(e,t,n,o={})=>{let a=(s,i,l)=>{let c=s??i;if(!An(c))throw new Error(`Operation "${t}" requires ${l} to be a number.`);return c},r=s=>{let i=a(s,void 0,"value");if(i===0)throw new Error(`Operation "${t}" requires value to be a non-zero number.`);return i};switch(t){case"set":return n;case"multiply":return a(e,1,"current value")*a(n,void 0,"value");case"divide":return Cm(a(e,0,"current value")/r(n),cl(o.roundTo));case"increment":return a(e,0,"current value")+a(n,1,"value");case"decrement":return a(e,0,"current value")-a(n,1,"value");case"toggle":return!e;default:throw new Error(`Unknown operation: ${t}`)}};var Eo=(e,t="DD/MM/YYYY - HH:mm")=>{if(!e)return"";let n=new Date(e),o=s=>String(s).padStart(2,"0"),a=String(n.getFullYear()),r={DD:o(n.getDate()),MM:o(n.getMonth()+1),MMM:nm[n.getMonth()],YYYY:a,YY:a.slice(-2),HH:o(n.getHours()),mm:o(n.getMinutes()),ss:o(n.getSeconds())};return t.replace(/YYYY|MMM|YY|MM|DD|HH|mm|ss/g,s=>r[s])},$m=(e,t)=>{let n=r=>r?.ui,o=n(e),a=n(t);return JSON.stringify(o)===JSON.stringify(a)?null:o&&!a?{changeType:"delete",data:e}:a&&!o?{changeType:"add",data:t}:a&&o?{changeType:"update",data:t}:null},vt=e=>!!e?.transformId&&Array.isArray(e.items)&&e.items.length>0,_m=(e,t)=>{let n=e?.character?.sprite,o=t?.character?.sprite,a=vt(n)?n:void 0,r=vt(o)?o:void 0;return JSON.stringify(a)===JSON.stringify(r)?null:a&&!r?{changeType:"delete",data:a}:r&&!a?{changeType:"add",data:r}:r&&a?{changeType:"update",data:r}:null},Xa=e=>{if(e?.resourceId===void 0)return;let t={resourceId:e.resourceId};e.transformId!==void 0&&(t.transformId=e.transformId);for(let n of["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"])e[n]!==void 0&&(t[n]=e[n]);for(let n of["animationName","animationSpeed","loop"])e[n]!==void 0&&(t[n]=e[n]);return t},Wa=e=>{if(e?.colorId!==void 0)return{colorId:e.colorId}},Ka=(e,t)=>t&&!e?{changeType:"add",data:t}:e&&!t?{changeType:"delete",data:e}:e&&t&&JSON.stringify(e)!==JSON.stringify(t)?{changeType:"update",data:t}:null,Tm=(e,t)=>{let n={},o=Ka(Xa(e),Xa(t)),a=Ka(Wa(e),Wa(t));return o&&(n.resource=o),a&&(n.color=a),Object.keys(n).length>0?n:null},So=(e={},t={})=>{let n={},o=["voice"],a=l=>{let c=e[l],u=t[l];if(u&&!c)n[l]={changeType:"add",data:u};else if(c&&!u){let p=l==="sfx"&&c.channels?.some(f=>f.applyMode==="persistent");!o.includes(l)&&(l!=="sfx"||p)&&(n[l]={changeType:"delete",data:c})}else c&&u&&JSON.stringify(c)!==JSON.stringify(u)&&(n[l]={changeType:"update",data:u})},r=Tm(e.background,t.background);r&&(n.background=r),a("screen"),a("bgm"),a("voice");let s=$m(e.dialogue,t.dialogue);s&&(n.dialogue=s);let i=_m(e.dialogue,t.dialogue);return i&&(n.dialogueSprite=i),a("choice"),a("form"),a("layout"),a("animation"),a("control"),a("character"),a("visual"),a("sfx"),n},Oo=(e={})=>{let t=structuredClone(e);if(t.sfx){let a=Array.isArray(t.sfx.channels)?t.sfx.channels.filter(r=>r.applyMode==="persistent"):[];a.length>0?t.sfx={channels:a}:delete t.sfx}t.background&&(t.background.animations?.playback?.continuity!=="persistent"&&delete t.background.animations,!t.background.resourceId&&!t.background.colorId&&delete t.background);let n=a=>{t[a]&&(delete t[a].animations,Object.keys(t[a]).length===0&&delete t[a])};n("layout"),n("choice"),n("form"),n("screen"),t.dialogue?.ui&&(delete t.dialogue.ui.animations,Object.keys(t.dialogue.ui).length===0&&delete t.dialogue.ui,Object.keys(t.dialogue).length===0&&delete t.dialogue),t.dialogue?.character?.sprite&&(delete t.dialogue.character.sprite.animations,Object.keys(t.dialogue.character.sprite).length===0&&delete t.dialogue.character.sprite,Object.keys(t.dialogue.character).length===0&&delete t.dialogue.character,Object.keys(t.dialogue).length===0&&delete t.dialogue);let o=(a,r)=>{let s=t[a]?.items;Array.isArray(s)&&(t[a].items=s.map(i=>{let l={...i};return l.animations?.playback?.continuity!=="persistent"&&delete l.animations,r(l)?l:null}).filter(Boolean),t[a].items.length===0&&delete t[a])};return o("character",a=>a.sprites&&a.sprites.length>0||a.transformId||a.resourceId),o("visual",a=>a.resourceId||a.text||a.layout||a.transformId||a.transform),t},jm=(e,t)=>{if(!e||!t)return;let n=e;for(let o of t.split(".")){if(n==null||o==="__proto__"||o==="prototype"||o==="constructor"||!Object.prototype.hasOwnProperty.call(Object(n),o))return;n=n[o]}return n},Ja=e=>e!==null&&typeof e=="object"?structuredClone(e):e,Nm=(e,t,n)=>{if(typeof e!="string")return e;let o=Object.prototype.hasOwnProperty.call(t??{},n)?t[n]:void 0;if(e===n){if(o==null)throw new Error(`Action template binding "${n}" requires event context "${n}".`);return Ja(o)}if(!e.startsWith(`${n}.`))return e;if(o==null)throw new Error(`Action template binding "${e}" requires event context "${n}".`);let a=e.slice(n.length+1),r=jm(o,a);if(r===void 0)throw new Error(`Action template binding "${e}" could not be resolved from "${n}".`);return Ja(r)},Dm={conditional:new Set(["branches"]),updateProjectData:new Set(["projectData"]),showConfirmDialog:new Set(["confirmActions","cancelActions"]),form:new Set(["submitActions","cancelActions"]),submitForm:new Set(["actions"]),cancelForm:new Set(["actions"])},Lm=(e,t)=>{let n=e[e.length-1];return n?Dm[n]?.has(t)===!0:!1},Ao=(e,t,n=[])=>Array.isArray(e)?e.map(o=>Ao(o,t,n)):e&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([o,a])=>[o,Lm(n,o)?a:Ao(a,t,[...n,o])])):typeof e=="string"?e==="_event"||e.startsWith("_event.")?Nm(e,t,"_event"):jr(e,t):e,Ct=(e,t)=>{if(!t)return e;if(Object.prototype.hasOwnProperty.call(t,"event"))throw new Error('Action template context key "event" is no longer supported. Use "_event".');return Ao(e,t)};var Mm=11102230246251565e-32,ul=128,pl=1e3,dl=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),$t=(e,t,n)=>{let o=Object.keys(e).find(a=>!t.has(a));if(o!==void 0)throw new Error(`${n}.${o} is not supported`)},Cn=(e,t)=>{if(!dl(e))throw new Error(`${t} must be an object`)},$n=(e,t,{min:n,max:o}={})=>{if(!Number.isSafeInteger(e))throw new Error(`${t} must be a safe integer`);if(n!==void 0&&e<n)throw new Error(`${t} must be at least ${n}`);if(o!==void 0&&e>o)throw new Error(`${t} must be at most ${o}`);return e},Vm=(e,t,{min:n,max:o}={})=>{if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);if(n!==void 0&&e<n)throw new Error(`${t} must be at least ${n}`);if(o!==void 0&&e>o)throw new Error(`${t} must be at most ${o}`);return e},Ro=e=>{let t=structuredClone(e),n=o=>(o&&typeof o=="object"&&!Object.isFrozen(o)&&(Object.values(o).forEach(n),Object.freeze(o)),o);return n(t)},qm=()=>({nextUint32(){return typeof globalThis.crypto?.getRandomValues=="function"?globalThis.crypto.getRandomValues(new Uint32Array(1))[0]:Math.floor(Math.random()*4294967296)}}),fl=e=>{let t=e??qm();if(!dl(t)||typeof t.nextUint32!="function")throw new TypeError("randomSource must provide nextUint32()");return{nextUint32(){let n=t.nextUint32();if(!Number.isInteger(n)||n<0||n>=4294967296)throw new Error("randomSource.nextUint32() must return an integer from 0 through 4294967295");return n}}},Fm=(e,t)=>{let n=4294967296-4294967296%t;for(let o=0;o<ul;o+=1){let a=e.nextUint32();if(a<n)return a%t}throw new Error(`random source exhausted after ${ul} rejected samples`)},Um=e=>{let t=e.nextUint32()>>>5,n=e.nextUint32()>>>6;return(t*67108864+n)/9007199254740992},Bm=(e,t)=>{if($t(e,new Set(["type","min","max"]),"random.distribution"),!Object.prototype.hasOwnProperty.call(e,"min"))throw new Error("random.distribution.min is required");if(!Object.prototype.hasOwnProperty.call(e,"max"))throw new Error("random.distribution.max is required");let n=$n(e.min,"random.distribution.min"),a=$n(e.max,"random.distribution.max")-n+1;if(!Number.isSafeInteger(a)||a<1||a>4294967296)throw new Error("random integer range must contain from 1 through 4294967296 values");return Ro({type:"integer",value:a===1?n:n+Fm(t,a)})},Ym=(e,t)=>{if($t(e,new Set(["type","outcomes"]),"random.distribution"),!Array.isArray(e.outcomes)||e.outcomes.length<1||e.outcomes.length>pl)throw new Error("random.distribution.outcomes must contain from 1 through 1000 items");let n=e.outcomes.map((c,u)=>{let p=`random.distribution.outcomes[${u}]`;if(Cn(c,p),$t(c,new Set(["weight","actions"]),p),!Object.prototype.hasOwnProperty.call(c,"weight"))throw new Error(`${p}.weight is required`);return Cn(c.actions,`${p}.actions`),{weight:Vm(c.weight,`${p}.weight`,{min:0})}}),o=Math.max(...n.map(({weight:c})=>c));if(o<=0)throw new Error("random weighted total weight must be positive");let a=n.map(c=>({...c,weight:c.weight/o})),r=a.reduce((c,u)=>c+u.weight,0);a.forEach((c,u)=>{if(n[u].weight>0&&(c.weight===0||c.weight/r<=Mm))throw new Error(`random.distribution.outcomes[${u}].weight is below the supported probability resolution`)});let s=Um(t)*r,i=0,l=a.findLastIndex(({weight:c})=>c>0);for(let c=0;c<a.length;c+=1){let u=a[c];if(i+=u.weight,s<i){l=c;break}}return Ro({type:"weighted",outcomeIndex:l})},ml=(e,{randomSource:t})=>{Cn(e,"random.distribution");let o={integer:Bm,weighted:Ym}[e.type];if(!o)throw new Error('random.distribution.type must be "integer" or "weighted"');return o(e,t)},_n=(e,t)=>{if(Cn(e,"random result"),e.type!==t)throw new Error("random result type does not match its recorded type");if(t==="integer")$t(e,new Set(["type","value"]),"random result"),$n(e.value,"random result.value");else if(t==="weighted")$t(e,new Set(["type","outcomeIndex"]),"random result"),$n(e.outcomeIndex,"random result.outcomeIndex",{min:0,max:pl-1});else throw new Error(`unsupported recorded random result type: ${t}`);return Ro(e)};var Lr=(e,t)=>Object.freeze({name:e,actions:Object.freeze(t)}),gl=Object.freeze([Lr("cleanup",["clearPendingEffects","cleanAll"]),Lr("state",["addViewedLine","addViewedResource","updateVariable","updateFormField","updateProjectData","updateLocalizationPackage","markLineCompleted","random:integer"]),Lr("decision",["submitForm","cancelForm","random:weighted","conditional"]),Lr("presentation",["screen","background","dialogue","character","visual","choice","form","sfx","bgm","voice","control","layout"]),Lr("runtime",["setNextLineConfig","startAutoMode","stopAutoMode","toggleAutoMode","startSkipMode","stopSkipMode","toggleSkipMode","showDialogueUI","hideDialogueUI","toggleDialogueUI","setDialogueTextSpeed","setAutoForwardDelay","setAutoForwardSpeed","setSkipUnseenText","setSkipTransitionsAndAnimations","setSoundVolume","setMusicVolume","setMuteAll","setSaveLoadPagination","incrementSaveLoadPagination","decrementSaveLoadPagination","setMenuPage","setMenuEntryPoint","showConfirmDialog","hideConfirmDialog","pushOverlay","popOverlay","replaceLastOverlay","clearOverlays","completeAchievement","setAchievementProgress","showImageGalleryVariant","moveToPreviousImageGalleryVariant","moveToNextImageGalleryVariant","clearImageGallerySelection","moveToImageGalleryPage","moveToNextImageGalleryPage","moveToPreviousImageGalleryPage","playMusicRoomTrack","playMusicRoom","pauseMusicRoom","stopMusicRoom","seekMusicRoom","playPreviousMusicRoomTrack","playNextMusicRoomTrack","clearMusicRoomSelection","moveToMusicRoomPage","moveToNextMusicRoomPage","moveToPreviousMusicRoomPage","finishSceneReplay","moveToSceneReplayPage","moveToNextSceneReplayPage","moveToPreviousSceneReplayPage","musicRoomSoundReady","musicRoomSoundProgress","musicRoomSoundComplete","musicRoomSoundError","appendPendingEffect","beginRollbackActionBatch","endRollbackActionBatch","ensureRandomReplayOccurrence","recordRandomOutcome","markRollbackCheckpointTransient","markSavedRollbackCheckpointTransient","recordCurrentDialogueHistory"]),Lr("persistence",["saveSlot"]),Lr("navigation",["loadSlot","rollbackByOffset","rollbackToLine","resetStoryAtSection","sectionTransition","jumpToLine","startSceneReplay","exitSceneReplay","nextLine","nextLineFromSystem"])]),Zr=new Map;gl.forEach(e=>{e.actions.forEach(t=>{if(Zr.has(t))throw new Error(`duplicate action execution key: ${t}`);Zr.set(t,Zr.size)})});var zm=new Set(gl.find(({name:e})=>e==="navigation").actions),yl=Zr.get("saveSlot")-.5,hl=(e,t)=>e!=="random"?e:t?.distribution?.type==="weighted"?"random:weighted":"random:integer",Gm=(e,t)=>e<t?-1:e>t?1:0,Tn=e=>Object.entries(e).sort((t,n)=>{let o=hl(...t),a=hl(...n),r=Zr.get(o),s=Zr.get(a),i=r??yl,l=s??yl;return i!==l?i-l:r!==void 0&&s!==void 0?0:Gm(o,a)}),Co=e=>zm.has(e),jn=e=>{let t=e.map(([n])=>n).filter(Co);if(!(t.length<=1))throw new Error(`action batch cannot contain multiple navigation actions: ${t.join(", ")}`)};var le=e=>structuredClone(we(e)?pr(e):e),se=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),_t=e=>e?.animations?.playback?.continuity==="persistent",H=(e,t)=>se(e??{},t)&&e[t]!==void 0,Hm=e=>e?.applyMode==="persistent",Xm="default",Wm=e=>Array.isArray(e?.channels)?e.channels.filter(Hm).map(le):[],Tt=(e,t)=>e?!t(e)&&e.animations?{animationsOnly:!0,state:{animations:le(e.animations)}}:{animationsOnly:!1,state:null}:{animationsOnly:!1,state:null},Km=e=>H(e,"opacity")||H(e,"blur"),_o=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],xl=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],$o=["animationName","animationSpeed","loop"],Jm=e=>H(e,"transformId")||H(e,"transform")||_o.some(t=>H(e,t)),El=e=>e?.text&&H(e.text,"content")&&H(e.text,"textStyleId"),Sl=e=>e?.layout&&Array.isArray(e.layout.elements),Qm=e=>H(e,"text")||H(e,"layout"),bl=(e,t)=>e.resourceId?!0:El(e)?!t?.text:Sl(e)?!t?.layout:!1,Il=e=>e?.sprites&&e.sprites.length>0||e?.transformId||e?.resourceId,Zm=(e,t)=>{let n={...le(e),...t};if(t.text&&e.text&&(n.text={...le(e.text),...le(t.text)}),t.transform&&e.transform&&(n.transform={...le(e.transform),...le(t.transform)}),H(t,"transform")){delete n.transformId;for(let o of _o)H(t,o)||delete n[o]}else H(t,"transformId")&&delete n.transform;return n},ey=(e,t)=>{let n=[e.resourceId,e.text,e.layout].filter(o=>o!==void 0).length;if(n>1)throw n===2&&e.resourceId!==void 0&&e.text!==void 0?new Error(`Visual item "${e.id}" cannot define both resourceId and text`):new Error(`Visual item "${e.id}" must define only one of resourceId, text, or layout`);if(e.transformId&&e.transform)throw new Error(`Visual item "${e.id}" cannot define both transformId and transform`);if(H(e,"text")&&!El(e)&&!t?.text)throw new Error(`Visual item "${e.id}" text requires content and textStyleId`);if(H(e,"layout")&&!Sl(e))throw new Error(`Visual item "${e.id}" layout requires elements`)},wl=e=>xl.some(t=>H(e,t)),kl=e=>$o.some(t=>H(e,t)),ry=(e,t,{hasAuthoredTransformId:n=!1}={})=>{if(!t)return e;for(let o of xl)!n&&!H(e,o)&&H(t,o)&&(e[o]=t[o]),se(e,o)&&e[o]===void 0&&delete e[o];return e},Ol=(e,t,n)=>{let o=e[n];return o?.id===t?.id?o:e.find(a=>a.id===t?.id)},ty=(e,t)=>{if(!t)return e;let n=H(e,"transform");for(let o of _o)!n&&!H(e,o)&&H(t,o)&&(e[o]=t[o]),se(e,o)&&e[o]===void 0&&delete e[o];return e},ny=(e,t)=>(t&&(!H(e,"opacity")&&H(t,"opacity")&&(e.opacity=t.opacity),!H(e,"blur")&&H(t,"blur")&&(e.blur=le(t.blur)),se(e,"opacity")&&e.opacity===void 0&&delete e.opacity,se(e,"blur")&&e.blur===void 0&&delete e.blur),e),Rl=(e,t,n=[],{hasPatchFn:o=()=>!1,mergeItemFn:a}={})=>{if(!e||e.length===0)return{hasValidItems:!1,processedItems:[]};let r=e.map((s,i)=>{let l=Ol(n,s,i),c=t(s,l),u=Km(s),p=Jm(s),f=o(s),d=se(s,"animations"),m=le(s);if(!c&&(u||p||f)&&l&&(m=a?a(l,m):{...le(l),...m}),!d){let y=l?t(l):!1,g=t(m);y&&g&&_t(l)?m.animations=le(l.animations):delete m.animations}return ny(ty(m,l),l)}).filter(s=>t(s)||s.animations);return{hasValidItems:r.length>0,processedItems:r}},sy=e=>{if(e){if(e.character&&se(e.character,"name"))return e.character.name;if(se(e,"characterName"))return e.characterName}},Cl=e=>!!e?.character&&se(e.character,"sprite"),oy=e=>{let t={},n=!1,o=sy(e);return o!==void 0&&(t.name=o,n=!0),Cl(e)&&(t.sprite=le(e.character.sprite),n=!0),n?t:void 0},vl=e=>{e?.character?.sprite?.animations&&(e.character.sprite.animations={})},Al=({dialogueState:e,dialogueAction:t,persistCharacter:n})=>se(t,"persistSprite")?t.persistSprite===!0:se(e,"persistSprite")?e.persistSprite===!0:n&&!se(t,"characterId"),Pl=({previousCharacter:e,characterFields:t,hasCharacterId:n,persistCharacter:o,persistSprite:a,hasExplicitPersistSprite:r,isAppendingAdvDialogueContent:s})=>{let i={},l=e??{},c=t??{},u=s&&!n,p=u&&!r;return se(c,"name")?i.name=c.name:(o&&!n||u)&&se(l,"name")&&(i.name=le(l.name)),se(c,"sprite")?i.sprite=le(c.sprite):(a||p)&&se(l,"sprite")&&(i.sprite=le(l.sprite)),Object.keys(i).length>0?i:void 0},iy=({dialogueState:e,content:t,append:n=!1})=>{if(!n||!Array.isArray(t)){e.content=t,delete e.initialRevealedContent;return}let o=Array.isArray(e.content)?e.content:[];o.length>0?e.initialRevealedContent=o.map(a=>le(a)):delete e.initialRevealedContent,e.content=[...o,...t]},ay=()=>({}),ly=(e,t)=>{if(!t.screen)return;let n=H(t.screen,"opacity"),o=H(t.screen,"blur"),a=se(t.screen,"animations");if(!n&&!o){a||delete e.screen;return}let r=e.screen,s={};if(n?s.opacity=t.screen.opacity:H(r,"opacity")&&(s.opacity=r.opacity),o?s.blur=le(t.screen.blur):H(r,"blur")&&(s.blur=le(r.blur)),se(s,"opacity")&&s.opacity===void 0&&delete s.opacity,se(s,"blur")&&s.blur===void 0&&delete s.blur,Object.keys(s).length===0){delete e.screen;return}e.screen=s},cy=(e,t)=>{if(t.background){let n=H(t.background,"resourceId"),o=H(t.background,"colorId"),a=H(t.background,"opacity"),r=H(t.background,"blur"),s=H(t.background,"transformId"),i=wl(t.background),l=kl(t.background),{animationsOnly:c,state:u}=Tt(t.background,d=>H(d,"resourceId")||H(d,"colorId")||H(d,"opacity")||H(d,"blur")||H(d,"transformId")||wl(d)||kl(d));if(c){e.background=e.background?{...le(e.background),...u}:u;return}if(!n&&!o&&!a&&!r&&!s&&!i&&!l){delete e.background;return}let p=e.background,f=le(t.background);if(!n&&p?.resourceId){f.resourceId=p.resourceId,!se(f,"transformId")&&p.transformId&&(f.transformId=p.transformId);for(let d of $o)!H(f,d)&&H(p,d)&&(f[d]=p[d])}ry(f,p,{hasAuthoredTransformId:s}),!o&&p?.colorId&&(f.colorId=p.colorId),!a&&H(p,"opacity")&&(f.opacity=p.opacity),!r&&H(p,"blur")&&(f.blur=le(p.blur)),se(f,"resourceId")&&f.resourceId===void 0&&delete f.resourceId,se(f,"colorId")&&f.colorId===void 0&&delete f.colorId,se(f,"animations")&&f.animations===void 0&&delete f.animations,se(f,"transformId")&&f.transformId===void 0&&delete f.transformId,se(f,"opacity")&&f.opacity===void 0&&delete f.opacity,se(f,"blur")&&f.blur===void 0&&delete f.blur;for(let d of $o)se(f,d)&&f[d]===void 0&&delete f[d];if(!f.resourceId&&!f.colorId){delete e.background;return}p?.resourceId===f.resourceId&&p?.transformId===f.transformId&&!se(f,"animations")&&_t(p)&&(f.animations=le(p.animations)),e.background=f}else e.background?.animations&&!_t(e.background)&&(e.background.animations={})},uy=(e,t)=>{if(!t.dialogue){if(e.dialogue&&(vl(e.dialogue),e.dialogue.mode==="adv")){e.dialogue.content=void 0,delete e.dialogue.initialRevealedContent,delete e.dialogue.textSpeed;let u=e.dialogue.persistCharacter===!0,p=Al({dialogueState:e.dialogue,dialogueAction:{},persistCharacter:u});u||delete e.dialogue.characterId,e.dialogue.character=Pl({previousCharacter:e.dialogue.character,characterFields:{},hasCharacterId:!1,persistCharacter:u,persistSprite:p,hasExplicitPersistSprite:!1,isAppendingAdvDialogueContent:!1}),e.dialogue.character||delete e.dialogue.character}return}e.dialogue||(e.dialogue={});let n=e.dialogue.mode;if(t.dialogue.ui){let{animationsOnly:u,state:p}=Tt(t.dialogue.ui,f=>!!f.resourceId);u?e.dialogue.ui={...e.dialogue.ui,...p}:e.dialogue.ui={...t.dialogue.ui}}else e.dialogue?.ui?.animations&&(e.dialogue.ui.animations={});t.dialogue.mode==="adv"&&(e.dialogue.content=e.dialogue.content||void 0,e.dialogue.characterId=e.dialogue.characterId||void 0,e.dialogue.mode="adv"),t.dialogue.mode==="nvl"&&(e.dialogue?.mode!=="nvl"&&(e.dialogue.lines=[]),e.dialogue.mode="nvl");let o=t.dialogue.append===!0&&n!=="nvl"&&e.dialogue?.mode!=="nvl"&&Array.isArray(t.dialogue.content);t.dialogue.content!==void 0&&iy({dialogueState:e.dialogue,content:t.dialogue.content,append:o}),se(t.dialogue,"textSpeed")?e.dialogue.textSpeed=t.dialogue.textSpeed:delete e.dialogue.textSpeed;let a=se(t.dialogue,"persistCharacter")?t.dialogue.persistCharacter===!0:e.dialogue.persistCharacter===!0;a?e.dialogue.persistCharacter=!0:delete e.dialogue.persistCharacter;let r=Al({dialogueState:e.dialogue,dialogueAction:t.dialogue,persistCharacter:a});se(t.dialogue,"persistSprite")&&(e.dialogue.persistSprite=r);let s=se(t.dialogue,"characterId"),i=oy(t.dialogue),l=Cl(t.dialogue);s?t.dialogue.characterId?e.dialogue.characterId=t.dialogue.characterId:delete e.dialogue.characterId:!a&&!o&&delete e.dialogue.characterId;let c=Pl({previousCharacter:e.dialogue.character,characterFields:i,hasCharacterId:s,persistCharacter:a,persistSprite:r,hasExplicitPersistSprite:se(t.dialogue,"persistSprite"),isAppendingAdvDialogueContent:o});if(c?e.dialogue.character=c:delete e.dialogue.character,l||vl(e.dialogue),t.dialogue.clear){delete e.dialogue;return}if(t.dialogue?.clearPage&&e.dialogue?.mode==="nvl"&&(e.dialogue.lines=[]),e.dialogue?.mode==="nvl"&&t.dialogue.content!==void 0){let u={content:t.dialogue.content,characterId:e.dialogue.characterId??null};e.dialogue.textSpeed!==void 0&&(u.textSpeed=e.dialogue.textSpeed),e.dialogue.character&&(u.character=le(e.dialogue.character)),e.dialogue.lines.push(u)}},py=(e,t)=>{let n=Wm(e.sfx);if(!t.sfx){if(n.length>0){e.sfx={channels:n};return}delete e.sfx;return}if(Array.isArray(t.sfx.items)){let r=n.filter(s=>s.id!==Xm);if(t.sfx.items.length===0){if(r.length>0){e.sfx={channels:r};return}delete e.sfx;return}e.sfx=le(t.sfx),r.length>0&&(e.sfx.channels=r);return}if(!Array.isArray(t.sfx.channels)){if(n.length>0){e.sfx={channels:n};return}delete e.sfx;return}if(t.sfx.channels.length===0){delete e.sfx;return}let o=new Set(t.sfx.channels.map(r=>r.id)),a=n.filter(r=>!o.has(r.id));for(let r of t.sfx.channels)Array.isArray(r.sounds)&&r.sounds.length>0&&a.push(le(r));if(a.length===0){delete e.sfx;return}e.sfx={channels:a}},dy=(e,t)=>{if(t.bgm){let n=Array.isArray(t.bgm.sounds);if(!t.bgm.resourceId&&!n||n&&t.bgm.sounds.length===0){e.bgm=void 0;return}e.bgm=le(t.bgm),t.bgm.resourceId&&(e.bgm.loop=t.bgm.loop??!0)}},fy=(e,t)=>{if(t.visual){let n=e.visual?.items||[];t.visual.items?.forEach((r,s)=>{ey(r,Ol(n,r,s))});let{hasValidItems:o,processedItems:a}=Rl(t.visual.items,bl,n,{hasPatchFn:Qm,mergeItemFn:Zm});o?e.visual={items:a}:delete e.visual}else e.visual?.items&&(e.visual.items=e.visual.items.map(n=>n.animations&&(!bl(n)||!_t(n))?{...n,animations:{}}:n))},my=(e,t)=>{if(!t.character){e.character?.items&&(e.character.items=e.character.items.map(a=>a.animations&&(!Il(a)||!_t(a))?{...a,animations:{}}:a));return}let{hasValidItems:n,processedItems:o}=Rl(t.character.items,Il,e.character?.items||[]);n?e.character={items:o}:delete e.character},yy=(e,t)=>{t.animation?e.animation=t.animation:e.animation&&delete e.animation},hy=(e,t)=>{if(t.layout){let{animationsOnly:n,state:o}=Tt(t.layout,a=>!!a.resourceId);if(n){e.layout=o;return}if(!t.layout.resourceId){delete e.layout;return}e.layout=t.layout}else e.layout&&delete e.layout},gy=(e,t)=>{if(t.choice){let{animationsOnly:n,state:o}=Tt(t.choice,a=>!!a.resourceId);if(n){e.choice={...e.choice,...o};return}if(!t.choice.resourceId){delete e.choice;return}e.choice=t.choice}else e.choice&&delete e.choice},by=(e,t)=>{if(t.form){let{animationsOnly:n,state:o}=Tt(t.form,a=>!!a.resourceId);if(n){e.form={...e.form,...o};return}if(!t.form.resourceId){delete e.form;return}e.form=le(t.form)}else e.form&&delete e.form},Iy=(e,t)=>{if(t.control){if(!t.control.resourceId){delete e.control;return}e.control=t.control}},wy=(e,t)=>{if(t.voice){let n=Array.isArray(t.voice.sounds);if(!t.voice.resourceId&&!n||n&&t.voice.sounds.length===0){delete e.voice;return}e.voice=le(t.voice)}else e.voice&&delete e.voice},ky=(e,t)=>{t.cleanAll&&Object.keys(e).forEach(n=>{delete e[n]})},Mr=e=>xn(ay,[ky,ly,cy,py,dy,fy,uy,my,yy,hy,gy,by,Iy,wy])(e);var et=(e,t)=>{if(!e||typeof e!="string"||!e.includes("${"))return e;let n=jr(e,t);return n&&typeof n=="object"?e:n};var vy=Object.freeze({dialogueTextSpeed:{source:"global.dialogueTextSpeed"},autoForwardDelay:{source:"global.autoForwardDelay"},autoForwardSpeed:{source:"global.autoForwardSpeed"},skipUnseenText:{source:"global.skipUnseenText"},skipTransitionsAndAnimations:{source:"global.skipTransitionsAndAnimations"},soundVolume:{source:"global.soundVolume"},musicVolume:{source:"global.musicVolume"},muteAll:{source:"global.muteAll"},localizationPackageId:{source:"global.localizationPackageId"},saveLoadPagination:{source:"context.runtime.saveLoadPagination"},menuPage:{source:"context.runtime.menuPage"},menuEntryPoint:{source:"context.runtime.menuEntryPoint"},autoMode:{source:"global.autoMode"},skipMode:{source:"global.skipMode"},dialogueUIHidden:{source:"global.dialogueUIHidden"},isLineCompleted:{source:"global.isLineCompleted"}}),hr=Object.freeze({dialogueTextSpeed:50,autoForwardDelay:1e3,autoForwardSpeed:50,skipUnseenText:!1,skipTransitionsAndAnimations:!1,soundVolume:50,musicVolume:50,muteAll:!1,localizationPackageId:null,autoMode:!1,skipMode:!1,dialogueUIHidden:!1,isLineCompleted:!1}),jt=Object.freeze({saveLoadPagination:1,menuPage:"",menuEntryPoint:""}),Ay=Object.freeze({dialogueTextSpeed:"number",autoForwardDelay:"number",autoForwardSpeed:"number",skipUnseenText:"boolean",skipTransitionsAndAnimations:"boolean",soundVolume:"number",musicVolume:"number",muteAll:"boolean",localizationPackageId:"nullableString",saveLoadPagination:"number",menuPage:"string",menuEntryPoint:"string",autoMode:"boolean",skipMode:"boolean",dialogueUIHidden:"boolean",isLineCompleted:"boolean"}),To=Object.freeze(["dialogueTextSpeed","autoForwardDelay","autoForwardSpeed","skipUnseenText","skipTransitionsAndAnimations","soundVolume","musicVolume","muteAll","localizationPackageId"]),$l=Object.freeze(["dialogueTextSpeed","autoForwardDelay","autoForwardSpeed","skipUnseenText","skipTransitionsAndAnimations","soundVolume","musicVolume","muteAll"]),jo=Object.freeze(["saveLoadPagination","menuPage","menuEntryPoint"]),_l=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Py=(e,t)=>{let n=Ay[e];if(n==="number"){if(typeof t!="number"||!Number.isFinite(t))throw new Error(`${e} requires a finite numeric value`);return}if(n==="boolean"){if(typeof t!="boolean")throw new Error(`${e} requires a boolean value`);return}if(n==="string"){if(typeof t!="string")throw new Error(`${e} requires a string value`);return}if(n==="nullableString"){if(t!==null&&typeof t!="string")throw new Error(`${e} requires a string or null value`);return}throw new Error(`Unsupported runtime field "${e}"`)},Nn=(e,t)=>{if(Py(e,t),e==="autoForwardDelay"&&t<0)throw new Error("autoForwardDelay requires a value greater than or equal to 0");if(["autoForwardSpeed","soundVolume","musicVolume"].includes(e)&&(t<0||t>100))throw new Error(`${e} requires a value between 0 and 100`);return e==="saveLoadPagination"?Math.max(1,Math.trunc(t)):t},No=(e={})=>{let t=e?.config;if(t===void 0)return{...hr};if(!_l(t))throw new Error("projectData.config must be an object");let n=Object.keys(t).find(i=>i!=="runtimeDefaults");if(n)throw new Error(`projectData.config contains unsupported field "${n}"`);let o=t.runtimeDefaults;if(o===void 0)return{...hr};if(!_l(o))throw new Error("projectData.config.runtimeDefaults must be an object");let a=new Set($l),r=Object.keys(o).find(i=>!a.has(i));if(r)throw new Error(`projectData.config.runtimeDefaults contains unsupported field "${r}"`);let s={...hr};return $l.forEach(i=>{o[i]!==void 0&&(s[i]=Nn(i,o[i]))}),s},xy=(e,t)=>{if(t.startsWith("global.")){let n=t.slice(7);return e?.global?.[n]}if(t.startsWith("context.runtime.")){let n=t.slice(16),o=Array.isArray(e?.contexts)?e.contexts:[];return o[o.length-1]?.runtime?.[n]}},gr=e=>Object.fromEntries(Object.entries(vy).map(([t,n])=>{let o=xy(e,n.source),a=o!==void 0?o:hr[t]??jt[t];return[t,a]})),Xe=(e,t)=>gr(e)[t],Tl=(e={})=>Object.fromEntries(To.map(t=>[t,e[t]??hr[t]]));var rt=Object.freeze({VISUAL_BEHIND_BACKGROUND:10,BACKGROUND:20,VISUAL_BEHIND_CHARACTER:30,CHARACTER:40,VISUAL_BEHIND_DIALOGUE:50,DIALOGUE:60,VISUAL_BEHIND_CHOICE:70,CHOICE:80,VISUAL_FOREGROUND:90}),tr=Object.freeze({BEHIND_BACKGROUND:rt.VISUAL_BEHIND_BACKGROUND,BEHIND_CHARACTER:rt.VISUAL_BEHIND_CHARACTER,BEHIND_DIALOGUE:rt.VISUAL_BEHIND_DIALOGUE,BEHIND_CHOICE:rt.VISUAL_BEHIND_CHOICE,FOREGROUND:rt.VISUAL_FOREGROUND}),Do=tr.BEHIND_DIALOGUE,Lo=Object.freeze(Object.values(tr).sort((e,t)=>e-t));var Ey={__arrayOrEmpty:e=>Array.isArray(e)?e:[],objectValues:e=>Object.entries(e).map(([t,n])=>({id:t,...n})),formatDate:Eo},Sy=/^\$for\s+([A-Za-z_][A-Za-z0-9_]*)(?:\s*,\s*([A-Za-z_][A-Za-z0-9_]*))?\s+in\s+(.+?)(?::)?$/,Nt=e=>Array.isArray(e)?e.map(t=>{if(!t||typeof t!="object"||Array.isArray(t)||Object.keys(t).length!==1)return Nt(t);let[n]=Object.keys(t),o=Sy.exec(n);if(!o)return Nt(t);let[,a,r,s]=o,i=`$for ${a}${r?`, ${r}`:""} in __arrayOrEmpty(${s.trim()})`,l=Array.isArray(t[n])?t[n]:[];return{[i]:Nt(l)}}):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).map(([t,n])=>[t,Nt(n)])),nr=(e,t)=>{let n={functions:Ey};return jr(Nt(e),t,n)},ei=({animationType:e,animationId:t,animationPath:n})=>{if(e!==void 0&&!(e==="update"||e==="transition"))throw new Error(`[${n}] Animation "${t}" has unsupported type "${e}". Use "update" or "transition".`)},Oy=({id:e,targetId:t,animation:n,playback:o,animationPath:a="animation"})=>{let r=structuredClone(n);if(ei({animationType:r.type,animationId:e,animationPath:a}),delete r.name,delete r.playback,r.id=e,r.targetId=t,o!==void 0){let s=_y(o,`${a}.playback`);if(s!==void 0){let i=s.loop===!0?Wl(r):null;if(s.loop===!0&&r.type!=="update")throw new Error(`[${a}.playback] playback.loop is only supported for type "update".`);if(s.loop===!0&&r.complete!==void 0)throw new Error(`[${a}.playback] animation.complete is not allowed when playback.loop is true because a loop never completes.`);if(s.loop===!0&&(!Number.isFinite(i)||i<=0))throw new Error(`[${a}.playback] playback.loop requires an animation with a finite duration greater than 0.`);r.playback=s}}return r},Ry=(e,{animationId:t="animation",animationPath:n="animation"}={})=>{if(!(!e||typeof e!="object"||Array.isArray(e))&&typeof e.type=="string")return ei({animationType:e.type,animationId:t,animationPath:n}),e.type},Cy=e=>{if(typeof e=="string")return e;if(!(!e||typeof e!="object"||Array.isArray(e)))return e.resourceId},$y=e=>{if(!(!e||typeof e!="object"||Array.isArray(e)))return e.playback},_y=(e,t="animation.playback")=>{if(e===void 0)return;if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`[${t}] playback must be an object.`);if(e.continuity!==void 0&&e.continuity!=="render"&&e.continuity!=="persistent")throw new Error(`[${t}] playback.continuity must be "render" or "persistent".`);if(e.speed!==void 0&&(typeof e.speed!="number"||!Number.isFinite(e.speed)||e.speed<=0))throw new Error(`[${t}] playback.speed must be a finite number greater than 0.`);if(e.loop!==void 0&&typeof e.loop!="boolean")throw new Error(`[${t}] playback.loop must be a boolean.`);let n={};return e.continuity!==void 0&&(n.continuity=e.continuity),e.speed!==void 0&&e.speed!==1&&(n.speed=e.speed),e.loop===!0&&(n.loop=!0),Object.keys(n).length>0?n:void 0},Ty=e=>{let t=e?.playback?.speed;return typeof t=="number"&&Number.isFinite(t)&&t>0?t:1},br=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Gl=e=>e?.playback?.continuity==="persistent",zo=e=>Array.isArray(e)?e.map(zo):!e||typeof e!="object"?e:Object.keys(e).sort().reduce((t,n)=>(t[n]=zo(e[n]),t),{}),Vn=e=>{if(!e||typeof e!="object"||Array.isArray(e))return null;let t=structuredClone(e);return t.playback&&(delete t.playback.continuity,t.playback.speed===1&&delete t.playback.speed,Object.keys(t.playback).length===0&&delete t.playback),JSON.stringify(zo(t))},Hl=(e=[])=>e.filter(t=>Gl(t)).map(t=>structuredClone(t)),Xl=e=>Array.isArray(e?.keyframes)?e.keyframes.reduce((t,n)=>{let o=typeof n?.duration=="number"&&Number.isFinite(n.duration)?n.duration:0;return t+o},0):0,Mo=e=>!e||typeof e!="object"||Array.isArray(e)?0:Object.values(e).reduce((t,n)=>Math.max(t,Xl(n)),0),Wl=e=>Math.max(Mo(e?.tween),Mo(e?.prev?.tween),Mo(e?.next?.tween),Xl(e?.mask?.progress)),Kl=e=>!e||typeof e!="object"||Array.isArray(e)?0:e.playback?.loop===!0?Number.POSITIVE_INFINITY:Wl(e)/Ty(e),jy=e=>e.some(t=>t?.playback?.loop===!0),jl=({animationInstances:e,activePersistentAnimations:t})=>{if(!Array.isArray(e)||e.length===0||!Array.isArray(t)||t.length===0)return!1;let n=new Set(t.map(Vn).filter(Boolean));return e.some(o=>{if(!Gl(o))return!1;let a=Vn(o);return a?n.has(a):!1})},Ye=({animationInstances:e,isLineCompleted:t,skipTransitionsAndAnimations:n,activePersistentAnimations:o,restoredPersistentAnimations:a,isAuthoredOnCurrentLine:r=!0})=>!Array.isArray(e)||e.length===0||n?!1:jy(e)||r&&!t||jl({animationInstances:e,activePersistentAnimations:o})?!0:r?!1:jl({animationInstances:e,activePersistentAnimations:a}),Jl=(e,t,n,o,a)=>{if(e===void 0)return!0;let r=a.slice(0,o).filter(i=>i?.id===n).length,s=e?.[t]?.items?.filter(i=>i?.id===n).at(r);return br(s??{},"animations")},Ny=e=>!e||typeof e!="object"||Array.isArray(e)?!1:["in","out","update"].some(t=>e[t]!==void 0),Dy=(e,t)=>{if(Ny(e))throw new Error(`[${t}] Legacy animations.in/out/update is no longer supported. Use a single animations.resourceId reference.`)},Ly=({resources:e,animationId:t,playback:n,instanceId:o,targetId:a,animationPath:r="animation"})=>{if(!t||!a)return!1;let s=e?.animations?.[t];return s?Oy({id:o,targetId:a,animation:s,playback:n,animationPath:r}):null},My=(e,{defaultTargetId:t,defaultId:n,animationPath:o="animation"}={})=>{if(!e||typeof e!="object"||Array.isArray(e))return e;let a=structuredClone(e);return ei({animationType:a.type,animationId:a.id??n,animationPath:o}),a.id??=n,a.targetId??=t,a},ri=({animations:e,transitions:t,defaultTargetId:n,idPrefix:o,animationPathPrefix:a=o})=>{t.forEach((r,s)=>{e.push(My(r,{defaultTargetId:n,defaultId:`${o}-transition-${s}`,animationPath:`${a}.transitions[${s}]`}))})},Go=(e,t)=>{if(e===void 0)return[];if(!Array.isArray(e)||e.some(n=>n===null||typeof n!="object"||Array.isArray(n)))throw new Error(`${t} must be an array of objects`);return e},Vy=({content:e,path:t,variables:n})=>Go(e,t).reduce((o,a)=>{let r=et(a.text,{variables:n});return o+`${r??""}`.length},0),Nl=(e=[])=>{let t=new Map;for(let n of e)n?.id&&t.set(n.id,(t.get(n.id)??0)+1);return new Set(Array.from(t.entries()).filter(([,n])=>n>1).map(([n])=>n))},Dn=(e,t=0,n=new Set)=>{if(!n.has(e?.id))return`character-container-${e.id}`;let o=e?.sprites?.map(({resourceId:a})=>a)||[];return o.length===0?`character-container-${e.id}`:`character-container-${e.id}-${t}-${o.join("-")}`},nt=(e,t)=>{if(t.transformId&&t.transform)throw new Error(`Visual item "${t.id}" cannot define both transformId and transform`);if(t.transform)return t.transform;if(!t.transformId)throw new Error(`Visual item "${t.id}" requires transformId or transform`);let n=e.transforms?.[t.transformId];if(!n)throw new Error(`Transform "${t.transformId}" not found for visual item "${t.id}"`);return n},qy=(e,t={})=>{if(!t?.transformId)return;let n=e.transforms?.[t.transformId];if(!n)throw new Error(`Transform "${t.transformId}" not found for background`);return n},Fy=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],Uy=(e={})=>Fy.some(t=>br(e,t)),Ql=(e={},t)=>{if(t){if(e.images?.[t])return"sprite";if(e.videos?.[t])return"video";if(e.spritesheets?.[t])return"spritesheet-animation";if(e.layouts?.[t])return"container"}},Mn=({resourceId:e,kind:t})=>{if(e)return t?`bg-cg-background-${t}`:`bg-cg-${e}`},By=(e={})=>e.textStyles||{},Yy=(e={})=>e.images||{},zy=.5,Gy=(e={},t,n)=>{if(t){if(!e.animations?.[t])throw new Error(`Animation '${t}' not found in spritesheet resource '${n}'`);return t}return Object.keys(e.animations??{})[0]},ti=({id:e,resourceId:t,spritesheet:n,animationName:o,animationSpeed:a,loop:r,width:s,height:i,transform:l={}}={})=>{let c=Gy(n,o,t),u=c?n.animations?.[c]:void 0;if(!u){console.warn(`Spritesheet animation not found: ${t}`);return}return{id:e,type:"spritesheet-animation",...l,width:s??n.width,height:i??n.height,src:n.fileId,atlas:n.jsonData,playback:{frames:u.frames,animationSpeed:a??u.animationSpeed??zy,loop:r??u.loop??!0}}},Zl=({id:e,item:t,resources:n={}}={})=>{let o=n.images?.[t.resourceId];if(o)return{type:"sprite",id:e,src:o.fileId,width:o.width,height:o.height,x:0,y:0};let a=n.spritesheets?.[t.resourceId];if(a)return ti({id:e,resourceId:t.resourceId,spritesheet:a,animationName:t.animationName,animationSpeed:t.animationSpeed,loop:t.loop,transform:{x:0,y:0}});console.warn(`Character sprite resource not found: ${t.resourceId}`)},Hy=(e={})=>e.colors||{},Xy=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/,Lt=(e,t)=>e==="root"?`${t}`:`${e}.${t}`,st=(e,t,n)=>{if(typeof e!="string"||e.length===0)throw new Error(`${n} at "${t}" must resolve to a non-empty string`)},Vo=(e,t,n)=>{if(e===void 0)return 1;if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} for text style "${n}" must be a number between 0 and 1`);if(e<0||e>1)throw new Error(`${t} for text style "${n}" must be a number between 0 and 1`);return e},qo=(e,t,n,o,{minimum:a}={})=>{if(e===void 0)return o;if(typeof e!="number"||!Number.isFinite(e)||a!==void 0&&e<a){let r=a===void 0?"a finite number":`a finite number >= ${a}`;throw new Error(`shadow.${t} for text style "${n}" must be ${r}`)}return e},Un=(e,t)=>{if(typeof e!="string"||!Xy.test(e))throw new Error(`${t} must resolve to a hex color`);return e.length===4?`#${e.slice(1).split("").map(n=>n.repeat(2)).join("")}`:e},Dl=(e,t,n)=>{let o=Un(e,n);if(t===1)return o;let a=Number.parseInt(o.slice(1,3),16),r=Number.parseInt(o.slice(3,5),16),s=Number.parseInt(o.slice(5,7),16);return`rgba(${a}, ${r}, ${s}, ${t})`},Wy=(e={},t)=>{let n=By(e)?.[t];if(!n)throw new Error(`Text style "${t}" not found`);let a=(Array.isArray(n.fontId)?n.fontId:[n.fontId]).map(l=>{let c=e.fonts?.[l];if(!c)throw new Error(`Font "${l}" not found for text style "${t}"`);return c.fileId}),r=e.colors?.[n.colorId];if(!r)throw new Error(`Color "${n.colorId}" not found for text style "${t}"`);let s=Vo(n.colorAlpha,"colorAlpha",t),i={fontFamily:Array.isArray(n.fontId)?a.join(", "):a[0],fontSize:n.fontSize??16,fontWeight:n.fontWeight??"400",fontStyle:n.fontStyle??"normal",lineHeight:n.lineHeight??1.2,fill:Dl(r.hex,s,`Color "${n.colorId}" for text style "${t}"`)};if(n.align!==void 0&&(i.align=n.align),n.wordWrap!==void 0&&(i.wordWrap=n.wordWrap),n.breakWords!==void 0&&(i.breakWords=n.breakWords),n.wordWrapWidth!==void 0&&(i.wordWrapWidth=n.wordWrapWidth),n.strokeColorId){let l=e.colors?.[n.strokeColorId];if(!l)throw new Error(`Stroke color "${n.strokeColorId}" not found for text style "${t}"`);let c=Vo(n.strokeAlpha,"strokeAlpha",t);i.strokeColor=Dl(l.hex,c,`Stroke color "${n.strokeColorId}" for text style "${t}"`)}else if(n.strokeAlpha!==void 0)throw new Error(`strokeAlpha for text style "${t}" requires strokeColorId`);if(n.strokeWidth!==void 0&&(i.strokeWidth=n.strokeWidth),n.shadow!==void 0){let l=e.colors?.[n.shadow.colorId];if(!l)throw new Error(`Shadow color "${n.shadow.colorId}" not found for text style "${t}"`);i.shadow={color:Un(l.hex,`Shadow color "${n.shadow.colorId}" for text style "${t}"`),alpha:Vo(n.shadow.alpha,"shadow.alpha",t),blur:qo(n.shadow.blur,"blur",t,0,{minimum:0}),offsetX:qo(n.shadow.offsetX,"offsetX",t,2),offsetY:qo(n.shadow.offsetY,"offsetY",t,2)}}return i},Ho=(e,t={},n="root")=>{if(Array.isArray(e))return e.map((a,r)=>Ho(a,t,`${n}[${r}]`));if(!e||typeof e!="object")return e;if(Object.prototype.hasOwnProperty.call(e,"textStyle"))throw new Error(`Inline textStyle is not allowed in layout elements at "${n}". Use textStyleId instead`);let o={};for(let[a,r]of Object.entries(e))a!=="textStyleId"&&(o[a]=Ho(r,t,Lt(n,a)));return e.textStyleId!==void 0&&(st(e.textStyleId,n,"textStyleId"),o.textStyle=Wy(t,e.textStyleId)),o},ni=(e={},t)=>{let n=Hy(e)?.[t];if(!n)throw new Error(`Color "${t}" not found`);return Un(n.hex,`Color "${t}"`)},ec=e=>e==="hover.fill"?"hover.colorId":e==="click.fill"?"click.colorId":e==="rightClick.fill"?"rightClick.colorId":"colorId",Fo=(e,t,n)=>{let o=e?.[t];if(!(!o||typeof o!="object"||Array.isArray(o))&&Object.prototype.hasOwnProperty.call(o,"fill"))throw new Error(`Inline ${t}.fill is not allowed in rect layout elements at "${n}". Use ${ec(`${t}.fill`)} instead`)},Ky=(e,t={},n="root")=>{if(Array.isArray(e))return e.map((a,r)=>Mt(a,t,`${n}[${r}]`));if(!e||typeof e!="object")return e;let o={};for(let[a,r]of Object.entries(e))a!=="colorId"&&(o[a]=Mt(r,t,Lt(n,a)));return e.colorId!==void 0&&(st(e.colorId,n,"colorId"),o.fill=ni(t,e.colorId)),o},Mt=(e,t={},n="root")=>{if(Array.isArray(e))return e.map((a,r)=>Mt(a,t,`${n}[${r}]`));if(!e||typeof e!="object")return e;if(e.type==="rect"){if(Object.prototype.hasOwnProperty.call(e,"fill"))throw new Error(`Inline fill is not allowed in rect layout elements at "${n}". Use ${ec("fill")} instead`);Fo(e,"hover",n),Fo(e,"click",n),Fo(e,"rightClick",n)}let o={};for(let[a,r]of Object.entries(e))if(!(e.type==="rect"&&a==="colorId")){if(e.type==="rect"&&(a==="hover"||a==="click"||a==="rightClick")){o[a]=Ky(r,t,Lt(n,a));continue}o[a]=Mt(r,t,Lt(n,a))}return e.type==="rect"&&e.colorId!==void 0&&(st(e.colorId,n,"colorId"),o.fill=ni(t,e.colorId)),o},Uo=(e={},t)=>{let n=Yy(e)?.[t];return n||null},rc=e=>e==="hoverUrl"||e==="hoverSrc"||e==="hover.src"?"hoverImageId":e==="clickUrl"||e==="clickSrc"||e==="click.src"?"clickImageId":"imageId",Ll=(e,t,n,o)=>{let a=e?.[t];if(!(!a||typeof a!="object"||Array.isArray(a))&&Object.prototype.hasOwnProperty.call(a,o))throw new Error(`Inline ${t}.${o} is not allowed in sprite layout elements at "${n}". Use ${rc(`${t}.${o}`)} instead`)},Ml=(e,t,n)=>{let o=e[t];e[t]={...o&&typeof o=="object"&&!Array.isArray(o)?o:{},src:n}},Xo=(e,t={},n="root")=>{if(Array.isArray(e))return e.map((a,r)=>Xo(a,t,`${n}[${r}]`));if(!e||typeof e!="object")return e;if(e.type==="sprite"){for(let a of["url","src","hoverUrl","hoverSrc","clickUrl","clickSrc"])if(Object.prototype.hasOwnProperty.call(e,a))throw new Error(`Inline ${a} is not allowed in sprite layout elements at "${n}". Use ${rc(a)} instead`);Ll(e,"hover",n,"src"),Ll(e,"click",n,"src")}let o={};for(let[a,r]of Object.entries(e))e.type==="sprite"&&(a==="imageId"||a==="hoverImageId"||a==="clickImageId")||(o[a]=Xo(r,t,Lt(n,a)));if(e.type==="sprite"&&e.imageId!==void 0){st(e.imageId,n,"imageId");let a=Uo(t,e.imageId),r=a?.fileId??e.imageId;o.src=r,o.width===void 0&&a?.width!==void 0&&(o.width=a.width),o.height===void 0&&a?.height!==void 0&&(o.height=a.height)}return e.type==="sprite"&&e.hoverImageId!==void 0&&(st(e.hoverImageId,n,"hoverImageId"),Ml(o,"hover",Uo(t,e.hoverImageId)?.fileId??e.hoverImageId)),e.type==="sprite"&&e.clickImageId!==void 0&&(st(e.clickImageId,n,"clickImageId"),Ml(o,"click",Uo(t,e.clickImageId)?.fileId??e.clickImageId)),o},si=(e,t={},n="root")=>Xo(Mt(Ho(e,t,n),t,n),t,n),sr=si,qr=(e=[])=>e.find(t=>t.id==="story"),Jy="#000000",Wo="bg-cg-background-color",Qy=({resources:e={},background:t={},screen:n})=>t?.colorId===void 0?Un(n?.backgroundColor??Jy,"screen.backgroundColor"):ni(e,t.colorId),tc=(e={})=>{if(br(e,"opacity"))return typeof e.opacity=="number"?e.opacity:void 0},Zy=(e={})=>{if(!(!e.blur||typeof e.blur!="object"||Array.isArray(e.blur)))return e.blur},Vl=(e={},{includeDefaultAlpha:t=!1}={})=>{let n=tc(e),o=Zy(e),a={};return(t||n!==void 0)&&(a.alpha=n??1),o&&(a.blur=o),a},eh=(e={})=>{if(br(e,"opacity"))return typeof e.opacity=="number"?e.opacity:void 0},rh=(e={})=>{if(!(!e.blur||typeof e.blur!="object"||Array.isArray(e.blur)))return e.blur},nc=(e={})=>{let t=eh(e),n=rh(e),o={};return t!==void 0&&(o.alpha=t),n&&(o.blur=n),o},Vr=(e={})=>nc(e),We=(e={},t={})=>{let n={x:t.x??e.x,y:t.y??e.y,anchorX:t.anchorX??e.anchorX,anchorY:t.anchorY??e.anchorY,rotation:t.rotation??e.rotation,scaleX:t.scaleX??e.scaleX,scaleY:t.scaleY??e.scaleY},o=t.originX??e.originX,a=t.originY??e.originY;return o!==void 0&&(n.originX=o),a!==void 0&&(n.originY=a),n},th=["id","type","resourceId","layout","transformId","transform","x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY","layer","opacity","blur","animations"],oi=(e={})=>e.text&&br(e.text,"content")&&br(e.text,"textStyleId"),ii=(e={})=>e.layout&&Array.isArray(e.layout.elements),ql=(e={})=>{if(e.resourceId)return e.resourceId;if(oi(e))return"text";if(ii(e))return"inline-layout"},Fl=(e,t={})=>typeof e=="string"?t.images?.[e]?.fileId??e:!e||typeof e!="object"||Array.isArray(e)?e:e.imageId?t.images?.[e.imageId]?.fileId??e.imageId:Array.isArray(e.items)?{...e,items:e.items.map(n=>{if(typeof n=="string")return t.images?.[n]?.fileId??n;if(!n||typeof n!="object"||Array.isArray(n))return n;if(n.imageId){let{imageId:o,...a}=n;return{...a,src:t.images?.[o]?.fileId??o}}return typeof n.src=="string"?{...n,src:t.images?.[n.src]?.fileId??n.src}:n})}:e,nh=({item:e,particle:t,resources:n})=>{let o=nt(n,e),a=structuredClone(t),r=a.modules?.appearance?.texture;r!==void 0&&(a.modules.appearance.texture=Fl(r,n)),a.texture!==void 0&&(a.texture=Fl(a.texture,n));let s={id:`visual-${e.id}`,type:"container",children:[{...a,id:`visual-${e.id}-particles`,type:"particles",x:0,y:0}],...We(o,e)};return Object.assign(s,Vr(e)),s},sh=e=>{let t=[e.resourceId,e.text,e.layout].filter(n=>n!==void 0).length;if(t>1)throw t===2&&e.resourceId!==void 0&&e.text!==void 0?new Error(`Visual item "${e.id}" cannot define both resourceId and text`):new Error(`Visual item "${e.id}" must define only one of resourceId, text, or layout`);if(e.transformId&&e.transform)throw new Error(`Visual item "${e.id}" cannot define both transformId and transform`);if(e.text&&!oi(e))throw new Error(`Visual item "${e.id}" text requires content and textStyleId`);if(e.layout&&!ii(e))throw new Error(`Visual item "${e.id}" layout requires elements`);if(e.text){for(let n of th)if(br(e.text,n))throw new Error(`Visual item "${e.id}" text.${n} is reserved for the visual item`)}},oh=({resources:e,background:t,screen:n={width:1920,height:1080},includeOpacity:o=!1})=>{let a={id:Wo,type:"rect",x:0,y:0,width:n?.width??1920,height:n?.height??1080,fill:Qy({resources:e,background:t,screen:n})};if(o){let r=tc(t);r!==void 0&&(a.alpha=r)}return a},ih=(e={},t)=>t?!!(e.images?.[t]||e.videos?.[t]||e.spritesheets?.[t]||e.layouts?.[t]):!1,Ul=({resources:e={},resourceId:t,colorId:n})=>{let o=Ql(e,t);return t&&(o||n===void 0)?{resourceId:t,targetId:Mn({resourceId:t,kind:o})}:n!==void 0?{resourceId:Wo,targetId:Wo}:{resourceId:void 0,targetId:void 0}},sc=100,Ir=sc,ah="channel:bgm",lh="channel:music-room",ch="music-room:player",uh="channel:voice",ph="default",dh=e=>String(e).replaceAll("%","%25").replaceAll(":","%3A"),Dt=(...e)=>e.map(dh).join(":"),qn=(e,t,n)=>{let o=new Set;e.forEach(({id:a})=>{if(o.has(a)){let r=n?` in ${n}`:"";throw new Error(`Duplicate ${t} id "${a}"${r}.`)}o.add(a)})},fh=(e,t)=>e*t/sc,oc=(e={},t)=>e?.[t]??hr[t],Bn=(e={},t,n=Ir)=>fh(n,oc(e,t)),Yn=({id:e,volume:t,muted:n,pan:o,loop:a,playback:r,interruption:s,children:i,runtime:l})=>{let c={id:e,type:"audio-channel",volume:t,muted:!!l?.muteAll||(n??!1),pan:o??0,children:i};return a!==void 0&&(c.loop=a),r!==void 0&&(c.playback=structuredClone(r)),s!==void 0&&(c.interruption=s),c},Ln=(e,t,n,o)=>e[n]!==void 0?e[n]:t[n]!==void 0?t[n]:o,mh=["muted","pan","playbackRate","startAt","endAt"],zn=({id:e,sound:t,resource:n,defaultLoop:o=!1})=>{let a={id:e,type:"sound",src:n.fileId,loop:Ln(t,n,"loop",o),volume:Ln(t,n,"volume",Ir),startDelayMs:Ln(t,n,"startDelayMs",0)};mh.forEach(s=>{let i=Ln(t,n,s,void 0);i!==void 0&&(a[s]=i)}),t.playback!==void 0&&(a.playback=structuredClone(t.playback));let r=a.startAt??0;if(a.endAt!==void 0&&a.endAt!==null&&a.endAt<r)throw new Error(`Sound "${e}" endAt (${a.endAt}) must be greater than or equal to startAt (${r}).`);return a},Fe=({variables:e,imageGallery:t,musicRoom:n,sceneReplay:o,runtime:a,saveSlots:r=[],dialogueState:s,includeInactiveAdvDialogue:i=!1,isLineCompleted:l,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:f,canRollback:d,confirmDialog:m,form:y,historyDialogue:g=[],characters:h={},dialogueUIHidden:w,skipOnlyViewedLines:b,skipTransitionsAndAnimations:E}={})=>{let v={dialogueTextSpeed:a?.dialogueTextSpeed??50,autoForwardDelay:a?.autoForwardDelay??1e3,autoForwardSpeed:a?.autoForwardSpeed??50,skipUnseenText:a?.skipUnseenText??!1,skipTransitionsAndAnimations:a?.skipTransitionsAndAnimations??!1,soundVolume:a?.soundVolume??50,musicVolume:a?.musicVolume??50,muteAll:a?.muteAll??!1,localizationPackageId:a?.localizationPackageId??null,saveLoadPagination:a?.saveLoadPagination??1,menuPage:a?.menuPage??"",menuEntryPoint:a?.menuEntryPoint??"",autoMode:a?.autoMode??c??!1,skipMode:a?.skipMode??u??!1,dialogueUIHidden:a?.dialogueUIHidden??w??!1,isLineCompleted:a?.isLineCompleted??l??!1},P=Ih({dialogueState:s,includeInactiveAdvDialogue:i,characters:h,variables:e,runtime:v}),k={variables:e,imageGallery:t,musicRoom:n,sceneReplay:o,localizationPackages:a?.localizationPackages??[],localizationPackageId:v.localizationPackageId,runtime:v,saveSlots:r,isChoiceVisible:p,isFormVisible:f,canRollback:d,confirmDialog:m,form:y,historyDialogue:g,characters:h};return P&&(k.dialogue=P,k.dialogueLines=P.lines),k},Bl=100,Fn=(e,t)=>{if(Array.isArray(e))return e.map(o=>Fn(o,t));if(!e||typeof e!="object")return e;let n={...e};return Object.keys(n).forEach(o=>{n[o]=Fn(n[o],t)}),n.type==="text-revealing"?t(n):n},yh=e=>Fn(e,t=>({...t,revealEffect:"none"})),hh=e=>Fn(e,t=>{let n=Number(t.speed??t.displaySpeed),o=Number.isFinite(n)?Math.max(n,Bl):Bl;return{...t,speed:o,...Object.prototype.hasOwnProperty.call(t,"displaySpeed")?{displaySpeed:o}:{}}}),wr=(e,{isLineCompleted:t=!1,skipMode:n=!1,skipTransitionsAndAnimations:o=!1}={})=>t||o?yh(e):n?hh(e):e,ic=({id:e,screen:t={width:1920,height:1080}})=>({id:e,type:"rect",fill:"transparent",width:t.width,height:t.height,x:0,y:0,click:{payload:{actions:{}}}}),Ko=e=>{if(Array.isArray(e))return e.map(Ko);if(!e||typeof e!="object")return e;let t={};for(let[r,s]of Object.entries(e))t[r]=Ko(s);let n=t.click?.payload;if(!n||typeof n!="object"||Array.isArray(n))return t;let o=n.actions,a=o&&typeof o=="object"&&!Array.isArray(o)&&Object.prototype.hasOwnProperty.call(o,"nextLine")?{...o.nextLine,bypassChoice:!0}:void 0;return{...t,click:{...t.click,payload:{...n,bypassChoice:!0,...a?{actions:{...o,nextLine:a}}:{}}}}},gh=new Set(["click","change","submit","focusEvent","blurEvent","selectionChange","compositionStart","compositionUpdate","compositionEnd"]),Yl="submit",Bo=(e,t,n={})=>{let o=e?.payload&&typeof e.payload=="object"&&!Array.isArray(e.payload)?e.payload:{},a=o.actions&&typeof o.actions=="object"?o.actions:{},r=n.replaceActions===!0?t:{...a,...t};return{...e||{},payload:{...o,actions:r}}},Jo=(e,t,n={})=>{if(Array.isArray(e))return e.map(c=>Jo(c,t,n));if(!e||typeof e!="object")return e;let o=typeof e.type=="string",a=o&&e.formRole===Yl,r=o&&n.submitRoleAncestor,s=a||r?{submitRoleAncestor:!0}:{},i={};for(let[c,u]of Object.entries(e))i[c]=Jo(u,t,c==="children"?s:{});let l=i;if(l.type==="input"&&typeof l.field=="string"){let c=t?.fields?.[l.field];if(c){let u={updateFormField:{formKey:t.key,field:c.id,value:"_event.value"}};l={...l,value:c.value,placeholder:l.placeholder===void 0?c.placeholder:l.placeholder,multiline:l.multiline===void 0?c.multiline:l.multiline,...l.maxLength===void 0&&c.maxLength!==void 0?{maxLength:c.maxLength}:{},change:Bo(l.change,u),submit:Bo(l.submit,t.submitActions)}}}return l.formRole===Yl||r?{...l,click:Bo(l.click,t.submitActions,{replaceActions:!0})}:l},Qo=(e,t)=>{if(Array.isArray(e))return e.map(o=>Qo(o,t));if(!e||typeof e!="object")return e;let n={};for(let[o,a]of Object.entries(e))n[o]=Qo(a,t);for(let o of gh){let a=n[o]?.payload;!a||typeof a!="object"||Array.isArray(a)||(n[o]={...n[o],payload:{...a,_interactionSource:"form"}})}return n},Zo=({characterId:e,character:t,characterName:n,characters:o={},variables:a={}}={})=>{let r=e?o?.[e]:void 0,s=En({characterId:e,character:t,characterName:n,characters:o,variables:a});return{...r||{},...t||{},name:s}},ac=(e=[],t={},n={})=>e.map(o=>{let a=Zo({characterId:o.characterId,character:o.character,characterName:o.characterName,characters:t,variables:n}),r=typeof o.text=="string"?o.text:Array.isArray(o.content)?o.content.map(s=>s?.text??"").join(""):"";return{...o,text:r,character:a,characterName:a.name}}),bh=e=>!(!e||e.mode==="adv"&&e.content===void 0),Ih=({dialogueState:e,includeInactiveAdvDialogue:t=!1,characters:n={},variables:o,runtime:a}={})=>{if(!t&&!bh(e))return;let r=e.content===void 0?[{text:""}]:Go(e.content,"dialogue.content"),s=e.content===void 0?0:Vy({content:e.initialRevealedContent,path:"dialogue.initialRevealedContent",variables:o}),i=a?.dialogueTextSpeed??hr.dialogueTextSpeed,l=e.textSpeed??i,c=(e.lines||[]).map((p,f)=>{let d=Go(p.content,`dialogue.lines[${f}].content`),m=Zo({characterId:p.characterId,character:p.character,characterName:p.characterName,characters:n,variables:o});return{...p,textSpeed:p.textSpeed??i,content:d.map(y=>({...y,text:et(y.text,{variables:o})})),character:m,characterName:m.name}}),u=Zo({characterId:e.characterId,character:e.character,characters:n,variables:o});return{characterId:e.characterId,persistCharacter:e.persistCharacter,persistSprite:e.persistSprite,character:u,textSpeed:l,content:r.map(p=>({...p,text:et(p.text,{variables:o})})),initialRevealedCharacters:s,lines:c}},ai=({container:e,resources:t,templateData:n,isLineCompleted:o=!1,skipMode:a=!1,skipTransitionsAndAnimations:r=!1})=>{let s=nr(e,n);return sr(wr(s,{isLineCompleted:o,skipMode:a,skipTransitionsAndAnimations:r}),t)},Yo=(e,t={})=>e?.payload&&typeof e.payload=="object"?structuredClone(e.payload):e?.actions&&typeof e.actions=="object"?{actions:structuredClone(e.actions)}:structuredClone(t),zl=({renderStateKeyboard:e,keyboard:t,phase:n})=>{!t||typeof t!="object"||Array.isArray(t)||Object.entries(t).forEach(([o,a])=>{let r=e[o]??{},s=n==="keydown"?a?.keydown:a?.keyup;if(n==="keydown"&&s&&typeof s=="object"){e[o]={...r,keydown:{payload:Yo(s)}},a?.keyup&&typeof a.keyup=="object"&&(e[o].keyup={payload:Yo(a.keyup)});return}e[o]={...r,[n]:{payload:Yo(a)}}})},wh=(e={},t={})=>{let n={};return zl({renderStateKeyboard:n,keyboard:e,phase:"keydown"}),zl({renderStateKeyboard:n,keyboard:t,phase:"keyup"}),Object.keys(n).length>0?n:void 0},or=({animationsDef:e,resources:t,previousResourceId:n,currentResourceId:o,previousTargetId:a,currentTargetId:r,animationPath:s,idPrefix:i})=>{if(!e)return[];let l=[],c=({instanceId:h,targetId:w})=>{let b=Ly({resources:t,animationId:d,playback:m,instanceId:h,targetId:w,animationPath:s});b&&l.push(b)},u=n!=null&&n!==!1,p=o!=null&&o!==!1,f=a&&r&&a===r;Dy(e,s);let d=Cy(e),m=$y(e),y=t?.animations?.[d],g=Ry(y,{animationId:d,animationPath:s});if(g==="update")return p&&r?c({instanceId:`${i}-animation-update`,targetId:r}):u&&a&&c({instanceId:`${i}-animation-update`,targetId:a}),l;if(g==="transition"){let h=`${i}-animation-transition`,w=m?.continuity==="persistent"?h:`${i}-animation-in`;if(u&&p&&f)return c({instanceId:h,targetId:r}),l;u&&c({instanceId:`${i}-animation-out`,targetId:a}),p&&c({instanceId:w,targetId:r})}return l},kh=()=>({elements:[{id:"story",type:"container",x:0,y:0,children:[]}],animations:[],audio:[],global:{}}),vh=(e,{presentationState:t,previousPresentationState:n,currentLineActions:o,resources:a={},screen:r={width:1920,height:1080},isLineCompleted:s,skipTransitionsAndAnimations:i,variables:l,imageGallery:c,musicRoom:u,sceneReplay:p,runtime:f,activePersistentAnimations:d,restoredPersistentAnimations:m,autoMode:y,skipMode:g,isChoiceVisible:h,isFormVisible:w,canRollback:b,form:E,saveSlots:v=[]})=>{let{elements:P,animations:k}=e;if(t.background){let O=o===void 0?!0:br(o?.background??{},"animations"),D=P.find(oe=>oe.id==="story");if(!D)return e;let $=qy(a,t.background),q=$||Uy(t.background),Y=n?.background?.resourceId,T=n?.background?.colorId,U=t.background.resourceId??(t.background.animations?Y:void 0),ie=t.background.colorId??(t.background.animations?T:void 0),L=ih(a,U),ae={...t.background,colorId:ie};if((ie!==void 0||L)&&D.children.push(oh({resources:a,background:ae,screen:r,includeOpacity:!L})),U){let{images:oe={},videos:re={},spritesheets:pe={}}=a,te=Ql(a,U),C;if(te==="sprite"?C=oe[U]:te==="video"?C=re[U]:te==="spritesheet-animation"&&(C=pe[U]),C){let _=te==="video",F=te==="spritesheet-animation",K={x:(r?.width??1920)/2,y:(r?.height??1080)/2,anchorX:.5,anchorY:.5,rotation:0,scaleX:1,scaleY:1,...$},de={...Vl(t.background,{includeDefaultAlpha:!0}),...We(K,t.background)},Pe;F?Pe=ti({id:Mn({resourceId:U,kind:te}),resourceId:U,spritesheet:C,animationName:t.background.animationName,animationSpeed:t.background.animationSpeed,loop:t.background.loop,transform:de}):Pe={id:Mn({resourceId:U,kind:te}),type:_?"video":"sprite",src:C.fileId,width:C.width,height:C.height,...de},_&&(Pe.loop=t.background.loop??!1,Pe.volume=C.volume??50),Pe&&D.children.push(Pe)}}if(U){let{layouts:oe={}}=a,re=oe[U];if(re){let pe={id:Mn({resourceId:U,kind:"container"}),type:"container",children:re.elements,...Vl(t.background)};q&&Object.assign(pe,We({x:0,y:0,anchorX:0,anchorY:0,rotation:0,scaleX:1,scaleY:1,...$},t.background));let te=nr(pe,Fe({variables:l,imageGallery:c,musicRoom:u,sceneReplay:p,runtime:f,saveSlots:v,dialogueState:t.dialogue,isLineCompleted:s,autoMode:y,skipMode:g,isChoiceVisible:h,isFormVisible:w,canRollback:b,form:E,characters:a.characters||{},skipTransitionsAndAnimations:i}));D.children.push(sr(wr(te,{isLineCompleted:s,skipMode:g,skipTransitionsAndAnimations:i}),a))}}let ue=Ul({resources:a,resourceId:Y,colorId:T}),B=Ul({resources:a,resourceId:U,colorId:ie}),Z=or({animationsDef:t.background.animations,resources:a,previousResourceId:ue.resourceId,currentResourceId:B.resourceId,previousTargetId:ue.targetId,currentTargetId:B.targetId,animationPath:"background.animations",idPrefix:"bg-cg"});Ye({animationInstances:Z,isLineCompleted:s,skipTransitionsAndAnimations:i,activePersistentAnimations:d,restoredPersistentAnimations:m,isAuthoredOnCurrentLine:O})&&k.push(...Z)}return e},Ah=(e,{presentationState:t,previousPresentationState:n,currentLineActions:o,resources:a,isLineCompleted:r,skipTransitionsAndAnimations:s,activePersistentAnimations:i,restoredPersistentAnimations:l})=>{let{elements:c,animations:u}=e;if(t.character&&a){let p=c.find(g=>g.id==="story");if(!p)return e;let f=t.character.items||[],d=n?.character?.items||[],m=Nl(f),y=Nl(d);for(let g=0;g<f.length;g++){let h=f[g],{transformId:w,sprites:b}=h,E=d.find(U=>U.id===h.id),v=d.findIndex(U=>U.id===h.id),P=E?.sprites&&E.sprites.length>0,k=b&&b.length>0,O=v>=0?Dn(E,v,y):void 0,D=Jl(o,"character",h.id,g,f),$=or({animationsDef:h.animations,resources:a,previousResourceId:O,currentResourceId:k?Dn(h,g,m):void 0,previousTargetId:O,currentTargetId:k?Dn(h,g,m):void 0,animationPath:`character.items[${g}].animations`,idPrefix:"character"});if(h.animations&&!b&&!w&&P&&Ye({animationInstances:$,isLineCompleted:r,skipTransitionsAndAnimations:s,activePersistentAnimations:i,restoredPersistentAnimations:l,isAuthoredOnCurrentLine:D})){u.push(...$);continue}if(h.animations&&!b&&!w)continue;if(!b||b.length===0||!w){console.warn("Character item missing sprites or transformId:",h);continue}let q=Dn(h,g,m),Y=a.transforms[w];if(!Y){console.warn("Transform not found:",w);continue}let T={type:"container",id:q,...We(Y,h),...Vr(h),children:[]};for(let U of b){let ie=Zl({id:`${q}-${U.id}`,item:U,resources:a});ie&&T.children.push(ie)}p.children.push(T),Ye({animationInstances:$,isLineCompleted:r,skipTransitionsAndAnimations:s,activePersistentAnimations:i,restoredPersistentAnimations:l,isAuthoredOnCurrentLine:D})&&u.push(...$)}}return e},lc=(e,t)=>{if(!Lo.includes(e))throw new Error(`${t} must be one of: ${Lo.join(", ")}.`)},Ph=(e,t)=>{let n=!!e.resourceId||oi(e)||ii(e),o=e.layer??(n?void 0:t?.layer)??Do;return lc(o,`Visual item "${e.id}" layer`),o},xh=(e,{presentationState:t,previousPresentationState:n,currentLineActions:o,resources:a,isLineCompleted:r,skipTransitionsAndAnimations:s,variables:i,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,activePersistentAnimations:f,restoredPersistentAnimations:d,autoMode:m,skipMode:y,isChoiceVisible:g,isFormVisible:h,canRollback:w,form:b,saveSlots:E=[],visualLayer:v})=>{let{elements:P,animations:k}=e;if(t.visual&&a){let O=P.find(Y=>Y.id==="story");if(!O)return e;let D=t.visual.items,$=n?.visual?.items||[],q=Fe({variables:i,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,saveSlots:E,dialogueState:t.dialogue,isLineCompleted:r,autoMode:m,skipMode:y,isChoiceVisible:g,isFormVisible:h,canRollback:w,form:b,characters:a.characters||{},skipTransitionsAndAnimations:s});v!==void 0&&lc(v,"visualLayer");for(let[Y,T]of D.entries()){let U=$.find(re=>re.id===T.id),ie=Jl(o,"visual",T.id,Y,D),L=Ph(T,U);if(v!==void 0&&L!==v)continue;if(sh(T),T.layout){let re=nt(a,T),pe={id:`visual-${T.id}`,type:"container",children:structuredClone(T.layout.elements),...We(re,T)};Object.assign(pe,Vr(T)),O.children.push(ai({container:pe,resources:a,templateData:q,isLineCompleted:r,skipMode:y,skipTransitionsAndAnimations:s}))}if(T.text){let re=nt(a,T),pe={...structuredClone(T.text),id:`visual-${T.id}`,type:"text",...We(re,T)};Object.assign(pe,Vr(T)),O.children.push(sr(nr(pe,q),a))}if(T.resourceId){let{images:re={},videos:pe={},spritesheets:te={}}=a,C=te[T.resourceId];if(C){let _=nt(a,T),F=Vr(T),K=ti({id:`visual-${T.id}`,resourceId:T.resourceId,spritesheet:C,animationName:T.animationName,animationSpeed:T.animationSpeed,loop:T.loop,width:T.width,height:T.height,transform:{...We(_,T),alpha:F.alpha??T.alpha??1,...F.blur?{blur:F.blur}:{}}});K&&O.children.push(structuredClone(K))}else{let _=re[T.resourceId]||pe[T.resourceId];if(_){let F=pe[T.resourceId]!==void 0,K=nt(a,T),de={id:`visual-${T.id}`,type:F?"video":"sprite",src:_.fileId,width:_.width,height:_.height,...We(K,T)};Object.assign(de,Vr(T)),F&&(de.loop=_.loop??!1,de.volume=_.volume??50),O.children.push(de)}}}let ae=!!(a.spritesheets?.[T.resourceId]||a.images?.[T.resourceId]||a.videos?.[T.resourceId]);if(T.resourceId&&!ae){let re=a.particles?.[T.resourceId];re&&O.children.push(nh({item:T,particle:re,resources:a}))}let ue=!!a.particles?.[T.resourceId];if(T.resourceId&&!ae&&!ue){let{layouts:re={}}=a,pe=re[T.resourceId];if(pe){let te=nt(a,T),C={id:`visual-${T.id}`,type:"container",children:structuredClone(pe.elements),...We(te,T)};Object.assign(C,Vr(T));let _=nr(C,q);O.children.push(sr(wr(_,{isLineCompleted:r,skipMode:y,skipTransitionsAndAnimations:s}),a))}}let B=ql(U),Z=ql(T),oe=or({animationsDef:T.animations,resources:a,previousResourceId:B,currentResourceId:Z,previousTargetId:B?`visual-${T.id}`:void 0,currentTargetId:Z?`visual-${T.id}`:void 0,animationPath:`visual.items[${T.id}].animations`,idPrefix:T.id});Ye({animationInstances:oe,isLineCompleted:r,skipTransitionsAndAnimations:s,activePersistentAnimations:f,restoredPersistentAnimations:d,isAuthoredOnCurrentLine:ie})&&k.push(...oe)}}return e},tt="dialogue-character-sprite",Eh=(e,{presentationState:t,previousPresentationState:n,resources:o={},isLineCompleted:a,skipTransitionsAndAnimations:r,activePersistentAnimations:s})=>{let{animations:i}=e,l=qr(e.elements);if(!l)return e;let c=t.dialogue?.character?.sprite,u=n?.dialogue?.character?.sprite,p=vt(c),f=vt(u),d=or({animationsDef:c?.animations,resources:o,previousResourceId:f?tt:void 0,currentResourceId:p?tt:void 0,previousTargetId:f?tt:void 0,currentTargetId:p?tt:void 0,animationPath:"dialogue.character.sprite.animations",idPrefix:"dialogue-character-sprite"});if(!p)return c?.animations&&f&&Ye({animationInstances:d,isLineCompleted:a,skipTransitionsAndAnimations:r,activePersistentAnimations:s})&&i.push(...d),e;let m=o.transforms?.[c.transformId];if(!m)return console.warn("Transform not found:",c.transformId),e;let y={type:"container",id:tt,...We(m),children:[]};for(let g of c.items){let h=Zl({id:`${tt}-${g.id}`,item:g,resources:o});h&&y.children.push(h)}return l.children.push(y),Ye({animationInstances:d,isLineCompleted:a,skipTransitionsAndAnimations:r,activePersistentAnimations:s})&&i.push(...d),e},Sh=(e,{presentationState:t,previousPresentationState:n,resources:o={},dialogueUIHidden:a,autoMode:r,skipMode:s,isChoiceVisible:i,isFormVisible:l,canRollback:c,form:u,skipOnlyViewedLines:p,isLineCompleted:f,skipTransitionsAndAnimations:d,variables:m,imageGallery:y,musicRoom:g,sceneReplay:h,runtime:w,activePersistentAnimations:b,saveSlots:E=[]})=>{let{elements:v,animations:P}=e;if(!t.dialogue||a)return e;let k=v.find(D=>D.id==="story");if(!k)return e;if(t.dialogue.ui&&t.dialogue.ui.resourceId){let{layouts:D={}}=o,$=D[t.dialogue.ui.resourceId];if($){let q={elements:$.elements},Y=Fe({variables:m,imageGallery:y,musicRoom:g,sceneReplay:h,runtime:w,saveSlots:E,dialogueState:t.dialogue,includeInactiveAdvDialogue:!0,isLineCompleted:f,autoMode:r,skipMode:s,isChoiceVisible:i,isFormVisible:l,canRollback:c,form:u,characters:o.characters||{},dialogueUIHidden:a,skipOnlyViewedLines:p,skipTransitionsAndAnimations:d}),T=nr(q,Y),U=sr(wr(T?.elements,{isLineCompleted:f,skipMode:s,skipTransitionsAndAnimations:d}),o);if(Array.isArray(U))for(let ie of U)k.children.push(ie);else U&&k.children.push(U)}}Eh(e,{presentationState:t,previousPresentationState:n,resources:o,isLineCompleted:f,skipTransitionsAndAnimations:d,activePersistentAnimations:b});let O=or({animationsDef:t.dialogue.ui?.animations,resources:o,previousResourceId:n?.dialogue?.ui?.resourceId,currentResourceId:t.dialogue.ui?.resourceId,previousTargetId:n?.dialogue?.ui?.resourceId?"dialogue-container":void 0,currentTargetId:t.dialogue.ui?.resourceId?"dialogue-container":void 0,animationPath:"dialogue.ui.animations",idPrefix:"dialogue-ui"});return Ye({animationInstances:O,isLineCompleted:f,skipTransitionsAndAnimations:d,activePersistentAnimations:b})&&P.push(...O),e},Oh=(e,{presentationState:t,previousPresentationState:n,resources:o,screen:a,isLineCompleted:r,skipTransitionsAndAnimations:s,variables:i,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,autoMode:f,skipMode:d,isChoiceVisible:m,isFormVisible:y,canRollback:g,form:h,activePersistentAnimations:w,saveSlots:b=[]})=>{let{elements:E,animations:v}=e;if(t.choice&&o){let P=qr(E);if(!P)return e;let k=o?.layouts?.[t.choice.resourceId];if(k&&k.elements){let D={elements:k.elements},$=nr(D,{...Fe({variables:i,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,saveSlots:b,dialogueState:t.dialogue,isLineCompleted:r,autoMode:f,skipMode:d,isChoiceVisible:m??!!t.choice,isFormVisible:y,canRollback:g,form:h,characters:o.characters||{},skipTransitionsAndAnimations:s}),choice:{items:t.choice?.items??[]}}),q=Ko(sr(wr($?.elements,{isLineCompleted:r,skipMode:d,skipTransitionsAndAnimations:s}),o));if(Array.isArray(q))for(let Y of q)P.children.push(Y);else q&&P.children.push(q)}let O=or({animationsDef:t.choice.animations,resources:o,previousResourceId:n?.choice?.resourceId,currentResourceId:t.choice.resourceId,previousTargetId:n?.choice?.resourceId?"choice-container":void 0,currentTargetId:t.choice.resourceId?"choice-container":void 0,animationPath:"choice.animations",idPrefix:"choice"});Ye({animationInstances:O,isLineCompleted:r,skipTransitionsAndAnimations:s,activePersistentAnimations:w})&&v.push(...O)}return e},Rh=(e,{presentationState:t,previousPresentationState:n,resources:o,screen:a,isLineCompleted:r,skipTransitionsAndAnimations:s,variables:i,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,autoMode:f,skipMode:d,isChoiceVisible:m,isFormVisible:y,canRollback:g,activePersistentAnimations:h,saveSlots:w=[],form:b})=>{let{elements:E,animations:v}=e;if(!b?.resourceId||!o)return e;let P=qr(E);if(!P)return e;let k=o?.layouts?.[b.resourceId];if(!k)return console.warn(`Form layout not found: ${b.resourceId}`),e;let O={id:"form-container",type:"container",x:0,y:0,children:k.elements||[]},D={...Fe({variables:i,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,saveSlots:w,dialogueState:t.dialogue,isLineCompleted:r,autoMode:f,skipMode:d,isChoiceVisible:m,isFormVisible:y,canRollback:g,characters:o.characters||{},skipTransitionsAndAnimations:s,form:b}),form:b},$=nr(O,D),q=Qo(sr(wr(Jo($,b),{isLineCompleted:r,skipMode:d,skipTransitionsAndAnimations:s}),o),b);q&&P.children.push(q);let Y=or({animationsDef:b.animations,resources:o,previousResourceId:n?.form?.resourceId,currentResourceId:b.resourceId,previousTargetId:n?.form?.resourceId?"form-container":void 0,currentTargetId:b.resourceId?"form-container":void 0,animationPath:"form.animations",idPrefix:"form"});return Ye({animationInstances:Y,isLineCompleted:r,skipTransitionsAndAnimations:s,activePersistentAnimations:h})&&v.push(...Y),e},Ch=(e,{presentationState:t,resources:n={},variables:o,imageGallery:a,musicRoom:r,sceneReplay:s,runtime:i,isLineCompleted:l,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:f,canRollback:d,form:m,saveSlots:y=[],skipTransitionsAndAnimations:g})=>{if(!t.control?.resourceId)return e;let h=n.controls?.[t.control.resourceId];if(!h)return e;let w=wh(h.keyboard,h.keyup);if(w&&Object.keys(w).length>0&&(e.global.keyboard=w),!Array.isArray(h.elements)||h.elements.length===0)return e;let b=qr(e.elements);if(!b)return e;let E={id:`control-${t.control.resourceId}`,type:"container",x:0,y:0,children:h.elements};return b.children.push(ai({container:E,resources:n,templateData:Fe({variables:o,imageGallery:a,musicRoom:r,sceneReplay:s,runtime:i,saveSlots:y,dialogueState:t.dialogue,isLineCompleted:l,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:f,canRollback:d,form:m,characters:n.characters||{},skipTransitionsAndAnimations:g}),isLineCompleted:l,skipMode:u,skipTransitionsAndAnimations:g})),e},$h=(e,{presentationState:t,resources:n,runtime:o,variables:a,musicRoomPlayer:r})=>{let{elements:s,audio:i}=e;if(t.bgm&&n){if(!qr(s))return e;let c=t.bgm,u=!Array.isArray(c.sounds),p=u?c.resourceId?[{id:"default",resourceId:c.resourceId,loop:c.loop??!0,volume:c.volume,startDelayMs:c.startDelayMs??0}]:[]:c.sounds,f=!u&&c.loop===!0,d=[];if(u||qn(p,"BGM sound"),f){let y=p.find(g=>g.loop===!0);if(y)throw new Error(`BGM sound "${y.id}" cannot loop inside a looping BGM channel.`)}if(p.forEach(y=>{let g=n.sounds?.[y.resourceId];if(!g)return;let h=f?{...y,loop:y.loop??!1}:y;d.push(zn({id:Dt("bgm",u?"default":y.id),sound:h,resource:g,defaultLoop:!f}))}),d.length===0)return e;let m=Fe({variables:a,runtime:o}).runtime;i.push(Yn({id:ah,volume:Bn(m,"musicVolume",u?Ir:c.volume??Ir),muted:c.muted,pan:c.pan,loop:u?void 0:c.loop,playback:r?.bgmPlayback,interruption:c.interruption,children:d,runtime:m}))}return e},_h=(e,{resources:t={},runtime:n,variables:o,musicRoomPlayer:a})=>{let r=t.musicRoom;if(!r||!a?.trackId||!a.playback)return e;let s=r.tracks.find(u=>u.id===a.trackId),i=s?t.sounds?.[s.soundId]:void 0;if(!s||!i)return e;let l=Fe({variables:o,runtime:n}).runtime,c=zn({id:ch,sound:{loop:!1,startDelayMs:0,playback:a.playback},resource:i});return e.audio.push(Yn({id:lh,volume:Bn(l,"musicVolume",Ir),children:[c],runtime:l})),e},Th=(e,{presentationState:t,resources:n,runtime:o})=>{let{audio:a}=e;if(t.sfx&&n){let r=t.sfx,s=Array.isArray(r.channels)?r.channels:[],i=s.map(l=>({channel:l,usesLegacyChannel:!1}));qn(s,"SFX channel"),Array.isArray(r.items)&&i.push({channel:{id:ph,sounds:r.items},usesLegacyChannel:!0}),i.forEach(({channel:l,usesLegacyChannel:c})=>{let u=!c&&l.loop===!0,p=[];if(c||qn(l.sounds,"SFX sound",`SFX channel "${l.id}"`),u){let f=l.sounds.find(d=>d.loop===!0);if(f)throw new Error(`SFX sound "${f.id}" cannot loop inside looping SFX channel "${l.id}".`)}l.sounds.forEach((f,d)=>{let m=n.sounds?.[f.resourceId];if(!m)return;let y=u?{...f,loop:f.loop??!1}:f;p.push(zn({id:c?Dt("sfx","default",d,f.id):Dt("sfx",l.id,f.id),sound:y,resource:m,defaultLoop:u?!1:void 0}))}),p.length!==0&&a.push(Yn({id:Dt("channel","sfx",l.id),volume:Bn(o,"soundVolume",l.volume??Ir),muted:l.muted,pan:l.pan,loop:c?void 0:l.loop,interruption:c?void 0:l.interruption,children:p,runtime:o}))})}return e},jh=(e,t,n)=>{if(!(!t||!n))return e?.voices?.[t]?.[n]},Nh=(e,{presentationState:t,resources:n,currentSceneId:o,runtime:a,variables:r})=>{let{audio:s}=e;if(!t?.voice)return e;let i=t.voice,l=!Array.isArray(i.sounds),c=l?i.resourceId?[{id:"default",resourceId:i.resourceId,loop:i.loop??!1,volume:Ir,startDelayMs:i.startDelayMs??0}]:[]:i.sounds,u=!l&&i.loop===!0,p=[];if(l||qn(c,"Voice sound"),u){let d=c.find(m=>m.loop===!0);if(d)throw new Error(`Voice sound "${d.id}" cannot loop inside a looping Voice channel.`)}if(c.forEach(d=>{let m=jh(n,o,d.resourceId);if(!m)return;let y=u?{...d,loop:d.loop??!1}:d;p.push(zn({id:Dt("voice",o,l?"default":d.id),sound:y,resource:m,defaultLoop:u?!1:void 0}))}),p.length===0)return e;let f=Fe({variables:r,runtime:a}).runtime;return s.push(Yn({id:uh,volume:l?i.volume??oc(f,"soundVolume"):Bn(f,"soundVolume",i.volume??Ir),muted:i.muted,pan:i.pan,loop:l?void 0:i.loop,interruption:i.interruption,children:p,runtime:f})),e},Dh=(e,{presentationState:t,previousPresentationState:n,resources:o={},variables:a,imageGallery:r,musicRoom:s,sceneReplay:i,runtime:l,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:f,canRollback:d,form:m,saveSlots:y=[],isLineCompleted:g,skipTransitionsAndAnimations:h,activePersistentAnimations:w})=>{let{elements:b,animations:E}=e;if(t.layout){let O=qr(b);if(!O)return e;let D=o.layouts?.[t.layout.resourceId];if(!D)return e;Array.isArray(D.transitions)&&!g&&!h&&ri({animations:E,transitions:D.transitions,defaultTargetId:`layout-${t.layout.resourceId}`,idPrefix:`layout-${t.layout.resourceId}`,animationPathPrefix:"layout"});let $={id:`layout-${t.layout.resourceId}`,type:"container",x:0,y:0,children:D.elements||[]};O.children.push(ai({container:$,resources:o,templateData:Fe({variables:a,imageGallery:r,musicRoom:s,sceneReplay:i,runtime:l,saveSlots:y,dialogueState:t.dialogue,isLineCompleted:g,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:f,canRollback:d,form:m,characters:o.characters||{},skipTransitionsAndAnimations:h}),isLineCompleted:g,skipMode:u,skipTransitionsAndAnimations:h}))}let v=n?.layout?.resourceId,P=t.layout?.resourceId,k=or({animationsDef:t.layout?.animations,resources:o,previousResourceId:v,currentResourceId:P,previousTargetId:v?`layout-${v}`:void 0,currentTargetId:P?`layout-${P}`:void 0,animationPath:"layout.animations",idPrefix:"layout"});return Ye({animationInstances:k,isLineCompleted:g,skipTransitionsAndAnimations:h,activePersistentAnimations:w})&&E.push(...k),e},Lh=(e,{currentLineActions:t,previousPresentationState:n,resources:o={},isLineCompleted:a,skipTransitionsAndAnimations:r,activePersistentAnimations:s})=>{let{animations:i}=e,l=t?.screen?.animations;if(!l)return e;let c=n!=null,u=or({animationsDef:l,resources:o,previousResourceId:c?"story":void 0,currentResourceId:"story",previousTargetId:c?"story":void 0,currentTargetId:"story",animationPath:"screen.animations",idPrefix:"screen"});return Ye({animationInstances:u,isLineCompleted:a,skipTransitionsAndAnimations:r,activePersistentAnimations:s})&&i.push(...u),e},Mh=(e,{presentationState:t})=>{let n=qr(e.elements);return!n||!t?.screen||Object.assign(n,nc(t.screen)),e},Vh=(e,{presentationState:t,resources:n={},variables:o,imageGallery:a,musicRoom:r,sceneReplay:s,runtime:i,autoMode:l,skipMode:c,isChoiceVisible:u,isFormVisible:p,canRollback:f,form:d,overlayStack:m=[],dialogueHistory:y=[],saveSlots:g=[],screen:h,isLineCompleted:w,skipTransitionsAndAnimations:b})=>{let{elements:E,animations:v}=e;return m&&m.length>0&&m.forEach((P,k)=>{let O=n.layouts?.[P.resourceId];if(!O){console.warn(`Overlay layout not found: ${P.resourceId}`);return}Array.isArray(O.transitions)&&(b||ri({animations:v,transitions:O.transitions,defaultTargetId:`overlayStack-${k}`,idPrefix:`overlayStack-${k}`,animationPathPrefix:`overlayStack[${k}]`}));let D={id:`overlayStack-${k}`,type:"container",x:0,y:0,children:[ic({id:`overlayStack-${k}-blocker`,screen:h}),...O.elements||[]]},$=ac(y,n.characters,o),q=Fe({variables:o,imageGallery:a,musicRoom:r,sceneReplay:s,runtime:i,saveSlots:g,dialogueState:t?.dialogue,isLineCompleted:w,autoMode:l,skipMode:c,isChoiceVisible:u,isFormVisible:p,canRollback:f,form:d,historyDialogue:$,characters:n.characters||{},skipTransitionsAndAnimations:b}),Y=nr(D,q),[T,...U]=Y.children||[],ie=sr(wr({...Y,children:U},{isLineCompleted:w,skipMode:c,skipTransitionsAndAnimations:b}),n);E.push({...ie,children:T?[T,...ie.children||[]]:ie.children})}),e},qh=(e,{presentationState:t,resources:n={},variables:o,imageGallery:a,musicRoom:r,sceneReplay:s,runtime:i,saveSlots:l=[],autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:f,canRollback:d,form:m,confirmDialog:y,dialogueHistory:g=[],screen:h,isLineCompleted:w,skipTransitionsAndAnimations:b})=>{let{elements:E,animations:v}=e;if(!y?.resourceId)return e;let P=n.layouts?.[y.resourceId];if(!P)return console.warn(`ConfirmDialog layout not found: ${y.resourceId}`),e;Array.isArray(P.transitions)&&!b&&ri({animations:v,transitions:P.transitions,defaultTargetId:"confirmDialog",idPrefix:"confirmDialog",animationPathPrefix:"confirmDialog"});let k={id:"confirmDialog",type:"container",x:0,y:0,children:[ic({id:"confirmDialog-blocker",screen:h}),...P.elements||[]]},O=ac(g,n.characters,o),D=nr(k,Fe({variables:o,imageGallery:a,musicRoom:r,sceneReplay:s,runtime:i,saveSlots:l,dialogueState:t?.dialogue,isLineCompleted:w,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:f,canRollback:d,form:m,confirmDialog:y,historyDialogue:O,characters:n.characters||{},skipTransitionsAndAnimations:b})),[$,...q]=D.children||[],Y=sr(wr({...D,children:q},{isLineCompleted:w,skipMode:u,skipTransitionsAndAnimations:b}),n);return E.push({...Y,children:$?[$,...Y.children||[]]:Y.children}),e},Vt=e=>(t,n)=>xh(t,{...n,visualLayer:e}),Fh=Vt(tr.BEHIND_BACKGROUND),Uh=Vt(tr.BEHIND_CHARACTER),Bh=Vt(tr.BEHIND_DIALOGUE),Yh=Vt(tr.BEHIND_CHOICE),zh=Vt(tr.FOREGROUND),cc=e=>xn(kh,[Ch,Fh,vh,Uh,Ah,Bh,Sh,Yh,Oh,Rh,Dh,zh,Mh,Lh,$h,_h,Th,Nh,Vh,qh])(e);function uc(e,t=""){let n=[],o=e.length,a=0,r=0,s=-1,i=()=>{let l=0,c=0,u;do u=parseInt(e[a++],36),l+=(u&15)<<c,c+=4;while(u&16);return l};for(;a<o;){let l=s+1+i();s=l+i(),n.push([l,s,t?parseInt(t[r++],36):0])}return n}function pc(e,t,n){let o=0,a=t.length-1;for(;o<=a;){let r=o+a>>>1,s=n[r];if(e<t[r])a=r-1;else if(e>s>>>5)o=r+1;else return s&31}return 0}var dc="090001000h1v5g2903000hl2v6jh16ng1s210111110o35aa10u2k1g10l6600152113h2010u1q1r5aq3890o13181214r22k3158q2n1000v100h1k20000001207030001160721k171001h1j11610332010010321210090411021c1c02100o301201412230u1130b100h1j116111420120411001100k11l10051001h1j11611142011000321210072411021d0g10r3000000132120090o200200g1j11f2012031213711271t1001o301001000001121371b1f0c101h1l2011001031212000080a1t1001m40400102101600i11t301006c7i601008b6p41r10101041h3d0004115a1j290p3q223000511010100g1501010302003172030c0010016000e0i6v50n40n5tl12ir33s12t11u11cj30100060700010a90t220000l71i20m7203010241000502rd101004k300000006101027050920g3t22bk1300616g209030207u18c1000t10003010501b2o20000102000004g37070101o921c000640602001mcv3rg20000001o16d0c0m1fg6g2h30m10q55f1vm11c0ma0p1a42nc0ne1a090q3314902021204020112030318250105bb1201110i1021i15101131502141b15120511011k1155132040202510201010603060a1f02040104210b1g3290e0e0kn11vs12j11j3040pp12t80g6v1vmo7319g21g51gh103040n11010040j51i3f01q1h1d0m27p1a0000cs13200523j200010301010100v140018a4q2501010101c08000i1f12601011g3012215110u1a0001015000pcq181000100011000iji5fvc0u91g5bhg20ie0l94lo6002115303121s12240la1tj23h44tj11t45m4ah33q700000l3ep2021a200t220301012040a0i320j2040007f00100r20c100g3208000011531000s520201036020t900207l1101n311000000321210090a12634b910201l22001051020120011020000e1i520701020000n10h5001050000010000010001re0010323010001r11i520701000001q6000000107l600000230004gg12080001lc62027111n1000411230000000000t820321030030r10090n205001380800501020n2050c0001mc00002000000nc006150000i5l1100600010001q753011160000i441111000000rl11019100000c1h201043102n10ltk1f006eoss2b0202gs94r36si2033ku101m373h50b1rqs4113sli1t22m1uh2435070726u13k92rr7m34h380e0m141egl561g1261114k60ga6nn10t33sv13uf1jf0207150qt16t66pr60n23k6bf1f0e1l29g71c1e029j1n30p11ea0k1028139m16rb2v621122i52213040tf1u3b51n17127c0232041d120819052c28220104060306l5g3l4572g130152cqdl2c3o37a5o27u11c32d9m2cu2191obo57eh9gg1tv3",fc="262122424333333393233393339333333333393393bf3b3b3b3b3f3f3bffff33b3bb33ff3f33b3b3333333bffff3b33bb33f33bffff33b3bb33ff3f33b3bbb333b3ff33b333f33b3b3b3b3333b3bf33b3bb39333b33b33b3b3b333b333333b3b33333f3b33b3ffb3f3fff3f3b33f35dc33333f3b3b3b33323333b3bb3b33b3fb3b3333b33333bff3b3f33bfb3b3ff3b3b3b3b3b333b333b3323e22442344444444444444444444444444444444444444444444444444444444444444444444444444444443333333333b3b3bb33333b353bff3b3b3b3f3ff3b3b333bfff3f33333fb3bb3fb3b3bb33232333f333fff333333333b3b3333bb3b39393f3b3fbf33bb3b393b3b3b3333b33b33b3bbb33b33ffff3b3333bb3933b3b3b333b3b3b3b3b33b3b3b33b3b3b33b3b33b33b3b3b3fffff3bb39b9b3b33b3bf3f3b33f3b3f93b33b3b3bb33b33b3b3b3333393b3b3b33b39bffb3b332333b333dd3b3333233332333333333333333333333333333444444444444a4444444444444344444444444444444444444444444444444444444444",mc="0001000000010010000000100000000000000000000000000001000000010014000100000001001000010101100101100000000000000000000100000001111000010000000110101001110111111111000100000021001000010000000100100001000000011010000100000001111000013000000100140001000000010010";var yc=65535,li=40960,Gn=126976,bc=new Uint8Array(12288),Ic=new Uint8Array(3072),wc=new Uint8Array(2816),kc,vc;{let e=(a,r,s,i,l)=>{let c=r+a.length-1;for(let u=s<r?r:s,p=i>c?c:i;u<=p;u++)a[u-r]=l},t=new Uint32Array(320),n=new Uint32Array(320),o=0;for(let[a,r,s]of uc(dc,fc))e(bc,0,a,r,s),e(Ic,li,a,r,s),e(wc,Gn,a,r,s),r>=65040&&!(a>=Gn&&r<=129791)&&(t[o]=a,n[o++]=r<<5|s);kc=t.slice(0,o),vc=n.slice(0,o)}function hc(e){return e<12288?bc[e]:e<li?e<12336?e>=12330?3:0:e<12443?e===12336||e===12349?4:e>=12441?3:0:e===12951||e===12953?4:0:e<44032?Ic[e-li]:e<55204?(e-44032)%28?8:7:e<57344?e<=55238?e>=55216?13:0:e>=55243&&e<=55291?12:0:e<65024?e===64286?3:0:e<65040?3:e>=Gn&&e<129792?wc[e-Gn]:e>=917504?e>921599?0:e>=917536&&e<917632||e>=917760&&e<918e3?3:2:pc(e,kc,vc)}var Ac=Uint8Array.from(mc,Number);function Gh(e){return e===2381||e===2509||e===2637||e===2765||e===2893||e===3149||e===3405||e===4153||e===6098||e===6752||e===6980||e===7083||e===43456||e===43766||e===68159||e===69939||e===70608||e===71998||e===72263||e===72345||e===73538}function gc(e,t,n){switch(t){case 3:return e&24?n===8204?e&6:(e&24)===16||Gh(n)?e&6|16:e&6|8:e&6;case 4:return 2;case 10:return e&1^1;case 14:return(e&2)<<1|e&24;default:return 8}}function*Pc(e){let t=e.length;if(t===0)return;let n=e.codePointAt(0),o=n>yc?2:1,a=hc(n),r=50200>>a&1?gc(0,a,n):0,s=0,i=n,l=a;for(;o<t;){n=e.codePointAt(o);let c=n>yc?2:1,u=hc(n),p=Ac[a<<4|u],f;p===0?f=!0:p===1?f=!1:p===2?f=!(r&1):p===3?f=!(r&4):f=(r&24)!==16,r=50200>>u&1&&(r!==0||u!==3)?gc(r,u,n):0,f&&(yield{segment:e.slice(s,o),index:s,input:e,_hd:i,_catBegin:l===15?0:l,_catEnd:a===15?0:a},s=o,i=n,l=u),o+=c,a=u}yield{segment:e.slice(s),index:s,input:e,_hd:i,_catBegin:l===15?0:l,_catEnd:a===15?0:a}}function*xc(e){for(let t of Pc(e))yield t.segment}{let e=Pc("_");Ac._keep=[e,e.next()]}var Ec=1e3,Cc=50,Hh=0,Sc=100,Oc=50,Xh=60,Wh=3,Kh=.5,Jh=2e4,Qh=/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]/u,Zh=/^\s+$/u,Rc,eg=e=>{let t=`${e??""}`.normalize("NFC"),n=globalThis.Intl?.Segmenter;return typeof n!="function"?Array.from(xc(t)):(Rc??=new n(void 0,{granularity:"grapheme"}),Array.from(Rc.segment(t),({segment:o})=>o))},rg=e=>eg(e).reduce((t,n)=>Zh.test(n)?t+Kh:Qh.test(n)?t+Wh:t+1,0),tg=e=>2**(((Number.isFinite(e)?Math.min(Sc,Math.max(Hh,e)):Cc)-Oc)/(Sc-Oc)),ci=({text:e="",baseDelay:t=Ec,speed:n=Cc}={})=>{let o=Number.isFinite(t)?Math.max(0,t):Ec,a=tg(n),r=rg(e)*Xh/a,s=Math.max(o,Jh);return Math.min(o+r,s)};var Hn={manual:{enabled:!0,requireLineCompleted:!1},auto:{enabled:!1},applyMode:"persistent"},Dc=1,ir=1,it="choice",vr="form",Bt=()=>({manual:{...Hn.manual},auto:{...Hn.auto},applyMode:Hn.applyMode}),ki=()=>({groupId:null,variantId:null,pageIndex:0}),ng="music-room:player",sg=new Set(["asset-unavailable","decode-failed","invalid-segment","invalid-position","playback-failed"]),Kn=({bgmPlayback:e={commandId:0,operation:"resume"}}={})=>({trackId:null,pageIndex:0,status:"stopped",readiness:"idle",positionMs:0,durationMs:null,playback:null,seekFallback:null,bgmPlayback:e}),vi=new Set,og=new Set(["groupId","variantId"]),ig=new Set(["pageIndex"]),at=new Set,ag=new Set(["trackId"]),lg=new Set(["positionMs"]),cg=new Set(["pageIndex"]),Ai=new Set,ug=new Set(["sceneId"]),pg=new Set(["pageIndex"]),Pi=()=>({pageIndex:0}),xi=e=>{if((e.global.nextLineConfig?.applyMode??"persistent")!=="singleLine")return;let n=e.global.nextLineConfig?.auto?.enabled===!0;e.global.nextLineConfig={...Bt()},n&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})},pi=e=>{e.global.nextLineConfig.auto?.enabled&&(e.global.nextLineConfig.auto.enabled=!1,e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}))},V=e=>{let t=we(e)?pr(e):e;return structuredClone(t)},M=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Jn=e=>{let t=e.global.audioCommandId;if(!Number.isSafeInteger(t)||t<0)throw new Error("Internal audio command counter is invalid");if(t===Number.MAX_SAFE_INTEGER)throw new Error("Audio command counter is exhausted");return e.global.audioCommandId=t+1,e.global.audioCommandId},Lc=e=>{let t=e.global.sceneReplayEntryId;if(!Number.isSafeInteger(t)||t<0)throw new Error("Internal scene replay entry counter is invalid");if(t===Number.MAX_SAFE_INTEGER)throw new Error("Scene replay entry counter is exhausted");return e.global.sceneReplayEntryId=t+1,e.global.sceneReplayEntryId},Yt=(e,t,n)=>({commandId:Jn(e),operation:t,...n===void 0?{}:{positionMs:n}}),Ei=e=>{if(!Object.prototype.hasOwnProperty.call(e.global??{},"musicRoomPlayer"))return;let t=e.global.musicRoomPlayer,n=t.bgmPlayback;t.trackId!==null&&(n={commandId:Jn(e),operation:"resume"}),e.global.musicRoomPlayer=Kn({bgmPlayback:n})},Mc=(e,t)=>{if(typeof t!="string"||t.length===0)throw new Error("Achievement action requires a non-empty resourceId");let n=e.projectData.resources?.achievements?.[t];if(!n)throw new Error(`Achievement resource "${t}" not found`);if(n.type!=="boolean"&&n.type!=="number")throw new Error(`Achievement resource "${t}" has invalid type "${n.type}"`);return n},Vc=(e,t)=>{if(e==null||e==="")throw new Error(`${t} requires slotId`);let n=typeof e=="string"&&e.length>0,o=typeof e=="number"&&Number.isFinite(e);if(!n&&!o)throw new Error(`${t} requires a non-empty string or finite number slotId`)},Br=e=>String(e),qc=()=>({sections:[],resources:[]}),Fc=()=>({sceneIds:[]}),dg=e=>M(e)?(Array.isArray(e.sections)||(e.sections=[]),Array.isArray(e.resources)||(e.resources=[]),e):qc(),fg=e=>M(e)?(Array.isArray(e.sceneIds)||(e.sceneIds=[]),e):Fc(),mg=e=>Array.isArray(e)?e.map(t=>t?.text??"").join(""):"",yg=({sectionId:e,lineId:t,content:n,dialogueState:o,characterName:a})=>({sectionId:e,lineId:t,content:n,text:mg(n),characterId:o.characterId,character:{...o.character||{},name:a},characterName:a}),Uc=(e=0)=>({entries:[],currentLength:0,checkpointLengths:Array(e).fill(0)}),hg=e=>M(e)&&typeof e.sectionId=="string"&&e.sectionId.length>0&&typeof e.lineId=="string"&&e.lineId.length>0,Si=e=>{if(!M(e?.dialogueHistory))return null;let t=e.dialogueHistory;return!Array.isArray(t.entries)||!Number.isInteger(t.currentLength)||!Array.isArray(t.checkpointLengths)?null:t},gg=e=>{if(!M(e?.dialogueHistory))return e.dialogueHistory=Uc(e?.rollback?.timeline?.length??0),e.dialogueHistory;let t=e.dialogueHistory;return Array.isArray(t.entries)||(t.entries=[]),Number.isInteger(t.currentLength)||(t.currentLength=t.entries.length),Array.isArray(t.checkpointLengths)||(t.checkpointLengths=Array(e?.rollback?.timeline?.length??0).fill(0)),t.currentLength=Math.min(Math.max(t.currentLength,0),t.entries.length),t},Oi=e=>{let t=Si(e);return t?(t.currentLength<t.entries.length&&(t.entries=t.entries.slice(0,t.currentLength)),t):null},bg=()=>({resourceId:void 0}),Ig=e=>{if(!M(e))return e;let t={...e};return Object.prototype.hasOwnProperty.call(t,"requireComplete")&&!Object.prototype.hasOwnProperty.call(t,"requireLineCompleted")&&(t.requireLineCompleted=t.requireComplete),delete t.requireComplete,t},ar=(e,t)=>{let n=e?.story?.scenes??{};for(let[o,a]of Object.entries(n))if(a?.sections?.[t])return{sceneId:o,section:a.sections[t]};return{sceneId:void 0,section:void 0}},Bc=e=>{let t=e?.story?.scenes??{},n=new Map;for(let[o,a]of Object.entries(t)){let r=a?.sections??{};for(let s of Object.keys(r)){let i=n.get(s);if(i!==void 0)throw new Error(`Duplicate sectionId "${s}" found in scenes "${i}" and "${o}". Section IDs must be globally unique.`);n.set(s,o)}}},Yc=e=>e,zc=e=>{if(!Number.isInteger(e)||e<1)throw new Error("Malformed save slot formatVersion.");if(e!==Dc)throw new Error(`Unsupported save slot formatVersion "${e}".`);return e},wg=(e,t={})=>{let n;try{n=zc(t.formatVersion)}catch(a){throw new Error(`Hydrated save slot "${e}" failed validation: ${a.message}`)}let o={...t,formatVersion:n,slotId:Yc(t.slotId??t.slotKey??e),savedAt:typeof t.savedAt=="number"?t.savedAt:t.date};return delete o.slotKey,delete o.date,o},kg=(e={})=>Object.fromEntries(Object.entries(e).map(([t,n])=>[t,wg(t,n)])),vg=(e,t)=>{if(!M(e)||!Array.isArray(e.operations))return null;let n=e.operations.filter(o=>{if(!M(o))return!1;let{variableId:a,op:r,value:s,roundTo:i}=o,l=t?.resources?.variables?.[a];if(!l||Se(l)||l.readonly===!0||l.scope!=="context")return!1;try{return Rt(l.type,r,a),On(l.type,r,s,a,{roundTo:i}),r!=="set"||xo(l,s)}catch{return!1}});return n.length>0?{...e,operations:n}:null},Gc=(e,t)=>{if(!Array.isArray(e))return;let n=e.flatMap(o=>{if(!M(o)||!iw(o.type))return[];if(o.type!=="updateVariable"||t===void 0)return[o];let a=vg(o.payload,t);return a?[{...o,payload:a}]:[]});return n.length>0?n:void 0},Ag=(e,t,n)=>{let{section:o}=ar(e,t?.sectionId),r=o?.lines?.find(({id:i})=>i===t?.lineId)?.actions,s=n.split(".");for(let i of s){if(Array.isArray(r)){if(!/^(0|[1-9]\d*)$/.test(i))return;let l=Number(i);if(!Object.prototype.hasOwnProperty.call(r,l))return;r=r[l];continue}if(!M(r)||!Object.prototype.hasOwnProperty.call(r,i))return;r=r[i]}return s.at(-1)==="random"&&M(r?.distribution)?r:void 0},Hc=e=>{if(e?.type!=="integer"||!Number.isSafeInteger(e.min)||!Number.isSafeInteger(e.max))return!1;let t=e.max-e.min+1;return Number.isSafeInteger(t)&&t>=1&&t<=4294967296},Xc=(e,t,n)=>e.filter(({path:o,type:a,result:r})=>{let s=Ag(n,t,o);if(s?.distribution?.type!==a)return!1;if(a==="weighted")return M(s.distribution.outcomes?.[r.outcomeIndex]?.actions);if(a==="integer"){let i=n?.resources?.variables?.[s.variableId];return typeof s.variableId=="string"&&i?.type==="number"&&i.scope==="context"&&i.readonly!==!0&&!Se(i)&&Hc(s.distribution)&&r.value>=s.distribution.min&&r.value<=s.distribution.max}return!1}),Ri=(e,t)=>{if(!Object.prototype.hasOwnProperty.call(e??{},"randomOutcomeVersion"))return;if(e.randomOutcomeVersion!==ir)throw new Error(`unsupported rollback random outcome version: ${e.randomOutcomeVersion}`);if(!Array.isArray(e.randomOutcomes))throw new Error("versioned rollback random outcomes must be an array");let n=new Set,o=e.randomOutcomes.map((a,r)=>{let s=`${a?.path}\0${a?.ordinal}`;if(!M(a)||typeof a.path!="string"||a.path.length===0||!Number.isSafeInteger(a.ordinal)||a.ordinal<0||n.has(s))throw new Error(`invalid rollback random outcome at index ${r}`);return n.add(s),{path:a.path,ordinal:a.ordinal,type:a.type,result:_n(V(a.result),a.type)}});return t===void 0?o:Xc(o,e,t)},Pg=(e,t)=>{!M(e)||!Array.isArray(e.timeline)||e.timeline.forEach(n=>{if(!M(n))return;typeof n.returnable!="boolean"&&delete n.returnable;let o=Gc(n.executedActions,t);o?n.executedActions=o:delete n.executedActions;let a=Ri(n,t);a?(n.randomOutcomeVersion=ir,n.randomOutcomes=a):(delete n.randomOutcomeVersion,delete n.randomOutcomes)})},xg=(e,t)=>{let n=e??{};return Object.values(n).forEach(o=>{let a=o?.state?.contexts;Array.isArray(a)&&a.forEach(r=>{let s=r?.rollback?.timeline;Array.isArray(s)&&s.forEach(i=>{if(!M(i))return;let l=Ri(i,t);l?(i.randomOutcomeVersion=ir,JSON.stringify(i.randomOutcomes)!==JSON.stringify(l)&&(i.randomOutcomes=l)):(delete i.randomOutcomeVersion,delete i.randomOutcomes)})})}),n},$c=(e,t,n,o="viewedRegistry")=>{let a=t==="sections"?"sectionId":"resourceId";if(typeof e=="string"||typeof e=="number")return{[a]:String(e)};if(!M(e))throw new Error(`Malformed ${o}.${t}[${n}] entry.`);if(typeof e[a]!="string"||e[a].length===0)throw new Error(`Malformed ${o}.${t}[${n}] entry: missing ${a}.`);if(t==="sections"){let r={sectionId:e.sectionId};if(e.lastLineId!==void 0&&e.lastLineId!==null&&typeof e.lastLineId!="string")throw new Error(`Malformed ${o}.sections[${n}] entry: invalid lastLineId.`);return typeof e.lastLineId=="string"&&e.lastLineId.length>0&&(r.lastLineId=e.lastLineId),r}return{resourceId:e.resourceId}},Eg=(e,t="viewedRegistry")=>{if(e===void 0)return qc();if(!M(e))throw new Error(`Malformed ${t}.`);if(e.sections!==void 0&&!Array.isArray(e.sections))throw new Error(`Malformed ${t}.sections.`);if(e.resources!==void 0&&!Array.isArray(e.resources))throw new Error(`Malformed ${t}.resources.`);let n=e.sections??[],o=e.resources??[];return{sections:Object.values(Object.fromEntries(n.map((a,r)=>{let s=$c(a,"sections",r,t);return[s.sectionId,s]}))),resources:Object.values(Object.fromEntries(o.map((a,r)=>{let s=$c(a,"resources",r,t);return[s.resourceId,s]})))}},Sg=(e,t="accountReplayRegistry")=>{if(e===void 0)return Fc();if(!M(e))throw new Error(`Malformed ${t}.`);if(e.sceneIds!==void 0&&!Array.isArray(e.sceneIds))throw new Error(`Malformed ${t}.sceneIds.`);let n=e.sceneIds??[];return{sceneIds:[...new Set(n.map((o,a)=>{if(typeof o!="string"||o.length===0)throw new Error(`Malformed ${t}.sceneIds[${a}] entry.`);return o}))]}},qt=(e,t,n)=>{if(!M(e))throw new Error(`Malformed save slot ${n}.`);let{sectionId:o,lineId:a}=e;if(typeof o!="string"||o.length===0)throw new Error(`Malformed save slot ${n}: missing sectionId.`);if(typeof a!="string"||a.length===0)throw new Error(`Malformed save slot ${n}: missing lineId.`);let{sceneId:r,section:s}=ar(t,o);if(!s)throw new Error(`Malformed save slot ${n}: section "${o}" does not exist in projectData.`);if(!s.lines?.some(l=>l.id===a))throw new Error(`Malformed save slot ${n}: line "${a}" does not exist in section "${o}".`);return{sceneId:r,sectionId:o,lineId:a}},Wc=e=>{let t=e.story.initialSceneId,n=e.story.scenes[t],o=n.initialSectionId,a=n.sections[o];return qt({sceneId:t,sectionId:o,lineId:a.initialLineId??a.lines[0].id},e,"projectData initial pointer")},Og=e=>{try{return Wc(e),!0}catch{return!1}},Rg=(e,t,n)=>{let o=e?.pointers?.read;if(!M(o)||typeof o.sectionId!="string"||o.sectionId.length===0||typeof o.lineId!="string"||o.lineId.length===0)return qt(o,t,n);try{return qt(o,t,n)}catch{let a=Array.isArray(e?.rollback?.timeline)?e.rollback.timeline:[],r=Number.isInteger(e?.rollback?.currentIndex)?Math.min(e.rollback.currentIndex,a.length-1):a.length-1;for(let s=r;s>=0;s-=1)try{return qt(a[s],t,`${n} compatibility checkpoint`)}catch{}return Wc(t)}};var Kc=(e,t)=>{let{section:n}=ar(e,t?.sectionId);return n?.lines?.find(o=>o.id===t?.lineId)},Cg=(e,t,n)=>{if(!M(e))throw new Error(`Malformed save slot ${n}.`);if(!Array.isArray(e.entries))throw new Error(`Malformed save slot ${n}.entries.`);if(!Number.isInteger(e.currentLength))throw new Error(`Malformed save slot ${n}.currentLength.`);if(!Array.isArray(e.checkpointLengths))throw new Error(`Malformed save slot ${n}.checkpointLengths.`);let o=[],a=[0],r=!1;if(e.entries.forEach((i,l)=>{if(!M(i))throw new Error(`Malformed save slot ${n}.entries[${l}].`);if(typeof i.sectionId!="string"||i.sectionId.length===0)throw new Error(`Malformed save slot ${n}.entries[${l}]: missing sectionId.`);if(typeof i.lineId!="string"||i.lineId.length===0)throw new Error(`Malformed save slot ${n}.entries[${l}]: missing lineId.`);if(i.appendToPrevious!==void 0&&typeof i.appendToPrevious!="boolean")throw new Error(`Malformed save slot ${n}.entries[${l}].appendToPrevious.`);let{section:c}=ar(t,i.sectionId);if(!c?.lines?.some(p=>p.id===i.lineId)){r=!1,a.push(o.length);return}o.push({sectionId:i.sectionId,lineId:i.lineId,...i.appendToPrevious===!0&&r&&o.length>0?{appendToPrevious:!0}:{}}),r=!0,a.push(o.length)}),e.currentLength<0||e.currentLength>e.entries.length)throw new Error(`Malformed save slot ${n}.currentLength: must reference the retained entries.`);let s=e.checkpointLengths.map((i,l)=>{if(!Number.isInteger(i)||i<0||i>e.entries.length)throw new Error(`Malformed save slot ${n}.checkpointLengths[${l}].`);return a[i]});return{entries:o,currentLength:a[e.currentLength],checkpointLengths:s}},$g=(e,t)=>M(Kc(e,t)?.actions?.dialogue),Jc=(e,t,n)=>{if(!t||t.sectionId!==n.sectionId)return!1;let{section:o}=ar(e,n.sectionId),a=o?.lines?.findIndex(s=>s.id===n.lineId);return typeof a!="number"||a<=0?!1:o.lines.slice(0,a).findLast(s=>M(s.actions?.dialogue))?.id===t.lineId},_g=(e,t)=>{let n=Uc();return e.timeline.forEach(o=>{if(o.returnable!==!1&&$g(t,o)){let a=Kc(t,o),r=n.entries.at(-1),s=a.actions.dialogue.append===!0&&Jc(t,r,o);n.entries.push({sectionId:o.sectionId,lineId:o.lineId,...s?{appendToPrevious:!0}:{}})}n.checkpointLengths.push(n.entries.length)}),n.currentLength=n.checkpointLengths[e.currentIndex]??0,n.entries.length>0?n:null},Tg=(e,t,n,o)=>{if(n.length!==t.timeline.length)throw new Error("Malformed save slot dialogueHistory.checkpointLengths: rollback checkpoint mapping is incomplete.");if(e.checkpointLengths.length!==o)throw new Error("Malformed save slot dialogueHistory.checkpointLengths: expected one length per rollback checkpoint.");e.checkpointLengths=n.map(r=>r===null?e.currentLength:e.checkpointLengths[r]);let a=0;return e.checkpointLengths.forEach((r,s)=>{if(r<a)throw new Error(`Malformed save slot dialogueHistory.checkpointLengths[${s}]: lengths must be chronological.`);a=r}),e},jg=(e,t,n)=>{if(!M(e)||!Array.isArray(e.timeline))return{rollback:Ut({pointer:t,replayStartIndex:1}),sourceCheckpointIndexes:[null],sourceTimelineLength:0};let o=[],a=e.timeline.flatMap((c,u)=>{if(!M(c))return[];let p=Ri(c);try{let f=qt(c,n,`rollback.timeline[${u}]`),d=p?Xc(p,f,n):void 0,m=Wn({sectionId:f.sectionId,lineId:f.lineId,rollbackPolicy:c.rollbackPolicy,returnable:c.returnable,...d?{randomOutcomeVersion:ir,randomOutcomes:d}:{}}),y=Gc(V(c.executedActions),n);return y&&(m.executedActions=y),o.push(u),[m]}catch{return[]}});if(a.length===0)return{rollback:Ut({pointer:t,replayStartIndex:1}),sourceCheckpointIndexes:[null],sourceTimelineLength:e.timeline.length};let r=typeof e.currentIndex=="number"?Math.trunc(e.currentIndex):e.timeline.length-1,s=o.indexOf(r);s<0&&(s=a.length-1);let i=a[s];if(i?.sectionId!==t.sectionId||i?.lineId!==t.lineId){let c=a.findLastIndex(u=>u.sectionId===t.sectionId&&u.lineId===t.lineId);c>=0?s=c:(a.push(Wn({sectionId:t.sectionId,lineId:t.lineId})),o.push(null),s=a.length-1)}let l=typeof e.replayStartIndex=="number"?Math.min(Math.max(Math.trunc(e.replayStartIndex),0),s):0;return{rollback:{currentIndex:s,isRestoring:!1,replayStartIndex:l,timeline:a},sourceCheckpointIndexes:o,sourceTimelineLength:e.timeline.length}},Qc=(e,t,n)=>{if(!M(e))throw new Error(`Malformed save slot contexts[${n}] entry.`);let o=$i(t),a=Rg(e,t,`contexts[${n}].pointers.read`);if(e.variables!==void 0&&!M(e.variables))throw new Error(`Malformed save slot contexts[${n}].variables entry.`);if(e.runtime!==void 0&&!M(e.runtime))throw new Error(`Malformed save slot contexts[${n}].runtime entry.`);let r=e.variables?St(V(e.variables),t.resources?.variables??{},{allowedScopes:["context"]}):{},s=Hg({loadedContextRuntime:M(e.runtime)?V(e.runtime):{}}),{rollback:i,sourceCheckpointIndexes:l,sourceTimelineLength:c}=jg(e.rollback,a,t),u=e.dialogueHistory===void 0?_g(i,t):Tg(Cg(e.dialogueHistory,t,`contexts[${n}].dialogueHistory`),i,l,c),p={currentPointerMode:"read",pointers:{read:a},configuration:M(e.configuration)?V(e.configuration):{},views:Array.isArray(e.views)?V(e.views):[],bgm:M(e.bgm)?V(e.bgm):{resourceId:void 0},variables:{...o,...r},...u?{dialogueHistory:u}:{},rollback:i};return s&&(p.runtime=s),p},Ng=(e,t)=>{if(!M(e))throw new Error("Malformed save slot state.");if(!Array.isArray(e.contexts)||e.contexts.length===0)throw new Error("Malformed save slot state: contexts must be a non-empty array.");return{contexts:e.contexts.map((n,o)=>Qc(n,t,o))}},Dg=(e,t)=>{if(!M(e))throw new Error("Malformed save slot.");let n=zc(e.formatVersion);return{...e,formatVersion:n,state:Ng(e.state,t)}},_c=(e,t,{required:n=!1}={})=>{if(e===void 0){if(n)throw new Error(`showConfirmDialog requires ${t}`);return{hideConfirmDialog:{}}}if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`showConfirmDialog ${t} must be an action object`);let o=V(e),a=o.hideConfirmDialog??{};return delete o.hideConfirmDialog,{hideConfirmDialog:a,...o}},Lg=(e={})=>{if(!e?.resourceId)throw new Error("showConfirmDialog requires resourceId");return{resourceId:e.resourceId,confirmActions:_c(e.confirmActions,"confirmActions",{required:!0}),cancelActions:_c(e.cancelActions,"cancelActions")}},lt=e=>{Object.prototype.hasOwnProperty.call(e.global,"confirmDialog")&&(e.global.confirmDialog=null)},Mg=e=>(M(e.global.formDrafts)||(e.global.formDrafts={}),e.global.formDrafts),ct=e=>{Object.prototype.hasOwnProperty.call(e.global,"formDrafts")&&(e.global.formDrafts={})},Zc=e=>{if(!(!M(e)||!e.animations))return{animations:V(e.animations)}},Vg=(e,t)=>{let n=Zc(t);if(n){e.global.pendingScreenTransition=n;return}delete e.global.pendingScreenTransition},qg=e=>{let t=e?.id??e?.resourceId;return typeof t=="string"&&t.length>0?t:void 0},Fg=(e,t)=>{let n=e?.sectionId,o=e?.lineId;if(!(!n||!o||!t))return`${n}:${o}:${t}`},Xn=e=>String(e??""),eu=(e,t)=>{let n=Xn(t);return e?.trim===!0?n.trim():n},Ug=e=>M(e?.fields)?Object.fromEntries(Object.entries(e.fields).filter(([,t])=>M(t)).map(([t,n])=>[t,{id:t,...V(n)}])):{},Bg=(e,t)=>{if(!t||!M(e.global.formDrafts))return;let n=e.global.formDrafts[t];return M(n)?n:void 0},ru=(e,t)=>{let n=Mg(e);M(n[t])||(n[t]={values:{},touched:{},errors:{},submitted:!1});let o=n[t];return M(o.values)||(o.values={}),M(o.touched)||(o.touched={}),M(o.errors)||(o.errors={}),typeof o.submitted!="boolean"&&(o.submitted=!1),o},Ci=(e,t)=>{let n=eu(e,t);return e?.required===!0&&n.length===0?"required":null},Yg=({state:e,pointer:t})=>{if(!t?.sectionId||!t?.lineId)return{};let o=ve({state:e},{sectionId:t.sectionId})?.lines||[],a=o.findIndex(r=>r.id===t.lineId);return a<0?{}:Mr(o.slice(0,a+1).map(r=>r.actions||{}))},zg=({state:e,form:t,pointer:n})=>{if(!t?.resourceId)return null;let o=qg(t),a=Fg(n,o);if(!o||!a)return null;let r=Bg(e,a),s=Ug(t),i=Yi({state:e}),l={},c=[],u={},p=!0;return Object.entries(s).forEach(([f,d])=>{let m=Xn(i?.[d.variableId]),y=Object.prototype.hasOwnProperty.call(r?.values??{},f)?Xn(r.values[f]):m,g=r?.touched?.[f]===!0,h=Ci(d,y),w=r?.submitted||g?h:null,b=typeof d.maxLength=="number"?Math.max(0,Math.round(d.maxLength)):void 0,E={id:f,variableId:d.variableId,value:y,initialValue:m,valid:!h,error:w,touched:g,required:d.required===!0,trim:d.trim===!0,placeholder:d.placeholder===void 0?"":String(d.placeholder),multiline:d.multiline===!0,...b!==void 0?{maxLength:b}:{}};h&&(p=!1),l[f]=E,c.push(E),u[f]=y}),{id:o,key:a,resourceId:t.resourceId,animations:t.animations,valid:p,submitted:r?.submitted===!0,fields:l,fieldList:c,values:u,submitActions:{submitForm:{formKey:a,actions:V(t.submitActions??{})}},cancelActions:{cancelForm:{formKey:a,actions:V(t.cancelActions??{})}}}},ot="line",kr="interaction",Wn=({sectionId:e,lineId:t,rollbackPolicy:n,returnable:o,randomOutcomeVersion:a,randomOutcomes:r})=>({sectionId:e,lineId:t,rollbackPolicy:n??"free",...typeof o=="boolean"?{returnable:o}:{},...a===ir?{randomOutcomeVersion:ir,randomOutcomes:V(r??[])}:{}}),$i=e=>{let t=we(e)?pr(e):e,{contextVariableDefaultValues:n}=Sn(t??{});return V(n)},tu=()=>({...V(jt)}),nu=({loadedRuntime:e,runtimeIds:t,defaults:n={},path:o})=>{if(e===void 0)return{runtimeState:V(n),hasLoadedValues:!1};if(!M(e))throw new Error(`Malformed ${o}.`);let a=V(n),r=!1;return t.forEach(s=>{e[s]!==void 0&&(a[s]=Nn(s,V(e[s])),r=!0)}),{runtimeState:a,hasLoadedValues:r}},Gg=({projectData:e,loadedGlobalRuntime:t={}})=>nu({loadedRuntime:t,runtimeIds:To,defaults:No(e),path:"global.runtime"}).runtimeState,Hg=({loadedContextRuntime:e={}})=>{let{runtimeState:t,hasLoadedValues:n}=nu({loadedRuntime:e,runtimeIds:jo,defaults:tu(),path:"context.runtime"});return n?t:void 0},Pr=e=>{let t=Array.isArray(e?.contexts)?e.contexts:[];return t[t.length-1]},ye=e=>{let t=Pr(e);return t?.kind==="sceneReplay"&&M(t.sceneReplay)?t:null},su=(e,t)=>{let n=t?.sceneReplay?.sceneId,o=e.projectData?.resources?.sceneReplay?.replays?.find(a=>a.sceneId===n);Object.entries(o?.initialVariables??{}).forEach(([a,r])=>{t.variables[a]=V(r)})},Xg=e=>({autoMode:e.global.autoMode,skipMode:e.global.skipMode,dialogueUIHidden:e.global.dialogueUIHidden,nextLineConfig:V(e.global.nextLineConfig),overlayStack:V(e.global.overlayStack),confirmDialog:V(e.global.confirmDialog),formDrafts:V(e.global.formDrafts),isLineCompleted:e.global.isLineCompleted,...e.global.isDialogueHistoryShowing===void 0?{}:{isDialogueHistoryShowing:e.global.isDialogueHistoryShowing},...e.global.pendingScreenTransition===void 0?{}:{pendingScreenTransition:V(e.global.pendingScreenTransition)}}),Wg=e=>{e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,delete e.global.pendingScreenTransition,e.global.nextLineConfig=Bt(),e.global.overlayStack=[],e.global.confirmDialog=null,e.global.formDrafts={},e.global.isLineCompleted=!0,e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"})},Kg=(e,t)=>{e.global.autoMode=t.autoMode,e.global.skipMode=t.skipMode,e.global.dialogueUIHidden=t.dialogueUIHidden,e.global.nextLineConfig=V(t.nextLineConfig),e.global.overlayStack=V(t.overlayStack),e.global.confirmDialog=V(t.confirmDialog),e.global.formDrafts=V(t.formDrafts),e.global.isLineCompleted=t.isLineCompleted,t.isDialogueHistoryShowing===void 0?delete e.global.isDialogueHistoryShowing:e.global.isDialogueHistoryShowing=t.isDialogueHistoryShowing,t.pendingScreenTransition===void 0?delete e.global.pendingScreenTransition:e.global.pendingScreenTransition=V(t.pendingScreenTransition),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"});let n=Ae({state:e});e.global.autoMode&&e.global.isLineCompleted&&!n&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:lr({state:e})}}),e.global.skipMode&&!n&&e.global.pendingEffects.push({name:"startSkipNextTimer"}),e.global.nextLineConfig.auto?.enabled&&!n&&(e.global.nextLineConfig.auto.trigger==="fromStart"||e.global.isLineCompleted)&&e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:e.global.nextLineConfig.auto.delay}})},Jg=e=>e.runtime?(jo.forEach(t=>{e.runtime[t]===void 0&&(e.runtime[t]=V(jt[t]))}),e.runtime):(e.runtime=tu(),e.runtime),Qg=e=>Tl(e.global),ou=e=>{e.global.pendingEffects.push({name:"saveGlobalRuntime",payload:{globalRuntime:Qg(e)}})},_i=(e,t,n)=>{let o=Nn(t,n);if(t in jt){let a=Pr(e);if(!a)return o;let r=Jg(a);return r[t]=o,o}return e.global[t]=o,o},Ti=({pointer:e,projectData:t,kind:n,sceneReplay:o})=>({...n===void 0?{}:{kind:n},...o===void 0?{}:{sceneReplay:V(o)},currentPointerMode:"read",pointers:{read:V(e)},configuration:{},views:[],bgm:bg(),variables:$i(t),rollback:Ut({pointer:e})}),ut=e=>e?(e.currentPointerMode="read",M(e.pointers)||(e.pointers={}),Object.prototype.hasOwnProperty.call(e.pointers,"history")&&delete e.pointers.history,e.pointers):null,Zg=(e,{queueRender:t=!0}={})=>{let n=e.contexts?.[e.contexts.length-1],o=n?.pointers?.read;if(!n||!o?.sectionId||!o?.lineId)return null;let a=Ti({pointer:o,projectData:e.projectData});return e.contexts[e.contexts.length-1]=a,eb(e,{queueRender:t}),a},eb=(e,{queueRender:t=!0}={})=>{e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,lt(e),ct(e),e.global.nextLineConfig=Bt(),e.global.overlayStack=[],e.global.isLineCompleted=!0,Ei(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"}),t&&e.global.pendingEffects.push({name:"render"})},iu=e=>{!e||!("baselineVariables"in e)||delete e.baselineVariables},Ut=({pointer:e,replayStartIndex:t=0})=>{let n=e?.sectionId&&e?.lineId;return{currentIndex:n?0:-1,isRestoring:!1,replayStartIndex:t,timeline:n?[Wn({sectionId:e.sectionId,lineId:e.lineId})]:[]}},xr=(e,t={})=>{if(e?.rollback)return iu(e.rollback),Array.isArray(e.rollback.timeline)||(e.rollback.timeline=[]),typeof e.rollback.currentIndex!="number"&&(e.rollback.currentIndex=e.rollback.timeline.length>0?e.rollback.timeline.length-1:-1),typeof e.rollback.isRestoring!="boolean"&&(e.rollback.isRestoring=!1),typeof e.rollback.replayStartIndex!="number"&&(e.rollback.replayStartIndex=0),e.rollback;let n=e?.pointers?.read;return e.rollback=Ut({pointer:n,replayStartIndex:t.compatibilityAnchor?1:0}),e.rollback},Qn=(e,t)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return;let o=xr(n);if(o.isRestoring)return;let a=Oi(n);o.currentIndex<o.timeline.length-1&&(o.timeline=o.timeline.slice(0,o.currentIndex+1)),o.timeline.push(Wn(t)),o.currentIndex=o.timeline.length-1,a&&(a.checkpointLengths=a.checkpointLengths.slice(0,o.currentIndex),a.checkpointLengths.push(a.currentLength))},rb=({state:e})=>{let n=e.contexts?.[e.contexts.length-1]?.rollback;return!Array.isArray(n?.timeline)||typeof n.currentIndex!="number"?null:{checkpointIndex:n.currentIndex,checkpoint:n.timeline[n.currentIndex]??null}},tb=({state:e},t={})=>{let{checkpointIndex:n,checkpointIdentity:o,sectionId:a,lineId:r}=t,i=e.contexts?.[e.contexts.length-1]?.rollback;if(!Number.isInteger(n)||!Array.isArray(i?.timeline)||typeof i.currentIndex!="number")return e;let l=i.timeline[n];return(we(l)?fn(l):l)!==o||l?.sectionId!==a||l?.lineId!==r||(l.returnable=!1),e},nb=({state:e},t={})=>{let{slotId:n,saveSlotIdentity:o,checkpointIndex:a,sectionId:r,lineId:s}=t,i=Br(n),l=e.global.saveSlots?.[i],c=we(l)?fn(l):l;if(!l||c!==o)return e;let u=l.state?.contexts,p=Array.isArray(u)?u.at(-1):null,f=p?.rollback,d=f?.timeline?.[a];return!Number.isInteger(a)||f?.currentIndex!==a||p?.pointers?.read?.sectionId!==r||p?.pointers?.read?.lineId!==s||d?.sectionId!==r||d?.lineId!==s||(d.returnable=!1,e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}})),e},au=(e,t)=>{let n=e.contexts?.[e.contexts.length-1],o=n?.rollback;if(!o||o.isRestoring||!Array.isArray(o.timeline)||typeof o.currentIndex!="number")return null;let a=t?.at(-1),r=typeof a?.checkpointIndex=="number"?a.checkpointIndex:o.currentIndex;if(r<0||r>=o.timeline.length)return null;if(typeof a?.checkpointIndex!="number"&&r<o.timeline.length-1){o.timeline=o.timeline.slice(0,r+1);let s=Oi(n);s&&(s.checkpointLengths=s.checkpointLengths.slice(0,r+1))}return o.timeline[r]??null},sb=({state:e,rollbackActionBatchStack:t,playbackOwnership:n},o={})=>{let a=o?.source===ot?ot:kr,r=e.contexts?.[e.contexts.length-1],s=r?.rollback;if(!s||s.isRestoring||!Array.isArray(s.timeline)||typeof s.currentIndex!="number"||s.currentIndex<0||s.currentIndex>=s.timeline.length)return t.push({checkpointIndex:null,source:a}),e;if(s.currentIndex<s.timeline.length-1){s.timeline=s.timeline.slice(0,s.currentIndex+1);let u=Oi(r);u&&(u.checkpointLengths=u.checkpointLengths.slice(0,s.currentIndex+1))}let i=r?.pointers?.read,l=n?.lineEntryId,c=a===ot&&(n?.rollbackCheckpointLineEntryId===void 0?s.timeline[s.currentIndex]?.sectionId===i?.sectionId&&s.timeline[s.currentIndex]?.lineId===i?.lineId:n.rollbackCheckpointLineEntryId===l);return t.push({checkpointIndex:s.currentIndex,source:a,...a===ot?{lineEntryId:l,sourcePointer:i?{sectionId:i.sectionId,lineId:i.lineId}:null,hasTrackedLineEntryCheckpoint:c}:{}}),e},ob=({state:e,rollbackActionBatchStack:t})=>(t.pop(),e),ib=({state:e,rollbackActionBatchStack:t,playbackOwnership:n})=>{let o=t?.at(-1);if(o?.source!==ot||o.hasTrackedLineEntryCheckpoint)return e;let a=o.sourcePointer;if(!a)return e;Qn(e,{sectionId:a.sectionId,lineId:a.lineId,returnable:!1});let s=(e.contexts?.at(-1)).rollback;return o.checkpointIndex=s.currentIndex,o.hasTrackedLineEntryCheckpoint=!0,n?.lineEntryId===o.lineEntryId&&(n.rollbackCheckpointLineEntryId=o.lineEntryId),e},ab=({state:e,rollbackActionBatchStack:t},n)=>{if(t?.at(-1)?.source!==ot)return e;if(typeof n?.path!="string"||n.path.length===0)throw new Error("random rollback outcome requires a structural path");if(!Number.isSafeInteger(n.ordinal)||n.ordinal<0)throw new Error("random rollback outcome requires a non-negative ordinal");let a=_n(n.result,n.type),r=au(e,t);if(!r)return e;if(r.randomOutcomeVersion!==ir&&(r.randomOutcomeVersion=ir,r.randomOutcomes=[]),r.randomOutcomes.some(({path:s,ordinal:i})=>s===n.path&&i===n.ordinal))throw new Error(`duplicate random outcome identity in rollback occurrence: ${n.path}#${n.ordinal}`);return r.randomOutcomes.push({path:n.path,ordinal:n.ordinal,type:n.type,result:a}),e},Ke=(e,t,n,o)=>{let r=o?.at(-1)?.source??kr;if(!aw(t,r))return;let s=au(e,o);s&&(Array.isArray(s.executedActions)||(s.executedActions=[]),s.executedActions.push({type:t,payload:V(n)}))},di=(e,t)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return;let o=t?.operations??[];for(let{variableId:a,op:r,value:s,roundTo:i}of o){let l=e.projectData.resources?.variables?.[a],c=l?.scope,u=l?.type;if(Se(l))throw new Error(`Cannot update computed variable: ${a}`);if(l?.readonly===!0)throw new Error(`Cannot update readonly variable: ${a}`);Ot(c,a),Rt(u,r,a),On(u,r,s,a,{roundTo:i}),c==="context"&&(n.variables[a]=Rn(n.variables[a],r,s,{roundTo:i}))}},lb=(e,t)=>{Array.isArray(t?.executedActions)&&t.executedActions.forEach(({type:n,payload:o})=>{lw(e,n,o)})},cb=(e,t)=>{let{sectionId:n,lineId:o}=t,s=ve({state:e},{sectionId:n})?.lines?.find(i=>i.id===o)?.actions;s&&Xi(e,s,{checkpoint:t,bindings:{},randomOutcomeOrdinals:new Map},[])},lu=(e,t)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return e;let o=xr(n),a=o.timeline[t];if(!a)return e;e.global.autoMode&&Xt({state:e}),e.global.skipMode&&Ar({state:e}),e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}),o.isRestoring=!0,o.currentIndex=t;try{n.variables=$i(e.projectData),n.kind==="sceneReplay"&&(su(e,n),n.sceneReplay.finishOnNextAdvance=!1,n.sceneReplay.exitOnLineCompleted=!1),delete n.runtime,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,e.global.nextLineConfig=V(Hn),e.global.overlayStack=[],lt(e),ct(e),e.global.isLineCompleted=!0;let r=o.replayStartIndex??0;for(let l=r;l<=t;l++)l>r&&xi(e),cb(e,o.timeline[l]),lb(e,o.timeline[l]);let s=ut(n);s.read={sectionId:a.sectionId,lineId:a.lineId};let i=Si(n);i&&(i.currentLength=Math.min(i.checkpointLengths[t]??0,i.entries.length)),n.kind==="sceneReplay"&&(n.sceneReplay.entryId=Lc(e)),e.global.pendingEffects=e.global.pendingEffects.filter(l=>l?.name!=="render"),e.global.pendingEffects.push({name:"render"})}finally{o.isRestoring=!1}return e},ub=e=>{let{projectData:t}=e,n=e.initialAudioCommandId??0;if(!Number.isSafeInteger(n)||n<0)throw new Error("Internal initial audio command counter is invalid");let o=e.global??{},{saveSlots:a={},variables:r={},runtime:s={},accountViewedRegistry:i={},accountReplayRegistry:l={},localizationPackages:c=[{l10nId:null,language:null}]}=o;Bc(t),Pt(t),xt(t),Et(t),Dr(t?.resources?.variables??{});let u=t.story.initialSceneId,p=t.story.scenes[u],f=p.initialSectionId,d=p.sections[f],m={sceneId:u,sectionId:f,lineId:d.initialLineId??d.lines[0].id},{globalVariablesDefaultValues:y}=Sn(t),g={...y,...St(r,t.resources?.variables??{},{allowedScopes:["device","account"],preserveUnknown:!0})};return{projectData:t,global:{pendingEffects:[],confirmDialog:null,formDrafts:{},accountViewedRegistry:Eg(i,"accountViewedRegistry"),accountReplayRegistry:Sg(l),nextLineConfig:Bt(),imageGalleryNavigation:ki(),sceneReplayNavigation:Pi(),sceneReplayEntryId:0,audioCommandId:n,musicRoomPlayer:Kn(),saveSlots:kg(a),localizationPackages:V(c),overlayStack:[],variables:g,...Gg({projectData:t,loadedGlobalRuntime:s})},contexts:[Ti({pointer:m,projectData:t})]}},pb=({state:e})=>e.global.overlayStack||[],db=({state:e})=>e.global.pendingEffects,cu=({state:e})=>e.global.skipMode,fb=({state:e})=>e.global.autoMode,uu=({state:e})=>e.global.dialogueUIHidden,pu=({state:e})=>{let t=Array.isArray(e.contexts)?e.contexts:[],n=t[t.length-1];if(!n)return[];let o,a=M(n.dialogueHistory)&&Array.isArray(n.dialogueHistory.entries)&&Number.isInteger(n.dialogueHistory.currentLength);if(a)o=n.dialogueHistory.entries.slice(0,n.dialogueHistory.currentLength);else{let{sectionId:c,lineId:u}=n.pointers.read,p=ve({state:e},{sectionId:c});if(!p?.lines||!Array.isArray(p.lines))return[];let f=p.lines.findIndex(d=>d.id===u);o=p.lines.slice(0,f+1).map(d=>({sectionId:c,lineId:d.id}))}let r=[],s=Qr({variables:{...e.global?.variables??{},...Pr(e)?.variables??{}},runtime:gr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1}),i=new Map,l=c=>{let u=i.get(c.sectionId);if(!u){let f=ve({state:e},{sectionId:c.sectionId}),d=Array.isArray(f?.lines)?f.lines:[];u={lines:d,lineIndexes:new Map(d.map((m,y)=>[m.id,y])),projections:new Map,nextLineIndex:0,presentationState:{}},i.set(c.sectionId,u)}let p=u.lineIndexes.get(c.lineId);if(p===void 0)return null;for(;u.nextLineIndex<=p;){let f=u.lines[u.nextLineIndex],d=f.actions||{};u.presentationState=Mr([u.presentationState,d]),u.projections.set(f.id,{line:f,lineActions:d,dialogueState:u.presentationState.dialogue||{}}),u.nextLineIndex+=1}return u.projections.get(c.lineId)??null};for(let c of o){if(!hg(c))continue;let u=l(c);if(!u)continue;let{line:p,lineActions:f,dialogueState:d}=u;if(!f.dialogue)continue;let m=En({characterId:d.characterId,character:d.character,characters:e.projectData.resources?.characters??{},variables:s}),y=yg({sectionId:c.sectionId,lineId:p.id,content:f.dialogue.append===!0?d.content:f.dialogue.content,dialogueState:d,characterName:m}),g=r[r.length-1];if((a?c.appendToPrevious===!0:f.dialogue.append===!0)&&g?.sectionId===c.sectionId){r[r.length-1]={...r[r.length-1],content:y.content,text:y.text,characterId:y.characterId,character:y.character,characterName:y.characterName};continue}r.push(y)}return r},mb=(e,t,n)=>{let o=!1;for(let a of t??[]){let{slotId:r,saveSlotIdentity:s,sectionId:i,lineId:l}=a,c=e.global.saveSlots?.[Br(r)],u=we(c)?fn(c):c,p=c?.state?.contexts?.at(-1);!c||u!==s||p?.pointers?.read?.sectionId!==i||p?.pointers?.read?.lineId!==l||(p.dialogueHistory=V(n),o=!0)}o&&e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}})},yb=({state:e},t={})=>{let n=Pr(e),o=n?.pointers?.read,a=Gt({state:e});if(!n||!M(a?.actions?.dialogue))return e;let r=xr(n),s=r.timeline?.[r.currentIndex],i=s?.sectionId===o?.sectionId&&s?.lineId===o?.lineId,l=Si(n),c=l?.checkpointLengths?.[r.currentIndex],u=r.currentIndex>0?l?.checkpointLengths?.[r.currentIndex-1]??0:0,p=l?.entries?.[l.currentLength-1];if(t.reuseExistingOccurrence===!0&&p?.sectionId===o.sectionId&&p?.lineId===o.lineId||t.forceNewOccurrence!==!0&&i&&l&&c===l.currentLength&&c>u&&p?.sectionId===o.sectionId&&p?.lineId===o.lineId)return e;let f=gg(n);f.currentLength<f.entries.length&&(f.entries=f.entries.slice(0,f.currentLength));let d=a.actions.dialogue.append===!0&&t.appendToPrevious===!0&&Jc(e.projectData,p,o);if(f.entries.push({sectionId:o.sectionId,lineId:o.lineId,...d?{appendToPrevious:!0}:{}}),f.currentLength=f.entries.length,i){for(;f.checkpointLengths.length<r.timeline.length;)f.checkpointLengths.push(f.checkpointLengths.at(-1)??0);f.checkpointLengths[r.currentIndex]=f.currentLength}return mb(e,t.savedCheckpointOccurrences,f),e},hb=({state:e})=>e.global.confirmDialog??null,zt=({state:e},{pointer:t}={})=>{let n=t??Te({state:e})?.pointer,o=Yg({state:e,pointer:n});return zg({state:e,form:o.form,pointer:n})},gb=({state:e},{pointer:t}={})=>!!zt({state:e},{pointer:t}),Ae=({state:e},{pointer:t}={})=>{let n=zt({state:e},{pointer:t});if(n)return{source:vr,formId:n.id,formKey:n.key};let o=gu({state:e,pointer:t});return o?{source:it,resourceId:o}:null},bb=({state:e,registry:t},n)=>{let{sectionId:o,lineId:a}=n,s=(Array.isArray(t?.sections)?t.sections:[]).find(u=>u.sectionId===o);if(!s)return!1;if(s.lastLineId===void 0||a===void 0)return!0;let i=ve({state:e},{sectionId:o});if(!i||!i.lines||!Array.isArray(i.lines))return s.lastLineId===a;let l=i.lines.findIndex(u=>u.id===s.lastLineId),c=i.lines.findIndex(u=>u.id===a);return l===-1||c===-1?s.lastLineId===a:c<=l},ji=({registry:e},t)=>{let{resourceId:n}=t;return!!(Array.isArray(e?.resources)?e.resources:[]).find(r=>r.resourceId===n)},Ni=({state:e},t)=>bb({state:e,registry:e.global.accountViewedRegistry},t),Ib=({state:e},t)=>ji({registry:e.global.accountViewedRegistry},t),Ft=(e,t)=>!ji({registry:e.global.accountViewedRegistry},{resourceId:t.imageId}),Di=e=>e.groups.length===0?0:Math.ceil(e.groups.length/e.pageSize),Li=(e,t)=>{let n=Di(e);if(n===0)return 0;let o=Number.isInteger(t?.pageIndex)?t.pageIndex:0;return Math.min(Math.max(o,0),n-1)},fi=(e,t,n,o)=>{for(let a=n+o;a>=0&&a<t.length;a+=o)if(!Ft(e,t[a]))return t[a]},wb=({state:e})=>{let t=e.projectData?.resources?.imageGallery;return t===void 0?void 0:V(t)},du=({state:e})=>{let t=e.projectData?.resources?.imageGallery;if(t===void 0)return null;let n=e.global.imageGalleryNavigation??ki(),o=Di(t),a=Li(t,n),r=a*t.pageSize,s=t.groups.slice(r,r+t.pageSize).map(l=>({groupId:l.id,locked:Ft(e,l.variants[0]),variants:l.variants.map(c=>({variantId:c.id,imageId:c.imageId,locked:Ft(e,c)}))})),i=null;if(typeof n.groupId=="string"&&typeof n.variantId=="string"){let l=t.groups.findIndex(d=>d.id===n.groupId),c=t.groups[l],u=c?.variants.findIndex(d=>d.id===n.variantId),p=u===void 0||u<0?void 0:c.variants[u],f=l<0?-1:Math.floor(l/t.pageSize);p&&f===a&&!Ft(e,p)&&(i={groupId:c.id,variantId:p.id,imageId:p.imageId,canMoveToPreviousVariant:fi(e,c.variants,u,-1)!==void 0,canMoveToNextVariant:fi(e,c.variants,u,1)!==void 0})}return{pageGroups:s,selection:i,pagination:{pageIndex:a,pageCount:o,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<o}}},Mi=(e,t)=>!ji({registry:e.global.accountViewedRegistry},{resourceId:t.soundId}),Vi=e=>e.tracks.length===0?0:Math.ceil(e.tracks.length/e.pageSize),qi=(e,t)=>{let n=Vi(e);if(n===0)return 0;let o=Number.isInteger(t?.pageIndex)?t.pageIndex:0;return Math.min(Math.max(o,0),n-1)},mi=(e,t,n,o)=>{for(let a=n+o;a>=0&&a<t.length;a+=o)if(!Mi(e,t[a]))return t[a]},fu=e=>({trackId:e.id,soundId:e.soundId,title:e.title,artist:e.artist??null,album:e.album??null,description:e.description??null,coverImageId:e.coverImageId??null}),kb=(e,t)=>({...fu(t),locked:Mi(e,t)}),Tc=e=>{let t=Math.floor(e/1e3),n=t%60,o=Math.floor(t/60);if(o<60)return`${o}:${String(n).padStart(2,"0")}`;let a=Math.floor(o/60),r=o%60;return`${a}:${String(r).padStart(2,"0")}:${String(n).padStart(2,"0")}`},vb=({state:e})=>{let t=e.projectData?.resources?.musicRoom;return t===void 0?void 0:V(t)},mu=({state:e})=>{let t=e.projectData?.resources?.musicRoom;if(t===void 0)return null;let n=e.global.musicRoomPlayer??Kn(),o=Vi(t),a=qi(t,n),r=a*t.pageSize,s=t.tracks.slice(r,r+t.pageSize).map(u=>kb(e,u)),i=t.tracks.findIndex(u=>u.id===n.trackId),l=t.tracks[i],c=l?{...fu(l),canPlayPreviousTrack:mi(e,t.tracks,i,-1)!==void 0,canPlayNextTrack:mi(e,t.tracks,i,1)!==void 0}:null;return{pageTracks:s,selection:c,playback:c?{status:n.status,readiness:n.readiness,positionMs:n.positionMs,durationMs:n.durationMs,positionText:Tc(n.positionMs),durationText:n.durationMs===null?null:Tc(n.durationMs),canPlay:n.status!=="playing",canPause:n.status==="playing",canSeek:n.readiness==="ready"&&n.durationMs!==null}:null,pagination:{pageIndex:a,pageCount:o,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<o}}},Fi=e=>e.replays.length===0?0:Math.ceil(e.replays.length/e.pageSize),Ui=(e,t)=>{let n=Fi(e);if(n===0)return 0;let o=Number.isInteger(t?.pageIndex)?t.pageIndex:0;return Math.min(Math.max(o,0),n-1)},Ab=({state:e})=>{let t=e.projectData?.resources?.sceneReplay;return t===void 0?void 0:V(t)},Pb=({state:e})=>ye(e)!==null,xb=({state:e})=>{let t=ye(e);return t?{sceneId:t.sceneReplay.sceneId,entryId:t.sceneReplay.entryId}:null},yu=(e,t)=>e.global.accountReplayRegistry?.sceneIds?.includes(t)===!0,hu=({state:e})=>{let t=e.projectData?.resources?.sceneReplay;if(t===void 0)return null;let n=e.global.sceneReplayNavigation??Pi(),o=Fi(t),a=Ui(t,n),r=a*t.pageSize,s=t.replays.slice(r,r+t.pageSize).map(l=>({sceneId:l.sceneId,title:l.title,thumbnailImageId:l.thumbnailImageId,locked:!yu(e,l.sceneId)})),i=ye(e);return{isActive:i!==null,activeSceneId:i?.sceneReplay.sceneId??null,pageReplays:s,pagination:{pageIndex:a,pageCount:o,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<o}}},Eb=({state:e})=>e.global.nextLineConfig,gu=({state:e,pointer:t}={})=>{let n=t??Te({state:e})?.pointer;if(!n)return;let o=n?.sectionId,a=n?.lineId,s=ve({state:e},{sectionId:o})?.lines||[],i=s.findIndex(c=>c.id===a);if(i<0)return;let l;for(let c of s.slice(0,i+1)){let u=c?.actions;if(u?.cleanAll&&(l=void 0),!u||!Object.prototype.hasOwnProperty.call(u,"choice")){l=void 0;continue}let p=u.choice;if(p?.resourceId){l=p.resourceId;continue}p?.animations||(l=void 0)}return l},bu=({state:e})=>!!gu({state:e}),Sb=({state:e})=>structuredClone(e),Ob=({state:e})=>V(e.projectData.resources?.achievements??{}),Rb=({state:e},t)=>{let n=e.projectData.resources?.achievements?.[t?.resourceId];return n===void 0?void 0:V(n)},Iu=({state:e})=>e.global.saveSlots,Cb=({state:e},t)=>{let n=t?.slotId,o=Br(n);return Object.prototype.hasOwnProperty.call(e.global.saveSlots??{},o)?e.global.saveSlots[o]:void 0},wu=({state:e})=>V(e.global.localizationPackages),Bi=({state:e})=>gr(e),$b=({state:e},t)=>Xe(e,t?.runtimeId),Yi=({state:e})=>{let t={...e.global?.variables??{},...Pr(e)?.variables??{}};return Qr({variables:t,runtime:gr(e),variableConfigs:e.projectData.resources?.variables??{}})},Te=({state:e})=>{let t=Array.isArray(e.contexts)?e.contexts:[],n=t[t.length-1];if(n)return{currentPointerMode:"read",pointer:n.pointers?.read}},ve=({state:e},t)=>{let{sectionId:n}=t;return ar(e.projectData,n).section},Gt=({state:e})=>{let t=Te({state:e});if(!t?.pointer)return;let{sectionId:n,lineId:o}=t.pointer,a=ve({state:e},{sectionId:n});if(!(!a?.lines||!Array.isArray(a.lines)))return a.lines.find(r=>r.id===o)},ku=({state:e})=>{let{sectionId:t,lineId:n}=Te({state:e}).pointer,a=ve({state:e},{sectionId:t})?.lines||[],r=a.findIndex(c=>c.id===n),i=a.slice(0,r+1).map(c=>{let u=c.actions||{},p={};return Object.keys(u).forEach(f=>{p[f]=u[f]}),p});return Mr(i)},vu=e=>{let t=Gt({state:e})?.actions?.dialogue;if(t?.clear===!0||!Array.isArray(t?.content))return"";let n=Qr({variables:{...e.global?.variables??{},...Pr(e)?.variables??{}},runtime:gr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1});return t.content.map(o=>`${et(o?.text,{variables:n})??""}`).join("")},lr=({state:e})=>ci({text:vu(e),baseDelay:Xe(e,"autoForwardDelay"),speed:Xe(e,"autoForwardSpeed")}),_b=({state:e})=>{let t=Au({state:e}),o=Gt({state:e})?.actions??{},a=Mr([t??{},o]);return So(t??{},a??{})},Tb=({state:e},{sectionId:t})=>{let n=ve({state:e},{sectionId:t});if(!n?.lines)return[];let o=[],a={};for(let r of n.lines){let s=r.actions||{},i=Mr([a,s]),l=So(a,i);o.push({id:r.id,changes:l,presentationState:i}),a=Oo(i)}return o},jb=({state:e},{sectionId:t,includePresentationState:n=!1})=>{let o=Tb({state:e},{sectionId:t});return n?{lines:o}:{lines:o.map(({presentationState:a,...r})=>r)}},Au=({state:e})=>{let{sectionId:t,lineId:n}=Te({state:e}).pointer,a=ve({state:e},{sectionId:t})?.lines||[],r=a.findIndex(l=>l.id===n);if(r<=0)return null;let i=a.slice(0,r).map(l=>{let c=l.actions||{},u={};return Object.keys(c).forEach(p=>{u[p]=c[p]}),u});return Oo(Mr(i))},zi=({state:e},{slotsPerPage:t=6}={})=>{let a=((Bi({state:e}).saveLoadPagination??1)-1)*t+1,r=[];for(let s=0;s<t;s++){let i=a+s,l=e.global.saveSlots&&e.global.saveSlots[Br(i)]||{};r.push({...l,slotId:i})}return{saveSlots:r}},Nb=Iu,Db=zi,Lb=e=>{let n=e.contexts?.[e.contexts.length-1]?.rollback;return!n||!Array.isArray(n.timeline)||typeof n.currentIndex!="number"?!1:n.currentIndex>=0&&n.currentIndex<n.timeline.length-1},Mb=({state:e},t={})=>{let n=ku({state:e}),o=Au({state:e}),a=Gt({state:e})?.actions??{},r=e.global.pendingScreenTransition,s=r?.animations?{...a,screen:V(r)}:a,i=r?.animations&&o===null?{}:o,{sectionId:l}=Te({state:e}).pointer,{sceneId:c}=ar(e.projectData,l),u={...Bi({state:e}),localizationPackages:wu({state:e})},p=t?.activePersistentAnimations??[],f=t?.restoredPersistentAnimations??[],d=zt({state:e}),m=bu({state:e}),y=du({state:e}),g=mu({state:e}),h=hu({state:e}),w=Yi({state:e}),{saveSlots:b}=zi({state:e}),E=Lb(e);return cc({presentationState:n,previousPresentationState:i,currentLineActions:s,resources:e.projectData.resources,currentSceneId:c,screen:e.projectData.screen,dialogueUIHidden:u.dialogueUIHidden,autoMode:u.autoMode,skipMode:u.skipMode,isChoiceVisible:m,isFormVisible:!!d,canRollback:Gu({state:e}),skipOnlyViewedLines:!u.skipUnseenText,isLineCompleted:u.isLineCompleted,skipTransitionsAndAnimations:!!u.skipTransitionsAndAnimations||E,overlayStack:e.global.overlayStack,confirmDialog:e.global.confirmDialog,form:d,dialogueHistory:pu({state:e}),saveSlots:b,variables:w,runtime:u,activePersistentAnimations:p,restoredPersistentAnimations:f,imageGallery:y,musicRoom:g,sceneReplay:h,musicRoomPlayer:V(e.global.musicRoomPlayer)})},Vb=({state:e},t)=>(e.global.confirmDialog=Lg(t),e.global.pendingEffects.push({name:"render"}),e),qb=({state:e})=>(e.global.confirmDialog&&(lt(e),e.global.pendingEffects.push({name:"render"})),e),Fb=({state:e,rollbackActionBatchStack:t},n)=>(e.global.overlayStack.push(n),e.global.pendingEffects.push({name:"render"}),Ke(e,"pushOverlay",n,t),e),Ub=({state:e,rollbackActionBatchStack:t})=>(e.global.overlayStack.pop(),e.global.pendingEffects.push({name:"render"}),Ke(e,"popOverlay",void 0,t),e),Bb=({state:e,rollbackActionBatchStack:t},n)=>(e.global.overlayStack.length>0&&(e.global.overlayStack[e.global.overlayStack.length-1]=n),e.global.pendingEffects.push({name:"render"}),Ke(e,"replaceLastOverlay",n,t),e),Yb=({state:e,rollbackActionBatchStack:t})=>(e.global.overlayStack=[],lt(e),ct(e),e.global.pendingEffects.push({name:"render"}),Ke(e,"clearOverlays",void 0,t),e),zb=(e,{activeInteraction:t})=>{e.global.autoMode&&e.global.pendingEffects.push({name:"clearAutoNextTimer"}),t&&e.global.skipMode&&e.global.pendingEffects.push({name:"clearSkipNextTimer"}),e.global.nextLineConfig?.auto?.enabled&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})},Ht=(e,t,{screenTransition:n}={})=>{e.global.isLineCompleted=!1,Vg(e,n),ct(e);let o=Ae({state:e},{pointer:t}),a=o?.source===it,r=o?.source===vr;zb(e,{activeInteraction:o});let s=ye(e),i={name:"handleLineActions"};if(typeof s?.sceneReplay?.sceneId=="string"){let l=Lc(e);s.sceneReplay.entryId=l,i.payload={sceneReplaySceneId:s.sceneReplay.sceneId,entryId:l}}return e.global.pendingEffects.push(i),{isChoiceVisible:a,isFormVisible:r,activeInteraction:o}},Zn=(e,t,n)=>{!(t?.source===it||t?.source===vr)||n||!e.global.skipMode||e.global.pendingEffects.push({name:"startSkipNextTimer"})},Pu=({state:e})=>(Ae({state:e})||(e.global.skipMode&&(e.global.skipMode=!1,e.global.pendingEffects.push({name:"clearSkipNextTimer"})),e.global.autoMode=!0,e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.isLineCompleted&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:lr({state:e})}}),e.global.pendingEffects.push({name:"render"})),e),Xt=({state:e})=>(e.global.autoMode=!1,e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.pendingEffects.push({name:"render"}),e),Gb=({state:e})=>{let t=e.global.autoMode;return Ae({state:e})&&!t||(t?Xt({state:e}):Pu({state:e})),e},xu=({state:e})=>(Ae({state:e})||(e.global.autoMode&&(e.global.autoMode=!1,e.global.pendingEffects.push({name:"clearAutoNextTimer"})),e.global.skipMode=!0,e.global.pendingEffects.push({name:"clearSkipNextTimer"}),e.global.pendingEffects.push({name:"startSkipNextTimer"}),e.global.pendingEffects.push({name:"render"})),e),Ar=({state:e})=>(e.global.skipMode=!1,e.global.pendingEffects.push({name:"clearSkipNextTimer"}),e.global.pendingEffects.push({name:"render"}),e),Hb=({state:e})=>{let t=cu({state:e});return Ae({state:e})&&!t||(t?Ar({state:e}):xu({state:e})),e},es=({state:e,rollbackActionBatchStack:t})=>(e.global.dialogueUIHidden=!1,e.global.pendingEffects.push({name:"render"}),Ke(e,"showDialogueUI",void 0,t),e),Eu=({state:e,rollbackActionBatchStack:t})=>(e.global.dialogueUIHidden=!0,e.global.pendingEffects.push({name:"render"}),Ke(e,"hideDialogueUI",void 0,t),e),Xb=e=>{let{state:t}=e;return uu({state:t})?es(e):Eu(e),t},Er=(e,t,n)=>(_i(e,t,n),ou(e),e.global.pendingEffects.push({name:"render"}),e),Wt=(e,t,n,o,a)=>{let r=_i(e,t,n);return e.global.pendingEffects.push({name:"render"}),Ke(e,o,{value:r},a),e},Wb=({state:e},t)=>Er(e,"dialogueTextSpeed",t?.value),Kb=({state:e},t)=>(Er(e,"autoForwardDelay",t?.value),e.global.autoMode&&e.global.isLineCompleted&&!Ae({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:lr({state:e})}}),e),Jb=({state:e},t)=>(Er(e,"autoForwardSpeed",t?.value),e.global.autoMode&&e.global.isLineCompleted&&!Ae({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:lr({state:e})}}),e),Qb=({state:e},t)=>Er(e,"skipUnseenText",t?.value),Zb=({state:e},t)=>Er(e,"skipTransitionsAndAnimations",t?.value),eI=({state:e},t)=>Er(e,"soundVolume",t?.value),rI=({state:e},t)=>Er(e,"musicVolume",t?.value),tI=({state:e},t)=>Er(e,"muteAll",t?.value),yi=({state:e,rollbackActionBatchStack:t},n)=>Wt(e,"saveLoadPagination",n?.value,"setSaveLoadPagination",t),hi=({state:e,rollbackActionBatchStack:t})=>{let n=Xe(e,"saveLoadPagination")+1;return Wt(e,"saveLoadPagination",n,"incrementSaveLoadPagination",t),e},gi=({state:e,rollbackActionBatchStack:t})=>{let n=Xe(e,"saveLoadPagination")-1;return Wt(e,"saveLoadPagination",n,"decrementSaveLoadPagination",t),e},bi=({state:e,rollbackActionBatchStack:t},n)=>Wt(e,"menuPage",n?.value,"setMenuPage",t),Ii=({state:e,rollbackActionBatchStack:t},n)=>Wt(e,"menuEntryPoint",n?.value,"setMenuEntryPoint",t),nI=({state:e})=>(e.global.pendingEffects=[],e),sI=({state:e},t)=>(e.global.pendingEffects.push(t),e),oI=({state:e},t)=>{if(ye(e))return e;let n=t?.resourceId;return Mc(e,n),e.global.pendingEffects.push({name:"completeAchievement",payload:{resourceId:n}}),e},iI=({state:e},t)=>{if(ye(e))return e;let n=t?.resourceId,o=Mc(e,n);if(o.type!=="number")throw new Error(`Achievement resource "${n}" does not support numeric progress`);let a=t?.current;if(!Number.isInteger(a)||a<0)throw new Error(`Achievement progress for "${n}" must be a non-negative integer`);if(!Number.isInteger(o.target)||o.target<1)throw new Error(`Achievement resource "${n}" must have a positive integer target`);let r=Math.min(a,o.target);return e.global.pendingEffects.push({name:"setAchievementProgress",payload:{resourceId:n,current:r,target:o.target,completed:r>=o.target}}),e},Su=e=>e?.lines?.[0],Ou=(e,{sectionId:t,resetStoryState:n=!1,screen:o})=>{let a=!!Zc(o),r=ve({state:e},{sectionId:t});if(!r)return console.warn(`Section not found: ${t}`),e;let s=Su(r);if(!s)return console.warn(`Section ${t} has no lines`),e;if(n&&!Zg(e,{queueRender:!a}))return e;let i=Ae({state:e});n&&e.global.skipMode&&Ar({state:e});let l=e.contexts?.[e.contexts.length-1];if(l){let u=ut(l),p=u.read;n||Ur(e,{sectionId:p?.sectionId,lineId:p?.lineId}),l.rollback||xr(l,{compatibilityAnchor:!0}),u.read={sectionId:t,lineId:s.id},n?l.rollback=Ut({pointer:u.read}):Qn(e,{sectionId:t,lineId:s.id})}let{activeInteraction:c}=Ht(e,l?.pointers?.read,{screenTransition:o});return Zn(e,i,c),e},aI=({state:e},t)=>{if(ye(e))throw new Error("Cannot reset the story while a scene replay is active");return Ou(e,{sectionId:t?.sectionId,resetStoryState:!0,screen:t?.screen})},Ru=e=>(e.global.accountViewedRegistry=dg(e.global.accountViewedRegistry),e.global.accountViewedRegistry),rs=(e,t)=>{!Array.isArray(t)||t.length===0||e.global.pendingEffects.push({name:"applyScopedDataUpdates",payload:{updates:t.map(n=>({scope:n.scope,path:n.path,op:n.op,value:V(n.value)}))}})},Cu=(e,t)=>{rs(e,[{scope:"account",path:"viewedRegistry",op:"markViewed",value:{sections:(Array.isArray(t?.sections)?t.sections:[]).map(n=>({sectionId:n.sectionId,...n.lastLineId===void 0?{}:{lineId:n.lastLineId}})),resources:Array.isArray(t?.resources)?t.resources:[]}}])},lI=(e,t,{sectionId:n,lineId:o})=>{if(!n||!o)return!1;let a=M(t)?t:{};Array.isArray(a.sections)||(a.sections=[]);let r=a.sections.find(s=>s.sectionId===n);if(r){if(r.lastLineId===void 0)return!1;let s=ve({state:e},{sectionId:n});if(s?.lines){let i=s.lines.findIndex(c=>c.id===r.lastLineId),l=s.lines.findIndex(c=>c.id===o);if(i===-1||l>i)return r.lastLineId===o?!1:(r.lastLineId=o,!0)}else return r.lastLineId===o?!1:(r.lastLineId=o,!0);return!1}else return a.sections.push({sectionId:n,lastLineId:o}),!0},Ur=(e,t)=>{if(ye(e)||e.global.accountViewedRegistry===void 0)return;lI(e,Ru(e),t)&&Cu(e,{sections:[{sectionId:t.sectionId,lastLineId:t.lineId}],resources:[]})},cI=({state:e},t)=>(Ur(e,t),e.global.pendingEffects.push({name:"render"}),e),uI=({state:e},t)=>{if(ye(e))return e;let{resourceId:n}=t;if(e.global.accountViewedRegistry!==void 0){let o=Ru(e);o.resources.find(r=>r.resourceId===n)||(o.resources.push({resourceId:n}),Cu(e,{sections:[],resources:[{resourceId:n}]}))}return e.global.pendingEffects.push({name:"render"}),e},Je=(e,t,n)=>{if(!M(t))throw new Error(`${e} payload must be an object`);Object.keys(t).forEach(o=>{if(!n.has(o))throw new Error(`${e} payload contains unsupported property "${o}"`)})},wi=(e,t,n)=>{if(typeof n!="string"||n.length===0)throw new Error(`${e} requires a non-empty ${t}`)},ts=(e,t)=>{let n=e.global.imageGalleryNavigation;n.groupId===t.groupId&&n.variantId===t.variantId&&n.pageIndex===t.pageIndex||(e.global.imageGalleryNavigation=t,e.global.pendingEffects.push({name:"render"}))},pI=({state:e},t)=>{let n="showImageGalleryVariant";Je(n,t,og),wi(n,"groupId",t.groupId),Object.prototype.hasOwnProperty.call(t,"variantId")&&wi(n,"variantId",t.variantId);let o=e.projectData?.resources?.imageGallery;if(o===void 0)return e;let a=o.groups.findIndex(i=>i.id===t.groupId),r=o.groups[a];if(!r)return e;let s=t.variantId===void 0?r.variants[0]:r.variants.find(i=>i.id===t.variantId);return!s||Ft(e,s)||ts(e,{groupId:r.id,variantId:s.id,pageIndex:Math.floor(a/o.pageSize)}),e},$u=(e,t,n,o)=>{Je(o,t,vi);let a=e.projectData?.resources?.imageGallery;if(a===void 0)return e;let r=e.global.imageGalleryNavigation;if(typeof r.groupId!="string"||typeof r.variantId!="string")return e;let s=a.groups.find(c=>c.id===r.groupId),i=s?.variants.findIndex(c=>c.id===r.variantId);if(!s||i===void 0||i<0)return e;let l=fi(e,s.variants,i,n);return l&&ts(e,{...r,variantId:l.id}),e},dI=({state:e},t)=>$u(e,t,-1,"moveToPreviousImageGalleryVariant"),fI=({state:e},t)=>$u(e,t,1,"moveToNextImageGalleryVariant"),mI=({state:e},t)=>{if(Je("clearImageGallerySelection",t,vi),e.projectData?.resources?.imageGallery===void 0)return e;let o=e.global.imageGalleryNavigation;return ts(e,{groupId:null,variantId:null,pageIndex:o.pageIndex}),e},_u=(e,t)=>{let n=e.projectData?.resources?.imageGallery;if(n===void 0)return e;let o=Di(n);if(t>=o)return e;let a=e.global.imageGalleryNavigation,r=Li(n,a);return t===r||ts(e,{groupId:null,variantId:null,pageIndex:t}),e},yI=({state:e},t)=>{if(Je("moveToImageGalleryPage",t,ig),!Number.isInteger(t.pageIndex)||t.pageIndex<0)throw new Error("moveToImageGalleryPage requires a non-negative integer pageIndex");return _u(e,t.pageIndex)},Tu=(e,t,n,o)=>{Je(o,t,vi);let a=e.projectData?.resources?.imageGallery;if(a===void 0)return e;let s=Li(a,e.global.imageGalleryNavigation)+n;return s<0?e:_u(e,s)},hI=({state:e},t)=>Tu(e,t,1,"moveToNextImageGalleryPage"),gI=({state:e},t)=>Tu(e,t,-1,"moveToPreviousImageGalleryPage"),cr=(e,t,n)=>{if(!M(t))throw new Error(`${e} payload must be an object`);Object.keys(t).forEach(o=>{if(!n.has(o))throw new Error(`${e} payload contains unsupported property "${o}"`)})},bI=(e,t)=>{if(typeof t!="string"||t.length===0)throw new Error(`${e} requires a non-empty trackId`)},ze=e=>{e.global.pendingEffects.push({name:"render"})},ju=(e,t)=>{let n=e.projectData.resources.musicRoom,o=e.global.musicRoomPlayer,a=o.trackId!==null,r=o.trackId===t.id,s=o.bgmPlayback;a||(s={commandId:Jn(e),operation:"pause"});let i=Yt(e,"play",0),l=n.tracks.indexOf(t),c=r?o.durationMs:null;e.global.musicRoomPlayer={trackId:t.id,pageIndex:Math.floor(l/n.pageSize),status:"playing",readiness:c===null?"loading":"ready",positionMs:0,durationMs:c,playback:i,seekFallback:null,bgmPlayback:s},ze(e)},II=({state:e},t)=>{let n="playMusicRoomTrack";cr(n,t,ag),bI(n,t.trackId);let a=e.projectData?.resources?.musicRoom?.tracks.find(r=>r.id===t.trackId);return!a||Mi(e,a)||ju(e,a),e},wI=({state:e},t)=>{cr("playMusicRoom",t,at);let o=e.global.musicRoomPlayer;if(o.trackId===null||o.status==="playing")return e;let a=o.status==="ended",r=o.readiness==="error",s=o.status==="paused"&&!r?"resume":"play",i=a?0:o.positionMs;return o.playback=Yt(e,s,s==="play"?i:void 0),o.seekFallback=null,o.status="playing",o.positionMs=i,r&&(o.readiness=o.durationMs===null?"loading":"ready"),ze(e),e},kI=({state:e},t)=>{cr("pauseMusicRoom",t,at);let o=e.global.musicRoomPlayer;return o.trackId===null||o.status!=="playing"||(o.playback=Yt(e,"pause"),o.seekFallback=null,o.status="paused",ze(e)),e},vI=({state:e},t)=>{cr("stopMusicRoom",t,at);let o=e.global.musicRoomPlayer;return o.trackId===null||o.status==="stopped"&&o.positionMs===0||(o.playback=Yt(e,"stop"),o.seekFallback=null,o.status="stopped",o.positionMs=0,ze(e)),e},AI=({state:e},t)=>{if(cr("seekMusicRoom",t,lg),typeof t.positionMs!="number"||!Number.isFinite(t.positionMs)||t.positionMs<0)throw new Error("seekMusicRoom requires a finite non-negative positionMs");let o=e.global.musicRoomPlayer;if(o.trackId===null||o.readiness!=="ready"||o.durationMs===null||t.positionMs>o.durationMs)return e;let a=Yt(e,"seek",t.positionMs);return o.seekFallback={commandId:a.commandId,status:o.status,positionMs:o.positionMs},o.playback=a,o.positionMs=t.positionMs,t.positionMs===o.durationMs?o.status="ended":o.status==="ended"&&(o.status="stopped"),ze(e),e},Nu=(e,t,n,o)=>{cr(o,t,at);let a=e.projectData?.resources?.musicRoom,r=e.global.musicRoomPlayer;if(!a||r.trackId===null)return e;let s=a.tracks.findIndex(l=>l.id===r.trackId);if(s<0)return e;let i=mi(e,a.tracks,s,n);return i&&ju(e,i),e},PI=({state:e},t)=>Nu(e,t,-1,"playPreviousMusicRoomTrack"),xI=({state:e},t)=>Nu(e,t,1,"playNextMusicRoomTrack"),EI=({state:e},t)=>{cr("clearMusicRoomSelection",t,at);let o=e.global.musicRoomPlayer;if(o.trackId===null)return e;let a=o.pageIndex,r={commandId:Jn(e),operation:"resume"};return e.global.musicRoomPlayer={...Kn({bgmPlayback:r}),pageIndex:a},ze(e),e},Du=(e,t)=>{let n=e.projectData?.resources?.musicRoom;if(!n||t>=Vi(n))return e;let o=e.global.musicRoomPlayer,a=qi(n,o);return t===a||(o.pageIndex=t,ze(e)),e},SI=({state:e},t)=>{if(cr("moveToMusicRoomPage",t,cg),!Number.isInteger(t.pageIndex)||t.pageIndex<0)throw new Error("moveToMusicRoomPage requires a non-negative integer pageIndex");return Du(e,t.pageIndex)},Lu=(e,t,n,o)=>{cr(o,t,at);let a=e.projectData?.resources?.musicRoom;if(!a)return e;let r=qi(a,e.global.musicRoomPlayer)+n;return r<0?e:Du(e,r)},OI=({state:e},t)=>Lu(e,t,1,"moveToNextMusicRoomPage"),RI=({state:e},t)=>Lu(e,t,-1,"moveToPreviousMusicRoomPage"),Fr=e=>{let t=ye(e);if(!t)return!1;if(e.contexts.length<2)throw new Error("Scene replay context has no caller context to restore");let n=V(t.sceneReplay.returnState),o=t.sceneReplay.sceneId;return e.global.pendingEffects=e.global.pendingEffects.filter(a=>a?.name!=="handleLineActions"||a?.payload?.sceneReplaySceneId!==o),e.contexts.pop(),Kg(e,n),e.global.pendingEffects.push({name:"render"}),!0},CI=({state:e},t)=>{let n="startSceneReplay";if(Je(n,t,ug),wi(n,"sceneId",t.sceneId),ye(e))throw new Error("Cannot start a scene replay while another replay is active");let a=e.projectData?.resources?.sceneReplay?.replays.find(p=>p.sceneId===t.sceneId);if(!a||!yu(e,a.sceneId))return e;let r=e.projectData.story.scenes[a.sceneId],s=r?.initialSectionId,i=r?.sections?.[s],l=i?.initialLineId??i?.lines?.[0]?.id;if(!i||!l||!i.lines.some(p=>p.id===l))throw new Error(`Scene replay scene "${a.sceneId}" has an invalid initial section`);let c=Xg(e);Wg(e);let u=Ti({pointer:{sceneId:a.sceneId,sectionId:s,lineId:l},projectData:e.projectData,kind:"sceneReplay",sceneReplay:{sceneId:a.sceneId,entryId:0,finishOnNextAdvance:!1,exitOnLineCompleted:!1,returnState:c}});return su(e,u),e.contexts.push(u),Ht(e,u.pointers.read),e},Mu=({state:e},t)=>{Je("finishSceneReplay",t,Ai);let o=ye(e);if(o)return o.sceneReplay.finishOnNextAdvance=!0,e;if(Pr(e)?.rollback?.isRestoring===!0)return e;let r=Te({state:e})?.pointer,{sceneId:s}=ar(e.projectData,r?.sectionId);return!(typeof s=="string"&&e.projectData?.resources?.sceneReplay?.replays?.some(l=>l.sceneId===s))||(e.global.accountReplayRegistry=fg(e.global.accountReplayRegistry),e.global.accountReplayRegistry.sceneIds.includes(s))||(e.global.accountReplayRegistry.sceneIds.push(s),rs(e,[{scope:"account",path:"replayRegistry",op:"unlock",value:{sceneIds:[s]}}]),e.global.pendingEffects.push({name:"render"})),e},$I=({state:e},t)=>(Je("exitSceneReplay",t,Ai),Fr(e),e),Vu=(e,t)=>{let n=e.projectData?.resources?.sceneReplay;if(!n||t>=Fi(n))return e;let o=Ui(n,e.global.sceneReplayNavigation);return t===o||(e.global.sceneReplayNavigation.pageIndex=t,e.global.pendingEffects.push({name:"render"})),e},_I=({state:e},t)=>{if(Je("moveToSceneReplayPage",t,pg),!Number.isInteger(t.pageIndex)||t.pageIndex<0)throw new Error("moveToSceneReplayPage requires a non-negative integer pageIndex");return Vu(e,t.pageIndex)},qu=(e,t,n,o)=>{Je(o,t,Ai);let a=e.projectData?.resources?.sceneReplay;if(!a)return e;let r=Ui(a,e.global.sceneReplayNavigation)+n;return r<0?e:Vu(e,r)},TI=({state:e},t)=>qu(e,t,1,"moveToNextSceneReplayPage"),jI=({state:e},t)=>qu(e,t,-1,"moveToPreviousSceneReplayPage"),ns=(e,t)=>{let n=e.global.musicRoomPlayer;return!M(t)||t.id!==ng||n.trackId===null||!n.playback||t.commandId!==n.playback.commandId?null:n},Gi=e=>typeof e.positionMs=="number"&&Number.isFinite(e.positionMs)&&e.positionMs>=0&&typeof e.durationMs=="number"&&Number.isFinite(e.durationMs)&&e.durationMs>0&&e.positionMs<=e.durationMs,Fu=(e,t,n,{readiness:o=t.readiness}={})=>((t.readiness!==o||t.positionMs!==n.positionMs||t.durationMs!==n.durationMs||t.seekFallback!==null)&&(t.readiness=o,t.positionMs=n.positionMs,t.durationMs=n.durationMs,t.seekFallback=null,ze(e)),e),NI=({state:e},t)=>{let n=ns(e,t);return!n||n.readiness!=="loading"||!Gi(t)?e:Fu(e,n,t,{readiness:"ready"})},DI=({state:e},t)=>{let n=ns(e,t);return!n||n.readiness!=="ready"||!Gi(t)||n.status==="stopped"&&t.positionMs!==0||n.status==="ended"&&t.positionMs!==t.durationMs?e:Fu(e,n,t)},LI=({state:e},t)=>{let n=ns(e,t);return!n||n.readiness!=="ready"||n.status!=="playing"||!Gi(t)||t.positionMs!==t.durationMs||(n.status="ended",n.positionMs=t.positionMs,n.durationMs=t.durationMs,n.seekFallback=null,ze(e)),e},MI=({state:e},t)=>{let n=ns(e,t);if(!n||typeof t.errorCode!="string"||!sg.has(t.errorCode)||n.readiness==="error"&&n.status==="stopped")return e;if(t.errorCode==="invalid-position"){let o=n.seekFallback;if(n.playback.operation!=="seek"||o?.commandId!==t.commandId)return e;let a=n.status!==o.status||n.positionMs!==o.positionMs;return n.status=o.status,n.positionMs=o.positionMs,n.seekFallback=null,a&&ze(e),e}return n.readiness="error",n.status="stopped",n.positionMs=0,n.seekFallback=null,ze(e),e},Uu=({state:e,rollbackActionBatchStack:t},n)=>{let o=Ig(n.manual),{auto:a,applyMode:r}=n,s=e.global.nextLineConfig.auto?.enabled,i=e.global.nextLineConfig.auto?.trigger,l=e.global.nextLineConfig.auto?.delay,c=e.global.nextLineConfig?.applyMode,u=e.contexts?.[e.contexts.length-1]?.rollback?.isRestoring===!0;o&&a?(e.global.nextLineConfig={manual:o,auto:a},r!==void 0?e.global.nextLineConfig.applyMode=r:c!==void 0&&(e.global.nextLineConfig.applyMode=c)):(o&&(e.global.nextLineConfig.manual=o),a&&(e.global.nextLineConfig.auto=a),r!==void 0&&(e.global.nextLineConfig.applyMode=r));let p=e.global.nextLineConfig.auto?.enabled,f=e.global.nextLineConfig.auto?.trigger,d=e.global.nextLineConfig.auto?.delay,m=Ae({state:e});return!u&&(a!==void 0&&(p!==s||f!==i||d!==l))&&(!m&&p===!0&&(f==="fromStart"||e.global.isLineCompleted)?e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:d}}):s===!0&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})),e.global.pendingEffects.push({name:"render"}),Ke(e,"setNextLineConfig",n,t),e},VI=({state:e},t)=>{if(ye(e))throw new Error("Cannot save while a scene replay is active");let n=t?.slotId;Vc(n,"saveSlot");let{thumbnailImage:o}=t,a=t?.savedAt,r=Br(n),s=V(e.contexts);s?.forEach(c=>{ut(c),iu(c.rollback),Pg(c.rollback,e.projectData)});let i={contexts:s},l={formatVersion:Dc,slotId:Yc(n),savedAt:typeof a=="number"?a:Date.now(),image:o,state:i};return e.global.saveSlots[r]=l,e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}},{name:"render"}),e},qI=({state:e},t)=>{if(ye(e))throw new Error("Cannot load while a scene replay is active");let n=t?.slotId;Vc(n,"loadSlot");let o=Br(n),a=Object.prototype.hasOwnProperty.call(e.global.saveSlots??{},o)?e.global.saveSlots[o]:void 0;if(a){let r=Dg(a,e.projectData);e.contexts=r.state.contexts,e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,e.global.nextLineConfig=Bt(),e.global.overlayStack=[],e.global.isLineCompleted=!0,lt(e),ct(e),Ei(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"},{name:"render"})}return e},FI=({state:e},t)=>{if(ye(e))throw new Error("Cannot update project data while a scene replay is active");let{projectData:n}=t;Bc(n),Pt(n),xt(n),Et(n),Dr(n?.resources?.variables??{}),No(n);let o=Og(n),a=o?e.contexts?.map((s,i)=>Qc(V(s),n,i)):void 0,r=o?xg(e.global.saveSlots,n):void 0;if(e.projectData=n,e.global.imageGalleryNavigation=ki(),e.global.sceneReplayNavigation=Pi(),Ei(e),o){let s=n?.resources?.variables??{},{globalVariablesDefaultValues:i}=Sn(n??{});Object.prototype.hasOwnProperty.call(e.global??{},"variables")&&(e.global.variables={...i,...St(e.global.variables,s,{allowedScopes:["device","account"]})}),e.contexts=a,e.global.saveSlots=r}return lt(e),ct(e),o&&Object.keys(e.global.saveSlots??{}).length>0&&e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}}),e.global.pendingEffects.push({name:"render"}),e},UI=({state:e},t)=>{let{l10nId:n,projectData:o}=t??{};if(n!==null&&(typeof n!="string"||n.length===0))throw new Error("updateLocalizationPackage requires l10nId or null");if(!M(o))throw new Error("updateLocalizationPackage requires resolved projectData internally");return e.projectData=o,_i(e,"localizationPackageId",n),ou(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.autoMode&&e.global.isLineCompleted&&!Ae({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:lr({state:e})}}),e.global.pendingEffects.push({name:"render"}),e},BI=({state:e},t)=>{let{sectionId:n,lineId:o}=t;if(!o)return console.warn("jumpToLine requires lineId parameter"),e;let a=e.contexts[e.contexts.length-1];if(!a)return console.warn("No context available for jumpToLine"),e;let r=n||a.pointers.read?.sectionId;if(n&&!ve({state:e},{sectionId:n}))return console.warn(`Section not found: ${n}`),e;let s=ve({state:e},{sectionId:r});if(!s?.lines||!Array.isArray(s.lines))return console.warn(`Section ${r} has no lines`),e;if(!s.lines.find(p=>p.id===o))return console.warn(`Line not found: ${o} in section ${r}`),e;let l=Ae({state:e}),c=ut(a);c.read={sectionId:r,lineId:o};let{activeInteraction:u}=Ht(e,c.read);return Zn(e,l,u),e},YI=({state:e,rollbackActionBatchStack:t},n)=>{if(!e.global.nextLineConfig.manual.enabled)return e;if(e.global.dialogueUIHidden)return es({state:e,rollbackActionBatchStack:t}),e;let o=Ae({state:e});if(o?.source===it&&n?.bypassChoice!==!0||o?.source===vr&&n?._interactionSource!==vr)return e;if(!e.global.isLineCompleted){if(e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition,ye(e)?.sceneReplay.exitOnLineCompleted)return Fr(e),e;let d=Te({state:e})?.pointer,m=d?.sectionId,y=d?.lineId;m&&y&&Ur(e,{sectionId:m,lineId:y}),e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}),e.global.autoMode&&!o&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:lr({state:e})}});let g=e.global.nextLineConfig,h=ve({state:e},{sectionId:m});return Array.isArray(h?.lines)&&h.lines.at(-1)?.id===y?pi(e):g?.auto?.enabled&&!o&&g.auto.trigger!=="fromStart"&&e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:g.auto.delay}}),e.global.pendingEffects.push({name:"render"}),e}if(ye(e)?.sceneReplay.finishOnNextAdvance)return Fr(e),e;let r=Te({state:e})?.pointer,s=r?.sectionId,i=ve({state:e},{sectionId:s}),l=e.contexts[e.contexts.length-1],c=i?.lines||[],p=c.findIndex(f=>f.id===r?.lineId)+1;if(p<c.length){let f=c[p],d=!Xe(e,"skipUnseenText");if(e.global.skipMode&&d&&!Ni({state:e},{sectionId:s,lineId:f.id}))return Ar({state:e}),e;if(l&&!l.rollback&&xr(l,{compatibilityAnchor:!0}),l){let y=ut(l),g=y.read?.lineId;g&&s&&Ur(e,{sectionId:s,lineId:g}),y.read={sectionId:s,lineId:f.id}}Qn(e,{sectionId:s,lineId:f.id}),xi(e);let{activeInteraction:m}=Ht(e,{sectionId:s,lineId:f.id});Zn(e,o,m)}else{if(ye(e))return console.warn("Scene replay reached the end of a section without finishSceneReplay; exiting replay."),Fr(e),e;e.global.autoMode&&Xt({state:e}),e.global.skipMode&&Ar({state:e}),pi(e)}return e},zI=({state:e})=>{if(e.global.isLineCompleted)return e;if(e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition,ye(e)?.sceneReplay.exitOnLineCompleted)return Fr(e),e;let n=Ae({state:e});e.global.autoMode&&!n&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:lr({state:e})}});let o=Te({state:e})?.pointer,a=o?.sectionId,r=o?.lineId;a&&r&&Ur(e,{sectionId:a,lineId:r});let s=e.global.nextLineConfig;return s?.auto?.enabled&&!n&&s.auto.trigger!=="fromStart"&&e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:s.auto.delay}}),e.global.pendingEffects.push({name:"render"}),e},GI=({state:e},t)=>Ou(e,{sectionId:t?.sectionId,screen:t?.screen}),HI=({state:e,rollbackActionBatchStack:t},n)=>{let o=n?._conditionalContinuation===!0;if(e.global.dialogueUIHidden&&!o)return es({state:e,rollbackActionBatchStack:t}),e.global.autoMode&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:lr({state:e})}}),e;let a=Ae({state:e});if(a?.source===it&&n?.bypassChoice!==!0||a?.source===vr&&n?._interactionSource!==vr||a&&a.source!==it&&a.source!==vr)return e;let r=ye(e);if(r?.sceneReplay.finishOnNextAdvance)return e.global.isLineCompleted?(Fr(e),e):(r.sceneReplay.exitOnLineCompleted=!0,e);let s=Te({state:e})?.pointer,i=s?.sectionId,l=ve({state:e},{sectionId:i}),c=e.contexts[e.contexts.length-1],u=l?.lines||[],f=u.findIndex(d=>d.id===s?.lineId)+1;if(f<u.length){let d=u[f],m=!Xe(e,"skipUnseenText");if(e.global.skipMode&&m&&!Ni({state:e},{sectionId:i,lineId:d.id})&&(Ar({state:e}),!o))return e;if(c&&!c.rollback&&xr(c,{compatibilityAnchor:!0}),c){let g=ut(c),h=g.read?.lineId;h&&i&&Ur(e,{sectionId:i,lineId:h}),g.read={sectionId:i,lineId:d.id}}Qn(e,{sectionId:i,lineId:d.id}),xi(e);let{activeInteraction:y}=Ht(e,{sectionId:i,lineId:d.id});Zn(e,a,y)}else{if(ye(e))return console.warn("Scene replay reached the end of a section without finishSceneReplay; exiting replay."),Fr(e),e;e.global.autoMode&&Xt({state:e}),e.global.skipMode&&Ar({state:e}),pi(e)}return e},Hi=(e,t={})=>{let n=zt({state:e});return!n||t.formKey&&t.formKey!==n.key||t.formId&&t.formId!==n.id?null:n},XI=(e,t)=>{if(!t.variableId)throw new Error(`form field "${t.id}" requires variableId`);let n=e.projectData.resources?.variables?.[t.variableId],o=n?.scope,a=n?.type;if(Se(n))throw new Error(`Cannot update computed variable: ${t.variableId}`);if(n?.readonly===!0)throw new Error(`Cannot update readonly variable: ${t.variableId}`);if(Ot(o,t.variableId),Rt(a,"set",t.variableId),ye(e)&&o!=="context")throw new Error(`Cannot update ${o}-scoped variable "${t.variableId}" while a scene replay is active`);return{variableConfig:n,scope:o}},WI=(e,t)=>({id:e.id,key:e.key,valid:!0,values:V(t),fields:V(e.fields),fieldList:V(e.fieldList)}),KI=e=>{if(e.global.isLineCompleted)return;e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition;let t=Te({state:e})?.pointer,n=t?.sectionId,o=t?.lineId;n&&o&&Ur(e,{sectionId:n,lineId:o})},JI=({state:e},t={})=>{let n=Hi(e,t),o=t.field;if(!n?.fields?.[o])return e;let a=ru(e,n.key),r=Xn(t.value),s=n.fields[o],i=Ci(s,r);return a.values[o]=r,a.touched[o]=!0,i?a.errors[o]=i:delete a.errors[o],e.global.pendingEffects.push({name:"render"}),e},QI=({state:e,rollbackActionBatchStack:t},n={})=>{let o=Hi(e,n);if(!o)return{submitted:!1,valid:!1,reason:"inactive"};let a=ru(e,o.key);a.submitted=!0;let r={},s={};if(Object.entries(o.fields).forEach(([f,d])=>{let m=Object.prototype.hasOwnProperty.call(a.values,f)?a.values[f]:d.value,y=Ci(d,m);a.touched[f]=!0,y&&(s[f]=y),r[f]=eu(d,m)}),a.errors=s,Object.keys(s).length>0)return e.global.pendingEffects.push({name:"render"}),{submitted:!0,valid:!1,errors:V(s),form:{id:o.id,key:o.key,values:V(r)}};let i=e.contexts[e.contexts.length-1];if(i?.rollback?.isRestoring)return{submitted:!1,valid:!1,reason:"restoring"};let l=!1,c=[],u=[];Object.entries(o.fields).forEach(([f,d])=>{let{scope:m}=XI(e,d),y=m==="context"?i.variables:e.global.variables,g=r[f];y[d.variableId]=Rn(y[d.variableId],"set",g),m==="context"&&(l=!0,u.push({variableId:d.variableId,op:"set",value:g})),(m==="device"||m==="account")&&c.push({scope:m,path:`variables.${d.variableId}`,op:"set",value:V(y[d.variableId])})}),l&&Ke(e,"updateVariable",{id:"submitForm",operations:u},t),rs(e,c);let p=WI(o,r);return KI(e),delete e.global.formDrafts[o.key],e.global.pendingEffects.push({name:"render"}),{submitted:!0,valid:!0,form:p}},ZI=({state:e},t={})=>{let n=Hi(e,t);return n?(delete e.global.formDrafts?.[n.key],e.global.pendingEffects.push({name:"render"}),{cancelled:!0,form:{id:n.id,key:n.key,values:V(n.values),fields:V(n.fields),fieldList:V(n.fieldList)}}):{cancelled:!1,reason:"inactive"}},ew=({state:e,rollbackActionBatchStack:t},n)=>{let{id:o,operations:a=[]}=n;if(!o)throw new Error("updateVariable requires an id field");if(typeof o!="string"||!/^[a-zA-Z0-9]+$/.test(o))throw new Error(`updateVariable id must be alphanumeric, got: "${o}"`);let r=e.contexts[e.contexts.length-1];if(r?.rollback?.isRestoring)return e;let s=!1,i=[],l=[];return a.forEach(({variableId:c,op:u,value:p,roundTo:f})=>{let d=e.projectData.resources?.variables?.[c],m=d?.scope,y=d?.type;if(Se(d))throw new Error(`Cannot update computed variable: ${c}`);if(d?.readonly===!0)throw new Error(`Cannot update readonly variable: ${c}`);if(Ot(m,c),Rt(y,u,c),On(y,u,p,c,{roundTo:f}),ye(e)&&m!=="context")throw new Error(`Cannot update ${m}-scoped variable "${c}" while a scene replay is active`);let g=m==="context"?r.variables:e.global.variables;if(m==="context"){s=!0;let h={variableId:c,op:u,value:p};f!==void 0&&(h.roundTo=f),l.push(h)}g[c]=Rn(g[c],u,p,{roundTo:f}),(m==="device"||m==="account")&&i.push({scope:m,path:`variables.${c}`,op:"set",value:V(g[c])})}),s&&Ke(e,"updateVariable",{id:o,operations:l},t),rs(e,i),e.global.pendingEffects.push({name:"render"}),e},Ue=e=>(t,n)=>e({state:t},n),Bu=e=>({variables:Qr({variables:{...e.global?.variables??{},...Pr(e)?.variables??{}},runtime:gr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1}),runtime:gr(e)}),rw=e=>{if(!M(e))throw new Error("conditional action payload must be an object");if(!Array.isArray(e.branches))throw new Error("conditional action requires branches array");if(e.branches.length===0)throw new Error("conditional action requires at least one branch")},tw=(e,t,n)=>{if(!M(e))throw new Error(`conditional branch at index ${t} must be an object`);if(!M(e.actions))throw new Error(`conditional branch at index ${t} requires actions object`);if(!Object.prototype.hasOwnProperty.call(e,"when")&&t!==n-1)throw new Error("conditional else branch must be the last branch")},nw=(e,t,n,o)=>{rw(t);for(let a=0;a<t.branches.length;a+=1){let r=t.branches[a];if(tw(r,a,t.branches.length),!(Object.prototype.hasOwnProperty.call(r,"when")&&!At(r.when,{...Bu(e),...n?.bindings??{}}))){Xi(e,r.actions,n,[...o,"branches",String(a),"actions"]);return}}},sw=(e,t,n,o)=>{let a=n?.checkpoint;if(a?.randomOutcomeVersion!==ir)return;let r=o.join("."),s=n.randomOutcomeOrdinals,i=s.get(r)??0;s.set(r,i+1);let l=a.randomOutcomes?.find(p=>p.path===r&&p.ordinal===i);if(!l)return;if(t?.distribution?.type!==l.type)throw new Error(`recorded random outcome type does not match canonical action at ${r}`);let c=_n(V(l.result),l.type);if(c.type==="integer"){if(!Hc(t.distribution)||c.value<t.distribution.min||c.value>t.distribution.max)throw new Error(`recorded random outcome does not match canonical action at ${r}`);di(e,{id:"randomResult",operations:[{variableId:t.variableId,op:"set",value:c.value}]});return}let u=t.distribution.outcomes?.[c.outcomeIndex]?.actions;if(!M(u))throw new Error(`recorded random outcome does not match canonical action at ${r}`);Xi(e,u,n,[...o,"distribution","outcomes",String(c.outcomeIndex),"actions"])},ow={conditional:{replayLine:nw},random:{replayLine:sw},updateVariable:{recordSources:[kr],replayLine:di,replayRecorded:di,persistInSaveSlot:!0},setNextLineConfig:{replayLine:Ue(Uu)},setSaveLoadPagination:{recordSources:[kr],replayLine:Ue(yi),replayRecorded:Ue(yi),persistInSaveSlot:!0},incrementSaveLoadPagination:{recordSources:[kr],replayLine:Ue(hi),replayRecorded:Ue(hi),persistInSaveSlot:!0},decrementSaveLoadPagination:{recordSources:[kr],replayLine:Ue(gi),replayRecorded:Ue(gi),persistInSaveSlot:!0},setMenuPage:{recordSources:[kr],replayLine:Ue(bi),replayRecorded:Ue(bi),persistInSaveSlot:!0},setMenuEntryPoint:{recordSources:[kr],replayLine:Ue(Ii),replayRecorded:Ue(Ii),persistInSaveSlot:!0},finishSceneReplay:{replayLine:Ue(Mu)}},ss=e=>ow[e]??null,iw=e=>ss(e)?.persistInSaveSlot===!0,aw=(e,t)=>{let n=ss(e)?.recordSources;return Array.isArray(n)&&n.includes(t)},lw=(e,t,n)=>{ss(t)?.replayRecorded?.(e,n)},cw=(e,t,n,o,a)=>{let r=ss(t);if(!r?.replayLine)return;if(t==="conditional"||t==="random"){r.replayLine(e,n,o,a);return}let s=o?.bindings??{},i=Ct({[t]:n},{...Bu(e),...s})[t];r.replayLine(e,i)},Xi=(e,t,n,o)=>{let a=Tn(t);jn(a);for(let[r,s]of a)cw(e,r,s,n,[...o,r])},uw=e=>e?.returnable!==!1,Yu=(e,t)=>{if(t>=0)return e.currentIndex+t;let n=Math.abs(t);for(let o=e.currentIndex-1;o>=0;o-=1)if(uw(e.timeline[o])&&(n-=1,n===0))return o;return-1},zu=({state:e},t)=>{let{offset:n}=t;if(n===void 0||typeof n!="number")return console.warn("selectLineIdByOffset requires a numeric offset"),null;let o=e.contexts[e.contexts.length-1];if(!o)return null;let a=o.rollback;if(!Array.isArray(a?.timeline)||typeof a?.currentIndex!="number")return null;let r=Yu(a,n);if(r<0||r>=a.timeline.length)return null;let s=a.timeline[r];return{sectionId:s.sectionId,lineId:s.lineId}},Gu=({state:e})=>zu({state:e},{offset:-1})!==null,pw=({state:e},t)=>{let{offset:n=-1}=t;if(n>=0)throw new Error("rollbackByOffset requires a negative offset");let o=e.contexts?.[e.contexts.length-1];if(!o)return e;let a=xr(o,{compatibilityAnchor:!o.rollback}),r=Yu(a,n);return r<0||r>=a.timeline.length?e:lu(e,r)},dw=({state:e},t)=>{let{sectionId:n,lineId:o}=t,a=e.contexts[e.contexts.length-1];if(!a)throw new Error("No context available for rollbackToLine");let r=xr(a,{compatibilityAnchor:!a.rollback}),i=r.timeline.slice(0,r.currentIndex+1).findLastIndex(l=>l.sectionId===n&&l.lineId===o);if(i===-1)throw new Error(`Line ${o} not found in section ${n} rollback timeline`);return i===r.currentIndex?e:lu(e,i)},fw=()=>({lineEntryId:1,rollbackCheckpointLineEntryId:1,autoSessionId:0,skipSessionId:0,rollbackAuthoredSuppression:null}),ui=(e,t)=>{let n=e[t];if(!Number.isSafeInteger(n)||n<0)throw new RangeError(`Internal playback ${t} is invalid`);if(n===Number.MAX_SAFE_INTEGER)throw new RangeError(`Internal playback ${t} is exhausted`);return e[t]=n+1,e[t]},jc=e=>e.contexts?.[e.contexts.length-1]?.pointers?.read??null,Nc=e=>{let t=e.contexts?.[e.contexts.length-1];return Number.isInteger(t?.rollback?.currentIndex)?t.rollback.currentIndex:null},mw=(e,t)=>e?.sectionId===t?.sectionId&&e?.lineId===t?.lineId,Hu=e=>{let t=e.global?.nextLineConfig?.auto;return t?.enabled!==!0?{enabled:!1}:{enabled:!0,trigger:t.trigger==="fromStart"?"fromStart":"fromComplete",delayMs:t.delay??1e3}},Wi=e=>JSON.stringify(Hu(e)),yw=({actionName:e,args:t,state:n,previousState:o})=>{let a=jc(o),r=jc(n);if(!mw(a,r)||o.contexts?.length!==n.contexts?.length||(e==="rollbackByOffset"||e==="rollbackToLine")&&Nc(o)!==Nc(n))return!0;let s=t[0]??{};if(e==="jumpToLine"){let i=s.sectionId??a?.sectionId;return typeof s.lineId=="string"&&r?.sectionId===i&&r?.lineId===s.lineId&&n.global.isLineCompleted===!1}if(e==="sectionTransition"||e==="resetStoryAtSection"){let i=ar(n.projectData,s.sectionId).section,l=Su(i)?.id;return typeof l=="string"&&r?.sectionId===s.sectionId&&r?.lineId===l&&n.global.isLineCompleted===!1}if(e==="loadSlot"){let i=s.slotId;return Object.prototype.hasOwnProperty.call(o.global?.saveSlots??{},Br(i))}return!1},hw=({actionName:e,args:t,state:n,transactionalMetadata:o,previousState:a})=>{if(yw({actionName:e,args:t,state:n,previousState:a})){let u=ui(o,"lineEntryId");e==="rollbackByOffset"||e==="rollbackToLine"?o.rollbackAuthoredSuppression={lineEntryId:u,configKey:Wi(n)}:o.rollbackAuthoredSuppression=null,o.rollbackCheckpointLineEntryId=e==="jumpToLine"?null:u}let s=(a.contexts?.length??0)>(n.contexts?.length??0),i=e==="startAutoMode"||e==="startSkipMode"?Ae({state:a}):null;n.global.autoMode===!0&&(e==="startAutoMode"&&!i||e==="toggleAutoMode"&&a.global.autoMode!==!0||s&&a.global.autoMode!==!0)&&ui(o,"autoSessionId"),n.global.skipMode===!0&&(e==="startSkipMode"&&!i||e==="toggleSkipMode"&&a.global.skipMode!==!0||s&&a.global.skipMode!==!0)&&ui(o,"skipSessionId")},gw=({state:e,transactionalMetadata:t})=>{let n=t.rollbackAuthoredSuppression;n&&(n.lineEntryId!==t.lineEntryId||n.configKey!==Wi(e))&&(t.rollbackAuthoredSuppression=null)},bw=({state:e,playbackOwnership:t})=>{let n=Ae({state:e}),o=t.lineEntryId,a=!n&&e.global.autoMode===!0&&e.global.isLineCompleted===!0,r=!n&&e.global.skipMode===!0,s=Hu(e),i=t.rollbackAuthoredSuppression,l=!n&&s.enabled&&(s.trigger==="fromStart"||e.global.isLineCompleted===!0)&&!(i?.lineEntryId===o&&i.configKey===Wi(e)),c=a?vu(e):null;return{auto:a?{owner:{sessionId:t.autoSessionId,lineEntryId:o},delayMs:ci({text:c,baseDelay:Xe(e,"autoForwardDelay"),speed:Xe(e,"autoForwardSpeed")}),contentKey:c}:null,skip:r?{owner:{sessionId:t.skipSessionId},delayMs:80}:null,authored:l?{owner:{lineEntryId:o},delayMs:s.delayMs,trigger:s.trigger}:null}},Iw=({playbackOwnership:e})=>e.lineEntryId,Xu=(e,t={})=>{let n=ub(e),o=[],a=t.createPlaybackOwnership??fw;if(typeof a!="function")throw new TypeError("createPlaybackOwnership must be a function");return Za(n,{selectPendingEffects:db,selectSkipMode:cu,selectAutoMode:fb,selectIsChoiceVisible:bu,selectIsFormVisible:gb,selectActiveInteraction:Ae,selectActiveForm:zt,selectDialogueUIHidden:uu,selectDialogueHistory:pu,selectConfirmDialog:hb,selectIsLineAccountViewed:Ni,selectIsResourceAccountViewed:Ib,selectImageGalleryConfig:wb,selectImageGallery:du,selectMusicRoomConfig:vb,selectMusicRoom:mu,selectSceneReplayConfig:Ab,selectSceneReplay:hu,selectIsSceneReplayActive:Pb,selectActiveSceneReplayEntry:xb,selectNextLineConfig:Eb,selectSystemState:Sb,selectAchievements:Ob,selectAchievement:Rb,selectSaveSlotMap:Iu,selectSaveSlots:Nb,selectSaveSlot:Cb,selectLocalizationPackages:wu,selectRuntime:Bi,selectRuntimeValue:$b,selectAllVariables:Yi,selectCurrentPointer:Te,selectSection:ve,selectCurrentLine:Gt,selectPresentationState:ku,selectAutoForwardTimerDelay:lr,selectPresentationChanges:_b,selectSectionLineChanges:jb,selectSaveSlotPage:zi,selectCurrentPageSlots:Db,selectRenderState:Mb,selectOverlayStack:pb,selectLineIdByOffset:zu,selectCanRollback:Gu,selectRollbackCursor:rb,selectDesiredPlaybackTimers:bw,selectPlaybackLineEntryId:Iw,startAutoMode:Pu,stopAutoMode:Xt,toggleAutoMode:Gb,startSkipMode:xu,stopSkipMode:Ar,toggleSkipMode:Hb,showDialogueUI:es,hideDialogueUI:Eu,toggleDialogueUI:Xb,setDialogueTextSpeed:Wb,setAutoForwardDelay:Kb,setAutoForwardSpeed:Jb,setSkipUnseenText:Qb,setSkipTransitionsAndAnimations:Zb,setSoundVolume:eI,setMusicVolume:rI,setMuteAll:tI,setSaveLoadPagination:yi,incrementSaveLoadPagination:hi,decrementSaveLoadPagination:gi,setMenuPage:bi,setMenuEntryPoint:Ii,showConfirmDialog:Vb,hideConfirmDialog:qb,resetStoryAtSection:aI,clearPendingEffects:nI,appendPendingEffect:sI,completeAchievement:oI,setAchievementProgress:iI,beginRollbackActionBatch:sb,endRollbackActionBatch:ob,ensureRandomReplayOccurrence:ib,recordRandomOutcome:ab,markRollbackCheckpointTransient:tb,markSavedRollbackCheckpointTransient:nb,recordCurrentDialogueHistory:yb,addViewedLine:cI,addViewedResource:uI,showImageGalleryVariant:pI,moveToPreviousImageGalleryVariant:dI,moveToNextImageGalleryVariant:fI,clearImageGallerySelection:mI,moveToImageGalleryPage:yI,moveToNextImageGalleryPage:hI,moveToPreviousImageGalleryPage:gI,playMusicRoomTrack:II,playMusicRoom:wI,pauseMusicRoom:kI,stopMusicRoom:vI,seekMusicRoom:AI,playPreviousMusicRoomTrack:PI,playNextMusicRoomTrack:xI,clearMusicRoomSelection:EI,moveToMusicRoomPage:SI,moveToNextMusicRoomPage:OI,moveToPreviousMusicRoomPage:RI,musicRoomSoundReady:NI,musicRoomSoundProgress:DI,musicRoomSoundComplete:LI,musicRoomSoundError:MI,startSceneReplay:CI,finishSceneReplay:Mu,exitSceneReplay:$I,moveToSceneReplayPage:_I,moveToNextSceneReplayPage:TI,moveToPreviousSceneReplayPage:jI,setNextLineConfig:Uu,saveSlot:VI,loadSlot:qI,updateProjectData:FI,updateLocalizationPackage:UI,sectionTransition:GI,jumpToLine:BI,nextLine:YI,markLineCompleted:zI,rollbackToLine:dw,rollbackByOffset:pw,pushOverlay:Fb,popOverlay:Ub,replaceLastOverlay:Bb,clearOverlays:Yb,updateFormField:JI,submitForm:QI,cancelForm:ZI,updateVariable:ew,nextLineFromSystem:HI},{createTransactionalMetadata:a,updateTransactionalMetadata:hw,finalizeTransactionalMetadata:gw,transformActionFirstArgument:(s,i)=>({state:s,rollbackActionBatchStack:o,playbackOwnership:i}),transformSelectorFirstArgument:(s,i)=>({state:s,playbackOwnership:i})})};var ww="route-engine",kw="projectPersistence";var Ku=()=>({saveSlots:{},globalDeviceVariables:{},globalAccountVariables:{},globalRuntime:{},accountViewedRegistry:{},accountReplayRegistry:{}}),he=e=>Object.prototype.toString.call(e)==="[object Object]",Wu="variables.",vw=(e={})=>{let t=he(e)?e:{};return{sections:(Array.isArray(t.sections)?t.sections:[]).map(n=>typeof n=="string"||typeof n=="number"?{sectionId:String(n)}:!he(n)||typeof n.sectionId!="string"||n.sectionId.length===0?null:{sectionId:n.sectionId,...typeof n.lineId=="string"?{lineId:n.lineId}:{}}).filter(Boolean),resources:(Array.isArray(t.resources)?t.resources:[]).map(n=>typeof n=="string"||typeof n=="number"?{resourceId:String(n)}:!he(n)||typeof n.resourceId!="string"||n.resourceId.length===0?null:{resourceId:n.resourceId}).filter(Boolean)}},Aw=(e={})=>{let t=he(e)?e:{};return{sections:(Array.isArray(t.sections)?t.sections:[]).map(n=>typeof n=="string"||typeof n=="number"?{sectionId:String(n)}:!he(n)||typeof n.sectionId!="string"||n.sectionId.length===0?null:{sectionId:n.sectionId,...typeof n.lastLineId=="string"?{lastLineId:n.lastLineId}:{}}).filter(Boolean),resources:(Array.isArray(t.resources)?t.resources:[]).map(n=>typeof n=="string"||typeof n=="number"?{resourceId:String(n)}:!he(n)||typeof n.resourceId!="string"||n.resourceId.length===0?null:{resourceId:n.resourceId}).filter(Boolean)}},Pw=(e,t)=>{let n=Aw(e),o=vw(t),a=n.sections.map(s=>({...s})),r=n.resources.map(s=>({...s}));return o.sections.forEach(s=>{let i=a.find(l=>l.sectionId===s.sectionId);if(!i){a.push({sectionId:s.sectionId,...s.lineId===void 0?{}:{lastLineId:s.lineId}});return}if(i.lastLineId!==void 0){if(s.lineId===void 0){delete i.lastLineId;return}i.lastLineId=s.lineId}}),o.resources.forEach(s=>{r.find(l=>l.resourceId===s.resourceId)||r.push({...s})}),{sections:a,resources:r}},xw=(e={})=>{let t=he(e)?e:{},n=Array.isArray(t.sceneIds)?t.sceneIds:[];return{sceneIds:[...new Set(n.filter(o=>typeof o=="string"&&o.length>0))]}},Ew=(e,t)=>{let n=xw(e),o=he(t)&&Array.isArray(t.sceneIds)?t.sceneIds:[];return{sceneIds:[...new Set([...n.sceneIds,...o.filter(a=>typeof a=="string"&&a.length>0)])]}},Ju=(e={})=>{let t=he(e)?e:{};return{saveSlots:he(t.saveSlots)?t.saveSlots:{},globalDeviceVariables:he(t.globalDeviceVariables)?t.globalDeviceVariables:{},globalAccountVariables:he(t.globalAccountVariables)?t.globalAccountVariables:{},globalRuntime:he(t.globalRuntime)?t.globalRuntime:{},accountViewedRegistry:he(t.accountViewedRegistry)?t.accountViewedRegistry:{},accountReplayRegistry:he(t.accountReplayRegistry)?t.accountReplayRegistry:{}}},Sw=(e=[])=>{if(e===void 0)return[];if(!Array.isArray(e))throw new Error("applyScopedDataUpdates requires an updates array.");return e.map((t,n)=>{if(!he(t))throw new Error(`Malformed applyScopedDataUpdates.updates[${n}] entry.`);let o=t.path?.startsWith(Wu)?t.path.slice(Wu.length):null;if(o!==null){if(!["device","account"].includes(t.scope))throw new Error(`Unsupported applyScopedDataUpdates scope "${t.scope}" at updates[${n}].`);if(o.length===0)throw new Error(`Malformed applyScopedDataUpdates path "${t.path}" at updates[${n}].`);if(t.op!=="set")throw new Error(`Unsupported applyScopedDataUpdates operation "${t.op}" at updates[${n}].`);return{scope:t.scope,path:t.path,op:t.op,value:t.value,variableId:o}}if(t.path==="viewedRegistry"){if(t.scope!=="account")throw new Error(`Unsupported applyScopedDataUpdates scope "${t.scope}" at updates[${n}].`);if(t.op!=="markViewed")throw new Error(`Unsupported applyScopedDataUpdates operation "${t.op}" at updates[${n}].`);return t}if(t.path==="replayRegistry"){if(t.scope!=="account")throw new Error(`Unsupported applyScopedDataUpdates scope "${t.scope}" at updates[${n}].`);if(t.op!=="unlock")throw new Error(`Unsupported applyScopedDataUpdates operation "${t.op}" at updates[${n}].`);if(!he(t.value)||!Array.isArray(t.value.sceneIds)||t.value.sceneIds.length===0||t.value.sceneIds.some(a=>typeof a!="string"||a.length===0))throw new Error(`Malformed applyScopedDataUpdates replayRegistry value at updates[${n}].`);return{...t,value:{sceneIds:[...new Set(t.value.sceneIds)]}}}throw typeof t.path!="string"?new Error(`Malformed applyScopedDataUpdates path at updates[${n}].`):new Error(`Unsupported applyScopedDataUpdates path "${t.path}" at updates[${n}].`)})},Ow=(e,t)=>{let n={};return Sw(t).forEach(o=>{if(o.path==="viewedRegistry"){n.accountViewedRegistry=Pw(n.accountViewedRegistry??e.accountViewedRegistry,o.value);return}if(o.path==="replayRegistry"){n.accountReplayRegistry=Ew(n.accountReplayRegistry??e.accountReplayRegistry,o.value);return}let a=o.scope==="device"?"globalDeviceVariables":"globalAccountVariables";n[a]={...e[a],...n[a],[o.variableId]:o.value}}),n},pt=e=>{if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null},Rw=e=>{let t=pt(e);if(!t)throw new Error("createIndexedDbPersistence requires a non-empty namespace.");return t},Cw=e=>{let t=e??globalThis.indexedDB;if(!t)throw new Error("IndexedDB is not available in this environment.");return t},$w=({indexedDB:e,databaseName:t,objectStoreName:n})=>new Promise((o,a)=>{let r=e.open(t,1);r.onupgradeneeded=()=>{let s=r.result;s.objectStoreNames.contains(n)||s.createObjectStore(n,{keyPath:"namespace"})},r.onsuccess=()=>{o(r.result)},r.onerror=()=>{a(r.error??new Error(`Failed to open IndexedDB database "${t}".`))}}),_w=async({databasePromise:e,objectStoreName:t,namespace:n})=>{let o=await e;return new Promise((a,r)=>{let l=o.transaction(t,"readonly").objectStore(t).get(n);l.onsuccess=()=>{a(l.result??null)},l.onerror=()=>{r(l.error??new Error(`Failed to read persisted namespace "${n}" from IndexedDB.`))}})},Kt=async({databasePromise:e,objectStoreName:t,namespace:n,patch:o})=>{let a=await e;return new Promise((r,s)=>{let i=a.transaction(t,"readwrite"),l=i.objectStore(t),c=l.get(n),u=!1,p=d=>{u||(u=!0,s(d))},f=()=>{u||(u=!0,r())};c.onerror=()=>{p(c.error??new Error(`Failed to read persisted namespace "${n}" before updating IndexedDB.`))},c.onsuccess=()=>{let d=Ju(c.result),m=typeof o=="function"?o(d):o,y={namespace:n,version:1,...Ku(),...d,...m},g=l.put(y);g.onerror=()=>{p(g.error??new Error(`Failed to persist namespace "${n}" to IndexedDB.`))}},i.oncomplete=()=>{f()},i.onerror=()=>{p(i.error??new Error(`IndexedDB transaction failed while updating namespace "${n}".`))},i.onabort=()=>{p(i.error??new Error(`IndexedDB transaction aborted while updating namespace "${n}".`))}})},Tw=async({databasePromise:e,objectStoreName:t,namespace:n})=>{let o=await e;return new Promise((a,r)=>{let s=o.transaction(t,"readwrite"),l=s.objectStore(t).delete(n),c=!1,u=f=>{c||(c=!0,r(f))},p=()=>{c||(c=!0,a())};l.onerror=()=>{u(l.error??new Error(`Failed to clear persisted namespace "${n}" from IndexedDB.`))},s.oncomplete=()=>{p()},s.onerror=()=>{u(s.error??new Error(`IndexedDB transaction failed while clearing namespace "${n}".`))},s.onabort=()=>{u(s.error??new Error(`IndexedDB transaction aborted while clearing namespace "${n}".`))}})},Ki=(e={})=>{let{indexedDB:t,databaseName:n=ww,objectStoreName:o=kw,namespace:a}=e,r=Cw(t),s=Rw(a),i=$w({indexedDB:r,databaseName:n,objectStoreName:o});return{namespace:s,load:async()=>{let l=await _w({databasePromise:i,objectStoreName:o,namespace:s});return{...Ku(),...Ju(l)}},clear:async()=>Tw({databasePromise:i,objectStoreName:o,namespace:s}),saveSlots:async l=>Kt({databasePromise:i,objectStoreName:o,namespace:s,patch:{saveSlots:he(l)?l:{}}}),saveGlobalDeviceVariables:async l=>Kt({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalDeviceVariables:he(l)?l:{}}}),saveGlobalAccountVariables:async l=>Kt({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalAccountVariables:he(l)?l:{}}}),saveGlobalRuntime:async l=>Kt({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalRuntime:he(l)?l:{}}}),applyScopedDataUpdates:async l=>Kt({databasePromise:i,objectStoreName:o,namespace:s,patch:c=>Ow(c,l)})}},jw=Ki;var ip=ap;var Nw={type:"object",properties:{resourceId:{type:"string"},animationName:{type:"string"},animationSpeed:{type:"number"},loop:{type:"boolean"},colorId:{type:"string"},transformId:{type:"string"},x:{type:"number"},y:{type:"number"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"},opacity:{type:"number",minimum:0,maximum:1},blur:{$ref:"#/definitions/backgroundBlur"},animations:{$ref:"#/definitions/animationSelection"}},additionalProperties:!1},Qe=Object.prototype.hasOwnProperty,Dw={anyOf:[{type:"null"},{type:"object",properties:{x:{type:"number",minimum:0},y:{type:"number",minimum:0},quality:{type:"number",minimum:1},kernelSize:{type:"integer",enum:[5,7,9,11,13,15]},repeatEdgePixels:{type:"boolean"}},required:["x","y"],additionalProperties:!1}]};function De(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0,i=s,l=!1,c=s;if(e!==null){let p={instancePath:t,schemaPath:"#/anyOf/0/type",keyword:"type",params:{type:"null"},message:"must be null"};r===null?r=[p]:r.push(p),s++}var u=c===s;if(l=l||u,!l){let p=s;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.x===void 0){let d={instancePath:t,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"x"},message:"must have required property 'x'"};r===null?r=[d]:r.push(d),s++}if(e.y===void 0){let d={instancePath:t,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"y"},message:"must have required property 'y'"};r===null?r=[d]:r.push(d),s++}for(let d in e)if(!(d==="x"||d==="y"||d==="quality"||d==="kernelSize"||d==="repeatEdgePixels")){let m={instancePath:t,schemaPath:"#/anyOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};r===null?r=[m]:r.push(m),s++}if(e.x!==void 0){let d=e.x;if(typeof d=="number"){if(d<0||isNaN(d)){let m={instancePath:t+"/x",schemaPath:"#/anyOf/1/properties/x/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[m]:r.push(m),s++}}else{let m={instancePath:t+"/x",schemaPath:"#/anyOf/1/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[m]:r.push(m),s++}}if(e.y!==void 0){let d=e.y;if(typeof d=="number"){if(d<0||isNaN(d)){let m={instancePath:t+"/y",schemaPath:"#/anyOf/1/properties/y/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[m]:r.push(m),s++}}else{let m={instancePath:t+"/y",schemaPath:"#/anyOf/1/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[m]:r.push(m),s++}}if(e.quality!==void 0){let d=e.quality;if(typeof d=="number"){if(d<1||isNaN(d)){let m={instancePath:t+"/quality",schemaPath:"#/anyOf/1/properties/quality/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};r===null?r=[m]:r.push(m),s++}}else{let m={instancePath:t+"/quality",schemaPath:"#/anyOf/1/properties/quality/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[m]:r.push(m),s++}}if(e.kernelSize!==void 0){let d=e.kernelSize;if(!(typeof d=="number"&&!(d%1)&&!isNaN(d))){let m={instancePath:t+"/kernelSize",schemaPath:"#/anyOf/1/properties/kernelSize/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[m]:r.push(m),s++}if(!(d===5||d===7||d===9||d===11||d===13||d===15)){let m={instancePath:t+"/kernelSize",schemaPath:"#/anyOf/1/properties/kernelSize/enum",keyword:"enum",params:{allowedValues:Dw.anyOf[1].properties.kernelSize.enum},message:"must be equal to one of the allowed values"};r===null?r=[m]:r.push(m),s++}}if(e.repeatEdgePixels!==void 0&&typeof e.repeatEdgePixels!="boolean"){let d={instancePath:t+"/repeatEdgePixels",schemaPath:"#/anyOf/1/properties/repeatEdgePixels/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[d]:r.push(d),s++}}else{let d={instancePath:t,schemaPath:"#/anyOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[d]:r.push(d),s++}var u=p===s;l=l||u}if(l)s=i,r!==null&&(i?r.length=i:r=null);else{let p={instancePath:t,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[p]:r.push(p),s++}return De.errors=r,s===0}var Lw={type:"object",properties:{continuity:{type:"string",enum:["render","persistent"]},speed:{type:"number",exclusiveMinimum:0},loop:{type:"boolean"}},additionalProperties:!1};function is(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="continuity"||i==="speed"||i==="loop")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.continuity!==void 0){let i=e.continuity;if(typeof i!="string"){let l={instancePath:t+"/continuity",schemaPath:"#/properties/continuity/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(!(i==="render"||i==="persistent")){let l={instancePath:t+"/continuity",schemaPath:"#/properties/continuity/enum",keyword:"enum",params:{allowedValues:Lw.properties.continuity.enum},message:"must be equal to one of the allowed values"};r===null?r=[l]:r.push(l),s++}}if(e.speed!==void 0){let i=e.speed;if(typeof i=="number"){if(i<=0||isNaN(i)){let l={instancePath:t+"/speed",schemaPath:"#/properties/speed/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/speed",schemaPath:"#/properties/speed/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:t+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[i]:r.push(i),s++}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return is.errors=r,s===0}function ce(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.resourceId===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(!(i==="resourceId"||i==="playback")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}e.playback!==void 0&&(is(e.playback,{instancePath:t+"/playback",parentData:e,parentDataProperty:"playback",rootData:a})||(r=r===null?is.errors:r.concat(is.errors),s=r.length))}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return ce.errors=r,s===0}function as(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!Qe.call(Nw.properties,i)){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.animationName!==void 0&&typeof e.animationName!="string"){let i={instancePath:t+"/animationName",schemaPath:"#/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.animationSpeed!==void 0&&typeof e.animationSpeed!="number"){let i={instancePath:t+"/animationSpeed",schemaPath:"#/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:t+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[i]:r.push(i),s++}if(e.colorId!==void 0&&typeof e.colorId!="string"){let i={instancePath:t+"/colorId",schemaPath:"#/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.transformId!==void 0&&typeof e.transformId!="string"){let i={instancePath:t+"/transformId",schemaPath:"#/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.x!==void 0&&typeof e.x!="number"){let i={instancePath:t+"/x",schemaPath:"#/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.y!==void 0&&typeof e.y!="number"){let i={instancePath:t+"/y",schemaPath:"#/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.anchorX!==void 0&&typeof e.anchorX!="number"){let i={instancePath:t+"/anchorX",schemaPath:"#/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.anchorY!==void 0&&typeof e.anchorY!="number"){let i={instancePath:t+"/anchorY",schemaPath:"#/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.scaleX!==void 0&&typeof e.scaleX!="number"){let i={instancePath:t+"/scaleX",schemaPath:"#/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.scaleY!==void 0&&typeof e.scaleY!="number"){let i={instancePath:t+"/scaleY",schemaPath:"#/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.rotation!==void 0&&typeof e.rotation!="number"){let i={instancePath:t+"/rotation",schemaPath:"#/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.originX!==void 0&&typeof e.originX!="number"){let i={instancePath:t+"/originX",schemaPath:"#/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.originY!==void 0&&typeof e.originY!="number"){let i={instancePath:t+"/originY",schemaPath:"#/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.opacity!==void 0){let i=e.opacity;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:t+"/opacity",schemaPath:"#/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[l]:r.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:t+"/opacity",schemaPath:"#/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/opacity",schemaPath:"#/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}e.blur!==void 0&&(De(e.blur,{instancePath:t+"/blur",parentData:e,parentDataProperty:"blur",rootData:a})||(r=r===null?De.errors:r.concat(De.errors),s=r.length)),e.animations!==void 0&&(ce(e.animations,{instancePath:t+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return as.errors=r,s===0}function ap(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return as(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?as.errors:r.concat(as.errors),s=r.length),ap.errors=r,s===0}var lp=cp;var Mw={type:"object",properties:{sounds:{type:"array",items:{$ref:"#/definitions/audioSound"}},resourceId:{type:"string"},loop:{type:"boolean"},interruption:{type:"string",enum:["immediate","loopEnd"]},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},startDelayMs:{type:"number",minimum:0}},allOf:[{not:{required:["resourceId","sounds"]}},{not:{required:["startDelayMs","sounds"]}}],additionalProperties:!1},ep={type:"object",properties:{id:{type:"string",minLength:1},resourceId:{type:"string",minLength:1},loop:{type:"boolean"},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},startDelayMs:{type:"number",minimum:0},playbackRate:{type:"number",minimum:0},startAt:{type:"number",minimum:0},endAt:{type:["number","null"],minimum:0}},required:["id","resourceId"],additionalProperties:!1},Ne=Zu().default;function je(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.id===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[i]:r.push(i),s++}if(e.resourceId===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(!Qe.call(ep.properties,i)){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.id!==void 0){let i=e.id;if(typeof i=="string"){if(Ne(i)<1){let l={instancePath:t+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}}if(e.resourceId!==void 0){let i=e.resourceId;if(typeof i=="string"){if(Ne(i)<1){let l={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:t+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[i]:r.push(i),s++}if(e.volume!==void 0){let i=e.volume;if(typeof i=="number"){if(i>100||isNaN(i)){let l={instancePath:t+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};r===null?r=[l]:r.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:t+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let i={instancePath:t+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[i]:r.push(i),s++}if(e.pan!==void 0){let i=e.pan;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:t+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[l]:r.push(l),s++}if(i<-1||isNaN(i)){let l={instancePath:t+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.startDelayMs!==void 0){let i=e.startDelayMs;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:t+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.playbackRate!==void 0){let i=e.playbackRate;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:t+"/playbackRate",schemaPath:"#/properties/playbackRate/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/playbackRate",schemaPath:"#/properties/playbackRate/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.startAt!==void 0){let i=e.startAt;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:t+"/startAt",schemaPath:"#/properties/startAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/startAt",schemaPath:"#/properties/startAt/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.endAt!==void 0){let i=e.endAt;if(typeof i!="number"&&i!==null){let l={instancePath:t+"/endAt",schemaPath:"#/properties/endAt/type",keyword:"type",params:{type:ep.properties.endAt.type},message:"must be number,null"};r===null?r=[l]:r.push(l),s++}if(typeof i=="number"&&(i<0||isNaN(i))){let l={instancePath:t+"/endAt",schemaPath:"#/properties/endAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return je.errors=r,s===0}function ls(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0,i=s,l=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let d;if(e.resourceId===void 0&&(d="resourceId")||e.sounds===void 0&&(d="sounds")){let m={};r===null?r=[m]:r.push(m),s++}}var c=l===s;if(c){let d={instancePath:t,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[d]:r.push(d),s++}else s=i,r!==null&&(i?r.length=i:r=null);let u=s,p=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let d;if(e.startDelayMs===void 0&&(d="startDelayMs")||e.sounds===void 0&&(d="sounds")){let m={};r===null?r=[m]:r.push(m),s++}}var f=p===s;if(f){let d={instancePath:t,schemaPath:"#/allOf/1/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[d]:r.push(d),s++}else s=u,r!==null&&(u?r.length=u:r=null);if(e&&typeof e=="object"&&!Array.isArray(e)){for(let d in e)if(!(d==="sounds"||d==="resourceId"||d==="loop"||d==="interruption"||d==="volume"||d==="muted"||d==="pan"||d==="startDelayMs")){let m={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};r===null?r=[m]:r.push(m),s++}if(e.sounds!==void 0){let d=e.sounds;if(Array.isArray(d)){let m=d.length;for(let y=0;y<m;y++)je(d[y],{instancePath:t+"/sounds/"+y,parentData:d,parentDataProperty:y,rootData:a})||(r=r===null?je.errors:r.concat(je.errors),s=r.length)}else{let m={instancePath:t+"/sounds",schemaPath:"#/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[m]:r.push(m),s++}}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let d={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let d={instancePath:t+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[d]:r.push(d),s++}if(e.interruption!==void 0){let d=e.interruption;if(typeof d!="string"){let m={instancePath:t+"/interruption",schemaPath:"#/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[m]:r.push(m),s++}if(!(d==="immediate"||d==="loopEnd")){let m={instancePath:t+"/interruption",schemaPath:"#/properties/interruption/enum",keyword:"enum",params:{allowedValues:Mw.properties.interruption.enum},message:"must be equal to one of the allowed values"};r===null?r=[m]:r.push(m),s++}}if(e.volume!==void 0){let d=e.volume;if(typeof d=="number"){if(d>100||isNaN(d)){let m={instancePath:t+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};r===null?r=[m]:r.push(m),s++}if(d<0||isNaN(d)){let m={instancePath:t+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[m]:r.push(m),s++}}else{let m={instancePath:t+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[m]:r.push(m),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let d={instancePath:t+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[d]:r.push(d),s++}if(e.pan!==void 0){let d=e.pan;if(typeof d=="number"){if(d>1||isNaN(d)){let m={instancePath:t+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[m]:r.push(m),s++}if(d<-1||isNaN(d)){let m={instancePath:t+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};r===null?r=[m]:r.push(m),s++}}else{let m={instancePath:t+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[m]:r.push(m),s++}}if(e.startDelayMs!==void 0){let d=e.startDelayMs;if(typeof d=="number"){if(d<0||isNaN(d)){let m={instancePath:t+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[m]:r.push(m),s++}}else{let m={instancePath:t+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[m]:r.push(m),s++}}}else{let d={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[d]:r.push(d),s++}return ls.errors=r,s===0}function cp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return ls(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?ls.errors:r.concat(ls.errors),s=r.length),cp.errors=r,s===0}var up=pp;var Vw={type:"object",properties:{items:{type:"array",items:{type:"object",properties:{id:{type:"string"},transformId:{type:"string"},x:{type:"number"},y:{type:"number"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"},opacity:{type:"number",minimum:0,maximum:1},blur:{$ref:"#/definitions/backgroundBlur"},sprites:{type:"array",items:{type:"object",properties:{id:{type:"string"},resourceId:{type:"string"},animationName:{type:"string"},animationSpeed:{type:"number"},loop:{type:"boolean"}},additionalProperties:!1}},animations:{$ref:"#/definitions/animationSelection"}},required:["id"],allOf:[{if:{required:["sprites"]},then:{required:["transformId"]}}],additionalProperties:!1}}},additionalProperties:!1};function cs(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let l in e)if(l!=="items"){let c={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),s++}if(e.items!==void 0){let l=e.items;if(Array.isArray(l)){let c=l.length;for(let u=0;u<c;u++){let p=l[u],f=s,d=!0,m=s;if(p&&typeof p=="object"&&!Array.isArray(p)){let y;if(p.sprites===void 0&&(y="sprites")){let g={};r===null?r=[g]:r.push(g),s++}}var i=m===s;if(s=f,r!==null&&(f?r.length=f:r=null),i){let y=s;if(p&&typeof p=="object"&&!Array.isArray(p)&&p.transformId===void 0){let h={instancePath:t+"/items/"+u,schemaPath:"#/properties/items/items/allOf/0/then/required",keyword:"required",params:{missingProperty:"transformId"},message:"must have required property 'transformId'"};r===null?r=[h]:r.push(h),s++}var i=y===s;d=i}if(!d){let y={instancePath:t+"/items/"+u,schemaPath:"#/properties/items/items/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[y]:r.push(y),s++}if(p&&typeof p=="object"&&!Array.isArray(p)){if(p.id===void 0){let y={instancePath:t+"/items/"+u,schemaPath:"#/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[y]:r.push(y),s++}for(let y in p)if(!Qe.call(Vw.properties.items.items.properties,y)){let g={instancePath:t+"/items/"+u,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};r===null?r=[g]:r.push(g),s++}if(p.id!==void 0&&typeof p.id!="string"){let y={instancePath:t+"/items/"+u+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),s++}if(p.transformId!==void 0&&typeof p.transformId!="string"){let y={instancePath:t+"/items/"+u+"/transformId",schemaPath:"#/properties/items/items/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),s++}if(p.x!==void 0&&typeof p.x!="number"){let y={instancePath:t+"/items/"+u+"/x",schemaPath:"#/properties/items/items/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[y]:r.push(y),s++}if(p.y!==void 0&&typeof p.y!="number"){let y={instancePath:t+"/items/"+u+"/y",schemaPath:"#/properties/items/items/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[y]:r.push(y),s++}if(p.anchorX!==void 0&&typeof p.anchorX!="number"){let y={instancePath:t+"/items/"+u+"/anchorX",schemaPath:"#/properties/items/items/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[y]:r.push(y),s++}if(p.anchorY!==void 0&&typeof p.anchorY!="number"){let y={instancePath:t+"/items/"+u+"/anchorY",schemaPath:"#/properties/items/items/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[y]:r.push(y),s++}if(p.scaleX!==void 0&&typeof p.scaleX!="number"){let y={instancePath:t+"/items/"+u+"/scaleX",schemaPath:"#/properties/items/items/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[y]:r.push(y),s++}if(p.scaleY!==void 0&&typeof p.scaleY!="number"){let y={instancePath:t+"/items/"+u+"/scaleY",schemaPath:"#/properties/items/items/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[y]:r.push(y),s++}if(p.rotation!==void 0&&typeof p.rotation!="number"){let y={instancePath:t+"/items/"+u+"/rotation",schemaPath:"#/properties/items/items/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[y]:r.push(y),s++}if(p.originX!==void 0&&typeof p.originX!="number"){let y={instancePath:t+"/items/"+u+"/originX",schemaPath:"#/properties/items/items/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[y]:r.push(y),s++}if(p.originY!==void 0&&typeof p.originY!="number"){let y={instancePath:t+"/items/"+u+"/originY",schemaPath:"#/properties/items/items/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[y]:r.push(y),s++}if(p.opacity!==void 0){let y=p.opacity;if(typeof y=="number"){if(y>1||isNaN(y)){let g={instancePath:t+"/items/"+u+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[g]:r.push(g),s++}if(y<0||isNaN(y)){let g={instancePath:t+"/items/"+u+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[g]:r.push(g),s++}}else{let g={instancePath:t+"/items/"+u+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[g]:r.push(g),s++}}if(p.blur!==void 0&&(De(p.blur,{instancePath:t+"/items/"+u+"/blur",parentData:p,parentDataProperty:"blur",rootData:a})||(r=r===null?De.errors:r.concat(De.errors),s=r.length)),p.sprites!==void 0){let y=p.sprites;if(Array.isArray(y)){let g=y.length;for(let h=0;h<g;h++){let w=y[h];if(w&&typeof w=="object"&&!Array.isArray(w)){for(let b in w)if(!(b==="id"||b==="resourceId"||b==="animationName"||b==="animationSpeed"||b==="loop")){let E={instancePath:t+"/items/"+u+"/sprites/"+h,schemaPath:"#/properties/items/items/properties/sprites/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};r===null?r=[E]:r.push(E),s++}if(w.id!==void 0&&typeof w.id!="string"){let b={instancePath:t+"/items/"+u+"/sprites/"+h+"/id",schemaPath:"#/properties/items/items/properties/sprites/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[b]:r.push(b),s++}if(w.resourceId!==void 0&&typeof w.resourceId!="string"){let b={instancePath:t+"/items/"+u+"/sprites/"+h+"/resourceId",schemaPath:"#/properties/items/items/properties/sprites/items/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[b]:r.push(b),s++}if(w.animationName!==void 0&&typeof w.animationName!="string"){let b={instancePath:t+"/items/"+u+"/sprites/"+h+"/animationName",schemaPath:"#/properties/items/items/properties/sprites/items/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[b]:r.push(b),s++}if(w.animationSpeed!==void 0&&typeof w.animationSpeed!="number"){let b={instancePath:t+"/items/"+u+"/sprites/"+h+"/animationSpeed",schemaPath:"#/properties/items/items/properties/sprites/items/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[b]:r.push(b),s++}if(w.loop!==void 0&&typeof w.loop!="boolean"){let b={instancePath:t+"/items/"+u+"/sprites/"+h+"/loop",schemaPath:"#/properties/items/items/properties/sprites/items/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[b]:r.push(b),s++}}else{let b={instancePath:t+"/items/"+u+"/sprites/"+h,schemaPath:"#/properties/items/items/properties/sprites/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[b]:r.push(b),s++}}}else{let g={instancePath:t+"/items/"+u+"/sprites",schemaPath:"#/properties/items/items/properties/sprites/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[g]:r.push(g),s++}}p.animations!==void 0&&(ce(p.animations,{instancePath:t+"/items/"+u+"/animations",parentData:p,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let y={instancePath:t+"/items/"+u,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),s++}}}else{let c={instancePath:t+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),s++}}}else{let l={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}return cs.errors=r,s===0}function pp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return cs(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?cs.errors:r.concat(cs.errors),s=r.length),pp.errors=r,s===0}var dp=fp;function us(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="resourceId"||i==="items"||i==="animations")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.items!==void 0){let i=e.items;if(Array.isArray(i)){let l=i.length;for(let c=0;c<l;c++){let u=i[c];if(u&&typeof u=="object"&&!Array.isArray(u)){for(let p in u)if(!(p==="id"||p==="content"||p==="events")){let f={instancePath:t+"/items/"+c,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};r===null?r=[f]:r.push(f),s++}if(u.id!==void 0&&typeof u.id!="string"){let p={instancePath:t+"/items/"+c+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),s++}if(u.content!==void 0&&typeof u.content!="string"){let p={instancePath:t+"/items/"+c+"/content",schemaPath:"#/properties/items/items/properties/content/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),s++}if(u.events!==void 0){let p=u.events;if(p&&typeof p=="object"&&!Array.isArray(p)){if(p.click!==void 0){let f=p.click;if(!(f&&typeof f=="object"&&!Array.isArray(f))){let d={instancePath:t+"/items/"+c+"/events/click",schemaPath:"#/properties/items/items/properties/events/properties/click/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[d]:r.push(d),s++}}}else{let f={instancePath:t+"/items/"+c+"/events",schemaPath:"#/properties/items/items/properties/events/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[f]:r.push(f),s++}}}else{let p={instancePath:t+"/items/"+c,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}}else{let l={instancePath:t+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}e.animations!==void 0&&(ce(e.animations,{instancePath:t+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return us.errors=r,s===0}function fp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return us(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?us.errors:r.concat(us.errors),s=r.length),fp.errors=r,s===0}var mp=yp;function ps(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(i!=="mode"){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.mode!==void 0&&typeof e.mode!="string"){let i={instancePath:t+"/mode",schemaPath:"#/properties/mode/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return ps.errors=r,s===0}function yp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return ps(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?ps.errors:r.concat(ps.errors),s=r.length),yp.errors=r,s===0}var hp=gp;function ds(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.resourceId===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(i!=="resourceId"){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return ds.errors=r,s===0}function gp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return ds(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?ds.errors:r.concat(ds.errors),s=r.length),gp.errors=r,s===0}var bp=Ip;var rp={type:"object",properties:{ui:{type:"object",properties:{resourceId:{type:"string"},animations:{$ref:"#/definitions/animationSelection"}},additionalProperties:!1},mode:{type:"string",enum:["adv","nvl"]},content:{type:"array",items:{type:"object",properties:{text:{type:"string"}}}},textSpeed:{type:"number"},append:{type:"boolean"},characterId:{type:"string"},characterName:{type:"string"},persistCharacter:{type:"boolean"},persistSprite:{type:"boolean"},character:{type:"object",properties:{name:{type:"string"},sprite:{type:"object",properties:{transformId:{type:"string"},items:{type:"array",items:{type:"object",properties:{id:{type:"string"},resourceId:{type:"string"},animationName:{type:"string"},animationSpeed:{type:"number"},loop:{type:"boolean"}},required:["id","resourceId"],additionalProperties:!1}},animations:{$ref:"#/definitions/animationSelection"}},additionalProperties:!1}},additionalProperties:!1},clear:{type:"boolean"},clearPage:{type:"boolean"}},additionalProperties:!1};function fs(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!Qe.call(rp.properties,i)){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.ui!==void 0){let i=e.ui;if(i&&typeof i=="object"&&!Array.isArray(i)){for(let l in i)if(!(l==="resourceId"||l==="animations")){let c={instancePath:t+"/ui",schemaPath:"#/properties/ui/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),s++}if(i.resourceId!==void 0&&typeof i.resourceId!="string"){let l={instancePath:t+"/ui/resourceId",schemaPath:"#/properties/ui/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}i.animations!==void 0&&(ce(i.animations,{instancePath:t+"/ui/animations",parentData:i,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let l={instancePath:t+"/ui",schemaPath:"#/properties/ui/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}if(e.mode!==void 0){let i=e.mode;if(typeof i!="string"){let l={instancePath:t+"/mode",schemaPath:"#/properties/mode/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(!(i==="adv"||i==="nvl")){let l={instancePath:t+"/mode",schemaPath:"#/properties/mode/enum",keyword:"enum",params:{allowedValues:rp.properties.mode.enum},message:"must be equal to one of the allowed values"};r===null?r=[l]:r.push(l),s++}}if(e.content!==void 0){let i=e.content;if(Array.isArray(i)){let l=i.length;for(let c=0;c<l;c++){let u=i[c];if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.text!==void 0&&typeof u.text!="string"){let p={instancePath:t+"/content/"+c+"/text",schemaPath:"#/properties/content/items/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),s++}}else{let p={instancePath:t+"/content/"+c,schemaPath:"#/properties/content/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}}else{let l={instancePath:t+"/content",schemaPath:"#/properties/content/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}if(e.textSpeed!==void 0&&typeof e.textSpeed!="number"){let i={instancePath:t+"/textSpeed",schemaPath:"#/properties/textSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.append!==void 0&&typeof e.append!="boolean"){let i={instancePath:t+"/append",schemaPath:"#/properties/append/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[i]:r.push(i),s++}if(e.characterId!==void 0&&typeof e.characterId!="string"){let i={instancePath:t+"/characterId",schemaPath:"#/properties/characterId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.characterName!==void 0&&typeof e.characterName!="string"){let i={instancePath:t+"/characterName",schemaPath:"#/properties/characterName/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.persistCharacter!==void 0&&typeof e.persistCharacter!="boolean"){let i={instancePath:t+"/persistCharacter",schemaPath:"#/properties/persistCharacter/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[i]:r.push(i),s++}if(e.persistSprite!==void 0&&typeof e.persistSprite!="boolean"){let i={instancePath:t+"/persistSprite",schemaPath:"#/properties/persistSprite/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[i]:r.push(i),s++}if(e.character!==void 0){let i=e.character;if(i&&typeof i=="object"&&!Array.isArray(i)){for(let l in i)if(!(l==="name"||l==="sprite")){let c={instancePath:t+"/character",schemaPath:"#/properties/character/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),s++}if(i.name!==void 0&&typeof i.name!="string"){let l={instancePath:t+"/character/name",schemaPath:"#/properties/character/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(i.sprite!==void 0){let l=i.sprite;if(l&&typeof l=="object"&&!Array.isArray(l)){for(let c in l)if(!(c==="transformId"||c==="items"||c==="animations")){let u={instancePath:t+"/character/sprite",schemaPath:"#/properties/character/properties/sprite/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};r===null?r=[u]:r.push(u),s++}if(l.transformId!==void 0&&typeof l.transformId!="string"){let c={instancePath:t+"/character/sprite/transformId",schemaPath:"#/properties/character/properties/sprite/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),s++}if(l.items!==void 0){let c=l.items;if(Array.isArray(c)){let u=c.length;for(let p=0;p<u;p++){let f=c[p];if(f&&typeof f=="object"&&!Array.isArray(f)){if(f.id===void 0){let d={instancePath:t+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[d]:r.push(d),s++}if(f.resourceId===void 0){let d={instancePath:t+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};r===null?r=[d]:r.push(d),s++}for(let d in f)if(!(d==="id"||d==="resourceId"||d==="animationName"||d==="animationSpeed"||d==="loop")){let m={instancePath:t+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};r===null?r=[m]:r.push(m),s++}if(f.id!==void 0&&typeof f.id!="string"){let d={instancePath:t+"/character/sprite/items/"+p+"/id",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),s++}if(f.resourceId!==void 0&&typeof f.resourceId!="string"){let d={instancePath:t+"/character/sprite/items/"+p+"/resourceId",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),s++}if(f.animationName!==void 0&&typeof f.animationName!="string"){let d={instancePath:t+"/character/sprite/items/"+p+"/animationName",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),s++}if(f.animationSpeed!==void 0&&typeof f.animationSpeed!="number"){let d={instancePath:t+"/character/sprite/items/"+p+"/animationSpeed",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[d]:r.push(d),s++}if(f.loop!==void 0&&typeof f.loop!="boolean"){let d={instancePath:t+"/character/sprite/items/"+p+"/loop",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[d]:r.push(d),s++}}else{let d={instancePath:t+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[d]:r.push(d),s++}}}else{let u={instancePath:t+"/character/sprite/items",schemaPath:"#/properties/character/properties/sprite/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[u]:r.push(u),s++}}l.animations!==void 0&&(ce(l.animations,{instancePath:t+"/character/sprite/animations",parentData:l,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let c={instancePath:t+"/character/sprite",schemaPath:"#/properties/character/properties/sprite/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[c]:r.push(c),s++}}}else{let l={instancePath:t+"/character",schemaPath:"#/properties/character/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}if(e.clear!==void 0&&typeof e.clear!="boolean"){let i={instancePath:t+"/clear",schemaPath:"#/properties/clear/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[i]:r.push(i),s++}if(e.clearPage!==void 0&&typeof e.clearPage!="boolean"){let i={instancePath:t+"/clearPage",schemaPath:"#/properties/clearPage/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[i]:r.push(i),s++}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return fs.errors=r,s===0}function Ip(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return fs(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?fs.errors:r.concat(fs.errors),s=r.length),Ip.errors=r,s===0}var wp=kp;function ms(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="id"||i==="resourceId"||i==="fields"||i==="submitActions"||i==="cancelActions"||i==="animations")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.id!==void 0&&typeof e.id!="string"){let i={instancePath:t+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.fields!==void 0){let i=e.fields;if(i&&typeof i=="object"&&!Array.isArray(i))for(let l in i){let c=i[l];if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.variableId===void 0){let u={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/required",keyword:"required",params:{missingProperty:"variableId"},message:"must have required property 'variableId'"};r===null?r=[u]:r.push(u),s++}for(let u in c)if(!(u==="variableId"||u==="required"||u==="trim"||u==="placeholder"||u==="multiline"||u==="maxLength")){let p={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:u},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),s++}if(c.variableId!==void 0&&typeof c.variableId!="string"){let u={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/variableId",schemaPath:"#/properties/fields/additionalProperties/properties/variableId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[u]:r.push(u),s++}if(c.required!==void 0&&typeof c.required!="boolean"){let u={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/required",schemaPath:"#/properties/fields/additionalProperties/properties/required/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[u]:r.push(u),s++}if(c.trim!==void 0&&typeof c.trim!="boolean"){let u={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/trim",schemaPath:"#/properties/fields/additionalProperties/properties/trim/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[u]:r.push(u),s++}if(c.placeholder!==void 0&&typeof c.placeholder!="string"){let u={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/placeholder",schemaPath:"#/properties/fields/additionalProperties/properties/placeholder/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[u]:r.push(u),s++}if(c.multiline!==void 0&&typeof c.multiline!="boolean"){let u={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/multiline",schemaPath:"#/properties/fields/additionalProperties/properties/multiline/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[u]:r.push(u),s++}if(c.maxLength!==void 0){let u=c.maxLength;if(!(typeof u=="number"&&!(u%1)&&!isNaN(u))){let p={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/maxLength",schemaPath:"#/properties/fields/additionalProperties/properties/maxLength/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[p]:r.push(p),s++}if(typeof u=="number"&&(u<0||isNaN(u))){let p={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/maxLength",schemaPath:"#/properties/fields/additionalProperties/properties/maxLength/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[p]:r.push(p),s++}}}else{let u={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[u]:r.push(u),s++}}else{let l={instancePath:t+"/fields",schemaPath:"#/properties/fields/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}if(e.submitActions!==void 0){let i=e.submitActions;if(!(i&&typeof i=="object"&&!Array.isArray(i))){let l={instancePath:t+"/submitActions",schemaPath:"#/properties/submitActions/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}if(e.cancelActions!==void 0){let i=e.cancelActions;if(!(i&&typeof i=="object"&&!Array.isArray(i))){let l={instancePath:t+"/cancelActions",schemaPath:"#/properties/cancelActions/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}e.animations!==void 0&&(ce(e.animations,{instancePath:t+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return ms.errors=r,s===0}function kp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return ms(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?ms.errors:r.concat(ms.errors),s=r.length),kp.errors=r,s===0}var vp=Ap;function ys(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="resourceId"||i==="animations")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}e.animations!==void 0&&(ce(e.animations,{instancePath:t+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return ys.errors=r,s===0}function Ap(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return ys(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?ys.errors:r.concat(ys.errors),s=r.length),Ap.errors=r,s===0}var Pp=xp;function hs(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="opacity"||i==="blur"||i==="animations")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.opacity!==void 0){let i=e.opacity;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:t+"/opacity",schemaPath:"#/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[l]:r.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:t+"/opacity",schemaPath:"#/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/opacity",schemaPath:"#/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}e.blur!==void 0&&(De(e.blur,{instancePath:t+"/blur",parentData:e,parentDataProperty:"blur",rootData:a})||(r=r===null?De.errors:r.concat(De.errors),s=r.length)),e.animations!==void 0&&(ce(e.animations,{instancePath:t+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return hs.errors=r,s===0}function xp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return hs(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?hs.errors:r.concat(hs.errors),s=r.length),xp.errors=r,s===0}var Ep=Sp;var tp={type:"object",properties:{items:{type:"array",items:{$ref:"#/definitions/audioSound"}},channels:{type:"array",items:{type:"object",properties:{id:{type:"string",minLength:1},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},loop:{type:"boolean"},interruption:{type:"string",enum:["immediate","loopEnd"]},applyMode:{type:"string",enum:["singleLine","persistent"]},sounds:{type:"array",items:{$ref:"#/definitions/audioSound"}}},required:["id","sounds"],additionalProperties:!1}}},allOf:[{not:{required:["items","channels"]}}],additionalProperties:!1};function gs(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0,i=s,l=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let u;if(e.items===void 0&&(u="items")||e.channels===void 0&&(u="channels")){let p={};r===null?r=[p]:r.push(p),s++}}var c=l===s;if(c){let u={instancePath:t,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[u]:r.push(u),s++}else s=i,r!==null&&(i?r.length=i:r=null);if(e&&typeof e=="object"&&!Array.isArray(e)){for(let u in e)if(!(u==="items"||u==="channels")){let p={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:u},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),s++}if(e.items!==void 0){let u=e.items;if(Array.isArray(u)){let p=u.length;for(let f=0;f<p;f++)je(u[f],{instancePath:t+"/items/"+f,parentData:u,parentDataProperty:f,rootData:a})||(r=r===null?je.errors:r.concat(je.errors),s=r.length)}else{let p={instancePath:t+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),s++}}if(e.channels!==void 0){let u=e.channels;if(Array.isArray(u)){let p=u.length;for(let f=0;f<p;f++){let d=u[f];if(d&&typeof d=="object"&&!Array.isArray(d)){if(d.id===void 0){let m={instancePath:t+"/channels/"+f,schemaPath:"#/properties/channels/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[m]:r.push(m),s++}if(d.sounds===void 0){let m={instancePath:t+"/channels/"+f,schemaPath:"#/properties/channels/items/required",keyword:"required",params:{missingProperty:"sounds"},message:"must have required property 'sounds'"};r===null?r=[m]:r.push(m),s++}for(let m in d)if(!(m==="id"||m==="volume"||m==="muted"||m==="pan"||m==="loop"||m==="interruption"||m==="applyMode"||m==="sounds")){let y={instancePath:t+"/channels/"+f,schemaPath:"#/properties/channels/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:m},message:"must NOT have additional properties"};r===null?r=[y]:r.push(y),s++}if(d.id!==void 0){let m=d.id;if(typeof m=="string"){if(Ne(m)<1){let y={instancePath:t+"/channels/"+f+"/id",schemaPath:"#/properties/channels/items/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[y]:r.push(y),s++}}else{let y={instancePath:t+"/channels/"+f+"/id",schemaPath:"#/properties/channels/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),s++}}if(d.volume!==void 0){let m=d.volume;if(typeof m=="number"){if(m>100||isNaN(m)){let y={instancePath:t+"/channels/"+f+"/volume",schemaPath:"#/properties/channels/items/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};r===null?r=[y]:r.push(y),s++}if(m<0||isNaN(m)){let y={instancePath:t+"/channels/"+f+"/volume",schemaPath:"#/properties/channels/items/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[y]:r.push(y),s++}}else{let y={instancePath:t+"/channels/"+f+"/volume",schemaPath:"#/properties/channels/items/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[y]:r.push(y),s++}}if(d.muted!==void 0&&typeof d.muted!="boolean"){let m={instancePath:t+"/channels/"+f+"/muted",schemaPath:"#/properties/channels/items/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[m]:r.push(m),s++}if(d.pan!==void 0){let m=d.pan;if(typeof m=="number"){if(m>1||isNaN(m)){let y={instancePath:t+"/channels/"+f+"/pan",schemaPath:"#/properties/channels/items/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[y]:r.push(y),s++}if(m<-1||isNaN(m)){let y={instancePath:t+"/channels/"+f+"/pan",schemaPath:"#/properties/channels/items/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};r===null?r=[y]:r.push(y),s++}}else{let y={instancePath:t+"/channels/"+f+"/pan",schemaPath:"#/properties/channels/items/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[y]:r.push(y),s++}}if(d.loop!==void 0&&typeof d.loop!="boolean"){let m={instancePath:t+"/channels/"+f+"/loop",schemaPath:"#/properties/channels/items/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[m]:r.push(m),s++}if(d.interruption!==void 0){let m=d.interruption;if(typeof m!="string"){let y={instancePath:t+"/channels/"+f+"/interruption",schemaPath:"#/properties/channels/items/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),s++}if(!(m==="immediate"||m==="loopEnd")){let y={instancePath:t+"/channels/"+f+"/interruption",schemaPath:"#/properties/channels/items/properties/interruption/enum",keyword:"enum",params:{allowedValues:tp.properties.channels.items.properties.interruption.enum},message:"must be equal to one of the allowed values"};r===null?r=[y]:r.push(y),s++}}if(d.applyMode!==void 0){let m=d.applyMode;if(typeof m!="string"){let y={instancePath:t+"/channels/"+f+"/applyMode",schemaPath:"#/properties/channels/items/properties/applyMode/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),s++}if(!(m==="singleLine"||m==="persistent")){let y={instancePath:t+"/channels/"+f+"/applyMode",schemaPath:"#/properties/channels/items/properties/applyMode/enum",keyword:"enum",params:{allowedValues:tp.properties.channels.items.properties.applyMode.enum},message:"must be equal to one of the allowed values"};r===null?r=[y]:r.push(y),s++}}if(d.sounds!==void 0){let m=d.sounds;if(Array.isArray(m)){let y=m.length;for(let g=0;g<y;g++)je(m[g],{instancePath:t+"/channels/"+f+"/sounds/"+g,parentData:m,parentDataProperty:g,rootData:a})||(r=r===null?je.errors:r.concat(je.errors),s=r.length)}else{let y={instancePath:t+"/channels/"+f+"/sounds",schemaPath:"#/properties/channels/items/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[y]:r.push(y),s++}}}else{let m={instancePath:t+"/channels/"+f,schemaPath:"#/properties/channels/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[m]:r.push(m),s++}}}else{let p={instancePath:t+"/channels",schemaPath:"#/properties/channels/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),s++}}}else{let u={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[u]:r.push(u),s++}return gs.errors=r,s===0}function Sp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return gs(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?gs.errors:r.concat(gs.errors),s=r.length),Sp.errors=r,s===0}var Op=Rp;var np={type:"object",properties:{items:{type:"array",items:{type:"object",properties:{id:{type:"string"},animationName:{type:"string"},animationSpeed:{type:"number"},resourceId:{type:"string"},text:{$ref:"#/definitions/visualText"},layout:{$ref:"#/definitions/visualInlineLayout"},transformId:{type:"string"},transform:{$ref:"#/definitions/visualInlineTransform"},x:{type:"number"},y:{type:"number"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"},layer:{type:"number",enum:[10,30,50,70,90]},opacity:{type:"number",minimum:0,maximum:1},blur:{$ref:"#/definitions/backgroundBlur"},animations:{$ref:"#/definitions/animationSelection"}},required:["id"],allOf:[{not:{required:["resourceId","text"]}},{not:{required:["resourceId","layout"]}},{not:{required:["text","layout"]}},{not:{required:["transformId","transform"]}}],additionalProperties:!1}}},additionalProperties:!1};function bs(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0,i=s,l=!1,c=s;if(typeof e!="string"){let p={instancePath:t,schemaPath:"#/anyOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),s++}var u=c===s;if(l=l||u,!l){let p=s;if(Array.isArray(e)){let d=e.length;for(let m=0;m<d;m++){let y=e[m];if(y&&typeof y=="object"&&!Array.isArray(y)){if(y.text!==void 0&&typeof y.text!="string"){let g={instancePath:t+"/"+m+"/text",schemaPath:"#/anyOf/1/items/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[g]:r.push(g),s++}if(y.textStyleId!==void 0&&typeof y.textStyleId!="string"){let g={instancePath:t+"/"+m+"/textStyleId",schemaPath:"#/anyOf/1/items/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[g]:r.push(g),s++}if(y.furigana!==void 0){let g=y.furigana;if(g&&typeof g=="object"&&!Array.isArray(g)){if(g.text!==void 0&&typeof g.text!="string"){let h={instancePath:t+"/"+m+"/furigana/text",schemaPath:"#/anyOf/1/items/properties/furigana/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),s++}if(g.textStyleId!==void 0&&typeof g.textStyleId!="string"){let h={instancePath:t+"/"+m+"/furigana/textStyleId",schemaPath:"#/anyOf/1/items/properties/furigana/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),s++}}else{let h={instancePath:t+"/"+m+"/furigana",schemaPath:"#/anyOf/1/items/properties/furigana/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[h]:r.push(h),s++}}}else{let g={instancePath:t+"/"+m,schemaPath:"#/anyOf/1/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[g]:r.push(g),s++}}}else{let d={instancePath:t,schemaPath:"#/anyOf/1/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[d]:r.push(d),s++}var u=p===s;l=l||u}if(l)s=i,r!==null&&(i?r.length=i:r=null);else{let p={instancePath:t,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[p]:r.push(p),s++}return bs.errors=r,s===0}function Is(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0,i=s,l=s,c=s,u=!1,p=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let w;if(e.id===void 0&&(w="id")){let b={};r===null?r=[b]:r.push(b),s++}}var f=p===s;if(u=u||f,!u){let w=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let E;if(e.type===void 0&&(E="type")){let v={};r===null?r=[v]:r.push(v),s++}}var f=w===s;if(u=u||f,!u){let E=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let P;if(e.resourceId===void 0&&(P="resourceId")){let k={};r===null?r=[k]:r.push(k),s++}}var f=E===s;if(u=u||f,!u){let P=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let O;if(e.layout===void 0&&(O="layout")){let D={};r===null?r=[D]:r.push(D),s++}}var f=P===s;if(u=u||f,!u){let O=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let $;if(e.transformId===void 0&&($="transformId")){let q={};r===null?r=[q]:r.push(q),s++}}var f=O===s;if(u=u||f,!u){let $=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Y;if(e.transform===void 0&&(Y="transform")){let T={};r===null?r=[T]:r.push(T),s++}}var f=$===s;if(u=u||f,!u){let Y=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let U;if(e.x===void 0&&(U="x")){let ie={};r===null?r=[ie]:r.push(ie),s++}}var f=Y===s;if(u=u||f,!u){let U=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let L;if(e.y===void 0&&(L="y")){let ae={};r===null?r=[ae]:r.push(ae),s++}}var f=U===s;if(u=u||f,!u){let L=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let ue;if(e.anchorX===void 0&&(ue="anchorX")){let B={};r===null?r=[B]:r.push(B),s++}}var f=L===s;if(u=u||f,!u){let ue=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Z;if(e.anchorY===void 0&&(Z="anchorY")){let oe={};r===null?r=[oe]:r.push(oe),s++}}var f=ue===s;if(u=u||f,!u){let Z=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let re;if(e.scaleX===void 0&&(re="scaleX")){let pe={};r===null?r=[pe]:r.push(pe),s++}}var f=Z===s;if(u=u||f,!u){let re=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let te;if(e.scaleY===void 0&&(te="scaleY")){let C={};r===null?r=[C]:r.push(C),s++}}var f=re===s;if(u=u||f,!u){let te=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let _;if(e.rotation===void 0&&(_="rotation")){let F={};r===null?r=[F]:r.push(F),s++}}var f=te===s;if(u=u||f,!u){let _=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let K;if(e.originX===void 0&&(K="originX")){let de={};r===null?r=[de]:r.push(de),s++}}var f=_===s;if(u=u||f,!u){let K=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Pe;if(e.originY===void 0&&(Pe="originY")){let ge={};r===null?r=[ge]:r.push(ge),s++}}var f=K===s;if(u=u||f,!u){let Pe=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let fe;if(e.layer===void 0&&(fe="layer")){let Or={};r===null?r=[Or]:r.push(Or),s++}}var f=Pe===s;if(u=u||f,!u){let fe=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let He;if(e.opacity===void 0&&(He="opacity")){let on={};r===null?r=[on]:r.push(on),s++}}var f=fe===s;if(u=u||f,!u){let He=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let mt;if(e.blur===void 0&&(mt="blur")){let an={};r===null?r=[an]:r.push(an),s++}}var f=He===s;if(u=u||f,!u){let mt=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Hs;if(e.animations===void 0&&(Hs="animations")){let yt={};r===null?r=[yt]:r.push(yt),s++}}var f=mt===s;u=u||f}}}}}}}}}}}}}}}}}}if(u)s=c,r!==null&&(c?r.length=c:r=null);else{let w={};r===null?r=[w]:r.push(w),s++}var d=l===s;if(d){let w={instancePath:t,schemaPath:"#/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[w]:r.push(w),s++}else s=i,r!==null&&(i?r.length=i:r=null);let m=s,y=!1,g=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.content===void 0){let w={instancePath:t,schemaPath:"#/anyOf/0/required",keyword:"required",params:{missingProperty:"content"},message:"must have required property 'content'"};r===null?r=[w]:r.push(w),s++}var h=g===s;if(y=y||h,!y){let w=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.textStyleId===void 0){let E={instancePath:t,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"textStyleId"},message:"must have required property 'textStyleId'"};r===null?r=[E]:r.push(E),s++}var h=w===s;y=y||h}if(y)s=m,r!==null&&(m?r.length=m:r=null);else{let w={instancePath:t,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[w]:r.push(w),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.content!==void 0&&(bs(e.content,{instancePath:t+"/content",parentData:e,parentDataProperty:"content",rootData:a})||(r=r===null?bs.errors:r.concat(bs.errors),s=r.length)),e.textStyleId!==void 0&&typeof e.textStyleId!="string"){let w={instancePath:t+"/textStyleId",schemaPath:"#/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[w]:r.push(w),s++}if(e.width!==void 0&&typeof e.width!="number"){let w={instancePath:t+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),s++}if(e.height!==void 0&&typeof e.height!="number"){let w={instancePath:t+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),s++}}else{let w={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[w]:r.push(w),s++}return Is.errors=r,s===0}function ws(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.elements===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"elements"},message:"must have required property 'elements'"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(i!=="elements"){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.elements!==void 0){let i=e.elements;if(Array.isArray(i)){let l=i.length;for(let c=0;c<l;c++){let u=i[c];if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:t+"/elements/"+c,schemaPath:"#/properties/elements/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}}else{let l={instancePath:t+"/elements",schemaPath:"#/properties/elements/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return ws.errors=r,s===0}var qw={type:"object",properties:{x:{type:"number"},y:{type:"number"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"}},minProperties:1,additionalProperties:!1};function ks(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let i={instancePath:t,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(!Qe.call(qw.properties,i)){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.x!==void 0&&typeof e.x!="number"){let i={instancePath:t+"/x",schemaPath:"#/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.y!==void 0&&typeof e.y!="number"){let i={instancePath:t+"/y",schemaPath:"#/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.anchorX!==void 0&&typeof e.anchorX!="number"){let i={instancePath:t+"/anchorX",schemaPath:"#/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.anchorY!==void 0&&typeof e.anchorY!="number"){let i={instancePath:t+"/anchorY",schemaPath:"#/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.scaleX!==void 0&&typeof e.scaleX!="number"){let i={instancePath:t+"/scaleX",schemaPath:"#/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.scaleY!==void 0&&typeof e.scaleY!="number"){let i={instancePath:t+"/scaleY",schemaPath:"#/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.rotation!==void 0&&typeof e.rotation!="number"){let i={instancePath:t+"/rotation",schemaPath:"#/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.originX!==void 0&&typeof e.originX!="number"){let i={instancePath:t+"/originX",schemaPath:"#/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.originY!==void 0&&typeof e.originY!="number"){let i={instancePath:t+"/originY",schemaPath:"#/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return ks.errors=r,s===0}function vs(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let p in e)if(p!=="items"){let f={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};r===null?r=[f]:r.push(f),s++}if(e.items!==void 0){let p=e.items;if(Array.isArray(p)){let f=p.length;for(let d=0;d<f;d++){let m=p[d],y=s,g=s;if(m&&typeof m=="object"&&!Array.isArray(m)){let k;if(m.resourceId===void 0&&(k="resourceId")||m.text===void 0&&(k="text")){let O={};r===null?r=[O]:r.push(O),s++}}var i=g===s;if(i){let k={instancePath:t+"/items/"+d,schemaPath:"#/properties/items/items/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[k]:r.push(k),s++}else s=y,r!==null&&(y?r.length=y:r=null);let h=s,w=s;if(m&&typeof m=="object"&&!Array.isArray(m)){let k;if(m.resourceId===void 0&&(k="resourceId")||m.layout===void 0&&(k="layout")){let O={};r===null?r=[O]:r.push(O),s++}}var l=w===s;if(l){let k={instancePath:t+"/items/"+d,schemaPath:"#/properties/items/items/allOf/1/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[k]:r.push(k),s++}else s=h,r!==null&&(h?r.length=h:r=null);let b=s,E=s;if(m&&typeof m=="object"&&!Array.isArray(m)){let k;if(m.text===void 0&&(k="text")||m.layout===void 0&&(k="layout")){let O={};r===null?r=[O]:r.push(O),s++}}var c=E===s;if(c){let k={instancePath:t+"/items/"+d,schemaPath:"#/properties/items/items/allOf/2/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[k]:r.push(k),s++}else s=b,r!==null&&(b?r.length=b:r=null);let v=s,P=s;if(m&&typeof m=="object"&&!Array.isArray(m)){let k;if(m.transformId===void 0&&(k="transformId")||m.transform===void 0&&(k="transform")){let O={};r===null?r=[O]:r.push(O),s++}}var u=P===s;if(u){let k={instancePath:t+"/items/"+d,schemaPath:"#/properties/items/items/allOf/3/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[k]:r.push(k),s++}else s=v,r!==null&&(v?r.length=v:r=null);if(m&&typeof m=="object"&&!Array.isArray(m)){if(m.id===void 0){let k={instancePath:t+"/items/"+d,schemaPath:"#/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[k]:r.push(k),s++}for(let k in m)if(!Qe.call(np.properties.items.items.properties,k)){let O={instancePath:t+"/items/"+d,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:k},message:"must NOT have additional properties"};r===null?r=[O]:r.push(O),s++}if(m.id!==void 0&&typeof m.id!="string"){let k={instancePath:t+"/items/"+d+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[k]:r.push(k),s++}if(m.animationName!==void 0&&typeof m.animationName!="string"){let k={instancePath:t+"/items/"+d+"/animationName",schemaPath:"#/properties/items/items/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[k]:r.push(k),s++}if(m.animationSpeed!==void 0&&typeof m.animationSpeed!="number"){let k={instancePath:t+"/items/"+d+"/animationSpeed",schemaPath:"#/properties/items/items/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[k]:r.push(k),s++}if(m.resourceId!==void 0&&typeof m.resourceId!="string"){let k={instancePath:t+"/items/"+d+"/resourceId",schemaPath:"#/properties/items/items/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[k]:r.push(k),s++}if(m.text!==void 0&&(Is(m.text,{instancePath:t+"/items/"+d+"/text",parentData:m,parentDataProperty:"text",rootData:a})||(r=r===null?Is.errors:r.concat(Is.errors),s=r.length)),m.layout!==void 0&&(ws(m.layout,{instancePath:t+"/items/"+d+"/layout",parentData:m,parentDataProperty:"layout",rootData:a})||(r=r===null?ws.errors:r.concat(ws.errors),s=r.length)),m.transformId!==void 0&&typeof m.transformId!="string"){let k={instancePath:t+"/items/"+d+"/transformId",schemaPath:"#/properties/items/items/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[k]:r.push(k),s++}if(m.transform!==void 0&&(ks(m.transform,{instancePath:t+"/items/"+d+"/transform",parentData:m,parentDataProperty:"transform",rootData:a})||(r=r===null?ks.errors:r.concat(ks.errors),s=r.length)),m.x!==void 0&&typeof m.x!="number"){let k={instancePath:t+"/items/"+d+"/x",schemaPath:"#/properties/items/items/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[k]:r.push(k),s++}if(m.y!==void 0&&typeof m.y!="number"){let k={instancePath:t+"/items/"+d+"/y",schemaPath:"#/properties/items/items/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[k]:r.push(k),s++}if(m.anchorX!==void 0&&typeof m.anchorX!="number"){let k={instancePath:t+"/items/"+d+"/anchorX",schemaPath:"#/properties/items/items/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[k]:r.push(k),s++}if(m.anchorY!==void 0&&typeof m.anchorY!="number"){let k={instancePath:t+"/items/"+d+"/anchorY",schemaPath:"#/properties/items/items/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[k]:r.push(k),s++}if(m.scaleX!==void 0&&typeof m.scaleX!="number"){let k={instancePath:t+"/items/"+d+"/scaleX",schemaPath:"#/properties/items/items/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[k]:r.push(k),s++}if(m.scaleY!==void 0&&typeof m.scaleY!="number"){let k={instancePath:t+"/items/"+d+"/scaleY",schemaPath:"#/properties/items/items/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[k]:r.push(k),s++}if(m.rotation!==void 0&&typeof m.rotation!="number"){let k={instancePath:t+"/items/"+d+"/rotation",schemaPath:"#/properties/items/items/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[k]:r.push(k),s++}if(m.originX!==void 0&&typeof m.originX!="number"){let k={instancePath:t+"/items/"+d+"/originX",schemaPath:"#/properties/items/items/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[k]:r.push(k),s++}if(m.originY!==void 0&&typeof m.originY!="number"){let k={instancePath:t+"/items/"+d+"/originY",schemaPath:"#/properties/items/items/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[k]:r.push(k),s++}if(m.layer!==void 0){let k=m.layer;if(typeof k!="number"){let O={instancePath:t+"/items/"+d+"/layer",schemaPath:"#/properties/items/items/properties/layer/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[O]:r.push(O),s++}if(!(k===10||k===30||k===50||k===70||k===90)){let O={instancePath:t+"/items/"+d+"/layer",schemaPath:"#/properties/items/items/properties/layer/enum",keyword:"enum",params:{allowedValues:np.properties.items.items.properties.layer.enum},message:"must be equal to one of the allowed values"};r===null?r=[O]:r.push(O),s++}}if(m.opacity!==void 0){let k=m.opacity;if(typeof k=="number"){if(k>1||isNaN(k)){let O={instancePath:t+"/items/"+d+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[O]:r.push(O),s++}if(k<0||isNaN(k)){let O={instancePath:t+"/items/"+d+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[O]:r.push(O),s++}}else{let O={instancePath:t+"/items/"+d+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[O]:r.push(O),s++}}m.blur!==void 0&&(De(m.blur,{instancePath:t+"/items/"+d+"/blur",parentData:m,parentDataProperty:"blur",rootData:a})||(r=r===null?De.errors:r.concat(De.errors),s=r.length)),m.animations!==void 0&&(ce(m.animations,{instancePath:t+"/items/"+d+"/animations",parentData:m,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let k={instancePath:t+"/items/"+d,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[k]:r.push(k),s++}}}else{let f={instancePath:t+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[f]:r.push(f),s++}}}else{let p={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}return vs.errors=r,s===0}function Rp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return vs(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?vs.errors:r.concat(vs.errors),s=r.length),Rp.errors=r,s===0}var Cp=$p;var Fw={type:"object",properties:{sounds:{type:"array",items:{$ref:"#/definitions/audioSound"}},resourceId:{type:"string"},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},loop:{type:"boolean"},interruption:{type:"string",enum:["immediate","loopEnd"]},startDelayMs:{type:"number",minimum:0}},anyOf:[{required:["resourceId"]},{required:["sounds"]}],allOf:[{not:{required:["resourceId","sounds"]}},{not:{required:["startDelayMs","sounds"]}}],additionalProperties:!1};function As(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0,i=s,l=!1,c=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.resourceId===void 0){let h={instancePath:t,schemaPath:"#/anyOf/0/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};r===null?r=[h]:r.push(h),s++}var u=c===s;if(l=l||u,!l){let h=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.sounds===void 0){let b={instancePath:t,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"sounds"},message:"must have required property 'sounds'"};r===null?r=[b]:r.push(b),s++}var u=h===s;l=l||u}if(l)s=i,r!==null&&(i?r.length=i:r=null);else{let h={instancePath:t,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[h]:r.push(h),s++}let p=s,f=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let h;if(e.resourceId===void 0&&(h="resourceId")||e.sounds===void 0&&(h="sounds")){let w={};r===null?r=[w]:r.push(w),s++}}var d=f===s;if(d){let h={instancePath:t,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[h]:r.push(h),s++}else s=p,r!==null&&(p?r.length=p:r=null);let m=s,y=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let h;if(e.startDelayMs===void 0&&(h="startDelayMs")||e.sounds===void 0&&(h="sounds")){let w={};r===null?r=[w]:r.push(w),s++}}var g=y===s;if(g){let h={instancePath:t,schemaPath:"#/allOf/1/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[h]:r.push(h),s++}else s=m,r!==null&&(m?r.length=m:r=null);if(e&&typeof e=="object"&&!Array.isArray(e)){for(let h in e)if(!(h==="sounds"||h==="resourceId"||h==="volume"||h==="muted"||h==="pan"||h==="loop"||h==="interruption"||h==="startDelayMs")){let w={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:h},message:"must NOT have additional properties"};r===null?r=[w]:r.push(w),s++}if(e.sounds!==void 0){let h=e.sounds;if(Array.isArray(h)){let w=h.length;for(let b=0;b<w;b++)je(h[b],{instancePath:t+"/sounds/"+b,parentData:h,parentDataProperty:b,rootData:a})||(r=r===null?je.errors:r.concat(je.errors),s=r.length)}else{let w={instancePath:t+"/sounds",schemaPath:"#/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[w]:r.push(w),s++}}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let h={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),s++}if(e.volume!==void 0){let h=e.volume;if(typeof h=="number"){if(h>100||isNaN(h)){let w={instancePath:t+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};r===null?r=[w]:r.push(w),s++}if(h<0||isNaN(h)){let w={instancePath:t+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[w]:r.push(w),s++}}else{let w={instancePath:t+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let h={instancePath:t+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[h]:r.push(h),s++}if(e.pan!==void 0){let h=e.pan;if(typeof h=="number"){if(h>1||isNaN(h)){let w={instancePath:t+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[w]:r.push(w),s++}if(h<-1||isNaN(h)){let w={instancePath:t+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};r===null?r=[w]:r.push(w),s++}}else{let w={instancePath:t+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let h={instancePath:t+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[h]:r.push(h),s++}if(e.interruption!==void 0){let h=e.interruption;if(typeof h!="string"){let w={instancePath:t+"/interruption",schemaPath:"#/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[w]:r.push(w),s++}if(!(h==="immediate"||h==="loopEnd")){let w={instancePath:t+"/interruption",schemaPath:"#/properties/interruption/enum",keyword:"enum",params:{allowedValues:Fw.properties.interruption.enum},message:"must be equal to one of the allowed values"};r===null?r=[w]:r.push(w),s++}}if(e.startDelayMs!==void 0){let h=e.startDelayMs;if(typeof h=="number"){if(h<0||isNaN(h)){let w={instancePath:t+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[w]:r.push(w),s++}}else{let w={instancePath:t+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),s++}}}else{let h={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[h]:r.push(h),s++}return As.errors=r,s===0}function $p(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return As(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?As.errors:r.concat(As.errors),s=r.length),$p.errors=r,s===0}var _p=Tp;var Uw={type:"object",properties:{type:{type:"string",enum:["boolean","number"]},target:{type:"integer",minimum:1},name:{type:"string",minLength:1},description:{type:"string",minLength:1},lockedName:{type:"string",minLength:1},lockedDescription:{type:"string",minLength:1},hidden:{type:"boolean"}},required:["type","name","description"],allOf:[{if:{properties:{type:{const:"number"}}},then:{required:["target"]}},{if:{properties:{type:{const:"boolean"}}},then:{not:{required:["target"]}}}],additionalProperties:!1};function Ps(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0,i=s,l=!0,c=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="number"){let g={};r===null?r=[g]:r.push(g),s++}var u=c===s;if(s=i,r!==null&&(i?r.length=i:r=null),u){let g=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.target===void 0){let w={instancePath:t,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"target"},message:"must have required property 'target'"};r===null?r=[w]:r.push(w),s++}var u=g===s;l=u}if(!l){let g={instancePath:t,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[g]:r.push(g),s++}let p=s,f=!0,d=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="boolean"){let g={};r===null?r=[g]:r.push(g),s++}var m=d===s;if(s=p,r!==null&&(p?r.length=p:r=null),m){let g=s,h=s,w=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let E;if(e.target===void 0&&(E="target")){let v={};r===null?r=[v]:r.push(v),s++}}var y=w===s;if(y){let E={instancePath:t,schemaPath:"#/allOf/1/then/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[E]:r.push(E),s++}else s=h,r!==null&&(h?r.length=h:r=null);var m=g===s;f=m}if(!f){let g={instancePath:t,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[g]:r.push(g),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let g={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};r===null?r=[g]:r.push(g),s++}if(e.name===void 0){let g={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"name"},message:"must have required property 'name'"};r===null?r=[g]:r.push(g),s++}if(e.description===void 0){let g={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"description"},message:"must have required property 'description'"};r===null?r=[g]:r.push(g),s++}for(let g in e)if(!(g==="type"||g==="target"||g==="name"||g==="description"||g==="lockedName"||g==="lockedDescription"||g==="hidden")){let h={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:g},message:"must NOT have additional properties"};r===null?r=[h]:r.push(h),s++}if(e.type!==void 0){let g=e.type;if(typeof g!="string"){let h={instancePath:t+"/type",schemaPath:"#/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),s++}if(!(g==="boolean"||g==="number")){let h={instancePath:t+"/type",schemaPath:"#/properties/type/enum",keyword:"enum",params:{allowedValues:Uw.properties.type.enum},message:"must be equal to one of the allowed values"};r===null?r=[h]:r.push(h),s++}}if(e.target!==void 0){let g=e.target;if(!(typeof g=="number"&&!(g%1)&&!isNaN(g))){let h={instancePath:t+"/target",schemaPath:"#/properties/target/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[h]:r.push(h),s++}if(typeof g=="number"&&(g<1||isNaN(g))){let h={instancePath:t+"/target",schemaPath:"#/properties/target/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};r===null?r=[h]:r.push(h),s++}}if(e.name!==void 0){let g=e.name;if(typeof g=="string"){if(Ne(g)<1){let h={instancePath:t+"/name",schemaPath:"#/properties/name/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[h]:r.push(h),s++}}else{let h={instancePath:t+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),s++}}if(e.description!==void 0){let g=e.description;if(typeof g=="string"){if(Ne(g)<1){let h={instancePath:t+"/description",schemaPath:"#/properties/description/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[h]:r.push(h),s++}}else{let h={instancePath:t+"/description",schemaPath:"#/properties/description/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),s++}}if(e.lockedName!==void 0){let g=e.lockedName;if(typeof g=="string"){if(Ne(g)<1){let h={instancePath:t+"/lockedName",schemaPath:"#/properties/lockedName/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[h]:r.push(h),s++}}else{let h={instancePath:t+"/lockedName",schemaPath:"#/properties/lockedName/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),s++}}if(e.lockedDescription!==void 0){let g=e.lockedDescription;if(typeof g=="string"){if(Ne(g)<1){let h={instancePath:t+"/lockedDescription",schemaPath:"#/properties/lockedDescription/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[h]:r.push(h),s++}}else{let h={instancePath:t+"/lockedDescription",schemaPath:"#/properties/lockedDescription/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),s++}}if(e.hidden!==void 0&&typeof e.hidden!="boolean"){let g={instancePath:t+"/hidden",schemaPath:"#/properties/hidden/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[g]:r.push(g),s++}}else{let g={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[g]:r.push(g),s++}return Ps.errors=r,s===0}function Tp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return Ps(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?Ps.errors:r.concat(Ps.errors),s=r.length),Tp.errors=r,s===0}var jp=Np;var Bw={type:"object",required:["type"],$defs:{keyframe:{type:"object",required:["value","duration"],properties:{value:{type:"number"},duration:{type:"number"},easing:{type:"string",enum:["linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easeInElastic","easeOutElastic","easeInOutElastic"]},relative:{type:"boolean"}},additionalProperties:!1},tweenProperty:{type:"object",properties:{initialValue:{type:"number"},keyframes:{type:"array",minItems:1,items:{$ref:"#/$defs/keyframe"}}},required:["keyframes"],additionalProperties:!1},updateTween:{type:"object",properties:{alpha:{$ref:"#/$defs/tweenProperty"},x:{$ref:"#/$defs/tweenProperty"},y:{$ref:"#/$defs/tweenProperty"},scaleX:{$ref:"#/$defs/tweenProperty"},scaleY:{$ref:"#/$defs/tweenProperty"},rotation:{$ref:"#/$defs/tweenProperty"}},additionalProperties:!1,minProperties:1},transitionTween:{type:"object",properties:{translateX:{$ref:"#/$defs/tweenProperty"},translateY:{$ref:"#/$defs/tweenProperty"},alpha:{$ref:"#/$defs/tweenProperty"},scaleX:{$ref:"#/$defs/tweenProperty"},scaleY:{$ref:"#/$defs/tweenProperty"},rotation:{$ref:"#/$defs/tweenProperty"}},additionalProperties:!1,minProperties:1},transitionSide:{type:"object",required:["tween"],properties:{tween:{$ref:"#/$defs/transitionTween"}},additionalProperties:!1},maskProgress:{$ref:"#/$defs/tweenProperty"},compositeMaskItem:{type:"object",required:["texture"],properties:{texture:{type:"string"},channel:{type:"string",enum:["red","green","blue","alpha"]},invert:{type:"boolean"}},additionalProperties:!1},mask:{type:"object",required:["kind"],properties:{kind:{type:"string",enum:["single","sequence","composite"]},texture:{type:"string"},textures:{type:"array",minItems:1,items:{type:"string"}},items:{type:"array",minItems:1,items:{$ref:"#/$defs/compositeMaskItem"}},combine:{type:"string",enum:["max","min","multiply","add"]},channel:{type:"string",enum:["red","green","blue","alpha"]},softness:{type:"number"},invert:{type:"boolean"},sample:{type:"string"},progress:{$ref:"#/$defs/maskProgress"}},additionalProperties:!1,allOf:[{if:{properties:{kind:{const:"single"}}},then:{required:["texture"]}},{if:{properties:{kind:{const:"sequence"}}},then:{required:["textures"]}},{if:{properties:{kind:{const:"composite"}}},then:{required:["items"]}}]}},properties:{name:{type:"string"},type:{type:"string",enum:["update","transition"]},complete:{type:"object",properties:{payload:{type:"object"}},additionalProperties:!0},tween:{$ref:"#/$defs/updateTween"},prev:{$ref:"#/$defs/transitionSide"},next:{$ref:"#/$defs/transitionSide"},mask:{$ref:"#/$defs/mask"}},allOf:[{if:{properties:{type:{const:"update"}}},then:{required:["tween"],not:{anyOf:[{required:["prev"]},{required:["next"]},{required:["mask"]}]}}},{if:{properties:{type:{const:"transition"}}},then:{not:{required:["tween"]},anyOf:[{required:["prev"]},{required:["next"]},{required:["mask"]}]}}],additionalProperties:!1,$id:"https://route-engine.runtime/schemas/projectData/animationResource.yaml"};var Yw={type:"object",required:["value","duration"],properties:{value:{type:"number"},duration:{type:"number"},easing:{type:"string",enum:["linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easeInElastic","easeOutElastic","easeInOutElastic"]},relative:{type:"boolean"}},additionalProperties:!1};function zr(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.value===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"value"},message:"must have required property 'value'"};r===null?r=[i]:r.push(i),s++}if(e.duration===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"duration"},message:"must have required property 'duration'"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(!(i==="value"||i==="duration"||i==="easing"||i==="relative")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.value!==void 0&&typeof e.value!="number"){let i={instancePath:t+"/value",schemaPath:"#/properties/value/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.duration!==void 0&&typeof e.duration!="number"){let i={instancePath:t+"/duration",schemaPath:"#/properties/duration/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.easing!==void 0){let i=e.easing;if(typeof i!="string"){let l={instancePath:t+"/easing",schemaPath:"#/properties/easing/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(!(i==="linear"||i==="easeInQuad"||i==="easeOutQuad"||i==="easeInOutQuad"||i==="easeInCubic"||i==="easeOutCubic"||i==="easeInOutCubic"||i==="easeInQuart"||i==="easeOutQuart"||i==="easeInOutQuart"||i==="easeInQuint"||i==="easeOutQuint"||i==="easeInOutQuint"||i==="easeInSine"||i==="easeOutSine"||i==="easeInOutSine"||i==="easeInExpo"||i==="easeOutExpo"||i==="easeInOutExpo"||i==="easeInCirc"||i==="easeOutCirc"||i==="easeInOutCirc"||i==="easeInBack"||i==="easeOutBack"||i==="easeInOutBack"||i==="easeInBounce"||i==="easeOutBounce"||i==="easeInOutBounce"||i==="easeInElastic"||i==="easeOutElastic"||i==="easeInOutElastic")){let l={instancePath:t+"/easing",schemaPath:"#/properties/easing/enum",keyword:"enum",params:{allowedValues:Yw.properties.easing.enum},message:"must be equal to one of the allowed values"};r===null?r=[l]:r.push(l),s++}}if(e.relative!==void 0&&typeof e.relative!="boolean"){let i={instancePath:t+"/relative",schemaPath:"#/properties/relative/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[i]:r.push(i),s++}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return zr.errors=r,s===0}function Q(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyframes===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"keyframes"},message:"must have required property 'keyframes'"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(!(i==="initialValue"||i==="keyframes")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.initialValue!==void 0&&typeof e.initialValue!="number"){let i={instancePath:t+"/initialValue",schemaPath:"#/properties/initialValue/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.keyframes!==void 0){let i=e.keyframes;if(Array.isArray(i)){if(i.length<1){let c={instancePath:t+"/keyframes",schemaPath:"#/properties/keyframes/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[c]:r.push(c),s++}let l=i.length;for(let c=0;c<l;c++)zr(i[c],{instancePath:t+"/keyframes/"+c,parentData:i,parentDataProperty:c,rootData:a})||(r=r===null?zr.errors:r.concat(zr.errors),s=r.length)}else{let l={instancePath:t+"/keyframes",schemaPath:"#/properties/keyframes/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return Q.errors=r,s===0}function xs(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let i={instancePath:t,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(!(i==="alpha"||i==="x"||i==="y"||i==="scaleX"||i==="scaleY"||i==="rotation")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}e.alpha!==void 0&&(Q(e.alpha,{instancePath:t+"/alpha",parentData:e,parentDataProperty:"alpha",rootData:a})||(r=r===null?Q.errors:r.concat(Q.errors),s=r.length)),e.x!==void 0&&(Q(e.x,{instancePath:t+"/x",parentData:e,parentDataProperty:"x",rootData:a})||(r=r===null?Q.errors:r.concat(Q.errors),s=r.length)),e.y!==void 0&&(Q(e.y,{instancePath:t+"/y",parentData:e,parentDataProperty:"y",rootData:a})||(r=r===null?Q.errors:r.concat(Q.errors),s=r.length)),e.scaleX!==void 0&&(Q(e.scaleX,{instancePath:t+"/scaleX",parentData:e,parentDataProperty:"scaleX",rootData:a})||(r=r===null?Q.errors:r.concat(Q.errors),s=r.length)),e.scaleY!==void 0&&(Q(e.scaleY,{instancePath:t+"/scaleY",parentData:e,parentDataProperty:"scaleY",rootData:a})||(r=r===null?Q.errors:r.concat(Q.errors),s=r.length)),e.rotation!==void 0&&(Q(e.rotation,{instancePath:t+"/rotation",parentData:e,parentDataProperty:"rotation",rootData:a})||(r=r===null?Q.errors:r.concat(Q.errors),s=r.length))}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return xs.errors=r,s===0}function Es(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let i={instancePath:t,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(!(i==="translateX"||i==="translateY"||i==="alpha"||i==="scaleX"||i==="scaleY"||i==="rotation")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}e.translateX!==void 0&&(Q(e.translateX,{instancePath:t+"/translateX",parentData:e,parentDataProperty:"translateX",rootData:a})||(r=r===null?Q.errors:r.concat(Q.errors),s=r.length)),e.translateY!==void 0&&(Q(e.translateY,{instancePath:t+"/translateY",parentData:e,parentDataProperty:"translateY",rootData:a})||(r=r===null?Q.errors:r.concat(Q.errors),s=r.length)),e.alpha!==void 0&&(Q(e.alpha,{instancePath:t+"/alpha",parentData:e,parentDataProperty:"alpha",rootData:a})||(r=r===null?Q.errors:r.concat(Q.errors),s=r.length)),e.scaleX!==void 0&&(Q(e.scaleX,{instancePath:t+"/scaleX",parentData:e,parentDataProperty:"scaleX",rootData:a})||(r=r===null?Q.errors:r.concat(Q.errors),s=r.length)),e.scaleY!==void 0&&(Q(e.scaleY,{instancePath:t+"/scaleY",parentData:e,parentDataProperty:"scaleY",rootData:a})||(r=r===null?Q.errors:r.concat(Q.errors),s=r.length)),e.rotation!==void 0&&(Q(e.rotation,{instancePath:t+"/rotation",parentData:e,parentDataProperty:"rotation",rootData:a})||(r=r===null?Q.errors:r.concat(Q.errors),s=r.length))}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return Es.errors=r,s===0}function Yr(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.tween===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"tween"},message:"must have required property 'tween'"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(i!=="tween"){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}e.tween!==void 0&&(Es(e.tween,{instancePath:t+"/tween",parentData:e,parentDataProperty:"tween",rootData:a})||(r=r===null?Es.errors:r.concat(Es.errors),s=r.length))}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return Yr.errors=r,s===0}var os={type:"object",required:["kind"],properties:{kind:{type:"string",enum:["single","sequence","composite"]},texture:{type:"string"},textures:{type:"array",minItems:1,items:{type:"string"}},items:{type:"array",minItems:1,items:{$ref:"#/$defs/compositeMaskItem"}},combine:{type:"string",enum:["max","min","multiply","add"]},channel:{type:"string",enum:["red","green","blue","alpha"]},softness:{type:"number"},invert:{type:"boolean"},sample:{type:"string"},progress:{$ref:"#/$defs/maskProgress"}},additionalProperties:!1,allOf:[{if:{properties:{kind:{const:"single"}}},then:{required:["texture"]}},{if:{properties:{kind:{const:"sequence"}}},then:{required:["textures"]}},{if:{properties:{kind:{const:"composite"}}},then:{required:["items"]}}]},zw={type:"object",required:["texture"],properties:{texture:{type:"string"},channel:{type:"string",enum:["red","green","blue","alpha"]},invert:{type:"boolean"}},additionalProperties:!1};function Ss(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.texture===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(!(i==="texture"||i==="channel"||i==="invert")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.texture!==void 0&&typeof e.texture!="string"){let i={instancePath:t+"/texture",schemaPath:"#/properties/texture/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.channel!==void 0){let i=e.channel;if(typeof i!="string"){let l={instancePath:t+"/channel",schemaPath:"#/properties/channel/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(!(i==="red"||i==="green"||i==="blue"||i==="alpha")){let l={instancePath:t+"/channel",schemaPath:"#/properties/channel/enum",keyword:"enum",params:{allowedValues:zw.properties.channel.enum},message:"must be equal to one of the allowed values"};r===null?r=[l]:r.push(l),s++}}if(e.invert!==void 0&&typeof e.invert!="boolean"){let i={instancePath:t+"/invert",schemaPath:"#/properties/invert/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[i]:r.push(i),s++}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return Ss.errors=r,s===0}function Os(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyframes===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"keyframes"},message:"must have required property 'keyframes'"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(!(i==="initialValue"||i==="keyframes")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.initialValue!==void 0&&typeof e.initialValue!="number"){let i={instancePath:t+"/initialValue",schemaPath:"#/properties/initialValue/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.keyframes!==void 0){let i=e.keyframes;if(Array.isArray(i)){if(i.length<1){let c={instancePath:t+"/keyframes",schemaPath:"#/properties/keyframes/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[c]:r.push(c),s++}let l=i.length;for(let c=0;c<l;c++)zr(i[c],{instancePath:t+"/keyframes/"+c,parentData:i,parentDataProperty:c,rootData:a})||(r=r===null?zr.errors:r.concat(zr.errors),s=r.length)}else{let l={instancePath:t+"/keyframes",schemaPath:"#/properties/keyframes/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return Os.errors=r,s===0}function Rs(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0,i=s,l=!0,c=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.kind!==void 0&&e.kind!=="single"){let b={};r===null?r=[b]:r.push(b),s++}var u=c===s;if(s=i,r!==null&&(i?r.length=i:r=null),u){let b=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.texture===void 0){let v={instancePath:t,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};r===null?r=[v]:r.push(v),s++}var u=b===s;l=u}if(!l){let b={instancePath:t,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[b]:r.push(b),s++}let p=s,f=!0,d=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.kind!==void 0&&e.kind!=="sequence"){let b={};r===null?r=[b]:r.push(b),s++}var m=d===s;if(s=p,r!==null&&(p?r.length=p:r=null),m){let b=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.textures===void 0){let v={instancePath:t,schemaPath:"#/allOf/1/then/required",keyword:"required",params:{missingProperty:"textures"},message:"must have required property 'textures'"};r===null?r=[v]:r.push(v),s++}var m=b===s;f=m}if(!f){let b={instancePath:t,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[b]:r.push(b),s++}let y=s,g=!0,h=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.kind!==void 0&&e.kind!=="composite"){let b={};r===null?r=[b]:r.push(b),s++}var w=h===s;if(s=y,r!==null&&(y?r.length=y:r=null),w){let b=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.items===void 0){let v={instancePath:t,schemaPath:"#/allOf/2/then/required",keyword:"required",params:{missingProperty:"items"},message:"must have required property 'items'"};r===null?r=[v]:r.push(v),s++}var w=b===s;g=w}if(!g){let b={instancePath:t,schemaPath:"#/allOf/2/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[b]:r.push(b),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.kind===void 0){let b={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[b]:r.push(b),s++}for(let b in e)if(!Qe.call(os.properties,b)){let E={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};r===null?r=[E]:r.push(E),s++}if(e.kind!==void 0){let b=e.kind;if(typeof b!="string"){let E={instancePath:t+"/kind",schemaPath:"#/properties/kind/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[E]:r.push(E),s++}if(!(b==="single"||b==="sequence"||b==="composite")){let E={instancePath:t+"/kind",schemaPath:"#/properties/kind/enum",keyword:"enum",params:{allowedValues:os.properties.kind.enum},message:"must be equal to one of the allowed values"};r===null?r=[E]:r.push(E),s++}}if(e.texture!==void 0&&typeof e.texture!="string"){let b={instancePath:t+"/texture",schemaPath:"#/properties/texture/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[b]:r.push(b),s++}if(e.textures!==void 0){let b=e.textures;if(Array.isArray(b)){if(b.length<1){let v={instancePath:t+"/textures",schemaPath:"#/properties/textures/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[v]:r.push(v),s++}let E=b.length;for(let v=0;v<E;v++)if(typeof b[v]!="string"){let P={instancePath:t+"/textures/"+v,schemaPath:"#/properties/textures/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[P]:r.push(P),s++}}else{let E={instancePath:t+"/textures",schemaPath:"#/properties/textures/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[E]:r.push(E),s++}}if(e.items!==void 0){let b=e.items;if(Array.isArray(b)){if(b.length<1){let v={instancePath:t+"/items",schemaPath:"#/properties/items/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[v]:r.push(v),s++}let E=b.length;for(let v=0;v<E;v++)Ss(b[v],{instancePath:t+"/items/"+v,parentData:b,parentDataProperty:v,rootData:a})||(r=r===null?Ss.errors:r.concat(Ss.errors),s=r.length)}else{let E={instancePath:t+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[E]:r.push(E),s++}}if(e.combine!==void 0){let b=e.combine;if(typeof b!="string"){let E={instancePath:t+"/combine",schemaPath:"#/properties/combine/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[E]:r.push(E),s++}if(!(b==="max"||b==="min"||b==="multiply"||b==="add")){let E={instancePath:t+"/combine",schemaPath:"#/properties/combine/enum",keyword:"enum",params:{allowedValues:os.properties.combine.enum},message:"must be equal to one of the allowed values"};r===null?r=[E]:r.push(E),s++}}if(e.channel!==void 0){let b=e.channel;if(typeof b!="string"){let E={instancePath:t+"/channel",schemaPath:"#/properties/channel/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[E]:r.push(E),s++}if(!(b==="red"||b==="green"||b==="blue"||b==="alpha")){let E={instancePath:t+"/channel",schemaPath:"#/properties/channel/enum",keyword:"enum",params:{allowedValues:os.properties.channel.enum},message:"must be equal to one of the allowed values"};r===null?r=[E]:r.push(E),s++}}if(e.softness!==void 0&&typeof e.softness!="number"){let b={instancePath:t+"/softness",schemaPath:"#/properties/softness/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[b]:r.push(b),s++}if(e.invert!==void 0&&typeof e.invert!="boolean"){let b={instancePath:t+"/invert",schemaPath:"#/properties/invert/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[b]:r.push(b),s++}if(e.sample!==void 0&&typeof e.sample!="string"){let b={instancePath:t+"/sample",schemaPath:"#/properties/sample/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[b]:r.push(b),s++}e.progress!==void 0&&(Os(e.progress,{instancePath:t+"/progress",parentData:e,parentDataProperty:"progress",rootData:a})||(r=r===null?Os.errors:r.concat(Os.errors),s=r.length))}else{let b={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[b]:r.push(b),s++}return Rs.errors=r,s===0}function Cs(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0,i=s,l=!0,c=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="update"){let b={};r===null?r=[b]:r.push(b),s++}var u=c===s;if(s=i,r!==null&&(i?r.length=i:r=null),u){let b=s,E=s,v=s,P=s,k=!1,O=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let $;if(e.prev===void 0&&($="prev")){let q={};r===null?r=[q]:r.push(q),s++}}var p=O===s;if(k=k||p,!k){let $=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Y;if(e.next===void 0&&(Y="next")){let T={};r===null?r=[T]:r.push(T),s++}}var p=$===s;if(k=k||p,!k){let Y=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let U;if(e.mask===void 0&&(U="mask")){let ie={};r===null?r=[ie]:r.push(ie),s++}}var p=Y===s;k=k||p}}if(k)s=P,r!==null&&(P?r.length=P:r=null);else{let $={};r===null?r=[$]:r.push($),s++}var f=v===s;if(f){let $={instancePath:t,schemaPath:"#/allOf/0/then/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[$]:r.push($),s++}else s=E,r!==null&&(E?r.length=E:r=null);if(e&&typeof e=="object"&&!Array.isArray(e)&&e.tween===void 0){let $={instancePath:t,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"tween"},message:"must have required property 'tween'"};r===null?r=[$]:r.push($),s++}var u=b===s;l=u}if(!l){let b={instancePath:t,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[b]:r.push(b),s++}let d=s,m=!0,y=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="transition"){let b={};r===null?r=[b]:r.push(b),s++}var g=y===s;if(s=d,r!==null&&(d?r.length=d:r=null),g){let b=s,E=s,v=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let $;if(e.tween===void 0&&($="tween")){let q={};r===null?r=[q]:r.push(q),s++}}var h=v===s;if(h){let $={instancePath:t,schemaPath:"#/allOf/1/then/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[$]:r.push($),s++}else s=E,r!==null&&(E?r.length=E:r=null);let P=s,k=!1,O=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.prev===void 0){let $={instancePath:t,schemaPath:"#/allOf/1/then/anyOf/0/required",keyword:"required",params:{missingProperty:"prev"},message:"must have required property 'prev'"};r===null?r=[$]:r.push($),s++}var w=O===s;if(k=k||w,!k){let $=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.next===void 0){let Y={instancePath:t,schemaPath:"#/allOf/1/then/anyOf/1/required",keyword:"required",params:{missingProperty:"next"},message:"must have required property 'next'"};r===null?r=[Y]:r.push(Y),s++}var w=$===s;if(k=k||w,!k){let Y=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.mask===void 0){let U={instancePath:t,schemaPath:"#/allOf/1/then/anyOf/2/required",keyword:"required",params:{missingProperty:"mask"},message:"must have required property 'mask'"};r===null?r=[U]:r.push(U),s++}var w=Y===s;k=k||w}}if(k)s=P,r!==null&&(P?r.length=P:r=null);else{let $={instancePath:t,schemaPath:"#/allOf/1/then/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[$]:r.push($),s++}var g=b===s;m=g}if(!m){let b={instancePath:t,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[b]:r.push(b),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let b={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};r===null?r=[b]:r.push(b),s++}for(let b in e)if(!(b==="name"||b==="type"||b==="complete"||b==="tween"||b==="prev"||b==="next"||b==="mask")){let E={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};r===null?r=[E]:r.push(E),s++}if(e.name!==void 0&&typeof e.name!="string"){let b={instancePath:t+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[b]:r.push(b),s++}if(e.type!==void 0){let b=e.type;if(typeof b!="string"){let E={instancePath:t+"/type",schemaPath:"#/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[E]:r.push(E),s++}if(!(b==="update"||b==="transition")){let E={instancePath:t+"/type",schemaPath:"#/properties/type/enum",keyword:"enum",params:{allowedValues:Bw.properties.type.enum},message:"must be equal to one of the allowed values"};r===null?r=[E]:r.push(E),s++}}if(e.complete!==void 0){let b=e.complete;if(b&&typeof b=="object"&&!Array.isArray(b)){if(b.payload!==void 0){let E=b.payload;if(!(E&&typeof E=="object"&&!Array.isArray(E))){let v={instancePath:t+"/complete/payload",schemaPath:"#/properties/complete/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[v]:r.push(v),s++}}}else{let E={instancePath:t+"/complete",schemaPath:"#/properties/complete/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[E]:r.push(E),s++}}e.tween!==void 0&&(xs(e.tween,{instancePath:t+"/tween",parentData:e,parentDataProperty:"tween",rootData:a})||(r=r===null?xs.errors:r.concat(xs.errors),s=r.length)),e.prev!==void 0&&(Yr(e.prev,{instancePath:t+"/prev",parentData:e,parentDataProperty:"prev",rootData:a})||(r=r===null?Yr.errors:r.concat(Yr.errors),s=r.length)),e.next!==void 0&&(Yr(e.next,{instancePath:t+"/next",parentData:e,parentDataProperty:"next",rootData:a})||(r=r===null?Yr.errors:r.concat(Yr.errors),s=r.length)),e.mask!==void 0&&(Rs(e.mask,{instancePath:t+"/mask",parentData:e,parentDataProperty:"mask",rootData:a})||(r=r===null?Rs.errors:r.concat(Rs.errors),s=r.length))}else{let b={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[b]:r.push(b),s++}return Cs.errors=r,s===0}function Np(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return Cs(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?Cs.errors:r.concat(Cs.errors),s=r.length),Np.errors=r,s===0}var Dp=Lp;function $s(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="name"||i==="nameVariableId")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.name!==void 0&&typeof e.name!="string"){let i={instancePath:t+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.nameVariableId!==void 0){let i=e.nameVariableId;if(typeof i=="string"){if(Ne(i)<1){let l={instancePath:t+"/nameVariableId",schemaPath:"#/properties/nameVariableId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/nameVariableId",schemaPath:"#/properties/nameVariableId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return $s.errors=r,s===0}function Lp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return $s(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?$s.errors:r.concat($s.errors),s=r.length),Lp.errors=r,s===0}var Mp=Vp;var Gw=new RegExp("^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$","u");function _s(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.hex===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"hex"},message:"must have required property 'hex'"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(i!=="hex"){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.hex!==void 0){let i=e.hex;if(typeof i=="string"){if(!Gw.test(i)){let l={instancePath:t+"/hex",schemaPath:"#/properties/hex/pattern",keyword:"pattern",params:{pattern:"^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"},message:'must match pattern "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"'};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/hex",schemaPath:"#/properties/hex/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return _s.errors=r,s===0}function Vp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return _s(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?_s.errors:r.concat(_s.errors),s=r.length),Vp.errors=r,s===0}var qp=Fp;function Ts(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyboard!==void 0){let i=e.keyboard;if(i&&typeof i=="object"&&!Array.isArray(i))for(let l in i){let c=i[l];if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.actions!==void 0){let u=c.actions;if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:t+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/actions",schemaPath:"#/properties/keyboard/additionalProperties/properties/actions/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}if(c.payload!==void 0){let u=c.payload;if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:t+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/payload",schemaPath:"#/properties/keyboard/additionalProperties/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}if(c.keydown!==void 0){let u=c.keydown;if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.payload!==void 0){let p=u.payload;if(!(p&&typeof p=="object"&&!Array.isArray(p))){let f={instancePath:t+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/keydown/payload",schemaPath:"#/properties/keyboard/additionalProperties/properties/keydown/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[f]:r.push(f),s++}}}else{let p={instancePath:t+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/keydown",schemaPath:"#/properties/keyboard/additionalProperties/properties/keydown/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}if(c.keyup!==void 0){let u=c.keyup;if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.payload!==void 0){let p=u.payload;if(!(p&&typeof p=="object"&&!Array.isArray(p))){let f={instancePath:t+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/keyup/payload",schemaPath:"#/properties/keyboard/additionalProperties/properties/keyup/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[f]:r.push(f),s++}}}else{let p={instancePath:t+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/keyup",schemaPath:"#/properties/keyboard/additionalProperties/properties/keyup/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}}else{let u={instancePath:t+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/keyboard/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[u]:r.push(u),s++}}else{let l={instancePath:t+"/keyboard",schemaPath:"#/properties/keyboard/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}if(e.keyup!==void 0){let i=e.keyup;if(i&&typeof i=="object"&&!Array.isArray(i))for(let l in i){let c=i[l];if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.actions!==void 0){let u=c.actions;if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:t+"/keyup/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/actions",schemaPath:"#/properties/keyup/additionalProperties/properties/actions/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}if(c.payload!==void 0){let u=c.payload;if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:t+"/keyup/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/payload",schemaPath:"#/properties/keyup/additionalProperties/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}}else{let u={instancePath:t+"/keyup/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/keyup/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[u]:r.push(u),s++}}else{let l={instancePath:t+"/keyup",schemaPath:"#/properties/keyup/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}if(e.elements!==void 0){let i=e.elements;if(Array.isArray(i)){let l=i.length;for(let c=0;c<l;c++){let u=i[c];if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:t+"/elements/"+c,schemaPath:"#/properties/elements/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}}else{let l={instancePath:t+"/elements",schemaPath:"#/properties/elements/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return Ts.errors=r,s===0}function Fp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return Ts(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?Ts.errors:r.concat(Ts.errors),s=r.length),Fp.errors=r,s===0}var Up=Bp;function js(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="fileType")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:t+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:t+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return js.errors=r,s===0}function Bp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return js(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?js.errors:r.concat(js.errors),s=r.length),Bp.errors=r,s===0}var Yp=zp;function Ns(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};r===null?r=[i]:r.push(i),s++}if(e.width===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};r===null?r=[i]:r.push(i),s++}if(e.height===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="fileType"||i==="width"||i==="height")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:t+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:t+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.width!==void 0){let i=e.width;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:t+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[l]:r.push(l),s++}}if(e.height!==void 0){let i=e.height;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:t+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[l]:r.push(l),s++}}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return Ns.errors=r,s===0}function zp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return Ns(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?Ns.errors:r.concat(Ns.errors),s=r.length),zp.errors=r,s===0}var Gp=Hp;function Ds(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.elements!==void 0){let i=e.elements;if(Array.isArray(i)){let l=i.length;for(let c=0;c<l;c++){let u=i[c];if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:t+"/elements/"+c,schemaPath:"#/properties/elements/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}}else{let l={instancePath:t+"/elements",schemaPath:"#/properties/elements/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return Ds.errors=r,s===0}function Hp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return Ds(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?Ds.errors:r.concat(Ds.errors),s=r.length),Hp.errors=r,s===0}var Xp=Wp;function Ls(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0,i=s,l=!1,c=null,u=s,p=s,f=s,d=s,m=!1,y=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let v;if(e.count===void 0&&(v="count")){let P={};r===null?r=[P]:r.push(P),s++}}var g=y===s;if(m=m||g,!m){let v=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let k;if(e.texture===void 0&&(k="texture")){let O={};r===null?r=[O]:r.push(O),s++}}var g=v===s;if(m=m||g,!m){let k=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let D;if(e.behaviors===void 0&&(D="behaviors")){let $={};r===null?r=[$]:r.push($),s++}}var g=k===s;if(m=m||g,!m){let D=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let q;if(e.emitter===void 0&&(q="emitter")){let Y={};r===null?r=[Y]:r.push(Y),s++}}var g=D===s;m=m||g}}}if(m)s=d,r!==null&&(d?r.length=d:r=null);else{let v={};r===null?r=[v]:r.push(v),s++}var h=f===s;if(h){let v={instancePath:t,schemaPath:"#/oneOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[v]:r.push(v),s++}else s=p,r!==null&&(p?r.length=p:r=null);if(e&&typeof e=="object"&&!Array.isArray(e)&&e.modules===void 0){let v={instancePath:t,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"modules"},message:"must have required property 'modules'"};r===null?r=[v]:r.push(v),s++}var b=u===s;b&&(l=!0,c=0);let w=s;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.texture===void 0){let v={instancePath:t,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};r===null?r=[v]:r.push(v),s++}if(e.behaviors===void 0){let v={instancePath:t,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"behaviors"},message:"must have required property 'behaviors'"};r===null?r=[v]:r.push(v),s++}if(e.emitter===void 0){let v={instancePath:t,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"emitter"},message:"must have required property 'emitter'"};r===null?r=[v]:r.push(v),s++}}var b=w===s;if(b&&l?(l=!1,c=[c,1]):b&&(l=!0,c=1),l)s=i,r!==null&&(i?r.length=i:r=null);else{let v={instancePath:t,schemaPath:"#/oneOf",keyword:"oneOf",params:{passingSchemas:c},message:"must match exactly one schema in oneOf"};r===null?r=[v]:r.push(v),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.width===void 0){let v={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};r===null?r=[v]:r.push(v),s++}if(e.height===void 0){let v={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};r===null?r=[v]:r.push(v),s++}for(let v in e)if(!(v==="width"||v==="height"||v==="seed"||v==="modules"||v==="count"||v==="texture"||v==="behaviors"||v==="emitter")){let P={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:v},message:"must NOT have additional properties"};r===null?r=[P]:r.push(P),s++}if(e.width!==void 0){let v=e.width;if(typeof v=="number"){if(v<=0||isNaN(v)){let P={instancePath:t+"/width",schemaPath:"#/properties/width/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};r===null?r=[P]:r.push(P),s++}}else{let P={instancePath:t+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[P]:r.push(P),s++}}if(e.height!==void 0){let v=e.height;if(typeof v=="number"){if(v<=0||isNaN(v)){let P={instancePath:t+"/height",schemaPath:"#/properties/height/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};r===null?r=[P]:r.push(P),s++}}else{let P={instancePath:t+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[P]:r.push(P),s++}}if(e.seed!==void 0&&typeof e.seed!="number"){let v={instancePath:t+"/seed",schemaPath:"#/properties/seed/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[v]:r.push(v),s++}if(e.modules!==void 0){let v=e.modules;if(v&&typeof v=="object"&&!Array.isArray(v)){if(v.emission===void 0){let P={instancePath:t+"/modules",schemaPath:"#/properties/modules/required",keyword:"required",params:{missingProperty:"emission"},message:"must have required property 'emission'"};r===null?r=[P]:r.push(P),s++}if(v.appearance===void 0){let P={instancePath:t+"/modules",schemaPath:"#/properties/modules/required",keyword:"required",params:{missingProperty:"appearance"},message:"must have required property 'appearance'"};r===null?r=[P]:r.push(P),s++}for(let P in v)if(!(P==="emission"||P==="movement"||P==="appearance"||P==="bounds")){let k={instancePath:t+"/modules",schemaPath:"#/properties/modules/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:P},message:"must NOT have additional properties"};r===null?r=[k]:r.push(k),s++}if(v.emission!==void 0){let P=v.emission;if(!(P&&typeof P=="object"&&!Array.isArray(P))){let k={instancePath:t+"/modules/emission",schemaPath:"#/properties/modules/properties/emission/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[k]:r.push(k),s++}}if(v.movement!==void 0){let P=v.movement;if(!(P&&typeof P=="object"&&!Array.isArray(P))){let k={instancePath:t+"/modules/movement",schemaPath:"#/properties/modules/properties/movement/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[k]:r.push(k),s++}}if(v.appearance!==void 0){let P=v.appearance;if(!(P&&typeof P=="object"&&!Array.isArray(P))){let k={instancePath:t+"/modules/appearance",schemaPath:"#/properties/modules/properties/appearance/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[k]:r.push(k),s++}}if(v.bounds!==void 0){let P=v.bounds;if(!(P&&typeof P=="object"&&!Array.isArray(P))){let k={instancePath:t+"/modules/bounds",schemaPath:"#/properties/modules/properties/bounds/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[k]:r.push(k),s++}}}else{let P={instancePath:t+"/modules",schemaPath:"#/properties/modules/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[P]:r.push(P),s++}}if(e.count!==void 0){let v=e.count;if(!(typeof v=="number"&&!(v%1)&&!isNaN(v))){let P={instancePath:t+"/count",schemaPath:"#/properties/count/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[P]:r.push(P),s++}if(typeof v=="number"&&(v<1||isNaN(v))){let P={instancePath:t+"/count",schemaPath:"#/properties/count/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};r===null?r=[P]:r.push(P),s++}}if(e.texture!==void 0){let v=e.texture,P=s,k=!1,O=null,D=s;if(typeof v=="string"){if(Ne(v)<1){let q={instancePath:t+"/texture",schemaPath:"#/properties/texture/oneOf/0/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[q]:r.push(q),s++}}else{let q={instancePath:t+"/texture",schemaPath:"#/properties/texture/oneOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[q]:r.push(q),s++}var E=D===s;E&&(k=!0,O=0);let $=s;if(!(v&&typeof v=="object"&&!Array.isArray(v))){let q={instancePath:t+"/texture",schemaPath:"#/properties/texture/oneOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[q]:r.push(q),s++}var E=$===s;if(E&&k?(k=!1,O=[O,1]):E&&(k=!0,O=1),k)s=P,r!==null&&(P?r.length=P:r=null);else{let q={instancePath:t+"/texture",schemaPath:"#/properties/texture/oneOf",keyword:"oneOf",params:{passingSchemas:O},message:"must match exactly one schema in oneOf"};r===null?r=[q]:r.push(q),s++}}if(e.behaviors!==void 0){let v=e.behaviors;if(Array.isArray(v)){if(v.length<1){let k={instancePath:t+"/behaviors",schemaPath:"#/properties/behaviors/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[k]:r.push(k),s++}let P=v.length;for(let k=0;k<P;k++){let O=v[k];if(O&&typeof O=="object"&&!Array.isArray(O)){if(O.type===void 0){let D={instancePath:t+"/behaviors/"+k,schemaPath:"#/properties/behaviors/items/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};r===null?r=[D]:r.push(D),s++}for(let D in O)if(!(D==="type"||D==="config")){let $={instancePath:t+"/behaviors/"+k,schemaPath:"#/properties/behaviors/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:D},message:"must NOT have additional properties"};r===null?r=[$]:r.push($),s++}if(O.type!==void 0){let D=O.type;if(typeof D=="string"){if(Ne(D)<1){let $={instancePath:t+"/behaviors/"+k+"/type",schemaPath:"#/properties/behaviors/items/properties/type/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[$]:r.push($),s++}}else{let $={instancePath:t+"/behaviors/"+k+"/type",schemaPath:"#/properties/behaviors/items/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[$]:r.push($),s++}}if(O.config!==void 0){let D=O.config;if(!(D&&typeof D=="object"&&!Array.isArray(D))){let $={instancePath:t+"/behaviors/"+k+"/config",schemaPath:"#/properties/behaviors/items/properties/config/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[$]:r.push($),s++}}}else{let D={instancePath:t+"/behaviors/"+k,schemaPath:"#/properties/behaviors/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[D]:r.push(D),s++}}}else{let P={instancePath:t+"/behaviors",schemaPath:"#/properties/behaviors/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[P]:r.push(P),s++}}if(e.emitter!==void 0){let v=e.emitter;if(v&&typeof v=="object"&&!Array.isArray(v)){if(v.lifetime===void 0){let P={instancePath:t+"/emitter",schemaPath:"#/properties/emitter/required",keyword:"required",params:{missingProperty:"lifetime"},message:"must have required property 'lifetime'"};r===null?r=[P]:r.push(P),s++}if(v.lifetime!==void 0){let P=v.lifetime;if(P&&typeof P=="object"&&!Array.isArray(P)){if(P.min===void 0){let k={instancePath:t+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/required",keyword:"required",params:{missingProperty:"min"},message:"must have required property 'min'"};r===null?r=[k]:r.push(k),s++}if(P.max===void 0){let k={instancePath:t+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/required",keyword:"required",params:{missingProperty:"max"},message:"must have required property 'max'"};r===null?r=[k]:r.push(k),s++}if(P.min!==void 0){let k=P.min;if(typeof k=="number"){if(k<0||isNaN(k)){let O={instancePath:t+"/emitter/lifetime/min",schemaPath:"#/properties/emitter/properties/lifetime/properties/min/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[O]:r.push(O),s++}}else{let O={instancePath:t+"/emitter/lifetime/min",schemaPath:"#/properties/emitter/properties/lifetime/properties/min/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[O]:r.push(O),s++}}if(P.max!==void 0){let k=P.max;if(typeof k=="number"){if(k<0||isNaN(k)){let O={instancePath:t+"/emitter/lifetime/max",schemaPath:"#/properties/emitter/properties/lifetime/properties/max/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[O]:r.push(O),s++}}else{let O={instancePath:t+"/emitter/lifetime/max",schemaPath:"#/properties/emitter/properties/lifetime/properties/max/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[O]:r.push(O),s++}}}else{let k={instancePath:t+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[k]:r.push(k),s++}}}else{let P={instancePath:t+"/emitter",schemaPath:"#/properties/emitter/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[P]:r.push(P),s++}}}else{let v={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[v]:r.push(v),s++}return Ls.errors=r,s===0}function Wp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return Ls(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?Ls.errors:r.concat(Ls.errors),s=r.length),Wp.errors=r,s===0}var Kp=Jp;var sp={type:"object",properties:{fileId:{type:"string"},fileType:{type:"string"},loop:{type:"boolean"},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},startDelayMs:{type:"number",minimum:0},playbackRate:{type:"number",minimum:0},startAt:{type:"number",minimum:0},endAt:{type:["number","null"],minimum:0}},required:["fileId"],additionalProperties:!1};function Ms(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(!Qe.call(sp.properties,i)){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:t+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:t+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:t+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[i]:r.push(i),s++}if(e.volume!==void 0){let i=e.volume;if(typeof i=="number"){if(i>100||isNaN(i)){let l={instancePath:t+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};r===null?r=[l]:r.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:t+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let i={instancePath:t+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[i]:r.push(i),s++}if(e.pan!==void 0){let i=e.pan;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:t+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[l]:r.push(l),s++}if(i<-1||isNaN(i)){let l={instancePath:t+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.startDelayMs!==void 0){let i=e.startDelayMs;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:t+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.playbackRate!==void 0){let i=e.playbackRate;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:t+"/playbackRate",schemaPath:"#/properties/playbackRate/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/playbackRate",schemaPath:"#/properties/playbackRate/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.startAt!==void 0){let i=e.startAt;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:t+"/startAt",schemaPath:"#/properties/startAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/startAt",schemaPath:"#/properties/startAt/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.endAt!==void 0){let i=e.endAt;if(typeof i!="number"&&i!==null){let l={instancePath:t+"/endAt",schemaPath:"#/properties/endAt/type",keyword:"type",params:{type:sp.properties.endAt.type},message:"must be number,null"};r===null?r=[l]:r.push(l),s++}if(typeof i=="number"&&(i<0||isNaN(i))){let l={instancePath:t+"/endAt",schemaPath:"#/properties/endAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return Ms.errors=r,s===0}function Jp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return Ms(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?Ms.errors:r.concat(Ms.errors),s=r.length),Jp.errors=r,s===0}var Qp=Zp;var Hw=new RegExp("^.+$","u");function Vs(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};r===null?r=[i]:r.push(i),s++}if(e.jsonData===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"jsonData"},message:"must have required property 'jsonData'"};r===null?r=[i]:r.push(i),s++}if(e.width===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};r===null?r=[i]:r.push(i),s++}if(e.height===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="jsonData"||i==="width"||i==="height"||i==="animations")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:t+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.jsonData!==void 0){let i=e.jsonData;if(!(i&&typeof i=="object"&&!Array.isArray(i))){let l={instancePath:t+"/jsonData",schemaPath:"#/properties/jsonData/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}if(e.width!==void 0){let i=e.width;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:t+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[l]:r.push(l),s++}}if(e.height!==void 0){let i=e.height;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:t+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[l]:r.push(l),s++}}if(e.animations!==void 0){let i=e.animations;if(i&&typeof i=="object"&&!Array.isArray(i)){for(let l in i)if(Hw.test(l)){let c=i[l];if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.frames===void 0){let u={instancePath:t+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/required",keyword:"required",params:{missingProperty:"frames"},message:"must have required property 'frames'"};r===null?r=[u]:r.push(u),s++}for(let u in c)if(!(u==="frames"||u==="animationSpeed"||u==="loop")){let p={instancePath:t+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:u},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),s++}if(c.frames!==void 0){let u=c.frames;if(Array.isArray(u)){let p=u.length;for(let f=0;f<p;f++)if(typeof u[f]!="number"){let d={instancePath:t+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/frames/"+f,schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/frames/items/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[d]:r.push(d),s++}}else{let p={instancePath:t+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/frames",schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/frames/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),s++}}if(c.animationSpeed!==void 0&&typeof c.animationSpeed!="number"){let u={instancePath:t+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/animationSpeed",schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[u]:r.push(u),s++}if(c.loop!==void 0&&typeof c.loop!="boolean"){let u={instancePath:t+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/loop",schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[u]:r.push(u),s++}}else{let u={instancePath:t+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[u]:r.push(u),s++}}}else{let l={instancePath:t+"/animations",schemaPath:"#/properties/animations/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return Vs.errors=r,s===0}function Zp(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return Vs(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?Vs.errors:r.concat(Vs.errors),s=r.length),Zp.errors=r,s===0}var ed=rd;var op={type:"object",properties:{fontId:{oneOf:[{type:"string",minLength:1},{type:"array",minItems:1,uniqueItems:!0,items:{type:"string",minLength:1}}]},colorId:{type:"string"},colorAlpha:{type:"number"},fontSize:{type:"number"},fontWeight:{type:"string"},fontStyle:{type:"string",enum:["normal","italic","oblique"]},lineHeight:{type:"number"},align:{type:"string"},wordWrap:{type:"boolean"},breakWords:{type:"boolean"},wordWrapWidth:{type:"number"},strokeColorId:{type:"string"},strokeAlpha:{type:"number"},strokeWidth:{type:"number"},shadow:{type:"object",properties:{colorId:{type:"string",minLength:1},alpha:{type:"number",minimum:0,maximum:1},blur:{type:"number",minimum:0},offsetX:{type:"number"},offsetY:{type:"number"}},required:["colorId"],additionalProperties:!1}},required:["fontId","fontSize","fontWeight","fontStyle","lineHeight","colorId"],additionalProperties:!1};function qs(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fontId===void 0){let l={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontId"},message:"must have required property 'fontId'"};r===null?r=[l]:r.push(l),s++}if(e.fontSize===void 0){let l={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontSize"},message:"must have required property 'fontSize'"};r===null?r=[l]:r.push(l),s++}if(e.fontWeight===void 0){let l={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontWeight"},message:"must have required property 'fontWeight'"};r===null?r=[l]:r.push(l),s++}if(e.fontStyle===void 0){let l={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontStyle"},message:"must have required property 'fontStyle'"};r===null?r=[l]:r.push(l),s++}if(e.lineHeight===void 0){let l={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"lineHeight"},message:"must have required property 'lineHeight'"};r===null?r=[l]:r.push(l),s++}if(e.colorId===void 0){let l={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"colorId"},message:"must have required property 'colorId'"};r===null?r=[l]:r.push(l),s++}for(let l in e)if(!Qe.call(op.properties,l)){let c={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),s++}if(e.fontId!==void 0){let l=e.fontId,c=s,u=!1,p=null,f=s;if(typeof l=="string"){if(Ne(l)<1){let m={instancePath:t+"/fontId",schemaPath:"#/properties/fontId/oneOf/0/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[m]:r.push(m),s++}}else{let m={instancePath:t+"/fontId",schemaPath:"#/properties/fontId/oneOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[m]:r.push(m),s++}var i=f===s;i&&(u=!0,p=0);let d=s;if(Array.isArray(l)){if(l.length<1){let h={instancePath:t+"/fontId",schemaPath:"#/properties/fontId/oneOf/1/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[h]:r.push(h),s++}let m=l.length;for(let h=0;h<m;h++){let w=l[h];if(typeof w=="string"){if(Ne(w)<1){let b={instancePath:t+"/fontId/"+h,schemaPath:"#/properties/fontId/oneOf/1/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[b]:r.push(b),s++}}else{let b={instancePath:t+"/fontId/"+h,schemaPath:"#/properties/fontId/oneOf/1/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[b]:r.push(b),s++}}let y=l.length,g;if(y>1){let h={};for(;y--;){let w=l[y];if(typeof w=="string"){if(typeof h[w]=="number"){g=h[w];let b={instancePath:t+"/fontId",schemaPath:"#/properties/fontId/oneOf/1/uniqueItems",keyword:"uniqueItems",params:{i:y,j:g},message:"must NOT have duplicate items (items ## "+g+" and "+y+" are identical)"};r===null?r=[b]:r.push(b),s++;break}h[w]=y}}}}else{let m={instancePath:t+"/fontId",schemaPath:"#/properties/fontId/oneOf/1/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[m]:r.push(m),s++}var i=d===s;if(i&&u?(u=!1,p=[p,1]):i&&(u=!0,p=1),u)s=c,r!==null&&(c?r.length=c:r=null);else{let m={instancePath:t+"/fontId",schemaPath:"#/properties/fontId/oneOf",keyword:"oneOf",params:{passingSchemas:p},message:"must match exactly one schema in oneOf"};r===null?r=[m]:r.push(m),s++}}if(e.colorId!==void 0&&typeof e.colorId!="string"){let l={instancePath:t+"/colorId",schemaPath:"#/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(e.colorAlpha!==void 0&&typeof e.colorAlpha!="number"){let l={instancePath:t+"/colorAlpha",schemaPath:"#/properties/colorAlpha/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}if(e.fontSize!==void 0&&typeof e.fontSize!="number"){let l={instancePath:t+"/fontSize",schemaPath:"#/properties/fontSize/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}if(e.fontWeight!==void 0&&typeof e.fontWeight!="string"){let l={instancePath:t+"/fontWeight",schemaPath:"#/properties/fontWeight/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(e.fontStyle!==void 0){let l=e.fontStyle;if(typeof l!="string"){let c={instancePath:t+"/fontStyle",schemaPath:"#/properties/fontStyle/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),s++}if(!(l==="normal"||l==="italic"||l==="oblique")){let c={instancePath:t+"/fontStyle",schemaPath:"#/properties/fontStyle/enum",keyword:"enum",params:{allowedValues:op.properties.fontStyle.enum},message:"must be equal to one of the allowed values"};r===null?r=[c]:r.push(c),s++}}if(e.lineHeight!==void 0&&typeof e.lineHeight!="number"){let l={instancePath:t+"/lineHeight",schemaPath:"#/properties/lineHeight/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}if(e.align!==void 0&&typeof e.align!="string"){let l={instancePath:t+"/align",schemaPath:"#/properties/align/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(e.wordWrap!==void 0&&typeof e.wordWrap!="boolean"){let l={instancePath:t+"/wordWrap",schemaPath:"#/properties/wordWrap/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[l]:r.push(l),s++}if(e.breakWords!==void 0&&typeof e.breakWords!="boolean"){let l={instancePath:t+"/breakWords",schemaPath:"#/properties/breakWords/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[l]:r.push(l),s++}if(e.wordWrapWidth!==void 0&&typeof e.wordWrapWidth!="number"){let l={instancePath:t+"/wordWrapWidth",schemaPath:"#/properties/wordWrapWidth/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}if(e.strokeColorId!==void 0&&typeof e.strokeColorId!="string"){let l={instancePath:t+"/strokeColorId",schemaPath:"#/properties/strokeColorId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(e.strokeAlpha!==void 0&&typeof e.strokeAlpha!="number"){let l={instancePath:t+"/strokeAlpha",schemaPath:"#/properties/strokeAlpha/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}if(e.strokeWidth!==void 0&&typeof e.strokeWidth!="number"){let l={instancePath:t+"/strokeWidth",schemaPath:"#/properties/strokeWidth/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}if(e.shadow!==void 0){let l=e.shadow;if(l&&typeof l=="object"&&!Array.isArray(l)){if(l.colorId===void 0){let c={instancePath:t+"/shadow",schemaPath:"#/properties/shadow/required",keyword:"required",params:{missingProperty:"colorId"},message:"must have required property 'colorId'"};r===null?r=[c]:r.push(c),s++}for(let c in l)if(!(c==="colorId"||c==="alpha"||c==="blur"||c==="offsetX"||c==="offsetY")){let u={instancePath:t+"/shadow",schemaPath:"#/properties/shadow/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};r===null?r=[u]:r.push(u),s++}if(l.colorId!==void 0){let c=l.colorId;if(typeof c=="string"){if(Ne(c)<1){let u={instancePath:t+"/shadow/colorId",schemaPath:"#/properties/shadow/properties/colorId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[u]:r.push(u),s++}}else{let u={instancePath:t+"/shadow/colorId",schemaPath:"#/properties/shadow/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[u]:r.push(u),s++}}if(l.alpha!==void 0){let c=l.alpha;if(typeof c=="number"){if(c>1||isNaN(c)){let u={instancePath:t+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[u]:r.push(u),s++}if(c<0||isNaN(c)){let u={instancePath:t+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[u]:r.push(u),s++}}else{let u={instancePath:t+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[u]:r.push(u),s++}}if(l.blur!==void 0){let c=l.blur;if(typeof c=="number"){if(c<0||isNaN(c)){let u={instancePath:t+"/shadow/blur",schemaPath:"#/properties/shadow/properties/blur/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[u]:r.push(u),s++}}else{let u={instancePath:t+"/shadow/blur",schemaPath:"#/properties/shadow/properties/blur/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[u]:r.push(u),s++}}if(l.offsetX!==void 0&&typeof l.offsetX!="number"){let c={instancePath:t+"/shadow/offsetX",schemaPath:"#/properties/shadow/properties/offsetX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[c]:r.push(c),s++}if(l.offsetY!==void 0&&typeof l.offsetY!="number"){let c={instancePath:t+"/shadow/offsetY",schemaPath:"#/properties/shadow/properties/offsetY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[c]:r.push(c),s++}}else{let c={instancePath:t+"/shadow",schemaPath:"#/properties/shadow/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[c]:r.push(c),s++}}}else{let l={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}return qs.errors=r,s===0}function rd(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return qs(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?qs.errors:r.concat(qs.errors),s=r.length),rd.errors=r,s===0}var td=nd;var Xw={type:"object",properties:{x:{type:"integer"},y:{type:"integer"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"}},additionalProperties:!1};function Fs(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!Qe.call(Xw.properties,i)){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.x!==void 0){let i=e.x;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:t+"/x",schemaPath:"#/properties/x/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[l]:r.push(l),s++}}if(e.y!==void 0){let i=e.y;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:t+"/y",schemaPath:"#/properties/y/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[l]:r.push(l),s++}}if(e.anchorX!==void 0&&typeof e.anchorX!="number"){let i={instancePath:t+"/anchorX",schemaPath:"#/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.anchorY!==void 0&&typeof e.anchorY!="number"){let i={instancePath:t+"/anchorY",schemaPath:"#/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.scaleX!==void 0&&typeof e.scaleX!="number"){let i={instancePath:t+"/scaleX",schemaPath:"#/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.scaleY!==void 0&&typeof e.scaleY!="number"){let i={instancePath:t+"/scaleY",schemaPath:"#/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.rotation!==void 0&&typeof e.rotation!="number"){let i={instancePath:t+"/rotation",schemaPath:"#/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.originX!==void 0&&typeof e.originX!="number"){let i={instancePath:t+"/originX",schemaPath:"#/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}if(e.originY!==void 0&&typeof e.originY!="number"){let i={instancePath:t+"/originY",schemaPath:"#/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[i]:r.push(i),s++}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return Fs.errors=r,s===0}function nd(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return Fs(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?Fs.errors:r.concat(Fs.errors),s=r.length),nd.errors=r,s===0}var sd=od;function Us(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};r===null?r=[i]:r.push(i),s++}if(e.width===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};r===null?r=[i]:r.push(i),s++}if(e.height===void 0){let i={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};r===null?r=[i]:r.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="fileType"||i==="width"||i==="height")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:t+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:t+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[i]:r.push(i),s++}if(e.width!==void 0){let i=e.width;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:t+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[l]:r.push(l),s++}}if(e.height!==void 0){let i=e.height;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:t+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[l]:r.push(l),s++}}}else{let i={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[i]:r.push(i),s++}return Us.errors=r,s===0}function od(e,{instancePath:t="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let r=null,s=0;return Us(e,{instancePath:t,parentData:n,parentDataProperty:o,rootData:a})||(r=r===null?Us.errors:r.concat(Us.errors),s=r.length),od.errors=r,s===0}var Zt=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Qt=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),ur=e=>e===void 0?void 0:structuredClone(e),Ww=Object.freeze({achievement:"achievements",animation:"animations",character:"characters",color:"colors",control:"controls",font:"fonts",image:"images",layout:"layouts",particle:"particles",sound:"sounds",spritesheet:"spritesheets",textStyle:"textStyles",transform:"transforms",video:"videos"}),Kw=new Set(["background","bgm","character","choice","cleanAll","control","dialogue","form","layout","screen","sfx","visual","voice"]),Jw=Object.freeze({background:ip,bgm:lp,character:up,choice:dp,cleanAll:mp,control:hp,dialogue:bp,form:wp,layout:vp,screen:Pp,sfx:Ep,visual:Op,voice:Cp}),Qw=Object.freeze({achievement:_p,animation:jp,character:Dp,color:Mp,control:qp,font:Up,image:Yp,layout:Gp,particle:Xp,sound:Kp,spritesheet:Qp,textStyle:ed,transform:td,video:sd}),Zw=new Set(["files","language","patches"]),e0=new Set(["actionType","ignoreFields","lineId","mode","payload","type"]),r0=new Set(["lineId","mode","payload","type"]),t0=new Set(["mode","payload","sceneId","type"]),n0=new Set(["mode","operation","payload","resourceId","type"]),s0=new Set(["fileId","mimeType"]),z=(e,t)=>{throw new Error(`Invalid l10nData at ${e}: ${t}`)},Ge=(e,t)=>{Qt(e)||z(t,"expected an object")},Qi=(e,t)=>{Array.isArray(e)||z(t,"expected an array")},dt=(e,t)=>{(typeof e!="string"||e.length===0)&&z(t,"expected a non-empty string")},cd=(e,t)=>{typeof e!="string"&&z(t,"expected a string")},er=(e,t,n)=>{for(let o of Object.keys(e))t.has(o)||z(`${n}.${o}`,"unknown field")},rr=(e,t,n)=>{for(let o of t)Zt(e,o)||z(n,`missing required field "${o}"`)},o0=e=>e.replaceAll("~1","/").replaceAll("~0","~"),i0=(e,t)=>{let n=(t?.instancePath??"").split("/").slice(1).map(o0);return t?.keyword==="required"?n.push(t.params.missingProperty):t?.keyword==="additionalProperties"&&n.push(t.params.additionalProperty),n.reduce((o,a)=>/^\d+$/.test(a)?`${o}[${a}]`:`${o}.${a}`,e)},a0=(e=[])=>e.filter(t=>!["anyOf","if","not","oneOf"].includes(t.keyword)).reduce((t,n)=>{if(t===void 0)return n;let o=n.instancePath.split("/").length,a=t.instancePath.split("/").length;return o>a?n:t},void 0)??e[0],ud=({value:e,validator:t,path:n,contract:o})=>{if(t(e))return;let a=a0(t.errors);z(i0(n,a),`does not match ${o}: ${a?.message??"schema validation failed"}`)},Bs=(e,t,n=new WeakSet)=>{if(typeof e=="number"){Number.isFinite(e)||z(t,"expected a finite number");return}if(!(e===null||typeof e!="object"||n.has(e))){if(n.add(e),Array.isArray(e)){e.forEach((o,a)=>Bs(o,`${t}[${a}]`,n));return}Object.entries(e).forEach(([o,a])=>Bs(a,`${t}.${o}`,n))}},Ze=(e,t)=>{e===""&&z(t,"expected a non-empty resourceId")},l0=(e,t,n)=>{let o=(s,i)=>Ze(s?.resourceId,`${i}.resourceId`),a=(s,i)=>(s??[]).forEach((l,c)=>Ze(l?.resourceId,`${i}[${c}].resourceId`)),r=(s,i)=>{Ze(s?.resourceId,`${i}.resourceId`),a(s?.sounds,`${i}.sounds`)};switch(e){case"background":Ze(t.resourceId,`${n}.resourceId`),o(t.animations,`${n}.animations`);break;case"bgm":case"voice":r(t,n);break;case"sfx":a(t.items,`${n}.items`),(t.channels??[]).forEach((s,i)=>a(s?.sounds,`${n}.channels[${i}].sounds`));break;case"character":(t.items??[]).forEach((s,i)=>{(s.sprites??[]).forEach((l,c)=>Ze(l?.resourceId,`${n}.items[${i}].sprites[${c}].resourceId`)),o(s.animations,`${n}.items[${i}].animations`)});break;case"choice":case"form":case"layout":Ze(t.resourceId,`${n}.resourceId`),o(t.animations,`${n}.animations`);break;case"control":Ze(t.resourceId,`${n}.resourceId`);break;case"dialogue":Ze(t.ui?.resourceId,`${n}.ui.resourceId`),o(t.ui?.animations,`${n}.ui.animations`),(t.character?.sprite?.items??[]).forEach((s,i)=>Ze(s?.resourceId,`${n}.character.sprite.items[${i}].resourceId`)),o(t.character?.sprite?.animations,`${n}.character.sprite.animations`);break;case"screen":o(t.animations,`${n}.animations`);break;case"visual":(t.items??[]).forEach((s,i)=>{Ze(s?.resourceId,`${n}.items[${i}].resourceId`),o(s?.animations,`${n}.items[${i}].animations`)});break;default:break}},ft=(e,t)=>{dt(e,t),(e==="__proto__"||e==="constructor"||e==="prototype")&&z(t,`"${e}" is not a safe ID`)},c0=(e,t)=>{dt(e,t),(e==="."||e===".."||e.includes("/")||e.includes("\\")||e.includes("\0"))&&z(t,"must be a safe single filename")},Jt=(e,t)=>{if(Object.is(e,t))return!0;if(Array.isArray(e)||Array.isArray(t))return!Array.isArray(e)||!Array.isArray(t)?!1:e.length===t.length&&e.every((a,r)=>Jt(a,t[r]));if(!Qt(e)||!Qt(t))return!1;let n=Object.keys(e).sort(),o=Object.keys(t).sort();return Jt(n,o)&&n.every(a=>Jt(e[a],t[a]))},Ys=(e,t=new Set,n=new WeakSet)=>{if(Array.isArray(e))return e.forEach(o=>Ys(o,t,n)),t;if(!Qt(e)||n.has(e))return t;n.add(e);for(let[o,a]of Object.entries(e))o==="fileId"&&typeof a=="string"&&t.add(a),Ys(a,t,n);return t},u0=e=>{let t=new Map;for(let[n,o]of Object.entries(e?.story?.scenes??{}))for(let[a,r]of Object.entries(o?.sections??{}))for(let[s,i]of(r?.lines??[]).entries()){if(typeof i?.id!="string")continue;let l=t.get(i.id)??[];l.push({sceneId:n,sectionId:a,lineIndex:s,line:i}),t.set(i.id,l)}return t},pd=(e,t,n)=>{let o=e.get(t)??[];return o.length===0&&z(n,`lineId "${t}" does not exist in projectData`),o.length>1&&z(n,`lineId "${t}" is not globally unique in projectData`),o[0]},dd=(e,t)=>e.story.scenes[t.sceneId].sections[t.sectionId].lines[t.lineIndex],id=e=>({items:(e?.items??[]).map(t=>({id:t?.id,events:t?.events}))}),ad=e=>{let t=ur(e??{});delete t.resourceId,delete t.animations;for(let n of Object.values(t.fields??{}))Qt(n)&&delete n.placeholder;return t},p0=(e,t,n,o)=>{e==="choice"&&!Jt(id(t),id(n))&&z(o,"choice item IDs and events must remain identical to the source action"),e==="form"&&!Jt(ad(t),ad(n))&&z(o,"form behavior must remain identical; only presentation fields and placeholders may change")},d0=({patch:e,path:t,lineIndex:n})=>{er(e,e0,t),rr(e,["type","lineId","actionType","payload"],t),ft(e.lineId,`${t}.lineId`),dt(e.actionType,`${t}.actionType`),Ge(e.payload,`${t}.payload`),e.mode!==void 0&&e.mode!=="replace"&&z(`${t}.mode`,'line.action supports only "replace"'),Kw.has(e.actionType)||z(`${t}.actionType`,`"${e.actionType}" is not a localizable presentation action`);let o=pd(n,e.lineId,`${t}.lineId`),a=o.line?.actions?.[e.actionType];return a===void 0&&z(`${t}.actionType`,`source line "${e.lineId}" does not contain action "${e.actionType}"`),e.actionType==="dialogue"?((!Array.isArray(e.ignoreFields)||e.ignoreFields.length!==1||e.ignoreFields[0]!=="content")&&z(`${t}.ignoreFields`,'dialogue action replacement requires exactly ["content"]'),Zt(e.payload,"content")&&z(`${t}.payload.content`,"dialogue content must use a separate line.dialogue patch")):e.ignoreFields!==void 0&&z(`${t}.ignoreFields`,"ignoreFields is supported only for dialogue actions"),p0(e.actionType,a,e.payload,`${t}.payload`),ud({value:e.payload,validator:Jw[e.actionType],path:`${t}.payload`,contract:`the ${e.actionType} presentation-action schema`}),Bs(e.payload,`${t}.payload`),l0(e.actionType,e.payload,`${t}.payload`),{kind:"line.action",key:`line.action:${e.lineId}:${e.actionType}`,location:o,patch:e}},f0=(e,t)=>{Qi(e,t),e.forEach((n,o)=>{Ge(n,`${t}[${o}]`),er(n,new Set(["text"]),`${t}[${o}]`),rr(n,["text"],`${t}[${o}]`),cd(n.text,`${t}[${o}].text`)})},m0=({patch:e,path:t,lineIndex:n})=>{er(e,r0,t),rr(e,["type","lineId","payload"],t),ft(e.lineId,`${t}.lineId`),Ge(e.payload,`${t}.payload`),er(e.payload,new Set(["content"]),`${t}.payload`),rr(e.payload,["content"],`${t}.payload`),f0(e.payload.content,`${t}.payload.content`),e.mode!==void 0&&e.mode!=="replace"&&z(`${t}.mode`,'line.dialogue supports only "replace"');let o=pd(n,e.lineId,`${t}.lineId`);return o.line?.actions?.dialogue===void 0&&z(`${t}.lineId`,`source line "${e.lineId}" does not contain a dialogue action`),{kind:"line.dialogue",key:`line.dialogue:${e.lineId}`,location:o,patch:e}},y0=({patch:e,path:t,projectData:n})=>(er(e,t0,t),rr(e,["type","mode","sceneId","payload"],t),ft(e.sceneId,`${t}.sceneId`),Ge(e.payload,`${t}.payload`),er(e.payload,new Set(["name"]),`${t}.payload`),rr(e.payload,["name"],`${t}.payload`),cd(e.payload.name,`${t}.payload.name`),e.mode!=="patch"&&z(`${t}.mode`,'story.scene requires "patch"'),Zt(n?.story?.scenes??{},e.sceneId)||z(`${t}.sceneId`,`sceneId "${e.sceneId}" does not exist`),{kind:"story.scene",key:`story.scene:${e.sceneId}`,patch:e}),h0=(e,t,n)=>{Ge(t,n),["font","image","sound","spritesheet","video"].includes(e)&&dt(t.fileId,`${n}.fileId`),["image","video"].includes(e)&&(Number.isInteger(t.width)||z(`${n}.width`,"expected an integer"),Number.isInteger(t.height)||z(`${n}.height`,"expected an integer")),e==="spritesheet"&&(Ge(t.jsonData,`${n}.jsonData`),Number.isInteger(t.width)||z(`${n}.width`,"expected an integer"),Number.isInteger(t.height)||z(`${n}.height`,"expected an integer")),e==="color"&&(typeof t.hex!="string"||!/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(t.hex))&&z(`${n}.hex`,"expected an opaque #RGB or #RRGGBB color"),ud({value:t,validator:Qw[e],path:n,contract:`the resource.${e} schema`}),Bs(t,n)},g0=({patch:e,path:t,projectData:n,packageFileIds:o,canonicalFileIds:a})=>{er(e,n0,t),rr(e,["type","resourceId","payload"],t),ft(e.resourceId,`${t}.resourceId`);let r=e.type.slice(9),s=Ww[r];s||z(`${t}.type`,`unsupported resource patch type "${e.type}"`),e.mode!==void 0&&e.mode!=="replace"&&z(`${t}.mode`,'resource patches support only "replace"'),e.operation!==void 0&&e.operation!=="add"&&z(`${t}.operation`,'the only resource operation is "add"'),h0(r,e.payload,`${t}.payload`);let i=n?.resources?.[s]??{},l=Zt(i,e.resourceId);e.operation==="add"&&l&&z(`${t}.resourceId`,`cannot add existing ${r} resource "${e.resourceId}"`),e.operation!=="add"&&!l&&z(`${t}.resourceId`,`cannot replace missing ${r} resource "${e.resourceId}"`);for(let c of Ys(e.payload))!o.has(c)&&!a.has(c)&&z(`${t}.payload`,`fileId "${c}" is not declared by this package or the canonical project`);return{kind:"resource",key:`${e.type}:${e.resourceId}`,collectionName:s,path:t,patch:e}},ld=({resources:e,collectionName:t,resourceId:n,path:o,label:a})=>{n!==void 0&&(typeof n!="string"||n.length===0||!Zt(e?.[t]??{},n))&&z(o,`${a} resource "${n}" was not found`)},b0=(e,t)=>{let n=ur(e);for(let a of t.patches)a.kind==="resource"&&(n.resources[a.collectionName]??={},n.resources[a.collectionName][a.patch.resourceId]=ur(a.patch.payload));let o=n.resources??{};for(let a of t.patches){if(a.patch.type!=="resource.textStyle")continue;let r=a.patch.payload,s=Array.isArray(r.fontId)?r.fontId:[r.fontId];s.forEach((i,l)=>ld({resources:o,collectionName:"fonts",resourceId:i,path:`${a.path}.payload.fontId${s.length>1?`[${l}]`:""}`,label:"font"}));for(let[i,l]of[["colorId",r.colorId],["strokeColorId",r.strokeColorId],["shadow.colorId",r.shadow?.colorId]])ld({resources:o,collectionName:"colors",resourceId:l,path:`${a.path}.payload.${i}`,label:"color"})}},I0=({patch:e,path:t,projectData:n,lineIndex:o,packageFileIds:a,canonicalFileIds:r})=>{if(Ge(e,t),dt(e.type,`${t}.type`),e.type==="line.action")return d0({patch:e,path:t,lineIndex:o});if(e.type==="line.dialogue")return m0({patch:e,path:t,lineIndex:o});if(e.type==="story.scene")return y0({patch:e,path:t,projectData:n});if(e.type.startsWith("resource."))return g0({patch:e,path:t,projectData:n,packageFileIds:a,canonicalFileIds:r});z(`${t}.type`,`unsupported patch type "${e.type}"`)},w0=(e,t)=>{Qi(e,t);let n=new Set;return e.forEach((o,a)=>{let r=`${t}[${a}]`;Ge(o,r),er(o,s0,r),rr(o,["fileId"],r),c0(o.fileId,`${r}.fileId`),o.mimeType!==void 0&&(typeof o.mimeType!="string"||o.mimeType.length===0)&&z(`${r}.mimeType`,"expected a non-empty string"),n.has(o.fileId)&&z(`${r}.fileId`,`duplicate fileId "${o.fileId}"`),n.add(o.fileId)}),n},k0=({packageId:e,packageData:t,path:n,projectData:o,lineIndex:a,canonicalFileIds:r})=>{Ge(t,n),er(t,Zw,n),rr(t,["language","files","patches"],n),dt(t.language,`${n}.language`);let s=w0(t.files,`${n}.files`);Qi(t.patches,`${n}.patches`);let i=new Set,l=t.patches.map((c,u)=>{let p=I0({patch:c,path:`${n}.patches[${u}]`,projectData:o,lineIndex:a,packageFileIds:s,canonicalFileIds:r});return i.has(p.key)&&z(`${n}.patches[${u}]`,`duplicate patch target "${p.key}"`),i.add(p.key),p});return{id:e,data:t,fileIds:s,patches:l}},fd=({projectData:e,l10nData:t})=>{if(t===void 0)return{packages:new Map};Ge(t,"l10nData"),er(t,new Set(["packages"]),"l10nData"),rr(t,["packages"],"l10nData"),Ge(t.packages,"l10nData.packages");let n=u0(e),o=Ys(e?.resources??{}),a=new Map,r=new Map;for(let[s,i]of Object.entries(t.packages)){ft(s,`l10nData.packages.${s}`);let l=k0({packageId:s,packageData:i,path:`l10nData.packages.${s}`,projectData:e,lineIndex:n,canonicalFileIds:o});for(let c of l.fileIds){o.has(c)&&z(`l10nData.packages.${s}.files`,`fileId "${c}" conflicts with a canonical project file`);let u=r.get(c);u!==void 0&&z(`l10nData.packages.${s}.files`,`fileId "${c}" is already declared by package "${u}"`),r.set(c,s)}b0(e,l),a.set(s,l)}return{packages:a}},v0=(e,t)=>{let{collectionName:n,patch:o}=t;e.resources[n]??={},e.resources[n][o.resourceId]=ur(o.payload)},A0=(e,t)=>{let{patch:n}=t,o=e.story.scenes[n.sceneId];o.name=n.payload.name},P0=(e,t)=>{let{location:n,patch:o}=t,a=dd(e,n);if(o.actionType!=="dialogue"){a.actions[o.actionType]=ur(o.payload);return}let r=ur(n.line.actions.dialogue.content);a.actions.dialogue=ur(o.payload),r!==void 0&&(a.actions.dialogue.content=r)},x0=(e,t)=>{let{location:n,patch:o}=t,a=dd(e,n);a.actions.dialogue.content=ur(o.payload.content)},md=({projectData:e,l10nData:t})=>{let n=fd({projectData:e,l10nData:t});return[{l10nId:null,language:null},...Array.from(n.packages.values(),o=>({l10nId:o.id,language:o.data.language}))]},zs=({projectData:e,l10nData:t,l10nId:n=null})=>{let o=fd({projectData:e,l10nData:t});if(n!==null&&(ft(n,"l10nId"),o.packages.has(n)||z("l10nId",`package "${n}" was not imported`)),n===null)return e;let a=ur(e),r=o.packages.get(n).patches;return r.filter(s=>s.kind==="resource").forEach(s=>v0(a,s)),r.filter(s=>s.kind==="story.scene").forEach(s=>A0(a,s)),r.filter(s=>s.kind==="line.action").forEach(s=>P0(a,s)),r.filter(s=>s.kind==="line.dialogue").forEach(s=>x0(a,s)),a};var Zi=Object.freeze({auto:1e3,skip:80,authored:1e3}),tn=new Set(["startAutoNextTimer","clearAutoNextTimer","startSkipNextTimer","clearSkipNextTimer","nextLineConfigTimer","clearNextLineConfigTimer"]),yd=new WeakMap,E0=new ArrayBuffer(8),ea=new DataView(E0),S0=e=>{let t=yd.get(e);if(t)return t;let n={dispatchDepth:0};return yd.set(e,n),n},O0=e=>{if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null},R0=(e,t)=>Object.keys(e).length===t.length&&t.every(o=>Object.prototype.hasOwnProperty.call(e,o)),Sr=(e,t,n)=>{if(!O0(e)||!R0(e,t))throw new TypeError(`${n} has an invalid shape`)},en=(e,t)=>{if(!Number.isSafeInteger(e)||e<0)throw new TypeError(`${t} must be a non-negative safe integer`)},rn=(e,t)=>{if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new TypeError(`${t} must be a finite non-negative number`)},hd=e=>{if(rn(e,"duration"),e===0)return 0n;ea.setFloat64(0,e,!1);let t=ea.getUint32(0,!1),n=ea.getUint32(4,!1),o=t>>>20&2047,a=BigInt(t&1048575)<<32n|BigInt(n);if(o===0)return a;let r=1n<<52n|a,s=o-1;return r<<BigInt(s)},C0=e=>structuredClone(e),ra=(e,t)=>e===t?!0:!e||!t||e.mode!==t.mode||e.kind!==t.kind?!1:e.mode==="legacy"?e.instanceToken===t.instanceToken:e.delayMs!==t.delayMs?!1:e.kind==="auto"?e.contentKey===t.contentKey&&e.owner.sessionId===t.owner.sessionId&&e.owner.lineEntryId===t.owner.lineEntryId:e.kind==="skip"?e.owner.sessionId===t.owner.sessionId:e.trigger===t.trigger&&e.owner.lineEntryId===t.owner.lineEntryId,ta=(e,t,n)=>{if(t===null)return null;if(e==="auto"){if(Sr(t,["owner","delayMs","contentKey"],"auto timer"),Sr(t.owner,["sessionId","lineEntryId"],"auto timer owner"),en(t.owner.sessionId,"auto owner sessionId"),en(t.owner.lineEntryId,"auto owner lineEntryId"),t.owner.lineEntryId!==n)throw new TypeError("auto owner lineEntryId must match schedule lineEntryId");if(rn(t.delayMs,"auto delayMs"),typeof t.contentKey!="string")throw new TypeError("auto contentKey must be a string")}else if(e==="skip")Sr(t,["owner","delayMs"],"skip timer"),Sr(t.owner,["sessionId"],"skip timer owner"),en(t.owner.sessionId,"skip owner sessionId"),rn(t.delayMs,"skip delayMs");else{if(Sr(t,["owner","delayMs","trigger"],"authored timer"),Sr(t.owner,["lineEntryId"],"authored timer owner"),en(t.owner.lineEntryId,"authored owner lineEntryId"),t.owner.lineEntryId!==n)throw new TypeError("authored owner lineEntryId must match schedule lineEntryId");if(rn(t.delayMs,"authored delayMs"),t.trigger!=="fromStart"&&t.trigger!=="fromComplete")throw new TypeError('authored trigger must be "fromStart" or "fromComplete"')}return{mode:"reconciled",kind:e,...C0(t)}},$0=e=>{if(Sr(e,["contractVersion","status","lineEntryId","timers"],"playback schedule"),e.contractVersion!==1)throw new TypeError("playback schedule contractVersion must be 1");if(e.status!=="settled"&&e.status!=="unsettled")throw new TypeError('playback schedule status must be "settled" or "unsettled"');if(en(e.lineEntryId,"playback schedule lineEntryId"),e.status==="unsettled"){if(e.timers!==null)throw new TypeError("unsettled playback schedule timers must be null");return{contractVersion:1,status:"unsettled",lineEntryId:e.lineEntryId,timers:null}}Sr(e.timers,["auto","skip","authored"],"playback schedule timers");let t={auto:ta("auto",e.timers.auto,e.lineEntryId),skip:ta("skip",e.timers.skip,e.lineEntryId),authored:ta("authored",e.timers.authored,e.lineEntryId)};if(t.auto&&t.skip)throw new TypeError("playback schedule cannot enable auto and skip together");return{contractVersion:1,status:"settled",lineEntryId:e.lineEntryId,timers:t}},na=e=>({descriptor:e,remainingQuanta:hd(e.delayMs)}),Gs=["auto","skip","authored"],gd=({ticker:e,dispatchAutomaticAttempt:t,classifyAutomaticAttemptError:n=()=>"preCommit"})=>{if(!e||typeof e.add!="function"||typeof e.remove!="function")throw new TypeError("playback scheduler requires a ticker with add/remove");if(typeof t!="function")throw new TypeError("playback scheduler requires dispatchAutomaticAttempt");let o=S0(e),a=!0,r={},s={},i=null,l=null,c=null,u=null,p=!1,f=!1,d="legacy",m={auto:null,skip:null,authored:null},y={auto:null,skip:null,authored:null},g={auto:0,skip:0,authored:0},h=()=>Gs.some(L=>m[L]),w=()=>{l=null,c=null},b=()=>{p||(p=!0,queueMicrotask(()=>{p=!1;let L=c;if(L){if(o.dispatchDepth>0||f){b();return}a&&r===L.lifecycleToken&&s===L.generationToken&&i===L.callback&&h()&&!u&&(l=L.registrationToken),c===L&&(c=null)}}))},E=()=>{if(!u)return;let L=u;e.remove(L),u===L&&(u=null)},v=()=>{let L=i;L&&(w(),i=null,u=L,e.remove(L),u===L&&(u=null))},P=()=>{m={auto:null,skip:null,authored:null}},k=()=>{P(),s={},f||v()},O=L=>{if(o.dispatchDepth>0||f){c=L,b();return}a&&r===L.lifecycleToken&&s===L.generationToken&&i===L.callback&&h()&&(l=L.registrationToken),c===L&&(c=null)},D=()=>{if(!a||!h()||i)return;E();let L=r,ae=s,ue={},B=oe=>{if(!a||L!==r||ae!==s||ue!==l||B!==i||f)return;if(!oe||typeof oe.deltaMS!="number"||!Number.isFinite(oe.deltaMS)||oe.deltaMS<0)throw new TypeError("playback ticker deltaMS must be a finite non-negative number");let re=hd(oe.deltaMS);f=!0,o.dispatchDepth+=1;let pe=s,te=null;try{let C=[];for(let _ of Gs){let F=m[_];F&&(F.remainingQuanta<=re?(C.push({kind:_,descriptor:F.descriptor,revision:g[_]}),m[_]=null):F.remainingQuanta-=re)}if(C.length>0){try{t({dueKinds:C.map(({kind:_})=>_)})}catch(_){let F=n(_);if(d==="reconciled"&&F==="preCommit")for(let{kind:K,descriptor:de}of C)y[K]=de;else d==="legacy"&&P();throw _}if(d==="legacy")for(let _ of C)_.kind==="skip"&&g.skip===_.revision&&m.skip===null&&(m.skip=na(_.descriptor))}}catch(C){te=C}finally{o.dispatchDepth-=1,f=!1;try{pe===s?h()?D():v():i===B&&!h()&&v()}catch(C){throw te?new AggregateError([te,C],"Playback attempt and ticker cleanup both failed"):C}}if(te)throw te},Z={callback:B,lifecycleToken:L,generationToken:ae,registrationToken:ue};i=B,c=Z;try{e.add(B)}catch(oe){throw i=null,w(),P(),s={},u=B,oe}O(Z)},$=L=>{g[L]+=1,m[L]=null,y[L]=null,!h()&&!f&&v()},q=(L,ae)=>{rn(ae,`${L} delay`),d="legacy",g[L]+=1,y[L]=null,m[L]=na({mode:"legacy",kind:L,instanceToken:{},delayMs:ae}),D()};return{handleLegacyEffect:L=>{switch(L.name){case"startAutoNextTimer":return q("auto",L.payload?.delay??Zi.auto),!0;case"clearAutoNextTimer":return $("auto"),!0;case"startSkipNextTimer":return q("skip",L.payload?.delay??Zi.skip),!0;case"clearSkipNextTimer":return $("skip"),!0;case"nextLineConfigTimer":return q("authored",L.payload?.delay??Zi.authored),!0;case"clearNextLineConfigTimer":return $("authored"),!0;default:return!1}},reconcilePlaybackScheduleV1:L=>{let ae;try{ae=$0(L)}catch(B){try{k()}catch(Z){throw new AggregateError([B,Z],"Playback schedule validation and cleanup both failed")}throw B}if(d="reconciled",ae.status==="unsettled"){P(),f||v();return}let ue={};for(let B of Gs){let Z=ae.timers[B],oe=y[B];if(oe&&(!Z||!ra(oe,Z))&&(y[B]=null),Z&&y[B]&&ra(y[B],Z)){ue[B]=null;continue}let re=m[B];ue[B]=Z&&re&&ra(re.descriptor,Z)?re:Z?na(Z):null}m=ue,h()?D():f||v()},reset:()=>{let L=[i,u].filter((B,Z,oe)=>B&&oe.indexOf(B)===Z);r={},s={},w(),i=null,u=null,P(),y={auto:null,skip:null,authored:null};for(let B of Gs)g[B]+=1;d="legacy",a=!0;let ae=null,ue=null;for(let B of L)try{e.remove(B)}catch(Z){ae??=Z,ue??=B}if(u=ue,ae)throw ae},dispose:()=>{a=!1,r={},s={},w(),P(),y={auto:null,skip:null,authored:null};let L=[i,u].filter((B,Z,oe)=>B&&oe.indexOf(B)===Z);i=null,u=null;let ae=null,ue=null;for(let B of L)try{e.remove(B)}catch(Z){ae??=Z,ue??=B}if(u=ue,ae)throw ae}}};var _0=new Set(["loadSlot","resetStoryAtSection","rollbackByOffset","rollbackToLine","updateLocalizationPackage","updateProjectData"]),T0=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),sa="conditional",nn="random",ia=Symbol("conditionalAutoContinue"),j0=new Set(["sectionTransition","resetStoryAtSection"]),N0=new Set(["nextLine","nextLineFromSystem","resetStoryAtSection","sectionTransition"]),D0=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),L0=new Set(["nextLine","nextLineFromSystem"]),M0=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),oa="form",V0=new Set(["submitForm","cancelForm"]),q0="showImageGalleryVariant",F0="playMusicRoomTrack",U0="startSceneReplay",B0=new Set(["startAutoMode","stopAutoMode","toggleAutoMode","startSkipMode","stopSkipMode","toggleSkipMode","setAutoForwardDelay","setAutoForwardSpeed","setNextLineConfig","markLineCompleted","nextLine","nextLineFromSystem","jumpToLine","sectionTransition","resetStoryAtSection","loadSlot","rollbackByOffset","rollbackToLine","startSceneReplay","exitSceneReplay","updateProjectData","updateLocalizationPackage","submitForm","cancelForm"]),Le=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Y0=()=>typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,sn=e=>e?.type===ia,Gr=(e,t)=>e?.sectionId===t?.sectionId&&e?.lineId===t?.lineId,z0=(e,t)=>[...new Set([...Object.keys(e??{}),...Object.keys(t??{})])].some(o=>!Object.is(e?.[o],t?.[o]));function aa(e){let t=Y0(),n,o=0,a=!1,r=0,s=null,i=0,l=!1,c=0,u=[],p=null,f=null,d=new Map,m=new Map,y=new Map,g,h,w=null,b=!1,E=!1,v=0,P=new Map,k=fl(e.randomSource),{handlePendingEffects:O}=e;if(typeof O!="function")throw new TypeError("RouteEngine requires handlePendingEffects");let D=O.bind(O),$=typeof O.reconcilePlaybackScheduleV1=="function"?O.reconcilePlaybackScheduleV1.bind(O):null,q=typeof O.reset=="function"?O.reset.bind(O):null,Y=typeof O.dispose=="function"?O.dispose.bind(O):null;if($&&(!q||!Y))throw new TypeError("reconcilePlaybackScheduleV1 requires reset and dispose capabilities");let T=I=>{if(E)throw new Error(`RouteEngine cannot ${I} during playback reconciliation`)},U=I=>{if(T(I),!a||!n)throw new Error(`RouteEngine ${I} requires an active engine`)},ie=(I,A)=>{if(v===0)return;let S={preCommit:0,postCommitUnsettled:1,reconcileFailed:2},R=P.get(I);(R===void 0||S[A]>S[R])&&P.set(I,A)},L=I=>{let A=P.get(I)??"preCommit";return P.delete(I),A},ae=I=>{if($){E=!0;try{let A=$(structuredClone(I));if(A!==null&&(typeof A=="object"||typeof A=="function")&&typeof A.then=="function")throw new TypeError("reconcilePlaybackScheduleV1 must complete synchronously")}finally{E=!1}}},ue=()=>({contractVersion:1,status:"unsettled",lineEntryId:n?.selectPlaybackLineEntryId?.()??0,timers:null}),B=I=>{if(!(!$||!a||!n)){b=!0;try{ae(ue())}catch(A){if(I){let S=new AggregateError([I,A],"Playback work and schedule invalidation both failed");throw P.delete(I),ie(S,"reconcileFailed"),S}throw ie(A,"reconcileFailed"),A}}},Z=()=>{if(!$||!b||!a||!n||i>0||l)return;let I;try{I=n.selectDesiredPlaybackTimers()}catch(A){throw ie(A,"reconcileFailed"),B(A),A}try{ae({contractVersion:1,status:"settled",lineEntryId:n.selectPlaybackLineEntryId(),timers:I})}catch(A){throw ie(A,"reconcileFailed"),B(A),A}b=!1},oe=(I=new Map,A=Date.now())=>new Map(Array.from(I.entries()).filter(([,S])=>A<S.expiresAt).map(([S,R])=>[S,{animation:structuredClone(R.animation),startedAt:R.startedAt,expiresAt:R.expiresAt}])),re=(I=new Map)=>Array.from(I.values()).map(A=>structuredClone(A.animation)),pe=(I=Date.now())=>{d=new Map(Array.from(d.entries()).filter(([,A])=>I<A.expiresAt))},te=()=>{if(a&&!(i>0||l)){l=!0;try{for(;n.selectPendingEffects().length>0;){let I=n.selectCurrentPointer()?.pointer??null,A=[...n.selectPendingEffects()],S=A.map(R=>R.name!=="handleLineActions"?R:{...R,payload:{...R.payload,pointer:structuredClone(I)}});n.clearPendingEffects();try{let R=$?S.filter(j=>!tn.has(j.name)):S;R.length>0&&D(R)}catch(R){throw n.clearPendingEffects(),A.forEach(j=>{n.appendPendingEffect(j)}),ie(R,"postCommitUnsettled"),B(R),R}}}finally{l=!1}Z()}},C=I=>{i+=1;let A=!1;try{let S=I();return A=!0,S}finally{i-=1,A&&te()}},_=({initialState:I,namespace:A})=>{T("initialize");let S=n?.selectSystemState?.()?.global?.audioCommandId??0,{l10nData:R,...j}=I,G=R===void 0?void 0:structuredClone(R),X=structuredClone(I.projectData),ne=md({projectData:X,l10nData:G}),me=j.global??{};if(!Le(me))throw new Error("Malformed global state.");let Re=me.runtime??{};if(!Le(Re))throw new Error("Malformed global.runtime.");let xe=Re.localizationPackageId;if(xe!=null&&typeof xe!="string")throw new Error("localizationPackageId requires a string or null value");let Rr=new Set(ne.map(({l10nId:Xr})=>Xr).filter(Xr=>Xr!==null)),Hr=typeof xe=="string"&&Rr.has(xe)?xe:null,cn=zs({projectData:X,l10nData:G,l10nId:Hr}),Js=Xu({...j,global:{...me,localizationPackages:ne,runtime:{...Re,localizationPackageId:Hr}},projectData:cn,initialAudioCommandId:S});q?.(),n=Js,o+=1,a=!0,r=0,s=pt(A),i=0,l=!1,c=0,u=[],p=null,f=null,d=new Map,m=new Map,y=new Map,g=X,h=G,w=Hr,b=!0,E=!1,v=0,P.clear(),n.appendPendingEffect({name:"handleLineActions"}),te()},F=()=>{T("dispose"),a&&(a=!1,o+=1,n?.clearPendingEffects?.(),i=0,l=!1,u=[],p=null,f=null,d=new Map,m=new Map,y=new Map,b=!1,P.clear(),Y?.())},K=()=>s,de=()=>n.selectPresentationState(),Pe=()=>n.selectPresentationChanges(),ge=I=>n.selectSectionLineChanges(I),fe=(I={})=>{U("rendering"),r+=1;let A=Date.now();pe(A);let S=m.size>0,R=oe(d,A),j=S?oe(m,A):new Map,X={...n.selectRenderState({activePersistentAnimations:re(R),restoredPersistentAnimations:re(j)}),id:`render-${t}-${o}-${r}`};return y.set(X.id,{builtAt:A,persistentAnimationSessions:new Map([...j.entries(),...R.entries()]),usedRestoredPersistentAnimationSessions:S}),X},Or=(I={})=>fe(I),He=(I={})=>fe(I),on=I=>{if(!a||!n)return;let A=typeof I?.id=="string"&&I.id.length>0?I.id:null,S=A?y.get(A):null;A&&y.delete(A);let R=new Map;Hl(I?.animations).forEach(j=>{let G=Vn(j);if(!G)return;let X=S?.persistentAnimationSessions?.get(G)??d.get(G),ne=Math.max(0,Kl(j)),me=X?.startedAt??S?.builtAt??Date.now();R.set(G,{animation:structuredClone(j),startedAt:me,expiresAt:me+ne})}),d=R,S?.usedRestoredPersistentAnimationSessions&&(m=new Map)},mt=()=>n.selectSystemState(),an=()=>n.selectAchievements(),Hs=I=>n.selectAchievement(I),yt=()=>n.selectSaveSlotMap(),vd=I=>n.selectSaveSlot(I),Ad=I=>n.selectSaveSlotPage(I),Pd=()=>n.selectImageGallery(),xd=()=>n.selectMusicRoom(),Ed=()=>n.selectSceneReplay(),Sd=()=>n.selectIsSceneReplayActive(),sk=()=>n.selectSkipMode(),ok=()=>n.selectAutoMode(),Od=()=>n.selectRuntime(),Rd=()=>n.selectIsChoiceVisible(),Cd=()=>n.selectIsFormVisible(),$d=()=>n.selectActiveInteraction(),_d=()=>n.selectPendingEffects().some(I=>I?.name==="handleLineActions"||I?.name==="render"),ca=(I,A,S={})=>!Le(A)||I!=="nextLine"?A:S.bypassChoice===!0?{...A,bypassChoice:!0}:S.interactionSource===oa?{...A,_interactionSource:oa}:A,ua=(I={})=>({type:ia,payload:ca("nextLine",{_conditionalContinuation:!0},I)}),Xs=(I,A)=>sn(I)?{type:ia,payload:{...I.payload,...A.payload}}:A,Td=I=>{I.savedCheckpointOccurrences.forEach(A=>{n.markSavedRollbackCheckpointTransient(A)}),I.savedCheckpointOccurrences=[]},jd=(I,A)=>{let S=p;return p=null,!S||!Gr(S.pointer,I)||S.checkpointIndex!==A?.checkpointIndex||S.checkpointIdentity!==A?.checkpoint?[]:S.savedCheckpointOccurrences},Nd=I=>{let A=f;return!A||!Gr(A.pointer,I)?null:(f=null,A)},Dd=({actionType:I,pointerBeforeAction:A,pointerAfterAction:S,cursorBeforeAction:R,cursorAfterAction:j,wasSceneReplayActive:G,isSceneReplayActive:X})=>{!S||!(!Gr(A,S)||R?.checkpoint!==j?.checkpoint||R?.checkpointIndex!==j?.checkpointIndex||I==="jumpToLine")||(f={pointer:S,appendToPrevious:L0.has(I)&&G===X&&A?.sectionId===S.sectionId&&A?.lineId!==S.lineId,reuseExistingOccurrence:M0.has(I),forceNewOccurrence:I==="jumpToLine"})},pa=I=>{I.markCurrentCheckpointTransient&&(n.markRollbackCheckpointTransient({checkpointIndex:I.rollbackCursor?.checkpointIndex,checkpointIdentity:I.rollbackCursor?.checkpoint,sectionId:I.pointer?.sectionId,lineId:I.pointer?.lineId}),Td(I))},Ld=(I,A,S)=>N0.has(I)?I==="resetStoryAtSection"?S?.checkpoint!==A?.checkpoint:S?.checkpoint!==A?.checkpoint&&S?.checkpointIndex>A?.checkpointIndex:!1,Md=I=>{let A=u.at(-1);if(!A?.markCurrentCheckpointTransient)return;let S=n.selectSaveSlot({slotId:I?.slotId});S&&A.savedCheckpointOccurrences.push({slotId:I.slotId,saveSlotIdentity:S,checkpointIndex:A.rollbackCursor?.checkpointIndex,sectionId:A.pointer?.sectionId,lineId:A.pointer?.lineId})},Vd=()=>{u.at(-1)?.savedCheckpointOccurrences.forEach(A=>{let S=n.selectSaveSlot({slotId:A.slotId});S&&(A.saveSlotIdentity=S)})},qd=()=>{let I=u.at(-1);I&&(I.rollbackCursor=n.selectRollbackCursor?.()??null)},Fd=(I,A,S)=>{let R=u.at(-1);if(!R)return;let j=n.selectCurrentPointer()?.pointer,G=Ld(I,A,S);if(Gr(R.pointer,j)){let X=S?.checkpoint!==A?.checkpoint||S?.checkpointIndex!==A?.checkpointIndex;G||X&&D0.has(I)?(pa(R),R.pointer=j,R.rollbackCursor=S,R.markCurrentCheckpointTransient=G,R.savedCheckpointOccurrences=[]):X&&I==="updateProjectData"&&(R.rollbackCursor=S);return}pa(R),R.pointer=j,R.rollbackCursor=n.selectRollbackCursor?.()??null,R.markCurrentCheckpointTransient=G,R.savedCheckpointOccurrences=[]},ht=(I,A)=>{if(U(`action "${I}"`),!n[I])return;let S=A,R,j;if(I==="updateProjectData")da(A),R=structuredClone(A.projectData),S={...A,projectData:zs({projectData:R,l10nData:h,l10nId:w})},da(S);else if(I==="updateLocalizationPackage"){if(j=Ud(A),j===w)return;S={l10nId:j,projectData:zs({projectData:g,l10nData:h,l10nId:j})}}j0.has(I)&&(c+=1);let G=n.selectAutoMode(),X=G?n.selectRuntime():null,ne=n.selectIsSceneReplayActive?.()===!0,me=T0.has(I)?oe(d):null,Re=n.selectCurrentPointer()?.pointer??null,xe=n.selectRollbackCursor?.()??null,Rr=!1,Hr;try{Hr=n[I](S),Rr=!0}catch(gt){throw ie(gt,"preCommit"),gt}R!==void 0&&(g=R),j!==void 0&&(w=j),_0.has(I)&&(m=me??new Map,d=new Map);let cn=n.selectIsSceneReplayActive?.()===!0;ne!==cn&&(d=new Map,m=new Map);let Js=n.selectCurrentPointer()?.pointer??null,Xr=n.selectRollbackCursor?.()??null;I==="saveSlot"?Md(A):I==="updateProjectData"&&Vd(),Fd(I,xe,Xr),Dd({actionType:I,pointerBeforeAction:Re,pointerAfterAction:Js,cursorBeforeAction:xe,cursorAfterAction:Xr,wasSceneReplayActive:ne,isSceneReplayActive:cn});let tf=n.selectAutoMode()&&(I==="updateVariable"||G&&z0(X,n.selectRuntime()));(B0.has(I)||tf)&&(b=!0);try{te()}catch(gt){throw Rr&&ie(gt,"postCommitUnsettled"),gt}return Hr},da=I=>{if(!Object.prototype.hasOwnProperty.call(I??{},"projectData"))throw new Error("updateProjectData requires projectData");Dr(I?.projectData?.resources?.variables??{}),Pt(I.projectData),xt(I.projectData),Et(I.projectData)},Ud=I=>{if(!Le(I))throw new Error("updateLocalizationPackage requires an object payload");let A=Object.keys(I);if(A.length!==1||A[0]!=="l10nId")throw new Error("updateLocalizationPackage only accepts l10nId");if(I.l10nId!==null&&(typeof I.l10nId!="string"||I.l10nId.length===0))throw new Error("updateLocalizationPackage requires a non-empty l10nId or null");return I.l10nId},Bd=(I,A,S)=>{let R=n.selectCurrentPointer()?.pointer;A!==R||S!==c||(n.appendPendingEffect({name:"clearAutoNextTimer"}),n.appendPendingEffect({name:"clearNextLineConfigTimer"}),ht("nextLineFromSystem",I.payload))},Yd=()=>({renderSequence:r,conditionalRoutingSequence:c,rollbackNavigationContexts:u.slice(),pendingRollbackLineEntrySaveHandoff:p,pendingDialogueHistoryLineEntry:f,persistentAnimationSessions:new Map(d),restoredPersistentAnimationSessions:new Map(m),renderPersistentAnimationMetadata:new Map(y),canonicalProjectData:g,localizationPackageId:w,playbackScheduleDirty:b}),zd=I=>{r=I.renderSequence,c=I.conditionalRoutingSequence,u=I.rollbackNavigationContexts.slice(),p=I.pendingRollbackLineEntrySaveHandoff,f=I.pendingDialogueHistoryLineEntry,d=new Map(I.persistentAnimationSessions),m=new Map(I.restoredPersistentAnimationSessions),y=new Map(I.renderPersistentAnimationMetadata),g=I.canonicalProjectData,w=I.localizationPackageId,b=I.playbackScheduleDirty},fa=(I,A={})=>(U("action batch"),C(()=>{let S=Yd();try{return n[Po](()=>{let R,j=n.selectCurrentPointer()?.pointer??null,G=n.selectRollbackCursor?.()??null,X=c,ne={pointer:j,rollbackCursor:G,markCurrentCheckpointTransient:A.rollbackSource==="line",savedCheckpointOccurrences:A.savedCheckpointOccurrences?.slice()??[]};u.push(ne);try{n.beginRollbackActionBatch({source:A.rollbackSource});try{R=I()}finally{n.endRollbackActionBatch({})}sn(R)&&Bd(R,j,X);let me=n.selectCurrentPointer()?.pointer??null;A.rollbackSource==="line"&&Gr(j,me)&&n.recordCurrentDialogueHistory({savedCheckpointOccurrences:ne.savedCheckpointOccurrences,appendToPrevious:A.dialogueHistoryAppendToPrevious===!0,reuseExistingOccurrence:A.dialogueHistoryReuseExistingOccurrence===!0,forceNewOccurrence:A.dialogueHistoryForceNewOccurrence===!0})}finally{u.pop(),(!Gr(j,ne.pointer)||G?.checkpoint!==ne.rollbackCursor?.checkpoint)&&ne.markCurrentCheckpointTransient&&ne.savedCheckpointOccurrences.length>0&&(p={pointer:ne.pointer,checkpointIndex:ne.rollbackCursor?.checkpointIndex,checkpointIdentity:ne.rollbackCursor?.checkpoint,savedCheckpointOccurrences:ne.savedCheckpointOccurrences})}})}catch(R){throw zd(S),R}})),Ws=(I,A,S,R={})=>{if(I===sa||I===nn)return fa(()=>{let j={...R,executionContext:R.executionContext??{depth:0,pendingNavigation:null},actionPath:R.actionPath??[I],randomOutcomeOrdinals:R.randomOutcomeOrdinals??new Map};if(I===nn)return ha(A,S,j);let G=Ks(S),X=Ct({[I]:A},G);return ya(X[I],S,j)},R);ht(I,A)},Gd=(I,A)=>{if(I!=="nextLineFromSystem")return Ws(I,A);v+=1;try{return Ws(I,A)}finally{v=Math.max(0,v-1)}},ma=I=>{if(I&&Object.prototype.hasOwnProperty.call(I,"event"))throw new Error('eventContext key "event" is no longer supported. Use "_event".')},Ks=I=>{if(ma(I),!I)return{variables:n.selectAllVariables?n.selectAllVariables():void 0,runtime:n.selectRuntime?n.selectRuntime():{}};let{_event:A,...S}=I,R=n.selectAllVariables?n.selectAllVariables():void 0;return{...S,_event:A,variables:R,runtime:n.selectRuntime?n.selectRuntime():{}}},Hd=I=>{if(!Le(I))return{templatePayload:I,literalTargetIds:null};let A=n.selectImageGalleryConfig();if(!Array.isArray(A?.groups))return{templatePayload:I,literalTargetIds:null};let S=typeof I.groupId=="string"?A.groups.find(j=>j.id===I.groupId):void 0;if(!S)return{templatePayload:I,literalTargetIds:null};let R=typeof I.variantId=="string"&&S.variants.some(j=>j.id===I.variantId);return{templatePayload:{...I,groupId:null,...R?{variantId:null}:{}},literalTargetIds:{groupId:I.groupId,...R?{variantId:I.variantId}:{}}}},Xd=I=>!Le(I)||typeof I.trackId!="string"?{templatePayload:I,literalTargetIds:null}:n.selectMusicRoomConfig()?.tracks?.some(R=>R.id===I.trackId)?{templatePayload:{...I,trackId:null},literalTargetIds:{trackId:I.trackId}}:{templatePayload:I,literalTargetIds:null},Wd=I=>!Le(I)||typeof I.sceneId!="string"?{templatePayload:I,literalTargetIds:null}:n.selectSceneReplayConfig()?.replays?.some(R=>R.sceneId===I.sceneId)?{templatePayload:{...I,sceneId:null},literalTargetIds:{sceneId:I.sceneId}}:{templatePayload:I,literalTargetIds:null},Kd=I=>{if(!Le(I))throw new Error("conditional action payload must be an object");if(!Array.isArray(I.branches))throw new Error("conditional action requires branches array");if(I.branches.length===0)throw new Error("conditional action requires at least one branch")},Jd=(I,A,S)=>{if(!Le(I))throw new Error(`conditional branch at index ${A} must be an object`);if(!Le(I.actions))throw new Error(`conditional branch at index ${A} requires actions object`);if(!Object.prototype.hasOwnProperty.call(I,"when")&&A!==S-1)throw new Error("conditional else branch must be the last branch")},ya=(I,A,S)=>{Kd(I);let R=ua(S);for(let j=0;j<I.branches.length;j+=1){let G=I.branches[j];Jd(G,j,I.branches.length);let X=Ks(A);if(Object.prototype.hasOwnProperty.call(G,"when")&&!At(G.when,X))continue;let me=ln(G.actions,A,{...S,actionPath:[...S.actionPath??[sa],"branches",String(j),"actions"]});return sn(me)?Xs(R,me):R}return R},Qd=I=>{if(!Le(I))throw new Error("random action payload must be an object");let A=Object.keys(I).find(S=>S!=="distribution"&&S!=="variableId");if(A!==void 0)throw new Error(`random action.${A} is not supported`);if(!Le(I.distribution))throw new Error("random action requires distribution object");if(I.distribution.type==="weighted"){if(Object.prototype.hasOwnProperty.call(I,"variableId"))throw new Error("weighted random action does not support variableId")}else if(I.distribution.type==="integer"){if(typeof I.variableId!="string"||!I.variableId)throw new Error("integer random action requires variableId");let S=g?.resources?.variables?.[I.variableId];if(!S||S.type!=="number"||S.scope!=="context"||S.readonly===!0||Se(S))throw new Error(`integer random action variableId must reference a writable context number variable: ${I.variableId}`)}},ha=(I,A,S)=>{Qd(I),ma(A);let R=ml(I.distribution,{randomSource:k});if(S.rollbackSource==="line"){n.ensureRandomReplayOccurrence({});let X=(S.actionPath??[nn]).join("."),ne=S.randomOutcomeOrdinals??new Map,me=ne.get(X)??0;ne.set(X,me+1),n.recordRandomOutcome({path:X,ordinal:me,type:R.type,result:R}),qd()}let j;R.type==="integer"?ht("updateVariable",{id:"randomResult",operations:[{variableId:I.variableId,op:"set",value:R.value}]}):j=ln(I.distribution.outcomes[R.outcomeIndex].actions,A,{...S,actionPath:[...S.actionPath??[nn],"distribution","outcomes",String(R.outcomeIndex),"actions"]});let G=ua(S);return sn(j)?Xs(G,j):G},Zd=(I,A)=>({...I??{},_form:A}),ef=(I,A,S,R)=>{let j=ht(I,A),G=j?.submitted===!0&&j.valid===!0,X=j?.cancelled===!0;if(!(!G&&!X)&&Le(A.actions))return ln(A.actions,Zd(S,j.form),{...R,interactionSource:oa})},ga=(I,A,S,R)=>{if(I===nn)return ha(A,S,R);let j=Ks(S),G={templatePayload:A,literalTargetIds:null};I===q0?G=Hd(A):I===F0?G=Xd(A):I===U0&&(G=Wd(A));let{templatePayload:X,literalTargetIds:ne}=G,Re=Ct({[I]:X},j)[I],xe=ne?{...Re,...ne}:Re;if(I===sa)return ya(xe,S,R);let Rr=ca(I,xe,R);if(V0.has(I))return ef(I,Rr,S,R);ht(I,Rr)},ln=(I,A,S)=>{let R,j=S?.executionContext??{depth:0,pendingNavigation:null},G=Tn(I);jn(G),j.depth+=1;try{for(let[X,ne]of G){let me={...S,executionContext:j,actionPath:[...S?.actionPath??[],X]};if(Co(X)){let xe=j.pendingNavigation;if(xe)throw new Error(`action batch cannot execute multiple navigation actions: ${xe.actionType}, ${X}`);j.pendingNavigation={actionType:X,payload:ne,eventContext:A,options:me};continue}let Re=ga(X,ne,A,me);sn(Re)&&(R=Xs(R,Re))}}finally{j.depth-=1}if(j.depth===0&&j.pendingNavigation){let X=j.pendingNavigation;j.pendingNavigation=null,ga(X.actionType,X.payload,X.eventContext,X.options)}return R},ba=(I,A,S={})=>{let R={...S,executionContext:{depth:0,pendingNavigation:null},randomOutcomeOrdinals:new Map};return fa(()=>ln(I,A,R),R)},rf=I=>{let A=n.selectCurrentPointer()?.pointer;if(I!==A||n.selectActiveInteraction())return;let S=n.selectNextLineConfig();S?.auto?.enabled&&S.auto.trigger==="fromStart"&&n.appendPendingEffect({name:"nextLineConfigTimer",payload:{delay:S.auto.delay}})};return{init:_,dispose:F,handleAction:Ws,handleInternalAction:Gd,handleActions:ba,selectRenderState:Or,prepareRenderState:He,commitRenderState:on,selectPresentationState:de,selectPresentationChanges:Pe,selectSectionLineChanges:ge,selectSystemState:mt,selectAchievements:an,selectAchievement:Hs,selectSaveSlotMap:yt,selectSaveSlot:vd,selectSaveSlotPage:Ad,selectSaveSlots:yt,selectImageGallery:Pd,selectMusicRoom:xd,selectSceneReplay:Ed,selectIsSceneReplayActive:Sd,selectRuntime:Od,selectIsChoiceVisible:Rd,selectIsFormVisible:Cd,selectActiveInteraction:$d,selectHasPendingRenderWork:_d,handleLineActions:I=>{U("line action handling");let A=n.selectCurrentPointer()?.pointer;if(I?.pointer&&!Gr(I.pointer,A))return!1;if(typeof I?.sceneReplaySceneId=="string"){let S=n.selectActiveSceneReplayEntry?.();if(S?.sceneId!==I.sceneReplaySceneId||S?.entryId!==I.entryId)return!1}return C(()=>{let S=n.selectCurrentPointer()?.pointer,R=n.selectRollbackCursor?.()??null,j=p,G=f,X=jd(S,R),ne=Nd(S),me=n.selectCurrentLine(),Re=!1;if(me?.actions){try{ba(me.actions,void 0,{rollbackSource:"line",savedCheckpointOccurrences:X,dialogueHistoryAppendToPrevious:ne?.appendToPrevious===!0,dialogueHistoryReuseExistingOccurrence:ne?.reuseExistingOccurrence===!0,dialogueHistoryForceNewOccurrence:ne?.forceNewOccurrence===!0})}catch(xe){throw p=j,f=G,xe}Re=!0}return rf(S),Re})},getNamespace:K,classifyAutomaticAttemptError:L}}var G0="music-room:player",wd=new Map([["soundReady","musicRoomSoundReady"],["soundProgress","musicRoomSoundProgress"],["soundComplete","musicRoomSoundComplete"],["soundError","musicRoomSoundError"]]),bd=(e,t)=>wd.has(e)&&t?._event?.id===G0,kd=({engine:e,routeGraphics:t,trackRenderDispatch:n,lifecycleGeneration:o,isCurrentLifecycle:a},r)=>{if(e.selectHasPendingRenderWork?.())return;let s=e.prepareRenderState?.(r)??e.selectRenderState(r);n?.(s),t.render(s),a(o)&&e.commitRenderState?.(s)},H0=({engine:e,routeGraphics:t,trackRenderDispatch:n,getRenderDispatchCount:o,lifecycleGeneration:a,isCurrentLifecycle:r},s)=>{let i=o?.()??0,l=e.handleLineActions(s);(o?.()??0)===i&&kd({engine:e,routeGraphics:t,trackRenderDispatch:n,lifecycleGeneration:a,isCurrentLifecycle:r},s)},X0=({enqueuePersistenceWrite:e},t)=>{e(n=>n.saveSlots(t?.saveSlots))},W0=({enqueuePersistenceWrite:e},t)=>{e(n=>n.saveGlobalDeviceVariables(t?.globalDeviceVariables))},K0=({enqueuePersistenceWrite:e},t)=>{e(n=>n.saveGlobalAccountVariables(t?.globalAccountVariables))},J0=({enqueuePersistenceWrite:e},t)=>{e(n=>n.saveGlobalRuntime(t?.globalRuntime))},Q0=({enqueuePersistenceWrite:e},t)=>{e(n=>{if(typeof n.applyScopedDataUpdates!="function")throw new Error("RouteEngine persistence adapter must implement applyScopedDataUpdates.");return n.applyScopedDataUpdates(t?.updates)})},Id={render:kd,saveSlots:X0,saveGlobalDeviceVariables:W0,saveGlobalAccountVariables:K0,saveGlobalRuntime:J0,applyScopedDataUpdates:Q0,handleLineActions:H0},Z0=new Set(["render","handleLineActions","saveSlots","saveGlobalDeviceVariables","saveGlobalAccountVariables","saveGlobalRuntime","startAutoNextTimer","clearAutoNextTimer","startSkipNextTimer","clearSkipNextTimer","nextLineConfigTimer","clearNextLineConfigTimer"]),la=(e,t,n)=>{(e.handleInternalAction??e.handleAction?.bind(e))?.(t,n)},ek=(e=[])=>{let t=new Set,n=[];for(let o=e.length-1;o>=0;o-=1){let a=e[o];if(typeof a?.name!="string"||a.name.length===0)throw new Error("Pending effect is missing a valid name.");if(!Z0.has(a.name)){n.unshift(a);continue}t.has(a.name)||(t.add(a.name),n.unshift(a))}return n},rk=({getEngine:e,routeGraphics:t,ticker:n,handleUnhandledEffect:o,handlePersistenceError:a,indexedDB:r,persistence:s,namespace:i})=>{let l=new Map,c=Promise.resolve(),u=null,p=null,f=!1,d=0,m=0,y=!0,g=gd({ticker:n,dispatchAutomaticAttempt:()=>la(e(),"nextLineFromSystem",{}),classifyAutomaticAttemptError:C=>e()?.classifyAutomaticAttemptError?.(C)??"preCommit"}),h=()=>{u=null,p=null,f=!1,d=0},w=()=>{g.reset(),m+=1,h(),y=!0},b=()=>{m+=1,y=!1,h(),g.dispose()},E=C=>y&&C===m,v=C=>{if(a){a(C);return}console.error("RouteEngine persistence write failed.",C)},P=C=>{if(s)return s;let _=pt(C),F=l.get(_);if(F)return F;let K=Ki({indexedDB:r,namespace:_});return l.set(_,K),K},k=C=>{let _=s?null:pt(i??e()?.getNamespace?.()),F;c=c.catch(()=>{}).then(()=>(F=P(_),C(F))).catch(K=>{!s&&l.get(_)===F&&l.delete(_),v(K)})},O=C=>{if(!y)return;let _=typeof C?.id=="string"&&C.id.length>0?C.id:null;d+=1,u=_,f=!1},D=()=>d,$=(C={})=>{if(!y||C?.aborted===!0)return!1;let _=typeof C?.id=="string"&&C.id.length>0?C.id:null;return _?_!==u||_===p?!1:(p=_,!0):u!==null||f?!1:(f=!0,!0)},q=(C,_={})=>{if(!y)return!1;if(bd(C,_)){let K=wd.get(C),de=e();return la(de,K,_?._event),!0}if(C!=="renderComplete"||!$(_))return!1;let F=e();return la(F,"markLineCompleted",{}),!0},Y=new Set(["updateFormField","submitForm","cancelForm"]),T=new Set(["updateVariable"]),U=C=>typeof C?.selectActiveInteraction=="function"?C.selectActiveInteraction():typeof C?.selectIsChoiceVisible=="function"&&C.selectIsChoiceVisible()?{source:"choice"}:null,ie=C=>C?._formKey??C?.formKey,L=(C,_)=>ie(C)===_?.formKey,ae=(C,_)=>!C||typeof C!="object"||Array.isArray(C)?!1:C._interactionSource===_?.source,ue=(C,_)=>ae(C,_)?_.source==="form"?L(C,_):!0:!1,B=(C,_)=>!C||typeof C!="object"||Array.isArray(C)||_?.source!=="form"?!1:L(C,_),Z=(C={},_)=>Object.keys(C).length>0&&Object.entries(C).every(([F,K])=>Y.has(F)?B(K,_):T.has(F)),oe=(C={},_)=>{let F=C?.actions;return _?.source==="form"?!F||typeof F!="object"||Array.isArray(F)?!1:Z(F,_):ue(C,_)?!0:!F||typeof F!="object"||Array.isArray(F)?!1:Object.values(F).some(K=>ue(K,_))},re=(C,_={})=>{if(!_?.actions)return!1;let F=U(C);return!F||F.source==="choice"?!1:!oe(_,F)},pe=({preprocessPayload:C,onEvent:_}={})=>async(F,K={})=>{if(!y)return!1;if(bd(F,K))return q(F,K),_?.(F,K);let de=e(),Pe=m,ge=d;if(re(de,K))return _?.(F,K);let fe=await C?.(F,K)??K;if(!E(Pe)||e()!==de||d!==ge)return!1;if(re(de,fe))return _?.(F,fe);if(q(F,fe),fe?.actions){let Or=fe?._event?{_event:fe._event}:fe?.event?{_event:fe.event}:void 0,He;fe?.bypassChoice===!0?He={bypassChoice:!0}:fe?._interactionSource&&(He={interactionSource:fe._interactionSource}),He?de.handleActions(fe.actions,Or,He):de.handleActions(fe.actions,Or)}return _?.(F,fe)},te=C=>{if(!y)return;let _=m,F=e(),K=ek(C),de=K.some(ge=>ge.name==="handleLineActions");K.forEach(ge=>{if(!Id[ge.name]&&!tn.has(ge.name)&&!o)throw new Error(`Unhandled pending effect "${ge.name}".`)});let Pe={engine:F,routeGraphics:t,ticker:n,trackRenderDispatch:O,getRenderDispatchCount:D,enqueuePersistenceWrite:k,lifecycleGeneration:m,isCurrentLifecycle:E};for(let ge of K){if(!E(_))break;if(de&&ge.name==="render")continue;if(tn.has(ge.name)){g.handleLegacyEffect(ge);continue}let fe=Id[ge.name];if(fe){fe(Pe,ge.payload);continue}o(ge,Pe)}};return te.handleRouteGraphicsEvent=q,te.createRouteGraphicsEventHandler=pe,te.reset=w,te.dispose=b,te.reconcilePlaybackScheduleV1=C=>g.reconcilePlaybackScheduleV1(C),te},tk=rk;var nk=(e,t={})=>{let{resources:n={}}=t;return si(e,n)};var Qv=aa;export{Do as DEFAULT_VISUAL_LAYER,rt as RENDER_LAYER,tr as VISUAL_LAYER,tk as createEffectsHandler,jw as createIndexedDbPersistence,Qv as default,Eo as formatDate,Om as resolveComputedVariables,nk as resolveLayoutReferences};
1
+ var lm=Object.defineProperty;var cm=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),um=(e,t)=>{for(var n in t)lm(e,n,{get:t[n],enumerable:!0})};var Kp=cm(ja=>{"use strict";Object.defineProperty(ja,"__esModule",{value:!0});function Hp(e){let t=e.length,n=0,i=0,a;for(;i<t;)n++,a=e.charCodeAt(i++),a>=55296&&a<=56319&&i<t&&(a=e.charCodeAt(i),(a&64512)===56320&&i++);return n}ja.default=Hp;Hp.code='require("ajv/dist/runtime/ucs2length").default'});var pl=Symbol.for("immer-nothing"),ol=Symbol.for("immer-draftable"),_e=Symbol.for("immer-state");function Ue(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var nt=Object.getPrototypeOf;function Ae(e){return!!e&&!!e[_e]}function Dr(e){return e?fl(e)||Array.isArray(e)||!!e[ol]||!!e.constructor?.[ol]||Cn(e)||_n(e):!1}var pm=Object.prototype.constructor.toString();function fl(e){if(!e||typeof e!="object")return!1;let t=nt(e);if(t===null)return!0;let n=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return n===Object?!0:typeof n=="function"&&Function.toString.call(n)===pm}function Rn(e){return Ae(e)||Ue(15,e),e[_e].base_}function xn(e,t){$n(e)===0?Reflect.ownKeys(e).forEach(n=>{t(n,e[n],e)}):e.forEach((n,i)=>t(i,n,e))}function $n(e){let t=e[_e];return t?t.type_:Array.isArray(e)?1:Cn(e)?2:_n(e)?3:0}function Ni(e,t){return $n(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function dl(e,t,n){let i=$n(e);i===2?e.set(t,n):i===3?e.add(n):e[t]=n}function fm(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}function Cn(e){return e instanceof Map}function _n(e){return e instanceof Set}function Nr(e){return e.copy_||e.base_}function Di(e,t){if(Cn(e))return new Map(e);if(_n(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);let n=fl(e);if(t===!0||t==="class_only"&&!n){let i=Object.getOwnPropertyDescriptors(e);delete i[_e];let a=Reflect.ownKeys(i);for(let r=0;r<a.length;r++){let s=a[r],o=i[s];o.writable===!1&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(i[s]={configurable:!0,writable:!0,enumerable:o.enumerable,value:e[s]})}return Object.create(nt(e),i)}else{let i=nt(e);if(i!==null&&n)return{...e};let a=Object.create(i);return Object.assign(a,e)}}function Vi(e,t=!1){return jn(e)||Ae(e)||!Dr(e)||($n(e)>1&&(e.set=e.add=e.clear=e.delete=dm),Object.freeze(e),t&&Object.entries(e).forEach(([n,i])=>Vi(i,!0))),e}function dm(){Ue(2)}function jn(e){return Object.isFrozen(e)}var mm={};function Tr(e){let t=mm[e];return t||Ue(0,e),t}var Rt;function ml(){return Rt}function ym(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function al(e,t){t&&(Tr("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Ti(e){Li(e),e.drafts_.forEach(hm),e.drafts_=null}function Li(e){e===Rt&&(Rt=e.parent_)}function ll(e){return Rt=ym(Rt,e)}function hm(e){let t=e[_e];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function cl(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];return e!==void 0&&e!==n?(n[_e].modified_&&(Ti(t),Ue(4)),Dr(e)&&(e=Sn(t,e),t.parent_||On(t,e)),t.patches_&&Tr("Patches").generateReplacementPatches_(n[_e].base_,e,t.patches_,t.inversePatches_)):e=Sn(t,n,[]),Ti(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==pl?e:void 0}function Sn(e,t,n){if(jn(t))return t;let i=t[_e];if(!i)return xn(t,(a,r)=>ul(e,i,t,a,r,n)),t;if(i.scope_!==e)return t;if(!i.modified_)return On(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;let a=i.copy_,r=a,s=!1;i.type_===3&&(r=new Set(a),a.clear(),s=!0),xn(r,(o,l)=>ul(e,i,a,o,l,n,s)),On(e,a,!1),n&&e.patches_&&Tr("Patches").generatePatches_(i,n,e.patches_,e.inversePatches_)}return i.copy_}function ul(e,t,n,i,a,r,s){if(Ae(a)){let o=r&&t&&t.type_!==3&&!Ni(t.assigned_,i)?r.concat(i):void 0,l=Sn(e,a,o);if(dl(n,i,l),Ae(l))e.canAutoFreeze_=!1;else return}else s&&n.add(a);if(Dr(a)&&!jn(a)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;Sn(e,a),(!t||!t.scope_.parent_)&&typeof i!="symbol"&&Object.prototype.propertyIsEnumerable.call(n,i)&&On(e,a)}}function On(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Vi(t,n)}function gm(e,t){let n=Array.isArray(e),i={type_:n?1:0,scope_:t?t.scope_:ml(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1},a=i,r=Fi;n&&(a=[i],r=$t);let{revoke:s,proxy:o}=Proxy.revocable(a,r);return i.draft_=o,i.revoke_=s,o}var Fi={get(e,t){if(t===_e)return e;let n=Nr(e);if(!Ni(n,t))return bm(e,n,t);let i=n[t];return e.finalized_||!Dr(i)?i:i===_i(e.base_,t)?(ji(e),e.copy_[t]=qi(i,e)):i},has(e,t){return t in Nr(e)},ownKeys(e){return Reflect.ownKeys(Nr(e))},set(e,t,n){let i=yl(Nr(e),t);if(i?.set)return i.set.call(e.draft_,n),!0;if(!e.modified_){let a=_i(Nr(e),t),r=a?.[_e];if(r&&r.base_===n)return e.copy_[t]=n,e.assigned_[t]=!1,!0;if(fm(n,a)&&(n!==void 0||Ni(e.base_,t)))return!0;ji(e),Mi(e)}return e.copy_[t]===n&&(n!==void 0||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=n,e.assigned_[t]=!0),!0},deleteProperty(e,t){return _i(e.base_,t)!==void 0||t in e.base_?(e.assigned_[t]=!1,ji(e),Mi(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=Nr(e),i=Reflect.getOwnPropertyDescriptor(n,t);return i&&{writable:!0,configurable:e.type_!==1||t!=="length",enumerable:i.enumerable,value:n[t]}},defineProperty(){Ue(11)},getPrototypeOf(e){return nt(e.base_)},setPrototypeOf(){Ue(12)}},$t={};xn(Fi,(e,t)=>{$t[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}});$t.deleteProperty=function(e,t){return $t.set.call(this,e,t,void 0)};$t.set=function(e,t,n){return Fi.set.call(this,e[0],t,n,e[0])};function _i(e,t){let n=e[_e];return(n?Nr(n):e)[t]}function bm(e,t,n){let i=yl(t,n);return i?"value"in i?i.value:i.get?.call(e.draft_):void 0}function yl(e,t){if(!(t in e))return;let n=nt(e);for(;n;){let i=Object.getOwnPropertyDescriptor(n,t);if(i)return i;n=nt(n)}}function Mi(e){e.modified_||(e.modified_=!0,e.parent_&&Mi(e.parent_))}function ji(e){e.copy_||(e.copy_=Di(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var wm=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(t,n,i)=>{if(typeof t=="function"&&typeof n!="function"){let r=n;n=t;let s=this;return function(l=r,...c){return s.produce(l,u=>n.call(this,u,...c))}}typeof n!="function"&&Ue(6),i!==void 0&&typeof i!="function"&&Ue(7);let a;if(Dr(t)){let r=ll(this),s=qi(t,void 0),o=!0;try{a=n(s),o=!1}finally{o?Ti(r):Li(r)}return al(r,i),cl(a,r)}else if(!t||typeof t!="object"){if(a=n(t),a===void 0&&(a=t),a===pl&&(a=void 0),this.autoFreeze_&&Vi(a,!0),i){let r=[],s=[];Tr("Patches").generateReplacementPatches_(t,a,r,s),i(r,s)}return a}else Ue(1,t)},this.produceWithPatches=(t,n)=>{if(typeof t=="function")return(s,...o)=>this.produceWithPatches(s,l=>t(l,...o));let i,a;return[this.produce(t,n,(s,o)=>{i=s,a=o}),i,a]},typeof e?.autoFreeze=="boolean"&&this.setAutoFreeze(e.autoFreeze),typeof e?.useStrictShallowCopy=="boolean"&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){Dr(e)||Ue(8),Ae(e)&&(e=br(e));let t=ll(this),n=qi(e,void 0);return n[_e].isManual_=!0,Li(t),n}finishDraft(e,t){let n=e&&e[_e];(!n||!n.isManual_)&&Ue(9);let{scope_:i}=n;return al(i,t),cl(void 0,i)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let a=t[n];if(a.path.length===0&&a.op==="replace"){e=a.value;break}}n>-1&&(t=t.slice(n+1));let i=Tr("Patches").applyPatches_;return Ae(e)?i(e,t):this.produce(e,a=>i(a,t))}};function qi(e,t){let n=Cn(e)?Tr("MapSet").proxyMap_(e,t):_n(e)?Tr("MapSet").proxySet_(e,t):gm(e,t);return(t?t.scope_:ml()).drafts_.push(n),n}function br(e){return Ae(e)||Ue(10,e),hl(e)}function hl(e){if(!Dr(e)||jn(e))return e;let t=e[_e],n;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Di(e,t.scope_.immer_.useStrictShallowCopy_)}else n=Di(e,!0);return xn(n,(i,a)=>{dl(n,i,hl(a))}),t&&(t.finalized_=!1),n}var Te=new wm,Nn=Te.produce,Pk=Te.produceWithPatches.bind(Te),Ek=Te.setAutoFreeze.bind(Te),xk=Te.setUseStrictShallowCopy.bind(Te),Sk=Te.applyPatches.bind(Te),Ok=Te.createDraft.bind(Te),Rk=Te.finishDraft.bind(Te);var x={LITERAL:0,VARIABLE:1,INTERPOLATION:2,FUNCTION:3,BINARY:4,UNARY:5,CONDITIONAL:6,LOOP:7,OBJECT:8,ARRAY:9,PARTIAL:10,PATH_REFERENCE:11},Z={EQ:0,NEQ:1,GT:2,LT:3,GTE:4,LTE:5,AND:6,OR:7,IN:8,ADD:10,SUBTRACT:11},st={NOT:0};var L=class extends Error{constructor(t){super(`Parse Error: ${t}`),this.name="JemplParseError"}},Ce=class extends Error{constructor(t){super(`Render Error: ${t}`),this.name="JemplRenderError"}};var Ui=e=>{if(!e||e.trim()==="")throw new L("Missing condition expression after '$if'");if(e.includes("===")||e.includes("!==")){let n=e.includes("===")?"==":"!=";throw new L(`Invalid comparison operator '${e.includes("===")?"===":"!=="}' - did you mean '${n}'? (got: '${e}')`)}let t=["<",">","<=",">=","==","!="];for(let n of t)if(e.trim().endsWith(n))throw new L(`Incomplete comparison expression - missing right operand (got: '${e}')`)},gl=e=>{if(e.trim().endsWith(" in"))throw new L(`Missing iterable expression after 'in' (got: '$for ${e}')`);if(!e.includes(" in "))throw new L(`Invalid loop syntax - missing 'in' keyword (got: '$for ${e}')`);let[t,n]=e.split(" in ");if(!n||n.trim()==="")throw new L(`Missing iterable expression after 'in' (got: '$for ${e}')`);let i=t.includes(",")?t.split(",").map(a=>a.trim()):[t.trim()];for(let a of i){if(!a)throw new L(`Invalid loop variable - variable name cannot be empty (got: '$for ${e}')`);if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(a))throw new L(`Invalid loop syntax (got: '$for ${e}')`)}};var bl=(e,t,n=!1)=>{if(t===null)return new Ce(`Cannot iterate over null value at '$for ${e}'`);if(t===void 0)return new Ce(`Cannot iterate over undefined value at '$for ${e}'`);let i=typeof t;return n?new Ce(`Cannot iterate over non-array value in loop '${e}' - got ${i} instead`):new Ce(`Cannot iterate over non-array value (got: ${i}) at '$for ${e}'`)},wl=(e,t)=>{let n=t&&Object.keys(t).length>0?Object.keys(t).join(", "):"no custom functions provided";return new Ce(`Unknown function '${e}' (${n})`)};var Im=(e,t,n={})=>{let i={},a={};n&&typeof n=="object"&&(n.functions!==void 0||n.partials!==void 0?(i=n.functions||{},a=n.partials||{}):typeof n=="object"&&(i=n));let s=te(e,{functions:i,partials:a},t,{});return s===void 0?{}:s},te=(e,t,n,i)=>{let a=t.functions||t;if(e.var&&!e.type)return ve(e.var,n,i);if(e.type===x.LITERAL)return e.value;if(e.type===x.VARIABLE)return ve(e.path,n,i);if(e.type===x.INTERPOLATION)return km(e.parts,t,n,i);switch(e.type){case x.FUNCTION:return vl(e,t,n,i);case x.BINARY:return kl(e,t,n,i);case x.UNARY:return Al(e,t,n,i);case x.CONDITIONAL:return Pm(e,t,n,i);case x.LOOP:return Rm(e,t,n,i);case x.OBJECT:return Cm(e,t,n,i);case x.ARRAY:return _m(e,t,n,i);case x.PARTIAL:return jm(e,t,n,i);case x.PATH_REFERENCE:return Nm(e,t,n,i);default:throw new Error(`Unknown node type: ${e.type}`)}},Il=new Map,vm=e=>{let t=[],n="",i=!1;for(let a=0;a<e.length;a++){let r=e[a];if(r==="[")n&&(t.push({type:"property",value:n}),n=""),i=!0;else if(r==="]"){if(i&&n){let s=n.trim();if(/^\d+$/.test(s))t.push({type:"index",value:parseInt(s,10)});else if(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'")){let o=s.slice(1,-1);t.push({type:"property",value:o})}else t.push({type:"property",value:s});n=""}i=!1}else n+=r}return n&&t.push({type:"property",value:n}),t},ve=(e,t,n)=>{if(!e)return;if(e in n)return n[e];let i=Il.get(e);if(!i){let r=[],s="",o=0;for(let l=0;l<e.length;l++){let c=e[l];c==="["?(o++,s+=c):c==="]"?(o--,s+=c):c==="."&&o===0?s&&(r.push(s),s=""):s+=c}s&&r.push(s),i=[];for(let l of r){let c=vm(l.trim());i.push(...c)}Il.set(e,i)}let a=t;for(let r=0;r<i.length;r++){let s=i[r];if(s.type==="property"&&s.value in n){a=n[s.value];continue}if(a==null)return;(s.type==="property"||s.type==="index")&&(a=a[s.value])}return a},km=(e,t,n,i)=>{let a=[];for(let r of e)if(typeof r=="string")a.push(r);else{let s=te(r,t,n,i);a.push(s!=null?String(s):"")}return a.join("")},vl=(e,t,n,i)=>{let a=t.functions||t,r=a[e.name];if(!r)throw wl(e.name,a);let s=e.args.map(o=>te(o,t,n,i));return r(...s)},wr=(e,t,n,i)=>{if(e.var&&!e.type)return ve(e.var,n,i);switch(e.type){case x.VARIABLE:return ve(e.path,n,i);case x.LITERAL:return e.value;case x.BINARY:return kl(e,t,n,i);case x.UNARY:return Al(e,t,n,i);case x.FUNCTION:return vl(e,t,n,i);default:return te(e,t,n,i)}},kl=(e,t,n,i)=>{if(e.op===Z.AND||e.op===Z.OR){let s=wr(e.left,t,n,i),o=wr(e.right,t,n,i);switch(e.op){case Z.AND:return s&&o;case Z.OR:return s||o}}let a=te(e.left,t,n,i),r=te(e.right,t,n,i);switch(e.op){case Z.EQ:return a==r;case Z.NEQ:return a!=r;case Z.GT:return a>r;case Z.LT:return a<r;case Z.GTE:return a>=r;case Z.LTE:return a<=r;case Z.IN:return Array.isArray(r)?r.includes(a):!1;case Z.ADD:if(typeof a!="number"||typeof r!="number")throw new Ce(`Arithmetic operations require numbers. Got ${typeof a} + ${typeof r}`);return a+r;case Z.SUBTRACT:if(typeof a!="number"||typeof r!="number")throw new Ce(`Arithmetic operations require numbers. Got ${typeof a} - ${typeof r}`);return a-r;default:throw new Error(`Unknown binary operator: ${e.op}`)}},Al=(e,t,n,i)=>{let a=e.op===st.NOT?wr(e.operand,t,n,i):te(e.operand,t,n,i);if(e.op===st.NOT)return!a;throw new Error(`Unknown unary operator: ${e.op}`)},Am=(e,t,n,i)=>{if(e.conditions.length===2&&e.conditions[1]===null){let a=e.conditions[0];if(a.type===x.VARIABLE)if(ve(a.path,n,i)){let s=e.bodies[0];if(s.type===x.OBJECT&&s.properties.length<=5){let o={};for(let l of s.properties){let c=l.parsedKey?te(l.parsedKey,t,n,i):l.key,u=l.value;if(u.type===x.LITERAL)o[c]=u.value;else if(u.type===x.VARIABLE)o[c]=ve(u.path,n,i);else if(u.type===x.INTERPOLATION){let p=[];for(let d of u.parts)if(typeof d=="string")p.push(d);else if(d.type===x.VARIABLE){let f=ve(d.path,n,i);p.push(f!=null?String(f):"")}else{let f=te(d,t,n,i);p.push(f!=null?String(f):"")}o[c]=p.join("")}else o[c]=te(u,t,n,i)}return o}}else{let s=e.bodies[1];if(s.type===x.OBJECT&&s.properties.length<=5){let o={};for(let l of s.properties){let c=l.parsedKey?te(l.parsedKey,t,n,i):l.key,u=l.value;if(u.type===x.LITERAL)o[c]=u.value;else if(u.type===x.VARIABLE)o[c]=ve(u.path,n,i);else if(u.type===x.INTERPOLATION){let p=[];for(let d of u.parts)if(typeof d=="string")p.push(d);else if(d.type===x.VARIABLE){let f=ve(d.path,n,i);p.push(f!=null?String(f):"")}else{let f=te(d,t,n,i);p.push(f!=null?String(f):"")}o[c]=p.join("")}else o[c]=te(u,t,n,i)}return o}}}return null},Pm=(e,t,n,i)=>{let a=Am(e,t,n,i);if(a!==null)return a;for(let r=0;r<e.conditions.length;r++){let s=e.conditions[r];if(s===null||wr(s,t,n,i))return te(e.bodies[r],t,n,i)}return Pl},Em=(e,t)=>{let n=e.body,i=e.itemVar;if(n.type===x.CONDITIONAL&&n.conditions.length===1&&n.conditions[0].type===x.VARIABLE){let a=n.conditions[0].path,r=n.bodies[0];if(a.startsWith(i+".")){let s=a.substring(i.length+1);if(r.type===x.OBJECT&&r.properties.length<=5){for(let l of r.properties)if(l.parsedKey)return null;let o=[];for(let l=0;l<t.length;l++){let c=t[l];if(c[s]){let u={};for(let p of r.properties){let d=p.key,f=p.value;if(f.type===x.LITERAL)u[d]=f.value;else if(f.type===x.VARIABLE){let m=f.path;if(m===i)u[d]=c;else if(m.startsWith(i+".")){let b=m.substring(i.length+1);u[d]=c[b]}else return null}else if(f.type===x.INTERPOLATION){let m=[],b=!0;for(let h of f.parts)if(typeof h=="string")m.push(h);else if(h.type===x.VARIABLE){let y=h.path;if(y===i)m.push(c!=null?String(c):"");else if(y.startsWith(i+".")){let w=y.substring(i.length+1),g=c[w];m.push(g!=null?String(g):"")}else{b=!1;break}}else{b=!1;break}if(!b)return null;u[d]=m.join("")}else return null}o.push(u)}}return o}}}return null},xm=(e,t)=>{let n=e.body,i=e.itemVar,a=Em(e,t);if(a!==null)return a;if(n.type===x.OBJECT&&n.properties.length<=5&&!n.whenCondition){for(let o of n.properties)if(o.parsedKey)return null;let r=[],s=!0;for(let o of n.properties){let l=o.key,c=o.value;if(c.type===x.LITERAL)r.push({key:l,type:"literal",value:c.value});else if(c.type===x.VARIABLE){let u=c.path;if(u===i)r.push({key:l,type:"item"});else if(u.startsWith(i+".")){let p=u.substring(i.length+1);if(!p.includes(".")&&!p.includes("["))r.push({key:l,type:"prop",prop:p});else{s=!1;break}}else{s=!1;break}}else if(c.type===x.INTERPOLATION&&c.parts.length===1){let u=c.parts[0];if(u.type===x.VARIABLE){let p=u.path;if(p===i)r.push({key:l,type:"item_string"});else if(p.startsWith(i+".")){let d=p.substring(i.length+1);if(!d.includes(".")&&!d.includes("["))r.push({key:l,type:"prop_string",prop:d});else{s=!1;break}}else{s=!1;break}}else{s=!1;break}}else{s=!1;break}}if(s){let o=new Array(t.length);if(r.length===3&&r[0].type==="prop"&&r[0].key==="id"&&r[1].type==="prop_string"&&r[1].key==="title"&&r[2].type==="prop"&&r[2].key==="completed")for(let l=0;l<t.length;l++){let c=t[l];o[l]={id:c.id,title:c.title!=null?String(c.title):"",completed:c.completed}}else for(let l=0;l<t.length;l++){let c=t[l],u={};for(let p of r)if(p.type==="literal")u[p.key]=p.value;else if(p.type==="item")u[p.key]=c;else if(p.type==="prop")u[p.key]=c[p.prop];else if(p.type==="item_string")u[p.key]=c!=null?String(c):"";else if(p.type==="prop_string"){let d=c[p.prop];u[p.key]=d!=null?String(d):""}o[l]=u}return o}}return null},Sm=(e,t,n,i,a)=>{let r=[],s=e.body;if(s.type===x.OBJECT&&s.fast!==!1){let o=e.itemVar,l=e.indexVar;for(let c=0;c<a.length;c++){let u=a[c],p={},d={...i,[o]:u,...l&&{[l]:c}};d.__paths__||(d.__paths__=i.__paths__||{});let f=e.iterable.path||"";if(i&&i.__paths__&&f){let m=f.split("."),b=m[0];b in i.__paths__&&(f=i.__paths__[b],m.length>1&&(f+="."+m.slice(1).join(".")))}d.__paths__={...d.__paths__,[o]:`${f}[${c}]`,...l&&{[l]:c}};for(let m of s.properties){let b=m.parsedKey?te(m.parsedKey,t,n,d):m.key,h=m.value;if(h.type===x.LITERAL)p[b]=h.value;else if(h.type===x.VARIABLE){let y=h.path;if(y===o)p[b]=u;else if(y===l)p[b]=c;else if(y.startsWith(o+".")){let w=y.substring(o.length+1);!w.includes(".")&&!w.includes("[")?p[b]=u[w]:p[b]=ve(y,n,{...i,[o]:u,...l&&{[l]:c}})}else p[b]=ve(y,n,{...i,[o]:u,...l&&{[l]:c}})}else if(h.type===x.INTERPOLATION){let y=[];for(let w of h.parts)if(typeof w=="string")y.push(w);else if(w.type===x.VARIABLE){let g=w.path,E;if(g===o)E=u;else if(g===l)E=c;else if(g.startsWith(o+".")){let k=g.substring(o.length+1);!k.includes(".")&&!k.includes("[")?E=u[k]:E=ve(g,n,{...i,[o]:u,...l&&{[l]:c}})}else E=ve(g,n,{...i,[o]:u,...l&&{[l]:c}});y.push(E!=null?String(E):"")}else{let g={...i,[o]:u,...l&&{[l]:c}},E=te(w,t,n,g);y.push(E!=null?String(E):"")}p[b]=y.join("")}else{let y={...i,[o]:u,...l&&{[l]:c}};p[b]=te(h,t,n,y)}}r.push(p)}return r}return null},Om=(e,t,n)=>{let i=e.body;if(i.type===x.OBJECT&&i.properties.length===1&&i.properties[0].key==="$if item.visible"){let r=i.properties[0].value;if(r.type===x.CONDITIONAL&&r.conditions.length===1&&r.conditions[0].type===x.VARIABLE&&r.conditions[0].path==="item.visible"){let s=r.bodies[0];if(s.type===x.OBJECT&&s.properties.length===2){let o=s.properties[0],l=s.properties[1];if(o.key==="id"&&o.value.type===x.VARIABLE&&o.value.path==="item.id"&&l.key==="$if item.highlighted"&&l.value.type===x.CONDITIONAL){let c=[];for(let u=0;u<t.length;u++){let p=t[u];if(p.visible){let d={id:p.id};p.highlighted?(d.highlight=!0,d.message=`This item is highlighted: ${p.name}`):(d.highlight=!1,d.message=p.name),c.push(d)}}return c}}}}return null},Rm=(e,t,n,i)=>{let a=te(e.iterable,t,n,i);if(!Array.isArray(a)){let c,u=!1;if(e.iterable.type===x.FUNCTION){u=!0;let d=e.iterable.args.map(f=>f.type===x.LITERAL?typeof f.value=="string"?`'${f.value}'`:String(f.value):f.type===x.VARIABLE?f.path:f.type===x.FUNCTION?`${f.name}(...)`:"?").join(", ");c=`${e.iterable.name}(${d})`}else c=e.iterable.path||"undefined";let p=`${e.itemVar}${e.indexVar?`, ${e.indexVar}`:""} in ${c}`;throw bl(p,a,u)}if(!e.indexVar){let c=Om(e,a,e.itemVar);if(c!==null)return c}if(!e.indexVar){let c=xm(e,a);if(c!==null)return c}let r=Sm(e,t,n,i,a);if(r!==null)return r;let s=[],o=e.iterable.path||"";if(i&&i.__paths__&&o){let c=o.split("."),u=c[0];u in i.__paths__&&(o=i.__paths__[u],c.length>1&&(o+="."+c.slice(1).join(".")))}let l=!1;e.body.type===x.ARRAY&&(e.body.items.length<=1?l=!1:l=e.body._shouldPreserveArray??=e.body.items.some(c=>c.type===x.OBJECT&&c.properties.some(u=>u.key.startsWith("$if ")||u.key.startsWith("$when "))));for(let c=0;c<a.length;c++){let u=e.indexVar?{...i,[e.itemVar]:a[c],[e.indexVar]:c}:{...i,[e.itemVar]:a[c]};u.__paths__||(u.__paths__=i.__paths__||{}),u.__paths__={...u.__paths__,[e.itemVar]:`${o}[${c}]`},e.indexVar&&(u.__paths__[e.indexVar]=c);let p=te(e.body,t,n,u);if(Array.isArray(p)&&p.length===1&&!l){let d=p[0];s.push(d===void 0?{}:d)}else s.push(p===void 0?{}:p)}return s},$m=(e,t,n,i)=>{if(e.whenCondition)return null;if(e.properties.length===1){let a=e.properties[0],r=a.parsedKey?te(a.parsedKey,t,n,i):a.key,s=a.value;if(s.type===x.OBJECT&&s.properties.length<=10&&!s.whenCondition){let o={},l={},c=!0;for(let u of s.properties){let p=u.parsedKey?te(u.parsedKey,t,n,i):u.key,d=u.value;if(d.type===x.LITERAL)l[p]=d.value;else if(d.type===x.VARIABLE)l[p]=ve(d.path,n,i);else if(d.type===x.INTERPOLATION){let f=[];for(let m of d.parts)if(typeof m=="string")f.push(m);else if(m.type===x.VARIABLE){let b=ve(m.path,n,i);f.push(b!=null?String(b):"")}else{c=!1;break}if(!c)break;l[p]=f.join("")}else if(d.type===x.OBJECT&&d.properties.length<=5){let f={};for(let m of d.properties){let b=m.key,h=m.value;if(h.type===x.LITERAL)f[b]=h.value;else if(h.type===x.VARIABLE)f[b]=ve(h.path,n,i);else if(h.type===x.INTERPOLATION){let y=[];for(let w of h.parts)if(typeof w=="string")y.push(w);else if(w.type===x.VARIABLE){let g=ve(w.path,n,i);y.push(g!=null?String(g):"")}else{c=!1;break}if(!c)break;f[b]=y.join("")}else{c=!1;break}}if(!c)break;l[p]=f}else{c=!1;break}}if(c)return o[r]=l,o}}return null},Cm=(e,t,n,i)=>{let a=t.functions||t;if(e.whenCondition&&!wr(e.whenCondition,a,n,i))return;let r=$m(e,t,n,i);if(r!==null)return r;if(e.fast){let c={};for(let u of e.properties){let p=u.parsedKey?te(u.parsedKey,t,n,i):u.key,d=u.value;if(d.type===x.LITERAL)c[p]=d.value;else if(d.type===x.VARIABLE)c[p]=ve(d.path,n,i);else if(d.type===x.INTERPOLATION){let f=[];for(let m of d.parts)if(typeof m=="string")f.push(m);else if(m.type===x.VARIABLE){let b=ve(m.path,n,i);f.push(b!=null?String(b):"")}else{let b=te(m,t,n,i);f.push(b!=null?String(b):"")}c[p]=f.join("")}else c[p]=te(d,t,n,i)}return c}let s={},o=null,l=!1;for(let c of e.properties)if(!c.key.startsWith("$if ")&&!c.key.match(/^\$if\s+\w+.*:?$/)&&!c.key.startsWith("$elif")&&!c.key.startsWith("$else")&&!c.key.startsWith("$for ")){l=!0;break}for(let c of e.properties)if(c.key.startsWith("$if ")||c.key.match(/^\$if\s+\w+.*:?$/)){let u=te(c.value,t,n,i);if(!l&&u!==null&&u!==void 0)return Array.isArray(u)&&u.length===1?u[0]:u;typeof u=="object"&&u!==null&&!Array.isArray(u)&&Object.assign(s,u)}else if(c.key.startsWith("$for ")){if(e.properties.length===1)return te(c.value,t,n,i)}else{let u=c.value;if(u&&u.type===x.OBJECT&&u.properties){let p=u.properties.find(d=>d.key.startsWith("$for "));if(p){let d=te(p.value,t,n,i);d!==void 0&&(s[c.key]=d)}else{let d=te(c.value,t,n,i);d!==void 0&&(s[c.key]=d)}}else{let p=c.parsedKey?te(c.parsedKey,t,n,i):c.key,d=te(c.value,t,n,i);d!==void 0&&(s[p]=d)}}return s},Pl={},_m=(e,t,n,i)=>{let a=[];for(let r of e.items)if(r.type===x.LOOP){let s=te(r,t,n,i);Array.isArray(s)&&r.flatten!==!1?a.push(...s):a.push(s)}else{let s=te(r,t,n,i);s!==Pl&&s!==void 0&&a.push(s)}return a},jm=(e,t,n,i)=>{let{name:a,data:r,whenCondition:s}=e,o=t.partials||{},l=t.functions||t;if(s&&!wr(s,l,n,i))return;if(!o[a])throw new Ce(`Partial '${a}' is not defined`);let c=i._partialStack||[];if(c.includes(a))throw new Ce(`Circular partial reference detected: ${a}`);let u=o[a],p=n,d={...i,_partialStack:[...c,a]};if(i){p={...n};for(let f of Object.keys(i))f.startsWith("_")||(p[f]=i[f])}if(r){let f=te(r,t,n,i);p={...p,...f}}return te(u,t,p,d)},Nm=(e,t,n,i)=>{let{path:a}=e,r=a.split("."),s=r[0],o=r.slice(1);if(!i||!(s in i))throw new Ce(`Path reference '#{${a}}' refers to '${s}' which is not a loop variable in the current scope`);if(i.__paths__||(i.__paths__={}),!(s in i.__paths__))throw new Ce(`Path reference '#{${a}}' cannot be resolved - path tracking may not be initialized properly`);let l=i.__paths__[s];if(typeof l=="number"){if(o.length>0)throw new Ce(`Path reference '#{${a}}' - cannot access properties on index variable '${s}'`);return String(l)}return o.length>0&&(l+="."+o.join(".")),l};var Bi=Im;var Dm=/\$\{([^}]*)\}/g,Tm=/#\{([^}]*)\}/g,xl=(e,t={})=>{let n=e.match(/^(\w+)\((.*)\)$/);if(!n)return{isFunction:!1};let[,i,a]=n,r=Lm(a,t);return{isFunction:!0,type:x.FUNCTION,name:i,args:r}},Lm=(e,t={})=>e.trim()?Mm(e).map(i=>qm(i.trim(),t)):[],Mm=e=>{let t=[],n="",i=0,a=!1,r="";for(let s=0;s<e.length;s++){let o=e[s],l=s>0?e[s-1]:"";!a&&(o==='"'||o==="'")?(a=!0,r=o,n+=o):a&&o===r&&l!=="\\"?(a=!1,r="",n+=o):!a&&o==="("?(i++,n+=o):!a&&o===")"?(i--,n+=o):!a&&o===","&&i===0?(t.push(n),n=""):n+=o}return n&&t.push(n),t},qm=(e,t={})=>{if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return{type:x.LITERAL,value:e.slice(1,-1)};if(/^-?\d+(\.\d+)?$/.test(e))return{type:x.LITERAL,value:parseFloat(e)};if(e==="true")return{type:x.LITERAL,value:!0};if(e==="false")return{type:x.LITERAL,value:!1};if(e==="null")return{type:x.LITERAL,value:null};let n=xl(e,t);if(n.isFunction)return{type:n.type,name:n.name,args:n.args};let i=e.trim(),a=[{op:" + ",type:"ADD"},{op:" - ",type:"SUBTRACT"}],r=-1,s=null;for(let{op:o,type:l}of a){let c=0;for(;c<i.length;){let u=Lr(i.substring(c),o);if(u===-1)break;let p=c+u;p>r&&(r=p,s={op:o,type:l}),c=p+o.length}}if(r!==-1)try{return Pe(i,t)}catch{return{type:x.VARIABLE,path:i}}return{type:x.VARIABLE,path:i}},Sl=/^\w+\(.*\)$/,Vm=/\s[+\-*/%]\s|\|\||&&|\?\?|.*\?.*:/,Fm=e=>{if(!(!e||e.trim()===""||Sl.test(e))&&Vm.test(e))throw e.includes("?")&&e.includes(":")?new L(`Complex expressions not supported in variable replacements - consider calculating the value in your data instead. Offending expression: "${e}"`):e.includes("||")||e.includes("&&")||e.includes("??")?new L(`Logical operators not supported in variable replacements - consider calculating the value in your data instead (operators like ||, &&, ?? are not supported). Offending expression: "${e}"`):new L(`Arithmetic expressions not supported in variable replacements - consider calculating '${e}' in your data instead (expressions with +, -, *, /, % are not supported). Offending expression: "${e}"`)},El=e=>{let t=e.trim();if(Sl.test(t))throw new L(`Functions are not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(t.includes("["))throw new L(`Array indices not supported in path references - use simple variable names or properties. Offending expression: "#{${e}}"`);if(/[+\-*/%]/.test(t))throw new L(`Arithmetic expressions not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(/\|\||&&/.test(t))throw new L(`Logical operators not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(t.includes("?")&&t.includes(":"))throw new L(`Complex expressions not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);return{type:x.PATH_REFERENCE,path:t}},Ct=(e,t={})=>{let n=e.trim();Fm(n);let i=xl(n,t);if(i.isFunction)return{type:i.type,name:i.name,args:i.args};if(n.includes("[")&&!/[\s+\-*/%|&?:]/.test(n)){let a=0;for(let r of n)r==="["?a++:r==="]"&&a--;if(a!==0)throw new Error("Invalid array index syntax")}return{type:x.VARIABLE,path:n}},Yi=(e,t={})=>{let n=e,i=[];(e.includes("\\${")||e.includes("\\#{"))&&(n=e.replace(/\\\\(\$\{[^}]*\})/g,"\\DOUBLE_ESC_VAR$1"),n=n.replace(/\\\\(#\{[^}]*\})/g,"\\DOUBLE_ESC_PATH$1"),n=n.replace(/\\(\$\{[^}]*\})/g,(c,u)=>{let p=`__ESCAPED_${i.length}__`;return i.push(u),p}),n=n.replace(/\\(#\{[^}]*\})/g,(c,u)=>{let p=`__ESCAPED_${i.length}__`;return i.push(u),p}),n=n.replace(/\\DOUBLE_ESC_VAR/g,"\\"),n=n.replace(/\\DOUBLE_ESC_PATH/g,"\\"));let a=[...n.matchAll(Dm)],r=[...n.matchAll(Tm)],s=[...a.map(c=>({match:c,type:"variable"})),...r.map(c=>({match:c,type:"pathref"}))].sort((c,u)=>c.match.index-u.match.index);if(s.length===0){let c=n;for(let u=0;u<i.length;u++)c=c.replace(`__ESCAPED_${u}__`,i[u]);return{type:x.LITERAL,value:c}}if(s.length===1&&s[0].match[0]===n&&i.length===0){let{match:c,type:u}=s[0];try{return u==="variable"?Ct(c[1],t):El(c[1])}catch(p){if(p.message==="Invalid array index syntax")return{type:x.LITERAL,value:n};throw p}}let o=[],l=0;for(let{match:c,type:u}of s){let[p,d]=c,f=c.index;if(f>l){let m=n.substring(l,f);for(let b=0;b<i.length;b++)m=m.replace(`__ESCAPED_${b}__`,i[b]);m&&o.push(m)}try{let m;u==="variable"?m=Ct(d.trim(),t):m=El(d.trim()),o.push(m)}catch(m){if(m.message==="Invalid array index syntax")o.push(p);else throw m}l=f+p.length}if(l<n.length){let c=n.substring(l);for(let u=0;u<i.length;u++)c=c.replace(`__ESCAPED_${u}__`,i[u]);c&&o.push(c)}return{type:x.INTERPOLATION,parts:o}};var Gi=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),$l=e=>Object.keys(e),Oe=e=>e.join("."),Ir=(e,t,n)=>{let i=$l(e).filter(a=>!t.has(a));if(i.length>0)throw new L(`Unexpected key '${i[0]}' in condition JSON at '${Oe(n)}'`)},vr=(e,t)=>typeof e=="string"?Yi(e,t):typeof e=="object"&&e!==null?Array.isArray(e)?Bm(e,t):Ym(e,t):{type:x.LITERAL,value:e},Um=e=>{let{$each:t,...n}=e;if(typeof t!="string")throw new L("$each value must be a non-empty string");let i=t.trim();if(i==="")throw new L("$each value must be a non-empty string");if(Object.keys(n).length===0)throw new L("Empty $each body not allowed");if(n.$partial!==void 0)throw new L("Cannot use $partial with $each at the same level. Wrap $partial in a parent object if you need conditionals.");return{[`$for ${i}`]:n}},Bm=(e,t)=>{let n=[],i=!1;for(let a=0;a<e.length;a++){let r=e[a];if(typeof r=="object"&&r!==null&&!Array.isArray(r)){if(r.$each!==void 0)try{let l=Um(r),c=Object.keys(l);if(c.length===1&&/^\$for(?::\w+)?\s/.test(c[0])){let u=Rl(c[0],l[c[0]],t,!0);n.push(u),i=!0;continue}}catch(l){throw l instanceof L?l:new L(l.message)}let o=Object.keys(r);if(o.length===1&&/^\$for(?::\w+)?\s/.test(o[0])){let l=Rl(o[0],r[o[0]],t);n.push(l),i=!0;continue}}let s=vr(r,t);n.push(s),(s.type===x.FUNCTION||s.type===x.CONDITIONAL||s.type===x.LOOP||s.type===x.PARTIAL||s.type===x.OBJECT&&!s.fast||s.type===x.ARRAY&&!s.fast)&&(i=!0)}return{type:x.ARRAY,items:n,fast:!i}},Ym=(e,t)=>{let n=[],i=!1,a=null,r=Object.entries(e),s=0;if(e.$partial!==void 0){if(typeof e.$partial!="string")throw new L("$partial value must be a string");if(e.$partial.trim()==="")throw new L("$partial value cannot be an empty string");let l=["$if","$elif","$else","$for"],c=[];for(let[y]of r)for(let w of l)if(y===w||y.startsWith(w+" ")||y.startsWith(w+"#")){c.push(w);break}if(c.length>0)throw new L(`Cannot use $partial with ${c.join(", ")} at the same level. Wrap $partial in a parent object if you need conditionals.`);let{$partial:u,$when:p,...d}=e,f={},m=!1;for(let[y,w]of Object.entries(d)){let g=y;(y.startsWith("\\$")||y.startsWith("$$"))&&(g=y.slice(1)),f[g]=w,m=!0}let b=null;if(m&&(b=vr(f,t),b.type===x.OBJECT)){let y=!1;for(let w of b.properties)if(w.value.type===x.VARIABLE||w.value.type===x.INTERPOLATION||w.value.type===x.FUNCTION||w.value.type===x.CONDITIONAL||w.value.type===x.OBJECT&&!w.value.fast||w.value.type===x.ARRAY&&!w.value.fast){y=!0;break}y&&(b.fast=!1)}let h={type:x.PARTIAL,name:u,data:b};return p!==void 0&&(h.whenCondition=Ol(p,t)),h}for(let[l,c]of r)if(l==="$when"){if(a!==null)throw new L("Multiple '$when' directives on the same object are not allowed");if(c==null)throw new L("Missing condition expression after '$when'");a=Ol(c,t),i=!0}else if(l.startsWith("$when#")||l.startsWith("$when "))throw new L("'$when' does not support ID syntax or inline conditions - use '$when' as a property");for(;s<r.length;){let[l,c]=r[s];if(l==="$when"){s++;continue}if(l==="$each")throw new L("$each can only be used inside arrays");if(l.startsWith("$if ")||l.match(/^\$if#\w+\s/)||l.match(/^\$if\s+\w+.*:$/)){let u=zm(r,s,t);n.push({key:l,value:u.node}),i=!0,s=u.nextIndex}else if(/^\$for(?::\w+)?\s/.test(l)){let u=l.match(/^\$for(?::(\w+))?\s/)?.[1]||"",p=u?`:${u}`:"";throw new L(`$for loops must be inside arrays - use '- $for${p} item in items:' instead of '$for${p} item in items:'. For cleaner object generation syntax, consider using $each.`)}else{if(l.startsWith("$elif ")||l.startsWith("$else"))throw new L(`'${l.split(" ")[0]}' without matching '$if'`);if(l==="$if"||l==="$if:")throw new L("Missing condition expression after '$if'");{let u=vr(c,t);(u.type===x.FUNCTION||u.type===x.CONDITIONAL||u.type===x.PARTIAL||u.type===x.OBJECT&&!u.fast||u.type===x.ARRAY&&!u.fast)&&(i=!0);let p=Yi(l,t),d={key:l,value:u};(p.type!==x.LITERAL||p.value!==l)&&(d.parsedKey=p),n.push(d),s++}}}let o={type:x.OBJECT,properties:n,fast:!i};return a&&(o.whenCondition=a),o},zm=(e,t,n={})=>{let i=[],a=[],r=t,[s,o]=e[r],l=null,c;if(s.startsWith("$if#")){let p=s.match(/^\$if#(\w+)\s+(.+)$/);if(p)l=p[1],c=p[2];else throw new L(`Invalid conditional syntax: ${s}`)}else c=s.substring(4),c.endsWith(":")&&(c=c.slice(0,-1).trim());Ui(c);let u=Pe(c,n);for(i.push(u),a.push(vr(o,n)),r++;r<e.length;){let[p,d]=e[r],f=!1,m;if(l?p.startsWith(`$elif#${l} `)?(m=p.substring(`$elif#${l} `.length),m.endsWith(":")&&(m=m.slice(0,-1).trim()),f=!0):(p===`$else#${l}`||p===`$else#${l}:`)&&(f=!0,m=null):p.startsWith("$elif ")?(m=p.substring(6),m.endsWith(":")&&(m=m.slice(0,-1).trim()),f=!0):(p==="$else"||p==="$else:")&&(f=!0,m=null),f){if(m===null)i.push(null);else{Ui(m);let b=Pe(m,n);i.push(b)}if(a.push(vr(d,n)),r++,m===null)break}else break}return{node:{type:x.CONDITIONAL,conditions:i,bodies:a,id:l},nextIndex:r}},zi={eq:Z.EQ,neq:Z.NEQ,gt:Z.GT,gte:Z.GTE,lt:Z.LT,lte:Z.LTE,in:Z.IN,add:Z.ADD,sub:Z.SUBTRACT},Xi={all:Z.AND,any:Z.OR},Xm=new Set(["var","literal","call","not",...Object.keys(zi),...Object.keys(Xi)]),Gm=(e,t,n)=>{if(!Array.isArray(e))throw new L(`Condition JSON operator '${t}' at '${Oe(n)}' requires an array`);if(e.length!==2)throw new L(`Condition JSON operator '${t}' at '${Oe(n)}' requires exactly 2 operands`);return e},Hm=(e,t,n,i,a)=>{if(!Array.isArray(e))throw new L(`Condition JSON operator '${t}' at '${Oe(a)}' requires an array`);if(e.length===0)throw new L(`Condition JSON operator '${t}' at '${Oe(a)}' requires at least 1 condition`);return e.map((s,o)=>je(s,i,[...a,o])).reduce((s,o)=>({type:x.BINARY,op:n,left:s,right:o}))},Km=(e,t,n)=>{let i,a;if(typeof e.call=="string")i=e.call,a=e.args??[],Ir(e,new Set(["call","args"]),n);else if(Gi(e.call))i=e.call.name,a=e.call.args??[],Ir(e,new Set(["call"]),n),Ir(e.call,new Set(["name","args"]),[...n,"call"]);else throw new L(`Condition JSON call at '${Oe(n)}' requires a function name`);if(typeof i!="string"||i.trim()==="")throw new L(`Condition JSON call at '${Oe(n)}' requires a non-empty function name`);if(!/^\w+$/.test(i))throw new L(`Invalid condition JSON function name '${i}' at '${Oe(n)}'`);if(!Array.isArray(a))throw new L(`Condition JSON call '${i}' at '${Oe(n)}' requires args to be an array`);return{type:x.FUNCTION,name:i,args:a.map((r,s)=>je(r,t,[...n,"args",s]))}},je=(e,t={},n=["$when"])=>{if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null)return{type:x.LITERAL,value:e};if(Array.isArray(e))throw new L(`Condition JSON array at '${Oe(n)}' must be wrapped in an operator or { literal: [...] }`);if(!Gi(e))throw new L(`Invalid condition JSON value at '${Oe(n)}'`);let i=$l(e);if(i.length===0)throw new L(`Condition JSON object at '${Oe(n)}' must contain an operator`);let a=i.filter(s=>Xm.has(s));if(a.length===0)throw new L(`Unknown condition JSON operator '${i[0]}' at '${Oe(n)}'`);if(a.length>1)throw new L(`Condition JSON at '${Oe(n)}' must contain exactly one operator`);let r=a.includes("call")?"call":a[0];if(r==="var"){if(Ir(e,new Set(["var"]),n),typeof e.var!="string"||e.var.trim()==="")throw new L(`Condition JSON var at '${Oe(n)}' requires a non-empty path`);return{type:x.VARIABLE,path:e.var}}if(r==="literal")return Ir(e,new Set(["literal"]),n),{type:x.LITERAL,value:e.literal};if(r==="call")return Km(e,t,n);if(r==="not")return Ir(e,new Set(["not"]),n),{type:x.UNARY,op:st.NOT,operand:je(e.not,t,[...n,"not"])};if(r in Xi)return Ir(e,new Set([r]),n),Hm(e[r],r,Xi[r],t,[...n,r]);if(r in zi){Ir(e,new Set([r]),n);let s=Gm(e[r],r,[...n,r]);return{type:x.BINARY,op:zi[r],left:je(s[0],t,[...n,r,0]),right:je(s[1],t,[...n,r,1])}}throw new L(`Unknown condition JSON operator '${r}' at '${Oe(n)}'`)},Ol=(e,t={})=>{if(e==null)throw new L("Missing condition expression after '$when'");if(typeof e=="string"){if(e.trim()==="")throw new L("Empty condition expression after '$when'");return Pe(e,t)}return Gi(e)||Array.isArray(e)?je(e,t):{type:x.LITERAL,value:e}},Pe=(e,t={})=>{if(e=e.trim(),e.startsWith("(")&&e.endsWith(")")){let c=e.slice(1,-1),u=0,p=!0;for(let d=0;d<c.length;d++)if(c[d]==="("?u++:c[d]===")"&&u--,u<0){p=!1;break}if(p&&u===0)return Pe(c,t)}let n=Lr(e,"||");if(n!==-1)return{type:x.BINARY,op:Z.OR,left:Pe(e.substring(0,n).trim(),t),right:Pe(e.substring(n+2).trim(),t)};let i=Lr(e,"&&");if(i!==-1)return{type:x.BINARY,op:Z.AND,left:Pe(e.substring(0,i).trim(),t),right:Pe(e.substring(i+2).trim(),t)};let a=[{op:">=",type:Z.GTE},{op:"<=",type:Z.LTE},{op:"==",type:Z.EQ},{op:"!=",type:Z.NEQ},{op:">",type:Z.GT},{op:"<",type:Z.LT},{op:" in ",type:Z.IN}];for(let{op:c,type:u}of a){let p=Lr(e,c);if(p!==-1)return{type:x.BINARY,op:u,left:Pe(e.substring(0,p).trim(),t),right:Pe(e.substring(p+c.length).trim(),t)}}let r=-1,s=null,o=[{op:" + ",type:Z.ADD},{op:" - ",type:Z.SUBTRACT}];for(let{op:c,type:u}of o){let p=0;for(;p<e.length;){let d=Lr(e.substring(p),c);if(d===-1)break;let f=p+d;f>r&&(r=f,s={op:c,type:u}),p=f+c.length}}if(r!==-1&&s)return{type:x.BINARY,op:s.type,left:Pe(e.substring(0,r).trim(),t),right:Pe(e.substring(r+s.op.length).trim(),t)};let l=[" * "," / "," % "];for(let c of l)if(Lr(e,c)!==-1)throw new L(`Arithmetic operations are not allowed in conditionals: "${c}"`);return e.startsWith("!")?{type:x.UNARY,op:st.NOT,operand:Pe(e.substring(1).trim(),t)}:Cl(e,t)},Lr=(e,t)=>{let n=0,i=0;for(;i<=e.length-t.length;){if(e[i]==="(")n++;else if(e[i]===")")n--;else if(n===0&&e.substring(i,i+t.length)===t)return i;i++}return-1},Wm=e=>{if(e=e.trim(),e==="true")return{type:x.LITERAL,value:!0};if(e==="false")return{type:x.LITERAL,value:!1};if(e==="null")return{type:x.LITERAL,value:null};if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return{type:x.LITERAL,value:e.slice(1,-1)};if(e==='""'||e==="''")return{type:x.LITERAL,value:""};if(e==="{}")return{type:x.LITERAL,value:{}};if(e==="[]")return{type:x.LITERAL,value:[]};let t=Number(e);return!isNaN(t)&&isFinite(t)?{type:x.LITERAL,value:t}:{type:x.VARIABLE,path:e}},Cl=(e,t)=>{let n=e.trim();if(n.match(/^(\w+)\((.*)\)$/))return Ct(n,t);let a=Wm(n);if(a.type===x.LITERAL)return a;if(/^[a-zA-Z_$][\w.$]*$/.test(n))return{type:x.VARIABLE,path:n};try{return Ct(n,t)}catch(r){if(r.message&&r.message.includes("not supported"))return a;throw r}},Jm=(e,t=!1)=>{let n=t?"$each":"$for";try{gl(e)}catch(i){if(i instanceof L&&t){let a=i.message.replace(/\$for/g,"$each");throw new L(a.replace("Parse Error: ",""))}throw i}},Rl=(e,t,n,i=!1)=>{let a=/^\$for(?::(\w+))?\s+(.+)$/,r=e.match(a);if(!r){let h=i?"$each":"$for";throw new L(`Invalid loop syntax (got: '${e.replace("$for",h)}')`)}let s=r[1],o=r[2].trim();Jm(o,i);let l=o.match(/^(.+?)\s+in\s+(.+)$/);if(!l){let h=i?"$each":"$for";throw new L(`Invalid loop syntax - missing 'in' keyword (got: '${h} ${o}')`)}let c=l[1].trim(),u=l[2].trim(),p,d=null;if(c.includes(",")){let h=c.split(",").map(y=>y.trim());if(h.length!==2)throw new L(`Invalid loop variables: ${c}. Expected format: "item" or "item, index"`);p=h[0],d=h[1]}else p=c;let f=["this","undefined","null","true","false"];if(f.includes(p))throw new L(`Reserved variable name: ${p}`);if(d&&f.includes(d))throw new L(`Reserved variable name: ${d}`);let m=Cl(u,n),b=vr(t,n);return{type:x.LOOP,itemVar:p,indexVar:d,iterable:m,body:b,flatten:s!=="nested"}};var Qm=(e,t={})=>{let{functions:n={}}=t;return vr(e,n)},Dn=Qm;var _t={};um(_t,{now:()=>Zm});var Zm=()=>Date.now();var ey=(e,t,n={})=>{let{functions:i={},partials:a={}}=n,r={..._t,...i},s=Dn(e,{functions:r}),o={};for(let[l,c]of Object.entries(a))o[l]=Dn(c,{functions:r});return Bi(s,t,{functions:r,partials:o})},Mr=ey;var ry=e=>e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.type=="number",ty=(e={})=>!e||typeof e!="object"?{}:Object.prototype.hasOwnProperty.call(e,"functions")||Object.prototype.hasOwnProperty.call(e,"partials")?e.functions||{}:e,ny=(e,t)=>{if(ry(e))return e;if(typeof e=="string"){if(e.trim()==="")throw new L("Empty condition expression");return Pe(e,t)}return je(e,t)},sy=(e,t={},n={})=>{let i=ty(n),a={..._t,...i},r=ny(e,a);return!!wr(r,{functions:a,partials:{}},t,{})},Hi=sy;var no=Symbol("runStoreTransaction"),Qi="__routeEngineConditionComparison",Tn=(e,t)=>typeof e=="number"&&typeof t=="number"&&Number.isFinite(e)&&Number.isFinite(t)||typeof e=="string"&&typeof t=="string",kr=Object.freeze({eq:(e,t)=>e===t,neq:(e,t)=>e!==t,gt:(e,t)=>Tn(e,t)&&e>t,gte:(e,t)=>Tn(e,t)&&e>=t,lt:(e,t)=>Tn(e,t)&&e<t,lte:(e,t)=>Tn(e,t)&&e<=t}),ql=Object.freeze(Object.fromEntries(Object.keys(kr).map(e=>[e,`${Qi}${e}`]))),iy=Object.freeze(Object.fromEntries(Object.entries(ql).map(([e,t])=>[t,kr[e]]))),_l=(e,t)=>Object.prototype.hasOwnProperty.call(e??{},t),oy=e=>{if(typeof e?.call=="string")return e.call;if(e?.call!==null&&typeof e?.call=="object"&&!Array.isArray(e.call))return e.call.name},Ln=e=>{if(Array.isArray(e))return e.map(Ln);if(e===null||typeof e!="object"||_l(e,"literal")||_l(e,"var"))return e;if(oy(e)?.startsWith(Qi))throw new Error(`Condition function names beginning with "${Qi}" are reserved`);let n=Object.entries(e);if(n.length===1){let[[i,a]]=n,r=ql[i];if(r)return{call:r,args:a.map(Ln)}}return Object.fromEntries(n.map(([i,a])=>[i,Ln(a)]))},Nt=(e,t={})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");return je(e),Hi(Ln(e),t,{functions:iy})},ay=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Vl=(e,t,n={})=>{let i={},a={},{transformSelectorFirstArgument:r=b=>b,transformActionFirstArgument:s=b=>b,createTransactionalMetadata:o,updateTransactionalMetadata:l,finalizeTransactionalMetadata:c}=n,u=typeof o=="function",p={state:structuredClone(e),...u?{transactionalMetadata:structuredClone(o())}:{}},d=0,f=(b,h)=>!u||!c?b:Nn(b,y=>{c({state:y.state,transactionalMetadata:y.transactionalMetadata,previousState:h.state,previousTransactionalMetadata:h.transactionalMetadata})});for(let[b,h]of Object.entries(t))b!=="createInitialState"&&(b.startsWith("select")?i[b]=(...y)=>h(r(p.state,p.transactionalMetadata),...y):a[b]=(...y)=>{let w,g=p,E=Nn(p,k=>{let P=h(s(k.state,k.transactionalMetadata),...y);w=P!==void 0&&!Ae(P)?P:void 0,u&&l&&l({actionName:b,args:y,state:k.state,transactionalMetadata:k.transactionalMetadata,previousState:g.state,previousTransactionalMetadata:g.transactionalMetadata})});return d===0&&(E=f(E,g)),p=E,w});let m=b=>{if(typeof b!="function")throw new Error("Store transaction requires a callback");let h=p,y=d===0;d+=1;let w;try{w=b()}catch(g){throw d-=1,p=h,g}if(d-=1,y)try{p=f(p,h)}catch(g){throw p=h,g}return w};return{...i,...a,[no]:m}},Fn=(e,t)=>n=>{let i=e(),a=Array.isArray(n)?n:[n];return Nn(i,r=>{a.forEach(s=>{t.forEach(o=>{o(r,s)})})})};var ly=(e,t)=>{if(e.default!==void 0)return e.default;let n=["number","boolean","string","object"];if(!n.includes(e.type))throw new Error(`Invalid variable type: ${e.type} for variable ${t}. Expected one of: ${n.join(", ")}`);switch(e.type){case"number":return 0;case"boolean":return!1;case"string":return"";case"object":return{}}},J=(e,t)=>Object.prototype.hasOwnProperty.call(e??{},t),Zi=(e,t,n)=>{Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0})},ke=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),cy=new Set(["pageSize","groups"]),uy=new Set(["id","variants"]),py=new Set(["id","imageId"]),fy=new Set(["pageSize","tracks"]),dy=new Set(["id","soundId","title","artist","album","description","coverImageId"]),my=new Set(["pageSize","replays"]),yy=new Set(["sceneId","title","thumbnailImageId","initialVariables"]),qr=(e,t,n)=>{Object.keys(e).forEach(i=>{if(!t.has(i))throw new Error(`${n} contains unsupported property "${i}"`)})},it=(e,t)=>{if(typeof e!="string"||e.length===0)throw new Error(`${t} must be a non-empty string`)},Dt=(e={})=>{let t=e?.resources?.imageGallery;if(t===void 0)return;if(!ke(t))throw new Error("resources.imageGallery must be an object");if(qr(t,cy,"resources.imageGallery"),!Number.isInteger(t.pageSize)||t.pageSize<1)throw new Error("resources.imageGallery.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(t.groups))throw new Error("resources.imageGallery.groups must be an array");let n=new Set;for(let[i,a]of t.groups.entries()){let r=`resources.imageGallery.groups[${i}]`;if(!ke(a))throw new Error(`${r} must be an object`);if(qr(a,uy,r),it(a.id,`${r}.id`),n.has(a.id))throw new Error(`Duplicate image gallery group id "${a.id}"`);if(n.add(a.id),!Array.isArray(a.variants)||a.variants.length===0)throw new Error(`${r}.variants must be a non-empty array`);let s=new Set;for(let[o,l]of a.variants.entries()){let c=`${r}.variants[${o}]`;if(!ke(l))throw new Error(`${c} must be an object`);if(qr(l,py,c),it(l.id,`${c}.id`),it(l.imageId,`${c}.imageId`),s.has(l.id))throw new Error(`Duplicate image gallery variant id "${l.id}" in group "${a.id}"`);if(s.add(l.id),!J(e?.resources?.images,l.imageId))throw new Error(`Image gallery variant "${a.id}.${l.id}" references unknown image "${l.imageId}"`)}}},Tt=(e={})=>{let t=e?.resources?.musicRoom;if(t===void 0)return;if(!ke(t))throw new Error("resources.musicRoom must be an object");if(qr(t,fy,"resources.musicRoom"),!Number.isInteger(t.pageSize)||t.pageSize<1)throw new Error("resources.musicRoom.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(t.tracks))throw new Error("resources.musicRoom.tracks must be an array");let n=new Set;for(let[i,a]of t.tracks.entries()){let r=`resources.musicRoom.tracks[${i}]`;if(!ke(a))throw new Error(`${r} must be an object`);qr(a,dy,r);for(let l of["id","soundId","title"])it(a[l],`${r}.${l}`);for(let l of["artist","album","description","coverImageId"])a[l]!==void 0&&it(a[l],`${r}.${l}`);if(n.has(a.id))throw new Error(`Duplicate music room track id "${a.id}"`);n.add(a.id);let s=e?.resources?.sounds?.[a.soundId];if(!J(e?.resources?.sounds,a.soundId))throw new Error(`Music room track "${a.id}" references unknown sound "${a.soundId}"`);if(!ke(s))throw new Error(`Music room track "${a.id}" references invalid sound "${a.soundId}"`);if(s.playbackRate!==void 0&&(typeof s.playbackRate!="number"||!Number.isFinite(s.playbackRate)||s.playbackRate<=0))throw new Error(`Music room sound "${a.soundId}" playbackRate must be a finite number greater than 0`);let o=s.startAt??0;if(typeof o!="number"||!Number.isFinite(o)||o<0)throw new Error(`Music room sound "${a.soundId}" startAt must be a finite non-negative number`);if(s.endAt!==void 0&&s.endAt!==null&&(typeof s.endAt!="number"||!Number.isFinite(s.endAt)||s.endAt<=o))throw new Error(`Music room sound "${a.soundId}" endAt must be a finite number greater than startAt`);if(a.coverImageId!==void 0&&!J(e?.resources?.images,a.coverImageId))throw new Error(`Music room track "${a.id}" references unknown cover image "${a.coverImageId}"`)}},hy=(e,t,n)=>{let i=Array.isArray(n)?"array":typeof n;switch(t.type){case"number":if(typeof n!="number"||!Number.isFinite(n))throw new Error(`Scene replay initial variable "${e}" expected type number, got ${i}`);return;case"boolean":if(typeof n!="boolean")throw new Error(`Scene replay initial variable "${e}" expected type boolean, got ${i}`);return;case"string":if(typeof n!="string")throw new Error(`Scene replay initial variable "${e}" expected type string, got ${i}`);return;case"object":if(n===null||typeof n!="object")throw new Error(`Scene replay initial variable "${e}" expected type object, got ${i}`);return;default:throw new Error(`Scene replay initial variable "${e}" has invalid variable type "${t.type}"`)}},Lt=(e={})=>{let t=e?.resources?.sceneReplay;if(t===void 0)return;if(!ke(t))throw new Error("resources.sceneReplay must be an object");if(qr(t,my,"resources.sceneReplay"),!Number.isInteger(t.pageSize)||t.pageSize<1)throw new Error("resources.sceneReplay.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(t.replays))throw new Error("resources.sceneReplay.replays must be an array");let n=e?.story?.scenes??{},i=new Set;for(let[a,r]of t.replays.entries()){let s=`resources.sceneReplay.replays[${a}]`;if(!ke(r))throw new Error(`${s} must be an object`);qr(r,yy,s);for(let u of["sceneId","title","thumbnailImageId"])it(r[u],`${s}.${u}`);if(i.has(r.sceneId))throw new Error(`Duplicate scene replay sceneId "${r.sceneId}"`);if(i.add(r.sceneId),!J(e?.resources?.images,r.thumbnailImageId))throw new Error(`Scene replay scene "${r.sceneId}" references unknown thumbnail image "${r.thumbnailImageId}"`);let o=n[r.sceneId];if(!o)throw new Error(`Scene replay references unknown scene "${r.sceneId}"`);let l=o.initialSectionId,c=o.sections?.[l];if(!c)throw new Error(`Scene replay scene "${r.sceneId}" references unknown initial section "${l}"`);if(c.initialLineId!==void 0&&!c.lines?.some(u=>u.id===c.initialLineId))throw new Error(`Scene replay scene "${r.sceneId}" initial section "${l}" references unknown initial line "${c.initialLineId}"`);if(r.initialVariables!==void 0){if(!ke(r.initialVariables))throw new Error(`${s}.initialVariables must be an object`);for(let[u,p]of Object.entries(r.initialVariables)){let d=e?.resources?.variables?.[u];if(!d)throw new Error(`Scene replay scene "${r.sceneId}" initialVariables references unknown variable "${u}"`);if(Re(d))throw new Error(`Scene replay scene "${r.sceneId}" cannot initialize computed variable "${u}"`);if(d.readonly===!0)throw new Error(`Scene replay scene "${r.sceneId}" cannot initialize readonly variable "${u}"`);if(d.scope!=="context")throw new Error(`Scene replay scene "${r.sceneId}" can only initialize context variable "${u}"`);hy(u,d,p)}}}},Fl=e=>{let t=Ae(e)?br(e):e;return structuredClone(t)},gy=({characterId:e,resourceCharacter:t,variables:n={}}={})=>{if(!J(t,"nameVariableId"))return;let i=t.nameVariableId,a=n?.[i];if(typeof a!="string")throw new Error(`Character "${e}" nameVariableId "${i}" must resolve to a string variable`);return a},Un=({characterId:e,character:t,characterName:n,characters:i={},variables:a={}}={})=>{let r=e?i?.[e]:void 0;if(t?.name!==void 0)return t.name;if(n!==void 0)return n;let s=gy({characterId:e,resourceCharacter:r,variables:a});return s!==void 0?s:r?.name||""},Re=e=>J(e,"computed"),so=(e,t)=>{switch(e?.type){case"number":return typeof t=="number"&&Number.isFinite(t);case"boolean":return typeof t=="boolean";case"string":return typeof t=="string";case"object":return t!==null&&typeof t=="object"&&!Array.isArray(t);default:return!1}},Mt=(e={},t={},{allowedScopes:n,preserveUnknown:i=!1}={})=>Object.fromEntries(Object.entries(e??{}).filter(([a,r])=>{let s=t[a];return s===void 0?i:!Re(s)&&(!n||n.includes(s.scope))&&so(s,r)})),Ye=(e,t)=>new Error(`${t} has invalid path: ${JSON.stringify(e)}`),by=(e,t,n)=>{if(e[0]==='"')try{return JSON.parse(e)}catch{throw Ye(t,n)}let a="";for(let r=1;r<e.length-1;r+=1){let s=e[r];if(s!=="\\"){if(s.charCodeAt(0)<32)throw Ye(t,n);a+=s;continue}if(r+=1,r>=e.length-1)throw Ye(t,n);let o=e[r];if(o==="u"){let c=e.slice(r+1,r+5);if(c.length!==4||!/^[0-9a-fA-F]{4}$/.test(c))throw Ye(t,n);a+=String.fromCharCode(Number.parseInt(c,16)),r+=4;continue}let l={"\\":"\\",'"':'"',"'":"'","/":"/",n:`
2
+ `,r:"\r",t:" ",b:"\b",f:"\f"};if(!J(l,o))throw Ye(t,n);a+=l[o]}return a},Ul=(e,t="Computed expression var")=>{if(typeof e!="string"||e.length===0||e.trim()!==e)throw Ye(e,t);let n=[],i=0,a=()=>{let s=i;for(;i<e.length&&e[i]!=="."&&e[i]!=="["&&e[i]!=="]";)i+=1;let o=e.slice(s,i);if(o.length===0||o.trim()!==o||/\s/.test(o))throw Ye(e,t);n.push(o)},r=()=>{for(i+=1;i<e.length&&/\s/.test(e[i]);)i+=1;let s=e[i];if(/\d/.test(s??"")){let u=i;for(;i<e.length&&/\d/.test(e[i]);)i+=1;let p=e.slice(u,i);for(;i<e.length&&/\s/.test(e[i]);)i+=1;if(e[i]!=="]"||p.length>1&&p.startsWith("0"))throw Ye(e,t);i+=1,n.push(p);return}if(s!=='"'&&s!=="'")throw Ye(e,t);let o=s,l=i;i+=1;let c=!1;for(;i<e.length;){let u=e[i];if(c)c=!1;else if(u==="\\")c=!0;else if(u===o){let p=e.slice(l,i+1);for(i+=1;i<e.length&&/\s/.test(e[i]);)i+=1;if(e[i]!=="]")throw Ye(e,t);i+=1,n.push(by(p,e,t));return}i+=1}if(c||i>=e.length)throw Ye(e,t)};for(a();i<e.length;){if(e[i]==="."){i+=1,a();continue}if(e[i]==="["){r();continue}throw Ye(e,t)}return n},Ki=(e,t)=>{let n=e;for(let i of t){if(n==null||!J(n,i))return;n=n[i]}return n},Bl=(e,t={})=>{if(typeof e!="string"||e.trim()==="")throw new Error("Computed expression var requires a non-empty string path");let n=Ul(e),[i,a,...r]=n;if(i==="variables"){if(!a)return t.variables;let s=typeof t.resolveVariable=="function"?t.resolveVariable(a):t.variables?.[a];return Ki(s,r)}return i==="runtime"?Ki(t.runtime,n.slice(1)):Ki(t,n)},Yl=(e,t,n)=>{if(!Array.isArray(t))throw new Error(`Computed expression operator "${e}" requires an array`);if(n!==void 0&&t.length!==n)throw new Error(`Computed expression operator "${e}" requires ${n} operand(s)`)},eo=(e,t)=>{if(!Array.isArray(t))throw new Error(`Computed expression operator "${e}" requires an array`);if(t.length===0)throw new Error(`Computed expression operator "${e}" requires at least one operand`)},wy=(e,t)=>{if(typeof t!="number"||!Number.isFinite(t))throw new Error(`Computed expression operator "${e}" requires finite numeric operands`)},Ge=(e,t,n,i)=>(Yl(e,t,i),t.map(a=>Vn(a,n))),Be=(e,t,n,i)=>{let a=Ge(e,t,n,i);return a.forEach(r=>wy(e,r)),a},Iy=(e,t,n)=>{switch(e){case"var":return Bl(t,n);case"add":{let[i,a]=Be(e,t,n,2);return i+a}case"sub":{let[i,a]=Be(e,t,n,2);return i-a}case"mul":{let[i,a]=Be(e,t,n,2);return i*a}case"div":{let[i,a]=Be(e,t,n,2);return i/a}case"mod":{let[i,a]=Be(e,t,n,2);return i%a}case"neg":{let[i]=Be(e,t,n,1);return-i}case"round":{let[i]=Be(e,t,n,1);return Math.round(i)}case"floor":{let[i]=Be(e,t,n,1);return Math.floor(i)}case"ceil":{let[i]=Be(e,t,n,1);return Math.ceil(i)}case"min":{let[i,a]=Be(e,t,n,2);return Math.min(i,a)}case"max":{let[i,a]=Be(e,t,n,2);return Math.max(i,a)}case"clamp":{let[i,a,r]=Be(e,t,n,3);return Math.min(r,Math.max(a,i))}case"eq":{let[i,a]=Ge(e,t,n,2);return kr.eq(i,a)}case"neq":{let[i,a]=Ge(e,t,n,2);return kr.neq(i,a)}case"gt":{let[i,a]=Ge(e,t,n,2);return kr.gt(i,a)}case"gte":{let[i,a]=Ge(e,t,n,2);return kr.gte(i,a)}case"lt":{let[i,a]=Ge(e,t,n,2);return kr.lt(i,a)}case"lte":{let[i,a]=Ge(e,t,n,2);return kr.lte(i,a)}case"in":{let[i,a]=Ge(e,t,n,2);return Array.isArray(a)?a.includes(i):!1}case"and":case"all":return eo(e,t),t.every(i=>!!Vn(i,n));case"or":case"any":return eo(e,t),t.some(i=>!!Vn(i,n));case"not":{let[i]=Ge(e,t,n,1);return!i}case"length":{let[i]=Ge(e,t,n,1);return typeof i=="string"||Array.isArray(i)?i.length:ke(i)?Object.keys(i).length:0}case"includes":{let[i,a]=Ge(e,t,n,2);return typeof i=="string"?typeof a=="string"&&i.includes(a):Array.isArray(i)?i.includes(a):!1}case"literal":return Fl(t);default:throw new Error(`Unknown computed expression operator: ${e}`)}},Vn=(e,t={})=>{if(e===null||typeof e!="object")return e;if(Array.isArray(e))throw new Error("Computed expression arrays are not valid; use value for literal arrays");let n=Object.entries(e);if(n.length!==1)throw new Error("Computed expression objects must contain exactly one operator");let[[i,a]]=n;return Iy(i,a,t)},ro=(e,t)=>{if(e===null||typeof e!="object"||J(e,"literal"))return e;if(J(e,"var"))return{literal:Bl(e.var,t)};if(J(e,"call"))throw new Error("Function calls are not supported in computed-variable conditions");return Object.fromEntries(Object.entries(e).map(([n,i])=>[n,Array.isArray(i)?i.map(a=>ro(a,t)):ro(i,t)]))},vy=(e,t={})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");return je(e),Nt(ro(e,t))},zl=(e,t)=>{if(!ke(e))throw new Error(`${t} must be an object`);let n=J(e,"expr"),i=J(e,"value");if(n===i)throw new Error(`${t} must contain exactly one of expr or value`)},Wi=(e,t,n)=>(zl(e,t),J(e,"value")?Fl(e.value):Vn(e.expr,n)),ky=(e,t={},n="unknown")=>{if(!ke(e))throw new Error(`Computed variable "${n}" computed must be an object`);let i=J(e,"expr"),a=J(e,"value");if(J(e,"branches")){if(i||a)throw new Error(`Computed variable "${n}" cannot combine branches with expr or value`);if(!Array.isArray(e.branches))throw new Error(`Computed variable "${n}" branches must be an array`);if(e.branches.length===0)throw new Error(`Computed variable "${n}" branches must not be empty`);if(!ke(e.default))throw new Error(`Computed variable "${n}" requires default`);for(let s=0;s<e.branches.length;s+=1){let o=e.branches[s];if(!ke(o))throw new Error(`Computed variable "${n}" branch ${s} must be an object`);if(!J(o,"when"))throw new Error(`Computed variable "${n}" branch ${s} requires when`);if(vy(o.when,t))return Wi(o,`Computed variable "${n}" branch ${s}`,t)}return Wi(e.default,`Computed variable "${n}" default`,t)}if(i===a)throw new Error(`Computed variable "${n}" must contain exactly one of expr, value, or branches`);return Wi(e,`Computed variable "${n}"`,t)},Xl=(e,t,n)=>{switch(t){case"number":if(typeof n!="number"||!Number.isFinite(n))throw new Error(`Computed variable "${e}" expected type number, got ${Array.isArray(n)?"array":typeof n}`);return;case"boolean":if(typeof n!="boolean")throw new Error(`Computed variable "${e}" expected type boolean, got ${Array.isArray(n)?"array":typeof n}`);return;case"string":if(typeof n!="string")throw new Error(`Computed variable "${e}" expected type string, got ${Array.isArray(n)?"array":typeof n}`);return;case"object":if(n===null||typeof n!="object")throw new Error(`Computed variable "${e}" expected type object, got ${typeof n}`);return;default:throw new Error(`Invalid variable type: ${t} for computed variable ${e}`)}},Ay=Object.freeze({add:2,sub:2,mul:2,div:2,mod:2,neg:1,round:1,floor:1,ceil:1,min:2,max:2,clamp:3,eq:2,neq:2,gt:2,gte:2,lt:2,lte:2,in:2,not:1,length:1,includes:2}),Py=new Set(["and","or","all","any"]),Ey=new Set(["add","sub","mul","div","mod","neg","round","floor","ceil","min","max","clamp","length"]),xy=new Set(["add","sub","mul","div","mod","neg","round","floor","ceil","min","max","clamp"]),Sy=new Set(["eq","neq","gt","gte","lt","lte","in","and","or","all","any","not","includes"]),Oy=new Set(["all","any","eq","neq","gt","gte","lt","lte","in","add","sub"]),Gl=new WeakMap,jl=e=>e===null?"null":Array.isArray(e)?"object":typeof e,Mn=(e,t,n)=>{for(let i of Object.keys(e))if(!t.has(i))throw new Error(`${n} contains unsupported property "${i}"`)},Ry=(e,t,n,i)=>{if(n!==void 0&&n!==t)throw new Error(`Computed variable "${e}" ${i} expected type ${t}, got ${n}`)},Hl=(e,{variableId:t,variableConfigs:n,dependencies:i,path:a})=>{let r=`Computed variable "${t}" ${a} var`,[s,o,...l]=Ul(e,r);if(s!=="variables"&&s!=="runtime")throw new Error(`${r} must reference variables.* or runtime.*, got ${JSON.stringify(e)}`);if(!o)throw new Error(`${r} must reference a concrete ${s} member, got ${JSON.stringify(e)}`);if(s==="runtime")return;if(!J(n,o))throw new Error(`Computed variable "${t}" ${a} references unknown variable "${o}"`);let c=n[o];return Re(c)&&i.add(o),l.length===0?c?.type:void 0},Kl=(e,{variableId:t,variableConfigs:n,dependencies:i,path:a})=>{if(e===null||typeof e!="object"){if(typeof e=="number"&&!Number.isFinite(e))throw new Error(`Computed variable "${t}" ${a} must use finite numeric literals`);return jl(e)}if(Array.isArray(e))throw new Error("Computed expression arrays are not valid; use value for literal arrays");let r=Object.entries(e);if(r.length!==1)throw new Error("Computed expression objects must contain exactly one operator");let[[s,o]]=r;if(s==="var"){if(typeof o!="string"||o.trim()==="")throw new Error("Computed expression var requires a non-empty string path");return Hl(o,{variableId:t,variableConfigs:n,dependencies:i,path:a})}if(s==="literal"){if(typeof o=="number"&&!Number.isFinite(o))throw new Error(`Computed variable "${t}" ${a} must use finite numeric literals`);return jl(o)}let l=Ay[s];if(l===void 0&&!Py.has(s))throw new Error(`Unknown computed expression operator: ${s}`);l===void 0?eo(s,o):Yl(s,o,l);let c=o.map((u,p)=>Kl(u,{variableId:t,variableConfigs:n,dependencies:i,path:`${a}.${s}[${p}]`}));if(xy.has(s)&&c.forEach(u=>{if(u!==void 0&&u!=="number")throw new Error(`Computed expression operator "${s}" requires numeric operands`)}),Ey.has(s))return"number";if(Sy.has(s))return"boolean"},$y=(e,{variableId:t,variableConfigs:n,dependencies:i,path:a})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");try{je(e)}catch(s){throw new Error(`Computed variable "${t}" ${a} is invalid: ${s.message}`,{cause:s})}let r=(s,o)=>{if(s===null||typeof s!="object"||J(s,"literal"))return;if(J(s,"var")){Hl(s.var,{variableId:t,variableConfigs:n,dependencies:i,path:o});return}if(J(s,"call"))throw new Error(`Computed variable "${t}" ${o} function calls are not supported`);if(J(s,"not")){r(s.not,`${o}.not`);return}let l=Object.keys(s).find(c=>Oy.has(c));s[l].forEach((c,u)=>{r(c,`${o}.${l}[${u}]`)})};r(e,a)},Ji=(e,{variableId:t,variableConfig:n,variableConfigs:i,dependencies:a,path:r,allowedKeys:s=new Set(["expr","value"])})=>{if(zl(e,`Computed variable "${t}" ${r}`),Mn(e,s,r),J(e,"value")){Xl(t,n.type,e.value);return}let o=Kl(e.expr,{variableId:t,variableConfigs:i,dependencies:a,path:`${r}.expr`});Ry(t,n.type,o,`${r}.expr`)},Cy=(e,t,n)=>{let i=t.computed;if(!ke(i))throw new Error(`Computed variable "${e}" computed must be an object`);let a=new Set,r=J(i,"expr"),s=J(i,"value");if(J(i,"branches")){if(Mn(i,new Set(["branches","default"]),`Computed variable "${e}" computed`),r||s)throw new Error(`Computed variable "${e}" cannot combine branches with expr or value`);if(!Array.isArray(i.branches))throw new Error(`Computed variable "${e}" branches must be an array`);if(i.branches.length===0)throw new Error(`Computed variable "${e}" branches must not be empty`);if(!ke(i.default))throw new Error(`Computed variable "${e}" requires default`);return i.branches.forEach((l,c)=>{if(!ke(l))throw new Error(`Computed variable "${e}" branch ${c} must be an object`);if(Mn(l,new Set(["when","expr","value"]),`Computed variable "${e}" branch ${c}`),!J(l,"when"))throw new Error(`Computed variable "${e}" branch ${c} requires when`);$y(l.when,{variableId:e,variableConfigs:n,dependencies:a,path:`computed.branches[${c}].when`}),Ji(l,{variableId:e,variableConfig:t,variableConfigs:n,dependencies:a,path:`computed.branches[${c}]`,allowedKeys:new Set(["when","expr","value"])})}),Ji(i.default,{variableId:e,variableConfig:t,variableConfigs:n,dependencies:a,path:"computed.default"}),a}if(Mn(i,new Set(["expr","value"]),`Computed variable "${e}" computed`),r===s)throw new Error(`Computed variable "${e}" must contain exactly one of expr, value, or branches`);return Ji(i,{variableId:e,variableConfig:t,variableConfigs:n,dependencies:a,path:"computed"}),a},Vr=(e={})=>{if(!ke(e))throw new Error("Variable configs must be an object");if(J(e,"__proto__"))throw new Error('Variable id "__proto__" is reserved');if(J(e,""))throw new Error("Variable ids must not be empty");let t=new Map;Object.entries(e).forEach(([r,s])=>{if(Re(s)){if(!ke(s))throw new Error(`Computed variable "${r}" must be an object`);if(!J(s,"type"))throw new Error(`Computed variable "${r}" requires type`);if(!J(s,"scope"))throw new Error(`Computed variable "${r}" requires scope`);if(J(s,"default"))throw new Error(`Computed variable "${r}" must not declare a top-level default`);if(qt(s.scope,r),!["number","boolean","string","object"].includes(s.type))throw new Error(`Invalid variable type: ${s.type} for computed variable ${r}`);t.set(r,Cy(r,s,e))}});let n=new Set,i=[];t.forEach((r,s)=>{if(n.has(s))return;let o=[{variableId:s,dependencies:[...t.get(s)??[]],nextDependencyIndex:0}],l=new Map([[s,0]]);for(;o.length>0;){let c=o.at(-1);if(c.nextDependencyIndex>=c.dependencies.length){o.pop(),l.delete(c.variableId),n.add(c.variableId),i.push(c.variableId);continue}let u=c.dependencies[c.nextDependencyIndex];if(c.nextDependencyIndex+=1,n.has(u))continue;let p=l.get(u);if(p!==void 0){let d=[...o.slice(p).map(({variableId:f})=>f),u].join(" -> ");throw new Error(`Computed variable cycle detected: ${d}`)}l.set(u,o.length),o.push({variableId:u,dependencies:[...t.get(u)??[]],nextDependencyIndex:0})}});let a=Object.freeze({evaluationOrder:Object.freeze(i)});return Gl.set(e,a),a},ot=({variables:e={},runtime:t={},variableConfigs:n={},eager:i=!0}={})=>{let{evaluationOrder:a}=Gl.get(n)??Vr(n),r=Mt(e,n,{preserveUnknown:!0}),s=Object.entries(n).filter(([,h])=>Re(h)).map(([h])=>h),o=Object.create(null),l=[],c=new Map(a.map((h,y)=>[h,y])),u=-1,p=!1,d=h=>{if(J(o,h))return o[h];let y=n[h];if(!Re(y))return J(r,h)?r[h]:void 0;let w=l.indexOf(h);if(w>=0){let g=[...l.slice(w),h].join(" -> ");throw new Error(`Computed variable cycle detected: ${g}`)}l.push(h);try{let g=ky(y.computed,b,h);return Xl(h,y.type,g),Zi(o,h,g),g}finally{l.pop()}},f=h=>{if(J(o,h))return o[h];let y=n[h];if(!Re(y))return J(r,h)?r[h]:void 0;let w=c.get(h);if(i&&!p&&w!==void 0&&w>u){p=!0;try{for(let g=u+1;g<=w;g+=1)d(a[g]),u=g}finally{p=!1}return o[h]}return d(h)},m=new Proxy({},{get:(h,y)=>{if(typeof y=="string")return f(y)},has:(h,y)=>typeof y=="string"&&(J(r,y)||s.includes(y)),ownKeys:()=>[...new Set([...Object.keys(r),...s])],getOwnPropertyDescriptor:(h,y)=>{if(!(typeof y!="string"||!J(r,y)&&!s.includes(y)))return{enumerable:!0,configurable:!0}}}),b={variables:m,runtime:t,resolveVariable:f};return i?(s.forEach(h=>{f(h)}),{...r,...o}):m},_y=({variables:e={},runtime:t={},variableConfigs:n,projectData:i}={})=>{let a=n??i?.resources?.variables??{};return Vr(a),ot({variables:e,runtime:t,variableConfigs:a,eager:!0})},Bn=e=>{let t={},n={};return e.resources?.variables?(Object.entries(e.resources.variables).forEach(([i,a])=>{if(Re(a))return;let r=ly(a,i);a.scope==="context"?Zi(t,i,r):Zi(n,i,r)}),{contextVariableDefaultValues:t,globalVariablesDefaultValues:n}):{contextVariableDefaultValues:t,globalVariablesDefaultValues:n}},qt=(e,t)=>{let n=["context","device","account"];if(!e)throw new Error(`Variable scope is required for variable: ${t}`);if(!n.includes(e))throw new Error(`Invalid variable scope: ${e} for variable ${t}. Expected one of: ${n.join(", ")}`)},Vt=(e,t,n)=>{let i={number:["set","increment","decrement","multiply","divide"],boolean:["set","toggle"],string:["set"],object:["set"]},a=i[e];if(!a)throw new Error(`Unknown variable type: ${e} for variable ${n}`);if(!Object.values(i).flat().includes(t))throw new Error(`Unknown operation: ${t}`);if(!a.includes(t))throw new Error(`Operation "${t}" is not valid for variable "${n}" of type "${e}". Valid operations: ${a.join(", ")}`)},jy=2,Nl=12,Wl=(e=jy)=>{if(!Number.isInteger(e)||e<0||e>Nl)throw new Error(`Operation "divide" requires roundTo to be an integer between 0 and ${Nl}.`);return e},Ny=(e,t)=>{let n=10**t;return Math.round((e+Number.EPSILON)*n)/n},qn=e=>typeof e=="number"&&Number.isFinite(e),Yn=(e,t,n,i,a={})=>{if(e==="number"){if(t==="set"&&!qn(n))throw new Error(`Operation "set" requires value to be a number for variable "${i}".`);if(t==="multiply"&&!qn(n))throw new Error(`Operation "multiply" requires value to be a number for variable "${i}".`);if(t==="divide"&&!qn(n))throw new Error(`Operation "divide" requires value to be a number for variable "${i}".`);if(t==="divide"){if(n===0)throw new Error(`Operation "divide" requires value to be a non-zero number for variable "${i}".`);Wl(a.roundTo)}}},zn=(e,t,n,i={})=>{let a=(s,o,l)=>{let c=s??o;if(!qn(c))throw new Error(`Operation "${t}" requires ${l} to be a number.`);return c},r=s=>{let o=a(s,void 0,"value");if(o===0)throw new Error(`Operation "${t}" requires value to be a non-zero number.`);return o};switch(t){case"set":return n;case"multiply":return a(e,1,"current value")*a(n,void 0,"value");case"divide":return Ny(a(e,0,"current value")/r(n),Wl(i.roundTo));case"increment":return a(e,0,"current value")+a(n,1,"value");case"decrement":return a(e,0,"current value")-a(n,1,"value");case"toggle":return!e;default:throw new Error(`Unknown operation: ${t}`)}};var io=(e,t="DD/MM/YYYY - HH:mm")=>{if(!e)return"";let n=new Date(e),i=s=>String(s).padStart(2,"0"),a=String(n.getFullYear()),r={DD:i(n.getDate()),MM:i(n.getMonth()+1),MMM:ay[n.getMonth()],YYYY:a,YY:a.slice(-2),HH:i(n.getHours()),mm:i(n.getMinutes()),ss:i(n.getSeconds())};return t.replace(/YYYY|MMM|YY|MM|DD|HH|mm|ss/g,s=>r[s])},Dy=(e,t)=>{let n=r=>r?.ui,i=n(e),a=n(t);return JSON.stringify(i)===JSON.stringify(a)?null:i&&!a?{changeType:"delete",data:e}:a&&!i?{changeType:"add",data:t}:a&&i?{changeType:"update",data:t}:null},jt=e=>!!e?.transformId&&Array.isArray(e.items)&&e.items.length>0,Ty=(e,t)=>{let n=e?.character?.sprite,i=t?.character?.sprite,a=jt(n)?n:void 0,r=jt(i)?i:void 0;return JSON.stringify(a)===JSON.stringify(r)?null:a&&!r?{changeType:"delete",data:a}:r&&!a?{changeType:"add",data:r}:r&&a?{changeType:"update",data:r}:null},Dl=e=>{if(e?.resourceId===void 0)return;let t={resourceId:e.resourceId};e.transformId!==void 0&&(t.transformId=e.transformId);for(let n of["x","y","anchorX","anchorY","scaleX","scaleY","flipX","flipY","rotation","originX","originY"])e[n]!==void 0&&(t[n]=e[n]);for(let n of["animationName","animationSpeed","loop"])e[n]!==void 0&&(t[n]=e[n]);return t},Tl=e=>{if(e?.colorId!==void 0)return{colorId:e.colorId}},Ll=(e,t)=>t&&!e?{changeType:"add",data:t}:e&&!t?{changeType:"delete",data:e}:e&&t&&JSON.stringify(e)!==JSON.stringify(t)?{changeType:"update",data:t}:null,Ly=(e,t)=>{let n={},i=Ll(Dl(e),Dl(t)),a=Ll(Tl(e),Tl(t));return i&&(n.resource=i),a&&(n.color=a),Object.keys(n).length>0?n:null},oo=(e={},t={})=>{let n={},i=["voice"],a=l=>{let c=e[l],u=t[l];if(u&&!c)n[l]={changeType:"add",data:u};else if(c&&!u){let p=l==="sfx"&&c.channels?.some(d=>d.applyMode==="persistent");!i.includes(l)&&(l!=="sfx"||p)&&(n[l]={changeType:"delete",data:c})}else c&&u&&JSON.stringify(c)!==JSON.stringify(u)&&(n[l]={changeType:"update",data:u})},r=Ly(e.background,t.background);r&&(n.background=r),a("screen"),a("bgm"),a("voice");let s=Dy(e.dialogue,t.dialogue);s&&(n.dialogue=s);let o=Ty(e.dialogue,t.dialogue);return o&&(n.dialogueSprite=o),a("choice"),a("form"),a("layout"),a("animation"),a("control"),a("character"),a("visual"),a("sfx"),n},ao=(e={})=>{let t=structuredClone(e);if(t.sfx){let a=Array.isArray(t.sfx.channels)?t.sfx.channels.filter(r=>r.applyMode==="persistent"):[];a.length>0?t.sfx={channels:a}:delete t.sfx}t.background&&(t.background.animations?.playback?.continuity!=="persistent"&&delete t.background.animations,!t.background.resourceId&&!t.background.colorId&&delete t.background);let n=a=>{t[a]&&(delete t[a].animations,Object.keys(t[a]).length===0&&delete t[a])};n("layout"),n("choice"),n("form"),n("screen"),t.dialogue?.ui&&(delete t.dialogue.ui.animations,Object.keys(t.dialogue.ui).length===0&&delete t.dialogue.ui,Object.keys(t.dialogue).length===0&&delete t.dialogue),t.dialogue?.character?.sprite&&(delete t.dialogue.character.sprite.animations,Object.keys(t.dialogue.character.sprite).length===0&&delete t.dialogue.character.sprite,Object.keys(t.dialogue.character).length===0&&delete t.dialogue.character,Object.keys(t.dialogue).length===0&&delete t.dialogue);let i=(a,r)=>{let s=t[a]?.items;Array.isArray(s)&&(t[a].items=s.map(o=>{let l={...o};return l.animations?.playback?.continuity!=="persistent"&&delete l.animations,r(l)?l:null}).filter(Boolean),t[a].items.length===0&&delete t[a])};return i("character",a=>a.sprites&&a.sprites.length>0||a.transformId||a.resourceId),i("visual",a=>a.resourceId||a.text||a.layout||a.transformId||a.transform),t},My=(e,t)=>{if(!e||!t)return;let n=e;for(let i of t.split(".")){if(n==null||i==="__proto__"||i==="prototype"||i==="constructor"||!Object.prototype.hasOwnProperty.call(Object(n),i))return;n=n[i]}return n},Ml=e=>e!==null&&typeof e=="object"?structuredClone(e):e,qy=(e,t,n)=>{if(typeof e!="string")return e;let i=Object.prototype.hasOwnProperty.call(t??{},n)?t[n]:void 0;if(e===n){if(i==null)throw new Error(`Action template binding "${n}" requires event context "${n}".`);return Ml(i)}if(!e.startsWith(`${n}.`))return e;if(i==null)throw new Error(`Action template binding "${e}" requires event context "${n}".`);let a=e.slice(n.length+1),r=My(i,a);if(r===void 0)throw new Error(`Action template binding "${e}" could not be resolved from "${n}".`);return Ml(r)},Vy={conditional:new Set(["branches"]),updateProjectData:new Set(["projectData"]),showConfirmDialog:new Set(["confirmActions","cancelActions"]),form:new Set(["submitActions","cancelActions"]),submitForm:new Set(["actions"]),cancelForm:new Set(["actions"])},Fy=(e,t)=>{let n=e[e.length-1];return n?Vy[n]?.has(t)===!0:!1},to=(e,t,n=[])=>Array.isArray(e)?e.map(i=>to(i,t,n)):e&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([i,a])=>[i,Fy(n,i)?a:to(a,t,[...n,i])])):typeof e=="string"?e==="_event"||e.startsWith("_event.")?qy(e,t,"_event"):Mr(e,t):e,Ft=(e,t)=>{if(!t)return e;if(Object.prototype.hasOwnProperty.call(t,"event"))throw new Error('Action template context key "event" is no longer supported. Use "_event".');return to(e,t)};var Uy=11102230246251565e-32,Jl=128,Ql=1e3,Zl=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Ut=(e,t,n)=>{let i=Object.keys(e).find(a=>!t.has(a));if(i!==void 0)throw new Error(`${n}.${i} is not supported`)},Xn=(e,t)=>{if(!Zl(e))throw new Error(`${t} must be an object`)},Gn=(e,t,{min:n,max:i}={})=>{if(!Number.isSafeInteger(e))throw new Error(`${t} must be a safe integer`);if(n!==void 0&&e<n)throw new Error(`${t} must be at least ${n}`);if(i!==void 0&&e>i)throw new Error(`${t} must be at most ${i}`);return e},By=(e,t,{min:n,max:i}={})=>{if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);if(n!==void 0&&e<n)throw new Error(`${t} must be at least ${n}`);if(i!==void 0&&e>i)throw new Error(`${t} must be at most ${i}`);return e},lo=e=>{let t=structuredClone(e),n=i=>(i&&typeof i=="object"&&!Object.isFrozen(i)&&(Object.values(i).forEach(n),Object.freeze(i)),i);return n(t)},Yy=()=>({nextUint32(){return typeof globalThis.crypto?.getRandomValues=="function"?globalThis.crypto.getRandomValues(new Uint32Array(1))[0]:Math.floor(Math.random()*4294967296)}}),ec=e=>{let t=e??Yy();if(!Zl(t)||typeof t.nextUint32!="function")throw new TypeError("randomSource must provide nextUint32()");return{nextUint32(){let n=t.nextUint32();if(!Number.isInteger(n)||n<0||n>=4294967296)throw new Error("randomSource.nextUint32() must return an integer from 0 through 4294967295");return n}}},zy=(e,t)=>{let n=4294967296-4294967296%t;for(let i=0;i<Jl;i+=1){let a=e.nextUint32();if(a<n)return a%t}throw new Error(`random source exhausted after ${Jl} rejected samples`)},Xy=e=>{let t=e.nextUint32()>>>5,n=e.nextUint32()>>>6;return(t*67108864+n)/9007199254740992},Gy=(e,t)=>{if(Ut(e,new Set(["type","min","max"]),"random.distribution"),!Object.prototype.hasOwnProperty.call(e,"min"))throw new Error("random.distribution.min is required");if(!Object.prototype.hasOwnProperty.call(e,"max"))throw new Error("random.distribution.max is required");let n=Gn(e.min,"random.distribution.min"),a=Gn(e.max,"random.distribution.max")-n+1;if(!Number.isSafeInteger(a)||a<1||a>4294967296)throw new Error("random integer range must contain from 1 through 4294967296 values");return lo({type:"integer",value:a===1?n:n+zy(t,a)})},Hy=(e,t)=>{if(Ut(e,new Set(["type","outcomes"]),"random.distribution"),!Array.isArray(e.outcomes)||e.outcomes.length<1||e.outcomes.length>Ql)throw new Error("random.distribution.outcomes must contain from 1 through 1000 items");let n=e.outcomes.map((c,u)=>{let p=`random.distribution.outcomes[${u}]`;if(Xn(c,p),Ut(c,new Set(["weight","actions"]),p),!Object.prototype.hasOwnProperty.call(c,"weight"))throw new Error(`${p}.weight is required`);return Xn(c.actions,`${p}.actions`),{weight:By(c.weight,`${p}.weight`,{min:0})}}),i=Math.max(...n.map(({weight:c})=>c));if(i<=0)throw new Error("random weighted total weight must be positive");let a=n.map(c=>({...c,weight:c.weight/i})),r=a.reduce((c,u)=>c+u.weight,0);a.forEach((c,u)=>{if(n[u].weight>0&&(c.weight===0||c.weight/r<=Uy))throw new Error(`random.distribution.outcomes[${u}].weight is below the supported probability resolution`)});let s=Xy(t)*r,o=0,l=a.findLastIndex(({weight:c})=>c>0);for(let c=0;c<a.length;c+=1){let u=a[c];if(o+=u.weight,s<o){l=c;break}}return lo({type:"weighted",outcomeIndex:l})},rc=(e,{randomSource:t})=>{Xn(e,"random.distribution");let i={integer:Gy,weighted:Hy}[e.type];if(!i)throw new Error('random.distribution.type must be "integer" or "weighted"');return i(e,t)},Hn=(e,t)=>{if(Xn(e,"random result"),e.type!==t)throw new Error("random result type does not match its recorded type");if(t==="integer")Ut(e,new Set(["type","value"]),"random result"),Gn(e.value,"random result.value");else if(t==="weighted")Ut(e,new Set(["type","outcomeIndex"]),"random result"),Gn(e.outcomeIndex,"random result.outcomeIndex",{min:0,max:Ql-1});else throw new Error(`unsupported recorded random result type: ${t}`);return lo(e)};var Fr=(e,t)=>Object.freeze({name:e,actions:Object.freeze(t)}),sc=Object.freeze([Fr("cleanup",["clearPendingEffects","cleanAll"]),Fr("state",["addViewedLine","addViewedResource","updateVariable","updateFormField","updateProjectData","updateLocalizationPackage","markLineCompleted","random:integer"]),Fr("decision",["submitForm","cancelForm","random:weighted","conditional"]),Fr("presentation",["screen","background","dialogue","character","visual","choice","form","sfx","bgm","voice","control","layout"]),Fr("runtime",["setNextLineConfig","startAutoMode","stopAutoMode","toggleAutoMode","startSkipMode","stopSkipMode","toggleSkipMode","showDialogueUI","hideDialogueUI","toggleDialogueUI","setDialogueTextSpeed","setAutoForwardDelay","setAutoForwardSpeed","setSkipUnseenText","setSkipTransitionsAndAnimations","setSoundVolume","setMusicVolume","setMuteAll","setSaveLoadPagination","incrementSaveLoadPagination","decrementSaveLoadPagination","setMenuPage","setMenuEntryPoint","showConfirmDialog","hideConfirmDialog","pushOverlay","popOverlay","replaceLastOverlay","clearOverlays","completeAchievement","setAchievementProgress","showImageGalleryVariant","moveToPreviousImageGalleryVariant","moveToNextImageGalleryVariant","clearImageGallerySelection","moveToImageGalleryPage","moveToNextImageGalleryPage","moveToPreviousImageGalleryPage","playMusicRoomTrack","playMusicRoom","pauseMusicRoom","stopMusicRoom","seekMusicRoom","playPreviousMusicRoomTrack","playNextMusicRoomTrack","clearMusicRoomSelection","moveToMusicRoomPage","moveToNextMusicRoomPage","moveToPreviousMusicRoomPage","finishSceneReplay","moveToSceneReplayPage","moveToNextSceneReplayPage","moveToPreviousSceneReplayPage","musicRoomSoundReady","musicRoomSoundProgress","musicRoomSoundComplete","musicRoomSoundError","appendPendingEffect","beginRollbackActionBatch","endRollbackActionBatch","ensureRandomReplayOccurrence","recordRandomOutcome","markRollbackCheckpointTransient","markSavedRollbackCheckpointTransient","recordCurrentDialogueHistory"]),Fr("persistence",["saveSlot"]),Fr("navigation",["loadSlot","rollbackByOffset","rollbackToLine","resetStoryAtSection","sectionTransition","jumpToLine","startSceneReplay","exitSceneReplay","nextLine","nextLineFromSystem"])]),at=new Map;sc.forEach(e=>{e.actions.forEach(t=>{if(at.has(t))throw new Error(`duplicate action execution key: ${t}`);at.set(t,at.size)})});var Ky=new Set(sc.find(({name:e})=>e==="navigation").actions),tc=at.get("saveSlot")-.5,nc=(e,t)=>e!=="random"?e:t?.distribution?.type==="weighted"?"random:weighted":"random:integer",Wy=(e,t)=>e<t?-1:e>t?1:0,Kn=e=>Object.entries(e).sort((t,n)=>{let i=nc(...t),a=nc(...n),r=at.get(i),s=at.get(a),o=r??tc,l=s??tc;return o!==l?o-l:r!==void 0&&s!==void 0?0:Wy(i,a)}),Wn=e=>Ky.has(e),Jn=e=>{let t=e.map(([n])=>n).filter(Wn);if(!(t.length<=1))throw new Error(`action batch cannot contain multiple navigation actions: ${t.join(", ")}`)};var le=e=>structuredClone(Ae(e)?br(e):e),ne=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Bt=e=>e?.animations?.playback?.continuity==="persistent",z=(e,t)=>ne(e??{},t)&&e[t]!==void 0,Qn=e=>z(e,"alpha")||z(e,"opacity"),Jy=e=>z(e,"alpha")?e.alpha:e?.opacity,fc=e=>(z(e,"alpha")&&(e.opacity=e.alpha),delete e.alpha,e),Qy=e=>e?.applyMode==="persistent",Zy="default",eh=e=>Array.isArray(e?.channels)?e.channels.filter(Qy).map(le):[],Yt=(e,t)=>e?!t(e)&&e.animations?{animationsOnly:!0,state:{animations:le(e.animations)}}:{animationsOnly:!1,state:null}:{animationsOnly:!1,state:null},rh=e=>Qn(e)||z(e,"blur")||z(e,"filters"),uo=["x","y","anchorX","anchorY","scaleX","scaleY","flipX","flipY","rotation","originX","originY"],dc=["x","y","anchorX","anchorY","scaleX","scaleY","flipX","flipY","rotation","originX","originY"],co=["animationName","animationSpeed","loop"],th=e=>z(e,"transformId")||z(e,"transform")||uo.some(t=>z(e,t)),mc=e=>e?.text&&z(e.text,"content")&&z(e.text,"textStyleId"),yc=e=>e?.layout&&Array.isArray(e.layout.elements),nh=e=>z(e,"text")||z(e,"layout"),ic=(e,t)=>e.resourceId?!0:mc(e)?!t?.text:yc(e)?!t?.layout:!1,oc=e=>e?.sprites&&e.sprites.length>0||e?.transformId||e?.resourceId,sh=(e,t)=>{let n={...le(e),...t};if(t.text&&e.text&&(n.text={...le(e.text),...le(t.text)}),t.transform&&e.transform&&(n.transform={...le(e.transform),...le(t.transform)}),z(t,"transform")){delete n.transformId;for(let i of uo)z(t,i)||delete n[i]}else z(t,"transformId")&&delete n.transform;return n},ih=(e,t)=>{let n=[e.resourceId,e.text,e.layout].filter(i=>i!==void 0).length;if(n>1)throw n===2&&e.resourceId!==void 0&&e.text!==void 0?new Error(`Visual item "${e.id}" cannot define both resourceId and text`):new Error(`Visual item "${e.id}" must define only one of resourceId, text, or layout`);if(e.transformId&&e.transform)throw new Error(`Visual item "${e.id}" cannot define both transformId and transform`);if(z(e,"text")&&!mc(e)&&!t?.text)throw new Error(`Visual item "${e.id}" text requires content and textStyleId`);if(z(e,"layout")&&!yc(e))throw new Error(`Visual item "${e.id}" layout requires elements`)},ac=e=>dc.some(t=>z(e,t)),lc=e=>co.some(t=>z(e,t)),oh=(e,t,{hasAuthoredTransformId:n=!1}={})=>{if(!t)return e;for(let i of dc)!n&&!z(e,i)&&z(t,i)&&(e[i]=t[i]),ne(e,i)&&e[i]===void 0&&delete e[i];return e},hc=(e,t,n)=>{let i=e[n];return i?.id===t?.id?i:e.find(a=>a.id===t?.id)},ah=(e,t)=>{if(!t)return e;let n=z(e,"transform");for(let i of uo)!n&&!z(e,i)&&z(t,i)&&(e[i]=t[i]),ne(e,i)&&e[i]===void 0&&delete e[i];return e},lh=(e,t)=>(t&&(!z(e,"opacity")&&z(t,"opacity")&&(e.opacity=t.opacity),!z(e,"blur")&&z(t,"blur")&&(e.blur=le(t.blur)),!z(e,"filters")&&z(t,"filters")&&(e.filters=le(t.filters)),ne(e,"opacity")&&e.opacity===void 0&&delete e.opacity,ne(e,"blur")&&e.blur===void 0&&delete e.blur,ne(e,"filters")&&e.filters===void 0&&delete e.filters),e),gc=(e,t,n=[],{hasPatchFn:i=()=>!1,mergeItemFn:a}={})=>{if(!e||e.length===0)return{hasValidItems:!1,processedItems:[]};let r=e.map((s,o)=>{let l=hc(n,s,o),c=t(s,l),u=rh(s),p=th(s),d=i(s),f=ne(s,"animations"),m=fc(le(s));if(!c&&(u||p||d)&&l&&(m=a?a(l,m):{...le(l),...m}),!f){let b=l?t(l):!1,h=t(m);b&&h&&Bt(l)?m.animations=le(l.animations):delete m.animations}return lh(ah(m,l),l)}).filter(s=>t(s)||s.animations);return{hasValidItems:r.length>0,processedItems:r}},ch=e=>{if(e){if(e.character&&ne(e.character,"name"))return e.character.name;if(ne(e,"characterName"))return e.characterName}},bc=e=>!!e?.character&&ne(e.character,"sprite"),uh=e=>{let t={},n=!1,i=ch(e);return i!==void 0&&(t.name=i,n=!0),bc(e)&&(t.sprite=le(e.character.sprite),n=!0),n?t:void 0},cc=e=>{e?.character?.sprite?.animations&&(e.character.sprite.animations={})},uc=({dialogueState:e,dialogueAction:t,persistCharacter:n})=>ne(t,"persistSprite")?t.persistSprite===!0:ne(e,"persistSprite")?e.persistSprite===!0:n&&!ne(t,"characterId"),pc=({previousCharacter:e,characterFields:t,hasCharacterId:n,persistCharacter:i,persistSprite:a,hasExplicitPersistSprite:r,isAppendingAdvDialogueContent:s})=>{let o={},l=e??{},c=t??{},u=s&&!n,p=u&&!r;return ne(c,"name")?o.name=c.name:(i&&!n||u)&&ne(l,"name")&&(o.name=le(l.name)),ne(c,"sprite")?o.sprite=le(c.sprite):(a||p)&&ne(l,"sprite")&&(o.sprite=le(l.sprite)),Object.keys(o).length>0?o:void 0},ph=({dialogueState:e,content:t,append:n=!1})=>{if(!n||!Array.isArray(t)){e.content=t,delete e.initialRevealedContent;return}let i=Array.isArray(e.content)?e.content:[];i.length>0?e.initialRevealedContent=i.map(a=>le(a)):delete e.initialRevealedContent,e.content=[...i,...t]},fh=()=>({}),dh=(e,t)=>{if(!t.screen)return;let n=Qn(t.screen),i=z(t.screen,"blur"),a=ne(t.screen,"animations");if(!n&&!i){a||delete e.screen;return}let r=e.screen,s={};if(n?s.opacity=Jy(t.screen):z(r,"opacity")&&(s.opacity=r.opacity),i?s.blur=le(t.screen.blur):z(r,"blur")&&(s.blur=le(r.blur)),ne(s,"opacity")&&s.opacity===void 0&&delete s.opacity,ne(s,"blur")&&s.blur===void 0&&delete s.blur,Object.keys(s).length===0){delete e.screen;return}e.screen=s},mh=(e,t)=>{if(t.background){let n=z(t.background,"resourceId"),i=z(t.background,"colorId"),a=Qn(t.background),r=z(t.background,"blur"),s=z(t.background,"filters"),o=z(t.background,"transformId"),l=ac(t.background),c=lc(t.background),{animationsOnly:u,state:p}=Yt(t.background,m=>z(m,"resourceId")||z(m,"colorId")||Qn(m)||z(m,"blur")||z(m,"filters")||z(m,"transformId")||ac(m)||lc(m));if(u){e.background=e.background?{...le(e.background),...p}:p;return}if(!n&&!i&&!a&&!r&&!s&&!o&&!l&&!c){delete e.background;return}let d=e.background,f=fc(le(t.background));if(!n&&d?.resourceId){f.resourceId=d.resourceId,!ne(f,"transformId")&&d.transformId&&(f.transformId=d.transformId);for(let m of co)!z(f,m)&&z(d,m)&&(f[m]=d[m])}oh(f,d,{hasAuthoredTransformId:o}),!i&&d?.colorId&&(f.colorId=d.colorId),!a&&z(d,"opacity")&&(f.opacity=d.opacity),!r&&z(d,"blur")&&(f.blur=le(d.blur)),!s&&z(d,"filters")&&(f.filters=le(d.filters)),ne(f,"resourceId")&&f.resourceId===void 0&&delete f.resourceId,ne(f,"colorId")&&f.colorId===void 0&&delete f.colorId,ne(f,"animations")&&f.animations===void 0&&delete f.animations,ne(f,"transformId")&&f.transformId===void 0&&delete f.transformId,ne(f,"opacity")&&f.opacity===void 0&&delete f.opacity,ne(f,"blur")&&f.blur===void 0&&delete f.blur,ne(f,"filters")&&f.filters===void 0&&delete f.filters;for(let m of co)ne(f,m)&&f[m]===void 0&&delete f[m];if(!f.resourceId&&!f.colorId){delete e.background;return}d?.resourceId===f.resourceId&&d?.transformId===f.transformId&&!ne(f,"animations")&&Bt(d)&&(f.animations=le(d.animations)),e.background=f}else e.background?.animations&&!Bt(e.background)&&(e.background.animations={})},yh=(e,t)=>{if(!t.dialogue){if(e.dialogue&&(cc(e.dialogue),e.dialogue.mode==="adv")){e.dialogue.content=void 0,delete e.dialogue.initialRevealedContent,delete e.dialogue.textSpeed;let u=e.dialogue.persistCharacter===!0,p=uc({dialogueState:e.dialogue,dialogueAction:{},persistCharacter:u});u||delete e.dialogue.characterId,e.dialogue.character=pc({previousCharacter:e.dialogue.character,characterFields:{},hasCharacterId:!1,persistCharacter:u,persistSprite:p,hasExplicitPersistSprite:!1,isAppendingAdvDialogueContent:!1}),e.dialogue.character||delete e.dialogue.character}return}e.dialogue||(e.dialogue={});let n=e.dialogue.mode;if(t.dialogue.ui){let{animationsOnly:u,state:p}=Yt(t.dialogue.ui,d=>!!d.resourceId);u?e.dialogue.ui={...e.dialogue.ui,...p}:e.dialogue.ui={...t.dialogue.ui}}else e.dialogue?.ui?.animations&&(e.dialogue.ui.animations={});t.dialogue.mode==="adv"&&(e.dialogue.content=e.dialogue.content||void 0,e.dialogue.characterId=e.dialogue.characterId||void 0,e.dialogue.mode="adv"),t.dialogue.mode==="nvl"&&(e.dialogue?.mode!=="nvl"&&(e.dialogue.lines=[]),e.dialogue.mode="nvl");let i=t.dialogue.append===!0&&n!=="nvl"&&e.dialogue?.mode!=="nvl"&&Array.isArray(t.dialogue.content);t.dialogue.content!==void 0&&ph({dialogueState:e.dialogue,content:t.dialogue.content,append:i}),ne(t.dialogue,"textSpeed")?e.dialogue.textSpeed=t.dialogue.textSpeed:delete e.dialogue.textSpeed;let a=ne(t.dialogue,"persistCharacter")?t.dialogue.persistCharacter===!0:e.dialogue.persistCharacter===!0;a?e.dialogue.persistCharacter=!0:delete e.dialogue.persistCharacter;let r=uc({dialogueState:e.dialogue,dialogueAction:t.dialogue,persistCharacter:a});ne(t.dialogue,"persistSprite")&&(e.dialogue.persistSprite=r);let s=ne(t.dialogue,"characterId"),o=uh(t.dialogue),l=bc(t.dialogue);s?t.dialogue.characterId?e.dialogue.characterId=t.dialogue.characterId:delete e.dialogue.characterId:!a&&!i&&delete e.dialogue.characterId;let c=pc({previousCharacter:e.dialogue.character,characterFields:o,hasCharacterId:s,persistCharacter:a,persistSprite:r,hasExplicitPersistSprite:ne(t.dialogue,"persistSprite"),isAppendingAdvDialogueContent:i});if(c?e.dialogue.character=c:delete e.dialogue.character,l||cc(e.dialogue),t.dialogue.clear){delete e.dialogue;return}if(t.dialogue?.clearPage&&e.dialogue?.mode==="nvl"&&(e.dialogue.lines=[]),e.dialogue?.mode==="nvl"&&t.dialogue.content!==void 0){let u={content:t.dialogue.content,characterId:e.dialogue.characterId??null};e.dialogue.textSpeed!==void 0&&(u.textSpeed=e.dialogue.textSpeed),e.dialogue.character&&(u.character=le(e.dialogue.character)),e.dialogue.lines.push(u)}},hh=(e,t)=>{let n=eh(e.sfx);if(!t.sfx){if(n.length>0){e.sfx={channels:n};return}delete e.sfx;return}if(Array.isArray(t.sfx.items)){let r=n.filter(s=>s.id!==Zy);if(t.sfx.items.length===0){if(r.length>0){e.sfx={channels:r};return}delete e.sfx;return}e.sfx=le(t.sfx),r.length>0&&(e.sfx.channels=r);return}if(!Array.isArray(t.sfx.channels)){if(n.length>0){e.sfx={channels:n};return}delete e.sfx;return}if(t.sfx.channels.length===0){delete e.sfx;return}let i=new Set(t.sfx.channels.map(r=>r.id)),a=n.filter(r=>!i.has(r.id));for(let r of t.sfx.channels)Array.isArray(r.sounds)&&r.sounds.length>0&&a.push(le(r));if(a.length===0){delete e.sfx;return}e.sfx={channels:a}},gh=(e,t)=>{if(t.bgm){let n=Array.isArray(t.bgm.sounds);if(!t.bgm.resourceId&&!n||n&&t.bgm.sounds.length===0){e.bgm=void 0;return}e.bgm=le(t.bgm),delete e.bgm.audioEffects,t.bgm.resourceId&&(e.bgm.loop=t.bgm.loop??!0)}},bh=(e,t)=>{if(t.visual){let n=e.visual?.items||[];t.visual.items?.forEach((r,s)=>{ih(r,hc(n,r,s))});let{hasValidItems:i,processedItems:a}=gc(t.visual.items,ic,n,{hasPatchFn:nh,mergeItemFn:sh});i?e.visual={items:a}:delete e.visual}else e.visual?.items&&(e.visual.items=e.visual.items.map(n=>n.animations&&(!ic(n)||!Bt(n))?{...n,animations:{}}:n))},wh=(e,t)=>{if(!t.character){e.character?.items&&(e.character.items=e.character.items.map(a=>a.animations&&(!oc(a)||!Bt(a))?{...a,animations:{}}:a));return}let{hasValidItems:n,processedItems:i}=gc(t.character.items,oc,e.character?.items||[]);n?e.character={items:i}:delete e.character},Ih=(e,t)=>{t.animation?e.animation=t.animation:e.animation&&delete e.animation},vh=(e,t)=>{if(t.layout){let{animationsOnly:n,state:i}=Yt(t.layout,a=>!!a.resourceId);if(n){e.layout=i;return}if(!t.layout.resourceId){delete e.layout;return}e.layout=t.layout}else e.layout&&delete e.layout},kh=(e,t)=>{if(t.choice){let{animationsOnly:n,state:i}=Yt(t.choice,a=>!!a.resourceId);if(n){e.choice={...e.choice,...i};return}if(!t.choice.resourceId){delete e.choice;return}e.choice=t.choice}else e.choice&&delete e.choice},Ah=(e,t)=>{if(t.form){let{animationsOnly:n,state:i}=Yt(t.form,a=>!!a.resourceId);if(n){e.form={...e.form,...i};return}if(!t.form.resourceId){delete e.form;return}e.form=le(t.form)}else e.form&&delete e.form},Ph=(e,t)=>{if(t.control){if(!t.control.resourceId){delete e.control;return}e.control=t.control}},Eh=(e,t)=>{if(t.voice){let n=Array.isArray(t.voice.sounds);if(!t.voice.resourceId&&!n||n&&t.voice.sounds.length===0){delete e.voice;return}e.voice=le(t.voice)}else e.voice&&delete e.voice},xh=(e,t)=>{t.cleanAll&&Object.keys(e).forEach(n=>{delete e[n]})},Ur=e=>Fn(fh,[xh,dh,mh,hh,gh,bh,yh,wh,Ih,vh,kh,Ah,Ph,Eh])(e);var lt=(e,t)=>{if(!e||typeof e!="string"||!e.includes("${"))return e;let n=Mr(e,t);return n&&typeof n=="object"?e:n};var Sh=Object.freeze({dialogueTextSpeed:{source:"global.dialogueTextSpeed"},autoForwardDelay:{source:"global.autoForwardDelay"},autoForwardSpeed:{source:"global.autoForwardSpeed"},skipUnseenText:{source:"global.skipUnseenText"},skipTransitionsAndAnimations:{source:"global.skipTransitionsAndAnimations"},soundVolume:{source:"global.soundVolume"},musicVolume:{source:"global.musicVolume"},muteAll:{source:"global.muteAll"},localizationPackageId:{source:"global.localizationPackageId"},saveLoadPagination:{source:"context.runtime.saveLoadPagination"},menuPage:{source:"context.runtime.menuPage"},menuEntryPoint:{source:"context.runtime.menuEntryPoint"},autoMode:{source:"global.autoMode"},skipMode:{source:"global.skipMode"},dialogueUIHidden:{source:"global.dialogueUIHidden"},isLineCompleted:{source:"global.isLineCompleted"}}),Ar=Object.freeze({dialogueTextSpeed:50,autoForwardDelay:1e3,autoForwardSpeed:50,skipUnseenText:!1,skipTransitionsAndAnimations:!1,soundVolume:50,musicVolume:50,muteAll:!1,localizationPackageId:null,autoMode:!1,skipMode:!1,dialogueUIHidden:!1,isLineCompleted:!1}),zt=Object.freeze({saveLoadPagination:1,menuPage:"",menuEntryPoint:""}),Oh=Object.freeze({dialogueTextSpeed:"number",autoForwardDelay:"number",autoForwardSpeed:"number",skipUnseenText:"boolean",skipTransitionsAndAnimations:"boolean",soundVolume:"number",musicVolume:"number",muteAll:"boolean",localizationPackageId:"nullableString",saveLoadPagination:"number",menuPage:"string",menuEntryPoint:"string",autoMode:"boolean",skipMode:"boolean",dialogueUIHidden:"boolean",isLineCompleted:"boolean"}),po=Object.freeze(["dialogueTextSpeed","autoForwardDelay","autoForwardSpeed","skipUnseenText","skipTransitionsAndAnimations","soundVolume","musicVolume","muteAll","localizationPackageId"]),wc=Object.freeze(["dialogueTextSpeed","autoForwardDelay","autoForwardSpeed","skipUnseenText","skipTransitionsAndAnimations","soundVolume","musicVolume","muteAll"]),fo=Object.freeze(["saveLoadPagination","menuPage","menuEntryPoint"]),Ic=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Rh=(e,t)=>{let n=Oh[e];if(n==="number"){if(typeof t!="number"||!Number.isFinite(t))throw new Error(`${e} requires a finite numeric value`);return}if(n==="boolean"){if(typeof t!="boolean")throw new Error(`${e} requires a boolean value`);return}if(n==="string"){if(typeof t!="string")throw new Error(`${e} requires a string value`);return}if(n==="nullableString"){if(t!==null&&typeof t!="string")throw new Error(`${e} requires a string or null value`);return}throw new Error(`Unsupported runtime field "${e}"`)},Zn=(e,t)=>{if(Rh(e,t),e==="autoForwardDelay"&&t<0)throw new Error("autoForwardDelay requires a value greater than or equal to 0");if(["autoForwardSpeed","soundVolume","musicVolume"].includes(e)&&(t<0||t>100))throw new Error(`${e} requires a value between 0 and 100`);return e==="saveLoadPagination"?Math.max(1,Math.trunc(t)):t},mo=(e={})=>{let t=e?.config;if(t===void 0)return{...Ar};if(!Ic(t))throw new Error("projectData.config must be an object");let n=Object.keys(t).find(o=>o!=="runtimeDefaults");if(n)throw new Error(`projectData.config contains unsupported field "${n}"`);let i=t.runtimeDefaults;if(i===void 0)return{...Ar};if(!Ic(i))throw new Error("projectData.config.runtimeDefaults must be an object");let a=new Set(wc),r=Object.keys(i).find(o=>!a.has(o));if(r)throw new Error(`projectData.config.runtimeDefaults contains unsupported field "${r}"`);let s={...Ar};return wc.forEach(o=>{i[o]!==void 0&&(s[o]=Zn(o,i[o]))}),s},$h=(e,t)=>{if(t.startsWith("global.")){let n=t.slice(7);return e?.global?.[n]}if(t.startsWith("context.runtime.")){let n=t.slice(16),i=Array.isArray(e?.contexts)?e.contexts:[];return i[i.length-1]?.runtime?.[n]}},Pr=e=>Object.fromEntries(Object.entries(Sh).map(([t,n])=>{let i=$h(e,n.source),a=i!==void 0?i:Ar[t]??zt[t];return[t,a]})),Ze=(e,t)=>Pr(e)[t],vc=(e={})=>Object.fromEntries(po.map(t=>[t,e[t]??Ar[t]]));var ct=Object.freeze({VISUAL_BEHIND_BACKGROUND:10,BACKGROUND:20,VISUAL_BEHIND_CHARACTER:30,CHARACTER:40,VISUAL_BEHIND_DIALOGUE:50,DIALOGUE:60,VISUAL_BEHIND_CHOICE:70,CHOICE:80,VISUAL_FOREGROUND:90}),cr=Object.freeze({BEHIND_BACKGROUND:ct.VISUAL_BEHIND_BACKGROUND,BEHIND_CHARACTER:ct.VISUAL_BEHIND_CHARACTER,BEHIND_DIALOGUE:ct.VISUAL_BEHIND_DIALOGUE,BEHIND_CHOICE:ct.VISUAL_BEHIND_CHOICE,FOREGROUND:ct.VISUAL_FOREGROUND}),yo=cr.BEHIND_DIALOGUE,ho=Object.freeze(Object.values(cr).sort((e,t)=>e-t));var Ch={__arrayOrEmpty:e=>Array.isArray(e)?e:[],objectValues:e=>Object.entries(e).map(([t,n])=>({id:t,...n})),formatDate:io},_h=/^\$for\s+([A-Za-z_][A-Za-z0-9_]*)(?:\s*,\s*([A-Za-z_][A-Za-z0-9_]*))?\s+in\s+(.+?)(?::)?$/,Xt=e=>Array.isArray(e)?e.map(t=>{if(!t||typeof t!="object"||Array.isArray(t)||Object.keys(t).length!==1)return Xt(t);let[n]=Object.keys(t),i=_h.exec(n);if(!i)return Xt(t);let[,a,r,s]=i,o=`$for ${a}${r?`, ${r}`:""} in __arrayOrEmpty(${s.trim()})`,l=Array.isArray(t[n])?t[n]:[];return{[o]:Xt(l)}}):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).map(([t,n])=>[t,Xt(n)])),ur=(e,t)=>{let n={functions:Ch};return Mr(Xt(e),t,n)},Dc=({animationType:e,animationId:t,animationPath:n})=>{if(e!==void 0&&!(e==="update"||e==="transition"))throw new Error(`[${n}] Animation "${t}" has unsupported type "${e}". Use "update" or "transition".`)},jh=({id:e,targetId:t,animation:n,playback:i,animationPath:a="animation"})=>{let r=structuredClone(n);if(Dc({animationType:r.type,animationId:e,animationPath:a}),delete r.name,delete r.playback,r.id=e,r.targetId=t,i!==void 0){let s=Lh(i,`${a}.playback`);if(s!==void 0){let o=s.loop===!0?Vc(r):null;if(s.loop===!0&&r.type!=="update")throw new Error(`[${a}.playback] playback.loop is only supported for type "update".`);if(s.loop===!0&&r.complete!==void 0)throw new Error(`[${a}.playback] animation.complete is not allowed when playback.loop is true because a loop never completes.`);if(s.loop===!0&&(!Number.isFinite(o)||o<=0))throw new Error(`[${a}.playback] playback.loop requires an animation with a finite duration greater than 0.`);r.playback=s}}return r},Nh=(e,{animationId:t="animation",animationPath:n="animation"}={})=>{if(!(!e||typeof e!="object"||Array.isArray(e))&&typeof e.type=="string")return Dc({animationType:e.type,animationId:t,animationPath:n}),e.type},Dh=e=>{if(typeof e=="string")return e;if(!(!e||typeof e!="object"||Array.isArray(e)))return e.resourceId},Th=e=>{if(!(!e||typeof e!="object"||Array.isArray(e)))return e.playback},Lh=(e,t="animation.playback")=>{if(e===void 0)return;if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`[${t}] playback must be an object.`);if(e.continuity!==void 0&&e.continuity!=="render"&&e.continuity!=="persistent")throw new Error(`[${t}] playback.continuity must be "render" or "persistent".`);if(e.speed!==void 0&&(typeof e.speed!="number"||!Number.isFinite(e.speed)||e.speed<=0))throw new Error(`[${t}] playback.speed must be a finite number greater than 0.`);if(e.loop!==void 0&&typeof e.loop!="boolean")throw new Error(`[${t}] playback.loop must be a boolean.`);let n={};return e.continuity!==void 0&&(n.continuity=e.continuity),e.speed!==void 0&&e.speed!==1&&(n.speed=e.speed),e.loop===!0&&(n.loop=!0),Object.keys(n).length>0?n:void 0},Mh=e=>{let t=e?.playback?.speed;return typeof t=="number"&&Number.isFinite(t)&&t>0?t:1},He=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Tc=(e={})=>He(e,"alpha")&&typeof e.alpha=="number"?e.alpha:He(e,"opacity")&&typeof e.opacity=="number"?e.opacity:void 0,Lc=e=>e?.playback?.continuity==="persistent",Po=e=>Array.isArray(e)?e.map(Po):!e||typeof e!="object"?e:Object.keys(e).sort().reduce((t,n)=>(t[n]=Po(e[n]),t),{}),ss=e=>{if(!e||typeof e!="object"||Array.isArray(e))return null;let t=structuredClone(e);return t.playback&&(delete t.playback.continuity,t.playback.speed===1&&delete t.playback.speed,Object.keys(t.playback).length===0&&delete t.playback),JSON.stringify(Po(t))},Mc=(e=[])=>e.filter(t=>Lc(t)).map(t=>structuredClone(t)),qc=e=>Array.isArray(e?.keyframes)?e.keyframes.reduce((t,n)=>{let i=typeof n?.duration=="number"&&Number.isFinite(n.duration)?n.duration:0;return t+i},0):0,go=e=>!e||typeof e!="object"||Array.isArray(e)?0:Object.values(e).reduce((t,n)=>Math.max(t,qc(n)),0),Vc=e=>Math.max(go(e?.tween),go(e?.prev?.tween),go(e?.next?.tween),qc(e?.mask?.progress)),Fc=e=>!e||typeof e!="object"||Array.isArray(e)?0:e.playback?.loop===!0?Number.POSITIVE_INFINITY:Vc(e)/Mh(e),qh=e=>e.some(t=>t?.playback?.loop===!0),kc=({animationInstances:e,activePersistentAnimations:t})=>{if(!Array.isArray(e)||e.length===0||!Array.isArray(t)||t.length===0)return!1;let n=new Set(t.map(ss).filter(Boolean));return e.some(i=>{if(!Lc(i))return!1;let a=ss(i);return a?n.has(a):!1})},Ke=({animationInstances:e,isLineCompleted:t,skipTransitionsAndAnimations:n,activePersistentAnimations:i,restoredPersistentAnimations:a,isAuthoredOnCurrentLine:r=!0})=>!Array.isArray(e)||e.length===0||n?!1:qh(e)||r&&!t||kc({animationInstances:e,activePersistentAnimations:i})?!0:r?!1:kc({animationInstances:e,activePersistentAnimations:a}),Uc=(e,t,n,i,a)=>{if(e===void 0)return!0;let r=a.slice(0,i).filter(o=>o?.id===n).length,s=e?.[t]?.items?.filter(o=>o?.id===n).at(r);return He(s??{},"animations")},Vh=e=>!e||typeof e!="object"||Array.isArray(e)?!1:["in","out","update"].some(t=>e[t]!==void 0),Fh=(e,t)=>{if(Vh(e))throw new Error(`[${t}] Legacy animations.in/out/update is no longer supported. Use a single animations.resourceId reference.`)},Uh=({resources:e,animationId:t,playback:n,instanceId:i,targetId:a,animationPath:r="animation"})=>{if(!t||!a)return!1;let s=e?.animations?.[t];return s?jh({id:i,targetId:a,animation:s,playback:n,animationPath:r}):null},Eo=(e,t)=>{if(e===void 0)return[];if(!Array.isArray(e)||e.some(n=>n===null||typeof n!="object"||Array.isArray(n)))throw new Error(`${t} must be an array of objects`);return e},Bh=({content:e,path:t,variables:n})=>Eo(e,t).reduce((i,a)=>{let r=lt(a.text,{variables:n});return i+`${r??""}`.length},0),Ac=(e=[])=>{let t=new Map;for(let n of e)n?.id&&t.set(n.id,(t.get(n.id)??0)+1);return new Set(Array.from(t.entries()).filter(([,n])=>n>1).map(([n])=>n))},es=(e,t=0,n=new Set)=>{if(!n.has(e?.id))return`character-container-${e.id}`;let i=e?.sprites?.map(({resourceId:a})=>a)||[];return i.length===0?`character-container-${e.id}`:`character-container-${e.id}-${t}-${i.join("-")}`},pt=(e,t)=>{if(t.transformId&&t.transform)throw new Error(`Visual item "${t.id}" cannot define both transformId and transform`);if(t.transform)return t.transform;if(!t.transformId)throw new Error(`Visual item "${t.id}" requires transformId or transform`);let n=e.transforms?.[t.transformId];if(!n)throw new Error(`Transform "${t.transformId}" not found for visual item "${t.id}"`);return n},Yh=(e,t={})=>{if(!t?.transformId)return;let n=e.transforms?.[t.transformId];if(!n)throw new Error(`Transform "${t.transformId}" not found for background`);return n},zh=["x","y","anchorX","anchorY","scaleX","scaleY","flipX","flipY","rotation","originX","originY"],Xh=(e={})=>zh.some(t=>He(e,t)),Bc=(e={},t)=>{if(t){if(e.images?.[t])return"sprite";if(e.videos?.[t])return"video";if(e.spritesheets?.[t])return"spritesheet-animation";if(e.layouts?.[t])return"container"}},ts=({resourceId:e,kind:t})=>{if(e)return t?`bg-cg-background-${t}`:`bg-cg-${e}`},Gh=(e={})=>e.textStyles||{},Hh=(e={})=>e.images||{},Kh=.5,Wh=(e={},t,n)=>{if(t){if(!e.animations?.[t])throw new Error(`Animation '${t}' not found in spritesheet resource '${n}'`);return t}return Object.keys(e.animations??{})[0]},jo=({id:e,resourceId:t,spritesheet:n,animationName:i,animationSpeed:a,loop:r,width:s,height:o,transform:l={}}={})=>{let c=Wh(n,i,t),u=c?n.animations?.[c]:void 0;if(!u){console.warn(`Spritesheet animation not found: ${t}`);return}return{id:e,type:"spritesheet-animation",...l,width:s??n.width,height:o??n.height,src:n.fileId,atlas:n.jsonData,playback:{frames:u.frames,animationSpeed:a??u.animationSpeed??Kh,loop:r??u.loop??!0}}},Yc=({id:e,item:t,resources:n={}}={})=>{let i=n.images?.[t.resourceId];if(i)return{type:"sprite",id:e,src:i.fileId,width:i.width,height:i.height,x:0,y:0};let a=n.spritesheets?.[t.resourceId];if(a)return jo({id:e,resourceId:t.resourceId,spritesheet:a,animationName:t.animationName,animationSpeed:t.animationSpeed,loop:t.loop,transform:{x:0,y:0}});console.warn(`Character sprite resource not found: ${t.resourceId}`)},Jh=(e={})=>e.colors||{},Qh=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/,Ht=(e,t)=>e==="root"?`${t}`:`${e}.${t}`,ft=(e,t,n)=>{if(typeof e!="string"||e.length===0)throw new Error(`${n} at "${t}" must resolve to a non-empty string`)},bo=(e,t,n)=>{if(e===void 0)return 1;if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} for text style "${n}" must be a number between 0 and 1`);if(e<0||e>1)throw new Error(`${t} for text style "${n}" must be a number between 0 and 1`);return e},wo=(e,t,n,i,{minimum:a}={})=>{if(e===void 0)return i;if(typeof e!="number"||!Number.isFinite(e)||a!==void 0&&e<a){let r=a===void 0?"a finite number":`a finite number >= ${a}`;throw new Error(`shadow.${t} for text style "${n}" must be ${r}`)}return e},as=(e,t)=>{if(typeof e!="string"||!Qh.test(e))throw new Error(`${t} must resolve to a hex color`);return e.length===4?`#${e.slice(1).split("").map(n=>n.repeat(2)).join("")}`:e},Pc=(e,t,n)=>{let i=as(e,n);if(t===1)return i;let a=Number.parseInt(i.slice(1,3),16),r=Number.parseInt(i.slice(3,5),16),s=Number.parseInt(i.slice(5,7),16);return`rgba(${a}, ${r}, ${s}, ${t})`},Zh=(e={},t)=>{let n=Gh(e)?.[t];if(!n)throw new Error(`Text style "${t}" not found`);let a=(Array.isArray(n.fontId)?n.fontId:[n.fontId]).map(l=>{let c=e.fonts?.[l];if(!c)throw new Error(`Font "${l}" not found for text style "${t}"`);return c.fileId}),r=e.colors?.[n.colorId];if(!r)throw new Error(`Color "${n.colorId}" not found for text style "${t}"`);let s=bo(n.colorAlpha,"colorAlpha",t),o={fontFamily:Array.isArray(n.fontId)?a.join(", "):a[0],fontSize:n.fontSize??16,fontWeight:n.fontWeight??"400",fontStyle:n.fontStyle??"normal",lineHeight:n.lineHeight??1.2,fill:Pc(r.hex,s,`Color "${n.colorId}" for text style "${t}"`)};if(n.align!==void 0&&(o.align=n.align),n.wordWrap!==void 0&&(o.wordWrap=n.wordWrap),n.breakWords!==void 0&&(o.breakWords=n.breakWords),n.wordWrapWidth!==void 0&&(o.wordWrapWidth=n.wordWrapWidth),n.strokeColorId){let l=e.colors?.[n.strokeColorId];if(!l)throw new Error(`Stroke color "${n.strokeColorId}" not found for text style "${t}"`);let c=bo(n.strokeAlpha,"strokeAlpha",t);o.strokeColor=Pc(l.hex,c,`Stroke color "${n.strokeColorId}" for text style "${t}"`)}else if(n.strokeAlpha!==void 0)throw new Error(`strokeAlpha for text style "${t}" requires strokeColorId`);if(n.strokeWidth!==void 0&&(o.strokeWidth=n.strokeWidth),n.shadow!==void 0){let l=e.colors?.[n.shadow.colorId];if(!l)throw new Error(`Shadow color "${n.shadow.colorId}" not found for text style "${t}"`);o.shadow={color:as(l.hex,`Shadow color "${n.shadow.colorId}" for text style "${t}"`),alpha:bo(n.shadow.alpha,"shadow.alpha",t),blur:wo(n.shadow.blur,"blur",t,0,{minimum:0}),offsetX:wo(n.shadow.offsetX,"offsetX",t,2),offsetY:wo(n.shadow.offsetY,"offsetY",t,2)}}return o},dt=e=>Array.isArray(e)?e.map(dt):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).map(([t,n])=>[t,dt(n)])),xo=(e,t={},n="root")=>{if(Array.isArray(e))return e.map((a,r)=>xo(a,t,`${n}[${r}]`));if(!e||typeof e!="object")return e;if(Object.prototype.hasOwnProperty.call(e,"textStyle"))throw new Error(`Inline textStyle is not allowed in layout elements at "${n}". Use textStyleId instead`);let i={};for(let[a,r]of Object.entries(e)){if(a==="filters"){i[a]=dt(r);continue}a!=="textStyleId"&&(i[a]=xo(r,t,Ht(n,a)))}return e.textStyleId!==void 0&&(ft(e.textStyleId,n,"textStyleId"),i.textStyle=Zh(t,e.textStyleId)),i},No=(e={},t)=>{let n=Jh(e)?.[t];if(!n)throw new Error(`Color "${t}" not found`);return as(n.hex,`Color "${t}"`)},zc=e=>e==="hover.fill"?"hover.colorId":e==="click.fill"?"click.colorId":e==="rightClick.fill"?"rightClick.colorId":"colorId",Io=(e,t,n)=>{let i=e?.[t];if(!(!i||typeof i!="object"||Array.isArray(i))&&Object.prototype.hasOwnProperty.call(i,"fill"))throw new Error(`Inline ${t}.fill is not allowed in rect layout elements at "${n}". Use ${zc(`${t}.fill`)} instead`)},eg=(e,t={},n="root")=>{if(Array.isArray(e))return e.map((a,r)=>Kt(a,t,`${n}[${r}]`));if(!e||typeof e!="object")return e;let i={};for(let[a,r]of Object.entries(e))a!=="colorId"&&(i[a]=Kt(r,t,Ht(n,a)));return e.colorId!==void 0&&(ft(e.colorId,n,"colorId"),i.fill=No(t,e.colorId)),i},Kt=(e,t={},n="root")=>{if(Array.isArray(e))return e.map((a,r)=>Kt(a,t,`${n}[${r}]`));if(!e||typeof e!="object")return e;if(e.type==="rect"){if(Object.prototype.hasOwnProperty.call(e,"fill"))throw new Error(`Inline fill is not allowed in rect layout elements at "${n}". Use ${zc("fill")} instead`);Io(e,"hover",n),Io(e,"click",n),Io(e,"rightClick",n)}let i={};for(let[a,r]of Object.entries(e)){if(a==="filters"){i[a]=dt(r);continue}if(!(e.type==="rect"&&a==="colorId")){if(e.type==="rect"&&(a==="hover"||a==="click"||a==="rightClick")){i[a]=eg(r,t,Ht(n,a));continue}i[a]=Kt(r,t,Ht(n,a))}}return e.type==="rect"&&e.colorId!==void 0&&(ft(e.colorId,n,"colorId"),i.fill=No(t,e.colorId)),i},vo=(e={},t)=>{let n=Hh(e)?.[t];return n||null},Xc=e=>e==="hoverUrl"||e==="hoverSrc"||e==="hover.src"?"hoverImageId":e==="clickUrl"||e==="clickSrc"||e==="click.src"?"clickImageId":"imageId",Ec=(e,t,n,i)=>{let a=e?.[t];if(!(!a||typeof a!="object"||Array.isArray(a))&&Object.prototype.hasOwnProperty.call(a,i))throw new Error(`Inline ${t}.${i} is not allowed in sprite layout elements at "${n}". Use ${Xc(`${t}.${i}`)} instead`)},xc=(e,t,n)=>{let i=e[t];e[t]={...i&&typeof i=="object"&&!Array.isArray(i)?i:{},src:n}},So=(e,t={},n="root")=>{if(Array.isArray(e))return e.map((a,r)=>So(a,t,`${n}[${r}]`));if(!e||typeof e!="object")return e;if(e.type==="sprite"){for(let a of["url","src","hoverUrl","hoverSrc","clickUrl","clickSrc"])if(Object.prototype.hasOwnProperty.call(e,a))throw new Error(`Inline ${a} is not allowed in sprite layout elements at "${n}". Use ${Xc(a)} instead`);Ec(e,"hover",n,"src"),Ec(e,"click",n,"src")}let i={};for(let[a,r]of Object.entries(e)){if(a==="filters"){i[a]=dt(r);continue}e.type==="sprite"&&(a==="imageId"||a==="hoverImageId"||a==="clickImageId")||(i[a]=So(r,t,Ht(n,a)))}if(e.type==="sprite"&&e.imageId!==void 0){ft(e.imageId,n,"imageId");let a=vo(t,e.imageId),r=a?.fileId??e.imageId;i.src=r,i.width===void 0&&a?.width!==void 0&&(i.width=a.width),i.height===void 0&&a?.height!==void 0&&(i.height=a.height)}return e.type==="sprite"&&e.hoverImageId!==void 0&&(ft(e.hoverImageId,n,"hoverImageId"),xc(i,"hover",vo(t,e.hoverImageId)?.fileId??e.hoverImageId)),e.type==="sprite"&&e.clickImageId!==void 0&&(ft(e.clickImageId,n,"clickImageId"),xc(i,"click",vo(t,e.clickImageId)?.fileId??e.clickImageId)),i},rg=e=>e==="$else"||e.startsWith("$if ")||e.startsWith("$for "),ns=(e,{isElementPatch:t=!1}={})=>{if(Array.isArray(e))return e.map(a=>ns(a,{isElementPatch:t}));if(!e||typeof e!="object")return e;let n=dt(e),i=typeof e.type=="string";(i||t)&&He(e,"opacity")&&(He(e,"alpha")||(n.alpha=e.opacity),delete n.opacity);for(let a of["elements","children"])He(e,a)&&(n[a]=ns(e[a]));for(let[a,r]of Object.entries(e))rg(a)&&(n[a]=ns(r,{isElementPatch:i||t}));return n},Do=(e,t={},n="root")=>ns(So(Kt(xo(e,t,n),t,n),t,n)),pr=Do,Yr=(e=[])=>e.find(t=>t.id==="story"),tg="#000000",Oo="bg-cg-background-color",ng=({resources:e={},background:t={},screen:n})=>t?.colorId===void 0?as(n?.backgroundColor??tg,"screen.backgroundColor"):No(e,t.colorId),Gc=(e={})=>Tc(e),sg=(e={})=>{if(!(!e.blur||typeof e.blur!="object"||Array.isArray(e.blur)))return e.blur},To=(e={})=>Array.isArray(e.filters)?e.filters:void 0,Sc=(e={},{includeDefaultAlpha:t=!1}={})=>{let n=Gc(e),i=sg(e),a=To(e),r={};return(t||n!==void 0)&&(r.alpha=n??1),i&&(r.blur=i),a&&(r.filters=a),r},ig=(e={})=>Tc(e),og=(e={})=>{if(!(!e.blur||typeof e.blur!="object"||Array.isArray(e.blur)))return e.blur},Hc=(e={})=>{let t=ig(e),n=og(e),i={};return t!==void 0&&(i.alpha=t),n&&(i.blur=n),i},Br=(e={})=>{let t=Hc(e),n=To(e);return n&&(t.filters=n),t},Oc=(e,t,n,i)=>{let a=t[n]??e[n];return t[i]??e[i]??!1?(a??1)*-1:a},er=(e={},t={})=>{let n={x:t.x??e.x,y:t.y??e.y,anchorX:t.anchorX??e.anchorX,anchorY:t.anchorY??e.anchorY,rotation:t.rotation??e.rotation,scaleX:Oc(e,t,"scaleX","flipX"),scaleY:Oc(e,t,"scaleY","flipY")},i=t.originX??e.originX,a=t.originY??e.originY;return i!==void 0&&(n.originX=i),a!==void 0&&(n.originY=a),n},ag=["id","type","resourceId","layout","transformId","transform","x","y","anchorX","anchorY","scaleX","scaleY","flipX","flipY","rotation","originX","originY","layer","alpha","opacity","blur","filters","animations"],Lo=(e={})=>e.text&&He(e.text,"content")&&He(e.text,"textStyleId"),Mo=(e={})=>e.layout&&Array.isArray(e.layout.elements),Rc=(e={})=>{if(e.resourceId)return e.resourceId;if(Lo(e))return"text";if(Mo(e))return"inline-layout"},$c=(e,t={})=>typeof e=="string"?t.images?.[e]?.fileId??e:!e||typeof e!="object"||Array.isArray(e)?e:e.imageId?t.images?.[e.imageId]?.fileId??e.imageId:Array.isArray(e.items)?{...e,items:e.items.map(n=>{if(typeof n=="string")return t.images?.[n]?.fileId??n;if(!n||typeof n!="object"||Array.isArray(n))return n;if(n.imageId){let{imageId:i,...a}=n;return{...a,src:t.images?.[i]?.fileId??i}}return typeof n.src=="string"?{...n,src:t.images?.[n.src]?.fileId??n.src}:n})}:e,lg=({item:e,particle:t,resources:n})=>{let i=pt(n,e),a=structuredClone(t),r=a.modules?.appearance?.texture;r!==void 0&&(a.modules.appearance.texture=$c(r,n)),a.texture!==void 0&&(a.texture=$c(a.texture,n));let s={id:`visual-${e.id}`,type:"container",children:[{...a,id:`visual-${e.id}-particles`,type:"particles",x:0,y:0}],...er(i,e)};return Object.assign(s,Br(e)),s},cg=e=>{let t=[e.resourceId,e.text,e.layout].filter(n=>n!==void 0).length;if(t>1)throw t===2&&e.resourceId!==void 0&&e.text!==void 0?new Error(`Visual item "${e.id}" cannot define both resourceId and text`):new Error(`Visual item "${e.id}" must define only one of resourceId, text, or layout`);if(e.transformId&&e.transform)throw new Error(`Visual item "${e.id}" cannot define both transformId and transform`);if(e.text&&!Lo(e))throw new Error(`Visual item "${e.id}" text requires content and textStyleId`);if(e.layout&&!Mo(e))throw new Error(`Visual item "${e.id}" layout requires elements`);if(e.text){for(let n of ag)if(He(e.text,n))throw new Error(`Visual item "${e.id}" text.${n} is reserved for the visual item`)}},ug=({resources:e,background:t,screen:n={width:1920,height:1080},includeAlpha:i=!1})=>{let a={id:Oo,type:"rect",x:0,y:0,width:n?.width??1920,height:n?.height??1080,fill:ng({resources:e,background:t,screen:n})};if(i){let r=Gc(t);r!==void 0&&(a.alpha=r);let s=To(t);s&&(a.filters=s)}return a},pg=(e={},t)=>t?!!(e.images?.[t]||e.videos?.[t]||e.spritesheets?.[t]||e.layouts?.[t]):!1,Cc=({resources:e={},resourceId:t,colorId:n})=>{let i=Bc(e,t);return t&&(i||n===void 0)?{resourceId:t,targetId:ts({resourceId:t,kind:i})}:n!==void 0?{resourceId:Oo,targetId:Oo}:{resourceId:void 0,targetId:void 0}},Kc=100,Er=Kc,fg="channel:bgm",dg="channel:music-room",mg="music-room:player",yg="channel:voice",hg="default",gg=e=>String(e).replaceAll("%","%25").replaceAll(":","%3A"),Gt=(...e)=>e.map(gg).join(":"),is=(e,t,n)=>{let i=new Set;e.forEach(({id:a})=>{if(i.has(a)){let r=n?` in ${n}`:"";throw new Error(`Duplicate ${t} id "${a}"${r}.`)}i.add(a)})},Wc=(e,t)=>e*t/Kc,qo=(e={},t)=>e?.[t]??Ar[t],Vo=(e={},t,n=Er)=>Wc(n,qo(e,t)),ls=({id:e,volume:t,muted:n,pan:i,loop:a,playback:r,interruption:s,children:o,runtime:l})=>{let c={id:e,type:"audio-channel",volume:t,muted:!!l?.muteAll||(n??!1),pan:i??0,children:o};return a!==void 0&&(c.loop=a),r!==void 0&&(c.playback=structuredClone(r)),s!==void 0&&(c.interruption=s),c},rs=(e,t,n,i)=>e[n]!==void 0?e[n]:t[n]!==void 0?t[n]:i,bg=["muted","pan","playbackRate","startAt","endAt"],cs=({id:e,sound:t,resource:n,defaultLoop:i=!1})=>{let a={id:e,type:"sound",src:n.fileId,loop:rs(t,n,"loop",i),volume:rs(t,n,"volume",Er),startDelayMs:rs(t,n,"startDelayMs",0)};bg.forEach(s=>{let o=rs(t,n,s,void 0);o!==void 0&&(a[s]=o)}),t.playback!==void 0&&(a.playback=structuredClone(t.playback));let r=a.startAt??0;if(a.endAt!==void 0&&a.endAt!==null&&a.endAt<r)throw new Error(`Sound "${e}" endAt (${a.endAt}) must be greater than or equal to startAt (${r}).`);return a},wg=e=>Math.max(-1,Math.min(1,e)),Ig=({node:e,bgm:t,sound:n,resource:i,usesLegacySound:a})=>{a||(e.volume=Wc(t.volume??Er,e.volume??Er));let r=t.muted!==void 0,s=n.muted!==void 0||i.muted!==void 0;(r||s)&&(e.muted=t.muted===!0||e.muted===!0);let o=t.pan!==void 0,l=n.pan!==void 0||i.pan!==void 0;return(o||l)&&(e.pan=wg((t.pan??0)+(e.pan??0))),e},ze=({variables:e,imageGallery:t,musicRoom:n,sceneReplay:i,runtime:a,saveSlots:r=[],dialogueState:s,includeInactiveAdvDialogue:o=!1,isLineCompleted:l,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:d,canRollback:f,confirmDialog:m,form:b,historyDialogue:h=[],characters:y={},dialogueUIHidden:w,skipOnlyViewedLines:g,skipTransitionsAndAnimations:E}={})=>{let k={dialogueTextSpeed:a?.dialogueTextSpeed??50,autoForwardDelay:a?.autoForwardDelay??1e3,autoForwardSpeed:a?.autoForwardSpeed??50,skipUnseenText:a?.skipUnseenText??!1,skipTransitionsAndAnimations:a?.skipTransitionsAndAnimations??!1,soundVolume:a?.soundVolume??50,musicVolume:a?.musicVolume??50,muteAll:a?.muteAll??!1,localizationPackageId:a?.localizationPackageId??null,saveLoadPagination:a?.saveLoadPagination??1,menuPage:a?.menuPage??"",menuEntryPoint:a?.menuEntryPoint??"",autoMode:a?.autoMode??c??!1,skipMode:a?.skipMode??u??!1,dialogueUIHidden:a?.dialogueUIHidden??w??!1,isLineCompleted:a?.isLineCompleted??l??!1},P=Eg({dialogueState:s,includeInactiveAdvDialogue:o,characters:y,variables:e,runtime:k}),v={variables:e,imageGallery:t,musicRoom:n,sceneReplay:i,localizationPackages:a?.localizationPackages??[],localizationPackageId:k.localizationPackageId,runtime:k,saveSlots:r,isChoiceVisible:p,isFormVisible:d,canRollback:f,confirmDialog:m,form:b,historyDialogue:h,characters:y};return P&&(v.dialogue=P,v.dialogueLines=P.lines),v},_c=100,os=(e,t)=>{if(Array.isArray(e))return e.map(i=>os(i,t));if(!e||typeof e!="object")return e;let n={...e};return Object.keys(n).forEach(i=>{n[i]=os(n[i],t)}),n.type==="text-revealing"?t(n):n},vg=e=>os(e,t=>({...t,revealEffect:"none"})),kg=e=>os(e,t=>{let n=Number(t.speed??t.displaySpeed),i=Number.isFinite(n)?Math.max(n,_c):_c;return{...t,speed:i,...Object.prototype.hasOwnProperty.call(t,"displaySpeed")?{displaySpeed:i}:{}}}),xr=(e,{isLineCompleted:t=!1,skipMode:n=!1,skipTransitionsAndAnimations:i=!1}={})=>t||i?vg(e):n?kg(e):e,Jc=({id:e,screen:t={width:1920,height:1080}})=>({id:e,type:"rect",fill:"transparent",width:t.width,height:t.height,x:0,y:0,click:{payload:{actions:{}}}}),Ro=e=>{if(Array.isArray(e))return e.map(Ro);if(!e||typeof e!="object")return e;let t={};for(let[r,s]of Object.entries(e))t[r]=Ro(s);let n=t.click?.payload;if(!n||typeof n!="object"||Array.isArray(n))return t;let i=n.actions,a=i&&typeof i=="object"&&!Array.isArray(i)&&Object.prototype.hasOwnProperty.call(i,"nextLine")?{...i.nextLine,bypassChoice:!0}:void 0;return{...t,click:{...t.click,payload:{...n,bypassChoice:!0,...a?{actions:{...i,nextLine:a}}:{}}}}},Ag=new Set(["click","change","submit","focusEvent","blurEvent","selectionChange","compositionStart","compositionUpdate","compositionEnd"]),jc="submit",ko=(e,t,n={})=>{let i=e?.payload&&typeof e.payload=="object"&&!Array.isArray(e.payload)?e.payload:{},a=i.actions&&typeof i.actions=="object"?i.actions:{},r=n.replaceActions===!0?t:{...a,...t};return{...e||{},payload:{...i,actions:r}}},$o=(e,t,n={})=>{if(Array.isArray(e))return e.map(c=>$o(c,t,n));if(!e||typeof e!="object")return e;let i=typeof e.type=="string",a=i&&e.formRole===jc,r=i&&n.submitRoleAncestor,s=a||r?{submitRoleAncestor:!0}:{},o={};for(let[c,u]of Object.entries(e))o[c]=$o(u,t,c==="children"?s:{});let l=o;if(l.type==="input"&&typeof l.field=="string"){let c=t?.fields?.[l.field];if(c){let u={updateFormField:{formKey:t.key,field:c.id,value:"_event.value"}};l={...l,value:c.value,placeholder:l.placeholder===void 0?c.placeholder:l.placeholder,multiline:l.multiline===void 0?c.multiline:l.multiline,...l.maxLength===void 0&&c.maxLength!==void 0?{maxLength:c.maxLength}:{},change:ko(l.change,u),submit:ko(l.submit,t.submitActions)}}}return l.formRole===jc||r?{...l,click:ko(l.click,t.submitActions,{replaceActions:!0})}:l},Co=(e,t)=>{if(Array.isArray(e))return e.map(i=>Co(i,t));if(!e||typeof e!="object")return e;let n={};for(let[i,a]of Object.entries(e))n[i]=Co(a,t);for(let i of Ag){let a=n[i]?.payload;!a||typeof a!="object"||Array.isArray(a)||(n[i]={...n[i],payload:{...a,_interactionSource:"form"}})}return n},_o=({characterId:e,character:t,characterName:n,characters:i={},variables:a={}}={})=>{let r=e?i?.[e]:void 0,s=Un({characterId:e,character:t,characterName:n,characters:i,variables:a});return{...r||{},...t||{},name:s}},Qc=(e=[],t={},n={})=>e.map(i=>{let a=_o({characterId:i.characterId,character:i.character,characterName:i.characterName,characters:t,variables:n}),r=typeof i.text=="string"?i.text:Array.isArray(i.content)?i.content.map(s=>s?.text??"").join(""):"";return{...i,text:r,character:a,characterName:a.name}}),Pg=e=>!(!e||e.mode==="adv"&&e.content===void 0),Eg=({dialogueState:e,includeInactiveAdvDialogue:t=!1,characters:n={},variables:i,runtime:a}={})=>{if(!t&&!Pg(e))return;let r=e.content===void 0?[{text:""}]:Eo(e.content,"dialogue.content"),s=e.content===void 0?0:Bh({content:e.initialRevealedContent,path:"dialogue.initialRevealedContent",variables:i}),o=a?.dialogueTextSpeed??Ar.dialogueTextSpeed,l=e.textSpeed??o,c=(e.lines||[]).map((p,d)=>{let f=Eo(p.content,`dialogue.lines[${d}].content`),m=_o({characterId:p.characterId,character:p.character,characterName:p.characterName,characters:n,variables:i});return{...p,textSpeed:p.textSpeed??o,content:f.map(b=>({...b,text:lt(b.text,{variables:i})})),character:m,characterName:m.name}}),u=_o({characterId:e.characterId,character:e.character,characters:n,variables:i});return{characterId:e.characterId,persistCharacter:e.persistCharacter,persistSprite:e.persistSprite,character:u,textSpeed:l,content:r.map(p=>({...p,text:lt(p.text,{variables:i})})),initialRevealedCharacters:s,lines:c}},Fo=({container:e,resources:t,templateData:n,isLineCompleted:i=!1,skipMode:a=!1,skipTransitionsAndAnimations:r=!1})=>{let s=ur(e,n);return pr(xr(s,{isLineCompleted:i,skipMode:a,skipTransitionsAndAnimations:r}),t)},Ao=(e,t={})=>e?.payload&&typeof e.payload=="object"?structuredClone(e.payload):e?.actions&&typeof e.actions=="object"?{actions:structuredClone(e.actions)}:structuredClone(t),Nc=({renderStateKeyboard:e,keyboard:t,phase:n})=>{!t||typeof t!="object"||Array.isArray(t)||Object.entries(t).forEach(([i,a])=>{let r=e[i]??{},s=n==="keydown"?a?.keydown:a?.keyup;if(n==="keydown"&&s&&typeof s=="object"){e[i]={...r,keydown:{payload:Ao(s)}},a?.keyup&&typeof a.keyup=="object"&&(e[i].keyup={payload:Ao(a.keyup)});return}e[i]={...r,[n]:{payload:Ao(a)}}})},xg=(e={},t={})=>{let n={};return Nc({renderStateKeyboard:n,keyboard:e,phase:"keydown"}),Nc({renderStateKeyboard:n,keyboard:t,phase:"keyup"}),Object.keys(n).length>0?n:void 0},fr=({animationsDef:e,resources:t,previousResourceId:n,currentResourceId:i,previousTargetId:a,currentTargetId:r,animationPath:s,idPrefix:o})=>{if(!e)return[];let l=[],c=({instanceId:y,targetId:w})=>{let g=Uh({resources:t,animationId:f,playback:m,instanceId:y,targetId:w,animationPath:s});g&&l.push(g)},u=n!=null&&n!==!1,p=i!=null&&i!==!1,d=a&&r&&a===r;Fh(e,s);let f=Dh(e),m=Th(e),b=t?.animations?.[f],h=Nh(b,{animationId:f,animationPath:s});if(h==="update")return p&&r?c({instanceId:`${o}-animation-update`,targetId:r}):u&&a&&c({instanceId:`${o}-animation-update`,targetId:a}),l;if(h==="transition"){let y=`${o}-animation-transition`,w=m?.continuity==="persistent"?y:`${o}-animation-in`;if(u&&p&&d)return c({instanceId:y,targetId:r}),l;u&&c({instanceId:`${o}-animation-out`,targetId:a}),p&&c({instanceId:w,targetId:r})}return l},Sg=()=>({elements:[{id:"story",type:"container",x:0,y:0,children:[]}],animations:[],audio:[],global:{}}),Og=(e,{presentationState:t,previousPresentationState:n,currentLineActions:i,resources:a={},screen:r={width:1920,height:1080},isLineCompleted:s,skipTransitionsAndAnimations:o,variables:l,imageGallery:c,musicRoom:u,sceneReplay:p,runtime:d,activePersistentAnimations:f,restoredPersistentAnimations:m,autoMode:b,skipMode:h,isChoiceVisible:y,isFormVisible:w,canRollback:g,form:E,saveSlots:k=[]})=>{let{elements:P,animations:v}=e;if(t.background){let O=i===void 0?!0:He(i?.background??{},"animations"),T=P.find(ie=>ie.id==="story");if(!T)return e;let R=Yh(a,t.background),D=R||Xh(t.background),B=n?.background?.resourceId,_=n?.background?.colorId,X=t.background.resourceId??(t.background.animations?B:void 0),ae=t.background.colorId??(t.background.animations?_:void 0),M=pg(a,X),se={...t.background,colorId:ae};if((ae!==void 0||M)&&T.children.push(ug({resources:a,background:se,screen:r,includeAlpha:!M})),X){let{images:ie={},videos:K={},spritesheets:pe={}}=a,oe=Bc(a,X),C;if(oe==="sprite"?C=ie[X]:oe==="video"?C=K[X]:oe==="spritesheet-animation"&&(C=pe[X]),C){let j=oe==="video",F=oe==="spritesheet-animation",W={x:(r?.width??1920)/2,y:(r?.height??1080)/2,anchorX:.5,anchorY:.5,rotation:0,scaleX:1,scaleY:1,...R},fe={...Sc(t.background,{includeDefaultAlpha:!0}),...er(W,t.background)},Se;F?Se=jo({id:ts({resourceId:X,kind:oe}),resourceId:X,spritesheet:C,animationName:t.background.animationName,animationSpeed:t.background.animationSpeed,loop:t.background.loop,transform:fe}):Se={id:ts({resourceId:X,kind:oe}),type:j?"video":"sprite",src:C.fileId,width:C.width,height:C.height,...fe},j&&(Se.loop=t.background.loop??!1,Se.volume=C.volume??50),Se&&T.children.push(Se)}}if(X){let{layouts:ie={}}=a,K=ie[X];if(K){let pe={id:ts({resourceId:X,kind:"container"}),type:"container",children:K.elements,...Sc(t.background)};D&&Object.assign(pe,er({x:0,y:0,anchorX:0,anchorY:0,rotation:0,scaleX:1,scaleY:1,...R},t.background));let oe=ur(pe,ze({variables:l,imageGallery:c,musicRoom:u,sceneReplay:p,runtime:d,saveSlots:k,dialogueState:t.dialogue,isLineCompleted:s,autoMode:b,skipMode:h,isChoiceVisible:y,isFormVisible:w,canRollback:g,form:E,characters:a.characters||{},skipTransitionsAndAnimations:o}));T.children.push(pr(xr(oe,{isLineCompleted:s,skipMode:h,skipTransitionsAndAnimations:o}),a))}}let ue=Cc({resources:a,resourceId:B,colorId:_}),G=Cc({resources:a,resourceId:X,colorId:ae}),Q=fr({animationsDef:t.background.animations,resources:a,previousResourceId:ue.resourceId,currentResourceId:G.resourceId,previousTargetId:ue.targetId,currentTargetId:G.targetId,animationPath:"background.animations",idPrefix:"bg-cg"});Ke({animationInstances:Q,isLineCompleted:s,skipTransitionsAndAnimations:o,activePersistentAnimations:f,restoredPersistentAnimations:m,isAuthoredOnCurrentLine:O})&&v.push(...Q)}return e},Rg=(e,{presentationState:t,previousPresentationState:n,currentLineActions:i,resources:a,isLineCompleted:r,skipTransitionsAndAnimations:s,activePersistentAnimations:o,restoredPersistentAnimations:l})=>{let{elements:c,animations:u}=e;if(t.character&&a){let p=c.find(h=>h.id==="story");if(!p)return e;let d=t.character.items||[],f=n?.character?.items||[],m=Ac(d),b=Ac(f);for(let h=0;h<d.length;h++){let y=d[h],{transformId:w,sprites:g}=y,E=f.find(X=>X.id===y.id),k=f.findIndex(X=>X.id===y.id),P=E?.sprites&&E.sprites.length>0,v=g&&g.length>0,O=k>=0?es(E,k,b):void 0,T=Uc(i,"character",y.id,h,d),R=fr({animationsDef:y.animations,resources:a,previousResourceId:O,currentResourceId:v?es(y,h,m):void 0,previousTargetId:O,currentTargetId:v?es(y,h,m):void 0,animationPath:`character.items[${h}].animations`,idPrefix:"character"});if(y.animations&&!g&&!w&&P&&Ke({animationInstances:R,isLineCompleted:r,skipTransitionsAndAnimations:s,activePersistentAnimations:o,restoredPersistentAnimations:l,isAuthoredOnCurrentLine:T})){u.push(...R);continue}if(y.animations&&!g&&!w)continue;if(!g||g.length===0||!w){console.warn("Character item missing sprites or transformId:",y);continue}let D=es(y,h,m),B=a.transforms[w];if(!B){console.warn("Transform not found:",w);continue}let _={type:"container",id:D,...er(B,y),...Br(y),children:[]};for(let X of g){let ae=Yc({id:`${D}-${X.id}`,item:X,resources:a});ae&&_.children.push(ae)}p.children.push(_),Ke({animationInstances:R,isLineCompleted:r,skipTransitionsAndAnimations:s,activePersistentAnimations:o,restoredPersistentAnimations:l,isAuthoredOnCurrentLine:T})&&u.push(...R)}}return e},Zc=(e,t)=>{if(!ho.includes(e))throw new Error(`${t} must be one of: ${ho.join(", ")}.`)},$g=(e,t)=>{let n=!!e.resourceId||Lo(e)||Mo(e),i=e.layer??(n?void 0:t?.layer)??yo;return Zc(i,`Visual item "${e.id}" layer`),i},Cg=(e,{presentationState:t,previousPresentationState:n,currentLineActions:i,resources:a,isLineCompleted:r,skipTransitionsAndAnimations:s,variables:o,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,activePersistentAnimations:d,restoredPersistentAnimations:f,autoMode:m,skipMode:b,isChoiceVisible:h,isFormVisible:y,canRollback:w,form:g,saveSlots:E=[],visualLayer:k})=>{let{elements:P,animations:v}=e;if(t.visual&&a){let O=P.find(B=>B.id==="story");if(!O)return e;let T=t.visual.items,R=n?.visual?.items||[],D=ze({variables:o,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,saveSlots:E,dialogueState:t.dialogue,isLineCompleted:r,autoMode:m,skipMode:b,isChoiceVisible:h,isFormVisible:y,canRollback:w,form:g,characters:a.characters||{},skipTransitionsAndAnimations:s});k!==void 0&&Zc(k,"visualLayer");for(let[B,_]of T.entries()){let X=R.find(K=>K.id===_.id),ae=Uc(i,"visual",_.id,B,T),M=$g(_,X);if(k!==void 0&&M!==k)continue;if(cg(_),_.layout){let K=pt(a,_),pe={id:`visual-${_.id}`,type:"container",children:structuredClone(_.layout.elements),...er(K,_)};Object.assign(pe,Br(_)),O.children.push(Fo({container:pe,resources:a,templateData:D,isLineCompleted:r,skipMode:b,skipTransitionsAndAnimations:s}))}if(_.text){let K=pt(a,_),pe={...structuredClone(_.text),id:`visual-${_.id}`,type:"text",...er(K,_)};Object.assign(pe,Br(_)),O.children.push(pr(ur(pe,D),a))}if(_.resourceId){let{images:K={},videos:pe={},spritesheets:oe={}}=a,C=oe[_.resourceId];if(C){let j=pt(a,_),F=Br(_),W=jo({id:`visual-${_.id}`,resourceId:_.resourceId,spritesheet:C,animationName:_.animationName,animationSpeed:_.animationSpeed,loop:_.loop,width:_.width,height:_.height,transform:{...er(j,_),alpha:F.alpha??_.alpha??1,...F.blur?{blur:F.blur}:{},...F.filters?{filters:F.filters}:{}}});W&&O.children.push(structuredClone(W))}else{let j=K[_.resourceId]||pe[_.resourceId];if(j){let F=pe[_.resourceId]!==void 0,W=pt(a,_),fe={id:`visual-${_.id}`,type:F?"video":"sprite",src:j.fileId,width:j.width,height:j.height,...er(W,_)};Object.assign(fe,Br(_)),F&&(fe.loop=j.loop??!1,fe.volume=j.volume??50),O.children.push(fe)}}}let se=!!(a.spritesheets?.[_.resourceId]||a.images?.[_.resourceId]||a.videos?.[_.resourceId]);if(_.resourceId&&!se){let K=a.particles?.[_.resourceId];K&&O.children.push(lg({item:_,particle:K,resources:a}))}let ue=!!a.particles?.[_.resourceId];if(_.resourceId&&!se&&!ue){let{layouts:K={}}=a,pe=K[_.resourceId];if(pe){let oe=pt(a,_),C={id:`visual-${_.id}`,type:"container",children:structuredClone(pe.elements),...er(oe,_)};Object.assign(C,Br(_));let j=ur(C,D);O.children.push(pr(xr(j,{isLineCompleted:r,skipMode:b,skipTransitionsAndAnimations:s}),a))}}let G=Rc(X),Q=Rc(_),ie=fr({animationsDef:_.animations,resources:a,previousResourceId:G,currentResourceId:Q,previousTargetId:G?`visual-${_.id}`:void 0,currentTargetId:Q?`visual-${_.id}`:void 0,animationPath:`visual.items[${_.id}].animations`,idPrefix:_.id});Ke({animationInstances:ie,isLineCompleted:r,skipTransitionsAndAnimations:s,activePersistentAnimations:d,restoredPersistentAnimations:f,isAuthoredOnCurrentLine:ae})&&v.push(...ie)}}return e},ut="dialogue-character-sprite",_g=(e,{presentationState:t,previousPresentationState:n,resources:i={},isLineCompleted:a,skipTransitionsAndAnimations:r,activePersistentAnimations:s})=>{let{animations:o}=e,l=Yr(e.elements);if(!l)return e;let c=t.dialogue?.character?.sprite,u=n?.dialogue?.character?.sprite,p=jt(c),d=jt(u),f=fr({animationsDef:c?.animations,resources:i,previousResourceId:d?ut:void 0,currentResourceId:p?ut:void 0,previousTargetId:d?ut:void 0,currentTargetId:p?ut:void 0,animationPath:"dialogue.character.sprite.animations",idPrefix:"dialogue-character-sprite"});if(!p)return c?.animations&&d&&Ke({animationInstances:f,isLineCompleted:a,skipTransitionsAndAnimations:r,activePersistentAnimations:s})&&o.push(...f),e;let m=i.transforms?.[c.transformId];if(!m)return console.warn("Transform not found:",c.transformId),e;let b={type:"container",id:ut,...er(m),children:[]};for(let h of c.items){let y=Yc({id:`${ut}-${h.id}`,item:h,resources:i});y&&b.children.push(y)}return l.children.push(b),Ke({animationInstances:f,isLineCompleted:a,skipTransitionsAndAnimations:r,activePersistentAnimations:s})&&o.push(...f),e},jg=(e,{presentationState:t,previousPresentationState:n,resources:i={},dialogueUIHidden:a,autoMode:r,skipMode:s,isChoiceVisible:o,isFormVisible:l,canRollback:c,form:u,skipOnlyViewedLines:p,isLineCompleted:d,skipTransitionsAndAnimations:f,variables:m,imageGallery:b,musicRoom:h,sceneReplay:y,runtime:w,activePersistentAnimations:g,saveSlots:E=[]})=>{let{elements:k,animations:P}=e;if(!t.dialogue||a)return e;let v=k.find(T=>T.id==="story");if(!v)return e;if(t.dialogue.ui&&t.dialogue.ui.resourceId){let{layouts:T={}}=i,R=T[t.dialogue.ui.resourceId];if(R){let D={elements:R.elements},B=ze({variables:m,imageGallery:b,musicRoom:h,sceneReplay:y,runtime:w,saveSlots:E,dialogueState:t.dialogue,includeInactiveAdvDialogue:!0,isLineCompleted:d,autoMode:r,skipMode:s,isChoiceVisible:o,isFormVisible:l,canRollback:c,form:u,characters:i.characters||{},dialogueUIHidden:a,skipOnlyViewedLines:p,skipTransitionsAndAnimations:f}),_=ur(D,B),X=pr(xr(_?.elements,{isLineCompleted:d,skipMode:s,skipTransitionsAndAnimations:f}),i);if(Array.isArray(X))for(let ae of X)v.children.push(ae);else X&&v.children.push(X)}}_g(e,{presentationState:t,previousPresentationState:n,resources:i,isLineCompleted:d,skipTransitionsAndAnimations:f,activePersistentAnimations:g});let O=fr({animationsDef:t.dialogue.ui?.animations,resources:i,previousResourceId:n?.dialogue?.ui?.resourceId,currentResourceId:t.dialogue.ui?.resourceId,previousTargetId:n?.dialogue?.ui?.resourceId?"dialogue-container":void 0,currentTargetId:t.dialogue.ui?.resourceId?"dialogue-container":void 0,animationPath:"dialogue.ui.animations",idPrefix:"dialogue-ui"});return Ke({animationInstances:O,isLineCompleted:d,skipTransitionsAndAnimations:f,activePersistentAnimations:g})&&P.push(...O),e},Ng=(e,{presentationState:t,previousPresentationState:n,resources:i,screen:a,isLineCompleted:r,skipTransitionsAndAnimations:s,variables:o,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,autoMode:d,skipMode:f,isChoiceVisible:m,isFormVisible:b,canRollback:h,form:y,activePersistentAnimations:w,saveSlots:g=[]})=>{let{elements:E,animations:k}=e;if(t.choice&&i){let P=Yr(E);if(!P)return e;let v=i?.layouts?.[t.choice.resourceId];if(v&&v.elements){let T={elements:v.elements},R=ur(T,{...ze({variables:o,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,saveSlots:g,dialogueState:t.dialogue,isLineCompleted:r,autoMode:d,skipMode:f,isChoiceVisible:m??!!t.choice,isFormVisible:b,canRollback:h,form:y,characters:i.characters||{},skipTransitionsAndAnimations:s}),choice:{items:t.choice?.items??[]}}),D=Ro(pr(xr(R?.elements,{isLineCompleted:r,skipMode:f,skipTransitionsAndAnimations:s}),i));if(Array.isArray(D))for(let B of D)P.children.push(B);else D&&P.children.push(D)}let O=fr({animationsDef:t.choice.animations,resources:i,previousResourceId:n?.choice?.resourceId,currentResourceId:t.choice.resourceId,previousTargetId:n?.choice?.resourceId?"choice-container":void 0,currentTargetId:t.choice.resourceId?"choice-container":void 0,animationPath:"choice.animations",idPrefix:"choice"});Ke({animationInstances:O,isLineCompleted:r,skipTransitionsAndAnimations:s,activePersistentAnimations:w})&&k.push(...O)}return e},Dg=(e,{presentationState:t,previousPresentationState:n,resources:i,screen:a,isLineCompleted:r,skipTransitionsAndAnimations:s,variables:o,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,autoMode:d,skipMode:f,isChoiceVisible:m,isFormVisible:b,canRollback:h,activePersistentAnimations:y,saveSlots:w=[],form:g})=>{let{elements:E,animations:k}=e;if(!g?.resourceId||!i)return e;let P=Yr(E);if(!P)return e;let v=i?.layouts?.[g.resourceId];if(!v)return console.warn(`Form layout not found: ${g.resourceId}`),e;let O={id:"form-container",type:"container",x:0,y:0,children:v.elements||[]},T={...ze({variables:o,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,saveSlots:w,dialogueState:t.dialogue,isLineCompleted:r,autoMode:d,skipMode:f,isChoiceVisible:m,isFormVisible:b,canRollback:h,characters:i.characters||{},skipTransitionsAndAnimations:s,form:g}),form:g},R=ur(O,T),D=Co(pr(xr($o(R,g),{isLineCompleted:r,skipMode:f,skipTransitionsAndAnimations:s}),i),g);D&&P.children.push(D);let B=fr({animationsDef:g.animations,resources:i,previousResourceId:n?.form?.resourceId,currentResourceId:g.resourceId,previousTargetId:n?.form?.resourceId?"form-container":void 0,currentTargetId:g.resourceId?"form-container":void 0,animationPath:"form.animations",idPrefix:"form"});return Ke({animationInstances:B,isLineCompleted:r,skipTransitionsAndAnimations:s,activePersistentAnimations:y})&&k.push(...B),e},Tg=(e,{presentationState:t,resources:n={},variables:i,imageGallery:a,musicRoom:r,sceneReplay:s,runtime:o,isLineCompleted:l,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:d,canRollback:f,form:m,saveSlots:b=[],skipTransitionsAndAnimations:h})=>{if(!t.control?.resourceId)return e;let y=n.controls?.[t.control.resourceId];if(!y)return e;let w=xg(y.keyboard,y.keyup);if(w&&Object.keys(w).length>0&&(e.global.keyboard=w),!Array.isArray(y.elements)||y.elements.length===0)return e;let g=Yr(e.elements);if(!g)return e;let E={id:`control-${t.control.resourceId}`,type:"container",x:0,y:0,children:y.elements};return g.children.push(Fo({container:E,resources:n,templateData:ze({variables:i,imageGallery:a,musicRoom:r,sceneReplay:s,runtime:o,saveSlots:b,dialogueState:t.dialogue,isLineCompleted:l,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:d,canRollback:f,form:m,characters:n.characters||{},skipTransitionsAndAnimations:h}),isLineCompleted:l,skipMode:u,skipTransitionsAndAnimations:h})),e},Uo=({presentationState:e,resources:t={},runtime:n,variables:i,musicRoomPlayer:a})=>{if(e?.bgm&&t){let r=e.bgm,s=!Array.isArray(r.sounds),o=s?r.resourceId?[{id:"default",resourceId:r.resourceId,loop:r.loop??!0,volume:r.volume,startDelayMs:r.startDelayMs??0}]:[]:r.sounds,l=!s&&r.loop===!0,c=[];if(s||is(o,"BGM sound"),l){let p=o.find(d=>d.loop===!0);if(p)throw new Error(`BGM sound "${p.id}" cannot loop inside a looping BGM channel.`)}if(o.forEach(p=>{let d=t.sounds?.[p.resourceId];if(!d)return;let f=l?{...p,loop:p.loop??!1}:p;c.push(Ig({node:cs({id:Gt("bgm",s?"default":p.id),sound:f,resource:d,defaultLoop:!l}),bgm:r,sound:f,resource:d,usesLegacySound:s}))}),c.length===0)return null;let u=ze({variables:i,runtime:n}).runtime;return ls({id:fg,volume:qo(u,"musicVolume"),muted:!1,pan:0,loop:s?void 0:r.loop,playback:a?.bgmPlayback,interruption:r.interruption,children:c,runtime:u})}return null},Lg=(e,t)=>{if(!Yr(e.elements))return e;let i=Uo(t);return i&&e.audio.push(i),e},Mg=(e,{activeAudioEffect:t,skipTransitionsAndAnimations:n})=>(t&&!n&&(e.audioEffects=[structuredClone(t)]),e),qg=(e,{resources:t={},runtime:n,variables:i,musicRoomPlayer:a})=>{let r=t.musicRoom;if(!r||!a?.trackId||!a.playback)return e;let s=r.tracks.find(u=>u.id===a.trackId),o=s?t.sounds?.[s.soundId]:void 0;if(!s||!o)return e;let l=ze({variables:i,runtime:n}).runtime,c=cs({id:mg,sound:{loop:!1,startDelayMs:0,playback:a.playback},resource:o});return e.audio.push(ls({id:dg,volume:Vo(l,"musicVolume",Er),children:[c],runtime:l})),e},Vg=(e,{presentationState:t,resources:n,runtime:i})=>{let{audio:a}=e;if(t.sfx&&n){let r=t.sfx,s=Array.isArray(r.channels)?r.channels:[],o=s.map(l=>({channel:l,usesLegacyChannel:!1}));is(s,"SFX channel"),Array.isArray(r.items)&&o.push({channel:{id:hg,sounds:r.items},usesLegacyChannel:!0}),o.forEach(({channel:l,usesLegacyChannel:c})=>{let u=!c&&l.loop===!0,p=[];if(c||is(l.sounds,"SFX sound",`SFX channel "${l.id}"`),u){let d=l.sounds.find(f=>f.loop===!0);if(d)throw new Error(`SFX sound "${d.id}" cannot loop inside looping SFX channel "${l.id}".`)}l.sounds.forEach((d,f)=>{let m=n.sounds?.[d.resourceId];if(!m)return;let b=u?{...d,loop:d.loop??!1}:d;p.push(cs({id:c?Gt("sfx","default",f,d.id):Gt("sfx",l.id,d.id),sound:b,resource:m,defaultLoop:u?!1:void 0}))}),p.length!==0&&a.push(ls({id:Gt("channel","sfx",l.id),volume:Vo(i,"soundVolume",l.volume??Er),muted:l.muted,pan:l.pan,loop:c?void 0:l.loop,interruption:c?void 0:l.interruption,children:p,runtime:i}))})}return e},Fg=(e,t,n)=>{if(!(!t||!n))return e?.voices?.[t]?.[n]},Ug=(e,{presentationState:t,resources:n,currentSceneId:i,runtime:a,variables:r})=>{let{audio:s}=e;if(!t?.voice)return e;let o=t.voice,l=!Array.isArray(o.sounds),c=l?o.resourceId?[{id:"default",resourceId:o.resourceId,loop:o.loop??!1,volume:Er,startDelayMs:o.startDelayMs??0}]:[]:o.sounds,u=!l&&o.loop===!0,p=[];if(l||is(c,"Voice sound"),u){let f=c.find(m=>m.loop===!0);if(f)throw new Error(`Voice sound "${f.id}" cannot loop inside a looping Voice channel.`)}if(c.forEach(f=>{let m=Fg(n,i,f.resourceId);if(!m)return;let b=u?{...f,loop:f.loop??!1}:f;p.push(cs({id:Gt("voice",i,l?"default":f.id),sound:b,resource:m,defaultLoop:u?!1:void 0}))}),p.length===0)return e;let d=ze({variables:r,runtime:a}).runtime;return s.push(ls({id:yg,volume:l?o.volume??qo(d,"soundVolume"):Vo(d,"soundVolume",o.volume??Er),muted:o.muted,pan:o.pan,loop:l?void 0:o.loop,interruption:o.interruption,children:p,runtime:d})),e},Bg=(e,{presentationState:t,previousPresentationState:n,resources:i={},variables:a,imageGallery:r,musicRoom:s,sceneReplay:o,runtime:l,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:d,canRollback:f,form:m,saveSlots:b=[],isLineCompleted:h,skipTransitionsAndAnimations:y,activePersistentAnimations:w})=>{let{elements:g,animations:E}=e;if(t.layout){let O=Yr(g);if(!O)return e;let T=i.layouts?.[t.layout.resourceId];if(!T)return e;let R={id:`layout-${t.layout.resourceId}`,type:"container",x:0,y:0,children:T.elements||[]};O.children.push(Fo({container:R,resources:i,templateData:ze({variables:a,imageGallery:r,musicRoom:s,sceneReplay:o,runtime:l,saveSlots:b,dialogueState:t.dialogue,isLineCompleted:h,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:d,canRollback:f,form:m,characters:i.characters||{},skipTransitionsAndAnimations:y}),isLineCompleted:h,skipMode:u,skipTransitionsAndAnimations:y}))}let k=n?.layout?.resourceId,P=t.layout?.resourceId,v=fr({animationsDef:t.layout?.animations,resources:i,previousResourceId:k,currentResourceId:P,previousTargetId:k?`layout-${k}`:void 0,currentTargetId:P?`layout-${P}`:void 0,animationPath:"layout.animations",idPrefix:"layout"});return Ke({animationInstances:v,isLineCompleted:h,skipTransitionsAndAnimations:y,activePersistentAnimations:w})&&E.push(...v),e},Yg=(e,{currentLineActions:t,previousPresentationState:n,resources:i={},isLineCompleted:a,skipTransitionsAndAnimations:r,activePersistentAnimations:s})=>{let{animations:o}=e,l=t?.screen?.animations;if(!l)return e;let c=n!=null,u=fr({animationsDef:l,resources:i,previousResourceId:c?"story":void 0,currentResourceId:"story",previousTargetId:c?"story":void 0,currentTargetId:"story",animationPath:"screen.animations",idPrefix:"screen"});return Ke({animationInstances:u,isLineCompleted:a,skipTransitionsAndAnimations:r,activePersistentAnimations:s})&&o.push(...u),e},zg=(e,{presentationState:t})=>{let n=Yr(e.elements);return!n||!t?.screen||Object.assign(n,Hc(t.screen)),e},Xg=(e,{presentationState:t,resources:n={},variables:i,imageGallery:a,musicRoom:r,sceneReplay:s,runtime:o,autoMode:l,skipMode:c,isChoiceVisible:u,isFormVisible:p,canRollback:d,form:f,overlayStack:m=[],dialogueHistory:b=[],saveSlots:h=[],screen:y,isLineCompleted:w,skipTransitionsAndAnimations:g})=>{let{elements:E}=e;return m&&m.length>0&&m.forEach((k,P)=>{let v=n.layouts?.[k.resourceId];if(!v){console.warn(`Overlay layout not found: ${k.resourceId}`);return}let O={id:`overlayStack-${P}`,type:"container",x:0,y:0,children:[Jc({id:`overlayStack-${P}-blocker`,screen:y}),...v.elements||[]]},T=Qc(b,n.characters,i),R=ze({variables:i,imageGallery:a,musicRoom:r,sceneReplay:s,runtime:o,saveSlots:h,dialogueState:t?.dialogue,isLineCompleted:w,autoMode:l,skipMode:c,isChoiceVisible:u,isFormVisible:p,canRollback:d,form:f,historyDialogue:T,characters:n.characters||{},skipTransitionsAndAnimations:g}),D=ur(O,R),[B,..._]=D.children||[],X=pr(xr({...D,children:_},{isLineCompleted:w,skipMode:c,skipTransitionsAndAnimations:g}),n);E.push({...X,children:B?[B,...X.children||[]]:X.children})}),e},Gg=(e,{presentationState:t,resources:n={},variables:i,imageGallery:a,musicRoom:r,sceneReplay:s,runtime:o,saveSlots:l=[],autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:d,canRollback:f,form:m,confirmDialog:b,dialogueHistory:h=[],screen:y,isLineCompleted:w,skipTransitionsAndAnimations:g})=>{let{elements:E}=e;if(!b?.resourceId)return e;let k=n.layouts?.[b.resourceId];if(!k)return console.warn(`ConfirmDialog layout not found: ${b.resourceId}`),e;let P={id:"confirmDialog",type:"container",x:0,y:0,children:[Jc({id:"confirmDialog-blocker",screen:y}),...k.elements||[]]},v=Qc(h,n.characters,i),O=ur(P,ze({variables:i,imageGallery:a,musicRoom:r,sceneReplay:s,runtime:o,saveSlots:l,dialogueState:t?.dialogue,isLineCompleted:w,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:d,canRollback:f,form:m,confirmDialog:b,historyDialogue:v,characters:n.characters||{},skipTransitionsAndAnimations:g})),[T,...R]=O.children||[],D=pr(xr({...O,children:R},{isLineCompleted:w,skipMode:u,skipTransitionsAndAnimations:g}),n);return E.push({...D,children:T?[T,...D.children||[]]:D.children}),e},Wt=e=>(t,n)=>Cg(t,{...n,visualLayer:e}),Hg=Wt(cr.BEHIND_BACKGROUND),Kg=Wt(cr.BEHIND_CHARACTER),Wg=Wt(cr.BEHIND_DIALOGUE),Jg=Wt(cr.BEHIND_CHOICE),Qg=Wt(cr.FOREGROUND),eu=e=>Fn(Sg,[Tg,Hg,Og,Kg,Rg,Wg,jg,Jg,Ng,Dg,Bg,Qg,zg,Yg,Lg,qg,Vg,Ug,Mg,Xg,Gg])(e);function ru(e,t=""){let n=[],i=e.length,a=0,r=0,s=-1,o=()=>{let l=0,c=0,u;do u=parseInt(e[a++],36),l+=(u&15)<<c,c+=4;while(u&16);return l};for(;a<i;){let l=s+1+o();s=l+o(),n.push([l,s,t?parseInt(t[r++],36):0])}return n}function tu(e,t,n){let i=0,a=t.length-1;for(;i<=a;){let r=i+a>>>1,s=n[r];if(e<t[r])a=r-1;else if(e>s>>>5)i=r+1;else return s&31}return 0}var nu="090001000h1v5g2903000hl2v6jh16ng1s210111110o35aa10u2k1g10l6600152113h2010u1q1r5aq3890o13181214r22k3158q2n1000v100h1k20000001207030001160721k171001h1j11610332010010321210090411021c1c02100o301201412230u1130b100h1j116111420120411001100k11l10051001h1j11611142011000321210072411021d0g10r3000000132120090o200200g1j11f2012031213711271t1001o301001000001121371b1f0c101h1l2011001031212000080a1t1001m40400102101600i11t301006c7i601008b6p41r10101041h3d0004115a1j290p3q223000511010100g1501010302003172030c0010016000e0i6v50n40n5tl12ir33s12t11u11cj30100060700010a90t220000l71i20m7203010241000502rd101004k300000006101027050920g3t22bk1300616g209030207u18c1000t10003010501b2o20000102000004g37070101o921c000640602001mcv3rg20000001o16d0c0m1fg6g2h30m10q55f1vm11c0ma0p1a42nc0ne1a090q3314902021204020112030318250105bb1201110i1021i15101131502141b15120511011k1155132040202510201010603060a1f02040104210b1g3290e0e0kn11vs12j11j3040pp12t80g6v1vmo7319g21g51gh103040n11010040j51i3f01q1h1d0m27p1a0000cs13200523j200010301010100v140018a4q2501010101c08000i1f12601011g3012215110u1a0001015000pcq181000100011000iji5fvc0u91g5bhg20ie0l94lo6002115303121s12240la1tj23h44tj11t45m4ah33q700000l3ep2021a200t220301012040a0i320j2040007f00100r20c100g3208000011531000s520201036020t900207l1101n311000000321210090a12634b910201l22001051020120011020000e1i520701020000n10h5001050000010000010001re0010323010001r11i520701000001q6000000107l600000230004gg12080001lc62027111n1000411230000000000t820321030030r10090n205001380800501020n2050c0001mc00002000000nc006150000i5l1100600010001q753011160000i441111000000rl11019100000c1h201043102n10ltk1f006eoss2b0202gs94r36si2033ku101m373h50b1rqs4113sli1t22m1uh2435070726u13k92rr7m34h380e0m141egl561g1261114k60ga6nn10t33sv13uf1jf0207150qt16t66pr60n23k6bf1f0e1l29g71c1e029j1n30p11ea0k1028139m16rb2v621122i52213040tf1u3b51n17127c0232041d120819052c28220104060306l5g3l4572g130152cqdl2c3o37a5o27u11c32d9m2cu2191obo57eh9gg1tv3",su="262122424333333393233393339333333333393393bf3b3b3b3b3f3f3bffff33b3bb33ff3f33b3b3333333bffff3b33bb33f33bffff33b3bb33ff3f33b3bbb333b3ff33b333f33b3b3b3b3333b3bf33b3bb39333b33b33b3b3b333b333333b3b33333f3b33b3ffb3f3fff3f3b33f35dc33333f3b3b3b33323333b3bb3b33b3fb3b3333b33333bff3b3f33bfb3b3ff3b3b3b3b3b333b333b3323e22442344444444444444444444444444444444444444444444444444444444444444444444444444444443333333333b3b3bb33333b353bff3b3b3b3f3ff3b3b333bfff3f33333fb3bb3fb3b3bb33232333f333fff333333333b3b3333bb3b39393f3b3fbf33bb3b393b3b3b3333b33b33b3bbb33b33ffff3b3333bb3933b3b3b333b3b3b3b3b33b3b3b33b3b3b33b3b33b33b3b3b3fffff3bb39b9b3b33b3bf3f3b33f3b3f93b33b3b3bb33b33b3b3b3333393b3b3b33b39bffb3b332333b333dd3b3333233332333333333333333333333333333444444444444a4444444444444344444444444444444444444444444444444444444444",iu="0001000000010010000000100000000000000000000000000001000000010014000100000001001000010101100101100000000000000000000100000001111000010000000110101001110111111111000100000021001000010000000100100001000000011010000100000001111000013000000100140001000000010010";var ou=65535,Bo=40960,us=126976,cu=new Uint8Array(12288),uu=new Uint8Array(3072),pu=new Uint8Array(2816),fu,du;{let e=(a,r,s,o,l)=>{let c=r+a.length-1;for(let u=s<r?r:s,p=o>c?c:o;u<=p;u++)a[u-r]=l},t=new Uint32Array(320),n=new Uint32Array(320),i=0;for(let[a,r,s]of ru(nu,su))e(cu,0,a,r,s),e(uu,Bo,a,r,s),e(pu,us,a,r,s),r>=65040&&!(a>=us&&r<=129791)&&(t[i]=a,n[i++]=r<<5|s);fu=t.slice(0,i),du=n.slice(0,i)}function au(e){return e<12288?cu[e]:e<Bo?e<12336?e>=12330?3:0:e<12443?e===12336||e===12349?4:e>=12441?3:0:e===12951||e===12953?4:0:e<44032?uu[e-Bo]:e<55204?(e-44032)%28?8:7:e<57344?e<=55238?e>=55216?13:0:e>=55243&&e<=55291?12:0:e<65024?e===64286?3:0:e<65040?3:e>=us&&e<129792?pu[e-us]:e>=917504?e>921599?0:e>=917536&&e<917632||e>=917760&&e<918e3?3:2:tu(e,fu,du)}var mu=Uint8Array.from(iu,Number);function Zg(e){return e===2381||e===2509||e===2637||e===2765||e===2893||e===3149||e===3405||e===4153||e===6098||e===6752||e===6980||e===7083||e===43456||e===43766||e===68159||e===69939||e===70608||e===71998||e===72263||e===72345||e===73538}function lu(e,t,n){switch(t){case 3:return e&24?n===8204?e&6:(e&24)===16||Zg(n)?e&6|16:e&6|8:e&6;case 4:return 2;case 10:return e&1^1;case 14:return(e&2)<<1|e&24;default:return 8}}function*yu(e){let t=e.length;if(t===0)return;let n=e.codePointAt(0),i=n>ou?2:1,a=au(n),r=50200>>a&1?lu(0,a,n):0,s=0,o=n,l=a;for(;i<t;){n=e.codePointAt(i);let c=n>ou?2:1,u=au(n),p=mu[a<<4|u],d;p===0?d=!0:p===1?d=!1:p===2?d=!(r&1):p===3?d=!(r&4):d=(r&24)!==16,r=50200>>u&1&&(r!==0||u!==3)?lu(r,u,n):0,d&&(yield{segment:e.slice(s,i),index:s,input:e,_hd:o,_catBegin:l===15?0:l,_catEnd:a===15?0:a},s=i,o=n,l=u),i+=c,a=u}yield{segment:e.slice(s),index:s,input:e,_hd:o,_catBegin:l===15?0:l,_catEnd:a===15?0:a}}function*hu(e){for(let t of yu(e))yield t.segment}{let e=yu("_");mu._keep=[e,e.next()]}var gu=1e3,vu=50,eb=0,bu=100,wu=50,rb=60,tb=3,nb=.5,sb=2e4,ib=/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]/u,ob=/^\s+$/u,Iu,ab=e=>{let t=`${e??""}`.normalize("NFC"),n=globalThis.Intl?.Segmenter;return typeof n!="function"?Array.from(hu(t)):(Iu??=new n(void 0,{granularity:"grapheme"}),Array.from(Iu.segment(t),({segment:i})=>i))},lb=e=>ab(e).reduce((t,n)=>ob.test(n)?t+nb:ib.test(n)?t+tb:t+1,0),cb=e=>2**(((Number.isFinite(e)?Math.min(bu,Math.max(eb,e)):vu)-wu)/(bu-wu)),Yo=({text:e="",baseDelay:t=gu,speed:n=vu}={})=>{let i=Number.isFinite(t)?Math.max(0,t):gu,a=cb(n),r=lb(e)*rb/a,s=Math.max(i,sb);return Math.min(i+r,s)};var ps={manual:{enabled:!0,requireLineCompleted:!1},auto:{enabled:!1},applyMode:"persistent"},Su=1,dr=1,yt="choice",Or="form",en=()=>({manual:{...ps.manual},auto:{...ps.auto},applyMode:ps.applyMode}),ta=()=>({groupId:null,variantId:null,pageIndex:0}),ub="music-room:player",pb=new Set(["asset-unavailable","decode-failed","invalid-segment","invalid-position","playback-failed"]),ms=({bgmPlayback:e={commandId:0,operation:"resume"}}={})=>({trackId:null,pageIndex:0,status:"stopped",readiness:"idle",positionMs:0,durationMs:null,playback:null,seekFallback:null,bgmPlayback:e}),na=new Set,fb=new Set(["groupId","variantId"]),db=new Set(["pageIndex"]),ht=new Set,mb=new Set(["trackId"]),yb=new Set(["positionMs"]),hb=new Set(["pageIndex"]),sa=new Set,gb=new Set(["sceneId"]),bb=new Set(["pageIndex"]),ia=()=>({pageIndex:0}),oa=e=>{if((e.global.nextLineConfig?.applyMode??"persistent")!=="singleLine")return;let n=e.global.nextLineConfig?.auto?.enabled===!0;e.global.nextLineConfig={...en()},n&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})},Xo=e=>{e.global.nextLineConfig.auto?.enabled&&(e.global.nextLineConfig.auto.enabled=!1,e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}))},V=e=>{let t=Ae(e)?br(e):e;return structuredClone(t)},q=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),ys=e=>{let t=e.global.audioCommandId;if(!Number.isSafeInteger(t)||t<0)throw new Error("Internal audio command counter is invalid");if(t===Number.MAX_SAFE_INTEGER)throw new Error("Audio command counter is exhausted");return e.global.audioCommandId=t+1,e.global.audioCommandId},Ou=e=>{let t=e.global.sceneReplayEntryId;if(!Number.isSafeInteger(t)||t<0)throw new Error("Internal scene replay entry counter is invalid");if(t===Number.MAX_SAFE_INTEGER)throw new Error("Scene replay entry counter is exhausted");return e.global.sceneReplayEntryId=t+1,e.global.sceneReplayEntryId},rn=(e,t,n)=>({commandId:ys(e),operation:t,...n===void 0?{}:{positionMs:n}}),aa=e=>{if(!Object.prototype.hasOwnProperty.call(e.global??{},"musicRoomPlayer"))return;let t=e.global.musicRoomPlayer,n=t.bgmPlayback;t.trackId!==null&&(n={commandId:ys(e),operation:"resume"}),e.global.musicRoomPlayer=ms({bgmPlayback:n})},Ru=(e,t)=>{if(typeof t!="string"||t.length===0)throw new Error("Achievement action requires a non-empty resourceId");let n=e.projectData.resources?.achievements?.[t];if(!n)throw new Error(`Achievement resource "${t}" not found`);if(n.type!=="boolean"&&n.type!=="number")throw new Error(`Achievement resource "${t}" has invalid type "${n.type}"`);return n},$u=(e,t)=>{if(e==null||e==="")throw new Error(`${t} requires slotId`);let n=typeof e=="string"&&e.length>0,i=typeof e=="number"&&Number.isFinite(e);if(!n&&!i)throw new Error(`${t} requires a non-empty string or finite number slotId`)},Gr=e=>String(e),Cu=()=>({sections:[],resources:[]}),_u=()=>({sceneIds:[]}),wb=e=>q(e)?(Array.isArray(e.sections)||(e.sections=[]),Array.isArray(e.resources)||(e.resources=[]),e):Cu(),Ib=e=>q(e)?(Array.isArray(e.sceneIds)||(e.sceneIds=[]),e):_u(),vb=e=>Array.isArray(e)?e.map(t=>t?.text??"").join(""):"",kb=({sectionId:e,lineId:t,content:n,dialogueState:i,characterName:a})=>({sectionId:e,lineId:t,content:n,text:vb(n),characterId:i.characterId,character:{...i.character||{},name:a},characterName:a}),ju=(e=0)=>({entries:[],currentLength:0,checkpointLengths:Array(e).fill(0)}),Ab=e=>q(e)&&typeof e.sectionId=="string"&&e.sectionId.length>0&&typeof e.lineId=="string"&&e.lineId.length>0,la=e=>{if(!q(e?.dialogueHistory))return null;let t=e.dialogueHistory;return!Array.isArray(t.entries)||!Number.isInteger(t.currentLength)||!Array.isArray(t.checkpointLengths)?null:t},Pb=e=>{if(!q(e?.dialogueHistory))return e.dialogueHistory=ju(e?.rollback?.timeline?.length??0),e.dialogueHistory;let t=e.dialogueHistory;return Array.isArray(t.entries)||(t.entries=[]),Number.isInteger(t.currentLength)||(t.currentLength=t.entries.length),Array.isArray(t.checkpointLengths)||(t.checkpointLengths=Array(e?.rollback?.timeline?.length??0).fill(0)),t.currentLength=Math.min(Math.max(t.currentLength,0),t.entries.length),t},ca=e=>{let t=la(e);return t?(t.currentLength<t.entries.length&&(t.entries=t.entries.slice(0,t.currentLength)),t):null},Eb=()=>({resourceId:void 0}),xb=e=>{if(!q(e))return e;let t={...e};return Object.prototype.hasOwnProperty.call(t,"requireComplete")&&!Object.prototype.hasOwnProperty.call(t,"requireLineCompleted")&&(t.requireLineCompleted=t.requireComplete),delete t.requireComplete,t},mr=(e,t)=>{let n=e?.story?.scenes??{};for(let[i,a]of Object.entries(n))if(a?.sections?.[t])return{sceneId:i,section:a.sections[t]};return{sceneId:void 0,section:void 0}},Nu=e=>{let t=e?.story?.scenes??{},n=new Map;for(let[i,a]of Object.entries(t)){let r=a?.sections??{};for(let s of Object.keys(r)){let o=n.get(s);if(o!==void 0)throw new Error(`Duplicate sectionId "${s}" found in scenes "${o}" and "${i}". Section IDs must be globally unique.`);n.set(s,i)}}},Du=e=>e,Tu=e=>{if(!Number.isInteger(e)||e<1)throw new Error("Malformed save slot formatVersion.");if(e!==Su)throw new Error(`Unsupported save slot formatVersion "${e}".`);return e},Sb=(e,t={})=>{let n;try{n=Tu(t.formatVersion)}catch(a){throw new Error(`Hydrated save slot "${e}" failed validation: ${a.message}`)}let i={...t,formatVersion:n,slotId:Du(t.slotId??t.slotKey??e),savedAt:typeof t.savedAt=="number"?t.savedAt:t.date};return delete i.slotKey,delete i.date,i},Ob=(e={})=>Object.fromEntries(Object.entries(e).map(([t,n])=>[t,Sb(t,n)])),Rb=(e,t)=>{if(!q(e)||!Array.isArray(e.operations))return null;let n=e.operations.filter(i=>{if(!q(i))return!1;let{variableId:a,op:r,value:s,roundTo:o}=i,l=t?.resources?.variables?.[a];if(!l||Re(l)||l.readonly===!0||l.scope!=="context")return!1;try{return Vt(l.type,r,a),Yn(l.type,r,s,a,{roundTo:o}),r!=="set"||so(l,s)}catch{return!1}});return n.length>0?{...e,operations:n}:null},Lu=(e,t)=>{if(!Array.isArray(e))return;let n=e.flatMap(i=>{if(!q(i)||!dI(i.type))return[];if(i.type!=="updateVariable"||t===void 0)return[i];let a=Rb(i.payload,t);return a?[{...i,payload:a}]:[]});return n.length>0?n:void 0},$b=(e,t,n)=>{let{section:i}=mr(e,t?.sectionId),r=i?.lines?.find(({id:o})=>o===t?.lineId)?.actions,s=n.split(".");for(let o of s){if(Array.isArray(r)){if(!/^(0|[1-9]\d*)$/.test(o))return;let l=Number(o);if(!Object.prototype.hasOwnProperty.call(r,l))return;r=r[l];continue}if(!q(r)||!Object.prototype.hasOwnProperty.call(r,o))return;r=r[o]}return s.at(-1)==="random"&&q(r?.distribution)?r:void 0},Mu=e=>{if(e?.type!=="integer"||!Number.isSafeInteger(e.min)||!Number.isSafeInteger(e.max))return!1;let t=e.max-e.min+1;return Number.isSafeInteger(t)&&t>=1&&t<=4294967296},qu=(e,t,n)=>e.filter(({path:i,type:a,result:r})=>{let s=$b(n,t,i);if(s?.distribution?.type!==a)return!1;if(a==="weighted")return q(s.distribution.outcomes?.[r.outcomeIndex]?.actions);if(a==="integer"){let o=n?.resources?.variables?.[s.variableId];return typeof s.variableId=="string"&&o?.type==="number"&&o.scope==="context"&&o.readonly!==!0&&!Re(o)&&Mu(s.distribution)&&r.value>=s.distribution.min&&r.value<=s.distribution.max}return!1}),ua=(e,t)=>{if(!Object.prototype.hasOwnProperty.call(e??{},"randomOutcomeVersion"))return;if(e.randomOutcomeVersion!==dr)throw new Error(`unsupported rollback random outcome version: ${e.randomOutcomeVersion}`);if(!Array.isArray(e.randomOutcomes))throw new Error("versioned rollback random outcomes must be an array");let n=new Set,i=e.randomOutcomes.map((a,r)=>{let s=`${a?.path}\0${a?.ordinal}`;if(!q(a)||typeof a.path!="string"||a.path.length===0||!Number.isSafeInteger(a.ordinal)||a.ordinal<0||n.has(s))throw new Error(`invalid rollback random outcome at index ${r}`);return n.add(s),{path:a.path,ordinal:a.ordinal,type:a.type,result:Hn(V(a.result),a.type)}});return t===void 0?i:qu(i,e,t)},Cb=(e,t)=>{!q(e)||!Array.isArray(e.timeline)||e.timeline.forEach(n=>{if(!q(n))return;typeof n.returnable!="boolean"&&delete n.returnable;let i=Lu(n.executedActions,t);i?n.executedActions=i:delete n.executedActions;let a=ua(n,t);a?(n.randomOutcomeVersion=dr,n.randomOutcomes=a):(delete n.randomOutcomeVersion,delete n.randomOutcomes)})},_b=(e,t)=>{let n=e??{};return Object.values(n).forEach(i=>{let a=i?.state?.contexts;Array.isArray(a)&&a.forEach(r=>{let s=r?.rollback?.timeline;Array.isArray(s)&&s.forEach(o=>{if(!q(o))return;let l=ua(o,t);l?(o.randomOutcomeVersion=dr,JSON.stringify(o.randomOutcomes)!==JSON.stringify(l)&&(o.randomOutcomes=l)):(delete o.randomOutcomeVersion,delete o.randomOutcomes)})})}),n},ku=(e,t,n,i="viewedRegistry")=>{let a=t==="sections"?"sectionId":"resourceId";if(typeof e=="string"||typeof e=="number")return{[a]:String(e)};if(!q(e))throw new Error(`Malformed ${i}.${t}[${n}] entry.`);if(typeof e[a]!="string"||e[a].length===0)throw new Error(`Malformed ${i}.${t}[${n}] entry: missing ${a}.`);if(t==="sections"){let r={sectionId:e.sectionId};if(e.lastLineId!==void 0&&e.lastLineId!==null&&typeof e.lastLineId!="string")throw new Error(`Malformed ${i}.sections[${n}] entry: invalid lastLineId.`);return typeof e.lastLineId=="string"&&e.lastLineId.length>0&&(r.lastLineId=e.lastLineId),r}return{resourceId:e.resourceId}},jb=(e,t="viewedRegistry")=>{if(e===void 0)return Cu();if(!q(e))throw new Error(`Malformed ${t}.`);if(e.sections!==void 0&&!Array.isArray(e.sections))throw new Error(`Malformed ${t}.sections.`);if(e.resources!==void 0&&!Array.isArray(e.resources))throw new Error(`Malformed ${t}.resources.`);let n=e.sections??[],i=e.resources??[];return{sections:Object.values(Object.fromEntries(n.map((a,r)=>{let s=ku(a,"sections",r,t);return[s.sectionId,s]}))),resources:Object.values(Object.fromEntries(i.map((a,r)=>{let s=ku(a,"resources",r,t);return[s.resourceId,s]})))}},Nb=(e,t="accountReplayRegistry")=>{if(e===void 0)return _u();if(!q(e))throw new Error(`Malformed ${t}.`);if(e.sceneIds!==void 0&&!Array.isArray(e.sceneIds))throw new Error(`Malformed ${t}.sceneIds.`);let n=e.sceneIds??[];return{sceneIds:[...new Set(n.map((i,a)=>{if(typeof i!="string"||i.length===0)throw new Error(`Malformed ${t}.sceneIds[${a}] entry.`);return i}))]}},Jt=(e,t,n)=>{if(!q(e))throw new Error(`Malformed save slot ${n}.`);let{sectionId:i,lineId:a}=e;if(typeof i!="string"||i.length===0)throw new Error(`Malformed save slot ${n}: missing sectionId.`);if(typeof a!="string"||a.length===0)throw new Error(`Malformed save slot ${n}: missing lineId.`);let{sceneId:r,section:s}=mr(t,i);if(!s)throw new Error(`Malformed save slot ${n}: section "${i}" does not exist in projectData.`);if(!s.lines?.some(l=>l.id===a))throw new Error(`Malformed save slot ${n}: line "${a}" does not exist in section "${i}".`);return{sceneId:r,sectionId:i,lineId:a}},Vu=e=>{let t=e.story.initialSceneId,n=e.story.scenes[t],i=n.initialSectionId,a=n.sections[i];return Jt({sceneId:t,sectionId:i,lineId:a.initialLineId??a.lines[0].id},e,"projectData initial pointer")},Db=e=>{try{return Vu(e),!0}catch{return!1}},Tb=(e,t,n)=>{let i=e?.pointers?.read;if(!q(i)||typeof i.sectionId!="string"||i.sectionId.length===0||typeof i.lineId!="string"||i.lineId.length===0)return Jt(i,t,n);try{return Jt(i,t,n)}catch{let a=Array.isArray(e?.rollback?.timeline)?e.rollback.timeline:[],r=Number.isInteger(e?.rollback?.currentIndex)?Math.min(e.rollback.currentIndex,a.length-1):a.length-1;for(let s=r;s>=0;s-=1)try{return Jt(a[s],t,`${n} compatibility checkpoint`)}catch{}return Vu(t)}};var Fu=(e,t)=>{let{section:n}=mr(e,t?.sectionId);return n?.lines?.find(i=>i.id===t?.lineId)},Lb=(e,t,n)=>{if(!q(e))throw new Error(`Malformed save slot ${n}.`);if(!Array.isArray(e.entries))throw new Error(`Malformed save slot ${n}.entries.`);if(!Number.isInteger(e.currentLength))throw new Error(`Malformed save slot ${n}.currentLength.`);if(!Array.isArray(e.checkpointLengths))throw new Error(`Malformed save slot ${n}.checkpointLengths.`);let i=[],a=[0],r=!1;if(e.entries.forEach((o,l)=>{if(!q(o))throw new Error(`Malformed save slot ${n}.entries[${l}].`);if(typeof o.sectionId!="string"||o.sectionId.length===0)throw new Error(`Malformed save slot ${n}.entries[${l}]: missing sectionId.`);if(typeof o.lineId!="string"||o.lineId.length===0)throw new Error(`Malformed save slot ${n}.entries[${l}]: missing lineId.`);if(o.appendToPrevious!==void 0&&typeof o.appendToPrevious!="boolean")throw new Error(`Malformed save slot ${n}.entries[${l}].appendToPrevious.`);let{section:c}=mr(t,o.sectionId);if(!c?.lines?.some(p=>p.id===o.lineId)){r=!1,a.push(i.length);return}i.push({sectionId:o.sectionId,lineId:o.lineId,...o.appendToPrevious===!0&&r&&i.length>0?{appendToPrevious:!0}:{}}),r=!0,a.push(i.length)}),e.currentLength<0||e.currentLength>e.entries.length)throw new Error(`Malformed save slot ${n}.currentLength: must reference the retained entries.`);let s=e.checkpointLengths.map((o,l)=>{if(!Number.isInteger(o)||o<0||o>e.entries.length)throw new Error(`Malformed save slot ${n}.checkpointLengths[${l}].`);return a[o]});return{entries:i,currentLength:a[e.currentLength],checkpointLengths:s}},Mb=(e,t)=>q(Fu(e,t)?.actions?.dialogue),Uu=(e,t,n)=>{if(!t||t.sectionId!==n.sectionId)return!1;let{section:i}=mr(e,n.sectionId),a=i?.lines?.findIndex(s=>s.id===n.lineId);return typeof a!="number"||a<=0?!1:i.lines.slice(0,a).findLast(s=>q(s.actions?.dialogue))?.id===t.lineId},qb=(e,t)=>{let n=ju();return e.timeline.forEach(i=>{if(i.returnable!==!1&&Mb(t,i)){let a=Fu(t,i),r=n.entries.at(-1),s=a.actions.dialogue.append===!0&&Uu(t,r,i);n.entries.push({sectionId:i.sectionId,lineId:i.lineId,...s?{appendToPrevious:!0}:{}})}n.checkpointLengths.push(n.entries.length)}),n.currentLength=n.checkpointLengths[e.currentIndex]??0,n.entries.length>0?n:null},Vb=(e,t,n,i)=>{if(n.length!==t.timeline.length)throw new Error("Malformed save slot dialogueHistory.checkpointLengths: rollback checkpoint mapping is incomplete.");if(e.checkpointLengths.length!==i)throw new Error("Malformed save slot dialogueHistory.checkpointLengths: expected one length per rollback checkpoint.");e.checkpointLengths=n.map(r=>r===null?e.currentLength:e.checkpointLengths[r]);let a=0;return e.checkpointLengths.forEach((r,s)=>{if(r<a)throw new Error(`Malformed save slot dialogueHistory.checkpointLengths[${s}]: lengths must be chronological.`);a=r}),e},Fb=(e,t,n)=>{if(!q(e)||!Array.isArray(e.timeline))return{rollback:Zt({pointer:t,replayStartIndex:1}),sourceCheckpointIndexes:[null],sourceTimelineLength:0};let i=[],a=e.timeline.flatMap((c,u)=>{if(!q(c))return[];let p=ua(c);try{let d=Jt(c,n,`rollback.timeline[${u}]`),f=p?qu(p,d,n):void 0,m=ds({sectionId:d.sectionId,lineId:d.lineId,rollbackPolicy:c.rollbackPolicy,returnable:c.returnable,...f?{randomOutcomeVersion:dr,randomOutcomes:f}:{}}),b=Lu(V(c.executedActions),n);return b&&(m.executedActions=b),i.push(u),[m]}catch{return[]}});if(a.length===0)return{rollback:Zt({pointer:t,replayStartIndex:1}),sourceCheckpointIndexes:[null],sourceTimelineLength:e.timeline.length};let r=typeof e.currentIndex=="number"?Math.trunc(e.currentIndex):e.timeline.length-1,s=i.indexOf(r);s<0&&(s=a.length-1);let o=a[s];if(o?.sectionId!==t.sectionId||o?.lineId!==t.lineId){let c=a.findLastIndex(u=>u.sectionId===t.sectionId&&u.lineId===t.lineId);c>=0?s=c:(a.push(ds({sectionId:t.sectionId,lineId:t.lineId})),i.push(null),s=a.length-1)}let l=typeof e.replayStartIndex=="number"?Math.min(Math.max(Math.trunc(e.replayStartIndex),0),s):0;return{rollback:{currentIndex:s,isRestoring:!1,replayStartIndex:l,timeline:a},sourceCheckpointIndexes:i,sourceTimelineLength:e.timeline.length}},Bu=(e,t,n)=>{if(!q(e))throw new Error(`Malformed save slot contexts[${n}] entry.`);let i=fa(t),a=Tb(e,t,`contexts[${n}].pointers.read`);if(e.variables!==void 0&&!q(e.variables))throw new Error(`Malformed save slot contexts[${n}].variables entry.`);if(e.runtime!==void 0&&!q(e.runtime))throw new Error(`Malformed save slot contexts[${n}].runtime entry.`);let r=e.variables?Mt(V(e.variables),t.resources?.variables??{},{allowedScopes:["context"]}):{},s=ew({loadedContextRuntime:q(e.runtime)?V(e.runtime):{}}),{rollback:o,sourceCheckpointIndexes:l,sourceTimelineLength:c}=Fb(e.rollback,a,t),u=e.dialogueHistory===void 0?qb(o,t):Vb(Lb(e.dialogueHistory,t,`contexts[${n}].dialogueHistory`),o,l,c),p={currentPointerMode:"read",pointers:{read:a},configuration:q(e.configuration)?V(e.configuration):{},views:Array.isArray(e.views)?V(e.views):[],bgm:q(e.bgm)?V(e.bgm):{resourceId:void 0},variables:{...i,...r},...u?{dialogueHistory:u}:{},rollback:o};return s&&(p.runtime=s),p},Ub=(e,t)=>{if(!q(e))throw new Error("Malformed save slot state.");if(!Array.isArray(e.contexts)||e.contexts.length===0)throw new Error("Malformed save slot state: contexts must be a non-empty array.");return{contexts:e.contexts.map((n,i)=>Bu(n,t,i))}},Bb=(e,t)=>{if(!q(e))throw new Error("Malformed save slot.");let n=Tu(e.formatVersion);return{...e,formatVersion:n,state:Ub(e.state,t)}},Au=(e,t,{required:n=!1}={})=>{if(e===void 0){if(n)throw new Error(`showConfirmDialog requires ${t}`);return{hideConfirmDialog:{}}}if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`showConfirmDialog ${t} must be an action object`);let i=V(e),a=i.hideConfirmDialog??{};return delete i.hideConfirmDialog,{hideConfirmDialog:a,...i}},Yb=(e={})=>{if(!e?.resourceId)throw new Error("showConfirmDialog requires resourceId");return{resourceId:e.resourceId,confirmActions:Au(e.confirmActions,"confirmActions",{required:!0}),cancelActions:Au(e.cancelActions,"cancelActions")}},gt=e=>{Object.prototype.hasOwnProperty.call(e.global,"confirmDialog")&&(e.global.confirmDialog=null)},zb=e=>(q(e.global.formDrafts)||(e.global.formDrafts={}),e.global.formDrafts),bt=e=>{Object.prototype.hasOwnProperty.call(e.global,"formDrafts")&&(e.global.formDrafts={})},Yu=e=>{if(!(!q(e)||!e.animations))return{animations:V(e.animations)}},Xb=(e,t)=>{let n=Yu(t);if(n){e.global.pendingScreenTransition=n;return}delete e.global.pendingScreenTransition},Gb=e=>{let t=e?.id??e?.resourceId;return typeof t=="string"&&t.length>0?t:void 0},Hb=(e,t)=>{let n=e?.sectionId,i=e?.lineId;if(!(!n||!i||!t))return`${n}:${i}:${t}`},fs=e=>String(e??""),zu=(e,t)=>{let n=fs(t);return e?.trim===!0?n.trim():n},Kb=e=>q(e?.fields)?Object.fromEntries(Object.entries(e.fields).filter(([,t])=>q(t)).map(([t,n])=>[t,{id:t,...V(n)}])):{},Wb=(e,t)=>{if(!t||!q(e.global.formDrafts))return;let n=e.global.formDrafts[t];return q(n)?n:void 0},Xu=(e,t)=>{let n=zb(e);q(n[t])||(n[t]={values:{},touched:{},errors:{},submitted:!1});let i=n[t];return q(i.values)||(i.values={}),q(i.touched)||(i.touched={}),q(i.errors)||(i.errors={}),typeof i.submitted!="boolean"&&(i.submitted=!1),i},pa=(e,t)=>{let n=zu(e,t);return e?.required===!0&&n.length===0?"required":null},Jb=({state:e,pointer:t})=>{if(!t?.sectionId||!t?.lineId)return{};let i=Ee({state:e},{sectionId:t.sectionId})?.lines||[],a=i.findIndex(r=>r.id===t.lineId);return a<0?{}:Ur(i.slice(0,a+1).map(r=>r.actions||{}))},Qb=({state:e,form:t,pointer:n})=>{if(!t?.resourceId)return null;let i=Gb(t),a=Hb(n,i);if(!i||!a)return null;let r=Wb(e,a),s=Kb(t),o=Ea({state:e}),l={},c=[],u={},p=!0;return Object.entries(s).forEach(([d,f])=>{let m=fs(o?.[f.variableId]),b=Object.prototype.hasOwnProperty.call(r?.values??{},d)?fs(r.values[d]):m,h=r?.touched?.[d]===!0,y=pa(f,b),w=r?.submitted||h?y:null,g=typeof f.maxLength=="number"?Math.max(0,Math.round(f.maxLength)):void 0,E={id:d,variableId:f.variableId,value:b,initialValue:m,valid:!y,error:w,touched:h,required:f.required===!0,trim:f.trim===!0,placeholder:f.placeholder===void 0?"":String(f.placeholder),multiline:f.multiline===!0,...g!==void 0?{maxLength:g}:{}};y&&(p=!1),l[d]=E,c.push(E),u[d]=b}),{id:i,key:a,resourceId:t.resourceId,animations:t.animations,valid:p,submitted:r?.submitted===!0,fields:l,fieldList:c,values:u,submitActions:{submitForm:{formKey:a,actions:V(t.submitActions??{})}},cancelActions:{cancelForm:{formKey:a,actions:V(t.cancelActions??{})}}}},mt="line",Sr="interaction",ds=({sectionId:e,lineId:t,rollbackPolicy:n,returnable:i,randomOutcomeVersion:a,randomOutcomes:r})=>({sectionId:e,lineId:t,rollbackPolicy:n??"free",...typeof i=="boolean"?{returnable:i}:{},...a===dr?{randomOutcomeVersion:dr,randomOutcomes:V(r??[])}:{}}),fa=e=>{let t=Ae(e)?br(e):e,{contextVariableDefaultValues:n}=Bn(t??{});return V(n)},Gu=()=>({...V(zt)}),Hu=({loadedRuntime:e,runtimeIds:t,defaults:n={},path:i})=>{if(e===void 0)return{runtimeState:V(n),hasLoadedValues:!1};if(!q(e))throw new Error(`Malformed ${i}.`);let a=V(n),r=!1;return t.forEach(s=>{e[s]!==void 0&&(a[s]=Zn(s,V(e[s])),r=!0)}),{runtimeState:a,hasLoadedValues:r}},Zb=({projectData:e,loadedGlobalRuntime:t={}})=>Hu({loadedRuntime:t,runtimeIds:po,defaults:mo(e),path:"global.runtime"}).runtimeState,ew=({loadedContextRuntime:e={}})=>{let{runtimeState:t,hasLoadedValues:n}=Hu({loadedRuntime:e,runtimeIds:fo,defaults:Gu(),path:"context.runtime"});return n?t:void 0},$r=e=>{let t=Array.isArray(e?.contexts)?e.contexts:[];return t[t.length-1]},he=e=>{let t=$r(e);return t?.kind==="sceneReplay"&&q(t.sceneReplay)?t:null},Ku=(e,t)=>{let n=t?.sceneReplay?.sceneId,i=e.projectData?.resources?.sceneReplay?.replays?.find(a=>a.sceneId===n);Object.entries(i?.initialVariables??{}).forEach(([a,r])=>{t.variables[a]=V(r)})},rw=e=>({autoMode:e.global.autoMode,skipMode:e.global.skipMode,dialogueUIHidden:e.global.dialogueUIHidden,nextLineConfig:V(e.global.nextLineConfig),overlayStack:V(e.global.overlayStack),confirmDialog:V(e.global.confirmDialog),formDrafts:V(e.global.formDrafts),isLineCompleted:e.global.isLineCompleted,...e.global.isDialogueHistoryShowing===void 0?{}:{isDialogueHistoryShowing:e.global.isDialogueHistoryShowing},...e.global.pendingScreenTransition===void 0?{}:{pendingScreenTransition:V(e.global.pendingScreenTransition)}}),tw=e=>{e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,delete e.global.pendingScreenTransition,e.global.nextLineConfig=en(),e.global.overlayStack=[],e.global.confirmDialog=null,e.global.formDrafts={},e.global.isLineCompleted=!0,e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"})},nw=(e,t)=>{e.global.autoMode=t.autoMode,e.global.skipMode=t.skipMode,e.global.dialogueUIHidden=t.dialogueUIHidden,e.global.nextLineConfig=V(t.nextLineConfig),e.global.overlayStack=V(t.overlayStack),e.global.confirmDialog=V(t.confirmDialog),e.global.formDrafts=V(t.formDrafts),e.global.isLineCompleted=t.isLineCompleted,t.isDialogueHistoryShowing===void 0?delete e.global.isDialogueHistoryShowing:e.global.isDialogueHistoryShowing=t.isDialogueHistoryShowing,t.pendingScreenTransition===void 0?delete e.global.pendingScreenTransition:e.global.pendingScreenTransition=V(t.pendingScreenTransition),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"});let n=xe({state:e});e.global.autoMode&&e.global.isLineCompleted&&!n&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:yr({state:e})}}),e.global.skipMode&&!n&&e.global.pendingEffects.push({name:"startSkipNextTimer"}),e.global.nextLineConfig.auto?.enabled&&!n&&(e.global.nextLineConfig.auto.trigger==="fromStart"||e.global.isLineCompleted)&&e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:e.global.nextLineConfig.auto.delay}})},sw=e=>e.runtime?(fo.forEach(t=>{e.runtime[t]===void 0&&(e.runtime[t]=V(zt[t]))}),e.runtime):(e.runtime=Gu(),e.runtime),iw=e=>vc(e.global),Wu=e=>{e.global.pendingEffects.push({name:"saveGlobalRuntime",payload:{globalRuntime:iw(e)}})},da=(e,t,n)=>{let i=Zn(t,n);if(t in zt){let a=$r(e);if(!a)return i;let r=sw(a);return r[t]=i,i}return e.global[t]=i,i},ma=({pointer:e,projectData:t,kind:n,sceneReplay:i})=>({...n===void 0?{}:{kind:n},...i===void 0?{}:{sceneReplay:V(i)},currentPointerMode:"read",pointers:{read:V(e)},configuration:{},views:[],bgm:Eb(),variables:fa(t),rollback:Zt({pointer:e})}),wt=e=>e?(e.currentPointerMode="read",q(e.pointers)||(e.pointers={}),Object.prototype.hasOwnProperty.call(e.pointers,"history")&&delete e.pointers.history,e.pointers):null,ow=(e,{queueRender:t=!0}={})=>{let n=e.contexts?.[e.contexts.length-1],i=n?.pointers?.read;if(!n||!i?.sectionId||!i?.lineId)return null;let a=ma({pointer:i,projectData:e.projectData});return e.contexts[e.contexts.length-1]=a,aw(e,{queueRender:t}),a},aw=(e,{queueRender:t=!0}={})=>{e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,gt(e),bt(e),e.global.nextLineConfig=en(),e.global.overlayStack=[],e.global.isLineCompleted=!0,aa(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"}),t&&e.global.pendingEffects.push({name:"render"})},Ju=e=>{!e||!("baselineVariables"in e)||delete e.baselineVariables},Zt=({pointer:e,replayStartIndex:t=0})=>{let n=e?.sectionId&&e?.lineId;return{currentIndex:n?0:-1,isRestoring:!1,replayStartIndex:t,timeline:n?[ds({sectionId:e.sectionId,lineId:e.lineId})]:[]}},Cr=(e,t={})=>{if(e?.rollback)return Ju(e.rollback),Array.isArray(e.rollback.timeline)||(e.rollback.timeline=[]),typeof e.rollback.currentIndex!="number"&&(e.rollback.currentIndex=e.rollback.timeline.length>0?e.rollback.timeline.length-1:-1),typeof e.rollback.isRestoring!="boolean"&&(e.rollback.isRestoring=!1),typeof e.rollback.replayStartIndex!="number"&&(e.rollback.replayStartIndex=0),e.rollback;let n=e?.pointers?.read;return e.rollback=Zt({pointer:n,replayStartIndex:t.compatibilityAnchor?1:0}),e.rollback},hs=(e,t)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return;let i=Cr(n);if(i.isRestoring)return;let a=ca(n);i.currentIndex<i.timeline.length-1&&(i.timeline=i.timeline.slice(0,i.currentIndex+1)),i.timeline.push(ds(t)),i.currentIndex=i.timeline.length-1,a&&(a.checkpointLengths=a.checkpointLengths.slice(0,i.currentIndex),a.checkpointLengths.push(a.currentLength))},lw=({state:e})=>{let n=e.contexts?.[e.contexts.length-1]?.rollback;return!Array.isArray(n?.timeline)||typeof n.currentIndex!="number"?null:{checkpointIndex:n.currentIndex,checkpoint:n.timeline[n.currentIndex]??null}},cw=({state:e},t={})=>{let{checkpointIndex:n,checkpointIdentity:i,sectionId:a,lineId:r}=t,o=e.contexts?.[e.contexts.length-1]?.rollback;if(!Number.isInteger(n)||!Array.isArray(o?.timeline)||typeof o.currentIndex!="number")return e;let l=o.timeline[n];return(Ae(l)?Rn(l):l)!==i||l?.sectionId!==a||l?.lineId!==r||(l.returnable=!1),e},uw=({state:e},t={})=>{let{slotId:n,saveSlotIdentity:i,checkpointIndex:a,sectionId:r,lineId:s}=t,o=Gr(n),l=e.global.saveSlots?.[o],c=Ae(l)?Rn(l):l;if(!l||c!==i)return e;let u=l.state?.contexts,p=Array.isArray(u)?u.at(-1):null,d=p?.rollback,f=d?.timeline?.[a];return!Number.isInteger(a)||d?.currentIndex!==a||p?.pointers?.read?.sectionId!==r||p?.pointers?.read?.lineId!==s||f?.sectionId!==r||f?.lineId!==s||(f.returnable=!1,e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}})),e},Qu=(e,t)=>{let n=e.contexts?.[e.contexts.length-1],i=n?.rollback;if(!i||i.isRestoring||!Array.isArray(i.timeline)||typeof i.currentIndex!="number")return null;let a=t?.at(-1),r=typeof a?.checkpointIndex=="number"?a.checkpointIndex:i.currentIndex;if(r<0||r>=i.timeline.length)return null;if(typeof a?.checkpointIndex!="number"&&r<i.timeline.length-1){i.timeline=i.timeline.slice(0,r+1);let s=ca(n);s&&(s.checkpointLengths=s.checkpointLengths.slice(0,r+1))}return i.timeline[r]??null},pw=({state:e,rollbackActionBatchStack:t,playbackOwnership:n},i={})=>{let a=i?.source===mt?mt:Sr,r=e.contexts?.[e.contexts.length-1],s=r?.rollback;if(!s||s.isRestoring||!Array.isArray(s.timeline)||typeof s.currentIndex!="number"||s.currentIndex<0||s.currentIndex>=s.timeline.length)return t.push({checkpointIndex:null,source:a}),e;if(s.currentIndex<s.timeline.length-1){s.timeline=s.timeline.slice(0,s.currentIndex+1);let u=ca(r);u&&(u.checkpointLengths=u.checkpointLengths.slice(0,s.currentIndex+1))}let o=r?.pointers?.read,l=n?.lineEntryId,c=a===mt&&(n?.rollbackCheckpointLineEntryId===void 0?s.timeline[s.currentIndex]?.sectionId===o?.sectionId&&s.timeline[s.currentIndex]?.lineId===o?.lineId:n.rollbackCheckpointLineEntryId===l);return t.push({checkpointIndex:s.currentIndex,source:a,...a===mt?{lineEntryId:l,sourcePointer:o?{sectionId:o.sectionId,lineId:o.lineId}:null,hasTrackedLineEntryCheckpoint:c}:{}}),e},fw=({state:e,rollbackActionBatchStack:t})=>(t.pop(),e),dw=({state:e,rollbackActionBatchStack:t,playbackOwnership:n})=>{let i=t?.at(-1);if(i?.source!==mt||i.hasTrackedLineEntryCheckpoint)return e;let a=i.sourcePointer;if(!a)return e;hs(e,{sectionId:a.sectionId,lineId:a.lineId,returnable:!1});let s=(e.contexts?.at(-1)).rollback;return i.checkpointIndex=s.currentIndex,i.hasTrackedLineEntryCheckpoint=!0,n?.lineEntryId===i.lineEntryId&&(n.rollbackCheckpointLineEntryId=i.lineEntryId),e},mw=({state:e,rollbackActionBatchStack:t},n)=>{if(t?.at(-1)?.source!==mt)return e;if(typeof n?.path!="string"||n.path.length===0)throw new Error("random rollback outcome requires a structural path");if(!Number.isSafeInteger(n.ordinal)||n.ordinal<0)throw new Error("random rollback outcome requires a non-negative ordinal");let a=Hn(n.result,n.type),r=Qu(e,t);if(!r)return e;if(r.randomOutcomeVersion!==dr&&(r.randomOutcomeVersion=dr,r.randomOutcomes=[]),r.randomOutcomes.some(({path:s,ordinal:o})=>s===n.path&&o===n.ordinal))throw new Error(`duplicate random outcome identity in rollback occurrence: ${n.path}#${n.ordinal}`);return r.randomOutcomes.push({path:n.path,ordinal:n.ordinal,type:n.type,result:a}),e},rr=(e,t,n,i)=>{let r=i?.at(-1)?.source??Sr;if(!mI(t,r))return;let s=Qu(e,i);s&&(Array.isArray(s.executedActions)||(s.executedActions=[]),s.executedActions.push({type:t,payload:V(n)}))},Go=(e,t)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return;let i=t?.operations??[];for(let{variableId:a,op:r,value:s,roundTo:o}of i){let l=e.projectData.resources?.variables?.[a],c=l?.scope,u=l?.type;if(Re(l))throw new Error(`Cannot update computed variable: ${a}`);if(l?.readonly===!0)throw new Error(`Cannot update readonly variable: ${a}`);qt(c,a),Vt(u,r,a),Yn(u,r,s,a,{roundTo:o}),c==="context"&&(n.variables[a]=zn(n.variables[a],r,s,{roundTo:o}))}},yw=(e,t)=>{Array.isArray(t?.executedActions)&&t.executedActions.forEach(({type:n,payload:i})=>{yI(e,n,i)})},hw=(e,t)=>{let{sectionId:n,lineId:i}=t,s=Ee({state:e},{sectionId:n})?.lines?.find(o=>o.id===i)?.actions;s&&Ra(e,s,{checkpoint:t,bindings:{},randomOutcomeOrdinals:new Map},[])},Zu=(e,t)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return e;let i=Cr(n),a=i.timeline[t];if(!a)return e;e.global.autoMode&&on({state:e}),e.global.skipMode&&Rr({state:e}),e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}),i.isRestoring=!0,i.currentIndex=t;try{n.variables=fa(e.projectData),n.kind==="sceneReplay"&&(Ku(e,n),n.sceneReplay.finishOnNextAdvance=!1,n.sceneReplay.exitOnLineCompleted=!1),delete n.runtime,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,e.global.nextLineConfig=V(ps),e.global.overlayStack=[],gt(e),bt(e),e.global.isLineCompleted=!0;let r=i.replayStartIndex??0;for(let l=r;l<=t;l++)l>r&&oa(e),hw(e,i.timeline[l]),yw(e,i.timeline[l]);let s=wt(n);s.read={sectionId:a.sectionId,lineId:a.lineId};let o=la(n);o&&(o.currentLength=Math.min(o.checkpointLengths[t]??0,o.entries.length)),n.kind==="sceneReplay"&&(n.sceneReplay.entryId=Ou(e)),e.global.pendingEffects=e.global.pendingEffects.filter(l=>l?.name!=="render"),e.global.pendingEffects.push({name:"render"})}finally{i.isRestoring=!1}return e},gw=e=>{let{projectData:t}=e,n=e.initialAudioCommandId??0;if(!Number.isSafeInteger(n)||n<0)throw new Error("Internal initial audio command counter is invalid");let i=e.global??{},{saveSlots:a={},variables:r={},runtime:s={},accountViewedRegistry:o={},accountReplayRegistry:l={},localizationPackages:c=[{l10nId:null,language:null}]}=i;Nu(t),Dt(t),Tt(t),Lt(t),Vr(t?.resources?.variables??{});let u=t.story.initialSceneId,p=t.story.scenes[u],d=p.initialSectionId,f=p.sections[d],m={sceneId:u,sectionId:d,lineId:f.initialLineId??f.lines[0].id},{globalVariablesDefaultValues:b}=Bn(t),h={...b,...Mt(r,t.resources?.variables??{},{allowedScopes:["device","account"],preserveUnknown:!0})};return{projectData:t,global:{pendingEffects:[],confirmDialog:null,formDrafts:{},accountViewedRegistry:jb(o,"accountViewedRegistry"),accountReplayRegistry:Nb(l),nextLineConfig:en(),imageGalleryNavigation:ta(),sceneReplayNavigation:ia(),sceneReplayEntryId:0,audioCommandId:n,musicRoomPlayer:ms(),saveSlots:Ob(a),localizationPackages:V(c),overlayStack:[],variables:h,...Zb({projectData:t,loadedGlobalRuntime:s})},contexts:[ma({pointer:m,projectData:t})]}},bw=({state:e})=>e.global.overlayStack||[],ww=({state:e})=>e.global.pendingEffects,ep=({state:e})=>e.global.skipMode,Iw=({state:e})=>e.global.autoMode,rp=({state:e})=>e.global.dialogueUIHidden,tp=({state:e})=>{let t=Array.isArray(e.contexts)?e.contexts:[],n=t[t.length-1];if(!n)return[];let i,a=q(n.dialogueHistory)&&Array.isArray(n.dialogueHistory.entries)&&Number.isInteger(n.dialogueHistory.currentLength);if(a)i=n.dialogueHistory.entries.slice(0,n.dialogueHistory.currentLength);else{let{sectionId:c,lineId:u}=n.pointers.read,p=Ee({state:e},{sectionId:c});if(!p?.lines||!Array.isArray(p.lines))return[];let d=p.lines.findIndex(f=>f.id===u);i=p.lines.slice(0,d+1).map(f=>({sectionId:c,lineId:f.id}))}let r=[],s=ot({variables:{...e.global?.variables??{},...$r(e)?.variables??{}},runtime:Pr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1}),o=new Map,l=c=>{let u=o.get(c.sectionId);if(!u){let d=Ee({state:e},{sectionId:c.sectionId}),f=Array.isArray(d?.lines)?d.lines:[];u={lines:f,lineIndexes:new Map(f.map((m,b)=>[m.id,b])),projections:new Map,nextLineIndex:0,presentationState:{}},o.set(c.sectionId,u)}let p=u.lineIndexes.get(c.lineId);if(p===void 0)return null;for(;u.nextLineIndex<=p;){let d=u.lines[u.nextLineIndex],f=d.actions||{};u.presentationState=Ur([u.presentationState,f]),u.projections.set(d.id,{line:d,lineActions:f,dialogueState:u.presentationState.dialogue||{}}),u.nextLineIndex+=1}return u.projections.get(c.lineId)??null};for(let c of i){if(!Ab(c))continue;let u=l(c);if(!u)continue;let{line:p,lineActions:d,dialogueState:f}=u;if(!d.dialogue)continue;let m=Un({characterId:f.characterId,character:f.character,characters:e.projectData.resources?.characters??{},variables:s}),b=kb({sectionId:c.sectionId,lineId:p.id,content:d.dialogue.append===!0?f.content:d.dialogue.content,dialogueState:f,characterName:m}),h=r[r.length-1];if((a?c.appendToPrevious===!0:d.dialogue.append===!0)&&h?.sectionId===c.sectionId){r[r.length-1]={...r[r.length-1],content:b.content,text:b.text,characterId:b.characterId,character:b.character,characterName:b.characterName};continue}r.push(b)}return r},vw=(e,t,n)=>{let i=!1;for(let a of t??[]){let{slotId:r,saveSlotIdentity:s,sectionId:o,lineId:l}=a,c=e.global.saveSlots?.[Gr(r)],u=Ae(c)?Rn(c):c,p=c?.state?.contexts?.at(-1);!c||u!==s||p?.pointers?.read?.sectionId!==o||p?.pointers?.read?.lineId!==l||(p.dialogueHistory=V(n),i=!0)}i&&e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}})},kw=({state:e},t={})=>{let n=$r(e),i=n?.pointers?.read,a=nn({state:e});if(!n||!q(a?.actions?.dialogue))return e;let r=Cr(n),s=r.timeline?.[r.currentIndex],o=s?.sectionId===i?.sectionId&&s?.lineId===i?.lineId,l=la(n),c=l?.checkpointLengths?.[r.currentIndex],u=r.currentIndex>0?l?.checkpointLengths?.[r.currentIndex-1]??0:0,p=l?.entries?.[l.currentLength-1];if(t.reuseExistingOccurrence===!0&&p?.sectionId===i.sectionId&&p?.lineId===i.lineId||t.forceNewOccurrence!==!0&&o&&l&&c===l.currentLength&&c>u&&p?.sectionId===i.sectionId&&p?.lineId===i.lineId)return e;let d=Pb(n);d.currentLength<d.entries.length&&(d.entries=d.entries.slice(0,d.currentLength));let f=a.actions.dialogue.append===!0&&t.appendToPrevious===!0&&Uu(e.projectData,p,i);if(d.entries.push({sectionId:i.sectionId,lineId:i.lineId,...f?{appendToPrevious:!0}:{}}),d.currentLength=d.entries.length,o){for(;d.checkpointLengths.length<r.timeline.length;)d.checkpointLengths.push(d.checkpointLengths.at(-1)??0);d.checkpointLengths[r.currentIndex]=d.currentLength}return vw(e,t.savedCheckpointOccurrences,d),e},Aw=({state:e})=>e.global.confirmDialog??null,tn=({state:e},{pointer:t}={})=>{let n=t??Le({state:e})?.pointer,i=Jb({state:e,pointer:n});return Qb({state:e,form:i.form,pointer:n})},Pw=({state:e},{pointer:t}={})=>!!tn({state:e},{pointer:t}),xe=({state:e},{pointer:t}={})=>{let n=tn({state:e},{pointer:t});if(n)return{source:Or,formId:n.id,formKey:n.key};let i=lp({state:e,pointer:t});return i?{source:yt,resourceId:i}:null},Ew=({state:e,registry:t},n)=>{let{sectionId:i,lineId:a}=n,s=(Array.isArray(t?.sections)?t.sections:[]).find(u=>u.sectionId===i);if(!s)return!1;if(s.lastLineId===void 0||a===void 0)return!0;let o=Ee({state:e},{sectionId:i});if(!o||!o.lines||!Array.isArray(o.lines))return s.lastLineId===a;let l=o.lines.findIndex(u=>u.id===s.lastLineId),c=o.lines.findIndex(u=>u.id===a);return l===-1||c===-1?s.lastLineId===a:c<=l},ya=({registry:e},t)=>{let{resourceId:n}=t;return!!(Array.isArray(e?.resources)?e.resources:[]).find(r=>r.resourceId===n)},ha=({state:e},t)=>Ew({state:e,registry:e.global.accountViewedRegistry},t),xw=({state:e},t)=>ya({registry:e.global.accountViewedRegistry},t),Qt=(e,t)=>!ya({registry:e.global.accountViewedRegistry},{resourceId:t.imageId}),ga=e=>e.groups.length===0?0:Math.ceil(e.groups.length/e.pageSize),ba=(e,t)=>{let n=ga(e);if(n===0)return 0;let i=Number.isInteger(t?.pageIndex)?t.pageIndex:0;return Math.min(Math.max(i,0),n-1)},Ho=(e,t,n,i)=>{for(let a=n+i;a>=0&&a<t.length;a+=i)if(!Qt(e,t[a]))return t[a]},Sw=({state:e})=>{let t=e.projectData?.resources?.imageGallery;return t===void 0?void 0:V(t)},np=({state:e})=>{let t=e.projectData?.resources?.imageGallery;if(t===void 0)return null;let n=e.global.imageGalleryNavigation??ta(),i=ga(t),a=ba(t,n),r=a*t.pageSize,s=t.groups.slice(r,r+t.pageSize).map(l=>({groupId:l.id,locked:Qt(e,l.variants[0]),variants:l.variants.map(c=>({variantId:c.id,imageId:c.imageId,locked:Qt(e,c)}))})),o=null;if(typeof n.groupId=="string"&&typeof n.variantId=="string"){let l=t.groups.findIndex(f=>f.id===n.groupId),c=t.groups[l],u=c?.variants.findIndex(f=>f.id===n.variantId),p=u===void 0||u<0?void 0:c.variants[u],d=l<0?-1:Math.floor(l/t.pageSize);p&&d===a&&!Qt(e,p)&&(o={groupId:c.id,variantId:p.id,imageId:p.imageId,canMoveToPreviousVariant:Ho(e,c.variants,u,-1)!==void 0,canMoveToNextVariant:Ho(e,c.variants,u,1)!==void 0})}return{pageGroups:s,selection:o,pagination:{pageIndex:a,pageCount:i,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<i}}},wa=(e,t)=>!ya({registry:e.global.accountViewedRegistry},{resourceId:t.soundId}),Ia=e=>e.tracks.length===0?0:Math.ceil(e.tracks.length/e.pageSize),va=(e,t)=>{let n=Ia(e);if(n===0)return 0;let i=Number.isInteger(t?.pageIndex)?t.pageIndex:0;return Math.min(Math.max(i,0),n-1)},Ko=(e,t,n,i)=>{for(let a=n+i;a>=0&&a<t.length;a+=i)if(!wa(e,t[a]))return t[a]},sp=e=>({trackId:e.id,soundId:e.soundId,title:e.title,artist:e.artist??null,album:e.album??null,description:e.description??null,coverImageId:e.coverImageId??null}),Ow=(e,t)=>({...sp(t),locked:wa(e,t)}),Pu=e=>{let t=Math.floor(e/1e3),n=t%60,i=Math.floor(t/60);if(i<60)return`${i}:${String(n).padStart(2,"0")}`;let a=Math.floor(i/60),r=i%60;return`${a}:${String(r).padStart(2,"0")}:${String(n).padStart(2,"0")}`},Rw=({state:e})=>{let t=e.projectData?.resources?.musicRoom;return t===void 0?void 0:V(t)},ip=({state:e})=>{let t=e.projectData?.resources?.musicRoom;if(t===void 0)return null;let n=e.global.musicRoomPlayer??ms(),i=Ia(t),a=va(t,n),r=a*t.pageSize,s=t.tracks.slice(r,r+t.pageSize).map(u=>Ow(e,u)),o=t.tracks.findIndex(u=>u.id===n.trackId),l=t.tracks[o],c=l?{...sp(l),canPlayPreviousTrack:Ko(e,t.tracks,o,-1)!==void 0,canPlayNextTrack:Ko(e,t.tracks,o,1)!==void 0}:null;return{pageTracks:s,selection:c,playback:c?{status:n.status,readiness:n.readiness,positionMs:n.positionMs,durationMs:n.durationMs,positionText:Pu(n.positionMs),durationText:n.durationMs===null?null:Pu(n.durationMs),canPlay:n.status!=="playing",canPause:n.status==="playing",canSeek:n.readiness==="ready"&&n.durationMs!==null}:null,pagination:{pageIndex:a,pageCount:i,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<i}}},ka=e=>e.replays.length===0?0:Math.ceil(e.replays.length/e.pageSize),Aa=(e,t)=>{let n=ka(e);if(n===0)return 0;let i=Number.isInteger(t?.pageIndex)?t.pageIndex:0;return Math.min(Math.max(i,0),n-1)},$w=({state:e})=>{let t=e.projectData?.resources?.sceneReplay;return t===void 0?void 0:V(t)},Cw=({state:e})=>he(e)!==null,_w=({state:e})=>{let t=he(e);return t?{sceneId:t.sceneReplay.sceneId,entryId:t.sceneReplay.entryId}:null},op=(e,t)=>e.global.accountReplayRegistry?.sceneIds?.includes(t)===!0,ap=({state:e})=>{let t=e.projectData?.resources?.sceneReplay;if(t===void 0)return null;let n=e.global.sceneReplayNavigation??ia(),i=ka(t),a=Aa(t,n),r=a*t.pageSize,s=t.replays.slice(r,r+t.pageSize).map(l=>({sceneId:l.sceneId,title:l.title,thumbnailImageId:l.thumbnailImageId,locked:!op(e,l.sceneId)})),o=he(e);return{isActive:o!==null,activeSceneId:o?.sceneReplay.sceneId??null,pageReplays:s,pagination:{pageIndex:a,pageCount:i,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<i}}},jw=({state:e})=>e.global.nextLineConfig,lp=({state:e,pointer:t}={})=>{let n=t??Le({state:e})?.pointer;if(!n)return;let i=n?.sectionId,a=n?.lineId,s=Ee({state:e},{sectionId:i})?.lines||[],o=s.findIndex(c=>c.id===a);if(o<0)return;let l;for(let c of s.slice(0,o+1)){let u=c?.actions;if(u?.cleanAll&&(l=void 0),!u||!Object.prototype.hasOwnProperty.call(u,"choice")){l=void 0;continue}let p=u.choice;if(p?.resourceId){l=p.resourceId;continue}p?.animations||(l=void 0)}return l},cp=({state:e})=>!!lp({state:e}),Nw=({state:e})=>structuredClone(e),Dw=({state:e})=>V(e.projectData.resources?.achievements??{}),Tw=({state:e},t)=>{let n=e.projectData.resources?.achievements?.[t?.resourceId];return n===void 0?void 0:V(n)},up=({state:e})=>e.global.saveSlots,Lw=({state:e},t)=>{let n=t?.slotId,i=Gr(n);return Object.prototype.hasOwnProperty.call(e.global.saveSlots??{},i)?e.global.saveSlots[i]:void 0},pp=({state:e})=>V(e.global.localizationPackages),Pa=({state:e})=>Pr(e),Mw=({state:e},t)=>Ze(e,t?.runtimeId),Ea=({state:e})=>{let t={...e.global?.variables??{},...$r(e)?.variables??{}};return ot({variables:t,runtime:Pr(e),variableConfigs:e.projectData.resources?.variables??{}})},Le=({state:e})=>{let t=Array.isArray(e.contexts)?e.contexts:[],n=t[t.length-1];if(n)return{currentPointerMode:"read",pointer:n.pointers?.read}},Ee=({state:e},t)=>{let{sectionId:n}=t;return mr(e.projectData,n).section},nn=({state:e})=>{let t=Le({state:e});if(!t?.pointer)return;let{sectionId:n,lineId:i}=t.pointer,a=Ee({state:e},{sectionId:n});if(!(!a?.lines||!Array.isArray(a.lines)))return a.lines.find(r=>r.id===i)},fp=({state:e})=>{let{sectionId:t,lineId:n}=Le({state:e}).pointer,a=Ee({state:e},{sectionId:t})?.lines||[],r=a.findIndex(c=>c.id===n),o=a.slice(0,r+1).map(c=>{let u=c.actions||{},p={};return Object.keys(u).forEach(d=>{p[d]=u[d]}),p});return Ur(o)},dp=e=>{let t=nn({state:e})?.actions?.dialogue;if(t?.clear===!0||!Array.isArray(t?.content))return"";let n=ot({variables:{...e.global?.variables??{},...$r(e)?.variables??{}},runtime:Pr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1});return t.content.map(i=>`${lt(i?.text,{variables:n})??""}`).join("")},yr=({state:e})=>Yo({text:dp(e),baseDelay:Ze(e,"autoForwardDelay"),speed:Ze(e,"autoForwardSpeed")}),qw=({state:e})=>{let t=mp({state:e}),i=nn({state:e})?.actions??{},a=Ur([t??{},i]);return oo(t??{},a??{})},Vw=({state:e},{sectionId:t})=>{let n=Ee({state:e},{sectionId:t});if(!n?.lines)return[];let i=[],a={};for(let r of n.lines){let s=r.actions||{},o=Ur([a,s]),l=oo(a,o);i.push({id:r.id,changes:l,presentationState:o}),a=ao(o)}return i},Fw=({state:e},{sectionId:t,includePresentationState:n=!1})=>{let i=Vw({state:e},{sectionId:t});return n?{lines:i}:{lines:i.map(({presentationState:a,...r})=>r)}},mp=({state:e})=>{let{sectionId:t,lineId:n}=Le({state:e}).pointer,a=Ee({state:e},{sectionId:t})?.lines||[],r=a.findIndex(l=>l.id===n);if(r<=0)return null;let o=a.slice(0,r).map(l=>{let c=l.actions||{},u={};return Object.keys(c).forEach(p=>{u[p]=c[p]}),u});return ao(Ur(o))},xa=({state:e},{slotsPerPage:t=6}={})=>{let a=((Pa({state:e}).saveLoadPagination??1)-1)*t+1,r=[];for(let s=0;s<t;s++){let o=a+s,l=e.global.saveSlots&&e.global.saveSlots[Gr(o)]||{};r.push({...l,slotId:o})}return{saveSlots:r}},Uw=up,Bw=xa,Yw=e=>{let n=e.contexts?.[e.contexts.length-1]?.rollback;return!n||!Array.isArray(n.timeline)||typeof n.currentIndex!="number"?!1:n.currentIndex>=0&&n.currentIndex<n.timeline.length-1},zw=({state:e},t={})=>{let n=fp({state:e}),i=mp({state:e}),a=nn({state:e})?.actions??{},r=e.global.pendingScreenTransition,s=r?.animations?{...a,screen:V(r)}:a,o=r?.animations&&i===null?{}:i,{sectionId:l}=Le({state:e}).pointer,{sceneId:c}=mr(e.projectData,l),u={...Pa({state:e}),localizationPackages:pp({state:e})},p=t?.activePersistentAnimations??[],d=t?.restoredPersistentAnimations??[],f=tn({state:e}),m=cp({state:e}),b=np({state:e}),h=ip({state:e}),y=ap({state:e}),w=Ea({state:e}),{saveSlots:g}=xa({state:e}),E=Yw(e);return eu({presentationState:n,previousPresentationState:o,currentLineActions:s,resources:e.projectData.resources,currentSceneId:c,screen:e.projectData.screen,dialogueUIHidden:u.dialogueUIHidden,autoMode:u.autoMode,skipMode:u.skipMode,isChoiceVisible:m,isFormVisible:!!f,canRollback:Lp({state:e}),skipOnlyViewedLines:!u.skipUnseenText,isLineCompleted:u.isLineCompleted,skipTransitionsAndAnimations:!!u.skipTransitionsAndAnimations||E,overlayStack:e.global.overlayStack,confirmDialog:e.global.confirmDialog,form:f,dialogueHistory:tp({state:e}),saveSlots:g,variables:w,runtime:u,activePersistentAnimations:p,restoredPersistentAnimations:d,imageGallery:b,musicRoom:h,sceneReplay:y,musicRoomPlayer:V(e.global.musicRoomPlayer),activeAudioEffect:t?.activeAudioEffect??null})},Xw=({state:e},t)=>(e.global.confirmDialog=Yb(t),e.global.pendingEffects.push({name:"render"}),e),Gw=({state:e})=>(e.global.confirmDialog&&(gt(e),e.global.pendingEffects.push({name:"render"})),e),Hw=({state:e,rollbackActionBatchStack:t},n)=>(e.global.overlayStack.push(n),e.global.pendingEffects.push({name:"render"}),rr(e,"pushOverlay",n,t),e),Kw=({state:e,rollbackActionBatchStack:t})=>(e.global.overlayStack.pop(),e.global.pendingEffects.push({name:"render"}),rr(e,"popOverlay",void 0,t),e),Ww=({state:e,rollbackActionBatchStack:t},n)=>(e.global.overlayStack.length>0&&(e.global.overlayStack[e.global.overlayStack.length-1]=n),e.global.pendingEffects.push({name:"render"}),rr(e,"replaceLastOverlay",n,t),e),Jw=({state:e,rollbackActionBatchStack:t})=>(e.global.overlayStack=[],gt(e),bt(e),e.global.pendingEffects.push({name:"render"}),rr(e,"clearOverlays",void 0,t),e),Qw=(e,{activeInteraction:t})=>{e.global.autoMode&&e.global.pendingEffects.push({name:"clearAutoNextTimer"}),t&&e.global.skipMode&&e.global.pendingEffects.push({name:"clearSkipNextTimer"}),e.global.nextLineConfig?.auto?.enabled&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})},sn=(e,t,{screenTransition:n}={})=>{e.global.isLineCompleted=!1,Xb(e,n),bt(e);let i=xe({state:e},{pointer:t}),a=i?.source===yt,r=i?.source===Or;Qw(e,{activeInteraction:i});let s=he(e),o={name:"handleLineActions"};if(typeof s?.sceneReplay?.sceneId=="string"){let l=Ou(e);s.sceneReplay.entryId=l,o.payload={sceneReplaySceneId:s.sceneReplay.sceneId,entryId:l}}return e.global.pendingEffects.push(o),{isChoiceVisible:a,isFormVisible:r,activeInteraction:i}},gs=(e,t,n)=>{!(t?.source===yt||t?.source===Or)||n||!e.global.skipMode||e.global.pendingEffects.push({name:"startSkipNextTimer"})},yp=({state:e})=>(xe({state:e})||(e.global.skipMode&&(e.global.skipMode=!1,e.global.pendingEffects.push({name:"clearSkipNextTimer"})),e.global.autoMode=!0,e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.isLineCompleted&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:yr({state:e})}}),e.global.pendingEffects.push({name:"render"})),e),on=({state:e})=>(e.global.autoMode=!1,e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.pendingEffects.push({name:"render"}),e),Zw=({state:e})=>{let t=e.global.autoMode;return xe({state:e})&&!t||(t?on({state:e}):yp({state:e})),e},hp=({state:e})=>(xe({state:e})||(e.global.autoMode&&(e.global.autoMode=!1,e.global.pendingEffects.push({name:"clearAutoNextTimer"})),e.global.skipMode=!0,e.global.pendingEffects.push({name:"clearSkipNextTimer"}),e.global.pendingEffects.push({name:"startSkipNextTimer"}),e.global.pendingEffects.push({name:"render"})),e),Rr=({state:e})=>(e.global.skipMode=!1,e.global.pendingEffects.push({name:"clearSkipNextTimer"}),e.global.pendingEffects.push({name:"render"}),e),e0=({state:e})=>{let t=ep({state:e});return xe({state:e})&&!t||(t?Rr({state:e}):hp({state:e})),e},bs=({state:e,rollbackActionBatchStack:t})=>(e.global.dialogueUIHidden=!1,e.global.pendingEffects.push({name:"render"}),rr(e,"showDialogueUI",void 0,t),e),gp=({state:e,rollbackActionBatchStack:t})=>(e.global.dialogueUIHidden=!0,e.global.pendingEffects.push({name:"render"}),rr(e,"hideDialogueUI",void 0,t),e),r0=e=>{let{state:t}=e;return rp({state:t})?bs(e):gp(e),t},_r=(e,t,n)=>(da(e,t,n),Wu(e),e.global.pendingEffects.push({name:"render"}),e),an=(e,t,n,i,a)=>{let r=da(e,t,n);return e.global.pendingEffects.push({name:"render"}),rr(e,i,{value:r},a),e},t0=({state:e},t)=>_r(e,"dialogueTextSpeed",t?.value),n0=({state:e},t)=>(_r(e,"autoForwardDelay",t?.value),e.global.autoMode&&e.global.isLineCompleted&&!xe({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:yr({state:e})}}),e),s0=({state:e},t)=>(_r(e,"autoForwardSpeed",t?.value),e.global.autoMode&&e.global.isLineCompleted&&!xe({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:yr({state:e})}}),e),i0=({state:e},t)=>_r(e,"skipUnseenText",t?.value),o0=({state:e},t)=>_r(e,"skipTransitionsAndAnimations",t?.value),a0=({state:e},t)=>_r(e,"soundVolume",t?.value),l0=({state:e},t)=>_r(e,"musicVolume",t?.value),c0=({state:e},t)=>_r(e,"muteAll",t?.value),Wo=({state:e,rollbackActionBatchStack:t},n)=>an(e,"saveLoadPagination",n?.value,"setSaveLoadPagination",t),Jo=({state:e,rollbackActionBatchStack:t})=>{let n=Ze(e,"saveLoadPagination")+1;return an(e,"saveLoadPagination",n,"incrementSaveLoadPagination",t),e},Qo=({state:e,rollbackActionBatchStack:t})=>{let n=Ze(e,"saveLoadPagination")-1;return an(e,"saveLoadPagination",n,"decrementSaveLoadPagination",t),e},Zo=({state:e,rollbackActionBatchStack:t},n)=>an(e,"menuPage",n?.value,"setMenuPage",t),ea=({state:e,rollbackActionBatchStack:t},n)=>an(e,"menuEntryPoint",n?.value,"setMenuEntryPoint",t),u0=({state:e})=>(e.global.pendingEffects=[],e),p0=({state:e},t)=>(e.global.pendingEffects.push(t),e),f0=({state:e},t)=>{if(he(e))return e;let n=t?.resourceId;return Ru(e,n),e.global.pendingEffects.push({name:"completeAchievement",payload:{resourceId:n}}),e},d0=({state:e},t)=>{if(he(e))return e;let n=t?.resourceId,i=Ru(e,n);if(i.type!=="number")throw new Error(`Achievement resource "${n}" does not support numeric progress`);let a=t?.current;if(!Number.isInteger(a)||a<0)throw new Error(`Achievement progress for "${n}" must be a non-negative integer`);if(!Number.isInteger(i.target)||i.target<1)throw new Error(`Achievement resource "${n}" must have a positive integer target`);let r=Math.min(a,i.target);return e.global.pendingEffects.push({name:"setAchievementProgress",payload:{resourceId:n,current:r,target:i.target,completed:r>=i.target}}),e},bp=e=>e?.lines?.[0],wp=(e,{sectionId:t,resetStoryState:n=!1,screen:i})=>{let a=!!Yu(i),r=Ee({state:e},{sectionId:t});if(!r)return console.warn(`Section not found: ${t}`),e;let s=bp(r);if(!s)return console.warn(`Section ${t} has no lines`),e;if(n&&!ow(e,{queueRender:!a}))return e;let o=xe({state:e});n&&e.global.skipMode&&Rr({state:e});let l=e.contexts?.[e.contexts.length-1];if(l){let u=wt(l),p=u.read;n||Xr(e,{sectionId:p?.sectionId,lineId:p?.lineId}),l.rollback||Cr(l,{compatibilityAnchor:!0}),u.read={sectionId:t,lineId:s.id},n?l.rollback=Zt({pointer:u.read}):hs(e,{sectionId:t,lineId:s.id})}let{activeInteraction:c}=sn(e,l?.pointers?.read,{screenTransition:i});return gs(e,o,c),e},m0=({state:e},t)=>{if(he(e))throw new Error("Cannot reset the story while a scene replay is active");return wp(e,{sectionId:t?.sectionId,resetStoryState:!0,screen:t?.screen})},Ip=e=>(e.global.accountViewedRegistry=wb(e.global.accountViewedRegistry),e.global.accountViewedRegistry),ws=(e,t)=>{!Array.isArray(t)||t.length===0||e.global.pendingEffects.push({name:"applyScopedDataUpdates",payload:{updates:t.map(n=>({scope:n.scope,path:n.path,op:n.op,value:V(n.value)}))}})},vp=(e,t)=>{ws(e,[{scope:"account",path:"viewedRegistry",op:"markViewed",value:{sections:(Array.isArray(t?.sections)?t.sections:[]).map(n=>({sectionId:n.sectionId,...n.lastLineId===void 0?{}:{lineId:n.lastLineId}})),resources:Array.isArray(t?.resources)?t.resources:[]}}])},y0=(e,t,{sectionId:n,lineId:i})=>{if(!n||!i)return!1;let a=q(t)?t:{};Array.isArray(a.sections)||(a.sections=[]);let r=a.sections.find(s=>s.sectionId===n);if(r){if(r.lastLineId===void 0)return!1;let s=Ee({state:e},{sectionId:n});if(s?.lines){let o=s.lines.findIndex(c=>c.id===r.lastLineId),l=s.lines.findIndex(c=>c.id===i);if(o===-1||l>o)return r.lastLineId===i?!1:(r.lastLineId=i,!0)}else return r.lastLineId===i?!1:(r.lastLineId=i,!0);return!1}else return a.sections.push({sectionId:n,lastLineId:i}),!0},Xr=(e,t)=>{if(he(e)||e.global.accountViewedRegistry===void 0)return;y0(e,Ip(e),t)&&vp(e,{sections:[{sectionId:t.sectionId,lastLineId:t.lineId}],resources:[]})},h0=({state:e},t)=>(Xr(e,t),e.global.pendingEffects.push({name:"render"}),e),g0=({state:e},t)=>{if(he(e))return e;let{resourceId:n}=t;if(e.global.accountViewedRegistry!==void 0){let i=Ip(e);i.resources.find(r=>r.resourceId===n)||(i.resources.push({resourceId:n}),vp(e,{sections:[],resources:[{resourceId:n}]}))}return e.global.pendingEffects.push({name:"render"}),e},tr=(e,t,n)=>{if(!q(t))throw new Error(`${e} payload must be an object`);Object.keys(t).forEach(i=>{if(!n.has(i))throw new Error(`${e} payload contains unsupported property "${i}"`)})},ra=(e,t,n)=>{if(typeof n!="string"||n.length===0)throw new Error(`${e} requires a non-empty ${t}`)},Is=(e,t)=>{let n=e.global.imageGalleryNavigation;n.groupId===t.groupId&&n.variantId===t.variantId&&n.pageIndex===t.pageIndex||(e.global.imageGalleryNavigation=t,e.global.pendingEffects.push({name:"render"}))},b0=({state:e},t)=>{let n="showImageGalleryVariant";tr(n,t,fb),ra(n,"groupId",t.groupId),Object.prototype.hasOwnProperty.call(t,"variantId")&&ra(n,"variantId",t.variantId);let i=e.projectData?.resources?.imageGallery;if(i===void 0)return e;let a=i.groups.findIndex(o=>o.id===t.groupId),r=i.groups[a];if(!r)return e;let s=t.variantId===void 0?r.variants[0]:r.variants.find(o=>o.id===t.variantId);return!s||Qt(e,s)||Is(e,{groupId:r.id,variantId:s.id,pageIndex:Math.floor(a/i.pageSize)}),e},kp=(e,t,n,i)=>{tr(i,t,na);let a=e.projectData?.resources?.imageGallery;if(a===void 0)return e;let r=e.global.imageGalleryNavigation;if(typeof r.groupId!="string"||typeof r.variantId!="string")return e;let s=a.groups.find(c=>c.id===r.groupId),o=s?.variants.findIndex(c=>c.id===r.variantId);if(!s||o===void 0||o<0)return e;let l=Ho(e,s.variants,o,n);return l&&Is(e,{...r,variantId:l.id}),e},w0=({state:e},t)=>kp(e,t,-1,"moveToPreviousImageGalleryVariant"),I0=({state:e},t)=>kp(e,t,1,"moveToNextImageGalleryVariant"),v0=({state:e},t)=>{if(tr("clearImageGallerySelection",t,na),e.projectData?.resources?.imageGallery===void 0)return e;let i=e.global.imageGalleryNavigation;return Is(e,{groupId:null,variantId:null,pageIndex:i.pageIndex}),e},Ap=(e,t)=>{let n=e.projectData?.resources?.imageGallery;if(n===void 0)return e;let i=ga(n);if(t>=i)return e;let a=e.global.imageGalleryNavigation,r=ba(n,a);return t===r||Is(e,{groupId:null,variantId:null,pageIndex:t}),e},k0=({state:e},t)=>{if(tr("moveToImageGalleryPage",t,db),!Number.isInteger(t.pageIndex)||t.pageIndex<0)throw new Error("moveToImageGalleryPage requires a non-negative integer pageIndex");return Ap(e,t.pageIndex)},Pp=(e,t,n,i)=>{tr(i,t,na);let a=e.projectData?.resources?.imageGallery;if(a===void 0)return e;let s=ba(a,e.global.imageGalleryNavigation)+n;return s<0?e:Ap(e,s)},A0=({state:e},t)=>Pp(e,t,1,"moveToNextImageGalleryPage"),P0=({state:e},t)=>Pp(e,t,-1,"moveToPreviousImageGalleryPage"),hr=(e,t,n)=>{if(!q(t))throw new Error(`${e} payload must be an object`);Object.keys(t).forEach(i=>{if(!n.has(i))throw new Error(`${e} payload contains unsupported property "${i}"`)})},E0=(e,t)=>{if(typeof t!="string"||t.length===0)throw new Error(`${e} requires a non-empty trackId`)},We=e=>{e.global.pendingEffects.push({name:"render"})},Ep=(e,t)=>{let n=e.projectData.resources.musicRoom,i=e.global.musicRoomPlayer,a=i.trackId!==null,r=i.trackId===t.id,s=i.bgmPlayback;a||(s={commandId:ys(e),operation:"pause"});let o=rn(e,"play",0),l=n.tracks.indexOf(t),c=r?i.durationMs:null;e.global.musicRoomPlayer={trackId:t.id,pageIndex:Math.floor(l/n.pageSize),status:"playing",readiness:c===null?"loading":"ready",positionMs:0,durationMs:c,playback:o,seekFallback:null,bgmPlayback:s},We(e)},x0=({state:e},t)=>{let n="playMusicRoomTrack";hr(n,t,mb),E0(n,t.trackId);let a=e.projectData?.resources?.musicRoom?.tracks.find(r=>r.id===t.trackId);return!a||wa(e,a)||Ep(e,a),e},S0=({state:e},t)=>{hr("playMusicRoom",t,ht);let i=e.global.musicRoomPlayer;if(i.trackId===null||i.status==="playing")return e;let a=i.status==="ended",r=i.readiness==="error",s=i.status==="paused"&&!r?"resume":"play",o=a?0:i.positionMs;return i.playback=rn(e,s,s==="play"?o:void 0),i.seekFallback=null,i.status="playing",i.positionMs=o,r&&(i.readiness=i.durationMs===null?"loading":"ready"),We(e),e},O0=({state:e},t)=>{hr("pauseMusicRoom",t,ht);let i=e.global.musicRoomPlayer;return i.trackId===null||i.status!=="playing"||(i.playback=rn(e,"pause"),i.seekFallback=null,i.status="paused",We(e)),e},R0=({state:e},t)=>{hr("stopMusicRoom",t,ht);let i=e.global.musicRoomPlayer;return i.trackId===null||i.status==="stopped"&&i.positionMs===0||(i.playback=rn(e,"stop"),i.seekFallback=null,i.status="stopped",i.positionMs=0,We(e)),e},$0=({state:e},t)=>{if(hr("seekMusicRoom",t,yb),typeof t.positionMs!="number"||!Number.isFinite(t.positionMs)||t.positionMs<0)throw new Error("seekMusicRoom requires a finite non-negative positionMs");let i=e.global.musicRoomPlayer;if(i.trackId===null||i.readiness!=="ready"||i.durationMs===null||t.positionMs>i.durationMs)return e;let a=rn(e,"seek",t.positionMs);return i.seekFallback={commandId:a.commandId,status:i.status,positionMs:i.positionMs},i.playback=a,i.positionMs=t.positionMs,t.positionMs===i.durationMs?i.status="ended":i.status==="ended"&&(i.status="stopped"),We(e),e},xp=(e,t,n,i)=>{hr(i,t,ht);let a=e.projectData?.resources?.musicRoom,r=e.global.musicRoomPlayer;if(!a||r.trackId===null)return e;let s=a.tracks.findIndex(l=>l.id===r.trackId);if(s<0)return e;let o=Ko(e,a.tracks,s,n);return o&&Ep(e,o),e},C0=({state:e},t)=>xp(e,t,-1,"playPreviousMusicRoomTrack"),_0=({state:e},t)=>xp(e,t,1,"playNextMusicRoomTrack"),j0=({state:e},t)=>{hr("clearMusicRoomSelection",t,ht);let i=e.global.musicRoomPlayer;if(i.trackId===null)return e;let a=i.pageIndex,r={commandId:ys(e),operation:"resume"};return e.global.musicRoomPlayer={...ms({bgmPlayback:r}),pageIndex:a},We(e),e},Sp=(e,t)=>{let n=e.projectData?.resources?.musicRoom;if(!n||t>=Ia(n))return e;let i=e.global.musicRoomPlayer,a=va(n,i);return t===a||(i.pageIndex=t,We(e)),e},N0=({state:e},t)=>{if(hr("moveToMusicRoomPage",t,hb),!Number.isInteger(t.pageIndex)||t.pageIndex<0)throw new Error("moveToMusicRoomPage requires a non-negative integer pageIndex");return Sp(e,t.pageIndex)},Op=(e,t,n,i)=>{hr(i,t,ht);let a=e.projectData?.resources?.musicRoom;if(!a)return e;let r=va(a,e.global.musicRoomPlayer)+n;return r<0?e:Sp(e,r)},D0=({state:e},t)=>Op(e,t,1,"moveToNextMusicRoomPage"),T0=({state:e},t)=>Op(e,t,-1,"moveToPreviousMusicRoomPage"),zr=e=>{let t=he(e);if(!t)return!1;if(e.contexts.length<2)throw new Error("Scene replay context has no caller context to restore");let n=V(t.sceneReplay.returnState),i=t.sceneReplay.sceneId;return e.global.pendingEffects=e.global.pendingEffects.filter(a=>a?.name!=="handleLineActions"||a?.payload?.sceneReplaySceneId!==i),e.contexts.pop(),nw(e,n),e.global.pendingEffects.push({name:"render"}),!0},L0=({state:e},t)=>{let n="startSceneReplay";if(tr(n,t,gb),ra(n,"sceneId",t.sceneId),he(e))throw new Error("Cannot start a scene replay while another replay is active");let a=e.projectData?.resources?.sceneReplay?.replays.find(p=>p.sceneId===t.sceneId);if(!a||!op(e,a.sceneId))return e;let r=e.projectData.story.scenes[a.sceneId],s=r?.initialSectionId,o=r?.sections?.[s],l=o?.initialLineId??o?.lines?.[0]?.id;if(!o||!l||!o.lines.some(p=>p.id===l))throw new Error(`Scene replay scene "${a.sceneId}" has an invalid initial section`);let c=rw(e);tw(e);let u=ma({pointer:{sceneId:a.sceneId,sectionId:s,lineId:l},projectData:e.projectData,kind:"sceneReplay",sceneReplay:{sceneId:a.sceneId,entryId:0,finishOnNextAdvance:!1,exitOnLineCompleted:!1,returnState:c}});return Ku(e,u),e.contexts.push(u),sn(e,u.pointers.read),e},Rp=({state:e},t)=>{tr("finishSceneReplay",t,sa);let i=he(e);if(i)return i.sceneReplay.finishOnNextAdvance=!0,e;if($r(e)?.rollback?.isRestoring===!0)return e;let r=Le({state:e})?.pointer,{sceneId:s}=mr(e.projectData,r?.sectionId);return!(typeof s=="string"&&e.projectData?.resources?.sceneReplay?.replays?.some(l=>l.sceneId===s))||(e.global.accountReplayRegistry=Ib(e.global.accountReplayRegistry),e.global.accountReplayRegistry.sceneIds.includes(s))||(e.global.accountReplayRegistry.sceneIds.push(s),ws(e,[{scope:"account",path:"replayRegistry",op:"unlock",value:{sceneIds:[s]}}]),e.global.pendingEffects.push({name:"render"})),e},M0=({state:e},t)=>(tr("exitSceneReplay",t,sa),zr(e),e),$p=(e,t)=>{let n=e.projectData?.resources?.sceneReplay;if(!n||t>=ka(n))return e;let i=Aa(n,e.global.sceneReplayNavigation);return t===i||(e.global.sceneReplayNavigation.pageIndex=t,e.global.pendingEffects.push({name:"render"})),e},q0=({state:e},t)=>{if(tr("moveToSceneReplayPage",t,bb),!Number.isInteger(t.pageIndex)||t.pageIndex<0)throw new Error("moveToSceneReplayPage requires a non-negative integer pageIndex");return $p(e,t.pageIndex)},Cp=(e,t,n,i)=>{tr(i,t,sa);let a=e.projectData?.resources?.sceneReplay;if(!a)return e;let r=Aa(a,e.global.sceneReplayNavigation)+n;return r<0?e:$p(e,r)},V0=({state:e},t)=>Cp(e,t,1,"moveToNextSceneReplayPage"),F0=({state:e},t)=>Cp(e,t,-1,"moveToPreviousSceneReplayPage"),vs=(e,t)=>{let n=e.global.musicRoomPlayer;return!q(t)||t.id!==ub||n.trackId===null||!n.playback||t.commandId!==n.playback.commandId?null:n},Sa=e=>typeof e.positionMs=="number"&&Number.isFinite(e.positionMs)&&e.positionMs>=0&&typeof e.durationMs=="number"&&Number.isFinite(e.durationMs)&&e.durationMs>0&&e.positionMs<=e.durationMs,_p=(e,t,n,{readiness:i=t.readiness}={})=>((t.readiness!==i||t.positionMs!==n.positionMs||t.durationMs!==n.durationMs||t.seekFallback!==null)&&(t.readiness=i,t.positionMs=n.positionMs,t.durationMs=n.durationMs,t.seekFallback=null,We(e)),e),U0=({state:e},t)=>{let n=vs(e,t);return!n||n.readiness!=="loading"||!Sa(t)?e:_p(e,n,t,{readiness:"ready"})},B0=({state:e},t)=>{let n=vs(e,t);return!n||n.readiness!=="ready"||!Sa(t)||n.status==="stopped"&&t.positionMs!==0||n.status==="ended"&&t.positionMs!==t.durationMs?e:_p(e,n,t)},Y0=({state:e},t)=>{let n=vs(e,t);return!n||n.readiness!=="ready"||n.status!=="playing"||!Sa(t)||t.positionMs!==t.durationMs||(n.status="ended",n.positionMs=t.positionMs,n.durationMs=t.durationMs,n.seekFallback=null,We(e)),e},z0=({state:e},t)=>{let n=vs(e,t);if(!n||typeof t.errorCode!="string"||!pb.has(t.errorCode)||n.readiness==="error"&&n.status==="stopped")return e;if(t.errorCode==="invalid-position"){let i=n.seekFallback;if(n.playback.operation!=="seek"||i?.commandId!==t.commandId)return e;let a=n.status!==i.status||n.positionMs!==i.positionMs;return n.status=i.status,n.positionMs=i.positionMs,n.seekFallback=null,a&&We(e),e}return n.readiness="error",n.status="stopped",n.positionMs=0,n.seekFallback=null,We(e),e},jp=({state:e,rollbackActionBatchStack:t},n)=>{let i=xb(n.manual),{auto:a,applyMode:r}=n,s=e.global.nextLineConfig.auto?.enabled,o=e.global.nextLineConfig.auto?.trigger,l=e.global.nextLineConfig.auto?.delay,c=e.global.nextLineConfig?.applyMode,u=e.contexts?.[e.contexts.length-1]?.rollback?.isRestoring===!0;i&&a?(e.global.nextLineConfig={manual:i,auto:a},r!==void 0?e.global.nextLineConfig.applyMode=r:c!==void 0&&(e.global.nextLineConfig.applyMode=c)):(i&&(e.global.nextLineConfig.manual=i),a&&(e.global.nextLineConfig.auto=a),r!==void 0&&(e.global.nextLineConfig.applyMode=r));let p=e.global.nextLineConfig.auto?.enabled,d=e.global.nextLineConfig.auto?.trigger,f=e.global.nextLineConfig.auto?.delay,m=xe({state:e});return!u&&(a!==void 0&&(p!==s||d!==o||f!==l))&&(!m&&p===!0&&(d==="fromStart"||e.global.isLineCompleted)?e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:f}}):s===!0&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})),e.global.pendingEffects.push({name:"render"}),rr(e,"setNextLineConfig",n,t),e},X0=({state:e},t)=>{if(he(e))throw new Error("Cannot save while a scene replay is active");let n=t?.slotId;$u(n,"saveSlot");let{thumbnailImage:i}=t,a=t?.savedAt,r=Gr(n),s=V(e.contexts);s?.forEach(c=>{wt(c),Ju(c.rollback),Cb(c.rollback,e.projectData)});let o={contexts:s},l={formatVersion:Su,slotId:Du(n),savedAt:typeof a=="number"?a:Date.now(),image:i,state:o};return e.global.saveSlots[r]=l,e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}},{name:"render"}),e},G0=({state:e},t)=>{if(he(e))throw new Error("Cannot load while a scene replay is active");let n=t?.slotId;$u(n,"loadSlot");let i=Gr(n),a=Object.prototype.hasOwnProperty.call(e.global.saveSlots??{},i)?e.global.saveSlots[i]:void 0;if(a){let r=Bb(a,e.projectData);e.contexts=r.state.contexts,e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,e.global.nextLineConfig=en(),e.global.overlayStack=[],e.global.isLineCompleted=!0,gt(e),bt(e),aa(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"},{name:"render"})}return e},H0=({state:e},t)=>{if(he(e))throw new Error("Cannot update project data while a scene replay is active");let{projectData:n}=t;Nu(n),Dt(n),Tt(n),Lt(n),Vr(n?.resources?.variables??{}),mo(n);let i=Db(n),a=i?e.contexts?.map((s,o)=>Bu(V(s),n,o)):void 0,r=i?_b(e.global.saveSlots,n):void 0;if(e.projectData=n,e.global.imageGalleryNavigation=ta(),e.global.sceneReplayNavigation=ia(),aa(e),i){let s=n?.resources?.variables??{},{globalVariablesDefaultValues:o}=Bn(n??{});Object.prototype.hasOwnProperty.call(e.global??{},"variables")&&(e.global.variables={...o,...Mt(e.global.variables,s,{allowedScopes:["device","account"]})}),e.contexts=a,e.global.saveSlots=r}return gt(e),bt(e),i&&Object.keys(e.global.saveSlots??{}).length>0&&e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}}),e.global.pendingEffects.push({name:"render"}),e},K0=({state:e},t)=>{let{l10nId:n,projectData:i}=t??{};if(n!==null&&(typeof n!="string"||n.length===0))throw new Error("updateLocalizationPackage requires l10nId or null");if(!q(i))throw new Error("updateLocalizationPackage requires resolved projectData internally");return e.projectData=i,da(e,"localizationPackageId",n),Wu(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.autoMode&&e.global.isLineCompleted&&!xe({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:yr({state:e})}}),e.global.pendingEffects.push({name:"render"}),e},W0=({state:e},t)=>{let{sectionId:n,lineId:i}=t;if(!i)return console.warn("jumpToLine requires lineId parameter"),e;let a=e.contexts[e.contexts.length-1];if(!a)return console.warn("No context available for jumpToLine"),e;let r=n||a.pointers.read?.sectionId;if(n&&!Ee({state:e},{sectionId:n}))return console.warn(`Section not found: ${n}`),e;let s=Ee({state:e},{sectionId:r});if(!s?.lines||!Array.isArray(s.lines))return console.warn(`Section ${r} has no lines`),e;if(!s.lines.find(p=>p.id===i))return console.warn(`Line not found: ${i} in section ${r}`),e;let l=xe({state:e}),c=wt(a);c.read={sectionId:r,lineId:i};let{activeInteraction:u}=sn(e,c.read);return gs(e,l,u),e},J0=({state:e,rollbackActionBatchStack:t},n)=>{if(!e.global.nextLineConfig.manual.enabled)return e;if(e.global.dialogueUIHidden)return bs({state:e,rollbackActionBatchStack:t}),e;let i=xe({state:e});if(i?.source===yt&&n?.bypassChoice!==!0||i?.source===Or&&n?._interactionSource!==Or)return e;if(!e.global.isLineCompleted){if(e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition,he(e)?.sceneReplay.exitOnLineCompleted)return zr(e),e;let f=Le({state:e})?.pointer,m=f?.sectionId,b=f?.lineId;m&&b&&Xr(e,{sectionId:m,lineId:b}),e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}),e.global.autoMode&&!i&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:yr({state:e})}});let h=e.global.nextLineConfig,y=Ee({state:e},{sectionId:m});return Array.isArray(y?.lines)&&y.lines.at(-1)?.id===b?Xo(e):h?.auto?.enabled&&!i&&h.auto.trigger!=="fromStart"&&e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:h.auto.delay}}),e.global.pendingEffects.push({name:"render"}),e}if(he(e)?.sceneReplay.finishOnNextAdvance)return zr(e),e;let r=Le({state:e})?.pointer,s=r?.sectionId,o=Ee({state:e},{sectionId:s}),l=e.contexts[e.contexts.length-1],c=o?.lines||[],p=c.findIndex(d=>d.id===r?.lineId)+1;if(p<c.length){let d=c[p],f=!Ze(e,"skipUnseenText");if(e.global.skipMode&&f&&!ha({state:e},{sectionId:s,lineId:d.id}))return Rr({state:e}),e;if(l&&!l.rollback&&Cr(l,{compatibilityAnchor:!0}),l){let b=wt(l),h=b.read?.lineId;h&&s&&Xr(e,{sectionId:s,lineId:h}),b.read={sectionId:s,lineId:d.id}}hs(e,{sectionId:s,lineId:d.id}),oa(e);let{activeInteraction:m}=sn(e,{sectionId:s,lineId:d.id});gs(e,i,m)}else{if(he(e))return console.warn("Scene replay reached the end of a section without finishSceneReplay; exiting replay."),zr(e),e;e.global.autoMode&&on({state:e}),e.global.skipMode&&Rr({state:e}),Xo(e)}return e},Q0=({state:e})=>{if(e.global.isLineCompleted)return e;if(e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition,he(e)?.sceneReplay.exitOnLineCompleted)return zr(e),e;let n=xe({state:e});e.global.autoMode&&!n&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:yr({state:e})}});let i=Le({state:e})?.pointer,a=i?.sectionId,r=i?.lineId;a&&r&&Xr(e,{sectionId:a,lineId:r});let s=e.global.nextLineConfig;return s?.auto?.enabled&&!n&&s.auto.trigger!=="fromStart"&&e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:s.auto.delay}}),e.global.pendingEffects.push({name:"render"}),e},Z0=({state:e},t)=>wp(e,{sectionId:t?.sectionId,screen:t?.screen}),eI=({state:e,rollbackActionBatchStack:t},n)=>{let i=n?._conditionalContinuation===!0;if(e.global.dialogueUIHidden&&!i)return bs({state:e,rollbackActionBatchStack:t}),e.global.autoMode&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:yr({state:e})}}),e;let a=xe({state:e});if(a?.source===yt&&n?.bypassChoice!==!0||a?.source===Or&&n?._interactionSource!==Or||a&&a.source!==yt&&a.source!==Or)return e;let r=he(e);if(r?.sceneReplay.finishOnNextAdvance)return e.global.isLineCompleted?(zr(e),e):(r.sceneReplay.exitOnLineCompleted=!0,e);let s=Le({state:e})?.pointer,o=s?.sectionId,l=Ee({state:e},{sectionId:o}),c=e.contexts[e.contexts.length-1],u=l?.lines||[],d=u.findIndex(f=>f.id===s?.lineId)+1;if(d<u.length){let f=u[d],m=!Ze(e,"skipUnseenText");if(e.global.skipMode&&m&&!ha({state:e},{sectionId:o,lineId:f.id})&&(Rr({state:e}),!i))return e;if(c&&!c.rollback&&Cr(c,{compatibilityAnchor:!0}),c){let h=wt(c),y=h.read?.lineId;y&&o&&Xr(e,{sectionId:o,lineId:y}),h.read={sectionId:o,lineId:f.id}}hs(e,{sectionId:o,lineId:f.id}),oa(e);let{activeInteraction:b}=sn(e,{sectionId:o,lineId:f.id});gs(e,a,b)}else{if(he(e))return console.warn("Scene replay reached the end of a section without finishSceneReplay; exiting replay."),zr(e),e;e.global.autoMode&&on({state:e}),e.global.skipMode&&Rr({state:e}),Xo(e)}return e},Oa=(e,t={})=>{let n=tn({state:e});return!n||t.formKey&&t.formKey!==n.key||t.formId&&t.formId!==n.id?null:n},rI=(e,t)=>{if(!t.variableId)throw new Error(`form field "${t.id}" requires variableId`);let n=e.projectData.resources?.variables?.[t.variableId],i=n?.scope,a=n?.type;if(Re(n))throw new Error(`Cannot update computed variable: ${t.variableId}`);if(n?.readonly===!0)throw new Error(`Cannot update readonly variable: ${t.variableId}`);if(qt(i,t.variableId),Vt(a,"set",t.variableId),he(e)&&i!=="context")throw new Error(`Cannot update ${i}-scoped variable "${t.variableId}" while a scene replay is active`);return{variableConfig:n,scope:i}},tI=(e,t)=>({id:e.id,key:e.key,valid:!0,values:V(t),fields:V(e.fields),fieldList:V(e.fieldList)}),nI=e=>{if(e.global.isLineCompleted)return;e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition;let t=Le({state:e})?.pointer,n=t?.sectionId,i=t?.lineId;n&&i&&Xr(e,{sectionId:n,lineId:i})},sI=({state:e},t={})=>{let n=Oa(e,t),i=t.field;if(!n?.fields?.[i])return e;let a=Xu(e,n.key),r=fs(t.value),s=n.fields[i],o=pa(s,r);return a.values[i]=r,a.touched[i]=!0,o?a.errors[i]=o:delete a.errors[i],e.global.pendingEffects.push({name:"render"}),e},iI=({state:e,rollbackActionBatchStack:t},n={})=>{let i=Oa(e,n);if(!i)return{submitted:!1,valid:!1,reason:"inactive"};let a=Xu(e,i.key);a.submitted=!0;let r={},s={};if(Object.entries(i.fields).forEach(([d,f])=>{let m=Object.prototype.hasOwnProperty.call(a.values,d)?a.values[d]:f.value,b=pa(f,m);a.touched[d]=!0,b&&(s[d]=b),r[d]=zu(f,m)}),a.errors=s,Object.keys(s).length>0)return e.global.pendingEffects.push({name:"render"}),{submitted:!0,valid:!1,errors:V(s),form:{id:i.id,key:i.key,values:V(r)}};let o=e.contexts[e.contexts.length-1];if(o?.rollback?.isRestoring)return{submitted:!1,valid:!1,reason:"restoring"};let l=!1,c=[],u=[];Object.entries(i.fields).forEach(([d,f])=>{let{scope:m}=rI(e,f),b=m==="context"?o.variables:e.global.variables,h=r[d];b[f.variableId]=zn(b[f.variableId],"set",h),m==="context"&&(l=!0,u.push({variableId:f.variableId,op:"set",value:h})),(m==="device"||m==="account")&&c.push({scope:m,path:`variables.${f.variableId}`,op:"set",value:V(b[f.variableId])})}),l&&rr(e,"updateVariable",{id:"submitForm",operations:u},t),ws(e,c);let p=tI(i,r);return nI(e),delete e.global.formDrafts[i.key],e.global.pendingEffects.push({name:"render"}),{submitted:!0,valid:!0,form:p}},oI=({state:e},t={})=>{let n=Oa(e,t);return n?(delete e.global.formDrafts?.[n.key],e.global.pendingEffects.push({name:"render"}),{cancelled:!0,form:{id:n.id,key:n.key,values:V(n.values),fields:V(n.fields),fieldList:V(n.fieldList)}}):{cancelled:!1,reason:"inactive"}},aI=({state:e,rollbackActionBatchStack:t},n)=>{let{id:i,operations:a=[]}=n;if(!i)throw new Error("updateVariable requires an id field");if(typeof i!="string"||!/^[a-zA-Z0-9]+$/.test(i))throw new Error(`updateVariable id must be alphanumeric, got: "${i}"`);let r=e.contexts[e.contexts.length-1];if(r?.rollback?.isRestoring)return e;let s=!1,o=[],l=[];return a.forEach(({variableId:c,op:u,value:p,roundTo:d})=>{let f=e.projectData.resources?.variables?.[c],m=f?.scope,b=f?.type;if(Re(f))throw new Error(`Cannot update computed variable: ${c}`);if(f?.readonly===!0)throw new Error(`Cannot update readonly variable: ${c}`);if(qt(m,c),Vt(b,u,c),Yn(b,u,p,c,{roundTo:d}),he(e)&&m!=="context")throw new Error(`Cannot update ${m}-scoped variable "${c}" while a scene replay is active`);let h=m==="context"?r.variables:e.global.variables;if(m==="context"){s=!0;let y={variableId:c,op:u,value:p};d!==void 0&&(y.roundTo=d),l.push(y)}h[c]=zn(h[c],u,p,{roundTo:d}),(m==="device"||m==="account")&&o.push({scope:m,path:`variables.${c}`,op:"set",value:V(h[c])})}),s&&rr(e,"updateVariable",{id:i,operations:l},t),ws(e,o),e.global.pendingEffects.push({name:"render"}),e},Xe=e=>(t,n)=>e({state:t},n),Np=e=>({variables:ot({variables:{...e.global?.variables??{},...$r(e)?.variables??{}},runtime:Pr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1}),runtime:Pr(e)}),lI=e=>{if(!q(e))throw new Error("conditional action payload must be an object");if(!Array.isArray(e.branches))throw new Error("conditional action requires branches array");if(e.branches.length===0)throw new Error("conditional action requires at least one branch")},cI=(e,t,n)=>{if(!q(e))throw new Error(`conditional branch at index ${t} must be an object`);if(!q(e.actions))throw new Error(`conditional branch at index ${t} requires actions object`);if(!Object.prototype.hasOwnProperty.call(e,"when")&&t!==n-1)throw new Error("conditional else branch must be the last branch")},uI=(e,t,n,i)=>{lI(t);for(let a=0;a<t.branches.length;a+=1){let r=t.branches[a];if(cI(r,a,t.branches.length),!(Object.prototype.hasOwnProperty.call(r,"when")&&!Nt(r.when,{...Np(e),...n?.bindings??{}}))){Ra(e,r.actions,n,[...i,"branches",String(a),"actions"]);return}}},pI=(e,t,n,i)=>{let a=n?.checkpoint;if(a?.randomOutcomeVersion!==dr)return;let r=i.join("."),s=n.randomOutcomeOrdinals,o=s.get(r)??0;s.set(r,o+1);let l=a.randomOutcomes?.find(p=>p.path===r&&p.ordinal===o);if(!l)return;if(t?.distribution?.type!==l.type)throw new Error(`recorded random outcome type does not match canonical action at ${r}`);let c=Hn(V(l.result),l.type);if(c.type==="integer"){if(!Mu(t.distribution)||c.value<t.distribution.min||c.value>t.distribution.max)throw new Error(`recorded random outcome does not match canonical action at ${r}`);Go(e,{id:"randomResult",operations:[{variableId:t.variableId,op:"set",value:c.value}]});return}let u=t.distribution.outcomes?.[c.outcomeIndex]?.actions;if(!q(u))throw new Error(`recorded random outcome does not match canonical action at ${r}`);Ra(e,u,n,[...i,"distribution","outcomes",String(c.outcomeIndex),"actions"])},fI={conditional:{replayLine:uI},random:{replayLine:pI},updateVariable:{recordSources:[Sr],replayLine:Go,replayRecorded:Go,persistInSaveSlot:!0},setNextLineConfig:{replayLine:Xe(jp)},setSaveLoadPagination:{recordSources:[Sr],replayLine:Xe(Wo),replayRecorded:Xe(Wo),persistInSaveSlot:!0},incrementSaveLoadPagination:{recordSources:[Sr],replayLine:Xe(Jo),replayRecorded:Xe(Jo),persistInSaveSlot:!0},decrementSaveLoadPagination:{recordSources:[Sr],replayLine:Xe(Qo),replayRecorded:Xe(Qo),persistInSaveSlot:!0},setMenuPage:{recordSources:[Sr],replayLine:Xe(Zo),replayRecorded:Xe(Zo),persistInSaveSlot:!0},setMenuEntryPoint:{recordSources:[Sr],replayLine:Xe(ea),replayRecorded:Xe(ea),persistInSaveSlot:!0},finishSceneReplay:{replayLine:Xe(Rp)}},ks=e=>fI[e]??null,dI=e=>ks(e)?.persistInSaveSlot===!0,mI=(e,t)=>{let n=ks(e)?.recordSources;return Array.isArray(n)&&n.includes(t)},yI=(e,t,n)=>{ks(t)?.replayRecorded?.(e,n)},hI=(e,t,n,i,a)=>{let r=ks(t);if(!r?.replayLine)return;if(t==="conditional"||t==="random"){r.replayLine(e,n,i,a);return}let s=i?.bindings??{},o=Ft({[t]:n},{...Np(e),...s})[t];r.replayLine(e,o)},Ra=(e,t,n,i)=>{let a=Kn(t);Jn(a);for(let[r,s]of a)hI(e,r,s,n,[...i,r])},gI=e=>e?.returnable!==!1,Dp=(e,t)=>{if(t>=0)return e.currentIndex+t;let n=Math.abs(t);for(let i=e.currentIndex-1;i>=0;i-=1)if(gI(e.timeline[i])&&(n-=1,n===0))return i;return-1},Tp=({state:e},t)=>{let{offset:n}=t;if(n===void 0||typeof n!="number")return console.warn("selectLineIdByOffset requires a numeric offset"),null;let i=e.contexts[e.contexts.length-1];if(!i)return null;let a=i.rollback;if(!Array.isArray(a?.timeline)||typeof a?.currentIndex!="number")return null;let r=Dp(a,n);if(r<0||r>=a.timeline.length)return null;let s=a.timeline[r];return{sectionId:s.sectionId,lineId:s.lineId}},Lp=({state:e})=>Tp({state:e},{offset:-1})!==null,bI=({state:e},t)=>{let{offset:n=-1}=t;if(n>=0)throw new Error("rollbackByOffset requires a negative offset");let i=e.contexts?.[e.contexts.length-1];if(!i)return e;let a=Cr(i,{compatibilityAnchor:!i.rollback}),r=Dp(a,n);return r<0||r>=a.timeline.length?e:Zu(e,r)},wI=({state:e},t)=>{let{sectionId:n,lineId:i}=t,a=e.contexts[e.contexts.length-1];if(!a)throw new Error("No context available for rollbackToLine");let r=Cr(a,{compatibilityAnchor:!a.rollback}),o=r.timeline.slice(0,r.currentIndex+1).findLastIndex(l=>l.sectionId===n&&l.lineId===i);if(o===-1)throw new Error(`Line ${i} not found in section ${n} rollback timeline`);return o===r.currentIndex?e:Zu(e,o)},II=()=>({lineEntryId:1,rollbackCheckpointLineEntryId:1,autoSessionId:0,skipSessionId:0,rollbackAuthoredSuppression:null}),zo=(e,t)=>{let n=e[t];if(!Number.isSafeInteger(n)||n<0)throw new RangeError(`Internal playback ${t} is invalid`);if(n===Number.MAX_SAFE_INTEGER)throw new RangeError(`Internal playback ${t} is exhausted`);return e[t]=n+1,e[t]},Eu=e=>e.contexts?.[e.contexts.length-1]?.pointers?.read??null,xu=e=>{let t=e.contexts?.[e.contexts.length-1];return Number.isInteger(t?.rollback?.currentIndex)?t.rollback.currentIndex:null},vI=(e,t)=>e?.sectionId===t?.sectionId&&e?.lineId===t?.lineId,Mp=e=>{let t=e.global?.nextLineConfig?.auto;return t?.enabled!==!0?{enabled:!1}:{enabled:!0,trigger:t.trigger==="fromStart"?"fromStart":"fromComplete",delayMs:t.delay??1e3}},$a=e=>JSON.stringify(Mp(e)),kI=({actionName:e,args:t,state:n,previousState:i})=>{let a=Eu(i),r=Eu(n);if(!vI(a,r)||i.contexts?.length!==n.contexts?.length||(e==="rollbackByOffset"||e==="rollbackToLine")&&xu(i)!==xu(n))return!0;let s=t[0]??{};if(e==="jumpToLine"){let o=s.sectionId??a?.sectionId;return typeof s.lineId=="string"&&r?.sectionId===o&&r?.lineId===s.lineId&&n.global.isLineCompleted===!1}if(e==="sectionTransition"||e==="resetStoryAtSection"){let o=mr(n.projectData,s.sectionId).section,l=bp(o)?.id;return typeof l=="string"&&r?.sectionId===s.sectionId&&r?.lineId===l&&n.global.isLineCompleted===!1}if(e==="loadSlot"){let o=s.slotId;return Object.prototype.hasOwnProperty.call(i.global?.saveSlots??{},Gr(o))}return!1},AI=({actionName:e,args:t,state:n,transactionalMetadata:i,previousState:a})=>{if(kI({actionName:e,args:t,state:n,previousState:a})){let u=zo(i,"lineEntryId");e==="rollbackByOffset"||e==="rollbackToLine"?i.rollbackAuthoredSuppression={lineEntryId:u,configKey:$a(n)}:i.rollbackAuthoredSuppression=null,i.rollbackCheckpointLineEntryId=e==="jumpToLine"?null:u}let s=(a.contexts?.length??0)>(n.contexts?.length??0),o=e==="startAutoMode"||e==="startSkipMode"?xe({state:a}):null;n.global.autoMode===!0&&(e==="startAutoMode"&&!o||e==="toggleAutoMode"&&a.global.autoMode!==!0||s&&a.global.autoMode!==!0)&&zo(i,"autoSessionId"),n.global.skipMode===!0&&(e==="startSkipMode"&&!o||e==="toggleSkipMode"&&a.global.skipMode!==!0||s&&a.global.skipMode!==!0)&&zo(i,"skipSessionId")},PI=({state:e,transactionalMetadata:t})=>{let n=t.rollbackAuthoredSuppression;n&&(n.lineEntryId!==t.lineEntryId||n.configKey!==$a(e))&&(t.rollbackAuthoredSuppression=null)},EI=({state:e,playbackOwnership:t})=>{let n=xe({state:e}),i=t.lineEntryId,a=!n&&e.global.autoMode===!0&&e.global.isLineCompleted===!0,r=!n&&e.global.skipMode===!0,s=Mp(e),o=t.rollbackAuthoredSuppression,l=!n&&s.enabled&&(s.trigger==="fromStart"||e.global.isLineCompleted===!0)&&!(o?.lineEntryId===i&&o.configKey===$a(e)),c=a?dp(e):null;return{auto:a?{owner:{sessionId:t.autoSessionId,lineEntryId:i},delayMs:Yo({text:c,baseDelay:Ze(e,"autoForwardDelay"),speed:Ze(e,"autoForwardSpeed")}),contentKey:c}:null,skip:r?{owner:{sessionId:t.skipSessionId},delayMs:80}:null,authored:l?{owner:{lineEntryId:i},delayMs:s.delayMs,trigger:s.trigger}:null}},xI=({playbackOwnership:e})=>e.lineEntryId,qp=(e,t={})=>{let n=gw(e),i=[],a=t.createPlaybackOwnership??II;if(typeof a!="function")throw new TypeError("createPlaybackOwnership must be a function");return Vl(n,{selectPendingEffects:ww,selectSkipMode:ep,selectAutoMode:Iw,selectIsChoiceVisible:cp,selectIsFormVisible:Pw,selectActiveInteraction:xe,selectActiveForm:tn,selectDialogueUIHidden:rp,selectDialogueHistory:tp,selectConfirmDialog:Aw,selectIsLineAccountViewed:ha,selectIsResourceAccountViewed:xw,selectImageGalleryConfig:Sw,selectImageGallery:np,selectMusicRoomConfig:Rw,selectMusicRoom:ip,selectSceneReplayConfig:$w,selectSceneReplay:ap,selectIsSceneReplayActive:Cw,selectActiveSceneReplayEntry:_w,selectNextLineConfig:jw,selectSystemState:Nw,selectAchievements:Dw,selectAchievement:Tw,selectSaveSlotMap:up,selectSaveSlots:Uw,selectSaveSlot:Lw,selectLocalizationPackages:pp,selectRuntime:Pa,selectRuntimeValue:Mw,selectAllVariables:Ea,selectCurrentPointer:Le,selectSection:Ee,selectCurrentLine:nn,selectPresentationState:fp,selectAutoForwardTimerDelay:yr,selectPresentationChanges:qw,selectSectionLineChanges:Fw,selectSaveSlotPage:xa,selectCurrentPageSlots:Bw,selectRenderState:zw,selectOverlayStack:bw,selectLineIdByOffset:Tp,selectCanRollback:Lp,selectRollbackCursor:lw,selectDesiredPlaybackTimers:EI,selectPlaybackLineEntryId:xI,startAutoMode:yp,stopAutoMode:on,toggleAutoMode:Zw,startSkipMode:hp,stopSkipMode:Rr,toggleSkipMode:e0,showDialogueUI:bs,hideDialogueUI:gp,toggleDialogueUI:r0,setDialogueTextSpeed:t0,setAutoForwardDelay:n0,setAutoForwardSpeed:s0,setSkipUnseenText:i0,setSkipTransitionsAndAnimations:o0,setSoundVolume:a0,setMusicVolume:l0,setMuteAll:c0,setSaveLoadPagination:Wo,incrementSaveLoadPagination:Jo,decrementSaveLoadPagination:Qo,setMenuPage:Zo,setMenuEntryPoint:ea,showConfirmDialog:Xw,hideConfirmDialog:Gw,resetStoryAtSection:m0,clearPendingEffects:u0,appendPendingEffect:p0,completeAchievement:f0,setAchievementProgress:d0,beginRollbackActionBatch:pw,endRollbackActionBatch:fw,ensureRandomReplayOccurrence:dw,recordRandomOutcome:mw,markRollbackCheckpointTransient:cw,markSavedRollbackCheckpointTransient:uw,recordCurrentDialogueHistory:kw,addViewedLine:h0,addViewedResource:g0,showImageGalleryVariant:b0,moveToPreviousImageGalleryVariant:w0,moveToNextImageGalleryVariant:I0,clearImageGallerySelection:v0,moveToImageGalleryPage:k0,moveToNextImageGalleryPage:A0,moveToPreviousImageGalleryPage:P0,playMusicRoomTrack:x0,playMusicRoom:S0,pauseMusicRoom:O0,stopMusicRoom:R0,seekMusicRoom:$0,playPreviousMusicRoomTrack:C0,playNextMusicRoomTrack:_0,clearMusicRoomSelection:j0,moveToMusicRoomPage:N0,moveToNextMusicRoomPage:D0,moveToPreviousMusicRoomPage:T0,musicRoomSoundReady:U0,musicRoomSoundProgress:B0,musicRoomSoundComplete:Y0,musicRoomSoundError:z0,startSceneReplay:L0,finishSceneReplay:Rp,exitSceneReplay:M0,moveToSceneReplayPage:q0,moveToNextSceneReplayPage:V0,moveToPreviousSceneReplayPage:F0,setNextLineConfig:jp,saveSlot:X0,loadSlot:G0,updateProjectData:H0,updateLocalizationPackage:K0,sectionTransition:Z0,jumpToLine:W0,nextLine:J0,markLineCompleted:Q0,rollbackToLine:wI,rollbackByOffset:bI,pushOverlay:Hw,popOverlay:Kw,replaceLastOverlay:Ww,clearOverlays:Jw,updateFormField:sI,submitForm:iI,cancelForm:oI,updateVariable:aI,nextLineFromSystem:eI},{createTransactionalMetadata:a,updateTransactionalMetadata:AI,finalizeTransactionalMetadata:PI,transformActionFirstArgument:(s,o)=>({state:s,rollbackActionBatchStack:i,playbackOwnership:o}),transformSelectorFirstArgument:(s,o)=>({state:s,playbackOwnership:o})})};var SI="route-engine",OI="projectPersistence";var Fp=()=>({saveSlots:{},globalDeviceVariables:{},globalAccountVariables:{},globalRuntime:{},accountViewedRegistry:{},accountReplayRegistry:{}}),Ie=e=>Object.prototype.toString.call(e)==="[object Object]",Vp="variables.",RI=(e={})=>{let t=Ie(e)?e:{};return{sections:(Array.isArray(t.sections)?t.sections:[]).map(n=>typeof n=="string"||typeof n=="number"?{sectionId:String(n)}:!Ie(n)||typeof n.sectionId!="string"||n.sectionId.length===0?null:{sectionId:n.sectionId,...typeof n.lineId=="string"?{lineId:n.lineId}:{}}).filter(Boolean),resources:(Array.isArray(t.resources)?t.resources:[]).map(n=>typeof n=="string"||typeof n=="number"?{resourceId:String(n)}:!Ie(n)||typeof n.resourceId!="string"||n.resourceId.length===0?null:{resourceId:n.resourceId}).filter(Boolean)}},$I=(e={})=>{let t=Ie(e)?e:{};return{sections:(Array.isArray(t.sections)?t.sections:[]).map(n=>typeof n=="string"||typeof n=="number"?{sectionId:String(n)}:!Ie(n)||typeof n.sectionId!="string"||n.sectionId.length===0?null:{sectionId:n.sectionId,...typeof n.lastLineId=="string"?{lastLineId:n.lastLineId}:{}}).filter(Boolean),resources:(Array.isArray(t.resources)?t.resources:[]).map(n=>typeof n=="string"||typeof n=="number"?{resourceId:String(n)}:!Ie(n)||typeof n.resourceId!="string"||n.resourceId.length===0?null:{resourceId:n.resourceId}).filter(Boolean)}},CI=(e,t)=>{let n=$I(e),i=RI(t),a=n.sections.map(s=>({...s})),r=n.resources.map(s=>({...s}));return i.sections.forEach(s=>{let o=a.find(l=>l.sectionId===s.sectionId);if(!o){a.push({sectionId:s.sectionId,...s.lineId===void 0?{}:{lastLineId:s.lineId}});return}if(o.lastLineId!==void 0){if(s.lineId===void 0){delete o.lastLineId;return}o.lastLineId=s.lineId}}),i.resources.forEach(s=>{r.find(l=>l.resourceId===s.resourceId)||r.push({...s})}),{sections:a,resources:r}},_I=(e={})=>{let t=Ie(e)?e:{},n=Array.isArray(t.sceneIds)?t.sceneIds:[];return{sceneIds:[...new Set(n.filter(i=>typeof i=="string"&&i.length>0))]}},jI=(e,t)=>{let n=_I(e),i=Ie(t)&&Array.isArray(t.sceneIds)?t.sceneIds:[];return{sceneIds:[...new Set([...n.sceneIds,...i.filter(a=>typeof a=="string"&&a.length>0)])]}},Up=(e={})=>{let t=Ie(e)?e:{};return{saveSlots:Ie(t.saveSlots)?t.saveSlots:{},globalDeviceVariables:Ie(t.globalDeviceVariables)?t.globalDeviceVariables:{},globalAccountVariables:Ie(t.globalAccountVariables)?t.globalAccountVariables:{},globalRuntime:Ie(t.globalRuntime)?t.globalRuntime:{},accountViewedRegistry:Ie(t.accountViewedRegistry)?t.accountViewedRegistry:{},accountReplayRegistry:Ie(t.accountReplayRegistry)?t.accountReplayRegistry:{}}},NI=(e=[])=>{if(e===void 0)return[];if(!Array.isArray(e))throw new Error("applyScopedDataUpdates requires an updates array.");return e.map((t,n)=>{if(!Ie(t))throw new Error(`Malformed applyScopedDataUpdates.updates[${n}] entry.`);let i=t.path?.startsWith(Vp)?t.path.slice(Vp.length):null;if(i!==null){if(!["device","account"].includes(t.scope))throw new Error(`Unsupported applyScopedDataUpdates scope "${t.scope}" at updates[${n}].`);if(i.length===0)throw new Error(`Malformed applyScopedDataUpdates path "${t.path}" at updates[${n}].`);if(t.op!=="set")throw new Error(`Unsupported applyScopedDataUpdates operation "${t.op}" at updates[${n}].`);return{scope:t.scope,path:t.path,op:t.op,value:t.value,variableId:i}}if(t.path==="viewedRegistry"){if(t.scope!=="account")throw new Error(`Unsupported applyScopedDataUpdates scope "${t.scope}" at updates[${n}].`);if(t.op!=="markViewed")throw new Error(`Unsupported applyScopedDataUpdates operation "${t.op}" at updates[${n}].`);return t}if(t.path==="replayRegistry"){if(t.scope!=="account")throw new Error(`Unsupported applyScopedDataUpdates scope "${t.scope}" at updates[${n}].`);if(t.op!=="unlock")throw new Error(`Unsupported applyScopedDataUpdates operation "${t.op}" at updates[${n}].`);if(!Ie(t.value)||!Array.isArray(t.value.sceneIds)||t.value.sceneIds.length===0||t.value.sceneIds.some(a=>typeof a!="string"||a.length===0))throw new Error(`Malformed applyScopedDataUpdates replayRegistry value at updates[${n}].`);return{...t,value:{sceneIds:[...new Set(t.value.sceneIds)]}}}throw typeof t.path!="string"?new Error(`Malformed applyScopedDataUpdates path at updates[${n}].`):new Error(`Unsupported applyScopedDataUpdates path "${t.path}" at updates[${n}].`)})},DI=(e,t)=>{let n={};return NI(t).forEach(i=>{if(i.path==="viewedRegistry"){n.accountViewedRegistry=CI(n.accountViewedRegistry??e.accountViewedRegistry,i.value);return}if(i.path==="replayRegistry"){n.accountReplayRegistry=jI(n.accountReplayRegistry??e.accountReplayRegistry,i.value);return}let a=i.scope==="device"?"globalDeviceVariables":"globalAccountVariables";n[a]={...e[a],...n[a],[i.variableId]:i.value}}),n},It=e=>{if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null},TI=e=>{let t=It(e);if(!t)throw new Error("createIndexedDbPersistence requires a non-empty namespace.");return t},LI=e=>{let t=e??globalThis.indexedDB;if(!t)throw new Error("IndexedDB is not available in this environment.");return t},MI=({indexedDB:e,databaseName:t,objectStoreName:n})=>new Promise((i,a)=>{let r=e.open(t,1);r.onupgradeneeded=()=>{let s=r.result;s.objectStoreNames.contains(n)||s.createObjectStore(n,{keyPath:"namespace"})},r.onsuccess=()=>{i(r.result)},r.onerror=()=>{a(r.error??new Error(`Failed to open IndexedDB database "${t}".`))}}),qI=async({databasePromise:e,objectStoreName:t,namespace:n})=>{let i=await e;return new Promise((a,r)=>{let l=i.transaction(t,"readonly").objectStore(t).get(n);l.onsuccess=()=>{a(l.result??null)},l.onerror=()=>{r(l.error??new Error(`Failed to read persisted namespace "${n}" from IndexedDB.`))}})},ln=async({databasePromise:e,objectStoreName:t,namespace:n,patch:i})=>{let a=await e;return new Promise((r,s)=>{let o=a.transaction(t,"readwrite"),l=o.objectStore(t),c=l.get(n),u=!1,p=f=>{u||(u=!0,s(f))},d=()=>{u||(u=!0,r())};c.onerror=()=>{p(c.error??new Error(`Failed to read persisted namespace "${n}" before updating IndexedDB.`))},c.onsuccess=()=>{let f=Up(c.result),m=typeof i=="function"?i(f):i,b={namespace:n,version:1,...Fp(),...f,...m},h=l.put(b);h.onerror=()=>{p(h.error??new Error(`Failed to persist namespace "${n}" to IndexedDB.`))}},o.oncomplete=()=>{d()},o.onerror=()=>{p(o.error??new Error(`IndexedDB transaction failed while updating namespace "${n}".`))},o.onabort=()=>{p(o.error??new Error(`IndexedDB transaction aborted while updating namespace "${n}".`))}})},VI=async({databasePromise:e,objectStoreName:t,namespace:n})=>{let i=await e;return new Promise((a,r)=>{let s=i.transaction(t,"readwrite"),l=s.objectStore(t).delete(n),c=!1,u=d=>{c||(c=!0,r(d))},p=()=>{c||(c=!0,a())};l.onerror=()=>{u(l.error??new Error(`Failed to clear persisted namespace "${n}" from IndexedDB.`))},s.oncomplete=()=>{p()},s.onerror=()=>{u(s.error??new Error(`IndexedDB transaction failed while clearing namespace "${n}".`))},s.onabort=()=>{u(s.error??new Error(`IndexedDB transaction aborted while clearing namespace "${n}".`))}})},Ca=(e={})=>{let{indexedDB:t,databaseName:n=SI,objectStoreName:i=OI,namespace:a}=e,r=LI(t),s=TI(a),o=MI({indexedDB:r,databaseName:n,objectStoreName:i});return{namespace:s,load:async()=>{let l=await qI({databasePromise:o,objectStoreName:i,namespace:s});return{...Fp(),...Up(l)}},clear:async()=>VI({databasePromise:o,objectStoreName:i,namespace:s}),saveSlots:async l=>ln({databasePromise:o,objectStoreName:i,namespace:s,patch:{saveSlots:Ie(l)?l:{}}}),saveGlobalDeviceVariables:async l=>ln({databasePromise:o,objectStoreName:i,namespace:s,patch:{globalDeviceVariables:Ie(l)?l:{}}}),saveGlobalAccountVariables:async l=>ln({databasePromise:o,objectStoreName:i,namespace:s,patch:{globalAccountVariables:Ie(l)?l:{}}}),saveGlobalRuntime:async l=>ln({databasePromise:o,objectStoreName:i,namespace:s,patch:{globalRuntime:Ie(l)?l:{}}}),applyScopedDataUpdates:async l=>ln({databasePromise:o,objectStoreName:i,namespace:s,patch:c=>DI(c,l)})}},FI=Ca;var Xp=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),_a=Object.freeze({volume:100,pan:0,playbackRate:1}),UI=["src","startAt","endAt","startDelayMs"],Bp=(e,t)=>{if(!e)return null;let n=e.children??[];if(n.length!==1)throw new Error(`[${t}.audioEffects] Audio effects require exactly one BGM sound on each present side.`);return n[0]},BI=(e,t)=>e?.id===t?.id&&UI.every(n=>(e?.[n]??(n==="endAt"?null:0))===(t?.[n]??(n==="endAt"?null:0))),YI=(e,t)=>JSON.stringify(e)===JSON.stringify(t),zI=(e,t)=>{let n=e?.playback?.speed??1;if(typeof n!="number"||!Number.isFinite(n)||n<=0)throw new Error(`[${t}.audioEffects.playback.speed] Audio effect speed must be a finite number greater than 0.`);return n},XI=(e,t,n)=>({...Xp(e,"startValue")?{startValue:e.startValue}:{},value:e.value==="target"?n:e.value,delay:(e.delay??0)/t,duration:e.duration/t,easing:e.easing??"linear",...e.relative===!0?{relative:!0}:{}}),Yp=(e,t,n,i)=>{if(e)return{...t==="enter"?{initialValue:0}:{},keyframes:[{value:t==="exit"?0:i,delay:(e.delay??0)/n,duration:e.duration/n,easing:e.easing??"linear"}]}},GI=({property:e,authored:t,target:n,speed:i,resourcePath:a})=>{let r=t.keyframes.at(-1);if(r?.value!=="target"||r.relative===!0)throw new Error(`[${a}.tween.${e}.keyframes] The final keyframe must use the absolute value "target".`);return{keyframes:t.keyframes.map(s=>XI(s,i,n))}},zp=(e,t)=>({id:`audio-effect:${e.occurrenceId}`,type:"audio-transition",targetId:t}),Gp=({occurrence:e,resources:t={},previousChannel:n,nextChannel:i})=>{if(!e?.selection)return null;let a=e.selection,r=e.actionPath??"bgm",s=a.resourceId,o=`resources.audioEffects.${s}`,l=t.audioEffects?.[s];if(!l)throw new Error(`[${r}.audioEffects.resourceId]
3
+ [${o}] Unknown audio effect resource "${s}".`);let c=zI(a,r),u=Bp(n,r),p=Bp(i,r);if(!u&&!p)return null;if(u&&p&&u.id!==p.id)throw new Error(`[${r}.audioEffects] Audio effects require a stable BGM sound id across a handoff.`);let d=u?.id??p.id,f=BI(u,p),m=YI(u,p);if(l.type==="transition"){if(f){if(m)return null;throw new Error(`[${r}.audioEffects]
4
+ [${o}] Audio effect resource "${s}" has type "transition", but the BGM action only updates a retained sound. Use an update resource.`)}let h={},y=Yp(u?l.prev?.fade:void 0,"exit",c,0),w=Yp(p?l.next?.fade:void 0,"enter",c,p?.volume??_a.volume);return y&&(h.exit=y),w&&(h.enter=w),Object.keys(h).length===0?null:{...zp(e,d),properties:{volume:h}}}if(l.type!=="update")throw new Error(`[${o}.type] Unsupported audio effect type "${l.type}".`);if(!u||!p||!f)throw new Error(`[${r}.audioEffects]
5
+ [${o}] Audio effect resource "${s}" has type "update", but the BGM action changes source identity. Use a transition resource.`);if(m)return null;let b={};for(let h of["volume","pan","playbackRate"]){if(!Xp(l.tween,h))continue;let y=u[h]??_a[h],w=p[h]??_a[h];Object.is(y,w)||(b[h]={update:GI({property:h,authored:l.tween[h],target:w,speed:c,resourcePath:o})})}if(Object.keys(b).length===0)throw new Error(`[${r}.audioEffects]
6
+ [${o}] Audio update resource "${s}" does not animate a BGM sound property changed by this action.`);return{...zp(e,d),properties:b}};var sf=of;var HI={type:"object",properties:{resourceId:{type:"string"},animationName:{type:"string"},animationSpeed:{type:"number"},loop:{type:"boolean"},colorId:{type:"string"},transformId:{type:"string"},x:{type:"number"},y:{type:"number"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},flipX:{type:"boolean"},flipY:{type:"boolean"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"},alpha:{type:"number",minimum:0,maximum:1},opacity:{type:"number",minimum:0,maximum:1},blur:{$ref:"#/definitions/backgroundBlur"},filters:{$ref:"#/definitions/shaderFilters"},animations:{$ref:"#/definitions/animationSelection"}},additionalProperties:!1},Je=Object.prototype.hasOwnProperty,KI={anyOf:[{type:"null"},{type:"object",properties:{x:{type:"number",minimum:0},y:{type:"number",minimum:0},quality:{type:"number",minimum:1},kernelSize:{type:"integer",enum:[5,7,9,11,13,15]},repeatEdgePixels:{type:"boolean"}},required:["x","y"],additionalProperties:!1}]};function qe(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0,o=s,l=!1,c=s;if(e!==null){let p={instancePath:t,schemaPath:"#/anyOf/0/type",keyword:"type",params:{type:"null"},message:"must be null"};r===null?r=[p]:r.push(p),s++}var u=c===s;if(l=l||u,!l){let p=s;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.x===void 0){let f={instancePath:t,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"x"},message:"must have required property 'x'"};r===null?r=[f]:r.push(f),s++}if(e.y===void 0){let f={instancePath:t,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"y"},message:"must have required property 'y'"};r===null?r=[f]:r.push(f),s++}for(let f in e)if(!(f==="x"||f==="y"||f==="quality"||f==="kernelSize"||f==="repeatEdgePixels")){let m={instancePath:t,schemaPath:"#/anyOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:f},message:"must NOT have additional properties"};r===null?r=[m]:r.push(m),s++}if(e.x!==void 0){let f=e.x;if(typeof f=="number"){if(f<0||isNaN(f)){let m={instancePath:t+"/x",schemaPath:"#/anyOf/1/properties/x/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[m]:r.push(m),s++}}else{let m={instancePath:t+"/x",schemaPath:"#/anyOf/1/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[m]:r.push(m),s++}}if(e.y!==void 0){let f=e.y;if(typeof f=="number"){if(f<0||isNaN(f)){let m={instancePath:t+"/y",schemaPath:"#/anyOf/1/properties/y/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[m]:r.push(m),s++}}else{let m={instancePath:t+"/y",schemaPath:"#/anyOf/1/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[m]:r.push(m),s++}}if(e.quality!==void 0){let f=e.quality;if(typeof f=="number"){if(f<1||isNaN(f)){let m={instancePath:t+"/quality",schemaPath:"#/anyOf/1/properties/quality/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};r===null?r=[m]:r.push(m),s++}}else{let m={instancePath:t+"/quality",schemaPath:"#/anyOf/1/properties/quality/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[m]:r.push(m),s++}}if(e.kernelSize!==void 0){let f=e.kernelSize;if(!(typeof f=="number"&&!(f%1)&&!isNaN(f))){let m={instancePath:t+"/kernelSize",schemaPath:"#/anyOf/1/properties/kernelSize/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[m]:r.push(m),s++}if(!(f===5||f===7||f===9||f===11||f===13||f===15)){let m={instancePath:t+"/kernelSize",schemaPath:"#/anyOf/1/properties/kernelSize/enum",keyword:"enum",params:{allowedValues:KI.anyOf[1].properties.kernelSize.enum},message:"must be equal to one of the allowed values"};r===null?r=[m]:r.push(m),s++}}if(e.repeatEdgePixels!==void 0&&typeof e.repeatEdgePixels!="boolean"){let f={instancePath:t+"/repeatEdgePixels",schemaPath:"#/anyOf/1/properties/repeatEdgePixels/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[f]:r.push(f),s++}}else{let f={instancePath:t,schemaPath:"#/anyOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[f]:r.push(f),s++}var u=p===s;l=l||u}if(l)s=o,r!==null&&(o?r.length=o:r=null);else{let p={instancePath:t,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[p]:r.push(p),s++}return qe.errors=r,s===0}var $e=Kp().default;function Ps(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.id===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[o]:r.push(o),s++}if(e.type===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};r===null?r=[o]:r.push(o),s++}if(e.id!==void 0){let o=e.id;if(typeof o=="string"){if($e(o)<1){let l={instancePath:t+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}}if(e.type!==void 0&&e.type!=="shader"){let o={instancePath:t+"/type",schemaPath:"#/properties/type/const",keyword:"const",params:{allowedValue:"shader"},message:"must be equal to constant"};r===null?r=[o]:r.push(o),s++}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Ps.errors=r,s===0}function nr(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(Array.isArray(e)){let o=e.length;for(let l=0;l<o;l++)Ps(e[l],{instancePath:t+"/"+l,parentData:e,parentDataProperty:l,rootData:a})||(r=r===null?Ps.errors:r.concat(Ps.errors),s=r.length)}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[o]:r.push(o),s++}return nr.errors=r,s===0}var WI={type:"object",properties:{continuity:{type:"string",enum:["render","persistent"]},speed:{type:"number",exclusiveMinimum:0},loop:{type:"boolean"}},additionalProperties:!1};function Es(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let o in e)if(!(o==="continuity"||o==="speed"||o==="loop")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.continuity!==void 0){let o=e.continuity;if(typeof o!="string"){let l={instancePath:t+"/continuity",schemaPath:"#/properties/continuity/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(!(o==="render"||o==="persistent")){let l={instancePath:t+"/continuity",schemaPath:"#/properties/continuity/enum",keyword:"enum",params:{allowedValues:WI.properties.continuity.enum},message:"must be equal to one of the allowed values"};r===null?r=[l]:r.push(l),s++}}if(e.speed!==void 0){let o=e.speed;if(typeof o=="number"){if(o<=0||isNaN(o)){let l={instancePath:t+"/speed",schemaPath:"#/properties/speed/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/speed",schemaPath:"#/properties/speed/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let o={instancePath:t+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Es.errors=r,s===0}function ce(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.resourceId===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!(o==="resourceId"||o==="playback")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let o={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}e.playback!==void 0&&(Es(e.playback,{instancePath:t+"/playback",parentData:e,parentDataProperty:"playback",rootData:a})||(r=r===null?Es.errors:r.concat(Es.errors),s=r.length))}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return ce.errors=r,s===0}function xs(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let o in e)if(!Je.call(HI.properties,o)){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let o={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.animationName!==void 0&&typeof e.animationName!="string"){let o={instancePath:t+"/animationName",schemaPath:"#/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.animationSpeed!==void 0&&typeof e.animationSpeed!="number"){let o={instancePath:t+"/animationSpeed",schemaPath:"#/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let o={instancePath:t+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}if(e.colorId!==void 0&&typeof e.colorId!="string"){let o={instancePath:t+"/colorId",schemaPath:"#/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.transformId!==void 0&&typeof e.transformId!="string"){let o={instancePath:t+"/transformId",schemaPath:"#/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.x!==void 0&&typeof e.x!="number"){let o={instancePath:t+"/x",schemaPath:"#/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.y!==void 0&&typeof e.y!="number"){let o={instancePath:t+"/y",schemaPath:"#/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.anchorX!==void 0&&typeof e.anchorX!="number"){let o={instancePath:t+"/anchorX",schemaPath:"#/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.anchorY!==void 0&&typeof e.anchorY!="number"){let o={instancePath:t+"/anchorY",schemaPath:"#/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.scaleX!==void 0&&typeof e.scaleX!="number"){let o={instancePath:t+"/scaleX",schemaPath:"#/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.scaleY!==void 0&&typeof e.scaleY!="number"){let o={instancePath:t+"/scaleY",schemaPath:"#/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.flipX!==void 0&&typeof e.flipX!="boolean"){let o={instancePath:t+"/flipX",schemaPath:"#/properties/flipX/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}if(e.flipY!==void 0&&typeof e.flipY!="boolean"){let o={instancePath:t+"/flipY",schemaPath:"#/properties/flipY/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}if(e.rotation!==void 0&&typeof e.rotation!="number"){let o={instancePath:t+"/rotation",schemaPath:"#/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.originX!==void 0&&typeof e.originX!="number"){let o={instancePath:t+"/originX",schemaPath:"#/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.originY!==void 0&&typeof e.originY!="number"){let o={instancePath:t+"/originY",schemaPath:"#/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.alpha!==void 0){let o=e.alpha;if(typeof o=="number"){if(o>1||isNaN(o)){let l={instancePath:t+"/alpha",schemaPath:"#/properties/alpha/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[l]:r.push(l),s++}if(o<0||isNaN(o)){let l={instancePath:t+"/alpha",schemaPath:"#/properties/alpha/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/alpha",schemaPath:"#/properties/alpha/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.opacity!==void 0){let o=e.opacity;if(typeof o=="number"){if(o>1||isNaN(o)){let l={instancePath:t+"/opacity",schemaPath:"#/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[l]:r.push(l),s++}if(o<0||isNaN(o)){let l={instancePath:t+"/opacity",schemaPath:"#/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/opacity",schemaPath:"#/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}e.blur!==void 0&&(qe(e.blur,{instancePath:t+"/blur",parentData:e,parentDataProperty:"blur",rootData:a})||(r=r===null?qe.errors:r.concat(qe.errors),s=r.length)),e.filters!==void 0&&(nr(e.filters,{instancePath:t+"/filters",parentData:e,parentDataProperty:"filters",rootData:a})||(r=r===null?nr.errors:r.concat(nr.errors),s=r.length)),e.animations!==void 0&&(ce(e.animations,{instancePath:t+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return xs.errors=r,s===0}function of(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return xs(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?xs.errors:r.concat(xs.errors),s=r.length),of.errors=r,s===0}var af=lf;var Wp={type:"object",properties:{sounds:{type:"array",items:{$ref:"#/definitions/audioSound"}},resourceId:{type:"string"},loop:{type:"boolean"},interruption:{type:"string",enum:["immediate","loopEnd"]},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},startDelayMs:{type:"number",minimum:0},audioEffects:{$ref:"#/definitions/audioEffectSelection"}},allOf:[{not:{required:["resourceId","sounds"]}},{not:{required:["startDelayMs","sounds"]}},{if:{required:["audioEffects"]},then:{required:["sounds"]}}],additionalProperties:!1},Jp={type:"object",properties:{id:{type:"string",minLength:1},resourceId:{type:"string",minLength:1},loop:{type:"boolean"},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},startDelayMs:{type:"number",minimum:0},playbackRate:{type:"number",minimum:0},startAt:{type:"number",minimum:0},endAt:{type:["number","null"],minimum:0}},required:["id","resourceId"],additionalProperties:!1};function Me(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.id===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[o]:r.push(o),s++}if(e.resourceId===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!Je.call(Jp.properties,o)){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.id!==void 0){let o=e.id;if(typeof o=="string"){if($e(o)<1){let l={instancePath:t+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}}if(e.resourceId!==void 0){let o=e.resourceId;if(typeof o=="string"){if($e(o)<1){let l={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let o={instancePath:t+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}if(e.volume!==void 0){let o=e.volume;if(typeof o=="number"){if(o>100||isNaN(o)){let l={instancePath:t+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};r===null?r=[l]:r.push(l),s++}if(o<0||isNaN(o)){let l={instancePath:t+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let o={instancePath:t+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}if(e.pan!==void 0){let o=e.pan;if(typeof o=="number"){if(o>1||isNaN(o)){let l={instancePath:t+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[l]:r.push(l),s++}if(o<-1||isNaN(o)){let l={instancePath:t+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.startDelayMs!==void 0){let o=e.startDelayMs;if(typeof o=="number"){if(o<0||isNaN(o)){let l={instancePath:t+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.playbackRate!==void 0){let o=e.playbackRate;if(typeof o=="number"){if(o<0||isNaN(o)){let l={instancePath:t+"/playbackRate",schemaPath:"#/properties/playbackRate/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/playbackRate",schemaPath:"#/properties/playbackRate/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.startAt!==void 0){let o=e.startAt;if(typeof o=="number"){if(o<0||isNaN(o)){let l={instancePath:t+"/startAt",schemaPath:"#/properties/startAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/startAt",schemaPath:"#/properties/startAt/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.endAt!==void 0){let o=e.endAt;if(typeof o!="number"&&o!==null){let l={instancePath:t+"/endAt",schemaPath:"#/properties/endAt/type",keyword:"type",params:{type:Jp.properties.endAt.type},message:"must be number,null"};r===null?r=[l]:r.push(l),s++}if(typeof o=="number"&&(o<0||isNaN(o))){let l={instancePath:t+"/endAt",schemaPath:"#/properties/endAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Me.errors=r,s===0}function Ss(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let o in e)if(o!=="speed"){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.speed!==void 0){let o=e.speed;if(typeof o=="number"){if(o<=0||isNaN(o)){let l={instancePath:t+"/speed",schemaPath:"#/properties/speed/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/speed",schemaPath:"#/properties/speed/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Ss.errors=r,s===0}function Os(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.resourceId===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!(o==="resourceId"||o==="playback")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.resourceId!==void 0){let o=e.resourceId;if(typeof o=="string"){if($e(o)<1){let l={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}}e.playback!==void 0&&(Ss(e.playback,{instancePath:t+"/playback",parentData:e,parentDataProperty:"playback",rootData:a})||(r=r===null?Ss.errors:r.concat(Ss.errors),s=r.length))}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Os.errors=r,s===0}function Rs(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0,o=s,l=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let y;if(e.resourceId===void 0&&(y="resourceId")||e.sounds===void 0&&(y="sounds")){let w={};r===null?r=[w]:r.push(w),s++}}var c=l===s;if(c){let y={instancePath:t,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[y]:r.push(y),s++}else s=o,r!==null&&(o?r.length=o:r=null);let u=s,p=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let y;if(e.startDelayMs===void 0&&(y="startDelayMs")||e.sounds===void 0&&(y="sounds")){let w={};r===null?r=[w]:r.push(w),s++}}var d=p===s;if(d){let y={instancePath:t,schemaPath:"#/allOf/1/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[y]:r.push(y),s++}else s=u,r!==null&&(u?r.length=u:r=null);let f=s,m=!0,b=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let y;if(e.audioEffects===void 0&&(y="audioEffects")){let w={};r===null?r=[w]:r.push(w),s++}}var h=b===s;if(s=f,r!==null&&(f?r.length=f:r=null),h){let y=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.sounds===void 0){let g={instancePath:t,schemaPath:"#/allOf/2/then/required",keyword:"required",params:{missingProperty:"sounds"},message:"must have required property 'sounds'"};r===null?r=[g]:r.push(g),s++}var h=y===s;m=h}if(!m){let y={instancePath:t,schemaPath:"#/allOf/2/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[y]:r.push(y),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){for(let y in e)if(!Je.call(Wp.properties,y)){let w={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};r===null?r=[w]:r.push(w),s++}if(e.sounds!==void 0){let y=e.sounds;if(Array.isArray(y)){let w=y.length;for(let g=0;g<w;g++)Me(y[g],{instancePath:t+"/sounds/"+g,parentData:y,parentDataProperty:g,rootData:a})||(r=r===null?Me.errors:r.concat(Me.errors),s=r.length)}else{let w={instancePath:t+"/sounds",schemaPath:"#/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[w]:r.push(w),s++}}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let y={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let y={instancePath:t+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[y]:r.push(y),s++}if(e.interruption!==void 0){let y=e.interruption;if(typeof y!="string"){let w={instancePath:t+"/interruption",schemaPath:"#/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[w]:r.push(w),s++}if(!(y==="immediate"||y==="loopEnd")){let w={instancePath:t+"/interruption",schemaPath:"#/properties/interruption/enum",keyword:"enum",params:{allowedValues:Wp.properties.interruption.enum},message:"must be equal to one of the allowed values"};r===null?r=[w]:r.push(w),s++}}if(e.volume!==void 0){let y=e.volume;if(typeof y=="number"){if(y>100||isNaN(y)){let w={instancePath:t+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};r===null?r=[w]:r.push(w),s++}if(y<0||isNaN(y)){let w={instancePath:t+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[w]:r.push(w),s++}}else{let w={instancePath:t+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let y={instancePath:t+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[y]:r.push(y),s++}if(e.pan!==void 0){let y=e.pan;if(typeof y=="number"){if(y>1||isNaN(y)){let w={instancePath:t+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[w]:r.push(w),s++}if(y<-1||isNaN(y)){let w={instancePath:t+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};r===null?r=[w]:r.push(w),s++}}else{let w={instancePath:t+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),s++}}if(e.startDelayMs!==void 0){let y=e.startDelayMs;if(typeof y=="number"){if(y<0||isNaN(y)){let w={instancePath:t+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[w]:r.push(w),s++}}else{let w={instancePath:t+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),s++}}e.audioEffects!==void 0&&(Os(e.audioEffects,{instancePath:t+"/audioEffects",parentData:e,parentDataProperty:"audioEffects",rootData:a})||(r=r===null?Os.errors:r.concat(Os.errors),s=r.length))}else{let y={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),s++}return Rs.errors=r,s===0}function lf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return Rs(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?Rs.errors:r.concat(Rs.errors),s=r.length),lf.errors=r,s===0}var cf=uf;var JI={type:"object",properties:{items:{type:"array",items:{type:"object",properties:{id:{type:"string"},transformId:{type:"string"},x:{type:"number"},y:{type:"number"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},flipX:{type:"boolean"},flipY:{type:"boolean"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"},alpha:{type:"number",minimum:0,maximum:1},opacity:{type:"number",minimum:0,maximum:1},blur:{$ref:"#/definitions/backgroundBlur"},filters:{$ref:"#/definitions/shaderFilters"},sprites:{type:"array",items:{type:"object",properties:{id:{type:"string"},resourceId:{type:"string"},animationName:{type:"string"},animationSpeed:{type:"number"},loop:{type:"boolean"}},additionalProperties:!1}},animations:{$ref:"#/definitions/animationSelection"}},required:["id"],allOf:[{if:{required:["sprites"]},then:{required:["transformId"]}}],additionalProperties:!1}}},additionalProperties:!1};function $s(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let l in e)if(l!=="items"){let c={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),s++}if(e.items!==void 0){let l=e.items;if(Array.isArray(l)){let c=l.length;for(let u=0;u<c;u++){let p=l[u],d=s,f=!0,m=s;if(p&&typeof p=="object"&&!Array.isArray(p)){let b;if(p.sprites===void 0&&(b="sprites")){let h={};r===null?r=[h]:r.push(h),s++}}var o=m===s;if(s=d,r!==null&&(d?r.length=d:r=null),o){let b=s;if(p&&typeof p=="object"&&!Array.isArray(p)&&p.transformId===void 0){let y={instancePath:t+"/items/"+u,schemaPath:"#/properties/items/items/allOf/0/then/required",keyword:"required",params:{missingProperty:"transformId"},message:"must have required property 'transformId'"};r===null?r=[y]:r.push(y),s++}var o=b===s;f=o}if(!f){let b={instancePath:t+"/items/"+u,schemaPath:"#/properties/items/items/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[b]:r.push(b),s++}if(p&&typeof p=="object"&&!Array.isArray(p)){if(p.id===void 0){let b={instancePath:t+"/items/"+u,schemaPath:"#/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[b]:r.push(b),s++}for(let b in p)if(!Je.call(JI.properties.items.items.properties,b)){let h={instancePath:t+"/items/"+u,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};r===null?r=[h]:r.push(h),s++}if(p.id!==void 0&&typeof p.id!="string"){let b={instancePath:t+"/items/"+u+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[b]:r.push(b),s++}if(p.transformId!==void 0&&typeof p.transformId!="string"){let b={instancePath:t+"/items/"+u+"/transformId",schemaPath:"#/properties/items/items/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[b]:r.push(b),s++}if(p.x!==void 0&&typeof p.x!="number"){let b={instancePath:t+"/items/"+u+"/x",schemaPath:"#/properties/items/items/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[b]:r.push(b),s++}if(p.y!==void 0&&typeof p.y!="number"){let b={instancePath:t+"/items/"+u+"/y",schemaPath:"#/properties/items/items/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[b]:r.push(b),s++}if(p.anchorX!==void 0&&typeof p.anchorX!="number"){let b={instancePath:t+"/items/"+u+"/anchorX",schemaPath:"#/properties/items/items/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[b]:r.push(b),s++}if(p.anchorY!==void 0&&typeof p.anchorY!="number"){let b={instancePath:t+"/items/"+u+"/anchorY",schemaPath:"#/properties/items/items/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[b]:r.push(b),s++}if(p.scaleX!==void 0&&typeof p.scaleX!="number"){let b={instancePath:t+"/items/"+u+"/scaleX",schemaPath:"#/properties/items/items/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[b]:r.push(b),s++}if(p.scaleY!==void 0&&typeof p.scaleY!="number"){let b={instancePath:t+"/items/"+u+"/scaleY",schemaPath:"#/properties/items/items/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[b]:r.push(b),s++}if(p.flipX!==void 0&&typeof p.flipX!="boolean"){let b={instancePath:t+"/items/"+u+"/flipX",schemaPath:"#/properties/items/items/properties/flipX/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[b]:r.push(b),s++}if(p.flipY!==void 0&&typeof p.flipY!="boolean"){let b={instancePath:t+"/items/"+u+"/flipY",schemaPath:"#/properties/items/items/properties/flipY/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[b]:r.push(b),s++}if(p.rotation!==void 0&&typeof p.rotation!="number"){let b={instancePath:t+"/items/"+u+"/rotation",schemaPath:"#/properties/items/items/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[b]:r.push(b),s++}if(p.originX!==void 0&&typeof p.originX!="number"){let b={instancePath:t+"/items/"+u+"/originX",schemaPath:"#/properties/items/items/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[b]:r.push(b),s++}if(p.originY!==void 0&&typeof p.originY!="number"){let b={instancePath:t+"/items/"+u+"/originY",schemaPath:"#/properties/items/items/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[b]:r.push(b),s++}if(p.alpha!==void 0){let b=p.alpha;if(typeof b=="number"){if(b>1||isNaN(b)){let h={instancePath:t+"/items/"+u+"/alpha",schemaPath:"#/properties/items/items/properties/alpha/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[h]:r.push(h),s++}if(b<0||isNaN(b)){let h={instancePath:t+"/items/"+u+"/alpha",schemaPath:"#/properties/items/items/properties/alpha/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[h]:r.push(h),s++}}else{let h={instancePath:t+"/items/"+u+"/alpha",schemaPath:"#/properties/items/items/properties/alpha/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[h]:r.push(h),s++}}if(p.opacity!==void 0){let b=p.opacity;if(typeof b=="number"){if(b>1||isNaN(b)){let h={instancePath:t+"/items/"+u+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[h]:r.push(h),s++}if(b<0||isNaN(b)){let h={instancePath:t+"/items/"+u+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[h]:r.push(h),s++}}else{let h={instancePath:t+"/items/"+u+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[h]:r.push(h),s++}}if(p.blur!==void 0&&(qe(p.blur,{instancePath:t+"/items/"+u+"/blur",parentData:p,parentDataProperty:"blur",rootData:a})||(r=r===null?qe.errors:r.concat(qe.errors),s=r.length)),p.filters!==void 0&&(nr(p.filters,{instancePath:t+"/items/"+u+"/filters",parentData:p,parentDataProperty:"filters",rootData:a})||(r=r===null?nr.errors:r.concat(nr.errors),s=r.length)),p.sprites!==void 0){let b=p.sprites;if(Array.isArray(b)){let h=b.length;for(let y=0;y<h;y++){let w=b[y];if(w&&typeof w=="object"&&!Array.isArray(w)){for(let g in w)if(!(g==="id"||g==="resourceId"||g==="animationName"||g==="animationSpeed"||g==="loop")){let E={instancePath:t+"/items/"+u+"/sprites/"+y,schemaPath:"#/properties/items/items/properties/sprites/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:g},message:"must NOT have additional properties"};r===null?r=[E]:r.push(E),s++}if(w.id!==void 0&&typeof w.id!="string"){let g={instancePath:t+"/items/"+u+"/sprites/"+y+"/id",schemaPath:"#/properties/items/items/properties/sprites/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[g]:r.push(g),s++}if(w.resourceId!==void 0&&typeof w.resourceId!="string"){let g={instancePath:t+"/items/"+u+"/sprites/"+y+"/resourceId",schemaPath:"#/properties/items/items/properties/sprites/items/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[g]:r.push(g),s++}if(w.animationName!==void 0&&typeof w.animationName!="string"){let g={instancePath:t+"/items/"+u+"/sprites/"+y+"/animationName",schemaPath:"#/properties/items/items/properties/sprites/items/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[g]:r.push(g),s++}if(w.animationSpeed!==void 0&&typeof w.animationSpeed!="number"){let g={instancePath:t+"/items/"+u+"/sprites/"+y+"/animationSpeed",schemaPath:"#/properties/items/items/properties/sprites/items/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[g]:r.push(g),s++}if(w.loop!==void 0&&typeof w.loop!="boolean"){let g={instancePath:t+"/items/"+u+"/sprites/"+y+"/loop",schemaPath:"#/properties/items/items/properties/sprites/items/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[g]:r.push(g),s++}}else{let g={instancePath:t+"/items/"+u+"/sprites/"+y,schemaPath:"#/properties/items/items/properties/sprites/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[g]:r.push(g),s++}}}else{let h={instancePath:t+"/items/"+u+"/sprites",schemaPath:"#/properties/items/items/properties/sprites/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[h]:r.push(h),s++}}p.animations!==void 0&&(ce(p.animations,{instancePath:t+"/items/"+u+"/animations",parentData:p,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let b={instancePath:t+"/items/"+u,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[b]:r.push(b),s++}}}else{let c={instancePath:t+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),s++}}}else{let l={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}return $s.errors=r,s===0}function uf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return $s(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?$s.errors:r.concat($s.errors),s=r.length),uf.errors=r,s===0}var pf=ff;function Cs(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let o in e)if(!(o==="resourceId"||o==="items"||o==="animations")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let o={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.items!==void 0){let o=e.items;if(Array.isArray(o)){let l=o.length;for(let c=0;c<l;c++){let u=o[c];if(u&&typeof u=="object"&&!Array.isArray(u)){for(let p in u)if(!(p==="id"||p==="content"||p==="events")){let d={instancePath:t+"/items/"+c,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),s++}if(u.id!==void 0&&typeof u.id!="string"){let p={instancePath:t+"/items/"+c+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),s++}if(u.content!==void 0&&typeof u.content!="string"){let p={instancePath:t+"/items/"+c+"/content",schemaPath:"#/properties/items/items/properties/content/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),s++}if(u.events!==void 0){let p=u.events;if(p&&typeof p=="object"&&!Array.isArray(p)){if(p.click!==void 0){let d=p.click;if(!(d&&typeof d=="object"&&!Array.isArray(d))){let f={instancePath:t+"/items/"+c+"/events/click",schemaPath:"#/properties/items/items/properties/events/properties/click/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[f]:r.push(f),s++}}}else{let d={instancePath:t+"/items/"+c+"/events",schemaPath:"#/properties/items/items/properties/events/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[d]:r.push(d),s++}}}else{let p={instancePath:t+"/items/"+c,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}}else{let l={instancePath:t+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}e.animations!==void 0&&(ce(e.animations,{instancePath:t+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Cs.errors=r,s===0}function ff(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return Cs(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?Cs.errors:r.concat(Cs.errors),s=r.length),ff.errors=r,s===0}var df=mf;function _s(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let o in e)if(o!=="mode"){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.mode!==void 0&&typeof e.mode!="string"){let o={instancePath:t+"/mode",schemaPath:"#/properties/mode/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return _s.errors=r,s===0}function mf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return _s(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?_s.errors:r.concat(_s.errors),s=r.length),mf.errors=r,s===0}var yf=hf;function js(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.resourceId===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(o!=="resourceId"){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let o={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return js.errors=r,s===0}function hf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return js(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?js.errors:r.concat(js.errors),s=r.length),hf.errors=r,s===0}var gf=bf;var Qp={type:"object",properties:{ui:{type:"object",properties:{resourceId:{type:"string"},animations:{$ref:"#/definitions/animationSelection"}},additionalProperties:!1},mode:{type:"string",enum:["adv","nvl"]},content:{type:"array",items:{type:"object",properties:{text:{type:"string"}}}},textSpeed:{type:"number"},append:{type:"boolean"},characterId:{type:"string"},characterName:{type:"string"},persistCharacter:{type:"boolean"},persistSprite:{type:"boolean"},character:{type:"object",properties:{name:{type:"string"},sprite:{type:"object",properties:{transformId:{type:"string"},items:{type:"array",items:{type:"object",properties:{id:{type:"string"},resourceId:{type:"string"},animationName:{type:"string"},animationSpeed:{type:"number"},loop:{type:"boolean"}},required:["id","resourceId"],additionalProperties:!1}},animations:{$ref:"#/definitions/animationSelection"}},additionalProperties:!1}},additionalProperties:!1},clear:{type:"boolean"},clearPage:{type:"boolean"}},additionalProperties:!1};function Ns(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let o in e)if(!Je.call(Qp.properties,o)){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.ui!==void 0){let o=e.ui;if(o&&typeof o=="object"&&!Array.isArray(o)){for(let l in o)if(!(l==="resourceId"||l==="animations")){let c={instancePath:t+"/ui",schemaPath:"#/properties/ui/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),s++}if(o.resourceId!==void 0&&typeof o.resourceId!="string"){let l={instancePath:t+"/ui/resourceId",schemaPath:"#/properties/ui/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}o.animations!==void 0&&(ce(o.animations,{instancePath:t+"/ui/animations",parentData:o,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let l={instancePath:t+"/ui",schemaPath:"#/properties/ui/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}if(e.mode!==void 0){let o=e.mode;if(typeof o!="string"){let l={instancePath:t+"/mode",schemaPath:"#/properties/mode/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(!(o==="adv"||o==="nvl")){let l={instancePath:t+"/mode",schemaPath:"#/properties/mode/enum",keyword:"enum",params:{allowedValues:Qp.properties.mode.enum},message:"must be equal to one of the allowed values"};r===null?r=[l]:r.push(l),s++}}if(e.content!==void 0){let o=e.content;if(Array.isArray(o)){let l=o.length;for(let c=0;c<l;c++){let u=o[c];if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.text!==void 0&&typeof u.text!="string"){let p={instancePath:t+"/content/"+c+"/text",schemaPath:"#/properties/content/items/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),s++}}else{let p={instancePath:t+"/content/"+c,schemaPath:"#/properties/content/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}}else{let l={instancePath:t+"/content",schemaPath:"#/properties/content/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}if(e.textSpeed!==void 0&&typeof e.textSpeed!="number"){let o={instancePath:t+"/textSpeed",schemaPath:"#/properties/textSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.append!==void 0&&typeof e.append!="boolean"){let o={instancePath:t+"/append",schemaPath:"#/properties/append/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}if(e.characterId!==void 0&&typeof e.characterId!="string"){let o={instancePath:t+"/characterId",schemaPath:"#/properties/characterId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.characterName!==void 0&&typeof e.characterName!="string"){let o={instancePath:t+"/characterName",schemaPath:"#/properties/characterName/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.persistCharacter!==void 0&&typeof e.persistCharacter!="boolean"){let o={instancePath:t+"/persistCharacter",schemaPath:"#/properties/persistCharacter/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}if(e.persistSprite!==void 0&&typeof e.persistSprite!="boolean"){let o={instancePath:t+"/persistSprite",schemaPath:"#/properties/persistSprite/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}if(e.character!==void 0){let o=e.character;if(o&&typeof o=="object"&&!Array.isArray(o)){for(let l in o)if(!(l==="name"||l==="sprite")){let c={instancePath:t+"/character",schemaPath:"#/properties/character/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),s++}if(o.name!==void 0&&typeof o.name!="string"){let l={instancePath:t+"/character/name",schemaPath:"#/properties/character/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(o.sprite!==void 0){let l=o.sprite;if(l&&typeof l=="object"&&!Array.isArray(l)){for(let c in l)if(!(c==="transformId"||c==="items"||c==="animations")){let u={instancePath:t+"/character/sprite",schemaPath:"#/properties/character/properties/sprite/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};r===null?r=[u]:r.push(u),s++}if(l.transformId!==void 0&&typeof l.transformId!="string"){let c={instancePath:t+"/character/sprite/transformId",schemaPath:"#/properties/character/properties/sprite/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),s++}if(l.items!==void 0){let c=l.items;if(Array.isArray(c)){let u=c.length;for(let p=0;p<u;p++){let d=c[p];if(d&&typeof d=="object"&&!Array.isArray(d)){if(d.id===void 0){let f={instancePath:t+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[f]:r.push(f),s++}if(d.resourceId===void 0){let f={instancePath:t+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};r===null?r=[f]:r.push(f),s++}for(let f in d)if(!(f==="id"||f==="resourceId"||f==="animationName"||f==="animationSpeed"||f==="loop")){let m={instancePath:t+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:f},message:"must NOT have additional properties"};r===null?r=[m]:r.push(m),s++}if(d.id!==void 0&&typeof d.id!="string"){let f={instancePath:t+"/character/sprite/items/"+p+"/id",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[f]:r.push(f),s++}if(d.resourceId!==void 0&&typeof d.resourceId!="string"){let f={instancePath:t+"/character/sprite/items/"+p+"/resourceId",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[f]:r.push(f),s++}if(d.animationName!==void 0&&typeof d.animationName!="string"){let f={instancePath:t+"/character/sprite/items/"+p+"/animationName",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[f]:r.push(f),s++}if(d.animationSpeed!==void 0&&typeof d.animationSpeed!="number"){let f={instancePath:t+"/character/sprite/items/"+p+"/animationSpeed",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[f]:r.push(f),s++}if(d.loop!==void 0&&typeof d.loop!="boolean"){let f={instancePath:t+"/character/sprite/items/"+p+"/loop",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[f]:r.push(f),s++}}else{let f={instancePath:t+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[f]:r.push(f),s++}}}else{let u={instancePath:t+"/character/sprite/items",schemaPath:"#/properties/character/properties/sprite/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[u]:r.push(u),s++}}l.animations!==void 0&&(ce(l.animations,{instancePath:t+"/character/sprite/animations",parentData:l,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let c={instancePath:t+"/character/sprite",schemaPath:"#/properties/character/properties/sprite/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[c]:r.push(c),s++}}}else{let l={instancePath:t+"/character",schemaPath:"#/properties/character/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}if(e.clear!==void 0&&typeof e.clear!="boolean"){let o={instancePath:t+"/clear",schemaPath:"#/properties/clear/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}if(e.clearPage!==void 0&&typeof e.clearPage!="boolean"){let o={instancePath:t+"/clearPage",schemaPath:"#/properties/clearPage/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Ns.errors=r,s===0}function bf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return Ns(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?Ns.errors:r.concat(Ns.errors),s=r.length),bf.errors=r,s===0}var wf=If;function Ds(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let o in e)if(!(o==="id"||o==="resourceId"||o==="fields"||o==="submitActions"||o==="cancelActions"||o==="animations")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.id!==void 0&&typeof e.id!="string"){let o={instancePath:t+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let o={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.fields!==void 0){let o=e.fields;if(o&&typeof o=="object"&&!Array.isArray(o))for(let l in o){let c=o[l];if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.variableId===void 0){let u={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/required",keyword:"required",params:{missingProperty:"variableId"},message:"must have required property 'variableId'"};r===null?r=[u]:r.push(u),s++}for(let u in c)if(!(u==="variableId"||u==="required"||u==="trim"||u==="placeholder"||u==="multiline"||u==="maxLength")){let p={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:u},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),s++}if(c.variableId!==void 0&&typeof c.variableId!="string"){let u={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/variableId",schemaPath:"#/properties/fields/additionalProperties/properties/variableId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[u]:r.push(u),s++}if(c.required!==void 0&&typeof c.required!="boolean"){let u={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/required",schemaPath:"#/properties/fields/additionalProperties/properties/required/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[u]:r.push(u),s++}if(c.trim!==void 0&&typeof c.trim!="boolean"){let u={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/trim",schemaPath:"#/properties/fields/additionalProperties/properties/trim/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[u]:r.push(u),s++}if(c.placeholder!==void 0&&typeof c.placeholder!="string"){let u={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/placeholder",schemaPath:"#/properties/fields/additionalProperties/properties/placeholder/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[u]:r.push(u),s++}if(c.multiline!==void 0&&typeof c.multiline!="boolean"){let u={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/multiline",schemaPath:"#/properties/fields/additionalProperties/properties/multiline/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[u]:r.push(u),s++}if(c.maxLength!==void 0){let u=c.maxLength;if(!(typeof u=="number"&&!(u%1)&&!isNaN(u))){let p={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/maxLength",schemaPath:"#/properties/fields/additionalProperties/properties/maxLength/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[p]:r.push(p),s++}if(typeof u=="number"&&(u<0||isNaN(u))){let p={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/maxLength",schemaPath:"#/properties/fields/additionalProperties/properties/maxLength/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[p]:r.push(p),s++}}}else{let u={instancePath:t+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[u]:r.push(u),s++}}else{let l={instancePath:t+"/fields",schemaPath:"#/properties/fields/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}if(e.submitActions!==void 0){let o=e.submitActions;if(!(o&&typeof o=="object"&&!Array.isArray(o))){let l={instancePath:t+"/submitActions",schemaPath:"#/properties/submitActions/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}if(e.cancelActions!==void 0){let o=e.cancelActions;if(!(o&&typeof o=="object"&&!Array.isArray(o))){let l={instancePath:t+"/cancelActions",schemaPath:"#/properties/cancelActions/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}e.animations!==void 0&&(ce(e.animations,{instancePath:t+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Ds.errors=r,s===0}function If(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return Ds(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?Ds.errors:r.concat(Ds.errors),s=r.length),If.errors=r,s===0}var vf=kf;function Ts(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let o in e)if(!(o==="resourceId"||o==="animations")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let o={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}e.animations!==void 0&&(ce(e.animations,{instancePath:t+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Ts.errors=r,s===0}function kf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return Ts(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?Ts.errors:r.concat(Ts.errors),s=r.length),kf.errors=r,s===0}var Af=Pf;function Ls(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let o in e)if(!(o==="alpha"||o==="opacity"||o==="blur"||o==="animations")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.alpha!==void 0){let o=e.alpha;if(typeof o=="number"){if(o>1||isNaN(o)){let l={instancePath:t+"/alpha",schemaPath:"#/properties/alpha/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[l]:r.push(l),s++}if(o<0||isNaN(o)){let l={instancePath:t+"/alpha",schemaPath:"#/properties/alpha/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/alpha",schemaPath:"#/properties/alpha/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.opacity!==void 0){let o=e.opacity;if(typeof o=="number"){if(o>1||isNaN(o)){let l={instancePath:t+"/opacity",schemaPath:"#/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[l]:r.push(l),s++}if(o<0||isNaN(o)){let l={instancePath:t+"/opacity",schemaPath:"#/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/opacity",schemaPath:"#/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}e.blur!==void 0&&(qe(e.blur,{instancePath:t+"/blur",parentData:e,parentDataProperty:"blur",rootData:a})||(r=r===null?qe.errors:r.concat(qe.errors),s=r.length)),e.animations!==void 0&&(ce(e.animations,{instancePath:t+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Ls.errors=r,s===0}function Pf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return Ls(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?Ls.errors:r.concat(Ls.errors),s=r.length),Pf.errors=r,s===0}var Ef=xf;var Zp={type:"object",properties:{items:{type:"array",items:{$ref:"#/definitions/audioSound"}},channels:{type:"array",items:{type:"object",properties:{id:{type:"string",minLength:1},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},loop:{type:"boolean"},interruption:{type:"string",enum:["immediate","loopEnd"]},applyMode:{type:"string",enum:["singleLine","persistent"]},sounds:{type:"array",items:{$ref:"#/definitions/audioSound"}}},required:["id","sounds"],additionalProperties:!1}}},allOf:[{not:{required:["items","channels"]}}],additionalProperties:!1};function Ms(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0,o=s,l=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let u;if(e.items===void 0&&(u="items")||e.channels===void 0&&(u="channels")){let p={};r===null?r=[p]:r.push(p),s++}}var c=l===s;if(c){let u={instancePath:t,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[u]:r.push(u),s++}else s=o,r!==null&&(o?r.length=o:r=null);if(e&&typeof e=="object"&&!Array.isArray(e)){for(let u in e)if(!(u==="items"||u==="channels")){let p={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:u},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),s++}if(e.items!==void 0){let u=e.items;if(Array.isArray(u)){let p=u.length;for(let d=0;d<p;d++)Me(u[d],{instancePath:t+"/items/"+d,parentData:u,parentDataProperty:d,rootData:a})||(r=r===null?Me.errors:r.concat(Me.errors),s=r.length)}else{let p={instancePath:t+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),s++}}if(e.channels!==void 0){let u=e.channels;if(Array.isArray(u)){let p=u.length;for(let d=0;d<p;d++){let f=u[d];if(f&&typeof f=="object"&&!Array.isArray(f)){if(f.id===void 0){let m={instancePath:t+"/channels/"+d,schemaPath:"#/properties/channels/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[m]:r.push(m),s++}if(f.sounds===void 0){let m={instancePath:t+"/channels/"+d,schemaPath:"#/properties/channels/items/required",keyword:"required",params:{missingProperty:"sounds"},message:"must have required property 'sounds'"};r===null?r=[m]:r.push(m),s++}for(let m in f)if(!(m==="id"||m==="volume"||m==="muted"||m==="pan"||m==="loop"||m==="interruption"||m==="applyMode"||m==="sounds")){let b={instancePath:t+"/channels/"+d,schemaPath:"#/properties/channels/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:m},message:"must NOT have additional properties"};r===null?r=[b]:r.push(b),s++}if(f.id!==void 0){let m=f.id;if(typeof m=="string"){if($e(m)<1){let b={instancePath:t+"/channels/"+d+"/id",schemaPath:"#/properties/channels/items/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[b]:r.push(b),s++}}else{let b={instancePath:t+"/channels/"+d+"/id",schemaPath:"#/properties/channels/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[b]:r.push(b),s++}}if(f.volume!==void 0){let m=f.volume;if(typeof m=="number"){if(m>100||isNaN(m)){let b={instancePath:t+"/channels/"+d+"/volume",schemaPath:"#/properties/channels/items/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};r===null?r=[b]:r.push(b),s++}if(m<0||isNaN(m)){let b={instancePath:t+"/channels/"+d+"/volume",schemaPath:"#/properties/channels/items/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[b]:r.push(b),s++}}else{let b={instancePath:t+"/channels/"+d+"/volume",schemaPath:"#/properties/channels/items/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[b]:r.push(b),s++}}if(f.muted!==void 0&&typeof f.muted!="boolean"){let m={instancePath:t+"/channels/"+d+"/muted",schemaPath:"#/properties/channels/items/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[m]:r.push(m),s++}if(f.pan!==void 0){let m=f.pan;if(typeof m=="number"){if(m>1||isNaN(m)){let b={instancePath:t+"/channels/"+d+"/pan",schemaPath:"#/properties/channels/items/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[b]:r.push(b),s++}if(m<-1||isNaN(m)){let b={instancePath:t+"/channels/"+d+"/pan",schemaPath:"#/properties/channels/items/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};r===null?r=[b]:r.push(b),s++}}else{let b={instancePath:t+"/channels/"+d+"/pan",schemaPath:"#/properties/channels/items/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[b]:r.push(b),s++}}if(f.loop!==void 0&&typeof f.loop!="boolean"){let m={instancePath:t+"/channels/"+d+"/loop",schemaPath:"#/properties/channels/items/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[m]:r.push(m),s++}if(f.interruption!==void 0){let m=f.interruption;if(typeof m!="string"){let b={instancePath:t+"/channels/"+d+"/interruption",schemaPath:"#/properties/channels/items/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[b]:r.push(b),s++}if(!(m==="immediate"||m==="loopEnd")){let b={instancePath:t+"/channels/"+d+"/interruption",schemaPath:"#/properties/channels/items/properties/interruption/enum",keyword:"enum",params:{allowedValues:Zp.properties.channels.items.properties.interruption.enum},message:"must be equal to one of the allowed values"};r===null?r=[b]:r.push(b),s++}}if(f.applyMode!==void 0){let m=f.applyMode;if(typeof m!="string"){let b={instancePath:t+"/channels/"+d+"/applyMode",schemaPath:"#/properties/channels/items/properties/applyMode/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[b]:r.push(b),s++}if(!(m==="singleLine"||m==="persistent")){let b={instancePath:t+"/channels/"+d+"/applyMode",schemaPath:"#/properties/channels/items/properties/applyMode/enum",keyword:"enum",params:{allowedValues:Zp.properties.channels.items.properties.applyMode.enum},message:"must be equal to one of the allowed values"};r===null?r=[b]:r.push(b),s++}}if(f.sounds!==void 0){let m=f.sounds;if(Array.isArray(m)){let b=m.length;for(let h=0;h<b;h++)Me(m[h],{instancePath:t+"/channels/"+d+"/sounds/"+h,parentData:m,parentDataProperty:h,rootData:a})||(r=r===null?Me.errors:r.concat(Me.errors),s=r.length)}else{let b={instancePath:t+"/channels/"+d+"/sounds",schemaPath:"#/properties/channels/items/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[b]:r.push(b),s++}}}else{let m={instancePath:t+"/channels/"+d,schemaPath:"#/properties/channels/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[m]:r.push(m),s++}}}else{let p={instancePath:t+"/channels",schemaPath:"#/properties/channels/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),s++}}}else{let u={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[u]:r.push(u),s++}return Ms.errors=r,s===0}function xf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return Ms(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?Ms.errors:r.concat(Ms.errors),s=r.length),xf.errors=r,s===0}var Sf=Of;var ef={type:"object",properties:{items:{type:"array",items:{type:"object",properties:{id:{type:"string"},animationName:{type:"string"},animationSpeed:{type:"number"},resourceId:{type:"string"},text:{$ref:"#/definitions/visualText"},layout:{$ref:"#/definitions/visualInlineLayout"},transformId:{type:"string"},transform:{$ref:"#/definitions/visualInlineTransform"},x:{type:"number"},y:{type:"number"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},flipX:{type:"boolean"},flipY:{type:"boolean"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"},layer:{type:"number",enum:[10,30,50,70,90]},alpha:{type:"number",minimum:0,maximum:1},opacity:{type:"number",minimum:0,maximum:1},blur:{$ref:"#/definitions/backgroundBlur"},filters:{$ref:"#/definitions/shaderFilters"},animations:{$ref:"#/definitions/animationSelection"}},required:["id"],allOf:[{not:{required:["resourceId","text"]}},{not:{required:["resourceId","layout"]}},{not:{required:["text","layout"]}},{not:{required:["transformId","transform"]}}],additionalProperties:!1}}},additionalProperties:!1};function qs(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0,o=s,l=!1,c=s;if(typeof e!="string"){let p={instancePath:t,schemaPath:"#/anyOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[p]:r.push(p),s++}var u=c===s;if(l=l||u,!l){let p=s;if(Array.isArray(e)){let f=e.length;for(let m=0;m<f;m++){let b=e[m];if(b&&typeof b=="object"&&!Array.isArray(b)){if(b.text!==void 0&&typeof b.text!="string"){let h={instancePath:t+"/"+m+"/text",schemaPath:"#/anyOf/1/items/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),s++}if(b.textStyleId!==void 0&&typeof b.textStyleId!="string"){let h={instancePath:t+"/"+m+"/textStyleId",schemaPath:"#/anyOf/1/items/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),s++}if(b.furigana!==void 0){let h=b.furigana;if(h&&typeof h=="object"&&!Array.isArray(h)){if(h.text!==void 0&&typeof h.text!="string"){let y={instancePath:t+"/"+m+"/furigana/text",schemaPath:"#/anyOf/1/items/properties/furigana/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),s++}if(h.textStyleId!==void 0&&typeof h.textStyleId!="string"){let y={instancePath:t+"/"+m+"/furigana/textStyleId",schemaPath:"#/anyOf/1/items/properties/furigana/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),s++}}else{let y={instancePath:t+"/"+m+"/furigana",schemaPath:"#/anyOf/1/items/properties/furigana/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),s++}}}else{let h={instancePath:t+"/"+m,schemaPath:"#/anyOf/1/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[h]:r.push(h),s++}}}else{let f={instancePath:t,schemaPath:"#/anyOf/1/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[f]:r.push(f),s++}var u=p===s;l=l||u}if(l)s=o,r!==null&&(o?r.length=o:r=null);else{let p={instancePath:t,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[p]:r.push(p),s++}return qs.errors=r,s===0}function Vs(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0,o=s,l=s,c=s,u=!1,p=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let w;if(e.id===void 0&&(w="id")){let g={};r===null?r=[g]:r.push(g),s++}}var d=p===s;if(u=u||d,!u){let w=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let E;if(e.type===void 0&&(E="type")){let k={};r===null?r=[k]:r.push(k),s++}}var d=w===s;if(u=u||d,!u){let E=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let P;if(e.resourceId===void 0&&(P="resourceId")){let v={};r===null?r=[v]:r.push(v),s++}}var d=E===s;if(u=u||d,!u){let P=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let O;if(e.layout===void 0&&(O="layout")){let T={};r===null?r=[T]:r.push(T),s++}}var d=P===s;if(u=u||d,!u){let O=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let R;if(e.transformId===void 0&&(R="transformId")){let D={};r===null?r=[D]:r.push(D),s++}}var d=O===s;if(u=u||d,!u){let R=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let B;if(e.transform===void 0&&(B="transform")){let _={};r===null?r=[_]:r.push(_),s++}}var d=R===s;if(u=u||d,!u){let B=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let X;if(e.x===void 0&&(X="x")){let ae={};r===null?r=[ae]:r.push(ae),s++}}var d=B===s;if(u=u||d,!u){let X=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let M;if(e.y===void 0&&(M="y")){let se={};r===null?r=[se]:r.push(se),s++}}var d=X===s;if(u=u||d,!u){let M=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let ue;if(e.anchorX===void 0&&(ue="anchorX")){let G={};r===null?r=[G]:r.push(G),s++}}var d=M===s;if(u=u||d,!u){let ue=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Q;if(e.anchorY===void 0&&(Q="anchorY")){let ie={};r===null?r=[ie]:r.push(ie),s++}}var d=ue===s;if(u=u||d,!u){let Q=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let K;if(e.scaleX===void 0&&(K="scaleX")){let pe={};r===null?r=[pe]:r.push(pe),s++}}var d=Q===s;if(u=u||d,!u){let K=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let oe;if(e.scaleY===void 0&&(oe="scaleY")){let C={};r===null?r=[C]:r.push(C),s++}}var d=K===s;if(u=u||d,!u){let oe=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let j;if(e.flipX===void 0&&(j="flipX")){let F={};r===null?r=[F]:r.push(F),s++}}var d=oe===s;if(u=u||d,!u){let j=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let W;if(e.flipY===void 0&&(W="flipY")){let fe={};r===null?r=[fe]:r.push(fe),s++}}var d=j===s;if(u=u||d,!u){let W=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Se;if(e.rotation===void 0&&(Se="rotation")){let be={};r===null?r=[be]:r.push(be),s++}}var d=W===s;if(u=u||d,!u){let Se=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let me;if(e.originX===void 0&&(me="originX")){let lr={};r===null?r=[lr]:r.push(lr),s++}}var d=Se===s;if(u=u||d,!u){let me=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Fe;if(e.originY===void 0&&(Fe="originY")){let wn={};r===null?r=[wn]:r.push(wn),s++}}var d=me===s;if(u=u||d,!u){let Fe=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let At;if(e.layer===void 0&&(At="layer")){let Pt={};r===null?r=[Pt]:r.push(Pt),s++}}var d=Fe===s;if(u=u||d,!u){let At=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Et;if(e.alpha===void 0&&(Et="alpha")){let In={};r===null?r=[In]:r.push(In),s++}}var d=At===s;if(u=u||d,!u){let Et=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let xt;if(e.opacity===void 0&&(xt="opacity")){let vn={};r===null?r=[vn]:r.push(vn),s++}}var d=Et===s;if(u=u||d,!u){let xt=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let St;if(e.blur===void 0&&(St="blur")){let kn={};r===null?r=[kn]:r.push(kn),s++}}var d=xt===s;if(u=u||d,!u){let St=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Zr;if(e.filters===void 0&&(Zr="filters")){let An={};r===null?r=[An]:r.push(An),s++}}var d=St===s;if(u=u||d,!u){let Zr=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Si;if(e.animations===void 0&&(Si="animations")){let Pn={};r===null?r=[Pn]:r.push(Pn),s++}}var d=Zr===s;u=u||d}}}}}}}}}}}}}}}}}}}}}}if(u)s=c,r!==null&&(c?r.length=c:r=null);else{let w={};r===null?r=[w]:r.push(w),s++}var f=l===s;if(f){let w={instancePath:t,schemaPath:"#/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[w]:r.push(w),s++}else s=o,r!==null&&(o?r.length=o:r=null);let m=s,b=!1,h=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.content===void 0){let w={instancePath:t,schemaPath:"#/anyOf/0/required",keyword:"required",params:{missingProperty:"content"},message:"must have required property 'content'"};r===null?r=[w]:r.push(w),s++}var y=h===s;if(b=b||y,!b){let w=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.textStyleId===void 0){let E={instancePath:t,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"textStyleId"},message:"must have required property 'textStyleId'"};r===null?r=[E]:r.push(E),s++}var y=w===s;b=b||y}if(b)s=m,r!==null&&(m?r.length=m:r=null);else{let w={instancePath:t,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[w]:r.push(w),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.content!==void 0&&(qs(e.content,{instancePath:t+"/content",parentData:e,parentDataProperty:"content",rootData:a})||(r=r===null?qs.errors:r.concat(qs.errors),s=r.length)),e.textStyleId!==void 0&&typeof e.textStyleId!="string"){let w={instancePath:t+"/textStyleId",schemaPath:"#/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[w]:r.push(w),s++}if(e.width!==void 0&&typeof e.width!="number"){let w={instancePath:t+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),s++}if(e.height!==void 0&&typeof e.height!="number"){let w={instancePath:t+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),s++}}else{let w={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[w]:r.push(w),s++}return Vs.errors=r,s===0}function Fs(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.elements===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"elements"},message:"must have required property 'elements'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(o!=="elements"){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.elements!==void 0){let o=e.elements;if(Array.isArray(o)){let l=o.length;for(let c=0;c<l;c++){let u=o[c];if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:t+"/elements/"+c,schemaPath:"#/properties/elements/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}}else{let l={instancePath:t+"/elements",schemaPath:"#/properties/elements/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Fs.errors=r,s===0}var QI={type:"object",properties:{x:{type:"number"},y:{type:"number"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},flipX:{type:"boolean"},flipY:{type:"boolean"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"}},minProperties:1,additionalProperties:!1};function Us(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let o={instancePath:t,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!Je.call(QI.properties,o)){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.x!==void 0&&typeof e.x!="number"){let o={instancePath:t+"/x",schemaPath:"#/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.y!==void 0&&typeof e.y!="number"){let o={instancePath:t+"/y",schemaPath:"#/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.anchorX!==void 0&&typeof e.anchorX!="number"){let o={instancePath:t+"/anchorX",schemaPath:"#/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.anchorY!==void 0&&typeof e.anchorY!="number"){let o={instancePath:t+"/anchorY",schemaPath:"#/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.scaleX!==void 0&&typeof e.scaleX!="number"){let o={instancePath:t+"/scaleX",schemaPath:"#/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.scaleY!==void 0&&typeof e.scaleY!="number"){let o={instancePath:t+"/scaleY",schemaPath:"#/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.flipX!==void 0&&typeof e.flipX!="boolean"){let o={instancePath:t+"/flipX",schemaPath:"#/properties/flipX/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}if(e.flipY!==void 0&&typeof e.flipY!="boolean"){let o={instancePath:t+"/flipY",schemaPath:"#/properties/flipY/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}if(e.rotation!==void 0&&typeof e.rotation!="number"){let o={instancePath:t+"/rotation",schemaPath:"#/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.originX!==void 0&&typeof e.originX!="number"){let o={instancePath:t+"/originX",schemaPath:"#/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.originY!==void 0&&typeof e.originY!="number"){let o={instancePath:t+"/originY",schemaPath:"#/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Us.errors=r,s===0}function Bs(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let p in e)if(p!=="items"){let d={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),s++}if(e.items!==void 0){let p=e.items;if(Array.isArray(p)){let d=p.length;for(let f=0;f<d;f++){let m=p[f],b=s,h=s;if(m&&typeof m=="object"&&!Array.isArray(m)){let v;if(m.resourceId===void 0&&(v="resourceId")||m.text===void 0&&(v="text")){let O={};r===null?r=[O]:r.push(O),s++}}var o=h===s;if(o){let v={instancePath:t+"/items/"+f,schemaPath:"#/properties/items/items/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[v]:r.push(v),s++}else s=b,r!==null&&(b?r.length=b:r=null);let y=s,w=s;if(m&&typeof m=="object"&&!Array.isArray(m)){let v;if(m.resourceId===void 0&&(v="resourceId")||m.layout===void 0&&(v="layout")){let O={};r===null?r=[O]:r.push(O),s++}}var l=w===s;if(l){let v={instancePath:t+"/items/"+f,schemaPath:"#/properties/items/items/allOf/1/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[v]:r.push(v),s++}else s=y,r!==null&&(y?r.length=y:r=null);let g=s,E=s;if(m&&typeof m=="object"&&!Array.isArray(m)){let v;if(m.text===void 0&&(v="text")||m.layout===void 0&&(v="layout")){let O={};r===null?r=[O]:r.push(O),s++}}var c=E===s;if(c){let v={instancePath:t+"/items/"+f,schemaPath:"#/properties/items/items/allOf/2/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[v]:r.push(v),s++}else s=g,r!==null&&(g?r.length=g:r=null);let k=s,P=s;if(m&&typeof m=="object"&&!Array.isArray(m)){let v;if(m.transformId===void 0&&(v="transformId")||m.transform===void 0&&(v="transform")){let O={};r===null?r=[O]:r.push(O),s++}}var u=P===s;if(u){let v={instancePath:t+"/items/"+f,schemaPath:"#/properties/items/items/allOf/3/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[v]:r.push(v),s++}else s=k,r!==null&&(k?r.length=k:r=null);if(m&&typeof m=="object"&&!Array.isArray(m)){if(m.id===void 0){let v={instancePath:t+"/items/"+f,schemaPath:"#/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[v]:r.push(v),s++}for(let v in m)if(!Je.call(ef.properties.items.items.properties,v)){let O={instancePath:t+"/items/"+f,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:v},message:"must NOT have additional properties"};r===null?r=[O]:r.push(O),s++}if(m.id!==void 0&&typeof m.id!="string"){let v={instancePath:t+"/items/"+f+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[v]:r.push(v),s++}if(m.animationName!==void 0&&typeof m.animationName!="string"){let v={instancePath:t+"/items/"+f+"/animationName",schemaPath:"#/properties/items/items/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[v]:r.push(v),s++}if(m.animationSpeed!==void 0&&typeof m.animationSpeed!="number"){let v={instancePath:t+"/items/"+f+"/animationSpeed",schemaPath:"#/properties/items/items/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[v]:r.push(v),s++}if(m.resourceId!==void 0&&typeof m.resourceId!="string"){let v={instancePath:t+"/items/"+f+"/resourceId",schemaPath:"#/properties/items/items/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[v]:r.push(v),s++}if(m.text!==void 0&&(Vs(m.text,{instancePath:t+"/items/"+f+"/text",parentData:m,parentDataProperty:"text",rootData:a})||(r=r===null?Vs.errors:r.concat(Vs.errors),s=r.length)),m.layout!==void 0&&(Fs(m.layout,{instancePath:t+"/items/"+f+"/layout",parentData:m,parentDataProperty:"layout",rootData:a})||(r=r===null?Fs.errors:r.concat(Fs.errors),s=r.length)),m.transformId!==void 0&&typeof m.transformId!="string"){let v={instancePath:t+"/items/"+f+"/transformId",schemaPath:"#/properties/items/items/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[v]:r.push(v),s++}if(m.transform!==void 0&&(Us(m.transform,{instancePath:t+"/items/"+f+"/transform",parentData:m,parentDataProperty:"transform",rootData:a})||(r=r===null?Us.errors:r.concat(Us.errors),s=r.length)),m.x!==void 0&&typeof m.x!="number"){let v={instancePath:t+"/items/"+f+"/x",schemaPath:"#/properties/items/items/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[v]:r.push(v),s++}if(m.y!==void 0&&typeof m.y!="number"){let v={instancePath:t+"/items/"+f+"/y",schemaPath:"#/properties/items/items/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[v]:r.push(v),s++}if(m.anchorX!==void 0&&typeof m.anchorX!="number"){let v={instancePath:t+"/items/"+f+"/anchorX",schemaPath:"#/properties/items/items/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[v]:r.push(v),s++}if(m.anchorY!==void 0&&typeof m.anchorY!="number"){let v={instancePath:t+"/items/"+f+"/anchorY",schemaPath:"#/properties/items/items/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[v]:r.push(v),s++}if(m.scaleX!==void 0&&typeof m.scaleX!="number"){let v={instancePath:t+"/items/"+f+"/scaleX",schemaPath:"#/properties/items/items/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[v]:r.push(v),s++}if(m.scaleY!==void 0&&typeof m.scaleY!="number"){let v={instancePath:t+"/items/"+f+"/scaleY",schemaPath:"#/properties/items/items/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[v]:r.push(v),s++}if(m.flipX!==void 0&&typeof m.flipX!="boolean"){let v={instancePath:t+"/items/"+f+"/flipX",schemaPath:"#/properties/items/items/properties/flipX/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[v]:r.push(v),s++}if(m.flipY!==void 0&&typeof m.flipY!="boolean"){let v={instancePath:t+"/items/"+f+"/flipY",schemaPath:"#/properties/items/items/properties/flipY/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[v]:r.push(v),s++}if(m.rotation!==void 0&&typeof m.rotation!="number"){let v={instancePath:t+"/items/"+f+"/rotation",schemaPath:"#/properties/items/items/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[v]:r.push(v),s++}if(m.originX!==void 0&&typeof m.originX!="number"){let v={instancePath:t+"/items/"+f+"/originX",schemaPath:"#/properties/items/items/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[v]:r.push(v),s++}if(m.originY!==void 0&&typeof m.originY!="number"){let v={instancePath:t+"/items/"+f+"/originY",schemaPath:"#/properties/items/items/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[v]:r.push(v),s++}if(m.layer!==void 0){let v=m.layer;if(typeof v!="number"){let O={instancePath:t+"/items/"+f+"/layer",schemaPath:"#/properties/items/items/properties/layer/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[O]:r.push(O),s++}if(!(v===10||v===30||v===50||v===70||v===90)){let O={instancePath:t+"/items/"+f+"/layer",schemaPath:"#/properties/items/items/properties/layer/enum",keyword:"enum",params:{allowedValues:ef.properties.items.items.properties.layer.enum},message:"must be equal to one of the allowed values"};r===null?r=[O]:r.push(O),s++}}if(m.alpha!==void 0){let v=m.alpha;if(typeof v=="number"){if(v>1||isNaN(v)){let O={instancePath:t+"/items/"+f+"/alpha",schemaPath:"#/properties/items/items/properties/alpha/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[O]:r.push(O),s++}if(v<0||isNaN(v)){let O={instancePath:t+"/items/"+f+"/alpha",schemaPath:"#/properties/items/items/properties/alpha/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[O]:r.push(O),s++}}else{let O={instancePath:t+"/items/"+f+"/alpha",schemaPath:"#/properties/items/items/properties/alpha/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[O]:r.push(O),s++}}if(m.opacity!==void 0){let v=m.opacity;if(typeof v=="number"){if(v>1||isNaN(v)){let O={instancePath:t+"/items/"+f+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[O]:r.push(O),s++}if(v<0||isNaN(v)){let O={instancePath:t+"/items/"+f+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[O]:r.push(O),s++}}else{let O={instancePath:t+"/items/"+f+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[O]:r.push(O),s++}}m.blur!==void 0&&(qe(m.blur,{instancePath:t+"/items/"+f+"/blur",parentData:m,parentDataProperty:"blur",rootData:a})||(r=r===null?qe.errors:r.concat(qe.errors),s=r.length)),m.filters!==void 0&&(nr(m.filters,{instancePath:t+"/items/"+f+"/filters",parentData:m,parentDataProperty:"filters",rootData:a})||(r=r===null?nr.errors:r.concat(nr.errors),s=r.length)),m.animations!==void 0&&(ce(m.animations,{instancePath:t+"/items/"+f+"/animations",parentData:m,parentDataProperty:"animations",rootData:a})||(r=r===null?ce.errors:r.concat(ce.errors),s=r.length))}else{let v={instancePath:t+"/items/"+f,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[v]:r.push(v),s++}}}else{let d={instancePath:t+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[d]:r.push(d),s++}}}else{let p={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}return Bs.errors=r,s===0}function Of(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return Bs(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?Bs.errors:r.concat(Bs.errors),s=r.length),Of.errors=r,s===0}var Rf=$f;var ZI={type:"object",properties:{sounds:{type:"array",items:{$ref:"#/definitions/audioSound"}},resourceId:{type:"string"},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},loop:{type:"boolean"},interruption:{type:"string",enum:["immediate","loopEnd"]},startDelayMs:{type:"number",minimum:0}},anyOf:[{required:["resourceId"]},{required:["sounds"]}],allOf:[{not:{required:["resourceId","sounds"]}},{not:{required:["startDelayMs","sounds"]}}],additionalProperties:!1};function Ys(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0,o=s,l=!1,c=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.resourceId===void 0){let y={instancePath:t,schemaPath:"#/anyOf/0/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};r===null?r=[y]:r.push(y),s++}var u=c===s;if(l=l||u,!l){let y=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.sounds===void 0){let g={instancePath:t,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"sounds"},message:"must have required property 'sounds'"};r===null?r=[g]:r.push(g),s++}var u=y===s;l=l||u}if(l)s=o,r!==null&&(o?r.length=o:r=null);else{let y={instancePath:t,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[y]:r.push(y),s++}let p=s,d=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let y;if(e.resourceId===void 0&&(y="resourceId")||e.sounds===void 0&&(y="sounds")){let w={};r===null?r=[w]:r.push(w),s++}}var f=d===s;if(f){let y={instancePath:t,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[y]:r.push(y),s++}else s=p,r!==null&&(p?r.length=p:r=null);let m=s,b=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let y;if(e.startDelayMs===void 0&&(y="startDelayMs")||e.sounds===void 0&&(y="sounds")){let w={};r===null?r=[w]:r.push(w),s++}}var h=b===s;if(h){let y={instancePath:t,schemaPath:"#/allOf/1/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[y]:r.push(y),s++}else s=m,r!==null&&(m?r.length=m:r=null);if(e&&typeof e=="object"&&!Array.isArray(e)){for(let y in e)if(!(y==="sounds"||y==="resourceId"||y==="volume"||y==="muted"||y==="pan"||y==="loop"||y==="interruption"||y==="startDelayMs")){let w={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};r===null?r=[w]:r.push(w),s++}if(e.sounds!==void 0){let y=e.sounds;if(Array.isArray(y)){let w=y.length;for(let g=0;g<w;g++)Me(y[g],{instancePath:t+"/sounds/"+g,parentData:y,parentDataProperty:g,rootData:a})||(r=r===null?Me.errors:r.concat(Me.errors),s=r.length)}else{let w={instancePath:t+"/sounds",schemaPath:"#/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[w]:r.push(w),s++}}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let y={instancePath:t+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),s++}if(e.volume!==void 0){let y=e.volume;if(typeof y=="number"){if(y>100||isNaN(y)){let w={instancePath:t+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};r===null?r=[w]:r.push(w),s++}if(y<0||isNaN(y)){let w={instancePath:t+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[w]:r.push(w),s++}}else{let w={instancePath:t+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let y={instancePath:t+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[y]:r.push(y),s++}if(e.pan!==void 0){let y=e.pan;if(typeof y=="number"){if(y>1||isNaN(y)){let w={instancePath:t+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[w]:r.push(w),s++}if(y<-1||isNaN(y)){let w={instancePath:t+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};r===null?r=[w]:r.push(w),s++}}else{let w={instancePath:t+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let y={instancePath:t+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[y]:r.push(y),s++}if(e.interruption!==void 0){let y=e.interruption;if(typeof y!="string"){let w={instancePath:t+"/interruption",schemaPath:"#/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[w]:r.push(w),s++}if(!(y==="immediate"||y==="loopEnd")){let w={instancePath:t+"/interruption",schemaPath:"#/properties/interruption/enum",keyword:"enum",params:{allowedValues:ZI.properties.interruption.enum},message:"must be equal to one of the allowed values"};r===null?r=[w]:r.push(w),s++}}if(e.startDelayMs!==void 0){let y=e.startDelayMs;if(typeof y=="number"){if(y<0||isNaN(y)){let w={instancePath:t+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[w]:r.push(w),s++}}else{let w={instancePath:t+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),s++}}}else{let y={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),s++}return Ys.errors=r,s===0}function $f(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return Ys(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?Ys.errors:r.concat(Ys.errors),s=r.length),$f.errors=r,s===0}var Cf=_f;var ev={type:"object",properties:{type:{type:"string",enum:["boolean","number"]},target:{type:"integer",minimum:1},name:{type:"string",minLength:1},description:{type:"string",minLength:1},lockedName:{type:"string",minLength:1},lockedDescription:{type:"string",minLength:1},hidden:{type:"boolean"}},required:["type","name","description"],allOf:[{if:{properties:{type:{const:"number"}}},then:{required:["target"]}},{if:{properties:{type:{const:"boolean"}}},then:{not:{required:["target"]}}}],additionalProperties:!1};function zs(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0,o=s,l=!0,c=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="number"){let h={};r===null?r=[h]:r.push(h),s++}var u=c===s;if(s=o,r!==null&&(o?r.length=o:r=null),u){let h=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.target===void 0){let w={instancePath:t,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"target"},message:"must have required property 'target'"};r===null?r=[w]:r.push(w),s++}var u=h===s;l=u}if(!l){let h={instancePath:t,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[h]:r.push(h),s++}let p=s,d=!0,f=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="boolean"){let h={};r===null?r=[h]:r.push(h),s++}var m=f===s;if(s=p,r!==null&&(p?r.length=p:r=null),m){let h=s,y=s,w=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let E;if(e.target===void 0&&(E="target")){let k={};r===null?r=[k]:r.push(k),s++}}var b=w===s;if(b){let E={instancePath:t,schemaPath:"#/allOf/1/then/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[E]:r.push(E),s++}else s=y,r!==null&&(y?r.length=y:r=null);var m=h===s;d=m}if(!d){let h={instancePath:t,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[h]:r.push(h),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let h={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};r===null?r=[h]:r.push(h),s++}if(e.name===void 0){let h={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"name"},message:"must have required property 'name'"};r===null?r=[h]:r.push(h),s++}if(e.description===void 0){let h={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"description"},message:"must have required property 'description'"};r===null?r=[h]:r.push(h),s++}for(let h in e)if(!(h==="type"||h==="target"||h==="name"||h==="description"||h==="lockedName"||h==="lockedDescription"||h==="hidden")){let y={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:h},message:"must NOT have additional properties"};r===null?r=[y]:r.push(y),s++}if(e.type!==void 0){let h=e.type;if(typeof h!="string"){let y={instancePath:t+"/type",schemaPath:"#/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),s++}if(!(h==="boolean"||h==="number")){let y={instancePath:t+"/type",schemaPath:"#/properties/type/enum",keyword:"enum",params:{allowedValues:ev.properties.type.enum},message:"must be equal to one of the allowed values"};r===null?r=[y]:r.push(y),s++}}if(e.target!==void 0){let h=e.target;if(!(typeof h=="number"&&!(h%1)&&!isNaN(h))){let y={instancePath:t+"/target",schemaPath:"#/properties/target/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[y]:r.push(y),s++}if(typeof h=="number"&&(h<1||isNaN(h))){let y={instancePath:t+"/target",schemaPath:"#/properties/target/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};r===null?r=[y]:r.push(y),s++}}if(e.name!==void 0){let h=e.name;if(typeof h=="string"){if($e(h)<1){let y={instancePath:t+"/name",schemaPath:"#/properties/name/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[y]:r.push(y),s++}}else{let y={instancePath:t+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),s++}}if(e.description!==void 0){let h=e.description;if(typeof h=="string"){if($e(h)<1){let y={instancePath:t+"/description",schemaPath:"#/properties/description/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[y]:r.push(y),s++}}else{let y={instancePath:t+"/description",schemaPath:"#/properties/description/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),s++}}if(e.lockedName!==void 0){let h=e.lockedName;if(typeof h=="string"){if($e(h)<1){let y={instancePath:t+"/lockedName",schemaPath:"#/properties/lockedName/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[y]:r.push(y),s++}}else{let y={instancePath:t+"/lockedName",schemaPath:"#/properties/lockedName/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),s++}}if(e.lockedDescription!==void 0){let h=e.lockedDescription;if(typeof h=="string"){if($e(h)<1){let y={instancePath:t+"/lockedDescription",schemaPath:"#/properties/lockedDescription/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[y]:r.push(y),s++}}else{let y={instancePath:t+"/lockedDescription",schemaPath:"#/properties/lockedDescription/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),s++}}if(e.hidden!==void 0&&typeof e.hidden!="boolean"){let h={instancePath:t+"/hidden",schemaPath:"#/properties/hidden/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[h]:r.push(h),s++}}else{let h={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[h]:r.push(h),s++}return zs.errors=r,s===0}function _f(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return zs(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?zs.errors:r.concat(zs.errors),s=r.length),_f.errors=r,s===0}var jf=Nf;var rv={type:"object",required:["type"],$defs:{keyframe:{type:"object",required:["value","duration"],properties:{value:{type:"number"},duration:{type:"number"},easing:{type:"string",enum:["linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easeInElastic","easeOutElastic","easeInOutElastic"]},relative:{type:"boolean"}},additionalProperties:!1},tweenProperty:{type:"object",properties:{initialValue:{type:"number"},keyframes:{type:"array",minItems:1,items:{$ref:"#/$defs/keyframe"}}},required:["keyframes"],additionalProperties:!1},updateTween:{type:"object",properties:{alpha:{$ref:"#/$defs/tweenProperty"},x:{$ref:"#/$defs/tweenProperty"},y:{$ref:"#/$defs/tweenProperty"},scaleX:{$ref:"#/$defs/tweenProperty"},scaleY:{$ref:"#/$defs/tweenProperty"},rotation:{$ref:"#/$defs/tweenProperty"}},additionalProperties:!1,minProperties:1},transitionTween:{type:"object",properties:{translateX:{$ref:"#/$defs/tweenProperty"},translateY:{$ref:"#/$defs/tweenProperty"},alpha:{$ref:"#/$defs/tweenProperty"},scaleX:{$ref:"#/$defs/tweenProperty"},scaleY:{$ref:"#/$defs/tweenProperty"},rotation:{$ref:"#/$defs/tweenProperty"}},additionalProperties:!1,minProperties:1},transitionSide:{type:"object",required:["tween"],properties:{tween:{$ref:"#/$defs/transitionTween"}},additionalProperties:!1},maskProgress:{$ref:"#/$defs/tweenProperty"},compositeMaskItem:{type:"object",required:["texture"],properties:{texture:{type:"string"},channel:{type:"string",enum:["red","green","blue","alpha"]},invert:{type:"boolean"}},additionalProperties:!1},mask:{type:"object",required:["kind"],properties:{kind:{type:"string",enum:["single","sequence","composite"]},texture:{type:"string"},textures:{type:"array",minItems:1,items:{type:"string"}},items:{type:"array",minItems:1,items:{$ref:"#/$defs/compositeMaskItem"}},combine:{type:"string",enum:["max","min","multiply","add"]},channel:{type:"string",enum:["red","green","blue","alpha"]},softness:{type:"number"},invert:{type:"boolean"},sample:{type:"string"},progress:{$ref:"#/$defs/maskProgress"}},additionalProperties:!1,allOf:[{if:{properties:{kind:{const:"single"}}},then:{required:["texture"]}},{if:{properties:{kind:{const:"sequence"}}},then:{required:["textures"]}},{if:{properties:{kind:{const:"composite"}}},then:{required:["items"]}}]}},properties:{name:{type:"string"},type:{type:"string",enum:["update","transition"]},complete:{type:"object",properties:{payload:{type:"object"}},additionalProperties:!0},tween:{$ref:"#/$defs/updateTween"},prev:{$ref:"#/$defs/transitionSide"},next:{$ref:"#/$defs/transitionSide"},mask:{$ref:"#/$defs/mask"}},allOf:[{if:{properties:{type:{const:"update"}}},then:{required:["tween"],not:{anyOf:[{required:["prev"]},{required:["next"]},{required:["mask"]}]}}},{if:{properties:{type:{const:"transition"}}},then:{not:{required:["tween"]},anyOf:[{required:["prev"]},{required:["next"]},{required:["mask"]}]}}],additionalProperties:!1,$id:"https://route-engine.runtime/schemas/projectData/animationResource.yaml"};var tv={type:"object",required:["value","duration"],properties:{value:{type:"number"},duration:{type:"number"},easing:{type:"string",enum:["linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easeInElastic","easeOutElastic","easeInOutElastic"]},relative:{type:"boolean"}},additionalProperties:!1};function Wr(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.value===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"value"},message:"must have required property 'value'"};r===null?r=[o]:r.push(o),s++}if(e.duration===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"duration"},message:"must have required property 'duration'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!(o==="value"||o==="duration"||o==="easing"||o==="relative")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.value!==void 0&&typeof e.value!="number"){let o={instancePath:t+"/value",schemaPath:"#/properties/value/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.duration!==void 0&&typeof e.duration!="number"){let o={instancePath:t+"/duration",schemaPath:"#/properties/duration/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.easing!==void 0){let o=e.easing;if(typeof o!="string"){let l={instancePath:t+"/easing",schemaPath:"#/properties/easing/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(!(o==="linear"||o==="easeInQuad"||o==="easeOutQuad"||o==="easeInOutQuad"||o==="easeInCubic"||o==="easeOutCubic"||o==="easeInOutCubic"||o==="easeInQuart"||o==="easeOutQuart"||o==="easeInOutQuart"||o==="easeInQuint"||o==="easeOutQuint"||o==="easeInOutQuint"||o==="easeInSine"||o==="easeOutSine"||o==="easeInOutSine"||o==="easeInExpo"||o==="easeOutExpo"||o==="easeInOutExpo"||o==="easeInCirc"||o==="easeOutCirc"||o==="easeInOutCirc"||o==="easeInBack"||o==="easeOutBack"||o==="easeInOutBack"||o==="easeInBounce"||o==="easeOutBounce"||o==="easeInOutBounce"||o==="easeInElastic"||o==="easeOutElastic"||o==="easeInOutElastic")){let l={instancePath:t+"/easing",schemaPath:"#/properties/easing/enum",keyword:"enum",params:{allowedValues:tv.properties.easing.enum},message:"must be equal to one of the allowed values"};r===null?r=[l]:r.push(l),s++}}if(e.relative!==void 0&&typeof e.relative!="boolean"){let o={instancePath:t+"/relative",schemaPath:"#/properties/relative/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Wr.errors=r,s===0}function ee(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyframes===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"keyframes"},message:"must have required property 'keyframes'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!(o==="initialValue"||o==="keyframes")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.initialValue!==void 0&&typeof e.initialValue!="number"){let o={instancePath:t+"/initialValue",schemaPath:"#/properties/initialValue/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.keyframes!==void 0){let o=e.keyframes;if(Array.isArray(o)){if(o.length<1){let c={instancePath:t+"/keyframes",schemaPath:"#/properties/keyframes/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[c]:r.push(c),s++}let l=o.length;for(let c=0;c<l;c++)Wr(o[c],{instancePath:t+"/keyframes/"+c,parentData:o,parentDataProperty:c,rootData:a})||(r=r===null?Wr.errors:r.concat(Wr.errors),s=r.length)}else{let l={instancePath:t+"/keyframes",schemaPath:"#/properties/keyframes/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return ee.errors=r,s===0}function Xs(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let o={instancePath:t,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!(o==="alpha"||o==="x"||o==="y"||o==="scaleX"||o==="scaleY"||o==="rotation")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}e.alpha!==void 0&&(ee(e.alpha,{instancePath:t+"/alpha",parentData:e,parentDataProperty:"alpha",rootData:a})||(r=r===null?ee.errors:r.concat(ee.errors),s=r.length)),e.x!==void 0&&(ee(e.x,{instancePath:t+"/x",parentData:e,parentDataProperty:"x",rootData:a})||(r=r===null?ee.errors:r.concat(ee.errors),s=r.length)),e.y!==void 0&&(ee(e.y,{instancePath:t+"/y",parentData:e,parentDataProperty:"y",rootData:a})||(r=r===null?ee.errors:r.concat(ee.errors),s=r.length)),e.scaleX!==void 0&&(ee(e.scaleX,{instancePath:t+"/scaleX",parentData:e,parentDataProperty:"scaleX",rootData:a})||(r=r===null?ee.errors:r.concat(ee.errors),s=r.length)),e.scaleY!==void 0&&(ee(e.scaleY,{instancePath:t+"/scaleY",parentData:e,parentDataProperty:"scaleY",rootData:a})||(r=r===null?ee.errors:r.concat(ee.errors),s=r.length)),e.rotation!==void 0&&(ee(e.rotation,{instancePath:t+"/rotation",parentData:e,parentDataProperty:"rotation",rootData:a})||(r=r===null?ee.errors:r.concat(ee.errors),s=r.length))}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Xs.errors=r,s===0}function Gs(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let o={instancePath:t,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!(o==="translateX"||o==="translateY"||o==="alpha"||o==="scaleX"||o==="scaleY"||o==="rotation")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}e.translateX!==void 0&&(ee(e.translateX,{instancePath:t+"/translateX",parentData:e,parentDataProperty:"translateX",rootData:a})||(r=r===null?ee.errors:r.concat(ee.errors),s=r.length)),e.translateY!==void 0&&(ee(e.translateY,{instancePath:t+"/translateY",parentData:e,parentDataProperty:"translateY",rootData:a})||(r=r===null?ee.errors:r.concat(ee.errors),s=r.length)),e.alpha!==void 0&&(ee(e.alpha,{instancePath:t+"/alpha",parentData:e,parentDataProperty:"alpha",rootData:a})||(r=r===null?ee.errors:r.concat(ee.errors),s=r.length)),e.scaleX!==void 0&&(ee(e.scaleX,{instancePath:t+"/scaleX",parentData:e,parentDataProperty:"scaleX",rootData:a})||(r=r===null?ee.errors:r.concat(ee.errors),s=r.length)),e.scaleY!==void 0&&(ee(e.scaleY,{instancePath:t+"/scaleY",parentData:e,parentDataProperty:"scaleY",rootData:a})||(r=r===null?ee.errors:r.concat(ee.errors),s=r.length)),e.rotation!==void 0&&(ee(e.rotation,{instancePath:t+"/rotation",parentData:e,parentDataProperty:"rotation",rootData:a})||(r=r===null?ee.errors:r.concat(ee.errors),s=r.length))}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Gs.errors=r,s===0}function Hr(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.tween===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"tween"},message:"must have required property 'tween'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(o!=="tween"){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}e.tween!==void 0&&(Gs(e.tween,{instancePath:t+"/tween",parentData:e,parentDataProperty:"tween",rootData:a})||(r=r===null?Gs.errors:r.concat(Gs.errors),s=r.length))}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Hr.errors=r,s===0}var As={type:"object",required:["kind"],properties:{kind:{type:"string",enum:["single","sequence","composite"]},texture:{type:"string"},textures:{type:"array",minItems:1,items:{type:"string"}},items:{type:"array",minItems:1,items:{$ref:"#/$defs/compositeMaskItem"}},combine:{type:"string",enum:["max","min","multiply","add"]},channel:{type:"string",enum:["red","green","blue","alpha"]},softness:{type:"number"},invert:{type:"boolean"},sample:{type:"string"},progress:{$ref:"#/$defs/maskProgress"}},additionalProperties:!1,allOf:[{if:{properties:{kind:{const:"single"}}},then:{required:["texture"]}},{if:{properties:{kind:{const:"sequence"}}},then:{required:["textures"]}},{if:{properties:{kind:{const:"composite"}}},then:{required:["items"]}}]},nv={type:"object",required:["texture"],properties:{texture:{type:"string"},channel:{type:"string",enum:["red","green","blue","alpha"]},invert:{type:"boolean"}},additionalProperties:!1};function Hs(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.texture===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!(o==="texture"||o==="channel"||o==="invert")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.texture!==void 0&&typeof e.texture!="string"){let o={instancePath:t+"/texture",schemaPath:"#/properties/texture/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.channel!==void 0){let o=e.channel;if(typeof o!="string"){let l={instancePath:t+"/channel",schemaPath:"#/properties/channel/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(!(o==="red"||o==="green"||o==="blue"||o==="alpha")){let l={instancePath:t+"/channel",schemaPath:"#/properties/channel/enum",keyword:"enum",params:{allowedValues:nv.properties.channel.enum},message:"must be equal to one of the allowed values"};r===null?r=[l]:r.push(l),s++}}if(e.invert!==void 0&&typeof e.invert!="boolean"){let o={instancePath:t+"/invert",schemaPath:"#/properties/invert/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Hs.errors=r,s===0}function Ks(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyframes===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"keyframes"},message:"must have required property 'keyframes'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!(o==="initialValue"||o==="keyframes")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.initialValue!==void 0&&typeof e.initialValue!="number"){let o={instancePath:t+"/initialValue",schemaPath:"#/properties/initialValue/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.keyframes!==void 0){let o=e.keyframes;if(Array.isArray(o)){if(o.length<1){let c={instancePath:t+"/keyframes",schemaPath:"#/properties/keyframes/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[c]:r.push(c),s++}let l=o.length;for(let c=0;c<l;c++)Wr(o[c],{instancePath:t+"/keyframes/"+c,parentData:o,parentDataProperty:c,rootData:a})||(r=r===null?Wr.errors:r.concat(Wr.errors),s=r.length)}else{let l={instancePath:t+"/keyframes",schemaPath:"#/properties/keyframes/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Ks.errors=r,s===0}function Ws(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0,o=s,l=!0,c=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.kind!==void 0&&e.kind!=="single"){let g={};r===null?r=[g]:r.push(g),s++}var u=c===s;if(s=o,r!==null&&(o?r.length=o:r=null),u){let g=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.texture===void 0){let k={instancePath:t,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};r===null?r=[k]:r.push(k),s++}var u=g===s;l=u}if(!l){let g={instancePath:t,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[g]:r.push(g),s++}let p=s,d=!0,f=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.kind!==void 0&&e.kind!=="sequence"){let g={};r===null?r=[g]:r.push(g),s++}var m=f===s;if(s=p,r!==null&&(p?r.length=p:r=null),m){let g=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.textures===void 0){let k={instancePath:t,schemaPath:"#/allOf/1/then/required",keyword:"required",params:{missingProperty:"textures"},message:"must have required property 'textures'"};r===null?r=[k]:r.push(k),s++}var m=g===s;d=m}if(!d){let g={instancePath:t,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[g]:r.push(g),s++}let b=s,h=!0,y=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.kind!==void 0&&e.kind!=="composite"){let g={};r===null?r=[g]:r.push(g),s++}var w=y===s;if(s=b,r!==null&&(b?r.length=b:r=null),w){let g=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.items===void 0){let k={instancePath:t,schemaPath:"#/allOf/2/then/required",keyword:"required",params:{missingProperty:"items"},message:"must have required property 'items'"};r===null?r=[k]:r.push(k),s++}var w=g===s;h=w}if(!h){let g={instancePath:t,schemaPath:"#/allOf/2/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[g]:r.push(g),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.kind===void 0){let g={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[g]:r.push(g),s++}for(let g in e)if(!Je.call(As.properties,g)){let E={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:g},message:"must NOT have additional properties"};r===null?r=[E]:r.push(E),s++}if(e.kind!==void 0){let g=e.kind;if(typeof g!="string"){let E={instancePath:t+"/kind",schemaPath:"#/properties/kind/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[E]:r.push(E),s++}if(!(g==="single"||g==="sequence"||g==="composite")){let E={instancePath:t+"/kind",schemaPath:"#/properties/kind/enum",keyword:"enum",params:{allowedValues:As.properties.kind.enum},message:"must be equal to one of the allowed values"};r===null?r=[E]:r.push(E),s++}}if(e.texture!==void 0&&typeof e.texture!="string"){let g={instancePath:t+"/texture",schemaPath:"#/properties/texture/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[g]:r.push(g),s++}if(e.textures!==void 0){let g=e.textures;if(Array.isArray(g)){if(g.length<1){let k={instancePath:t+"/textures",schemaPath:"#/properties/textures/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[k]:r.push(k),s++}let E=g.length;for(let k=0;k<E;k++)if(typeof g[k]!="string"){let P={instancePath:t+"/textures/"+k,schemaPath:"#/properties/textures/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[P]:r.push(P),s++}}else{let E={instancePath:t+"/textures",schemaPath:"#/properties/textures/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[E]:r.push(E),s++}}if(e.items!==void 0){let g=e.items;if(Array.isArray(g)){if(g.length<1){let k={instancePath:t+"/items",schemaPath:"#/properties/items/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[k]:r.push(k),s++}let E=g.length;for(let k=0;k<E;k++)Hs(g[k],{instancePath:t+"/items/"+k,parentData:g,parentDataProperty:k,rootData:a})||(r=r===null?Hs.errors:r.concat(Hs.errors),s=r.length)}else{let E={instancePath:t+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[E]:r.push(E),s++}}if(e.combine!==void 0){let g=e.combine;if(typeof g!="string"){let E={instancePath:t+"/combine",schemaPath:"#/properties/combine/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[E]:r.push(E),s++}if(!(g==="max"||g==="min"||g==="multiply"||g==="add")){let E={instancePath:t+"/combine",schemaPath:"#/properties/combine/enum",keyword:"enum",params:{allowedValues:As.properties.combine.enum},message:"must be equal to one of the allowed values"};r===null?r=[E]:r.push(E),s++}}if(e.channel!==void 0){let g=e.channel;if(typeof g!="string"){let E={instancePath:t+"/channel",schemaPath:"#/properties/channel/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[E]:r.push(E),s++}if(!(g==="red"||g==="green"||g==="blue"||g==="alpha")){let E={instancePath:t+"/channel",schemaPath:"#/properties/channel/enum",keyword:"enum",params:{allowedValues:As.properties.channel.enum},message:"must be equal to one of the allowed values"};r===null?r=[E]:r.push(E),s++}}if(e.softness!==void 0&&typeof e.softness!="number"){let g={instancePath:t+"/softness",schemaPath:"#/properties/softness/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[g]:r.push(g),s++}if(e.invert!==void 0&&typeof e.invert!="boolean"){let g={instancePath:t+"/invert",schemaPath:"#/properties/invert/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[g]:r.push(g),s++}if(e.sample!==void 0&&typeof e.sample!="string"){let g={instancePath:t+"/sample",schemaPath:"#/properties/sample/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[g]:r.push(g),s++}e.progress!==void 0&&(Ks(e.progress,{instancePath:t+"/progress",parentData:e,parentDataProperty:"progress",rootData:a})||(r=r===null?Ks.errors:r.concat(Ks.errors),s=r.length))}else{let g={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[g]:r.push(g),s++}return Ws.errors=r,s===0}function Js(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0,o=s,l=!0,c=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="update"){let g={};r===null?r=[g]:r.push(g),s++}var u=c===s;if(s=o,r!==null&&(o?r.length=o:r=null),u){let g=s,E=s,k=s,P=s,v=!1,O=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let R;if(e.prev===void 0&&(R="prev")){let D={};r===null?r=[D]:r.push(D),s++}}var p=O===s;if(v=v||p,!v){let R=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let B;if(e.next===void 0&&(B="next")){let _={};r===null?r=[_]:r.push(_),s++}}var p=R===s;if(v=v||p,!v){let B=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let X;if(e.mask===void 0&&(X="mask")){let ae={};r===null?r=[ae]:r.push(ae),s++}}var p=B===s;v=v||p}}if(v)s=P,r!==null&&(P?r.length=P:r=null);else{let R={};r===null?r=[R]:r.push(R),s++}var d=k===s;if(d){let R={instancePath:t,schemaPath:"#/allOf/0/then/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[R]:r.push(R),s++}else s=E,r!==null&&(E?r.length=E:r=null);if(e&&typeof e=="object"&&!Array.isArray(e)&&e.tween===void 0){let R={instancePath:t,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"tween"},message:"must have required property 'tween'"};r===null?r=[R]:r.push(R),s++}var u=g===s;l=u}if(!l){let g={instancePath:t,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[g]:r.push(g),s++}let f=s,m=!0,b=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="transition"){let g={};r===null?r=[g]:r.push(g),s++}var h=b===s;if(s=f,r!==null&&(f?r.length=f:r=null),h){let g=s,E=s,k=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let R;if(e.tween===void 0&&(R="tween")){let D={};r===null?r=[D]:r.push(D),s++}}var y=k===s;if(y){let R={instancePath:t,schemaPath:"#/allOf/1/then/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[R]:r.push(R),s++}else s=E,r!==null&&(E?r.length=E:r=null);let P=s,v=!1,O=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.prev===void 0){let R={instancePath:t,schemaPath:"#/allOf/1/then/anyOf/0/required",keyword:"required",params:{missingProperty:"prev"},message:"must have required property 'prev'"};r===null?r=[R]:r.push(R),s++}var w=O===s;if(v=v||w,!v){let R=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.next===void 0){let B={instancePath:t,schemaPath:"#/allOf/1/then/anyOf/1/required",keyword:"required",params:{missingProperty:"next"},message:"must have required property 'next'"};r===null?r=[B]:r.push(B),s++}var w=R===s;if(v=v||w,!v){let B=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.mask===void 0){let X={instancePath:t,schemaPath:"#/allOf/1/then/anyOf/2/required",keyword:"required",params:{missingProperty:"mask"},message:"must have required property 'mask'"};r===null?r=[X]:r.push(X),s++}var w=B===s;v=v||w}}if(v)s=P,r!==null&&(P?r.length=P:r=null);else{let R={instancePath:t,schemaPath:"#/allOf/1/then/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[R]:r.push(R),s++}var h=g===s;m=h}if(!m){let g={instancePath:t,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[g]:r.push(g),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let g={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};r===null?r=[g]:r.push(g),s++}for(let g in e)if(!(g==="name"||g==="type"||g==="complete"||g==="tween"||g==="prev"||g==="next"||g==="mask")){let E={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:g},message:"must NOT have additional properties"};r===null?r=[E]:r.push(E),s++}if(e.name!==void 0&&typeof e.name!="string"){let g={instancePath:t+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[g]:r.push(g),s++}if(e.type!==void 0){let g=e.type;if(typeof g!="string"){let E={instancePath:t+"/type",schemaPath:"#/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[E]:r.push(E),s++}if(!(g==="update"||g==="transition")){let E={instancePath:t+"/type",schemaPath:"#/properties/type/enum",keyword:"enum",params:{allowedValues:rv.properties.type.enum},message:"must be equal to one of the allowed values"};r===null?r=[E]:r.push(E),s++}}if(e.complete!==void 0){let g=e.complete;if(g&&typeof g=="object"&&!Array.isArray(g)){if(g.payload!==void 0){let E=g.payload;if(!(E&&typeof E=="object"&&!Array.isArray(E))){let k={instancePath:t+"/complete/payload",schemaPath:"#/properties/complete/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[k]:r.push(k),s++}}}else{let E={instancePath:t+"/complete",schemaPath:"#/properties/complete/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[E]:r.push(E),s++}}e.tween!==void 0&&(Xs(e.tween,{instancePath:t+"/tween",parentData:e,parentDataProperty:"tween",rootData:a})||(r=r===null?Xs.errors:r.concat(Xs.errors),s=r.length)),e.prev!==void 0&&(Hr(e.prev,{instancePath:t+"/prev",parentData:e,parentDataProperty:"prev",rootData:a})||(r=r===null?Hr.errors:r.concat(Hr.errors),s=r.length)),e.next!==void 0&&(Hr(e.next,{instancePath:t+"/next",parentData:e,parentDataProperty:"next",rootData:a})||(r=r===null?Hr.errors:r.concat(Hr.errors),s=r.length)),e.mask!==void 0&&(Ws(e.mask,{instancePath:t+"/mask",parentData:e,parentDataProperty:"mask",rootData:a})||(r=r===null?Ws.errors:r.concat(Ws.errors),s=r.length))}else{let g={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[g]:r.push(g),s++}return Js.errors=r,s===0}function Nf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return Js(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?Js.errors:r.concat(Js.errors),s=r.length),Nf.errors=r,s===0}var Df=Tf;var sv={type:"object",required:["type"],$defs:{easing:{type:"string",enum:["linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easeInElastic","easeOutElastic","easeInOutElastic"]},fade:{type:"object",required:["duration"],properties:{delay:{type:"number",minimum:0},duration:{type:"number",minimum:0},easing:{$ref:"#/$defs/easing"}},additionalProperties:!1},transitionSide:{type:"object",minProperties:1,properties:{fade:{$ref:"#/$defs/fade"}},additionalProperties:!1},keyframeValue:{oneOf:[{type:"number"},{const:"target"}]},keyframe:{type:"object",required:["value","duration"],properties:{startValue:{type:"number"},value:{$ref:"#/$defs/keyframeValue"},duration:{type:"number",minimum:0},delay:{type:"number",minimum:0},easing:{$ref:"#/$defs/easing"},relative:{type:"boolean"}},additionalProperties:!1},boundedKeyframe:{allOf:[{$ref:"#/$defs/keyframe"},{if:{properties:{value:{type:"number"},relative:{const:!1}},required:["value"]},then:{properties:{value:{minimum:0,maximum:100}}}},{if:{properties:{relative:{const:!1}}},then:{properties:{startValue:{minimum:0,maximum:100}}}}]},panKeyframe:{allOf:[{$ref:"#/$defs/keyframe"},{if:{properties:{value:{type:"number"},relative:{const:!1}},required:["value"]},then:{properties:{value:{minimum:-1,maximum:1}}}},{if:{properties:{relative:{const:!1}}},then:{properties:{startValue:{minimum:-1,maximum:1}}}}]},playbackRateKeyframe:{allOf:[{$ref:"#/$defs/keyframe"},{if:{properties:{value:{type:"number"},relative:{const:!1}},required:["value"]},then:{properties:{value:{minimum:0}}}},{if:{properties:{relative:{const:!1}}},then:{properties:{startValue:{minimum:0}}}}]},volumeTweenProperty:{type:"object",required:["keyframes"],properties:{keyframes:{type:"array",minItems:1,items:{$ref:"#/$defs/boundedKeyframe"}}},additionalProperties:!1},panTweenProperty:{type:"object",required:["keyframes"],properties:{keyframes:{type:"array",minItems:1,items:{$ref:"#/$defs/panKeyframe"}}},additionalProperties:!1},playbackRateTweenProperty:{type:"object",required:["keyframes"],properties:{keyframes:{type:"array",minItems:1,items:{$ref:"#/$defs/playbackRateKeyframe"}}},additionalProperties:!1},updateTween:{type:"object",minProperties:1,properties:{volume:{$ref:"#/$defs/volumeTweenProperty"},pan:{$ref:"#/$defs/panTweenProperty"},playbackRate:{$ref:"#/$defs/playbackRateTweenProperty"}},additionalProperties:!1}},properties:{name:{type:"string"},type:{enum:["update","transition"]},tween:{$ref:"#/$defs/updateTween"},prev:{$ref:"#/$defs/transitionSide"},next:{$ref:"#/$defs/transitionSide"}},allOf:[{if:{properties:{type:{const:"update"}}},then:{required:["tween"],not:{anyOf:[{required:["prev"]},{required:["next"]}]}}},{if:{properties:{type:{const:"transition"}}},then:{anyOf:[{required:["prev"]},{required:["next"]}],not:{required:["tween"]}}}],additionalProperties:!1,$id:"https://route-engine.runtime/schemas/projectData/audioEffectResource.yaml"};function Qs(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0,o=s,l=!1,c=null,u=s;if(typeof e!="number"){let f={instancePath:t,schemaPath:"#/oneOf/0/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[f]:r.push(f),s++}var d=u===s;d&&(l=!0,c=0);let p=s;if(e!=="target"){let f={instancePath:t,schemaPath:"#/oneOf/1/const",keyword:"const",params:{allowedValue:"target"},message:"must be equal to constant"};r===null?r=[f]:r.push(f),s++}var d=p===s;if(d&&l?(l=!1,c=[c,1]):d&&(l=!0,c=1),l)s=o,r!==null&&(o?r.length=o:r=null);else{let f={instancePath:t,schemaPath:"#/oneOf",keyword:"oneOf",params:{passingSchemas:c},message:"must match exactly one schema in oneOf"};r===null?r=[f]:r.push(f),s++}return Qs.errors=r,s===0}var iv={type:"string",enum:["linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easeInElastic","easeOutElastic","easeInOutElastic"]};function Jr(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(typeof e!="string"){let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(!(e==="linear"||e==="easeInQuad"||e==="easeOutQuad"||e==="easeInOutQuad"||e==="easeInCubic"||e==="easeOutCubic"||e==="easeInOutCubic"||e==="easeInQuart"||e==="easeOutQuart"||e==="easeInOutQuart"||e==="easeInQuint"||e==="easeOutQuint"||e==="easeInOutQuint"||e==="easeInSine"||e==="easeOutSine"||e==="easeInOutSine"||e==="easeInExpo"||e==="easeOutExpo"||e==="easeInOutExpo"||e==="easeInCirc"||e==="easeOutCirc"||e==="easeInOutCirc"||e==="easeInBack"||e==="easeOutBack"||e==="easeInOutBack"||e==="easeInBounce"||e==="easeOutBounce"||e==="easeInOutBounce"||e==="easeInElastic"||e==="easeOutElastic"||e==="easeInOutElastic")){let o={instancePath:t,schemaPath:"#/enum",keyword:"enum",params:{allowedValues:iv.enum},message:"must be equal to one of the allowed values"};r===null?r=[o]:r.push(o),s++}return Jr.errors=r,s===0}function sr(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.value===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"value"},message:"must have required property 'value'"};r===null?r=[o]:r.push(o),s++}if(e.duration===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"duration"},message:"must have required property 'duration'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!(o==="startValue"||o==="value"||o==="duration"||o==="delay"||o==="easing"||o==="relative")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.startValue!==void 0&&typeof e.startValue!="number"){let o={instancePath:t+"/startValue",schemaPath:"#/properties/startValue/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.value!==void 0&&(Qs(e.value,{instancePath:t+"/value",parentData:e,parentDataProperty:"value",rootData:a})||(r=r===null?Qs.errors:r.concat(Qs.errors),s=r.length)),e.duration!==void 0){let o=e.duration;if(typeof o=="number"){if(o<0||isNaN(o)){let l={instancePath:t+"/duration",schemaPath:"#/properties/duration/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/duration",schemaPath:"#/properties/duration/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.delay!==void 0){let o=e.delay;if(typeof o=="number"){if(o<0||isNaN(o)){let l={instancePath:t+"/delay",schemaPath:"#/properties/delay/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/delay",schemaPath:"#/properties/delay/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.easing!==void 0&&(Jr(e.easing,{instancePath:t+"/easing",parentData:e,parentDataProperty:"easing",rootData:a})||(r=r===null?Jr.errors:r.concat(Jr.errors),s=r.length)),e.relative!==void 0&&typeof e.relative!="boolean"){let o={instancePath:t+"/relative",schemaPath:"#/properties/relative/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return sr.errors=r,s===0}function Zs(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;sr(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?sr.errors:r.concat(sr.errors),s=r.length);let o=s,l=!0,c=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let h;if(e.value===void 0&&(h="value")){let y={};r===null?r=[y]:r.push(y),s++}else{if(e.value!==void 0){let y=s;if(typeof e.value!="number"){let w={};r===null?r=[w]:r.push(w),s++}var u=y===s}else var u=!0;if(u)if(e.relative!==void 0){let y=s;if(e.relative!==!1){let g={};r===null?r=[g]:r.push(g),s++}var u=y===s}else var u=!0}}var p=c===s;if(s=o,r!==null&&(o?r.length=o:r=null),p){let h=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.value!==void 0){let w=e.value;if(typeof w=="number"){if(w>100||isNaN(w)){let g={instancePath:t+"/value",schemaPath:"#/allOf/1/then/properties/value/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};r===null?r=[g]:r.push(g),s++}if(w<0||isNaN(w)){let g={instancePath:t+"/value",schemaPath:"#/allOf/1/then/properties/value/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[g]:r.push(g),s++}}}var p=h===s;l=p}if(!l){let h={instancePath:t,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[h]:r.push(h),s++}let d=s,f=!0,m=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.relative!==void 0&&e.relative!==!1){let h={};r===null?r=[h]:r.push(h),s++}var b=m===s;if(s=d,r!==null&&(d?r.length=d:r=null),b){let h=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.startValue!==void 0){let w=e.startValue;if(typeof w=="number"){if(w>100||isNaN(w)){let g={instancePath:t+"/startValue",schemaPath:"#/allOf/2/then/properties/startValue/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};r===null?r=[g]:r.push(g),s++}if(w<0||isNaN(w)){let g={instancePath:t+"/startValue",schemaPath:"#/allOf/2/then/properties/startValue/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[g]:r.push(g),s++}}}var b=h===s;f=b}if(!f){let h={instancePath:t,schemaPath:"#/allOf/2/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[h]:r.push(h),s++}return Zs.errors=r,s===0}function ei(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyframes===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"keyframes"},message:"must have required property 'keyframes'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(o!=="keyframes"){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.keyframes!==void 0){let o=e.keyframes;if(Array.isArray(o)){if(o.length<1){let c={instancePath:t+"/keyframes",schemaPath:"#/properties/keyframes/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[c]:r.push(c),s++}let l=o.length;for(let c=0;c<l;c++)Zs(o[c],{instancePath:t+"/keyframes/"+c,parentData:o,parentDataProperty:c,rootData:a})||(r=r===null?Zs.errors:r.concat(Zs.errors),s=r.length)}else{let l={instancePath:t+"/keyframes",schemaPath:"#/properties/keyframes/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return ei.errors=r,s===0}function ri(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;sr(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?sr.errors:r.concat(sr.errors),s=r.length);let o=s,l=!0,c=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let h;if(e.value===void 0&&(h="value")){let y={};r===null?r=[y]:r.push(y),s++}else{if(e.value!==void 0){let y=s;if(typeof e.value!="number"){let w={};r===null?r=[w]:r.push(w),s++}var u=y===s}else var u=!0;if(u)if(e.relative!==void 0){let y=s;if(e.relative!==!1){let g={};r===null?r=[g]:r.push(g),s++}var u=y===s}else var u=!0}}var p=c===s;if(s=o,r!==null&&(o?r.length=o:r=null),p){let h=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.value!==void 0){let w=e.value;if(typeof w=="number"){if(w>1||isNaN(w)){let g={instancePath:t+"/value",schemaPath:"#/allOf/1/then/properties/value/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[g]:r.push(g),s++}if(w<-1||isNaN(w)){let g={instancePath:t+"/value",schemaPath:"#/allOf/1/then/properties/value/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};r===null?r=[g]:r.push(g),s++}}}var p=h===s;l=p}if(!l){let h={instancePath:t,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[h]:r.push(h),s++}let d=s,f=!0,m=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.relative!==void 0&&e.relative!==!1){let h={};r===null?r=[h]:r.push(h),s++}var b=m===s;if(s=d,r!==null&&(d?r.length=d:r=null),b){let h=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.startValue!==void 0){let w=e.startValue;if(typeof w=="number"){if(w>1||isNaN(w)){let g={instancePath:t+"/startValue",schemaPath:"#/allOf/2/then/properties/startValue/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[g]:r.push(g),s++}if(w<-1||isNaN(w)){let g={instancePath:t+"/startValue",schemaPath:"#/allOf/2/then/properties/startValue/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};r===null?r=[g]:r.push(g),s++}}}var b=h===s;f=b}if(!f){let h={instancePath:t,schemaPath:"#/allOf/2/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[h]:r.push(h),s++}return ri.errors=r,s===0}function ti(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyframes===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"keyframes"},message:"must have required property 'keyframes'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(o!=="keyframes"){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.keyframes!==void 0){let o=e.keyframes;if(Array.isArray(o)){if(o.length<1){let c={instancePath:t+"/keyframes",schemaPath:"#/properties/keyframes/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[c]:r.push(c),s++}let l=o.length;for(let c=0;c<l;c++)ri(o[c],{instancePath:t+"/keyframes/"+c,parentData:o,parentDataProperty:c,rootData:a})||(r=r===null?ri.errors:r.concat(ri.errors),s=r.length)}else{let l={instancePath:t+"/keyframes",schemaPath:"#/properties/keyframes/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return ti.errors=r,s===0}function ni(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;sr(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?sr.errors:r.concat(sr.errors),s=r.length);let o=s,l=!0,c=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let h;if(e.value===void 0&&(h="value")){let y={};r===null?r=[y]:r.push(y),s++}else{if(e.value!==void 0){let y=s;if(typeof e.value!="number"){let w={};r===null?r=[w]:r.push(w),s++}var u=y===s}else var u=!0;if(u)if(e.relative!==void 0){let y=s;if(e.relative!==!1){let g={};r===null?r=[g]:r.push(g),s++}var u=y===s}else var u=!0}}var p=c===s;if(s=o,r!==null&&(o?r.length=o:r=null),p){let h=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.value!==void 0){let w=e.value;if(typeof w=="number"&&(w<0||isNaN(w))){let g={instancePath:t+"/value",schemaPath:"#/allOf/1/then/properties/value/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[g]:r.push(g),s++}}var p=h===s;l=p}if(!l){let h={instancePath:t,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[h]:r.push(h),s++}let d=s,f=!0,m=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.relative!==void 0&&e.relative!==!1){let h={};r===null?r=[h]:r.push(h),s++}var b=m===s;if(s=d,r!==null&&(d?r.length=d:r=null),b){let h=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.startValue!==void 0){let w=e.startValue;if(typeof w=="number"&&(w<0||isNaN(w))){let g={instancePath:t+"/startValue",schemaPath:"#/allOf/2/then/properties/startValue/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[g]:r.push(g),s++}}var b=h===s;f=b}if(!f){let h={instancePath:t,schemaPath:"#/allOf/2/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[h]:r.push(h),s++}return ni.errors=r,s===0}function si(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyframes===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"keyframes"},message:"must have required property 'keyframes'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(o!=="keyframes"){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.keyframes!==void 0){let o=e.keyframes;if(Array.isArray(o)){if(o.length<1){let c={instancePath:t+"/keyframes",schemaPath:"#/properties/keyframes/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[c]:r.push(c),s++}let l=o.length;for(let c=0;c<l;c++)ni(o[c],{instancePath:t+"/keyframes/"+c,parentData:o,parentDataProperty:c,rootData:a})||(r=r===null?ni.errors:r.concat(ni.errors),s=r.length)}else{let l={instancePath:t+"/keyframes",schemaPath:"#/properties/keyframes/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return si.errors=r,s===0}function ii(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let o={instancePath:t,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!(o==="volume"||o==="pan"||o==="playbackRate")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}e.volume!==void 0&&(ei(e.volume,{instancePath:t+"/volume",parentData:e,parentDataProperty:"volume",rootData:a})||(r=r===null?ei.errors:r.concat(ei.errors),s=r.length)),e.pan!==void 0&&(ti(e.pan,{instancePath:t+"/pan",parentData:e,parentDataProperty:"pan",rootData:a})||(r=r===null?ti.errors:r.concat(ti.errors),s=r.length)),e.playbackRate!==void 0&&(si(e.playbackRate,{instancePath:t+"/playbackRate",parentData:e,parentDataProperty:"playbackRate",rootData:a})||(r=r===null?si.errors:r.concat(si.errors),s=r.length))}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return ii.errors=r,s===0}function oi(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.duration===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"duration"},message:"must have required property 'duration'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!(o==="delay"||o==="duration"||o==="easing")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.delay!==void 0){let o=e.delay;if(typeof o=="number"){if(o<0||isNaN(o)){let l={instancePath:t+"/delay",schemaPath:"#/properties/delay/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/delay",schemaPath:"#/properties/delay/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.duration!==void 0){let o=e.duration;if(typeof o=="number"){if(o<0||isNaN(o)){let l={instancePath:t+"/duration",schemaPath:"#/properties/duration/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/duration",schemaPath:"#/properties/duration/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}e.easing!==void 0&&(Jr(e.easing,{instancePath:t+"/easing",parentData:e,parentDataProperty:"easing",rootData:a})||(r=r===null?Jr.errors:r.concat(Jr.errors),s=r.length))}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return oi.errors=r,s===0}function Kr(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let o={instancePath:t,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(o!=="fade"){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}e.fade!==void 0&&(oi(e.fade,{instancePath:t+"/fade",parentData:e,parentDataProperty:"fade",rootData:a})||(r=r===null?oi.errors:r.concat(oi.errors),s=r.length))}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return Kr.errors=r,s===0}function ai(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0,o=s,l=!0,c=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="update"){let g={};r===null?r=[g]:r.push(g),s++}var u=c===s;if(s=o,r!==null&&(o?r.length=o:r=null),u){let g=s,E=s,k=s,P=s,v=!1,O=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let R;if(e.prev===void 0&&(R="prev")){let D={};r===null?r=[D]:r.push(D),s++}}var p=O===s;if(v=v||p,!v){let R=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let B;if(e.next===void 0&&(B="next")){let _={};r===null?r=[_]:r.push(_),s++}}var p=R===s;v=v||p}if(v)s=P,r!==null&&(P?r.length=P:r=null);else{let R={};r===null?r=[R]:r.push(R),s++}var d=k===s;if(d){let R={instancePath:t,schemaPath:"#/allOf/0/then/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[R]:r.push(R),s++}else s=E,r!==null&&(E?r.length=E:r=null);if(e&&typeof e=="object"&&!Array.isArray(e)&&e.tween===void 0){let R={instancePath:t,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"tween"},message:"must have required property 'tween'"};r===null?r=[R]:r.push(R),s++}var u=g===s;l=u}if(!l){let g={instancePath:t,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[g]:r.push(g),s++}let f=s,m=!0,b=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="transition"){let g={};r===null?r=[g]:r.push(g),s++}var h=b===s;if(s=f,r!==null&&(f?r.length=f:r=null),h){let g=s,E=s,k=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let R;if(e.tween===void 0&&(R="tween")){let D={};r===null?r=[D]:r.push(D),s++}}var y=k===s;if(y){let R={instancePath:t,schemaPath:"#/allOf/1/then/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[R]:r.push(R),s++}else s=E,r!==null&&(E?r.length=E:r=null);let P=s,v=!1,O=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.prev===void 0){let R={instancePath:t,schemaPath:"#/allOf/1/then/anyOf/0/required",keyword:"required",params:{missingProperty:"prev"},message:"must have required property 'prev'"};r===null?r=[R]:r.push(R),s++}var w=O===s;if(v=v||w,!v){let R=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.next===void 0){let B={instancePath:t,schemaPath:"#/allOf/1/then/anyOf/1/required",keyword:"required",params:{missingProperty:"next"},message:"must have required property 'next'"};r===null?r=[B]:r.push(B),s++}var w=R===s;v=v||w}if(v)s=P,r!==null&&(P?r.length=P:r=null);else{let R={instancePath:t,schemaPath:"#/allOf/1/then/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[R]:r.push(R),s++}var h=g===s;m=h}if(!m){let g={instancePath:t,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};r===null?r=[g]:r.push(g),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let g={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};r===null?r=[g]:r.push(g),s++}for(let g in e)if(!(g==="name"||g==="type"||g==="tween"||g==="prev"||g==="next")){let E={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:g},message:"must NOT have additional properties"};r===null?r=[E]:r.push(E),s++}if(e.name!==void 0&&typeof e.name!="string"){let g={instancePath:t+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[g]:r.push(g),s++}if(e.type!==void 0){let g=e.type;if(!(g==="update"||g==="transition")){let E={instancePath:t+"/type",schemaPath:"#/properties/type/enum",keyword:"enum",params:{allowedValues:sv.properties.type.enum},message:"must be equal to one of the allowed values"};r===null?r=[E]:r.push(E),s++}}e.tween!==void 0&&(ii(e.tween,{instancePath:t+"/tween",parentData:e,parentDataProperty:"tween",rootData:a})||(r=r===null?ii.errors:r.concat(ii.errors),s=r.length)),e.prev!==void 0&&(Kr(e.prev,{instancePath:t+"/prev",parentData:e,parentDataProperty:"prev",rootData:a})||(r=r===null?Kr.errors:r.concat(Kr.errors),s=r.length)),e.next!==void 0&&(Kr(e.next,{instancePath:t+"/next",parentData:e,parentDataProperty:"next",rootData:a})||(r=r===null?Kr.errors:r.concat(Kr.errors),s=r.length))}else{let g={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[g]:r.push(g),s++}return ai.errors=r,s===0}function Tf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return ai(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?ai.errors:r.concat(ai.errors),s=r.length),Tf.errors=r,s===0}var Lf=Mf;function li(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let o in e)if(!(o==="name"||o==="nameVariableId")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.name!==void 0&&typeof e.name!="string"){let o={instancePath:t+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.nameVariableId!==void 0){let o=e.nameVariableId;if(typeof o=="string"){if($e(o)<1){let l={instancePath:t+"/nameVariableId",schemaPath:"#/properties/nameVariableId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/nameVariableId",schemaPath:"#/properties/nameVariableId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return li.errors=r,s===0}function Mf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return li(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?li.errors:r.concat(li.errors),s=r.length),Mf.errors=r,s===0}var qf=Vf;var ov=new RegExp("^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$","u");function ci(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.hex===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"hex"},message:"must have required property 'hex'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(o!=="hex"){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.hex!==void 0){let o=e.hex;if(typeof o=="string"){if(!ov.test(o)){let l={instancePath:t+"/hex",schemaPath:"#/properties/hex/pattern",keyword:"pattern",params:{pattern:"^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"},message:'must match pattern "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"'};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/hex",schemaPath:"#/properties/hex/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return ci.errors=r,s===0}function Vf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return ci(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?ci.errors:r.concat(ci.errors),s=r.length),Vf.errors=r,s===0}var Ff=Uf;function ui(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyboard!==void 0){let o=e.keyboard;if(o&&typeof o=="object"&&!Array.isArray(o))for(let l in o){let c=o[l];if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.actions!==void 0){let u=c.actions;if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:t+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/actions",schemaPath:"#/properties/keyboard/additionalProperties/properties/actions/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}if(c.payload!==void 0){let u=c.payload;if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:t+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/payload",schemaPath:"#/properties/keyboard/additionalProperties/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}if(c.keydown!==void 0){let u=c.keydown;if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.payload!==void 0){let p=u.payload;if(!(p&&typeof p=="object"&&!Array.isArray(p))){let d={instancePath:t+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/keydown/payload",schemaPath:"#/properties/keyboard/additionalProperties/properties/keydown/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[d]:r.push(d),s++}}}else{let p={instancePath:t+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/keydown",schemaPath:"#/properties/keyboard/additionalProperties/properties/keydown/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}if(c.keyup!==void 0){let u=c.keyup;if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.payload!==void 0){let p=u.payload;if(!(p&&typeof p=="object"&&!Array.isArray(p))){let d={instancePath:t+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/keyup/payload",schemaPath:"#/properties/keyboard/additionalProperties/properties/keyup/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[d]:r.push(d),s++}}}else{let p={instancePath:t+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/keyup",schemaPath:"#/properties/keyboard/additionalProperties/properties/keyup/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}}else{let u={instancePath:t+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/keyboard/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[u]:r.push(u),s++}}else{let l={instancePath:t+"/keyboard",schemaPath:"#/properties/keyboard/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}if(e.keyup!==void 0){let o=e.keyup;if(o&&typeof o=="object"&&!Array.isArray(o))for(let l in o){let c=o[l];if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.actions!==void 0){let u=c.actions;if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:t+"/keyup/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/actions",schemaPath:"#/properties/keyup/additionalProperties/properties/actions/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}if(c.payload!==void 0){let u=c.payload;if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:t+"/keyup/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/payload",schemaPath:"#/properties/keyup/additionalProperties/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}}else{let u={instancePath:t+"/keyup/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/keyup/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[u]:r.push(u),s++}}else{let l={instancePath:t+"/keyup",schemaPath:"#/properties/keyup/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}if(e.elements!==void 0){let o=e.elements;if(Array.isArray(o)){let l=o.length;for(let c=0;c<l;c++){let u=o[c];if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:t+"/elements/"+c,schemaPath:"#/properties/elements/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[p]:r.push(p),s++}}}else{let l={instancePath:t+"/elements",schemaPath:"#/properties/elements/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return ui.errors=r,s===0}function Uf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return ui(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?ui.errors:r.concat(ui.errors),s=r.length),Uf.errors=r,s===0}var Bf=Yf;function pi(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!(o==="fileId"||o==="fileType")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let o={instancePath:t+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let o={instancePath:t+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return pi.errors=r,s===0}function Yf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return pi(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?pi.errors:r.concat(pi.errors),s=r.length),Yf.errors=r,s===0}var zf=Xf;function fi(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};r===null?r=[o]:r.push(o),s++}if(e.width===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};r===null?r=[o]:r.push(o),s++}if(e.height===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!(o==="fileId"||o==="fileType"||o==="width"||o==="height")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let o={instancePath:t+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let o={instancePath:t+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.width!==void 0){let o=e.width;if(!(typeof o=="number"&&!(o%1)&&!isNaN(o))){let l={instancePath:t+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[l]:r.push(l),s++}}if(e.height!==void 0){let o=e.height;if(!(typeof o=="number"&&!(o%1)&&!isNaN(o))){let l={instancePath:t+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[l]:r.push(l),s++}}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return fi.errors=r,s===0}function Xf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return fi(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?fi.errors:r.concat(fi.errors),s=r.length),Xf.errors=r,s===0}var Gf=Hf;function di(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.id===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[o]:r.push(o),s++}if(e.type===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};r===null?r=[o]:r.push(o),s++}if(e.id!==void 0){let o=e.id;if(typeof o=="string"){if($e(o)<1){let l={instancePath:t+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}}if(e.type!==void 0&&e.type!=="shader"){let o={instancePath:t+"/type",schemaPath:"#/properties/type/const",keyword:"const",params:{allowedValue:"shader"},message:"must be equal to constant"};r===null?r=[o]:r.push(o),s++}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return di.errors=r,s===0}var rf=new RegExp("^\\$(if .+|for .+|else)$","u"),Na={validate:cn};function mi(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let o={instancePath:t,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!rf.test(o)){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}for(let o in e)if(rf.test(o)){let l=e[o];if(Array.isArray(l)){let c=l.length;for(let u=0;u<c;u++)Na.validate(l[u],{instancePath:t+"/"+o.replace(/~/g,"~0").replace(/\//g,"~1")+"/"+u,parentData:l,parentDataProperty:u,rootData:a})||(r=r===null?Na.validate.errors:r.concat(Na.validate.errors),s=r.length)}else{let c={instancePath:t+"/"+o.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/patternProperties/%5E%5C%24(if%20.%2B%7Cfor%20.%2B%7Celse)%24/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),s++}}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return mi.errors=r,s===0}function cn(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0,o=s,l=!1,c=s;di(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?di.errors:r.concat(di.errors),s=r.length);var u=c===s;if(l=l||u,!l){let p=s;mi(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?mi.errors:r.concat(mi.errors),s=r.length);var u=p===s;l=l||u}if(l)s=o,r!==null&&(o?r.length=o:r=null);else{let p={instancePath:t,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[p]:r.push(p),s++}return cn.errors=r,s===0}function yi(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(Array.isArray(e)){let o=e.length;for(let l=0;l<o;l++)cn(e[l],{instancePath:t+"/"+l,parentData:e,parentDataProperty:l,rootData:a})||(r=r===null?cn.errors:r.concat(cn.errors),s=r.length)}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[o]:r.push(o),s++}return yi.errors=r,s===0}var Da={validate:un};function un(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.filters!==void 0&&(yi(e.filters,{instancePath:t+"/filters",parentData:e,parentDataProperty:"filters",rootData:a})||(r=r===null?yi.errors:r.concat(yi.errors),s=r.length)),e.children!==void 0){let o=e.children;if(Array.isArray(o)){let l=o.length;for(let c=0;c<l;c++)Da.validate(o[c],{instancePath:t+"/children/"+c,parentData:o,parentDataProperty:c,rootData:a})||(r=r===null?Da.validate.errors:r.concat(Da.validate.errors),s=r.length)}else{let l={instancePath:t+"/children",schemaPath:"#/properties/children/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return un.errors=r,s===0}function hi(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.elements!==void 0){let o=e.elements;if(Array.isArray(o)){let l=o.length;for(let c=0;c<l;c++)un(o[c],{instancePath:t+"/elements/"+c,parentData:o,parentDataProperty:c,rootData:a})||(r=r===null?un.errors:r.concat(un.errors),s=r.length)}else{let l={instancePath:t+"/elements",schemaPath:"#/properties/elements/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[l]:r.push(l),s++}}if(e.transitions!==void 0){let o={instancePath:t+"/transitions",schemaPath:"#/properties/transitions/false schema",keyword:"false schema",params:{},message:"boolean schema is false"};r===null?r=[o]:r.push(o),s++}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return hi.errors=r,s===0}function Hf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return hi(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?hi.errors:r.concat(hi.errors),s=r.length),Hf.errors=r,s===0}var Kf=Wf;function gi(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0,o=s,l=!1,c=null,u=s,p=s,d=s,f=s,m=!1,b=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let k;if(e.count===void 0&&(k="count")){let P={};r===null?r=[P]:r.push(P),s++}}var h=b===s;if(m=m||h,!m){let k=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let v;if(e.texture===void 0&&(v="texture")){let O={};r===null?r=[O]:r.push(O),s++}}var h=k===s;if(m=m||h,!m){let v=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let T;if(e.behaviors===void 0&&(T="behaviors")){let R={};r===null?r=[R]:r.push(R),s++}}var h=v===s;if(m=m||h,!m){let T=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let D;if(e.emitter===void 0&&(D="emitter")){let B={};r===null?r=[B]:r.push(B),s++}}var h=T===s;m=m||h}}}if(m)s=f,r!==null&&(f?r.length=f:r=null);else{let k={};r===null?r=[k]:r.push(k),s++}var y=d===s;if(y){let k={instancePath:t,schemaPath:"#/oneOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};r===null?r=[k]:r.push(k),s++}else s=p,r!==null&&(p?r.length=p:r=null);if(e&&typeof e=="object"&&!Array.isArray(e)&&e.modules===void 0){let k={instancePath:t,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"modules"},message:"must have required property 'modules'"};r===null?r=[k]:r.push(k),s++}var g=u===s;g&&(l=!0,c=0);let w=s;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.texture===void 0){let k={instancePath:t,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};r===null?r=[k]:r.push(k),s++}if(e.behaviors===void 0){let k={instancePath:t,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"behaviors"},message:"must have required property 'behaviors'"};r===null?r=[k]:r.push(k),s++}if(e.emitter===void 0){let k={instancePath:t,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"emitter"},message:"must have required property 'emitter'"};r===null?r=[k]:r.push(k),s++}}var g=w===s;if(g&&l?(l=!1,c=[c,1]):g&&(l=!0,c=1),l)s=o,r!==null&&(o?r.length=o:r=null);else{let k={instancePath:t,schemaPath:"#/oneOf",keyword:"oneOf",params:{passingSchemas:c},message:"must match exactly one schema in oneOf"};r===null?r=[k]:r.push(k),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.width===void 0){let k={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};r===null?r=[k]:r.push(k),s++}if(e.height===void 0){let k={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};r===null?r=[k]:r.push(k),s++}for(let k in e)if(!(k==="width"||k==="height"||k==="seed"||k==="modules"||k==="count"||k==="texture"||k==="behaviors"||k==="emitter")){let P={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:k},message:"must NOT have additional properties"};r===null?r=[P]:r.push(P),s++}if(e.width!==void 0){let k=e.width;if(typeof k=="number"){if(k<=0||isNaN(k)){let P={instancePath:t+"/width",schemaPath:"#/properties/width/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};r===null?r=[P]:r.push(P),s++}}else{let P={instancePath:t+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[P]:r.push(P),s++}}if(e.height!==void 0){let k=e.height;if(typeof k=="number"){if(k<=0||isNaN(k)){let P={instancePath:t+"/height",schemaPath:"#/properties/height/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};r===null?r=[P]:r.push(P),s++}}else{let P={instancePath:t+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[P]:r.push(P),s++}}if(e.seed!==void 0&&typeof e.seed!="number"){let k={instancePath:t+"/seed",schemaPath:"#/properties/seed/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[k]:r.push(k),s++}if(e.modules!==void 0){let k=e.modules;if(k&&typeof k=="object"&&!Array.isArray(k)){if(k.emission===void 0){let P={instancePath:t+"/modules",schemaPath:"#/properties/modules/required",keyword:"required",params:{missingProperty:"emission"},message:"must have required property 'emission'"};r===null?r=[P]:r.push(P),s++}if(k.appearance===void 0){let P={instancePath:t+"/modules",schemaPath:"#/properties/modules/required",keyword:"required",params:{missingProperty:"appearance"},message:"must have required property 'appearance'"};r===null?r=[P]:r.push(P),s++}for(let P in k)if(!(P==="emission"||P==="movement"||P==="appearance"||P==="bounds")){let v={instancePath:t+"/modules",schemaPath:"#/properties/modules/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:P},message:"must NOT have additional properties"};r===null?r=[v]:r.push(v),s++}if(k.emission!==void 0){let P=k.emission;if(!(P&&typeof P=="object"&&!Array.isArray(P))){let v={instancePath:t+"/modules/emission",schemaPath:"#/properties/modules/properties/emission/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[v]:r.push(v),s++}}if(k.movement!==void 0){let P=k.movement;if(!(P&&typeof P=="object"&&!Array.isArray(P))){let v={instancePath:t+"/modules/movement",schemaPath:"#/properties/modules/properties/movement/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[v]:r.push(v),s++}}if(k.appearance!==void 0){let P=k.appearance;if(!(P&&typeof P=="object"&&!Array.isArray(P))){let v={instancePath:t+"/modules/appearance",schemaPath:"#/properties/modules/properties/appearance/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[v]:r.push(v),s++}}if(k.bounds!==void 0){let P=k.bounds;if(!(P&&typeof P=="object"&&!Array.isArray(P))){let v={instancePath:t+"/modules/bounds",schemaPath:"#/properties/modules/properties/bounds/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[v]:r.push(v),s++}}}else{let P={instancePath:t+"/modules",schemaPath:"#/properties/modules/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[P]:r.push(P),s++}}if(e.count!==void 0){let k=e.count;if(!(typeof k=="number"&&!(k%1)&&!isNaN(k))){let P={instancePath:t+"/count",schemaPath:"#/properties/count/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[P]:r.push(P),s++}if(typeof k=="number"&&(k<1||isNaN(k))){let P={instancePath:t+"/count",schemaPath:"#/properties/count/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};r===null?r=[P]:r.push(P),s++}}if(e.texture!==void 0){let k=e.texture,P=s,v=!1,O=null,T=s;if(typeof k=="string"){if($e(k)<1){let D={instancePath:t+"/texture",schemaPath:"#/properties/texture/oneOf/0/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[D]:r.push(D),s++}}else{let D={instancePath:t+"/texture",schemaPath:"#/properties/texture/oneOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[D]:r.push(D),s++}var E=T===s;E&&(v=!0,O=0);let R=s;if(!(k&&typeof k=="object"&&!Array.isArray(k))){let D={instancePath:t+"/texture",schemaPath:"#/properties/texture/oneOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[D]:r.push(D),s++}var E=R===s;if(E&&v?(v=!1,O=[O,1]):E&&(v=!0,O=1),v)s=P,r!==null&&(P?r.length=P:r=null);else{let D={instancePath:t+"/texture",schemaPath:"#/properties/texture/oneOf",keyword:"oneOf",params:{passingSchemas:O},message:"must match exactly one schema in oneOf"};r===null?r=[D]:r.push(D),s++}}if(e.behaviors!==void 0){let k=e.behaviors;if(Array.isArray(k)){if(k.length<1){let v={instancePath:t+"/behaviors",schemaPath:"#/properties/behaviors/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[v]:r.push(v),s++}let P=k.length;for(let v=0;v<P;v++){let O=k[v];if(O&&typeof O=="object"&&!Array.isArray(O)){if(O.type===void 0){let T={instancePath:t+"/behaviors/"+v,schemaPath:"#/properties/behaviors/items/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};r===null?r=[T]:r.push(T),s++}for(let T in O)if(!(T==="type"||T==="config")){let R={instancePath:t+"/behaviors/"+v,schemaPath:"#/properties/behaviors/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:T},message:"must NOT have additional properties"};r===null?r=[R]:r.push(R),s++}if(O.type!==void 0){let T=O.type;if(typeof T=="string"){if($e(T)<1){let R={instancePath:t+"/behaviors/"+v+"/type",schemaPath:"#/properties/behaviors/items/properties/type/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[R]:r.push(R),s++}}else{let R={instancePath:t+"/behaviors/"+v+"/type",schemaPath:"#/properties/behaviors/items/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[R]:r.push(R),s++}}if(O.config!==void 0){let T=O.config;if(!(T&&typeof T=="object"&&!Array.isArray(T))){let R={instancePath:t+"/behaviors/"+v+"/config",schemaPath:"#/properties/behaviors/items/properties/config/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[R]:r.push(R),s++}}}else{let T={instancePath:t+"/behaviors/"+v,schemaPath:"#/properties/behaviors/items/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[T]:r.push(T),s++}}}else{let P={instancePath:t+"/behaviors",schemaPath:"#/properties/behaviors/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[P]:r.push(P),s++}}if(e.emitter!==void 0){let k=e.emitter;if(k&&typeof k=="object"&&!Array.isArray(k)){if(k.lifetime===void 0){let P={instancePath:t+"/emitter",schemaPath:"#/properties/emitter/required",keyword:"required",params:{missingProperty:"lifetime"},message:"must have required property 'lifetime'"};r===null?r=[P]:r.push(P),s++}if(k.lifetime!==void 0){let P=k.lifetime;if(P&&typeof P=="object"&&!Array.isArray(P)){if(P.min===void 0){let v={instancePath:t+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/required",keyword:"required",params:{missingProperty:"min"},message:"must have required property 'min'"};r===null?r=[v]:r.push(v),s++}if(P.max===void 0){let v={instancePath:t+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/required",keyword:"required",params:{missingProperty:"max"},message:"must have required property 'max'"};r===null?r=[v]:r.push(v),s++}if(P.min!==void 0){let v=P.min;if(typeof v=="number"){if(v<0||isNaN(v)){let O={instancePath:t+"/emitter/lifetime/min",schemaPath:"#/properties/emitter/properties/lifetime/properties/min/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[O]:r.push(O),s++}}else{let O={instancePath:t+"/emitter/lifetime/min",schemaPath:"#/properties/emitter/properties/lifetime/properties/min/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[O]:r.push(O),s++}}if(P.max!==void 0){let v=P.max;if(typeof v=="number"){if(v<0||isNaN(v)){let O={instancePath:t+"/emitter/lifetime/max",schemaPath:"#/properties/emitter/properties/lifetime/properties/max/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[O]:r.push(O),s++}}else{let O={instancePath:t+"/emitter/lifetime/max",schemaPath:"#/properties/emitter/properties/lifetime/properties/max/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[O]:r.push(O),s++}}}else{let v={instancePath:t+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[v]:r.push(v),s++}}}else{let P={instancePath:t+"/emitter",schemaPath:"#/properties/emitter/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[P]:r.push(P),s++}}}else{let k={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[k]:r.push(k),s++}return gi.errors=r,s===0}function Wf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return gi(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?gi.errors:r.concat(gi.errors),s=r.length),Wf.errors=r,s===0}var Jf=Qf;var tf={type:"object",properties:{fileId:{type:"string"},fileType:{type:"string"},loop:{type:"boolean"},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},startDelayMs:{type:"number",minimum:0},playbackRate:{type:"number",minimum:0},startAt:{type:"number",minimum:0},endAt:{type:["number","null"],minimum:0}},required:["fileId"],additionalProperties:!1};function bi(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!Je.call(tf.properties,o)){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let o={instancePath:t+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let o={instancePath:t+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let o={instancePath:t+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}if(e.volume!==void 0){let o=e.volume;if(typeof o=="number"){if(o>100||isNaN(o)){let l={instancePath:t+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};r===null?r=[l]:r.push(l),s++}if(o<0||isNaN(o)){let l={instancePath:t+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let o={instancePath:t+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}if(e.pan!==void 0){let o=e.pan;if(typeof o=="number"){if(o>1||isNaN(o)){let l={instancePath:t+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[l]:r.push(l),s++}if(o<-1||isNaN(o)){let l={instancePath:t+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.startDelayMs!==void 0){let o=e.startDelayMs;if(typeof o=="number"){if(o<0||isNaN(o)){let l={instancePath:t+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.playbackRate!==void 0){let o=e.playbackRate;if(typeof o=="number"){if(o<0||isNaN(o)){let l={instancePath:t+"/playbackRate",schemaPath:"#/properties/playbackRate/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/playbackRate",schemaPath:"#/properties/playbackRate/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.startAt!==void 0){let o=e.startAt;if(typeof o=="number"){if(o<0||isNaN(o)){let l={instancePath:t+"/startAt",schemaPath:"#/properties/startAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}else{let l={instancePath:t+"/startAt",schemaPath:"#/properties/startAt/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}}if(e.endAt!==void 0){let o=e.endAt;if(typeof o!="number"&&o!==null){let l={instancePath:t+"/endAt",schemaPath:"#/properties/endAt/type",keyword:"type",params:{type:tf.properties.endAt.type},message:"must be number,null"};r===null?r=[l]:r.push(l),s++}if(typeof o=="number"&&(o<0||isNaN(o))){let l={instancePath:t+"/endAt",schemaPath:"#/properties/endAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[l]:r.push(l),s++}}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return bi.errors=r,s===0}function Qf(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return bi(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?bi.errors:r.concat(bi.errors),s=r.length),Qf.errors=r,s===0}var Zf=ed;var av=new RegExp("^.+$","u");function wi(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};r===null?r=[o]:r.push(o),s++}if(e.jsonData===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"jsonData"},message:"must have required property 'jsonData'"};r===null?r=[o]:r.push(o),s++}if(e.width===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};r===null?r=[o]:r.push(o),s++}if(e.height===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!(o==="fileId"||o==="jsonData"||o==="width"||o==="height"||o==="animations")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let o={instancePath:t+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.jsonData!==void 0){let o=e.jsonData;if(!(o&&typeof o=="object"&&!Array.isArray(o))){let l={instancePath:t+"/jsonData",schemaPath:"#/properties/jsonData/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}if(e.width!==void 0){let o=e.width;if(!(typeof o=="number"&&!(o%1)&&!isNaN(o))){let l={instancePath:t+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[l]:r.push(l),s++}}if(e.height!==void 0){let o=e.height;if(!(typeof o=="number"&&!(o%1)&&!isNaN(o))){let l={instancePath:t+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[l]:r.push(l),s++}}if(e.animations!==void 0){let o=e.animations;if(o&&typeof o=="object"&&!Array.isArray(o)){for(let l in o)if(av.test(l)){let c=o[l];if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.frames===void 0){let u={instancePath:t+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/required",keyword:"required",params:{missingProperty:"frames"},message:"must have required property 'frames'"};r===null?r=[u]:r.push(u),s++}for(let u in c)if(!(u==="frames"||u==="animationSpeed"||u==="loop")){let p={instancePath:t+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:u},message:"must NOT have additional properties"};r===null?r=[p]:r.push(p),s++}if(c.frames!==void 0){let u=c.frames;if(Array.isArray(u)){let p=u.length;for(let d=0;d<p;d++)if(typeof u[d]!="number"){let f={instancePath:t+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/frames/"+d,schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/frames/items/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[f]:r.push(f),s++}}else{let p={instancePath:t+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/frames",schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/frames/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[p]:r.push(p),s++}}if(c.animationSpeed!==void 0&&typeof c.animationSpeed!="number"){let u={instancePath:t+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/animationSpeed",schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[u]:r.push(u),s++}if(c.loop!==void 0&&typeof c.loop!="boolean"){let u={instancePath:t+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/loop",schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[u]:r.push(u),s++}}else{let u={instancePath:t+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[u]:r.push(u),s++}}}else{let l={instancePath:t+"/animations",schemaPath:"#/properties/animations/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return wi.errors=r,s===0}function ed(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return wi(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?wi.errors:r.concat(wi.errors),s=r.length),ed.errors=r,s===0}var rd=td;var nf={type:"object",properties:{fontId:{oneOf:[{type:"string",minLength:1},{type:"array",minItems:1,uniqueItems:!0,items:{type:"string",minLength:1}}]},colorId:{type:"string"},colorAlpha:{type:"number"},fontSize:{type:"number"},fontWeight:{type:"string"},fontStyle:{type:"string",enum:["normal","italic","oblique"]},lineHeight:{type:"number"},align:{type:"string"},wordWrap:{type:"boolean"},breakWords:{type:"boolean"},wordWrapWidth:{type:"number"},strokeColorId:{type:"string"},strokeAlpha:{type:"number"},strokeWidth:{type:"number"},shadow:{type:"object",properties:{colorId:{type:"string",minLength:1},alpha:{type:"number",minimum:0,maximum:1},blur:{type:"number",minimum:0},offsetX:{type:"number"},offsetY:{type:"number"}},required:["colorId"],additionalProperties:!1}},required:["fontId","fontSize","fontWeight","fontStyle","lineHeight","colorId"],additionalProperties:!1};function Ii(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fontId===void 0){let l={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontId"},message:"must have required property 'fontId'"};r===null?r=[l]:r.push(l),s++}if(e.fontSize===void 0){let l={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontSize"},message:"must have required property 'fontSize'"};r===null?r=[l]:r.push(l),s++}if(e.fontWeight===void 0){let l={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontWeight"},message:"must have required property 'fontWeight'"};r===null?r=[l]:r.push(l),s++}if(e.fontStyle===void 0){let l={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontStyle"},message:"must have required property 'fontStyle'"};r===null?r=[l]:r.push(l),s++}if(e.lineHeight===void 0){let l={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"lineHeight"},message:"must have required property 'lineHeight'"};r===null?r=[l]:r.push(l),s++}if(e.colorId===void 0){let l={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"colorId"},message:"must have required property 'colorId'"};r===null?r=[l]:r.push(l),s++}for(let l in e)if(!Je.call(nf.properties,l)){let c={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),s++}if(e.fontId!==void 0){let l=e.fontId,c=s,u=!1,p=null,d=s;if(typeof l=="string"){if($e(l)<1){let m={instancePath:t+"/fontId",schemaPath:"#/properties/fontId/oneOf/0/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[m]:r.push(m),s++}}else{let m={instancePath:t+"/fontId",schemaPath:"#/properties/fontId/oneOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[m]:r.push(m),s++}var o=d===s;o&&(u=!0,p=0);let f=s;if(Array.isArray(l)){if(l.length<1){let y={instancePath:t+"/fontId",schemaPath:"#/properties/fontId/oneOf/1/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[y]:r.push(y),s++}let m=l.length;for(let y=0;y<m;y++){let w=l[y];if(typeof w=="string"){if($e(w)<1){let g={instancePath:t+"/fontId/"+y,schemaPath:"#/properties/fontId/oneOf/1/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[g]:r.push(g),s++}}else{let g={instancePath:t+"/fontId/"+y,schemaPath:"#/properties/fontId/oneOf/1/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[g]:r.push(g),s++}}let b=l.length,h;if(b>1){let y={};for(;b--;){let w=l[b];if(typeof w=="string"){if(typeof y[w]=="number"){h=y[w];let g={instancePath:t+"/fontId",schemaPath:"#/properties/fontId/oneOf/1/uniqueItems",keyword:"uniqueItems",params:{i:b,j:h},message:"must NOT have duplicate items (items ## "+h+" and "+b+" are identical)"};r===null?r=[g]:r.push(g),s++;break}y[w]=b}}}}else{let m={instancePath:t+"/fontId",schemaPath:"#/properties/fontId/oneOf/1/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[m]:r.push(m),s++}var o=f===s;if(o&&u?(u=!1,p=[p,1]):o&&(u=!0,p=1),u)s=c,r!==null&&(c?r.length=c:r=null);else{let m={instancePath:t+"/fontId",schemaPath:"#/properties/fontId/oneOf",keyword:"oneOf",params:{passingSchemas:p},message:"must match exactly one schema in oneOf"};r===null?r=[m]:r.push(m),s++}}if(e.colorId!==void 0&&typeof e.colorId!="string"){let l={instancePath:t+"/colorId",schemaPath:"#/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(e.colorAlpha!==void 0&&typeof e.colorAlpha!="number"){let l={instancePath:t+"/colorAlpha",schemaPath:"#/properties/colorAlpha/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}if(e.fontSize!==void 0&&typeof e.fontSize!="number"){let l={instancePath:t+"/fontSize",schemaPath:"#/properties/fontSize/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}if(e.fontWeight!==void 0&&typeof e.fontWeight!="string"){let l={instancePath:t+"/fontWeight",schemaPath:"#/properties/fontWeight/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(e.fontStyle!==void 0){let l=e.fontStyle;if(typeof l!="string"){let c={instancePath:t+"/fontStyle",schemaPath:"#/properties/fontStyle/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),s++}if(!(l==="normal"||l==="italic"||l==="oblique")){let c={instancePath:t+"/fontStyle",schemaPath:"#/properties/fontStyle/enum",keyword:"enum",params:{allowedValues:nf.properties.fontStyle.enum},message:"must be equal to one of the allowed values"};r===null?r=[c]:r.push(c),s++}}if(e.lineHeight!==void 0&&typeof e.lineHeight!="number"){let l={instancePath:t+"/lineHeight",schemaPath:"#/properties/lineHeight/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}if(e.align!==void 0&&typeof e.align!="string"){let l={instancePath:t+"/align",schemaPath:"#/properties/align/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(e.wordWrap!==void 0&&typeof e.wordWrap!="boolean"){let l={instancePath:t+"/wordWrap",schemaPath:"#/properties/wordWrap/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[l]:r.push(l),s++}if(e.breakWords!==void 0&&typeof e.breakWords!="boolean"){let l={instancePath:t+"/breakWords",schemaPath:"#/properties/breakWords/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[l]:r.push(l),s++}if(e.wordWrapWidth!==void 0&&typeof e.wordWrapWidth!="number"){let l={instancePath:t+"/wordWrapWidth",schemaPath:"#/properties/wordWrapWidth/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}if(e.strokeColorId!==void 0&&typeof e.strokeColorId!="string"){let l={instancePath:t+"/strokeColorId",schemaPath:"#/properties/strokeColorId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[l]:r.push(l),s++}if(e.strokeAlpha!==void 0&&typeof e.strokeAlpha!="number"){let l={instancePath:t+"/strokeAlpha",schemaPath:"#/properties/strokeAlpha/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}if(e.strokeWidth!==void 0&&typeof e.strokeWidth!="number"){let l={instancePath:t+"/strokeWidth",schemaPath:"#/properties/strokeWidth/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[l]:r.push(l),s++}if(e.shadow!==void 0){let l=e.shadow;if(l&&typeof l=="object"&&!Array.isArray(l)){if(l.colorId===void 0){let c={instancePath:t+"/shadow",schemaPath:"#/properties/shadow/required",keyword:"required",params:{missingProperty:"colorId"},message:"must have required property 'colorId'"};r===null?r=[c]:r.push(c),s++}for(let c in l)if(!(c==="colorId"||c==="alpha"||c==="blur"||c==="offsetX"||c==="offsetY")){let u={instancePath:t+"/shadow",schemaPath:"#/properties/shadow/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};r===null?r=[u]:r.push(u),s++}if(l.colorId!==void 0){let c=l.colorId;if(typeof c=="string"){if($e(c)<1){let u={instancePath:t+"/shadow/colorId",schemaPath:"#/properties/shadow/properties/colorId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[u]:r.push(u),s++}}else{let u={instancePath:t+"/shadow/colorId",schemaPath:"#/properties/shadow/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[u]:r.push(u),s++}}if(l.alpha!==void 0){let c=l.alpha;if(typeof c=="number"){if(c>1||isNaN(c)){let u={instancePath:t+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};r===null?r=[u]:r.push(u),s++}if(c<0||isNaN(c)){let u={instancePath:t+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[u]:r.push(u),s++}}else{let u={instancePath:t+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[u]:r.push(u),s++}}if(l.blur!==void 0){let c=l.blur;if(typeof c=="number"){if(c<0||isNaN(c)){let u={instancePath:t+"/shadow/blur",schemaPath:"#/properties/shadow/properties/blur/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};r===null?r=[u]:r.push(u),s++}}else{let u={instancePath:t+"/shadow/blur",schemaPath:"#/properties/shadow/properties/blur/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[u]:r.push(u),s++}}if(l.offsetX!==void 0&&typeof l.offsetX!="number"){let c={instancePath:t+"/shadow/offsetX",schemaPath:"#/properties/shadow/properties/offsetX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[c]:r.push(c),s++}if(l.offsetY!==void 0&&typeof l.offsetY!="number"){let c={instancePath:t+"/shadow/offsetY",schemaPath:"#/properties/shadow/properties/offsetY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[c]:r.push(c),s++}}else{let c={instancePath:t+"/shadow",schemaPath:"#/properties/shadow/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[c]:r.push(c),s++}}}else{let l={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),s++}return Ii.errors=r,s===0}function td(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return Ii(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?Ii.errors:r.concat(Ii.errors),s=r.length),td.errors=r,s===0}var nd=sd;var lv={type:"object",properties:{x:{type:"integer"},y:{type:"integer"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},flipX:{type:"boolean"},flipY:{type:"boolean"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"}},additionalProperties:!1};function vi(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let o in e)if(!Je.call(lv.properties,o)){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.x!==void 0){let o=e.x;if(!(typeof o=="number"&&!(o%1)&&!isNaN(o))){let l={instancePath:t+"/x",schemaPath:"#/properties/x/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[l]:r.push(l),s++}}if(e.y!==void 0){let o=e.y;if(!(typeof o=="number"&&!(o%1)&&!isNaN(o))){let l={instancePath:t+"/y",schemaPath:"#/properties/y/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[l]:r.push(l),s++}}if(e.anchorX!==void 0&&typeof e.anchorX!="number"){let o={instancePath:t+"/anchorX",schemaPath:"#/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.anchorY!==void 0&&typeof e.anchorY!="number"){let o={instancePath:t+"/anchorY",schemaPath:"#/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.scaleX!==void 0&&typeof e.scaleX!="number"){let o={instancePath:t+"/scaleX",schemaPath:"#/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.scaleY!==void 0&&typeof e.scaleY!="number"){let o={instancePath:t+"/scaleY",schemaPath:"#/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.flipX!==void 0&&typeof e.flipX!="boolean"){let o={instancePath:t+"/flipX",schemaPath:"#/properties/flipX/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}if(e.flipY!==void 0&&typeof e.flipY!="boolean"){let o={instancePath:t+"/flipY",schemaPath:"#/properties/flipY/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[o]:r.push(o),s++}if(e.rotation!==void 0&&typeof e.rotation!="number"){let o={instancePath:t+"/rotation",schemaPath:"#/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.originX!==void 0&&typeof e.originX!="number"){let o={instancePath:t+"/originX",schemaPath:"#/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}if(e.originY!==void 0&&typeof e.originY!="number"){let o={instancePath:t+"/originY",schemaPath:"#/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[o]:r.push(o),s++}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return vi.errors=r,s===0}function sd(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return vi(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?vi.errors:r.concat(vi.errors),s=r.length),sd.errors=r,s===0}var id=od;function ki(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};r===null?r=[o]:r.push(o),s++}if(e.width===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};r===null?r=[o]:r.push(o),s++}if(e.height===void 0){let o={instancePath:t,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};r===null?r=[o]:r.push(o),s++}for(let o in e)if(!(o==="fileId"||o==="fileType"||o==="width"||o==="height")){let l={instancePath:t,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:o},message:"must NOT have additional properties"};r===null?r=[l]:r.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let o={instancePath:t+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let o={instancePath:t+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[o]:r.push(o),s++}if(e.width!==void 0){let o=e.width;if(!(typeof o=="number"&&!(o%1)&&!isNaN(o))){let l={instancePath:t+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[l]:r.push(l),s++}}if(e.height!==void 0){let o=e.height;if(!(typeof o=="number"&&!(o%1)&&!isNaN(o))){let l={instancePath:t+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[l]:r.push(l),s++}}}else{let o={instancePath:t,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[o]:r.push(o),s++}return ki.errors=r,s===0}function od(e,{instancePath:t="",parentData:n,parentDataProperty:i,rootData:a=e}={}){let r=null,s=0;return ki(e,{instancePath:t,parentData:n,parentDataProperty:i,rootData:a})||(r=r===null?ki.errors:r.concat(ki.errors),s=r.length),od.errors=r,s===0}var dn=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),fn=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),gr=e=>e===void 0?void 0:structuredClone(e),cv=Object.freeze({achievement:"achievements",animation:"animations",audioEffect:"audioEffects",character:"characters",color:"colors",control:"controls",font:"fonts",image:"images",layout:"layouts",particle:"particles",sound:"sounds",spritesheet:"spritesheets",textStyle:"textStyles",transform:"transforms",video:"videos"}),uv=new Set(["background","bgm","character","choice","cleanAll","control","dialogue","form","layout","screen","sfx","visual","voice"]),pv=Object.freeze({background:sf,bgm:af,character:cf,choice:pf,cleanAll:df,control:yf,dialogue:gf,form:wf,layout:vf,screen:Af,sfx:Ef,visual:Sf,voice:Rf}),fv=Object.freeze({achievement:Cf,animation:jf,audioEffect:Df,character:Lf,color:qf,control:Ff,font:Bf,image:zf,layout:Gf,particle:Kf,sound:Jf,spritesheet:Zf,textStyle:rd,transform:nd,video:id}),dv=new Set(["files","language","patches"]),mv=new Set(["actionType","ignoreFields","lineId","mode","payload","type"]),yv=new Set(["lineId","mode","payload","type"]),hv=new Set(["mode","payload","sceneId","type"]),gv=new Set(["mode","operation","payload","resourceId","type"]),bv=new Set(["fileId","mimeType"]),H=(e,t)=>{throw new Error(`Invalid l10nData at ${e}: ${t}`)},Qe=(e,t)=>{fn(e)||H(t,"expected an object")},Ta=(e,t)=>{Array.isArray(e)||H(t,"expected an array")},vt=(e,t)=>{(typeof e!="string"||e.length===0)&&H(t,"expected a non-empty string")},ud=(e,t)=>{typeof e!="string"&&H(t,"expected a string")},or=(e,t,n)=>{for(let i of Object.keys(e))t.has(i)||H(`${n}.${i}`,"unknown field")},ar=(e,t,n)=>{for(let i of t)dn(e,i)||H(n,`missing required field "${i}"`)},wv=e=>e.replaceAll("~1","/").replaceAll("~0","~"),Iv=(e,t)=>{let n=(t?.instancePath??"").split("/").slice(1).map(wv);return t?.keyword==="required"?n.push(t.params.missingProperty):t?.keyword==="additionalProperties"&&n.push(t.params.additionalProperty),n.reduce((i,a)=>/^\d+$/.test(a)?`${i}[${a}]`:`${i}.${a}`,e)},vv=(e=[])=>e.filter(t=>!["anyOf","if","not","oneOf"].includes(t.keyword)).reduce((t,n)=>{if(t===void 0)return n;let i=n.instancePath.split("/").length,a=t.instancePath.split("/").length;return i>a?n:t},void 0)??e[0],pd=({value:e,validator:t,path:n,contract:i})=>{if(t(e))return;let a=vv(t.errors);H(Iv(n,a),`does not match ${i}: ${a?.message??"schema validation failed"}`)},Ai=(e,t,n=new WeakSet)=>{if(typeof e=="number"){Number.isFinite(e)||H(t,"expected a finite number");return}if(!(e===null||typeof e!="object"||n.has(e))){if(n.add(e),Array.isArray(e)){e.forEach((i,a)=>Ai(i,`${t}[${a}]`,n));return}Object.entries(e).forEach(([i,a])=>Ai(a,`${t}.${i}`,n))}},ir=(e,t)=>{e===""&&H(t,"expected a non-empty resourceId")},kv=(e,t,n)=>{let i=(s,o)=>ir(s?.resourceId,`${o}.resourceId`),a=(s,o)=>(s??[]).forEach((l,c)=>ir(l?.resourceId,`${o}[${c}].resourceId`)),r=(s,o)=>{ir(s?.resourceId,`${o}.resourceId`),a(s?.sounds,`${o}.sounds`)};switch(e){case"background":ir(t.resourceId,`${n}.resourceId`),i(t.animations,`${n}.animations`);break;case"bgm":i(t.audioEffects,`${n}.audioEffects`),r(t,n);break;case"voice":r(t,n);break;case"sfx":a(t.items,`${n}.items`),(t.channels??[]).forEach((s,o)=>a(s?.sounds,`${n}.channels[${o}].sounds`));break;case"character":(t.items??[]).forEach((s,o)=>{(s.sprites??[]).forEach((l,c)=>ir(l?.resourceId,`${n}.items[${o}].sprites[${c}].resourceId`)),i(s.animations,`${n}.items[${o}].animations`)});break;case"choice":case"form":case"layout":ir(t.resourceId,`${n}.resourceId`),i(t.animations,`${n}.animations`);break;case"control":ir(t.resourceId,`${n}.resourceId`);break;case"dialogue":ir(t.ui?.resourceId,`${n}.ui.resourceId`),i(t.ui?.animations,`${n}.ui.animations`),(t.character?.sprite?.items??[]).forEach((s,o)=>ir(s?.resourceId,`${n}.character.sprite.items[${o}].resourceId`)),i(t.character?.sprite?.animations,`${n}.character.sprite.animations`);break;case"screen":i(t.animations,`${n}.animations`);break;case"visual":(t.items??[]).forEach((s,o)=>{ir(s?.resourceId,`${n}.items[${o}].resourceId`),i(s?.animations,`${n}.items[${o}].animations`)});break;default:break}},kt=(e,t)=>{vt(e,t),(e==="__proto__"||e==="constructor"||e==="prototype")&&H(t,`"${e}" is not a safe ID`)},Av=(e,t)=>{vt(e,t),(e==="."||e===".."||e.includes("/")||e.includes("\\")||e.includes("\0"))&&H(t,"must be a safe single filename")},pn=(e,t)=>{if(Object.is(e,t))return!0;if(Array.isArray(e)||Array.isArray(t))return!Array.isArray(e)||!Array.isArray(t)?!1:e.length===t.length&&e.every((a,r)=>pn(a,t[r]));if(!fn(e)||!fn(t))return!1;let n=Object.keys(e).sort(),i=Object.keys(t).sort();return pn(n,i)&&n.every(a=>pn(e[a],t[a]))},Pi=(e,t=new Set,n=new WeakSet)=>{if(Array.isArray(e))return e.forEach(i=>Pi(i,t,n)),t;if(!fn(e)||n.has(e))return t;n.add(e);for(let[i,a]of Object.entries(e))i==="fileId"&&typeof a=="string"&&t.add(a),Pi(a,t,n);return t},Pv=e=>{let t=new Map;for(let[n,i]of Object.entries(e?.story?.scenes??{}))for(let[a,r]of Object.entries(i?.sections??{}))for(let[s,o]of(r?.lines??[]).entries()){if(typeof o?.id!="string")continue;let l=t.get(o.id)??[];l.push({sceneId:n,sectionId:a,lineIndex:s,line:o}),t.set(o.id,l)}return t},fd=(e,t,n)=>{let i=e.get(t)??[];return i.length===0&&H(n,`lineId "${t}" does not exist in projectData`),i.length>1&&H(n,`lineId "${t}" is not globally unique in projectData`),i[0]},dd=(e,t)=>e.story.scenes[t.sceneId].sections[t.sectionId].lines[t.lineIndex],ad=e=>({items:(e?.items??[]).map(t=>({id:t?.id,events:t?.events}))}),ld=e=>{let t=gr(e??{});delete t.resourceId,delete t.animations;for(let n of Object.values(t.fields??{}))fn(n)&&delete n.placeholder;return t},Ev=(e,t,n,i)=>{e==="choice"&&!pn(ad(t),ad(n))&&H(i,"choice item IDs and events must remain identical to the source action"),e==="form"&&!pn(ld(t),ld(n))&&H(i,"form behavior must remain identical; only presentation fields and placeholders may change")},xv=({patch:e,path:t,lineIndex:n})=>{or(e,mv,t),ar(e,["type","lineId","actionType","payload"],t),kt(e.lineId,`${t}.lineId`),vt(e.actionType,`${t}.actionType`),Qe(e.payload,`${t}.payload`),e.mode!==void 0&&e.mode!=="replace"&&H(`${t}.mode`,'line.action supports only "replace"'),uv.has(e.actionType)||H(`${t}.actionType`,`"${e.actionType}" is not a localizable presentation action`);let i=fd(n,e.lineId,`${t}.lineId`),a=i.line?.actions?.[e.actionType];return a===void 0&&H(`${t}.actionType`,`source line "${e.lineId}" does not contain action "${e.actionType}"`),e.actionType==="dialogue"?((!Array.isArray(e.ignoreFields)||e.ignoreFields.length!==1||e.ignoreFields[0]!=="content")&&H(`${t}.ignoreFields`,'dialogue action replacement requires exactly ["content"]'),dn(e.payload,"content")&&H(`${t}.payload.content`,"dialogue content must use a separate line.dialogue patch")):e.ignoreFields!==void 0&&H(`${t}.ignoreFields`,"ignoreFields is supported only for dialogue actions"),Ev(e.actionType,a,e.payload,`${t}.payload`),pd({value:e.payload,validator:pv[e.actionType],path:`${t}.payload`,contract:`the ${e.actionType} presentation-action schema`}),Ai(e.payload,`${t}.payload`),kv(e.actionType,e.payload,`${t}.payload`),{kind:"line.action",key:`line.action:${e.lineId}:${e.actionType}`,location:i,patch:e}},Sv=(e,t)=>{Ta(e,t),e.forEach((n,i)=>{Qe(n,`${t}[${i}]`),or(n,new Set(["text"]),`${t}[${i}]`),ar(n,["text"],`${t}[${i}]`),ud(n.text,`${t}[${i}].text`)})},Ov=({patch:e,path:t,lineIndex:n})=>{or(e,yv,t),ar(e,["type","lineId","payload"],t),kt(e.lineId,`${t}.lineId`),Qe(e.payload,`${t}.payload`),or(e.payload,new Set(["content"]),`${t}.payload`),ar(e.payload,["content"],`${t}.payload`),Sv(e.payload.content,`${t}.payload.content`),e.mode!==void 0&&e.mode!=="replace"&&H(`${t}.mode`,'line.dialogue supports only "replace"');let i=fd(n,e.lineId,`${t}.lineId`);return i.line?.actions?.dialogue===void 0&&H(`${t}.lineId`,`source line "${e.lineId}" does not contain a dialogue action`),{kind:"line.dialogue",key:`line.dialogue:${e.lineId}`,location:i,patch:e}},Rv=({patch:e,path:t,projectData:n})=>(or(e,hv,t),ar(e,["type","mode","sceneId","payload"],t),kt(e.sceneId,`${t}.sceneId`),Qe(e.payload,`${t}.payload`),or(e.payload,new Set(["name"]),`${t}.payload`),ar(e.payload,["name"],`${t}.payload`),ud(e.payload.name,`${t}.payload.name`),e.mode!=="patch"&&H(`${t}.mode`,'story.scene requires "patch"'),dn(n?.story?.scenes??{},e.sceneId)||H(`${t}.sceneId`,`sceneId "${e.sceneId}" does not exist`),{kind:"story.scene",key:`story.scene:${e.sceneId}`,patch:e}),$v=(e,t,n)=>{Qe(t,n),["font","image","sound","spritesheet","video"].includes(e)&&vt(t.fileId,`${n}.fileId`),["image","video"].includes(e)&&(Number.isInteger(t.width)||H(`${n}.width`,"expected an integer"),Number.isInteger(t.height)||H(`${n}.height`,"expected an integer")),e==="spritesheet"&&(Qe(t.jsonData,`${n}.jsonData`),Number.isInteger(t.width)||H(`${n}.width`,"expected an integer"),Number.isInteger(t.height)||H(`${n}.height`,"expected an integer")),e==="color"&&(typeof t.hex!="string"||!/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(t.hex))&&H(`${n}.hex`,"expected an opaque #RGB or #RRGGBB color"),pd({value:t,validator:fv[e],path:n,contract:`the resource.${e} schema`}),Ai(t,n)},Cv=({patch:e,path:t,projectData:n,packageFileIds:i,canonicalFileIds:a})=>{or(e,gv,t),ar(e,["type","resourceId","payload"],t),kt(e.resourceId,`${t}.resourceId`);let r=e.type.slice(9),s=cv[r];s||H(`${t}.type`,`unsupported resource patch type "${e.type}"`),e.mode!==void 0&&e.mode!=="replace"&&H(`${t}.mode`,'resource patches support only "replace"'),e.operation!==void 0&&e.operation!=="add"&&H(`${t}.operation`,'the only resource operation is "add"'),$v(r,e.payload,`${t}.payload`);let o=n?.resources?.[s]??{},l=dn(o,e.resourceId);e.operation==="add"&&l&&H(`${t}.resourceId`,`cannot add existing ${r} resource "${e.resourceId}"`),e.operation!=="add"&&!l&&H(`${t}.resourceId`,`cannot replace missing ${r} resource "${e.resourceId}"`);for(let c of Pi(e.payload))!i.has(c)&&!a.has(c)&&H(`${t}.payload`,`fileId "${c}" is not declared by this package or the canonical project`);return{kind:"resource",key:`${e.type}:${e.resourceId}`,collectionName:s,path:t,patch:e}},cd=({resources:e,collectionName:t,resourceId:n,path:i,label:a})=>{n!==void 0&&(typeof n!="string"||n.length===0||!dn(e?.[t]??{},n))&&H(i,`${a} resource "${n}" was not found`)},_v=(e,t)=>{let n=gr(e);for(let a of t.patches)a.kind==="resource"&&(n.resources[a.collectionName]??={},n.resources[a.collectionName][a.patch.resourceId]=gr(a.patch.payload));let i=n.resources??{};for(let a of t.patches){if(a.patch.type!=="resource.textStyle")continue;let r=a.patch.payload,s=Array.isArray(r.fontId)?r.fontId:[r.fontId];s.forEach((o,l)=>cd({resources:i,collectionName:"fonts",resourceId:o,path:`${a.path}.payload.fontId${s.length>1?`[${l}]`:""}`,label:"font"}));for(let[o,l]of[["colorId",r.colorId],["strokeColorId",r.strokeColorId],["shadow.colorId",r.shadow?.colorId]])cd({resources:i,collectionName:"colors",resourceId:l,path:`${a.path}.payload.${o}`,label:"color"})}},jv=({patch:e,path:t,projectData:n,lineIndex:i,packageFileIds:a,canonicalFileIds:r})=>{if(Qe(e,t),vt(e.type,`${t}.type`),e.type==="line.action")return xv({patch:e,path:t,lineIndex:i});if(e.type==="line.dialogue")return Ov({patch:e,path:t,lineIndex:i});if(e.type==="story.scene")return Rv({patch:e,path:t,projectData:n});if(e.type.startsWith("resource."))return Cv({patch:e,path:t,projectData:n,packageFileIds:a,canonicalFileIds:r});H(`${t}.type`,`unsupported patch type "${e.type}"`)},Nv=(e,t)=>{Ta(e,t);let n=new Set;return e.forEach((i,a)=>{let r=`${t}[${a}]`;Qe(i,r),or(i,bv,r),ar(i,["fileId"],r),Av(i.fileId,`${r}.fileId`),i.mimeType!==void 0&&(typeof i.mimeType!="string"||i.mimeType.length===0)&&H(`${r}.mimeType`,"expected a non-empty string"),n.has(i.fileId)&&H(`${r}.fileId`,`duplicate fileId "${i.fileId}"`),n.add(i.fileId)}),n},Dv=({packageId:e,packageData:t,path:n,projectData:i,lineIndex:a,canonicalFileIds:r})=>{Qe(t,n),or(t,dv,n),ar(t,["language","files","patches"],n),vt(t.language,`${n}.language`);let s=Nv(t.files,`${n}.files`);Ta(t.patches,`${n}.patches`);let o=new Set,l=t.patches.map((c,u)=>{let p=jv({patch:c,path:`${n}.patches[${u}]`,projectData:i,lineIndex:a,packageFileIds:s,canonicalFileIds:r});return o.has(p.key)&&H(`${n}.patches[${u}]`,`duplicate patch target "${p.key}"`),o.add(p.key),p});return{id:e,data:t,fileIds:s,patches:l}},md=({projectData:e,l10nData:t})=>{if(t===void 0)return{packages:new Map};Qe(t,"l10nData"),or(t,new Set(["packages"]),"l10nData"),ar(t,["packages"],"l10nData"),Qe(t.packages,"l10nData.packages");let n=Pv(e),i=Pi(e?.resources??{}),a=new Map,r=new Map;for(let[s,o]of Object.entries(t.packages)){kt(s,`l10nData.packages.${s}`);let l=Dv({packageId:s,packageData:o,path:`l10nData.packages.${s}`,projectData:e,lineIndex:n,canonicalFileIds:i});for(let c of l.fileIds){i.has(c)&&H(`l10nData.packages.${s}.files`,`fileId "${c}" conflicts with a canonical project file`);let u=r.get(c);u!==void 0&&H(`l10nData.packages.${s}.files`,`fileId "${c}" is already declared by package "${u}"`),r.set(c,s)}_v(e,l),a.set(s,l)}return{packages:a}},Tv=(e,t)=>{let{collectionName:n,patch:i}=t;e.resources[n]??={},e.resources[n][i.resourceId]=gr(i.payload)},Lv=(e,t)=>{let{patch:n}=t,i=e.story.scenes[n.sceneId];i.name=n.payload.name},Mv=(e,t)=>{let{location:n,patch:i}=t,a=dd(e,n);if(i.actionType!=="dialogue"){a.actions[i.actionType]=gr(i.payload);return}let r=gr(n.line.actions.dialogue.content);a.actions.dialogue=gr(i.payload),r!==void 0&&(a.actions.dialogue.content=r)},qv=(e,t)=>{let{location:n,patch:i}=t,a=dd(e,n);a.actions.dialogue.content=gr(i.payload.content)},yd=({projectData:e,l10nData:t})=>{let n=md({projectData:e,l10nData:t});return[{l10nId:null,language:null},...Array.from(n.packages.values(),i=>({l10nId:i.id,language:i.data.language}))]},Ei=({projectData:e,l10nData:t,l10nId:n=null})=>{let i=md({projectData:e,l10nData:t});if(n!==null&&(kt(n,"l10nId"),i.packages.has(n)||H("l10nId",`package "${n}" was not imported`)),n===null)return e;let a=gr(e),r=i.packages.get(n).patches;return r.filter(s=>s.kind==="resource").forEach(s=>Tv(a,s)),r.filter(s=>s.kind==="story.scene").forEach(s=>Lv(a,s)),r.filter(s=>s.kind==="line.action").forEach(s=>Mv(a,s)),r.filter(s=>s.kind==="line.dialogue").forEach(s=>qv(a,s)),a};var La=Object.freeze({auto:1e3,skip:80,authored:1e3}),hn=new Set(["startAutoNextTimer","clearAutoNextTimer","startSkipNextTimer","clearSkipNextTimer","nextLineConfigTimer","clearNextLineConfigTimer"]),hd=new WeakMap,Vv=new ArrayBuffer(8),Ma=new DataView(Vv),Fv=e=>{let t=hd.get(e);if(t)return t;let n={dispatchDepth:0};return hd.set(e,n),n},Uv=e=>{if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null},Bv=(e,t)=>Object.keys(e).length===t.length&&t.every(i=>Object.prototype.hasOwnProperty.call(e,i)),jr=(e,t,n)=>{if(!Uv(e)||!Bv(e,t))throw new TypeError(`${n} has an invalid shape`)},mn=(e,t)=>{if(!Number.isSafeInteger(e)||e<0)throw new TypeError(`${t} must be a non-negative safe integer`)},yn=(e,t)=>{if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new TypeError(`${t} must be a finite non-negative number`)},gd=e=>{if(yn(e,"duration"),e===0)return 0n;Ma.setFloat64(0,e,!1);let t=Ma.getUint32(0,!1),n=Ma.getUint32(4,!1),i=t>>>20&2047,a=BigInt(t&1048575)<<32n|BigInt(n);if(i===0)return a;let r=1n<<52n|a,s=i-1;return r<<BigInt(s)},Yv=e=>structuredClone(e),qa=(e,t)=>e===t?!0:!e||!t||e.mode!==t.mode||e.kind!==t.kind?!1:e.mode==="legacy"?e.instanceToken===t.instanceToken:e.delayMs!==t.delayMs?!1:e.kind==="auto"?e.contentKey===t.contentKey&&e.owner.sessionId===t.owner.sessionId&&e.owner.lineEntryId===t.owner.lineEntryId:e.kind==="skip"?e.owner.sessionId===t.owner.sessionId:e.trigger===t.trigger&&e.owner.lineEntryId===t.owner.lineEntryId,Va=(e,t,n)=>{if(t===null)return null;if(e==="auto"){if(jr(t,["owner","delayMs","contentKey"],"auto timer"),jr(t.owner,["sessionId","lineEntryId"],"auto timer owner"),mn(t.owner.sessionId,"auto owner sessionId"),mn(t.owner.lineEntryId,"auto owner lineEntryId"),t.owner.lineEntryId!==n)throw new TypeError("auto owner lineEntryId must match schedule lineEntryId");if(yn(t.delayMs,"auto delayMs"),typeof t.contentKey!="string")throw new TypeError("auto contentKey must be a string")}else if(e==="skip")jr(t,["owner","delayMs"],"skip timer"),jr(t.owner,["sessionId"],"skip timer owner"),mn(t.owner.sessionId,"skip owner sessionId"),yn(t.delayMs,"skip delayMs");else{if(jr(t,["owner","delayMs","trigger"],"authored timer"),jr(t.owner,["lineEntryId"],"authored timer owner"),mn(t.owner.lineEntryId,"authored owner lineEntryId"),t.owner.lineEntryId!==n)throw new TypeError("authored owner lineEntryId must match schedule lineEntryId");if(yn(t.delayMs,"authored delayMs"),t.trigger!=="fromStart"&&t.trigger!=="fromComplete")throw new TypeError('authored trigger must be "fromStart" or "fromComplete"')}return{mode:"reconciled",kind:e,...Yv(t)}},zv=e=>{if(jr(e,["contractVersion","status","lineEntryId","timers"],"playback schedule"),e.contractVersion!==1)throw new TypeError("playback schedule contractVersion must be 1");if(e.status!=="settled"&&e.status!=="unsettled")throw new TypeError('playback schedule status must be "settled" or "unsettled"');if(mn(e.lineEntryId,"playback schedule lineEntryId"),e.status==="unsettled"){if(e.timers!==null)throw new TypeError("unsettled playback schedule timers must be null");return{contractVersion:1,status:"unsettled",lineEntryId:e.lineEntryId,timers:null}}jr(e.timers,["auto","skip","authored"],"playback schedule timers");let t={auto:Va("auto",e.timers.auto,e.lineEntryId),skip:Va("skip",e.timers.skip,e.lineEntryId),authored:Va("authored",e.timers.authored,e.lineEntryId)};if(t.auto&&t.skip)throw new TypeError("playback schedule cannot enable auto and skip together");return{contractVersion:1,status:"settled",lineEntryId:e.lineEntryId,timers:t}},Fa=e=>({descriptor:e,remainingQuanta:gd(e.delayMs)}),xi=["auto","skip","authored"],bd=({ticker:e,dispatchAutomaticAttempt:t,classifyAutomaticAttemptError:n=()=>"preCommit"})=>{if(!e||typeof e.add!="function"||typeof e.remove!="function")throw new TypeError("playback scheduler requires a ticker with add/remove");if(typeof t!="function")throw new TypeError("playback scheduler requires dispatchAutomaticAttempt");let i=Fv(e),a=!0,r={},s={},o=null,l=null,c=null,u=null,p=!1,d=!1,f="legacy",m={auto:null,skip:null,authored:null},b={auto:null,skip:null,authored:null},h={auto:0,skip:0,authored:0},y=()=>xi.some(M=>m[M]),w=()=>{l=null,c=null},g=()=>{p||(p=!0,queueMicrotask(()=>{p=!1;let M=c;if(M){if(i.dispatchDepth>0||d){g();return}a&&r===M.lifecycleToken&&s===M.generationToken&&o===M.callback&&y()&&!u&&(l=M.registrationToken),c===M&&(c=null)}}))},E=()=>{if(!u)return;let M=u;e.remove(M),u===M&&(u=null)},k=()=>{let M=o;M&&(w(),o=null,u=M,e.remove(M),u===M&&(u=null))},P=()=>{m={auto:null,skip:null,authored:null}},v=()=>{P(),s={},d||k()},O=M=>{if(i.dispatchDepth>0||d){c=M,g();return}a&&r===M.lifecycleToken&&s===M.generationToken&&o===M.callback&&y()&&(l=M.registrationToken),c===M&&(c=null)},T=()=>{if(!a||!y()||o)return;E();let M=r,se=s,ue={},G=ie=>{if(!a||M!==r||se!==s||ue!==l||G!==o||d)return;if(!ie||typeof ie.deltaMS!="number"||!Number.isFinite(ie.deltaMS)||ie.deltaMS<0)throw new TypeError("playback ticker deltaMS must be a finite non-negative number");let K=gd(ie.deltaMS);d=!0,i.dispatchDepth+=1;let pe=s,oe=null;try{let C=[];for(let j of xi){let F=m[j];F&&(F.remainingQuanta<=K?(C.push({kind:j,descriptor:F.descriptor,revision:h[j]}),m[j]=null):F.remainingQuanta-=K)}if(C.length>0){try{t({dueKinds:C.map(({kind:j})=>j)})}catch(j){let F=n(j);if(f==="reconciled"&&F==="preCommit")for(let{kind:W,descriptor:fe}of C)b[W]=fe;else f==="legacy"&&P();throw j}if(f==="legacy")for(let j of C)j.kind==="skip"&&h.skip===j.revision&&m.skip===null&&(m.skip=Fa(j.descriptor))}}catch(C){oe=C}finally{i.dispatchDepth-=1,d=!1;try{pe===s?y()?T():k():o===G&&!y()&&k()}catch(C){throw oe?new AggregateError([oe,C],"Playback attempt and ticker cleanup both failed"):C}}if(oe)throw oe},Q={callback:G,lifecycleToken:M,generationToken:se,registrationToken:ue};o=G,c=Q;try{e.add(G)}catch(ie){throw o=null,w(),P(),s={},u=G,ie}O(Q)},R=M=>{h[M]+=1,m[M]=null,b[M]=null,!y()&&!d&&k()},D=(M,se)=>{yn(se,`${M} delay`),f="legacy",h[M]+=1,b[M]=null,m[M]=Fa({mode:"legacy",kind:M,instanceToken:{},delayMs:se}),T()};return{handleLegacyEffect:M=>{switch(M.name){case"startAutoNextTimer":return D("auto",M.payload?.delay??La.auto),!0;case"clearAutoNextTimer":return R("auto"),!0;case"startSkipNextTimer":return D("skip",M.payload?.delay??La.skip),!0;case"clearSkipNextTimer":return R("skip"),!0;case"nextLineConfigTimer":return D("authored",M.payload?.delay??La.authored),!0;case"clearNextLineConfigTimer":return R("authored"),!0;default:return!1}},reconcilePlaybackScheduleV1:M=>{let se;try{se=zv(M)}catch(G){try{v()}catch(Q){throw new AggregateError([G,Q],"Playback schedule validation and cleanup both failed")}throw G}if(f="reconciled",se.status==="unsettled"){P(),d||k();return}let ue={};for(let G of xi){let Q=se.timers[G],ie=b[G];if(ie&&(!Q||!qa(ie,Q))&&(b[G]=null),Q&&b[G]&&qa(b[G],Q)){ue[G]=null;continue}let K=m[G];ue[G]=Q&&K&&qa(K.descriptor,Q)?K:Q?Fa(Q):null}m=ue,y()?T():d||k()},reset:()=>{let M=[o,u].filter((G,Q,ie)=>G&&ie.indexOf(G)===Q);r={},s={},w(),o=null,u=null,P(),b={auto:null,skip:null,authored:null};for(let G of xi)h[G]+=1;f="legacy",a=!0;let se=null,ue=null;for(let G of M)try{e.remove(G)}catch(Q){se??=Q,ue??=G}if(u=ue,se)throw se},dispose:()=>{a=!1,r={},s={},w(),P(),b={auto:null,skip:null,authored:null};let M=[o,u].filter((G,Q,ie)=>G&&ie.indexOf(G)===Q);o=null,u=null;let se=null,ue=null;for(let G of M)try{e.remove(G)}catch(Q){se??=Q,ue??=G}if(u=ue,se)throw se}}};var Xv=new Set(["loadSlot","resetStoryAtSection","rollbackByOffset","rollbackToLine","updateLocalizationPackage","updateProjectData"]),Gv=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),Ua="conditional",gn="random",Ya=Symbol("conditionalAutoContinue"),Hv=new Set(["sectionTransition","resetStoryAtSection"]),Kv=new Set(["nextLine","nextLineFromSystem","resetStoryAtSection","sectionTransition"]),Wv=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),Jv=new Set(["nextLine","nextLineFromSystem"]),Qv=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),Ba="form",Zv=new Set(["submitForm","cancelForm"]),ek="showImageGalleryVariant",rk="playMusicRoomTrack",tk="startSceneReplay",nk="channel:bgm",sk=new Set(["startAutoMode","stopAutoMode","toggleAutoMode","startSkipMode","stopSkipMode","toggleSkipMode","setAutoForwardDelay","setAutoForwardSpeed","setNextLineConfig","markLineCompleted","nextLine","nextLineFromSystem","jumpToLine","sectionTransition","resetStoryAtSection","loadSlot","rollbackByOffset","rollbackToLine","startSceneReplay","exitSceneReplay","updateProjectData","updateLocalizationPackage","submitForm","cancelForm"]),Ve=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),ik=()=>typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,bn=e=>e?.type===Ya,Qr=(e,t)=>e?.sectionId===t?.sectionId&&e?.lineId===t?.lineId,ok=(e,t)=>[...new Set([...Object.keys(e??{}),...Object.keys(t??{})])].some(i=>!Object.is(e?.[i],t?.[i]));function za(e){let t=ik(),n,i=0,a=!1,r=0,s=null,o=0,l=!1,c=0,u=[],p=null,d=null,f=new Map,m=new Map,b=new Map,h=0,y=null,w=[],g=!1,E=null,k=null,P=new Map,v,O,T=null,R=!1,D=!1,B=0,_=new Map,X=ec(e.randomSource),{handlePendingEffects:ae}=e;if(typeof ae!="function")throw new TypeError("RouteEngine requires handlePendingEffects");let M=ae.bind(ae),se=typeof ae.reconcilePlaybackScheduleV1=="function"?ae.reconcilePlaybackScheduleV1.bind(ae):null,ue=typeof ae.reset=="function"?ae.reset.bind(ae):null,G=typeof ae.dispose=="function"?ae.dispose.bind(ae):null;if(se&&(!ue||!G))throw new TypeError("reconcilePlaybackScheduleV1 requires reset and dispose capabilities");let Q=I=>{if(D)throw new Error(`RouteEngine cannot ${I} during playback reconciliation`)},ie=I=>{if(Q(I),!a||!n)throw new Error(`RouteEngine ${I} requires an active engine`)},K=(I,A)=>{if(B===0)return;let S={preCommit:0,postCommitUnsettled:1,reconcileFailed:2},$=_.get(I);($===void 0||S[A]>S[$])&&_.set(I,A)},pe=I=>{let A=_.get(I)??"preCommit";return _.delete(I),A},oe=I=>{if(se){D=!0;try{let A=se(structuredClone(I));if(A!==null&&(typeof A=="object"||typeof A=="function")&&typeof A.then=="function")throw new TypeError("reconcilePlaybackScheduleV1 must complete synchronously")}finally{D=!1}}},C=()=>({contractVersion:1,status:"unsettled",lineEntryId:n?.selectPlaybackLineEntryId?.()??0,timers:null}),j=I=>{if(!(!se||!a||!n)){R=!0;try{oe(C())}catch(A){if(I){let S=new AggregateError([I,A],"Playback work and schedule invalidation both failed");throw _.delete(I),K(S,"reconcileFailed"),S}throw K(A,"reconcileFailed"),A}}},F=()=>{if(!se||!R||!a||!n||o>0||l)return;let I;try{I=n.selectDesiredPlaybackTimers()}catch(A){throw K(A,"reconcileFailed"),j(A),A}try{oe({contractVersion:1,status:"settled",lineEntryId:n.selectPlaybackLineEntryId(),timers:I})}catch(A){throw K(A,"reconcileFailed"),j(A),A}R=!1},W=(I=new Map,A=Date.now())=>new Map(Array.from(I.entries()).filter(([,S])=>A<S.expiresAt).map(([S,$])=>[S,{animation:structuredClone($.animation),startedAt:$.startedAt,expiresAt:$.expiresAt}])),fe=(I=new Map)=>Array.from(I.values()).map(A=>structuredClone(A.animation)),Se=(I=Date.now())=>{f=new Map(Array.from(f.entries()).filter(([,A])=>I<A.expiresAt))},be=()=>{if(a&&!(o>0||l)){l=!0;try{for(;n.selectPendingEffects().length>0;){let I=n.selectCurrentPointer()?.pointer??null,A=[...n.selectPendingEffects()],S=A.map($=>$.name!=="handleLineActions"?$:{...$,payload:{...$.payload,pointer:structuredClone(I)}});n.clearPendingEffects();try{let $=se?S.filter(N=>!hn.has(N.name)):S;$.length>0&&M($)}catch($){throw n.clearPendingEffects(),A.forEach(N=>{n.appendPendingEffect(N)}),K($,"postCommitUnsettled"),j($),$}}}finally{l=!1}F()}},me=I=>{o+=1;let A=!1;try{let S=I();return A=!0,S}finally{o-=1,A&&be()}},lr=()=>{let I=n.selectSystemState();return Uo({presentationState:n.selectPresentationState(),resources:I.projectData?.resources,runtime:n.selectRuntime(),musicRoomPlayer:I.global?.musicRoomPlayer})},Fe=()=>structuredClone(g?E:lr()),wn=I=>{let A=n.selectSystemState().projectData?.story?.scenes??{};return Object.entries(A).find(([,S])=>S?.sections?.[I])?.[0]},At=()=>{if(w.length===0)return;let I=n.selectRuntime()?.skipTransitionsAndAnimations===!0,A=I?null:y?.id;w.forEach(S=>{S.status=S.effect?.id===A?"active":"settled"}),I&&(y=null),w=[]},Pt=(I,A,S,$)=>{I?.audioEffects||(y=null);let N=n.selectPlaybackLineEntryId?.()??0,Y=(A.actionPath??["bgm"]).join("."),U=n.selectCurrentPointer()?.pointer,re=U?.sceneId??wn(U?.sectionId),de=A.rollbackSource==="line"&&U?`story.scenes[${JSON.stringify(re)}].sections[${JSON.stringify(U.sectionId)}].lines[${JSON.stringify(U.lineId)}].actions.${Y}`:Y,ye=A.rollbackSource==="line"?`${i}:${N}:${de}`:null,we=ye?P.get(ye):null;if(we)return we;h+=1;let ge={occurrenceId:`${t}:g${i}:l${N}:audio${h}`,actionPath:de,selection:I?.audioEffects?structuredClone(I.audioEffects):null},Ne=n.selectSystemState().projectData?.resources,De=Gp({occurrence:ge,resources:Ne,previousChannel:S,nextChannel:$});if(ge.effect=De?structuredClone(De):null,ge.status=De?"pending":"settled",y=De?structuredClone(De):null,w.push(ge),ye)for(P.set(ye,ge);P.size>512;){let rt=P.keys().next().value;P.delete(rt)}return ge},Et=({initialState:I,namespace:A})=>{Q("initialize");let S=n?.selectSystemState?.()?.global?.audioCommandId??0,{l10nData:$,...N}=I,Y=$===void 0?void 0:structuredClone($),U=structuredClone(I.projectData),re=yd({projectData:U,l10nData:Y}),de=N.global??{};if(!Ve(de))throw new Error("Malformed global state.");let ye=de.runtime??{};if(!Ve(ye))throw new Error("Malformed global.runtime.");let we=ye.localizationPackageId;if(we!=null&&typeof we!="string")throw new Error("localizationPackageId requires a string or null value");let ge=new Set(re.map(({l10nId:tt})=>tt).filter(tt=>tt!==null)),Ne=typeof we=="string"&&ge.has(we)?we:null,De=Ei({projectData:U,l10nData:Y,l10nId:Ne}),rt=qp({...N,global:{...de,localizationPackages:re,runtime:{...ye,localizationPackageId:Ne}},projectData:De,initialAudioCommandId:S});ue?.(),n=rt,i+=1,a=!0,r=0,s=It(A),o=0,l=!1,c=0,u=[],p=null,d=null,f=new Map,m=new Map,b=new Map,h=0,y=null,w=[],g=!1,E=null,k={lineEntryId:n.selectPlaybackLineEntryId?.()??0,channel:null},P=new Map,v=U,O=Y,T=Ne,R=!0,D=!1,B=0,_.clear(),n.appendPendingEffect({name:"handleLineActions"}),be()},In=()=>{Q("dispose"),a&&(a=!1,i+=1,n?.clearPendingEffects?.(),o=0,l=!1,u=[],p=null,d=null,f=new Map,m=new Map,b=new Map,y=null,w=[],g=!1,E=null,k=null,P=new Map,R=!1,_.clear(),G?.())},xt=()=>s,vn=()=>n.selectPresentationState(),St=()=>n.selectPresentationChanges(),kn=I=>n.selectSectionLineChanges(I),Zr=(I={})=>{ie("rendering"),r+=1;let A=Date.now();Se(A);let S=m.size>0,$=W(f,A),N=S?W(m,A):new Map,Y=n.selectRenderState({activePersistentAnimations:fe($),restoredPersistentAnimations:fe(N),activeAudioEffect:y?structuredClone(y):null}),U={...Y,id:`render-${t}-${i}-${r}`};return b.set(U.id,{builtAt:A,persistentAnimationSessions:new Map([...N.entries(),...$.entries()]),usedRestoredPersistentAnimationSessions:S,activeAudioEffectId:y?.id??null,retainsActiveAudioEffect:!!y&&(Y.audioEffects??[]).some(re=>re.id===y.id)}),U},An=(I={})=>Zr(I),Si=(I={})=>Zr(I),Pn=I=>{if(!a||!n)return;let A=I?.audio?.find(Y=>Y?.id===nk);g=!0,E=A?structuredClone(A):null;let S=typeof I?.id=="string"&&I.id.length>0?I.id:null,$=S?b.get(S):null;S&&b.delete(S);let N=new Map;Mc(I?.animations).forEach(Y=>{let U=ss(Y);if(!U)return;let re=$?.persistentAnimationSessions?.get(U)??f.get(U),de=Math.max(0,Fc(Y)),ye=re?.startedAt??$?.builtAt??Date.now();N.set(U,{animation:structuredClone(Y),startedAt:ye,expiresAt:ye+de})}),f=N,$?.usedRestoredPersistentAnimationSessions&&(m=new Map),$?.activeAudioEffectId&&!$.retainsActiveAudioEffect&&y?.id===$.activeAudioEffectId&&(y=null)},Ad=()=>n.selectSystemState(),Pd=()=>n.selectAchievements(),Ed=I=>n.selectAchievement(I),Ga=()=>n.selectSaveSlotMap(),xd=I=>n.selectSaveSlot(I),Sd=I=>n.selectSaveSlotPage(I),Od=()=>n.selectImageGallery(),Rd=()=>n.selectMusicRoom(),$d=()=>n.selectSceneReplay(),Cd=()=>n.selectIsSceneReplayActive(),wk=()=>n.selectSkipMode(),Ik=()=>n.selectAutoMode(),_d=()=>n.selectRuntime(),jd=()=>n.selectIsChoiceVisible(),Nd=()=>n.selectIsFormVisible(),Dd=()=>n.selectActiveInteraction(),Td=()=>n.selectPendingEffects().some(I=>I?.name==="handleLineActions"||I?.name==="render"),Ha=(I,A,S={})=>!Ve(A)||I!=="nextLine"?A:S.bypassChoice===!0?{...A,bypassChoice:!0}:S.interactionSource===Ba?{...A,_interactionSource:Ba}:A,Ka=(I={})=>({type:Ya,payload:Ha("nextLine",{_conditionalContinuation:!0},I)}),Oi=(I,A)=>bn(I)?{type:Ya,payload:{...I.payload,...A.payload}}:A,Ld=I=>{I.savedCheckpointOccurrences.forEach(A=>{n.markSavedRollbackCheckpointTransient(A)}),I.savedCheckpointOccurrences=[]},Md=(I,A)=>{let S=p;return p=null,!S||!Qr(S.pointer,I)||S.checkpointIndex!==A?.checkpointIndex||S.checkpointIdentity!==A?.checkpoint?[]:S.savedCheckpointOccurrences},qd=I=>{let A=d;return!A||!Qr(A.pointer,I)?null:(d=null,A)},Vd=({actionType:I,pointerBeforeAction:A,pointerAfterAction:S,cursorBeforeAction:$,cursorAfterAction:N,wasSceneReplayActive:Y,isSceneReplayActive:U})=>{!S||!(!Qr(A,S)||$?.checkpoint!==N?.checkpoint||$?.checkpointIndex!==N?.checkpointIndex||I==="jumpToLine")||(d={pointer:S,appendToPrevious:Jv.has(I)&&Y===U&&A?.sectionId===S.sectionId&&A?.lineId!==S.lineId,reuseExistingOccurrence:Qv.has(I),forceNewOccurrence:I==="jumpToLine"})},Wa=I=>{I.markCurrentCheckpointTransient&&(n.markRollbackCheckpointTransient({checkpointIndex:I.rollbackCursor?.checkpointIndex,checkpointIdentity:I.rollbackCursor?.checkpoint,sectionId:I.pointer?.sectionId,lineId:I.pointer?.lineId}),Ld(I))},Fd=(I,A,S)=>Kv.has(I)?I==="resetStoryAtSection"?S?.checkpoint!==A?.checkpoint:S?.checkpoint!==A?.checkpoint&&S?.checkpointIndex>A?.checkpointIndex:!1,Ud=I=>{let A=u.at(-1);if(!A?.markCurrentCheckpointTransient)return;let S=n.selectSaveSlot({slotId:I?.slotId});S&&A.savedCheckpointOccurrences.push({slotId:I.slotId,saveSlotIdentity:S,checkpointIndex:A.rollbackCursor?.checkpointIndex,sectionId:A.pointer?.sectionId,lineId:A.pointer?.lineId})},Bd=()=>{u.at(-1)?.savedCheckpointOccurrences.forEach(A=>{let S=n.selectSaveSlot({slotId:A.slotId});S&&(A.saveSlotIdentity=S)})},Yd=()=>{let I=u.at(-1);I&&(I.rollbackCursor=n.selectRollbackCursor?.()??null)},zd=(I,A,S)=>{let $=u.at(-1);if(!$)return;let N=n.selectCurrentPointer()?.pointer,Y=Fd(I,A,S);if(Qr($.pointer,N)){let U=S?.checkpoint!==A?.checkpoint||S?.checkpointIndex!==A?.checkpointIndex;Y||U&&Wv.has(I)?(Wa($),$.pointer=N,$.rollbackCursor=S,$.markCurrentCheckpointTransient=Y,$.savedCheckpointOccurrences=[]):U&&I==="updateProjectData"&&($.rollbackCursor=S);return}Wa($),$.pointer=N,$.rollbackCursor=n.selectRollbackCursor?.()??null,$.markCurrentCheckpointTransient=Y,$.savedCheckpointOccurrences=[]},et=(I,A)=>{if(ie(`action "${I}"`),!n[I])return;let S=A,$,N;if(I==="updateProjectData")Ja(A),$=structuredClone(A.projectData),S={...A,projectData:Ei({projectData:$,l10nData:O,l10nId:T})},Ja(S);else if(I==="updateLocalizationPackage"){if(N=Xd(A),N===T)return;S={l10nId:N,projectData:Ei({projectData:v,l10nData:O,l10nId:N})}}Hv.has(I)&&(c+=1);let Y=n.selectAutoMode(),U=Y?n.selectRuntime():null,re=n.selectIsSceneReplayActive?.()===!0,de=Gv.has(I)?W(f):null,ye=n.selectCurrentPointer()?.pointer??null,we=n.selectRollbackCursor?.()??null,ge=Wn(I),Ne=ge?n.selectPlaybackLineEntryId?.()??0:null,De=ge?Fe():null,rt=!1,tt;try{tt=n[I](S),rt=!0}catch(Ot){throw K(Ot,"preCommit"),Ot}$!==void 0&&(v=$),N!==void 0&&(T=N),Xv.has(I)&&(m=de??new Map,f=new Map,y=null),I==="setSkipTransitionsAndAnimations"&&S?.value===!0&&(y=null);let nl=n.selectIsSceneReplayActive?.()===!0;re!==nl&&(f=new Map,m=new Map);let om=n.selectCurrentPointer()?.pointer??null,sl=n.selectRollbackCursor?.()??null,il=ge?n.selectPlaybackLineEntryId?.()??0:null;ge&&il!==Ne&&(k={lineEntryId:il,channel:De}),I==="saveSlot"?Ud(A):I==="updateProjectData"&&Bd(),zd(I,we,sl),Vd({actionType:I,pointerBeforeAction:ye,pointerAfterAction:om,cursorBeforeAction:we,cursorAfterAction:sl,wasSceneReplayActive:re,isSceneReplayActive:nl});let am=n.selectAutoMode()&&(I==="updateVariable"||Y&&ok(U,n.selectRuntime()));(sk.has(I)||am)&&(R=!0);try{be()}catch(Ot){throw rt&&K(Ot,"postCommitUnsettled"),Ot}return tt},Ja=I=>{if(!Object.prototype.hasOwnProperty.call(I??{},"projectData"))throw new Error("updateProjectData requires projectData");Vr(I?.projectData?.resources?.variables??{}),Dt(I.projectData),Tt(I.projectData),Lt(I.projectData)},Xd=I=>{if(!Ve(I))throw new Error("updateLocalizationPackage requires an object payload");let A=Object.keys(I);if(A.length!==1||A[0]!=="l10nId")throw new Error("updateLocalizationPackage only accepts l10nId");if(I.l10nId!==null&&(typeof I.l10nId!="string"||I.l10nId.length===0))throw new Error("updateLocalizationPackage requires a non-empty l10nId or null");return I.l10nId},Gd=(I,A,S)=>{let $=n.selectCurrentPointer()?.pointer;A!==$||S!==c||(n.appendPendingEffect({name:"clearAutoNextTimer"}),n.appendPendingEffect({name:"clearNextLineConfigTimer"}),et("nextLineFromSystem",I.payload))},Hd=()=>({renderSequence:r,conditionalRoutingSequence:c,rollbackNavigationContexts:u.slice(),pendingRollbackLineEntrySaveHandoff:p,pendingDialogueHistoryLineEntry:d,persistentAnimationSessions:new Map(f),restoredPersistentAnimationSessions:new Map(m),renderPersistentAnimationMetadata:new Map(b),audioEffectOccurrenceSequence:h,activeAudioEffect:y,pendingAudioEffectOccurrences:w.slice(),pendingEnteredLineBgmHandoff:k?structuredClone(k):null,acceptedLineBgmActionOccurrences:new Map(P),canonicalProjectData:v,localizationPackageId:T,playbackScheduleDirty:R}),Kd=I=>{r=I.renderSequence,c=I.conditionalRoutingSequence,u=I.rollbackNavigationContexts.slice(),p=I.pendingRollbackLineEntrySaveHandoff,d=I.pendingDialogueHistoryLineEntry,f=new Map(I.persistentAnimationSessions),m=new Map(I.restoredPersistentAnimationSessions),b=new Map(I.renderPersistentAnimationMetadata),h=I.audioEffectOccurrenceSequence,y=I.activeAudioEffect,w=I.pendingAudioEffectOccurrences.slice(),k=I.pendingEnteredLineBgmHandoff?structuredClone(I.pendingEnteredLineBgmHandoff):null,P=new Map(I.acceptedLineBgmActionOccurrences),v=I.canonicalProjectData,T=I.localizationPackageId,R=I.playbackScheduleDirty},Ri=(I,A={})=>(ie("action batch"),me(()=>{let S=Hd();try{return n[no](()=>{let $,N=n.selectCurrentPointer()?.pointer??null,Y=n.selectRollbackCursor?.()??null,U=c,re={pointer:N,rollbackCursor:Y,markCurrentCheckpointTransient:A.rollbackSource==="line",savedCheckpointOccurrences:A.savedCheckpointOccurrences?.slice()??[]};u.push(re);try{n.beginRollbackActionBatch({source:A.rollbackSource});try{$=I()}finally{n.endRollbackActionBatch({})}bn($)&&Gd($,N,U),At();let de=n.selectCurrentPointer()?.pointer??null;A.rollbackSource==="line"&&Qr(N,de)&&n.recordCurrentDialogueHistory({savedCheckpointOccurrences:re.savedCheckpointOccurrences,appendToPrevious:A.dialogueHistoryAppendToPrevious===!0,reuseExistingOccurrence:A.dialogueHistoryReuseExistingOccurrence===!0,forceNewOccurrence:A.dialogueHistoryForceNewOccurrence===!0})}finally{u.pop(),(!Qr(N,re.pointer)||Y?.checkpoint!==re.rollbackCursor?.checkpoint)&&re.markCurrentCheckpointTransient&&re.savedCheckpointOccurrences.length>0&&(p={pointer:re.pointer,checkpointIndex:re.rollbackCursor?.checkpointIndex,checkpointIdentity:re.rollbackCursor?.checkpoint,savedCheckpointOccurrences:re.savedCheckpointOccurrences})}})}catch($){throw Kd(S),$}})),$i=(I,A,S,$={})=>{if(I===Ua||I===gn)return Ri(()=>{let N={...$,executionContext:$.executionContext??{depth:0,pendingNavigation:null},actionPath:$.actionPath??[I],randomOutcomeOrdinals:$.randomOutcomeOrdinals??new Map};if(I===gn)return el(A,S,N);let Y=Ci(S),U=Ft({[I]:A},Y);return Za(U[I],S,N)},$);if(I==="bgm")return Ri(()=>{let N=A?.audioEffects?Fe():null;et(I,A),Pt(A,{...$,actionPath:$.actionPath??[I]},N,A?.audioEffects?lr():null)},$);et(I,A)},Wd=(I,A)=>{if(I!=="nextLineFromSystem")return $i(I,A);B+=1;try{return $i(I,A)}finally{B=Math.max(0,B-1)}},Qa=I=>{if(I&&Object.prototype.hasOwnProperty.call(I,"event"))throw new Error('eventContext key "event" is no longer supported. Use "_event".')},Ci=I=>{if(Qa(I),!I)return{variables:n.selectAllVariables?n.selectAllVariables():void 0,runtime:n.selectRuntime?n.selectRuntime():{}};let{_event:A,...S}=I,$=n.selectAllVariables?n.selectAllVariables():void 0;return{...S,_event:A,variables:$,runtime:n.selectRuntime?n.selectRuntime():{}}},Jd=I=>{if(!Ve(I))return{templatePayload:I,literalTargetIds:null};let A=n.selectImageGalleryConfig();if(!Array.isArray(A?.groups))return{templatePayload:I,literalTargetIds:null};let S=typeof I.groupId=="string"?A.groups.find(N=>N.id===I.groupId):void 0;if(!S)return{templatePayload:I,literalTargetIds:null};let $=typeof I.variantId=="string"&&S.variants.some(N=>N.id===I.variantId);return{templatePayload:{...I,groupId:null,...$?{variantId:null}:{}},literalTargetIds:{groupId:I.groupId,...$?{variantId:I.variantId}:{}}}},Qd=I=>!Ve(I)||typeof I.trackId!="string"?{templatePayload:I,literalTargetIds:null}:n.selectMusicRoomConfig()?.tracks?.some($=>$.id===I.trackId)?{templatePayload:{...I,trackId:null},literalTargetIds:{trackId:I.trackId}}:{templatePayload:I,literalTargetIds:null},Zd=I=>!Ve(I)||typeof I.sceneId!="string"?{templatePayload:I,literalTargetIds:null}:n.selectSceneReplayConfig()?.replays?.some($=>$.sceneId===I.sceneId)?{templatePayload:{...I,sceneId:null},literalTargetIds:{sceneId:I.sceneId}}:{templatePayload:I,literalTargetIds:null},em=I=>{if(!Ve(I))throw new Error("conditional action payload must be an object");if(!Array.isArray(I.branches))throw new Error("conditional action requires branches array");if(I.branches.length===0)throw new Error("conditional action requires at least one branch")},rm=(I,A,S)=>{if(!Ve(I))throw new Error(`conditional branch at index ${A} must be an object`);if(!Ve(I.actions))throw new Error(`conditional branch at index ${A} requires actions object`);if(!Object.prototype.hasOwnProperty.call(I,"when")&&A!==S-1)throw new Error("conditional else branch must be the last branch")},Za=(I,A,S)=>{em(I);let $=Ka(S);for(let N=0;N<I.branches.length;N+=1){let Y=I.branches[N];rm(Y,N,I.branches.length);let U=Ci(A);if(Object.prototype.hasOwnProperty.call(Y,"when")&&!Nt(Y.when,U))continue;let de=En(Y.actions,A,{...S,actionPath:[...S.actionPath??[Ua],"branches",String(N),"actions"]});return bn(de)?Oi($,de):$}return $},tm=I=>{if(!Ve(I))throw new Error("random action payload must be an object");let A=Object.keys(I).find(S=>S!=="distribution"&&S!=="variableId");if(A!==void 0)throw new Error(`random action.${A} is not supported`);if(!Ve(I.distribution))throw new Error("random action requires distribution object");if(I.distribution.type==="weighted"){if(Object.prototype.hasOwnProperty.call(I,"variableId"))throw new Error("weighted random action does not support variableId")}else if(I.distribution.type==="integer"){if(typeof I.variableId!="string"||!I.variableId)throw new Error("integer random action requires variableId");let S=v?.resources?.variables?.[I.variableId];if(!S||S.type!=="number"||S.scope!=="context"||S.readonly===!0||Re(S))throw new Error(`integer random action variableId must reference a writable context number variable: ${I.variableId}`)}},el=(I,A,S)=>{tm(I),Qa(A);let $=rc(I.distribution,{randomSource:X});if(S.rollbackSource==="line"){n.ensureRandomReplayOccurrence({});let U=(S.actionPath??[gn]).join("."),re=S.randomOutcomeOrdinals??new Map,de=re.get(U)??0;re.set(U,de+1),n.recordRandomOutcome({path:U,ordinal:de,type:$.type,result:$}),Yd()}let N;$.type==="integer"?et("updateVariable",{id:"randomResult",operations:[{variableId:I.variableId,op:"set",value:$.value}]}):N=En(I.distribution.outcomes[$.outcomeIndex].actions,A,{...S,actionPath:[...S.actionPath??[gn],"distribution","outcomes",String($.outcomeIndex),"actions"]});let Y=Ka(S);return bn(N)?Oi(Y,N):Y},nm=(I,A)=>({...I??{},_form:A}),sm=(I,A,S,$)=>{let N=et(I,A),Y=N?.submitted===!0&&N.valid===!0,U=N?.cancelled===!0;if(!(!Y&&!U)&&Ve(A.actions))return En(A.actions,nm(S,N.form),{...$,interactionSource:Ba})},rl=(I,A,S,$)=>{if(I===gn)return el(A,S,$);let N=Ci(S),Y={templatePayload:A,literalTargetIds:null};I===ek?Y=Jd(A):I===rk?Y=Qd(A):I===tk&&(Y=Zd(A));let{templatePayload:U,literalTargetIds:re}=Y,ye=Ft({[I]:U},N)[I],we=re?{...ye,...re}:ye;if(I===Ua)return Za(we,S,$);let ge=Ha(I,we,$);if(Zv.has(I))return sm(I,ge,S,$);let Ne=null;if(I==="bgm"&&ge?.audioEffects){let De=$.audioEffectHandoff;De?.available?(De.available=!1,Ne=structuredClone(De.channel)):Ne=Fe()}et(I,ge),I==="bgm"&&Pt(ge,$,Ne,ge?.audioEffects?lr():null)},En=(I,A,S)=>{let $,N=S?.executionContext??{depth:0,pendingNavigation:null},Y=Kn(I);Jn(Y),N.depth+=1;try{for(let[U,re]of Y){let de={...S,executionContext:N,actionPath:[...S?.actionPath??[],U]};if(Wn(U)){let we=N.pendingNavigation;if(we)throw new Error(`action batch cannot execute multiple navigation actions: ${we.actionType}, ${U}`);N.pendingNavigation={actionType:U,payload:re,eventContext:A,options:de};continue}let ye=rl(U,re,A,de);bn(ye)&&($=Oi($,ye))}}finally{N.depth-=1}if(N.depth===0&&N.pendingNavigation){let U=N.pendingNavigation;N.pendingNavigation=null,rl(U.actionType,U.payload,U.eventContext,U.options)}return $},tl=(I,A,S={})=>{let $={...S,executionContext:{depth:0,pendingNavigation:null},randomOutcomeOrdinals:new Map};return Ri(()=>En(I,A,$),$)},im=I=>{let A=n.selectCurrentPointer()?.pointer;if(I!==A||n.selectActiveInteraction())return;let S=n.selectNextLineConfig();S?.auto?.enabled&&S.auto.trigger==="fromStart"&&n.appendPendingEffect({name:"nextLineConfigTimer",payload:{delay:S.auto.delay}})};return{init:Et,dispose:In,handleAction:$i,handleInternalAction:Wd,handleActions:tl,selectRenderState:An,prepareRenderState:Si,commitRenderState:Pn,selectPresentationState:vn,selectPresentationChanges:St,selectSectionLineChanges:kn,selectSystemState:Ad,selectAchievements:Pd,selectAchievement:Ed,selectSaveSlotMap:Ga,selectSaveSlot:xd,selectSaveSlotPage:Sd,selectSaveSlots:Ga,selectImageGallery:Od,selectMusicRoom:Rd,selectSceneReplay:$d,selectIsSceneReplayActive:Cd,selectRuntime:_d,selectIsChoiceVisible:jd,selectIsFormVisible:Nd,selectActiveInteraction:Dd,selectHasPendingRenderWork:Td,handleLineActions:I=>{ie("line action handling");let A=n.selectCurrentPointer()?.pointer;if(I?.pointer&&!Qr(I.pointer,A))return!1;if(typeof I?.sceneReplaySceneId=="string"){let S=n.selectActiveSceneReplayEntry?.();if(S?.sceneId!==I.sceneReplaySceneId||S?.entryId!==I.entryId)return!1}return me(()=>{let S=n.selectCurrentPointer()?.pointer,$=n.selectPlaybackLineEntryId?.()??0,N=k?.lineEntryId===$?k:null,Y=n.selectRollbackCursor?.()??null,U=p,re=d,de=Md(S,Y),ye=qd(S),we=n.selectCurrentLine(),ge=!1;if(we?.actions){try{tl(we.actions,void 0,{rollbackSource:"line",savedCheckpointOccurrences:de,dialogueHistoryAppendToPrevious:ye?.appendToPrevious===!0,dialogueHistoryReuseExistingOccurrence:ye?.reuseExistingOccurrence===!0,dialogueHistoryForceNewOccurrence:ye?.forceNewOccurrence===!0,audioEffectHandoff:N?{available:!0,channel:structuredClone(N.channel)}:null})}catch(Ne){throw p=U,d=re,Ne}ge=!0}return k?.lineEntryId===$&&(k=null),im(S),ge})},getNamespace:xt,classifyAutomaticAttemptError:pe}}var ak="music-room:player",vd=new Map([["soundReady","musicRoomSoundReady"],["soundProgress","musicRoomSoundProgress"],["soundComplete","musicRoomSoundComplete"],["soundError","musicRoomSoundError"]]),wd=(e,t)=>vd.has(e)&&t?._event?.id===ak,kd=({engine:e,routeGraphics:t,trackRenderDispatch:n,lifecycleGeneration:i,isCurrentLifecycle:a},r)=>{if(e.selectHasPendingRenderWork?.())return;let s=e.prepareRenderState?.(r)??e.selectRenderState(r);n?.(s),t.render(s),a(i)&&e.commitRenderState?.(s)},lk=({engine:e,routeGraphics:t,trackRenderDispatch:n,getRenderDispatchCount:i,lifecycleGeneration:a,isCurrentLifecycle:r},s)=>{let o=i?.()??0,l=e.handleLineActions(s);(i?.()??0)===o&&kd({engine:e,routeGraphics:t,trackRenderDispatch:n,lifecycleGeneration:a,isCurrentLifecycle:r},s)},ck=({enqueuePersistenceWrite:e},t)=>{e(n=>n.saveSlots(t?.saveSlots))},uk=({enqueuePersistenceWrite:e},t)=>{e(n=>n.saveGlobalDeviceVariables(t?.globalDeviceVariables))},pk=({enqueuePersistenceWrite:e},t)=>{e(n=>n.saveGlobalAccountVariables(t?.globalAccountVariables))},fk=({enqueuePersistenceWrite:e},t)=>{e(n=>n.saveGlobalRuntime(t?.globalRuntime))},dk=({enqueuePersistenceWrite:e},t)=>{e(n=>{if(typeof n.applyScopedDataUpdates!="function")throw new Error("RouteEngine persistence adapter must implement applyScopedDataUpdates.");return n.applyScopedDataUpdates(t?.updates)})},Id={render:kd,saveSlots:ck,saveGlobalDeviceVariables:uk,saveGlobalAccountVariables:pk,saveGlobalRuntime:fk,applyScopedDataUpdates:dk,handleLineActions:lk},mk=new Set(["render","handleLineActions","saveSlots","saveGlobalDeviceVariables","saveGlobalAccountVariables","saveGlobalRuntime","startAutoNextTimer","clearAutoNextTimer","startSkipNextTimer","clearSkipNextTimer","nextLineConfigTimer","clearNextLineConfigTimer"]),Xa=(e,t,n)=>{(e.handleInternalAction??e.handleAction?.bind(e))?.(t,n)},yk=(e=[])=>{let t=new Set,n=[];for(let i=e.length-1;i>=0;i-=1){let a=e[i];if(typeof a?.name!="string"||a.name.length===0)throw new Error("Pending effect is missing a valid name.");if(!mk.has(a.name)){n.unshift(a);continue}t.has(a.name)||(t.add(a.name),n.unshift(a))}return n},hk=({getEngine:e,routeGraphics:t,ticker:n,handleUnhandledEffect:i,handlePersistenceError:a,indexedDB:r,persistence:s,namespace:o})=>{let l=new Map,c=Promise.resolve(),u=null,p=null,d=!1,f=0,m=0,b=!0,h=bd({ticker:n,dispatchAutomaticAttempt:()=>Xa(e(),"nextLineFromSystem",{}),classifyAutomaticAttemptError:C=>e()?.classifyAutomaticAttemptError?.(C)??"preCommit"}),y=()=>{u=null,p=null,d=!1,f=0},w=()=>{h.reset(),m+=1,y(),b=!0},g=()=>{m+=1,b=!1,y(),h.dispose()},E=C=>b&&C===m,k=C=>{if(a){a(C);return}console.error("RouteEngine persistence write failed.",C)},P=C=>{if(s)return s;let j=It(C),F=l.get(j);if(F)return F;let W=Ca({indexedDB:r,namespace:j});return l.set(j,W),W},v=C=>{let j=s?null:It(o??e()?.getNamespace?.()),F;c=c.catch(()=>{}).then(()=>(F=P(j),C(F))).catch(W=>{!s&&l.get(j)===F&&l.delete(j),k(W)})},O=C=>{if(!b)return;let j=typeof C?.id=="string"&&C.id.length>0?C.id:null;f+=1,u=j,d=!1},T=()=>f,R=(C={})=>{if(!b||C?.aborted===!0)return!1;let j=typeof C?.id=="string"&&C.id.length>0?C.id:null;return j?j!==u||j===p?!1:(p=j,!0):u!==null||d?!1:(d=!0,!0)},D=(C,j={})=>{if(!b)return!1;if(wd(C,j)){let W=vd.get(C),fe=e();return Xa(fe,W,j?._event),!0}if(C!=="renderComplete"||!R(j))return!1;let F=e();return Xa(F,"markLineCompleted",{}),!0},B=new Set(["updateFormField","submitForm","cancelForm"]),_=new Set(["updateVariable"]),X=C=>typeof C?.selectActiveInteraction=="function"?C.selectActiveInteraction():typeof C?.selectIsChoiceVisible=="function"&&C.selectIsChoiceVisible()?{source:"choice"}:null,ae=C=>C?._formKey??C?.formKey,M=(C,j)=>ae(C)===j?.formKey,se=(C,j)=>!C||typeof C!="object"||Array.isArray(C)?!1:C._interactionSource===j?.source,ue=(C,j)=>se(C,j)?j.source==="form"?M(C,j):!0:!1,G=(C,j)=>!C||typeof C!="object"||Array.isArray(C)||j?.source!=="form"?!1:M(C,j),Q=(C={},j)=>Object.keys(C).length>0&&Object.entries(C).every(([F,W])=>B.has(F)?G(W,j):_.has(F)),ie=(C={},j)=>{let F=C?.actions;return j?.source==="form"?!F||typeof F!="object"||Array.isArray(F)?!1:Q(F,j):ue(C,j)?!0:!F||typeof F!="object"||Array.isArray(F)?!1:Object.values(F).some(W=>ue(W,j))},K=(C,j={})=>{if(!j?.actions)return!1;let F=X(C);return!F||F.source==="choice"?!1:!ie(j,F)},pe=({preprocessPayload:C,onEvent:j}={})=>async(F,W={})=>{if(!b)return!1;if(wd(F,W))return D(F,W),j?.(F,W);let fe=e(),Se=m,be=f;if(K(fe,W))return j?.(F,W);let me=await C?.(F,W)??W;if(!E(Se)||e()!==fe||f!==be)return!1;if(K(fe,me))return j?.(F,me);if(D(F,me),me?.actions){let lr=me?._event?{_event:me._event}:me?.event?{_event:me.event}:void 0,Fe;me?.bypassChoice===!0?Fe={bypassChoice:!0}:me?._interactionSource&&(Fe={interactionSource:me._interactionSource}),Fe?fe.handleActions(me.actions,lr,Fe):fe.handleActions(me.actions,lr)}return j?.(F,me)},oe=C=>{if(!b)return;let j=m,F=e(),W=yk(C),fe=W.some(be=>be.name==="handleLineActions");W.forEach(be=>{if(!Id[be.name]&&!hn.has(be.name)&&!i)throw new Error(`Unhandled pending effect "${be.name}".`)});let Se={engine:F,routeGraphics:t,ticker:n,trackRenderDispatch:O,getRenderDispatchCount:T,enqueuePersistenceWrite:v,lifecycleGeneration:m,isCurrentLifecycle:E};for(let be of W){if(!E(j))break;if(fe&&be.name==="render")continue;if(hn.has(be.name)){h.handleLegacyEffect(be);continue}let me=Id[be.name];if(me){me(Se,be.payload);continue}i(be,Se)}};return oe.handleRouteGraphicsEvent=D,oe.createRouteGraphicsEventHandler=pe,oe.reset=w,oe.dispose=g,oe.reconcilePlaybackScheduleV1=C=>h.reconcilePlaybackScheduleV1(C),oe},gk=hk;var bk=(e,t={})=>{let{resources:n={}}=t;return Do(e,n)};var yP=za;export{yo as DEFAULT_VISUAL_LAYER,ct as RENDER_LAYER,cr as VISUAL_LAYER,gk as createEffectsHandler,FI as createIndexedDbPersistence,yP as default,io as formatDate,_y as resolveComputedVariables,bk as resolveLayoutReferences};